hotshot_contract_adapter/bindings/
light_client_v3.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
641    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::G1Point,
732            BN254::G1Point,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242///Module containing a contract's types and functions.
2243/**
2244
2245```solidity
2246library LightClient {
2247    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2248    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2249}
2250```*/
2251#[allow(
2252    non_camel_case_types,
2253    non_snake_case,
2254    clippy::pub_underscore_fields,
2255    clippy::style,
2256    clippy::empty_structs_with_brackets
2257)]
2258pub mod LightClient {
2259    use super::*;
2260    use alloy::sol_types as alloy_sol_types;
2261    #[derive(serde::Serialize, serde::Deserialize)]
2262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2263    /**```solidity
2264struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2265```*/
2266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2267    #[derive(Clone)]
2268    pub struct LightClientState {
2269        #[allow(missing_docs)]
2270        pub viewNum: u64,
2271        #[allow(missing_docs)]
2272        pub blockHeight: u64,
2273        #[allow(missing_docs)]
2274        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2275    }
2276    #[allow(
2277        non_camel_case_types,
2278        non_snake_case,
2279        clippy::pub_underscore_fields,
2280        clippy::style
2281    )]
2282    const _: () = {
2283        use alloy::sol_types as alloy_sol_types;
2284        #[doc(hidden)]
2285        #[allow(dead_code)]
2286        type UnderlyingSolTuple<'a> = (
2287            alloy::sol_types::sol_data::Uint<64>,
2288            alloy::sol_types::sol_data::Uint<64>,
2289            BN254::ScalarField,
2290        );
2291        #[doc(hidden)]
2292        type UnderlyingRustTuple<'a> = (
2293            u64,
2294            u64,
2295            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2296        );
2297        #[cfg(test)]
2298        #[allow(dead_code, unreachable_patterns)]
2299        fn _type_assertion(
2300            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2301        ) {
2302            match _t {
2303                alloy_sol_types::private::AssertTypeEq::<
2304                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2305                >(_) => {}
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2311            fn from(value: LightClientState) -> Self {
2312                (value.viewNum, value.blockHeight, value.blockCommRoot)
2313            }
2314        }
2315        #[automatically_derived]
2316        #[doc(hidden)]
2317        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2318            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2319                Self {
2320                    viewNum: tuple.0,
2321                    blockHeight: tuple.1,
2322                    blockCommRoot: tuple.2,
2323                }
2324            }
2325        }
2326        #[automatically_derived]
2327        impl alloy_sol_types::SolValue for LightClientState {
2328            type SolType = Self;
2329        }
2330        #[automatically_derived]
2331        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2332            #[inline]
2333            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2334                (
2335                    <alloy::sol_types::sol_data::Uint<
2336                        64,
2337                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2338                    <alloy::sol_types::sol_data::Uint<
2339                        64,
2340                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2341                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2342                        &self.blockCommRoot,
2343                    ),
2344                )
2345            }
2346            #[inline]
2347            fn stv_abi_encoded_size(&self) -> usize {
2348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2349                    return size;
2350                }
2351                let tuple = <UnderlyingRustTuple<
2352                    '_,
2353                > as ::core::convert::From<Self>>::from(self.clone());
2354                <UnderlyingSolTuple<
2355                    '_,
2356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2357            }
2358            #[inline]
2359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2361            }
2362            #[inline]
2363            fn stv_abi_encode_packed_to(
2364                &self,
2365                out: &mut alloy_sol_types::private::Vec<u8>,
2366            ) {
2367                let tuple = <UnderlyingRustTuple<
2368                    '_,
2369                > as ::core::convert::From<Self>>::from(self.clone());
2370                <UnderlyingSolTuple<
2371                    '_,
2372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2373            }
2374            #[inline]
2375            fn stv_abi_packed_encoded_size(&self) -> usize {
2376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2377                    return size;
2378                }
2379                let tuple = <UnderlyingRustTuple<
2380                    '_,
2381                > as ::core::convert::From<Self>>::from(self.clone());
2382                <UnderlyingSolTuple<
2383                    '_,
2384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2385            }
2386        }
2387        #[automatically_derived]
2388        impl alloy_sol_types::SolType for LightClientState {
2389            type RustType = Self;
2390            type Token<'a> = <UnderlyingSolTuple<
2391                'a,
2392            > as alloy_sol_types::SolType>::Token<'a>;
2393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2395                '_,
2396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2398                '_,
2399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2400            #[inline]
2401            fn valid_token(token: &Self::Token<'_>) -> bool {
2402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2403            }
2404            #[inline]
2405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2406                let tuple = <UnderlyingSolTuple<
2407                    '_,
2408                > as alloy_sol_types::SolType>::detokenize(token);
2409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2410            }
2411        }
2412        #[automatically_derived]
2413        impl alloy_sol_types::SolStruct for LightClientState {
2414            const NAME: &'static str = "LightClientState";
2415            #[inline]
2416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2417                alloy_sol_types::private::Cow::Borrowed(
2418                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2419                )
2420            }
2421            #[inline]
2422            fn eip712_components() -> alloy_sol_types::private::Vec<
2423                alloy_sol_types::private::Cow<'static, str>,
2424            > {
2425                alloy_sol_types::private::Vec::new()
2426            }
2427            #[inline]
2428            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2429                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2430            }
2431            #[inline]
2432            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2433                [
2434                    <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2437                        .0,
2438                    <alloy::sol_types::sol_data::Uint<
2439                        64,
2440                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2441                        .0,
2442                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2443                            &self.blockCommRoot,
2444                        )
2445                        .0,
2446                ]
2447                    .concat()
2448            }
2449        }
2450        #[automatically_derived]
2451        impl alloy_sol_types::EventTopic for LightClientState {
2452            #[inline]
2453            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2454                0usize
2455                    + <alloy::sol_types::sol_data::Uint<
2456                        64,
2457                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.viewNum,
2459                    )
2460                    + <alloy::sol_types::sol_data::Uint<
2461                        64,
2462                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2463                        &rust.blockHeight,
2464                    )
2465                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2466                        &rust.blockCommRoot,
2467                    )
2468            }
2469            #[inline]
2470            fn encode_topic_preimage(
2471                rust: &Self::RustType,
2472                out: &mut alloy_sol_types::private::Vec<u8>,
2473            ) {
2474                out.reserve(
2475                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2476                );
2477                <alloy::sol_types::sol_data::Uint<
2478                    64,
2479                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2480                    &rust.viewNum,
2481                    out,
2482                );
2483                <alloy::sol_types::sol_data::Uint<
2484                    64,
2485                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2486                    &rust.blockHeight,
2487                    out,
2488                );
2489                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2490                    &rust.blockCommRoot,
2491                    out,
2492                );
2493            }
2494            #[inline]
2495            fn encode_topic(
2496                rust: &Self::RustType,
2497            ) -> alloy_sol_types::abi::token::WordToken {
2498                let mut out = alloy_sol_types::private::Vec::new();
2499                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2500                    rust,
2501                    &mut out,
2502                );
2503                alloy_sol_types::abi::token::WordToken(
2504                    alloy_sol_types::private::keccak256(out),
2505                )
2506            }
2507        }
2508    };
2509    #[derive(serde::Serialize, serde::Deserialize)]
2510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2511    /**```solidity
2512struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2513```*/
2514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2515    #[derive(Clone)]
2516    pub struct StakeTableState {
2517        #[allow(missing_docs)]
2518        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2519        #[allow(missing_docs)]
2520        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2521        #[allow(missing_docs)]
2522        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2523        #[allow(missing_docs)]
2524        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2525    }
2526    #[allow(
2527        non_camel_case_types,
2528        non_snake_case,
2529        clippy::pub_underscore_fields,
2530        clippy::style
2531    )]
2532    const _: () = {
2533        use alloy::sol_types as alloy_sol_types;
2534        #[doc(hidden)]
2535        #[allow(dead_code)]
2536        type UnderlyingSolTuple<'a> = (
2537            alloy::sol_types::sol_data::Uint<256>,
2538            BN254::ScalarField,
2539            BN254::ScalarField,
2540            BN254::ScalarField,
2541        );
2542        #[doc(hidden)]
2543        type UnderlyingRustTuple<'a> = (
2544            alloy::sol_types::private::primitives::aliases::U256,
2545            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2546            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2547            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2548        );
2549        #[cfg(test)]
2550        #[allow(dead_code, unreachable_patterns)]
2551        fn _type_assertion(
2552            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2553        ) {
2554            match _t {
2555                alloy_sol_types::private::AssertTypeEq::<
2556                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2557                >(_) => {}
2558            }
2559        }
2560        #[automatically_derived]
2561        #[doc(hidden)]
2562        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2563            fn from(value: StakeTableState) -> Self {
2564                (
2565                    value.threshold,
2566                    value.blsKeyComm,
2567                    value.schnorrKeyComm,
2568                    value.amountComm,
2569                )
2570            }
2571        }
2572        #[automatically_derived]
2573        #[doc(hidden)]
2574        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2575            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2576                Self {
2577                    threshold: tuple.0,
2578                    blsKeyComm: tuple.1,
2579                    schnorrKeyComm: tuple.2,
2580                    amountComm: tuple.3,
2581                }
2582            }
2583        }
2584        #[automatically_derived]
2585        impl alloy_sol_types::SolValue for StakeTableState {
2586            type SolType = Self;
2587        }
2588        #[automatically_derived]
2589        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2590            #[inline]
2591            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2592                (
2593                    <alloy::sol_types::sol_data::Uint<
2594                        256,
2595                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2596                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2597                        &self.blsKeyComm,
2598                    ),
2599                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2600                        &self.schnorrKeyComm,
2601                    ),
2602                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2603                        &self.amountComm,
2604                    ),
2605                )
2606            }
2607            #[inline]
2608            fn stv_abi_encoded_size(&self) -> usize {
2609                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2610                    return size;
2611                }
2612                let tuple = <UnderlyingRustTuple<
2613                    '_,
2614                > as ::core::convert::From<Self>>::from(self.clone());
2615                <UnderlyingSolTuple<
2616                    '_,
2617                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2618            }
2619            #[inline]
2620            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2621                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2622            }
2623            #[inline]
2624            fn stv_abi_encode_packed_to(
2625                &self,
2626                out: &mut alloy_sol_types::private::Vec<u8>,
2627            ) {
2628                let tuple = <UnderlyingRustTuple<
2629                    '_,
2630                > as ::core::convert::From<Self>>::from(self.clone());
2631                <UnderlyingSolTuple<
2632                    '_,
2633                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2634            }
2635            #[inline]
2636            fn stv_abi_packed_encoded_size(&self) -> usize {
2637                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2638                    return size;
2639                }
2640                let tuple = <UnderlyingRustTuple<
2641                    '_,
2642                > as ::core::convert::From<Self>>::from(self.clone());
2643                <UnderlyingSolTuple<
2644                    '_,
2645                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2646            }
2647        }
2648        #[automatically_derived]
2649        impl alloy_sol_types::SolType for StakeTableState {
2650            type RustType = Self;
2651            type Token<'a> = <UnderlyingSolTuple<
2652                'a,
2653            > as alloy_sol_types::SolType>::Token<'a>;
2654            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2655            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2656                '_,
2657            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2658            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2659                '_,
2660            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2661            #[inline]
2662            fn valid_token(token: &Self::Token<'_>) -> bool {
2663                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2664            }
2665            #[inline]
2666            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2667                let tuple = <UnderlyingSolTuple<
2668                    '_,
2669                > as alloy_sol_types::SolType>::detokenize(token);
2670                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2671            }
2672        }
2673        #[automatically_derived]
2674        impl alloy_sol_types::SolStruct for StakeTableState {
2675            const NAME: &'static str = "StakeTableState";
2676            #[inline]
2677            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2678                alloy_sol_types::private::Cow::Borrowed(
2679                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2680                )
2681            }
2682            #[inline]
2683            fn eip712_components() -> alloy_sol_types::private::Vec<
2684                alloy_sol_types::private::Cow<'static, str>,
2685            > {
2686                alloy_sol_types::private::Vec::new()
2687            }
2688            #[inline]
2689            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2690                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2691            }
2692            #[inline]
2693            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2694                [
2695                    <alloy::sol_types::sol_data::Uint<
2696                        256,
2697                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.blsKeyComm,
2701                        )
2702                        .0,
2703                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2704                            &self.schnorrKeyComm,
2705                        )
2706                        .0,
2707                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2708                            &self.amountComm,
2709                        )
2710                        .0,
2711                ]
2712                    .concat()
2713            }
2714        }
2715        #[automatically_derived]
2716        impl alloy_sol_types::EventTopic for StakeTableState {
2717            #[inline]
2718            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2719                0usize
2720                    + <alloy::sol_types::sol_data::Uint<
2721                        256,
2722                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2723                        &rust.threshold,
2724                    )
2725                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2726                        &rust.blsKeyComm,
2727                    )
2728                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2729                        &rust.schnorrKeyComm,
2730                    )
2731                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2732                        &rust.amountComm,
2733                    )
2734            }
2735            #[inline]
2736            fn encode_topic_preimage(
2737                rust: &Self::RustType,
2738                out: &mut alloy_sol_types::private::Vec<u8>,
2739            ) {
2740                out.reserve(
2741                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2742                );
2743                <alloy::sol_types::sol_data::Uint<
2744                    256,
2745                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.threshold,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.blsKeyComm,
2751                    out,
2752                );
2753                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2754                    &rust.schnorrKeyComm,
2755                    out,
2756                );
2757                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2758                    &rust.amountComm,
2759                    out,
2760                );
2761            }
2762            #[inline]
2763            fn encode_topic(
2764                rust: &Self::RustType,
2765            ) -> alloy_sol_types::abi::token::WordToken {
2766                let mut out = alloy_sol_types::private::Vec::new();
2767                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2768                    rust,
2769                    &mut out,
2770                );
2771                alloy_sol_types::abi::token::WordToken(
2772                    alloy_sol_types::private::keccak256(out),
2773                )
2774            }
2775        }
2776    };
2777    use alloy::contract as alloy_contract;
2778    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2779
2780See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2781    #[inline]
2782    pub const fn new<
2783        P: alloy_contract::private::Provider<N>,
2784        N: alloy_contract::private::Network,
2785    >(
2786        address: alloy_sol_types::private::Address,
2787        __provider: P,
2788    ) -> LightClientInstance<P, N> {
2789        LightClientInstance::<P, N>::new(address, __provider)
2790    }
2791    /**A [`LightClient`](self) instance.
2792
2793Contains type-safe methods for interacting with an on-chain instance of the
2794[`LightClient`](self) contract located at a given `address`, using a given
2795provider `P`.
2796
2797If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2798documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2799be used to deploy a new instance of the contract.
2800
2801See the [module-level documentation](self) for all the available methods.*/
2802    #[derive(Clone)]
2803    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2804        address: alloy_sol_types::private::Address,
2805        provider: P,
2806        _network: ::core::marker::PhantomData<N>,
2807    }
2808    #[automatically_derived]
2809    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2810        #[inline]
2811        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2812            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2813        }
2814    }
2815    /// Instantiation and getters/setters.
2816    #[automatically_derived]
2817    impl<
2818        P: alloy_contract::private::Provider<N>,
2819        N: alloy_contract::private::Network,
2820    > LightClientInstance<P, N> {
2821        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2822
2823See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2824        #[inline]
2825        pub const fn new(
2826            address: alloy_sol_types::private::Address,
2827            __provider: P,
2828        ) -> Self {
2829            Self {
2830                address,
2831                provider: __provider,
2832                _network: ::core::marker::PhantomData,
2833            }
2834        }
2835        /// Returns a reference to the address.
2836        #[inline]
2837        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2838            &self.address
2839        }
2840        /// Sets the address.
2841        #[inline]
2842        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2843            self.address = address;
2844        }
2845        /// Sets the address and returns `self`.
2846        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2847            self.set_address(address);
2848            self
2849        }
2850        /// Returns a reference to the provider.
2851        #[inline]
2852        pub const fn provider(&self) -> &P {
2853            &self.provider
2854        }
2855    }
2856    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2857        /// Clones the provider and returns a new instance with the cloned provider.
2858        #[inline]
2859        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2860            LightClientInstance {
2861                address: self.address,
2862                provider: ::core::clone::Clone::clone(&self.provider),
2863                _network: ::core::marker::PhantomData,
2864            }
2865        }
2866    }
2867    /// Function calls.
2868    #[automatically_derived]
2869    impl<
2870        P: alloy_contract::private::Provider<N>,
2871        N: alloy_contract::private::Network,
2872    > LightClientInstance<P, N> {
2873        /// Creates a new call builder using this contract instance's provider and address.
2874        ///
2875        /// Note that the call can be any function call, not just those defined in this
2876        /// contract. Prefer using the other methods for building type-safe contract calls.
2877        pub fn call_builder<C: alloy_sol_types::SolCall>(
2878            &self,
2879            call: &C,
2880        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2881            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2882        }
2883    }
2884    /// Event filters.
2885    #[automatically_derived]
2886    impl<
2887        P: alloy_contract::private::Provider<N>,
2888        N: alloy_contract::private::Network,
2889    > LightClientInstance<P, N> {
2890        /// Creates a new event filter using this contract instance's provider and address.
2891        ///
2892        /// Note that the type can be any event, not just those defined in this contract.
2893        /// Prefer using the other methods for building type-safe event filters.
2894        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2895            &self,
2896        ) -> alloy_contract::Event<&P, E, N> {
2897            alloy_contract::Event::new_sol(&self.provider, &self.address)
2898        }
2899    }
2900}
2901/**
2902
2903Generated by the following Solidity interface...
2904```solidity
2905library BN254 {
2906    type BaseField is uint256;
2907    type ScalarField is uint256;
2908    struct G1Point {
2909        BaseField x;
2910        BaseField y;
2911    }
2912}
2913
2914library IPlonkVerifier {
2915    struct PlonkProof {
2916        BN254.G1Point wire0;
2917        BN254.G1Point wire1;
2918        BN254.G1Point wire2;
2919        BN254.G1Point wire3;
2920        BN254.G1Point wire4;
2921        BN254.G1Point prodPerm;
2922        BN254.G1Point split0;
2923        BN254.G1Point split1;
2924        BN254.G1Point split2;
2925        BN254.G1Point split3;
2926        BN254.G1Point split4;
2927        BN254.G1Point zeta;
2928        BN254.G1Point zetaOmega;
2929        BN254.ScalarField wireEval0;
2930        BN254.ScalarField wireEval1;
2931        BN254.ScalarField wireEval2;
2932        BN254.ScalarField wireEval3;
2933        BN254.ScalarField wireEval4;
2934        BN254.ScalarField sigmaEval0;
2935        BN254.ScalarField sigmaEval1;
2936        BN254.ScalarField sigmaEval2;
2937        BN254.ScalarField sigmaEval3;
2938        BN254.ScalarField prodPermZetaOmegaEval;
2939    }
2940    struct VerifyingKey {
2941        uint256 domainSize;
2942        uint256 numInputs;
2943        BN254.G1Point sigma0;
2944        BN254.G1Point sigma1;
2945        BN254.G1Point sigma2;
2946        BN254.G1Point sigma3;
2947        BN254.G1Point sigma4;
2948        BN254.G1Point q1;
2949        BN254.G1Point q2;
2950        BN254.G1Point q3;
2951        BN254.G1Point q4;
2952        BN254.G1Point qM12;
2953        BN254.G1Point qM34;
2954        BN254.G1Point qO;
2955        BN254.G1Point qC;
2956        BN254.G1Point qH1;
2957        BN254.G1Point qH2;
2958        BN254.G1Point qH3;
2959        BN254.G1Point qH4;
2960        BN254.G1Point qEcc;
2961        bytes32 g2LSB;
2962        bytes32 g2MSB;
2963    }
2964}
2965
2966library LightClient {
2967    struct LightClientState {
2968        uint64 viewNum;
2969        uint64 blockHeight;
2970        BN254.ScalarField blockCommRoot;
2971    }
2972    struct StakeTableState {
2973        uint256 threshold;
2974        BN254.ScalarField blsKeyComm;
2975        BN254.ScalarField schnorrKeyComm;
2976        BN254.ScalarField amountComm;
2977    }
2978}
2979
2980interface LightClientV3 {
2981    error AddressEmptyCode(address target);
2982    error DeprecatedApi();
2983    error ERC1967InvalidImplementation(address implementation);
2984    error ERC1967NonPayable();
2985    error FailedInnerCall();
2986    error InsufficientSnapshotHistory();
2987    error InvalidAddress();
2988    error InvalidArgs();
2989    error InvalidHotShotBlockForCommitmentCheck();
2990    error InvalidInitialization();
2991    error InvalidMaxStateHistory();
2992    error InvalidProof();
2993    error InvalidScalar();
2994    error MissingEpochRootUpdate();
2995    error NoChangeRequired();
2996    error NotInitializing();
2997    error OutdatedState();
2998    error OwnableInvalidOwner(address owner);
2999    error OwnableUnauthorizedAccount(address account);
3000    error ProverNotPermissioned();
3001    error UUPSUnauthorizedCallContext();
3002    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3003    error WrongStakeTableUsed();
3004
3005    event Initialized(uint64 version);
3006    event NewEpoch(uint64 epoch);
3007    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3008    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3009    event PermissionedProverNotRequired();
3010    event PermissionedProverRequired(address permissionedProver);
3011    event Upgrade(address implementation);
3012    event Upgraded(address indexed implementation);
3013
3014    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3015    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3016    function authRoot() external view returns (uint256);
3017    function blocksPerEpoch() external view returns (uint64);
3018    function currentBlockNumber() external view returns (uint256);
3019    function currentEpoch() external view returns (uint64);
3020    function disablePermissionedProverMode() external;
3021    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3022    function epochStartBlock() external view returns (uint64);
3023    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3024    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3025    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3026    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3027    function getStateHistoryCount() external view returns (uint256);
3028    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3029    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3030    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3031    function initializeV3() external;
3032    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3033    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3034    function isPermissionedProverEnabled() external view returns (bool);
3035    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3036    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3037    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3038    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3039    function owner() external view returns (address);
3040    function permissionedProver() external view returns (address);
3041    function proxiableUUID() external view returns (bytes32);
3042    function renounceOwnership() external;
3043    function setPermissionedProver(address prover) external;
3044    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3045    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3046    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3047    function stateHistoryFirstIndex() external view returns (uint64);
3048    function stateHistoryRetentionPeriod() external view returns (uint32);
3049    function transferOwnership(address newOwner) external;
3050    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3051    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3052    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3053}
3054```
3055
3056...which was generated by the following JSON ABI:
3057```json
3058[
3059  {
3060    "type": "function",
3061    "name": "UPGRADE_INTERFACE_VERSION",
3062    "inputs": [],
3063    "outputs": [
3064      {
3065        "name": "",
3066        "type": "string",
3067        "internalType": "string"
3068      }
3069    ],
3070    "stateMutability": "view"
3071  },
3072  {
3073    "type": "function",
3074    "name": "_getVk",
3075    "inputs": [],
3076    "outputs": [
3077      {
3078        "name": "vk",
3079        "type": "tuple",
3080        "internalType": "struct IPlonkVerifier.VerifyingKey",
3081        "components": [
3082          {
3083            "name": "domainSize",
3084            "type": "uint256",
3085            "internalType": "uint256"
3086          },
3087          {
3088            "name": "numInputs",
3089            "type": "uint256",
3090            "internalType": "uint256"
3091          },
3092          {
3093            "name": "sigma0",
3094            "type": "tuple",
3095            "internalType": "struct BN254.G1Point",
3096            "components": [
3097              {
3098                "name": "x",
3099                "type": "uint256",
3100                "internalType": "BN254.BaseField"
3101              },
3102              {
3103                "name": "y",
3104                "type": "uint256",
3105                "internalType": "BN254.BaseField"
3106              }
3107            ]
3108          },
3109          {
3110            "name": "sigma1",
3111            "type": "tuple",
3112            "internalType": "struct BN254.G1Point",
3113            "components": [
3114              {
3115                "name": "x",
3116                "type": "uint256",
3117                "internalType": "BN254.BaseField"
3118              },
3119              {
3120                "name": "y",
3121                "type": "uint256",
3122                "internalType": "BN254.BaseField"
3123              }
3124            ]
3125          },
3126          {
3127            "name": "sigma2",
3128            "type": "tuple",
3129            "internalType": "struct BN254.G1Point",
3130            "components": [
3131              {
3132                "name": "x",
3133                "type": "uint256",
3134                "internalType": "BN254.BaseField"
3135              },
3136              {
3137                "name": "y",
3138                "type": "uint256",
3139                "internalType": "BN254.BaseField"
3140              }
3141            ]
3142          },
3143          {
3144            "name": "sigma3",
3145            "type": "tuple",
3146            "internalType": "struct BN254.G1Point",
3147            "components": [
3148              {
3149                "name": "x",
3150                "type": "uint256",
3151                "internalType": "BN254.BaseField"
3152              },
3153              {
3154                "name": "y",
3155                "type": "uint256",
3156                "internalType": "BN254.BaseField"
3157              }
3158            ]
3159          },
3160          {
3161            "name": "sigma4",
3162            "type": "tuple",
3163            "internalType": "struct BN254.G1Point",
3164            "components": [
3165              {
3166                "name": "x",
3167                "type": "uint256",
3168                "internalType": "BN254.BaseField"
3169              },
3170              {
3171                "name": "y",
3172                "type": "uint256",
3173                "internalType": "BN254.BaseField"
3174              }
3175            ]
3176          },
3177          {
3178            "name": "q1",
3179            "type": "tuple",
3180            "internalType": "struct BN254.G1Point",
3181            "components": [
3182              {
3183                "name": "x",
3184                "type": "uint256",
3185                "internalType": "BN254.BaseField"
3186              },
3187              {
3188                "name": "y",
3189                "type": "uint256",
3190                "internalType": "BN254.BaseField"
3191              }
3192            ]
3193          },
3194          {
3195            "name": "q2",
3196            "type": "tuple",
3197            "internalType": "struct BN254.G1Point",
3198            "components": [
3199              {
3200                "name": "x",
3201                "type": "uint256",
3202                "internalType": "BN254.BaseField"
3203              },
3204              {
3205                "name": "y",
3206                "type": "uint256",
3207                "internalType": "BN254.BaseField"
3208              }
3209            ]
3210          },
3211          {
3212            "name": "q3",
3213            "type": "tuple",
3214            "internalType": "struct BN254.G1Point",
3215            "components": [
3216              {
3217                "name": "x",
3218                "type": "uint256",
3219                "internalType": "BN254.BaseField"
3220              },
3221              {
3222                "name": "y",
3223                "type": "uint256",
3224                "internalType": "BN254.BaseField"
3225              }
3226            ]
3227          },
3228          {
3229            "name": "q4",
3230            "type": "tuple",
3231            "internalType": "struct BN254.G1Point",
3232            "components": [
3233              {
3234                "name": "x",
3235                "type": "uint256",
3236                "internalType": "BN254.BaseField"
3237              },
3238              {
3239                "name": "y",
3240                "type": "uint256",
3241                "internalType": "BN254.BaseField"
3242              }
3243            ]
3244          },
3245          {
3246            "name": "qM12",
3247            "type": "tuple",
3248            "internalType": "struct BN254.G1Point",
3249            "components": [
3250              {
3251                "name": "x",
3252                "type": "uint256",
3253                "internalType": "BN254.BaseField"
3254              },
3255              {
3256                "name": "y",
3257                "type": "uint256",
3258                "internalType": "BN254.BaseField"
3259              }
3260            ]
3261          },
3262          {
3263            "name": "qM34",
3264            "type": "tuple",
3265            "internalType": "struct BN254.G1Point",
3266            "components": [
3267              {
3268                "name": "x",
3269                "type": "uint256",
3270                "internalType": "BN254.BaseField"
3271              },
3272              {
3273                "name": "y",
3274                "type": "uint256",
3275                "internalType": "BN254.BaseField"
3276              }
3277            ]
3278          },
3279          {
3280            "name": "qO",
3281            "type": "tuple",
3282            "internalType": "struct BN254.G1Point",
3283            "components": [
3284              {
3285                "name": "x",
3286                "type": "uint256",
3287                "internalType": "BN254.BaseField"
3288              },
3289              {
3290                "name": "y",
3291                "type": "uint256",
3292                "internalType": "BN254.BaseField"
3293              }
3294            ]
3295          },
3296          {
3297            "name": "qC",
3298            "type": "tuple",
3299            "internalType": "struct BN254.G1Point",
3300            "components": [
3301              {
3302                "name": "x",
3303                "type": "uint256",
3304                "internalType": "BN254.BaseField"
3305              },
3306              {
3307                "name": "y",
3308                "type": "uint256",
3309                "internalType": "BN254.BaseField"
3310              }
3311            ]
3312          },
3313          {
3314            "name": "qH1",
3315            "type": "tuple",
3316            "internalType": "struct BN254.G1Point",
3317            "components": [
3318              {
3319                "name": "x",
3320                "type": "uint256",
3321                "internalType": "BN254.BaseField"
3322              },
3323              {
3324                "name": "y",
3325                "type": "uint256",
3326                "internalType": "BN254.BaseField"
3327              }
3328            ]
3329          },
3330          {
3331            "name": "qH2",
3332            "type": "tuple",
3333            "internalType": "struct BN254.G1Point",
3334            "components": [
3335              {
3336                "name": "x",
3337                "type": "uint256",
3338                "internalType": "BN254.BaseField"
3339              },
3340              {
3341                "name": "y",
3342                "type": "uint256",
3343                "internalType": "BN254.BaseField"
3344              }
3345            ]
3346          },
3347          {
3348            "name": "qH3",
3349            "type": "tuple",
3350            "internalType": "struct BN254.G1Point",
3351            "components": [
3352              {
3353                "name": "x",
3354                "type": "uint256",
3355                "internalType": "BN254.BaseField"
3356              },
3357              {
3358                "name": "y",
3359                "type": "uint256",
3360                "internalType": "BN254.BaseField"
3361              }
3362            ]
3363          },
3364          {
3365            "name": "qH4",
3366            "type": "tuple",
3367            "internalType": "struct BN254.G1Point",
3368            "components": [
3369              {
3370                "name": "x",
3371                "type": "uint256",
3372                "internalType": "BN254.BaseField"
3373              },
3374              {
3375                "name": "y",
3376                "type": "uint256",
3377                "internalType": "BN254.BaseField"
3378              }
3379            ]
3380          },
3381          {
3382            "name": "qEcc",
3383            "type": "tuple",
3384            "internalType": "struct BN254.G1Point",
3385            "components": [
3386              {
3387                "name": "x",
3388                "type": "uint256",
3389                "internalType": "BN254.BaseField"
3390              },
3391              {
3392                "name": "y",
3393                "type": "uint256",
3394                "internalType": "BN254.BaseField"
3395              }
3396            ]
3397          },
3398          {
3399            "name": "g2LSB",
3400            "type": "bytes32",
3401            "internalType": "bytes32"
3402          },
3403          {
3404            "name": "g2MSB",
3405            "type": "bytes32",
3406            "internalType": "bytes32"
3407          }
3408        ]
3409      }
3410    ],
3411    "stateMutability": "pure"
3412  },
3413  {
3414    "type": "function",
3415    "name": "authRoot",
3416    "inputs": [],
3417    "outputs": [
3418      {
3419        "name": "",
3420        "type": "uint256",
3421        "internalType": "uint256"
3422      }
3423    ],
3424    "stateMutability": "view"
3425  },
3426  {
3427    "type": "function",
3428    "name": "blocksPerEpoch",
3429    "inputs": [],
3430    "outputs": [
3431      {
3432        "name": "",
3433        "type": "uint64",
3434        "internalType": "uint64"
3435      }
3436    ],
3437    "stateMutability": "view"
3438  },
3439  {
3440    "type": "function",
3441    "name": "currentBlockNumber",
3442    "inputs": [],
3443    "outputs": [
3444      {
3445        "name": "",
3446        "type": "uint256",
3447        "internalType": "uint256"
3448      }
3449    ],
3450    "stateMutability": "view"
3451  },
3452  {
3453    "type": "function",
3454    "name": "currentEpoch",
3455    "inputs": [],
3456    "outputs": [
3457      {
3458        "name": "",
3459        "type": "uint64",
3460        "internalType": "uint64"
3461      }
3462    ],
3463    "stateMutability": "view"
3464  },
3465  {
3466    "type": "function",
3467    "name": "disablePermissionedProverMode",
3468    "inputs": [],
3469    "outputs": [],
3470    "stateMutability": "nonpayable"
3471  },
3472  {
3473    "type": "function",
3474    "name": "epochFromBlockNumber",
3475    "inputs": [
3476      {
3477        "name": "_blockNum",
3478        "type": "uint64",
3479        "internalType": "uint64"
3480      },
3481      {
3482        "name": "_blocksPerEpoch",
3483        "type": "uint64",
3484        "internalType": "uint64"
3485      }
3486    ],
3487    "outputs": [
3488      {
3489        "name": "",
3490        "type": "uint64",
3491        "internalType": "uint64"
3492      }
3493    ],
3494    "stateMutability": "pure"
3495  },
3496  {
3497    "type": "function",
3498    "name": "epochStartBlock",
3499    "inputs": [],
3500    "outputs": [
3501      {
3502        "name": "",
3503        "type": "uint64",
3504        "internalType": "uint64"
3505      }
3506    ],
3507    "stateMutability": "view"
3508  },
3509  {
3510    "type": "function",
3511    "name": "finalizedState",
3512    "inputs": [],
3513    "outputs": [
3514      {
3515        "name": "viewNum",
3516        "type": "uint64",
3517        "internalType": "uint64"
3518      },
3519      {
3520        "name": "blockHeight",
3521        "type": "uint64",
3522        "internalType": "uint64"
3523      },
3524      {
3525        "name": "blockCommRoot",
3526        "type": "uint256",
3527        "internalType": "BN254.ScalarField"
3528      }
3529    ],
3530    "stateMutability": "view"
3531  },
3532  {
3533    "type": "function",
3534    "name": "genesisStakeTableState",
3535    "inputs": [],
3536    "outputs": [
3537      {
3538        "name": "threshold",
3539        "type": "uint256",
3540        "internalType": "uint256"
3541      },
3542      {
3543        "name": "blsKeyComm",
3544        "type": "uint256",
3545        "internalType": "BN254.ScalarField"
3546      },
3547      {
3548        "name": "schnorrKeyComm",
3549        "type": "uint256",
3550        "internalType": "BN254.ScalarField"
3551      },
3552      {
3553        "name": "amountComm",
3554        "type": "uint256",
3555        "internalType": "BN254.ScalarField"
3556      }
3557    ],
3558    "stateMutability": "view"
3559  },
3560  {
3561    "type": "function",
3562    "name": "genesisState",
3563    "inputs": [],
3564    "outputs": [
3565      {
3566        "name": "viewNum",
3567        "type": "uint64",
3568        "internalType": "uint64"
3569      },
3570      {
3571        "name": "blockHeight",
3572        "type": "uint64",
3573        "internalType": "uint64"
3574      },
3575      {
3576        "name": "blockCommRoot",
3577        "type": "uint256",
3578        "internalType": "BN254.ScalarField"
3579      }
3580    ],
3581    "stateMutability": "view"
3582  },
3583  {
3584    "type": "function",
3585    "name": "getHotShotCommitment",
3586    "inputs": [
3587      {
3588        "name": "hotShotBlockHeight",
3589        "type": "uint256",
3590        "internalType": "uint256"
3591      }
3592    ],
3593    "outputs": [
3594      {
3595        "name": "hotShotBlockCommRoot",
3596        "type": "uint256",
3597        "internalType": "BN254.ScalarField"
3598      },
3599      {
3600        "name": "hotshotBlockHeight",
3601        "type": "uint64",
3602        "internalType": "uint64"
3603      }
3604    ],
3605    "stateMutability": "view"
3606  },
3607  {
3608    "type": "function",
3609    "name": "getStateHistoryCount",
3610    "inputs": [],
3611    "outputs": [
3612      {
3613        "name": "",
3614        "type": "uint256",
3615        "internalType": "uint256"
3616      }
3617    ],
3618    "stateMutability": "view"
3619  },
3620  {
3621    "type": "function",
3622    "name": "getVersion",
3623    "inputs": [],
3624    "outputs": [
3625      {
3626        "name": "majorVersion",
3627        "type": "uint8",
3628        "internalType": "uint8"
3629      },
3630      {
3631        "name": "minorVersion",
3632        "type": "uint8",
3633        "internalType": "uint8"
3634      },
3635      {
3636        "name": "patchVersion",
3637        "type": "uint8",
3638        "internalType": "uint8"
3639      }
3640    ],
3641    "stateMutability": "pure"
3642  },
3643  {
3644    "type": "function",
3645    "name": "initialize",
3646    "inputs": [
3647      {
3648        "name": "_genesis",
3649        "type": "tuple",
3650        "internalType": "struct LightClient.LightClientState",
3651        "components": [
3652          {
3653            "name": "viewNum",
3654            "type": "uint64",
3655            "internalType": "uint64"
3656          },
3657          {
3658            "name": "blockHeight",
3659            "type": "uint64",
3660            "internalType": "uint64"
3661          },
3662          {
3663            "name": "blockCommRoot",
3664            "type": "uint256",
3665            "internalType": "BN254.ScalarField"
3666          }
3667        ]
3668      },
3669      {
3670        "name": "_genesisStakeTableState",
3671        "type": "tuple",
3672        "internalType": "struct LightClient.StakeTableState",
3673        "components": [
3674          {
3675            "name": "threshold",
3676            "type": "uint256",
3677            "internalType": "uint256"
3678          },
3679          {
3680            "name": "blsKeyComm",
3681            "type": "uint256",
3682            "internalType": "BN254.ScalarField"
3683          },
3684          {
3685            "name": "schnorrKeyComm",
3686            "type": "uint256",
3687            "internalType": "BN254.ScalarField"
3688          },
3689          {
3690            "name": "amountComm",
3691            "type": "uint256",
3692            "internalType": "BN254.ScalarField"
3693          }
3694        ]
3695      },
3696      {
3697        "name": "_stateHistoryRetentionPeriod",
3698        "type": "uint32",
3699        "internalType": "uint32"
3700      },
3701      {
3702        "name": "owner",
3703        "type": "address",
3704        "internalType": "address"
3705      }
3706    ],
3707    "outputs": [],
3708    "stateMutability": "nonpayable"
3709  },
3710  {
3711    "type": "function",
3712    "name": "initializeV2",
3713    "inputs": [
3714      {
3715        "name": "_blocksPerEpoch",
3716        "type": "uint64",
3717        "internalType": "uint64"
3718      },
3719      {
3720        "name": "_epochStartBlock",
3721        "type": "uint64",
3722        "internalType": "uint64"
3723      }
3724    ],
3725    "outputs": [],
3726    "stateMutability": "nonpayable"
3727  },
3728  {
3729    "type": "function",
3730    "name": "initializeV3",
3731    "inputs": [],
3732    "outputs": [],
3733    "stateMutability": "nonpayable"
3734  },
3735  {
3736    "type": "function",
3737    "name": "isEpochRoot",
3738    "inputs": [
3739      {
3740        "name": "blockHeight",
3741        "type": "uint64",
3742        "internalType": "uint64"
3743      }
3744    ],
3745    "outputs": [
3746      {
3747        "name": "",
3748        "type": "bool",
3749        "internalType": "bool"
3750      }
3751    ],
3752    "stateMutability": "view"
3753  },
3754  {
3755    "type": "function",
3756    "name": "isGtEpochRoot",
3757    "inputs": [
3758      {
3759        "name": "blockHeight",
3760        "type": "uint64",
3761        "internalType": "uint64"
3762      }
3763    ],
3764    "outputs": [
3765      {
3766        "name": "",
3767        "type": "bool",
3768        "internalType": "bool"
3769      }
3770    ],
3771    "stateMutability": "view"
3772  },
3773  {
3774    "type": "function",
3775    "name": "isPermissionedProverEnabled",
3776    "inputs": [],
3777    "outputs": [
3778      {
3779        "name": "",
3780        "type": "bool",
3781        "internalType": "bool"
3782      }
3783    ],
3784    "stateMutability": "view"
3785  },
3786  {
3787    "type": "function",
3788    "name": "lagOverEscapeHatchThreshold",
3789    "inputs": [
3790      {
3791        "name": "blockNumber",
3792        "type": "uint256",
3793        "internalType": "uint256"
3794      },
3795      {
3796        "name": "blockThreshold",
3797        "type": "uint256",
3798        "internalType": "uint256"
3799      }
3800    ],
3801    "outputs": [
3802      {
3803        "name": "",
3804        "type": "bool",
3805        "internalType": "bool"
3806      }
3807    ],
3808    "stateMutability": "view"
3809  },
3810  {
3811    "type": "function",
3812    "name": "newFinalizedState",
3813    "inputs": [
3814      {
3815        "name": "",
3816        "type": "tuple",
3817        "internalType": "struct LightClient.LightClientState",
3818        "components": [
3819          {
3820            "name": "viewNum",
3821            "type": "uint64",
3822            "internalType": "uint64"
3823          },
3824          {
3825            "name": "blockHeight",
3826            "type": "uint64",
3827            "internalType": "uint64"
3828          },
3829          {
3830            "name": "blockCommRoot",
3831            "type": "uint256",
3832            "internalType": "BN254.ScalarField"
3833          }
3834        ]
3835      },
3836      {
3837        "name": "",
3838        "type": "tuple",
3839        "internalType": "struct IPlonkVerifier.PlonkProof",
3840        "components": [
3841          {
3842            "name": "wire0",
3843            "type": "tuple",
3844            "internalType": "struct BN254.G1Point",
3845            "components": [
3846              {
3847                "name": "x",
3848                "type": "uint256",
3849                "internalType": "BN254.BaseField"
3850              },
3851              {
3852                "name": "y",
3853                "type": "uint256",
3854                "internalType": "BN254.BaseField"
3855              }
3856            ]
3857          },
3858          {
3859            "name": "wire1",
3860            "type": "tuple",
3861            "internalType": "struct BN254.G1Point",
3862            "components": [
3863              {
3864                "name": "x",
3865                "type": "uint256",
3866                "internalType": "BN254.BaseField"
3867              },
3868              {
3869                "name": "y",
3870                "type": "uint256",
3871                "internalType": "BN254.BaseField"
3872              }
3873            ]
3874          },
3875          {
3876            "name": "wire2",
3877            "type": "tuple",
3878            "internalType": "struct BN254.G1Point",
3879            "components": [
3880              {
3881                "name": "x",
3882                "type": "uint256",
3883                "internalType": "BN254.BaseField"
3884              },
3885              {
3886                "name": "y",
3887                "type": "uint256",
3888                "internalType": "BN254.BaseField"
3889              }
3890            ]
3891          },
3892          {
3893            "name": "wire3",
3894            "type": "tuple",
3895            "internalType": "struct BN254.G1Point",
3896            "components": [
3897              {
3898                "name": "x",
3899                "type": "uint256",
3900                "internalType": "BN254.BaseField"
3901              },
3902              {
3903                "name": "y",
3904                "type": "uint256",
3905                "internalType": "BN254.BaseField"
3906              }
3907            ]
3908          },
3909          {
3910            "name": "wire4",
3911            "type": "tuple",
3912            "internalType": "struct BN254.G1Point",
3913            "components": [
3914              {
3915                "name": "x",
3916                "type": "uint256",
3917                "internalType": "BN254.BaseField"
3918              },
3919              {
3920                "name": "y",
3921                "type": "uint256",
3922                "internalType": "BN254.BaseField"
3923              }
3924            ]
3925          },
3926          {
3927            "name": "prodPerm",
3928            "type": "tuple",
3929            "internalType": "struct BN254.G1Point",
3930            "components": [
3931              {
3932                "name": "x",
3933                "type": "uint256",
3934                "internalType": "BN254.BaseField"
3935              },
3936              {
3937                "name": "y",
3938                "type": "uint256",
3939                "internalType": "BN254.BaseField"
3940              }
3941            ]
3942          },
3943          {
3944            "name": "split0",
3945            "type": "tuple",
3946            "internalType": "struct BN254.G1Point",
3947            "components": [
3948              {
3949                "name": "x",
3950                "type": "uint256",
3951                "internalType": "BN254.BaseField"
3952              },
3953              {
3954                "name": "y",
3955                "type": "uint256",
3956                "internalType": "BN254.BaseField"
3957              }
3958            ]
3959          },
3960          {
3961            "name": "split1",
3962            "type": "tuple",
3963            "internalType": "struct BN254.G1Point",
3964            "components": [
3965              {
3966                "name": "x",
3967                "type": "uint256",
3968                "internalType": "BN254.BaseField"
3969              },
3970              {
3971                "name": "y",
3972                "type": "uint256",
3973                "internalType": "BN254.BaseField"
3974              }
3975            ]
3976          },
3977          {
3978            "name": "split2",
3979            "type": "tuple",
3980            "internalType": "struct BN254.G1Point",
3981            "components": [
3982              {
3983                "name": "x",
3984                "type": "uint256",
3985                "internalType": "BN254.BaseField"
3986              },
3987              {
3988                "name": "y",
3989                "type": "uint256",
3990                "internalType": "BN254.BaseField"
3991              }
3992            ]
3993          },
3994          {
3995            "name": "split3",
3996            "type": "tuple",
3997            "internalType": "struct BN254.G1Point",
3998            "components": [
3999              {
4000                "name": "x",
4001                "type": "uint256",
4002                "internalType": "BN254.BaseField"
4003              },
4004              {
4005                "name": "y",
4006                "type": "uint256",
4007                "internalType": "BN254.BaseField"
4008              }
4009            ]
4010          },
4011          {
4012            "name": "split4",
4013            "type": "tuple",
4014            "internalType": "struct BN254.G1Point",
4015            "components": [
4016              {
4017                "name": "x",
4018                "type": "uint256",
4019                "internalType": "BN254.BaseField"
4020              },
4021              {
4022                "name": "y",
4023                "type": "uint256",
4024                "internalType": "BN254.BaseField"
4025              }
4026            ]
4027          },
4028          {
4029            "name": "zeta",
4030            "type": "tuple",
4031            "internalType": "struct BN254.G1Point",
4032            "components": [
4033              {
4034                "name": "x",
4035                "type": "uint256",
4036                "internalType": "BN254.BaseField"
4037              },
4038              {
4039                "name": "y",
4040                "type": "uint256",
4041                "internalType": "BN254.BaseField"
4042              }
4043            ]
4044          },
4045          {
4046            "name": "zetaOmega",
4047            "type": "tuple",
4048            "internalType": "struct BN254.G1Point",
4049            "components": [
4050              {
4051                "name": "x",
4052                "type": "uint256",
4053                "internalType": "BN254.BaseField"
4054              },
4055              {
4056                "name": "y",
4057                "type": "uint256",
4058                "internalType": "BN254.BaseField"
4059              }
4060            ]
4061          },
4062          {
4063            "name": "wireEval0",
4064            "type": "uint256",
4065            "internalType": "BN254.ScalarField"
4066          },
4067          {
4068            "name": "wireEval1",
4069            "type": "uint256",
4070            "internalType": "BN254.ScalarField"
4071          },
4072          {
4073            "name": "wireEval2",
4074            "type": "uint256",
4075            "internalType": "BN254.ScalarField"
4076          },
4077          {
4078            "name": "wireEval3",
4079            "type": "uint256",
4080            "internalType": "BN254.ScalarField"
4081          },
4082          {
4083            "name": "wireEval4",
4084            "type": "uint256",
4085            "internalType": "BN254.ScalarField"
4086          },
4087          {
4088            "name": "sigmaEval0",
4089            "type": "uint256",
4090            "internalType": "BN254.ScalarField"
4091          },
4092          {
4093            "name": "sigmaEval1",
4094            "type": "uint256",
4095            "internalType": "BN254.ScalarField"
4096          },
4097          {
4098            "name": "sigmaEval2",
4099            "type": "uint256",
4100            "internalType": "BN254.ScalarField"
4101          },
4102          {
4103            "name": "sigmaEval3",
4104            "type": "uint256",
4105            "internalType": "BN254.ScalarField"
4106          },
4107          {
4108            "name": "prodPermZetaOmegaEval",
4109            "type": "uint256",
4110            "internalType": "BN254.ScalarField"
4111          }
4112        ]
4113      }
4114    ],
4115    "outputs": [],
4116    "stateMutability": "pure"
4117  },
4118  {
4119    "type": "function",
4120    "name": "newFinalizedState",
4121    "inputs": [
4122      {
4123        "name": "",
4124        "type": "tuple",
4125        "internalType": "struct LightClient.LightClientState",
4126        "components": [
4127          {
4128            "name": "viewNum",
4129            "type": "uint64",
4130            "internalType": "uint64"
4131          },
4132          {
4133            "name": "blockHeight",
4134            "type": "uint64",
4135            "internalType": "uint64"
4136          },
4137          {
4138            "name": "blockCommRoot",
4139            "type": "uint256",
4140            "internalType": "BN254.ScalarField"
4141          }
4142        ]
4143      },
4144      {
4145        "name": "",
4146        "type": "tuple",
4147        "internalType": "struct LightClient.StakeTableState",
4148        "components": [
4149          {
4150            "name": "threshold",
4151            "type": "uint256",
4152            "internalType": "uint256"
4153          },
4154          {
4155            "name": "blsKeyComm",
4156            "type": "uint256",
4157            "internalType": "BN254.ScalarField"
4158          },
4159          {
4160            "name": "schnorrKeyComm",
4161            "type": "uint256",
4162            "internalType": "BN254.ScalarField"
4163          },
4164          {
4165            "name": "amountComm",
4166            "type": "uint256",
4167            "internalType": "BN254.ScalarField"
4168          }
4169        ]
4170      },
4171      {
4172        "name": "",
4173        "type": "tuple",
4174        "internalType": "struct IPlonkVerifier.PlonkProof",
4175        "components": [
4176          {
4177            "name": "wire0",
4178            "type": "tuple",
4179            "internalType": "struct BN254.G1Point",
4180            "components": [
4181              {
4182                "name": "x",
4183                "type": "uint256",
4184                "internalType": "BN254.BaseField"
4185              },
4186              {
4187                "name": "y",
4188                "type": "uint256",
4189                "internalType": "BN254.BaseField"
4190              }
4191            ]
4192          },
4193          {
4194            "name": "wire1",
4195            "type": "tuple",
4196            "internalType": "struct BN254.G1Point",
4197            "components": [
4198              {
4199                "name": "x",
4200                "type": "uint256",
4201                "internalType": "BN254.BaseField"
4202              },
4203              {
4204                "name": "y",
4205                "type": "uint256",
4206                "internalType": "BN254.BaseField"
4207              }
4208            ]
4209          },
4210          {
4211            "name": "wire2",
4212            "type": "tuple",
4213            "internalType": "struct BN254.G1Point",
4214            "components": [
4215              {
4216                "name": "x",
4217                "type": "uint256",
4218                "internalType": "BN254.BaseField"
4219              },
4220              {
4221                "name": "y",
4222                "type": "uint256",
4223                "internalType": "BN254.BaseField"
4224              }
4225            ]
4226          },
4227          {
4228            "name": "wire3",
4229            "type": "tuple",
4230            "internalType": "struct BN254.G1Point",
4231            "components": [
4232              {
4233                "name": "x",
4234                "type": "uint256",
4235                "internalType": "BN254.BaseField"
4236              },
4237              {
4238                "name": "y",
4239                "type": "uint256",
4240                "internalType": "BN254.BaseField"
4241              }
4242            ]
4243          },
4244          {
4245            "name": "wire4",
4246            "type": "tuple",
4247            "internalType": "struct BN254.G1Point",
4248            "components": [
4249              {
4250                "name": "x",
4251                "type": "uint256",
4252                "internalType": "BN254.BaseField"
4253              },
4254              {
4255                "name": "y",
4256                "type": "uint256",
4257                "internalType": "BN254.BaseField"
4258              }
4259            ]
4260          },
4261          {
4262            "name": "prodPerm",
4263            "type": "tuple",
4264            "internalType": "struct BN254.G1Point",
4265            "components": [
4266              {
4267                "name": "x",
4268                "type": "uint256",
4269                "internalType": "BN254.BaseField"
4270              },
4271              {
4272                "name": "y",
4273                "type": "uint256",
4274                "internalType": "BN254.BaseField"
4275              }
4276            ]
4277          },
4278          {
4279            "name": "split0",
4280            "type": "tuple",
4281            "internalType": "struct BN254.G1Point",
4282            "components": [
4283              {
4284                "name": "x",
4285                "type": "uint256",
4286                "internalType": "BN254.BaseField"
4287              },
4288              {
4289                "name": "y",
4290                "type": "uint256",
4291                "internalType": "BN254.BaseField"
4292              }
4293            ]
4294          },
4295          {
4296            "name": "split1",
4297            "type": "tuple",
4298            "internalType": "struct BN254.G1Point",
4299            "components": [
4300              {
4301                "name": "x",
4302                "type": "uint256",
4303                "internalType": "BN254.BaseField"
4304              },
4305              {
4306                "name": "y",
4307                "type": "uint256",
4308                "internalType": "BN254.BaseField"
4309              }
4310            ]
4311          },
4312          {
4313            "name": "split2",
4314            "type": "tuple",
4315            "internalType": "struct BN254.G1Point",
4316            "components": [
4317              {
4318                "name": "x",
4319                "type": "uint256",
4320                "internalType": "BN254.BaseField"
4321              },
4322              {
4323                "name": "y",
4324                "type": "uint256",
4325                "internalType": "BN254.BaseField"
4326              }
4327            ]
4328          },
4329          {
4330            "name": "split3",
4331            "type": "tuple",
4332            "internalType": "struct BN254.G1Point",
4333            "components": [
4334              {
4335                "name": "x",
4336                "type": "uint256",
4337                "internalType": "BN254.BaseField"
4338              },
4339              {
4340                "name": "y",
4341                "type": "uint256",
4342                "internalType": "BN254.BaseField"
4343              }
4344            ]
4345          },
4346          {
4347            "name": "split4",
4348            "type": "tuple",
4349            "internalType": "struct BN254.G1Point",
4350            "components": [
4351              {
4352                "name": "x",
4353                "type": "uint256",
4354                "internalType": "BN254.BaseField"
4355              },
4356              {
4357                "name": "y",
4358                "type": "uint256",
4359                "internalType": "BN254.BaseField"
4360              }
4361            ]
4362          },
4363          {
4364            "name": "zeta",
4365            "type": "tuple",
4366            "internalType": "struct BN254.G1Point",
4367            "components": [
4368              {
4369                "name": "x",
4370                "type": "uint256",
4371                "internalType": "BN254.BaseField"
4372              },
4373              {
4374                "name": "y",
4375                "type": "uint256",
4376                "internalType": "BN254.BaseField"
4377              }
4378            ]
4379          },
4380          {
4381            "name": "zetaOmega",
4382            "type": "tuple",
4383            "internalType": "struct BN254.G1Point",
4384            "components": [
4385              {
4386                "name": "x",
4387                "type": "uint256",
4388                "internalType": "BN254.BaseField"
4389              },
4390              {
4391                "name": "y",
4392                "type": "uint256",
4393                "internalType": "BN254.BaseField"
4394              }
4395            ]
4396          },
4397          {
4398            "name": "wireEval0",
4399            "type": "uint256",
4400            "internalType": "BN254.ScalarField"
4401          },
4402          {
4403            "name": "wireEval1",
4404            "type": "uint256",
4405            "internalType": "BN254.ScalarField"
4406          },
4407          {
4408            "name": "wireEval2",
4409            "type": "uint256",
4410            "internalType": "BN254.ScalarField"
4411          },
4412          {
4413            "name": "wireEval3",
4414            "type": "uint256",
4415            "internalType": "BN254.ScalarField"
4416          },
4417          {
4418            "name": "wireEval4",
4419            "type": "uint256",
4420            "internalType": "BN254.ScalarField"
4421          },
4422          {
4423            "name": "sigmaEval0",
4424            "type": "uint256",
4425            "internalType": "BN254.ScalarField"
4426          },
4427          {
4428            "name": "sigmaEval1",
4429            "type": "uint256",
4430            "internalType": "BN254.ScalarField"
4431          },
4432          {
4433            "name": "sigmaEval2",
4434            "type": "uint256",
4435            "internalType": "BN254.ScalarField"
4436          },
4437          {
4438            "name": "sigmaEval3",
4439            "type": "uint256",
4440            "internalType": "BN254.ScalarField"
4441          },
4442          {
4443            "name": "prodPermZetaOmegaEval",
4444            "type": "uint256",
4445            "internalType": "BN254.ScalarField"
4446          }
4447        ]
4448      }
4449    ],
4450    "outputs": [],
4451    "stateMutability": "pure"
4452  },
4453  {
4454    "type": "function",
4455    "name": "newFinalizedState",
4456    "inputs": [
4457      {
4458        "name": "newState",
4459        "type": "tuple",
4460        "internalType": "struct LightClient.LightClientState",
4461        "components": [
4462          {
4463            "name": "viewNum",
4464            "type": "uint64",
4465            "internalType": "uint64"
4466          },
4467          {
4468            "name": "blockHeight",
4469            "type": "uint64",
4470            "internalType": "uint64"
4471          },
4472          {
4473            "name": "blockCommRoot",
4474            "type": "uint256",
4475            "internalType": "BN254.ScalarField"
4476          }
4477        ]
4478      },
4479      {
4480        "name": "nextStakeTable",
4481        "type": "tuple",
4482        "internalType": "struct LightClient.StakeTableState",
4483        "components": [
4484          {
4485            "name": "threshold",
4486            "type": "uint256",
4487            "internalType": "uint256"
4488          },
4489          {
4490            "name": "blsKeyComm",
4491            "type": "uint256",
4492            "internalType": "BN254.ScalarField"
4493          },
4494          {
4495            "name": "schnorrKeyComm",
4496            "type": "uint256",
4497            "internalType": "BN254.ScalarField"
4498          },
4499          {
4500            "name": "amountComm",
4501            "type": "uint256",
4502            "internalType": "BN254.ScalarField"
4503          }
4504        ]
4505      },
4506      {
4507        "name": "newAuthRoot",
4508        "type": "uint256",
4509        "internalType": "uint256"
4510      },
4511      {
4512        "name": "proof",
4513        "type": "tuple",
4514        "internalType": "struct IPlonkVerifier.PlonkProof",
4515        "components": [
4516          {
4517            "name": "wire0",
4518            "type": "tuple",
4519            "internalType": "struct BN254.G1Point",
4520            "components": [
4521              {
4522                "name": "x",
4523                "type": "uint256",
4524                "internalType": "BN254.BaseField"
4525              },
4526              {
4527                "name": "y",
4528                "type": "uint256",
4529                "internalType": "BN254.BaseField"
4530              }
4531            ]
4532          },
4533          {
4534            "name": "wire1",
4535            "type": "tuple",
4536            "internalType": "struct BN254.G1Point",
4537            "components": [
4538              {
4539                "name": "x",
4540                "type": "uint256",
4541                "internalType": "BN254.BaseField"
4542              },
4543              {
4544                "name": "y",
4545                "type": "uint256",
4546                "internalType": "BN254.BaseField"
4547              }
4548            ]
4549          },
4550          {
4551            "name": "wire2",
4552            "type": "tuple",
4553            "internalType": "struct BN254.G1Point",
4554            "components": [
4555              {
4556                "name": "x",
4557                "type": "uint256",
4558                "internalType": "BN254.BaseField"
4559              },
4560              {
4561                "name": "y",
4562                "type": "uint256",
4563                "internalType": "BN254.BaseField"
4564              }
4565            ]
4566          },
4567          {
4568            "name": "wire3",
4569            "type": "tuple",
4570            "internalType": "struct BN254.G1Point",
4571            "components": [
4572              {
4573                "name": "x",
4574                "type": "uint256",
4575                "internalType": "BN254.BaseField"
4576              },
4577              {
4578                "name": "y",
4579                "type": "uint256",
4580                "internalType": "BN254.BaseField"
4581              }
4582            ]
4583          },
4584          {
4585            "name": "wire4",
4586            "type": "tuple",
4587            "internalType": "struct BN254.G1Point",
4588            "components": [
4589              {
4590                "name": "x",
4591                "type": "uint256",
4592                "internalType": "BN254.BaseField"
4593              },
4594              {
4595                "name": "y",
4596                "type": "uint256",
4597                "internalType": "BN254.BaseField"
4598              }
4599            ]
4600          },
4601          {
4602            "name": "prodPerm",
4603            "type": "tuple",
4604            "internalType": "struct BN254.G1Point",
4605            "components": [
4606              {
4607                "name": "x",
4608                "type": "uint256",
4609                "internalType": "BN254.BaseField"
4610              },
4611              {
4612                "name": "y",
4613                "type": "uint256",
4614                "internalType": "BN254.BaseField"
4615              }
4616            ]
4617          },
4618          {
4619            "name": "split0",
4620            "type": "tuple",
4621            "internalType": "struct BN254.G1Point",
4622            "components": [
4623              {
4624                "name": "x",
4625                "type": "uint256",
4626                "internalType": "BN254.BaseField"
4627              },
4628              {
4629                "name": "y",
4630                "type": "uint256",
4631                "internalType": "BN254.BaseField"
4632              }
4633            ]
4634          },
4635          {
4636            "name": "split1",
4637            "type": "tuple",
4638            "internalType": "struct BN254.G1Point",
4639            "components": [
4640              {
4641                "name": "x",
4642                "type": "uint256",
4643                "internalType": "BN254.BaseField"
4644              },
4645              {
4646                "name": "y",
4647                "type": "uint256",
4648                "internalType": "BN254.BaseField"
4649              }
4650            ]
4651          },
4652          {
4653            "name": "split2",
4654            "type": "tuple",
4655            "internalType": "struct BN254.G1Point",
4656            "components": [
4657              {
4658                "name": "x",
4659                "type": "uint256",
4660                "internalType": "BN254.BaseField"
4661              },
4662              {
4663                "name": "y",
4664                "type": "uint256",
4665                "internalType": "BN254.BaseField"
4666              }
4667            ]
4668          },
4669          {
4670            "name": "split3",
4671            "type": "tuple",
4672            "internalType": "struct BN254.G1Point",
4673            "components": [
4674              {
4675                "name": "x",
4676                "type": "uint256",
4677                "internalType": "BN254.BaseField"
4678              },
4679              {
4680                "name": "y",
4681                "type": "uint256",
4682                "internalType": "BN254.BaseField"
4683              }
4684            ]
4685          },
4686          {
4687            "name": "split4",
4688            "type": "tuple",
4689            "internalType": "struct BN254.G1Point",
4690            "components": [
4691              {
4692                "name": "x",
4693                "type": "uint256",
4694                "internalType": "BN254.BaseField"
4695              },
4696              {
4697                "name": "y",
4698                "type": "uint256",
4699                "internalType": "BN254.BaseField"
4700              }
4701            ]
4702          },
4703          {
4704            "name": "zeta",
4705            "type": "tuple",
4706            "internalType": "struct BN254.G1Point",
4707            "components": [
4708              {
4709                "name": "x",
4710                "type": "uint256",
4711                "internalType": "BN254.BaseField"
4712              },
4713              {
4714                "name": "y",
4715                "type": "uint256",
4716                "internalType": "BN254.BaseField"
4717              }
4718            ]
4719          },
4720          {
4721            "name": "zetaOmega",
4722            "type": "tuple",
4723            "internalType": "struct BN254.G1Point",
4724            "components": [
4725              {
4726                "name": "x",
4727                "type": "uint256",
4728                "internalType": "BN254.BaseField"
4729              },
4730              {
4731                "name": "y",
4732                "type": "uint256",
4733                "internalType": "BN254.BaseField"
4734              }
4735            ]
4736          },
4737          {
4738            "name": "wireEval0",
4739            "type": "uint256",
4740            "internalType": "BN254.ScalarField"
4741          },
4742          {
4743            "name": "wireEval1",
4744            "type": "uint256",
4745            "internalType": "BN254.ScalarField"
4746          },
4747          {
4748            "name": "wireEval2",
4749            "type": "uint256",
4750            "internalType": "BN254.ScalarField"
4751          },
4752          {
4753            "name": "wireEval3",
4754            "type": "uint256",
4755            "internalType": "BN254.ScalarField"
4756          },
4757          {
4758            "name": "wireEval4",
4759            "type": "uint256",
4760            "internalType": "BN254.ScalarField"
4761          },
4762          {
4763            "name": "sigmaEval0",
4764            "type": "uint256",
4765            "internalType": "BN254.ScalarField"
4766          },
4767          {
4768            "name": "sigmaEval1",
4769            "type": "uint256",
4770            "internalType": "BN254.ScalarField"
4771          },
4772          {
4773            "name": "sigmaEval2",
4774            "type": "uint256",
4775            "internalType": "BN254.ScalarField"
4776          },
4777          {
4778            "name": "sigmaEval3",
4779            "type": "uint256",
4780            "internalType": "BN254.ScalarField"
4781          },
4782          {
4783            "name": "prodPermZetaOmegaEval",
4784            "type": "uint256",
4785            "internalType": "BN254.ScalarField"
4786          }
4787        ]
4788      }
4789    ],
4790    "outputs": [],
4791    "stateMutability": "nonpayable"
4792  },
4793  {
4794    "type": "function",
4795    "name": "owner",
4796    "inputs": [],
4797    "outputs": [
4798      {
4799        "name": "",
4800        "type": "address",
4801        "internalType": "address"
4802      }
4803    ],
4804    "stateMutability": "view"
4805  },
4806  {
4807    "type": "function",
4808    "name": "permissionedProver",
4809    "inputs": [],
4810    "outputs": [
4811      {
4812        "name": "",
4813        "type": "address",
4814        "internalType": "address"
4815      }
4816    ],
4817    "stateMutability": "view"
4818  },
4819  {
4820    "type": "function",
4821    "name": "proxiableUUID",
4822    "inputs": [],
4823    "outputs": [
4824      {
4825        "name": "",
4826        "type": "bytes32",
4827        "internalType": "bytes32"
4828      }
4829    ],
4830    "stateMutability": "view"
4831  },
4832  {
4833    "type": "function",
4834    "name": "renounceOwnership",
4835    "inputs": [],
4836    "outputs": [],
4837    "stateMutability": "nonpayable"
4838  },
4839  {
4840    "type": "function",
4841    "name": "setPermissionedProver",
4842    "inputs": [
4843      {
4844        "name": "prover",
4845        "type": "address",
4846        "internalType": "address"
4847      }
4848    ],
4849    "outputs": [],
4850    "stateMutability": "nonpayable"
4851  },
4852  {
4853    "type": "function",
4854    "name": "setStateHistoryRetentionPeriod",
4855    "inputs": [
4856      {
4857        "name": "historySeconds",
4858        "type": "uint32",
4859        "internalType": "uint32"
4860      }
4861    ],
4862    "outputs": [],
4863    "stateMutability": "nonpayable"
4864  },
4865  {
4866    "type": "function",
4867    "name": "setstateHistoryRetentionPeriod",
4868    "inputs": [
4869      {
4870        "name": "historySeconds",
4871        "type": "uint32",
4872        "internalType": "uint32"
4873      }
4874    ],
4875    "outputs": [],
4876    "stateMutability": "nonpayable"
4877  },
4878  {
4879    "type": "function",
4880    "name": "stateHistoryCommitments",
4881    "inputs": [
4882      {
4883        "name": "",
4884        "type": "uint256",
4885        "internalType": "uint256"
4886      }
4887    ],
4888    "outputs": [
4889      {
4890        "name": "l1BlockHeight",
4891        "type": "uint64",
4892        "internalType": "uint64"
4893      },
4894      {
4895        "name": "l1BlockTimestamp",
4896        "type": "uint64",
4897        "internalType": "uint64"
4898      },
4899      {
4900        "name": "hotShotBlockHeight",
4901        "type": "uint64",
4902        "internalType": "uint64"
4903      },
4904      {
4905        "name": "hotShotBlockCommRoot",
4906        "type": "uint256",
4907        "internalType": "BN254.ScalarField"
4908      }
4909    ],
4910    "stateMutability": "view"
4911  },
4912  {
4913    "type": "function",
4914    "name": "stateHistoryFirstIndex",
4915    "inputs": [],
4916    "outputs": [
4917      {
4918        "name": "",
4919        "type": "uint64",
4920        "internalType": "uint64"
4921      }
4922    ],
4923    "stateMutability": "view"
4924  },
4925  {
4926    "type": "function",
4927    "name": "stateHistoryRetentionPeriod",
4928    "inputs": [],
4929    "outputs": [
4930      {
4931        "name": "",
4932        "type": "uint32",
4933        "internalType": "uint32"
4934      }
4935    ],
4936    "stateMutability": "view"
4937  },
4938  {
4939    "type": "function",
4940    "name": "transferOwnership",
4941    "inputs": [
4942      {
4943        "name": "newOwner",
4944        "type": "address",
4945        "internalType": "address"
4946      }
4947    ],
4948    "outputs": [],
4949    "stateMutability": "nonpayable"
4950  },
4951  {
4952    "type": "function",
4953    "name": "updateEpochStartBlock",
4954    "inputs": [
4955      {
4956        "name": "newEpochStartBlock",
4957        "type": "uint64",
4958        "internalType": "uint64"
4959      }
4960    ],
4961    "outputs": [],
4962    "stateMutability": "nonpayable"
4963  },
4964  {
4965    "type": "function",
4966    "name": "upgradeToAndCall",
4967    "inputs": [
4968      {
4969        "name": "newImplementation",
4970        "type": "address",
4971        "internalType": "address"
4972      },
4973      {
4974        "name": "data",
4975        "type": "bytes",
4976        "internalType": "bytes"
4977      }
4978    ],
4979    "outputs": [],
4980    "stateMutability": "payable"
4981  },
4982  {
4983    "type": "function",
4984    "name": "votingStakeTableState",
4985    "inputs": [],
4986    "outputs": [
4987      {
4988        "name": "threshold",
4989        "type": "uint256",
4990        "internalType": "uint256"
4991      },
4992      {
4993        "name": "blsKeyComm",
4994        "type": "uint256",
4995        "internalType": "BN254.ScalarField"
4996      },
4997      {
4998        "name": "schnorrKeyComm",
4999        "type": "uint256",
5000        "internalType": "BN254.ScalarField"
5001      },
5002      {
5003        "name": "amountComm",
5004        "type": "uint256",
5005        "internalType": "BN254.ScalarField"
5006      }
5007    ],
5008    "stateMutability": "view"
5009  },
5010  {
5011    "type": "event",
5012    "name": "Initialized",
5013    "inputs": [
5014      {
5015        "name": "version",
5016        "type": "uint64",
5017        "indexed": false,
5018        "internalType": "uint64"
5019      }
5020    ],
5021    "anonymous": false
5022  },
5023  {
5024    "type": "event",
5025    "name": "NewEpoch",
5026    "inputs": [
5027      {
5028        "name": "epoch",
5029        "type": "uint64",
5030        "indexed": false,
5031        "internalType": "uint64"
5032      }
5033    ],
5034    "anonymous": false
5035  },
5036  {
5037    "type": "event",
5038    "name": "NewState",
5039    "inputs": [
5040      {
5041        "name": "viewNum",
5042        "type": "uint64",
5043        "indexed": true,
5044        "internalType": "uint64"
5045      },
5046      {
5047        "name": "blockHeight",
5048        "type": "uint64",
5049        "indexed": true,
5050        "internalType": "uint64"
5051      },
5052      {
5053        "name": "blockCommRoot",
5054        "type": "uint256",
5055        "indexed": false,
5056        "internalType": "BN254.ScalarField"
5057      }
5058    ],
5059    "anonymous": false
5060  },
5061  {
5062    "type": "event",
5063    "name": "OwnershipTransferred",
5064    "inputs": [
5065      {
5066        "name": "previousOwner",
5067        "type": "address",
5068        "indexed": true,
5069        "internalType": "address"
5070      },
5071      {
5072        "name": "newOwner",
5073        "type": "address",
5074        "indexed": true,
5075        "internalType": "address"
5076      }
5077    ],
5078    "anonymous": false
5079  },
5080  {
5081    "type": "event",
5082    "name": "PermissionedProverNotRequired",
5083    "inputs": [],
5084    "anonymous": false
5085  },
5086  {
5087    "type": "event",
5088    "name": "PermissionedProverRequired",
5089    "inputs": [
5090      {
5091        "name": "permissionedProver",
5092        "type": "address",
5093        "indexed": false,
5094        "internalType": "address"
5095      }
5096    ],
5097    "anonymous": false
5098  },
5099  {
5100    "type": "event",
5101    "name": "Upgrade",
5102    "inputs": [
5103      {
5104        "name": "implementation",
5105        "type": "address",
5106        "indexed": false,
5107        "internalType": "address"
5108      }
5109    ],
5110    "anonymous": false
5111  },
5112  {
5113    "type": "event",
5114    "name": "Upgraded",
5115    "inputs": [
5116      {
5117        "name": "implementation",
5118        "type": "address",
5119        "indexed": true,
5120        "internalType": "address"
5121      }
5122    ],
5123    "anonymous": false
5124  },
5125  {
5126    "type": "error",
5127    "name": "AddressEmptyCode",
5128    "inputs": [
5129      {
5130        "name": "target",
5131        "type": "address",
5132        "internalType": "address"
5133      }
5134    ]
5135  },
5136  {
5137    "type": "error",
5138    "name": "DeprecatedApi",
5139    "inputs": []
5140  },
5141  {
5142    "type": "error",
5143    "name": "ERC1967InvalidImplementation",
5144    "inputs": [
5145      {
5146        "name": "implementation",
5147        "type": "address",
5148        "internalType": "address"
5149      }
5150    ]
5151  },
5152  {
5153    "type": "error",
5154    "name": "ERC1967NonPayable",
5155    "inputs": []
5156  },
5157  {
5158    "type": "error",
5159    "name": "FailedInnerCall",
5160    "inputs": []
5161  },
5162  {
5163    "type": "error",
5164    "name": "InsufficientSnapshotHistory",
5165    "inputs": []
5166  },
5167  {
5168    "type": "error",
5169    "name": "InvalidAddress",
5170    "inputs": []
5171  },
5172  {
5173    "type": "error",
5174    "name": "InvalidArgs",
5175    "inputs": []
5176  },
5177  {
5178    "type": "error",
5179    "name": "InvalidHotShotBlockForCommitmentCheck",
5180    "inputs": []
5181  },
5182  {
5183    "type": "error",
5184    "name": "InvalidInitialization",
5185    "inputs": []
5186  },
5187  {
5188    "type": "error",
5189    "name": "InvalidMaxStateHistory",
5190    "inputs": []
5191  },
5192  {
5193    "type": "error",
5194    "name": "InvalidProof",
5195    "inputs": []
5196  },
5197  {
5198    "type": "error",
5199    "name": "InvalidScalar",
5200    "inputs": []
5201  },
5202  {
5203    "type": "error",
5204    "name": "MissingEpochRootUpdate",
5205    "inputs": []
5206  },
5207  {
5208    "type": "error",
5209    "name": "NoChangeRequired",
5210    "inputs": []
5211  },
5212  {
5213    "type": "error",
5214    "name": "NotInitializing",
5215    "inputs": []
5216  },
5217  {
5218    "type": "error",
5219    "name": "OutdatedState",
5220    "inputs": []
5221  },
5222  {
5223    "type": "error",
5224    "name": "OwnableInvalidOwner",
5225    "inputs": [
5226      {
5227        "name": "owner",
5228        "type": "address",
5229        "internalType": "address"
5230      }
5231    ]
5232  },
5233  {
5234    "type": "error",
5235    "name": "OwnableUnauthorizedAccount",
5236    "inputs": [
5237      {
5238        "name": "account",
5239        "type": "address",
5240        "internalType": "address"
5241      }
5242    ]
5243  },
5244  {
5245    "type": "error",
5246    "name": "ProverNotPermissioned",
5247    "inputs": []
5248  },
5249  {
5250    "type": "error",
5251    "name": "UUPSUnauthorizedCallContext",
5252    "inputs": []
5253  },
5254  {
5255    "type": "error",
5256    "name": "UUPSUnsupportedProxiableUUID",
5257    "inputs": [
5258      {
5259        "name": "slot",
5260        "type": "bytes32",
5261        "internalType": "bytes32"
5262      }
5263    ]
5264  },
5265  {
5266    "type": "error",
5267    "name": "WrongStakeTableUsed",
5268    "inputs": []
5269  }
5270]
5271```*/
5272#[allow(
5273    non_camel_case_types,
5274    non_snake_case,
5275    clippy::pub_underscore_fields,
5276    clippy::style,
5277    clippy::empty_structs_with_brackets
5278)]
5279pub mod LightClientV3 {
5280    use super::*;
5281    use alloy::sol_types as alloy_sol_types;
5282    /// The creation / init bytecode of the contract.
5283    ///
5284    /// ```text
5285    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136a86100f95f395f8181611c4b01528181611c740152611df101526136a85ff3fe608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b6102463660046128e0565b6107fd565b005b348015610258575f5ffd5b5061026c6102673660046128f9565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612910565b348015610343575f5ffd5b5061024b610352366004612b27565b61090e565b348015610362575f5ffd5b5061024b610371366004612de9565b610985565b348015610381575f5ffd5b50610395610390366004612b27565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b27565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e30565b610b84565b61024b6104dd366004612e49565b610b98565b3480156104ed575f5ffd5b50610447610bb7565b348015610501575f5ffd5b5061024b610bd2565b348015610515575f5ffd5b5061024b610c40565b348015610529575f5ffd5b5061024b610371366004612f4c565b348015610543575f5ffd5b506103cb610c51565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a6105853660046128f9565b610c76565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612f90565b610da1565b34801561060d575f5ffd5b5061024b61061c366004612e30565b610e10565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fb8565b610e99565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461300d565b610fa8565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613051565b348015610711575f5ffd5b5061024b610720366004612f90565b6112cd565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a6366004613086565b61141e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e43660046128e0565b611576565b3480156107f4575f5ffd5b50600954610447565b6108056115b5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612647565b610909611610565b905090565b6109166115b5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610da1565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130ba565b6109eb91906130ed565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b0316836130ed565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661311a565b600a546001600160401b0391821691610a849116846130ed565b6001600160401b0316115b92915050565b5f51602061367c5f395f51905f52805460039190600160401b900460ff1680610acb575080546001600160401b03808416911610155b15610ae95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b239291810482169116610da1565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b8c6115b5565b610b9581610e10565b50565b610ba0611c40565b610ba982611ce4565b610bb38282611d25565b5050565b5f610bc0611de6565b505f51602061365c5f395f51905f5290565b610bda6115b5565b6008546001600160a01b031615610c2557600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c486115b5565b610c3e5f611e2f565b600654600a545f91610909916001600160401b03600160401b90920482169116610da1565b600980545f91829190610c8a600183613139565b81548110610c9a57610c9a61314c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cd957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610d9a578460098281548110610d0957610d0961314c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610d925760098181548110610d4257610d4261314c565b905f5260205f2090600202016001015460098281548110610d6557610d6561314c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ced565b5050915091565b5f816001600160401b03165f03610db957505f610a8f565b826001600160401b03165f03610dd157506001610a8f565b610ddb82846130ed565b6001600160401b03165f03610dfb57610df48284613160565b9050610a8f565b610e058284613160565b610df49060016130ba565b610e186115b5565b610e108163ffffffff161080610e3757506301e133808163ffffffff16115b80610e55575060085463ffffffff600160a01b909104811690821611155b15610e73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061367c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610eca5750825b90505f826001600160401b03166001148015610ee55750303b155b905081158015610ef3575080155b15610f115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f3b57845460ff60401b1916600160401b1785555b610f4486611e9f565b610f4c611eb0565b610f57898989611eb8565b8315610f9d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fcd57506008546001600160a01b03163314155b15610feb576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b039182169116111580611024575060065460208501516001600160401b03600160401b9092048216911611155b156110425760405163051c46ef60e01b815260040160405180910390fd5b61104f8460400151611fe4565b61105c8360200151611fe4565b6110698360400151611fe4565b6110768360600151611fe4565b5f61107f610c51565b6020860151600a549192505f9161109f91906001600160401b0316610da1565b6010549091506001600160401b03908116908216106110e3576110c58660200151610a00565b156110e35760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561118f576002611106838361311a565b6001600160401b03161061112d5760405163080ae8d960e01b815260040160405180910390fd5b6111388260016130ba565b6001600160401b0316816001600160401b0316148015611171575060065461116f90600160401b90046001600160401b031661099e565b155b1561118f5760405163080ae8d960e01b815260040160405180910390fd5b61119b86868686612025565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906111f857506111f8866020015161099e565b15611262578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6112468260016130ba565b6040516001600160401b03909116815260200160405180910390a15b61126d43428861224f565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112bd91815260200190565b60405180910390a3505050505050565b5f51602061367c5f395f51905f52805460029190600160401b900460ff1680611303575080546001600160401b03808416911610155b156113215760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611369576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113b28385610da1565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061142f575080155b806114795750600854600980549091600160c01b90046001600160401b031690811061145d5761145d61314c565b5f9182526020909120600290910201546001600160401b031684105b156114975760405163b0b4387760e01b815260040160405180910390fd5b5f80806114a5600185613139565b90505b8161154157600854600160c01b90046001600160401b031681106115415786600982815481106114da576114da61314c565b5f9182526020909120600290910201546001600160401b03161161152f57600191506009818154811061150f5761150f61314c565b5f9182526020909120600290910201546001600160401b03169250611541565b806115398161318d565b9150506114a8565b8161155f5760405163b0b4387760e01b815260040160405180910390fd5b8561156a8489613139565b11979650505050505050565b61157e6115b5565b6001600160a01b0381166115ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9581611e2f565b336115e77f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c3e5760405163118cdaa760e01b81523360048201526024016115a3565b611618612647565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cc657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cba5f51602061365c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c3e5760405163703e46dd60e11b815260040160405180910390fd5b611cec6115b5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d7f575060408051601f3d908101601f19168201909252611d7c918101906131a2565b60015b611da757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115a3565b5f51602061365c5f395f51905f528114611dd757604051632a87526960e21b8152600481018290526024016115a3565b611de18383612438565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c3e5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611ea761248d565b610b95816124c3565b610c3e61248d565b82516001600160401b0316151580611edc575060208301516001600160401b031615155b80611ee957506020820151155b80611ef657506040820151155b80611f0357506060820151155b80611f0d57508151155b80611f1f5750610e108163ffffffff16105b80611f3357506301e133808163ffffffff16115b15611f51576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bb35760405163016c173360e21b815260040160405180910390fd5b5f61202e6108f9565b90506120386128ac565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120905750612090876020015161099e565b156120d9576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612114565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261216591849089906020016131d0565b60408051601f19818403018152919052805160209091012090506121a97f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001826131f2565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906121e990879087908a906004016133e7565b602060405180830381865af4158015612204573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122289190613607565b612245576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906122c4575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061228f5761228f61314c565b5f9182526020909120600290910201546122b990600160401b90046001600160401b03168461311a565b6001600160401b0316115b1561235757600854600980549091600160c01b90046001600160401b03169081106122f1576122f161314c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861233183613626565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612441826124cb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561248557611de1828261252e565b610bb36125a0565b5f51602061367c5f395f51905f5254600160401b900460ff16610c3e57604051631afcd79f60e31b815260040160405180910390fd5b61157e61248d565b806001600160a01b03163b5f0361250057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115a3565b5f51602061365c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161254a9190613650565b5f60405180830381855af49150503d805f8114612582576040519150601f19603f3d011682016040523d82523d5f602084013e612587565b606091505b50915091506125978583836125bf565b95945050505050565b3415610c3e5760405163b398979f60e01b815260040160405180910390fd5b6060826125d4576125cf8261261e565b612617565b81511580156125eb57506001600160a01b0384163b155b1561261457604051639996b31560e01b81526001600160a01b03851660048201526024016115a3565b50805b9392505050565b80511561262e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161267a60405180604001604052805f81526020015f81525090565b815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f602082840312156128f0575f5ffd5b612617826128ca565b5f60208284031215612909575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612942604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b37575f5ffd5b61261782612b11565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b7757612b77612b40565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612ba557612ba5612b40565b604052919050565b5f60608284031215612bbd575f5ffd5b604051606081016001600160401b0381118282101715612bdf57612bdf612b40565b604052905080612bee83612b11565b8152612bfc60208401612b11565b6020820152604092830135920191909152919050565b5f60408284031215612c22575f5ffd5b604080519081016001600160401b0381118282101715612c4457612c44612b40565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c6f575f5ffd5b612c77612b54565b9050612c838383612c12565b8152612c928360408401612c12565b6020820152612ca48360808401612c12565b6040820152612cb68360c08401612c12565b6060820152612cc9836101008401612c12565b6080820152612cdc836101408401612c12565b60a0820152612cef836101808401612c12565b60c0820152612d02836101c08401612c12565b60e0820152612d15836102008401612c12565b610100820152612d29836102408401612c12565b610120820152612d3d836102808401612c12565b610140820152612d51836102c08401612c12565b610160820152612d65836103008401612c12565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612dfb575f5ffd5b612e058484612bad565b9150612e148460608501612c5e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e40575f5ffd5b61261782612e1d565b5f5f60408385031215612e5a575f5ffd5b612e63836128ca565b915060208301356001600160401b03811115612e7d575f5ffd5b8301601f81018513612e8d575f5ffd5b80356001600160401b03811115612ea657612ea6612b40565b612eb9601f8201601f1916602001612b7d565b818152866020838501011115612ecd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612efc575f5ffd5b604051608081016001600160401b0381118282101715612f1e57612f1e612b40565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f5f575f5ffd5b612f698585612bad565b9250612f788560608601612eec565b9150612f878560e08601612c5e565b90509250925092565b5f5f60408385031215612fa1575f5ffd5b612faa83612b11565b9150612e1460208401612b11565b5f5f5f5f6101208587031215612fcc575f5ffd5b612fd68686612bad565b9350612fe58660608701612eec565b9250612ff360e08601612e1d565b915061300261010086016128ca565b905092959194509250565b5f5f5f5f6105808587031215613021575f5ffd5b61302b8686612bad565b935061303a8660608701612eec565b925060e08501359150613002866101008701612c5e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215613097575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130a6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613105576131056130d9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130a6565b81810381811115610a8f57610a8f6130a6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613178576131786130d9565b806001600160401b0384160491505092915050565b5f8161319b5761319b6130a6565b505f190190565b5f602082840312156131b2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6131e46131de83876131b9565b856131b9565b928352505060200192915050565b5f82613200576132006130d9565b500690565b805f5b6005811015613227578151845260209384019390910190600101613208565b50505050565b61324282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613419604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526135f1610500830185613205565b6135ff6105a083018461322d565b949350505050565b5f60208284031215613617575f5ffd5b81518015158114612617575f5ffd5b5f6001600160401b0382166001600160401b038103613647576136476130a6565b60010192915050565b5f61261782846131b956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5286    /// ```
5287    #[rustfmt::skip]
5288    #[allow(clippy::all)]
5289    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5290        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa6\xA8a\0\xF9_9_\x81\x81a\x1CK\x01R\x81\x81a\x1Ct\x01Ra\x1D\xF1\x01Ra6\xA8_\xF3\xFE`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a(\xE0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a(\xF9V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)\x10V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+'V[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a-\xE9V[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+'V[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+'V[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.0V[a\x0B\x84V[a\x02Ka\x04\xDD6`\x04a.IV[a\x0B\x98V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xB7V[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xD2V[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0C@V[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/LV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CQV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a(\xF9V[a\x0CvV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\x90V[a\r\xA1V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.0V[a\x0E\x10V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xB8V[a\x0E\x99V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0\rV[a\x0F\xA8V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0QV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\x90V[a\x12\xCDV[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\x86V[a\x14\x1EV[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a(\xE0V[a\x15vV[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&GV[a\t\ta\x16\x10V[\x90P\x90V[a\t\x16a\x15\xB5V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xA1V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xBAV[a\t\xEB\x91\x90a0\xEDV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a0\xEDV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1\x1AV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a0\xEDV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a6|_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xCBWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xE9W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x0B#\x92\x91\x81\x04\x82\x16\x91\x16a\r\xA1V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x0B\x8Ca\x15\xB5V[a\x0B\x95\x81a\x0E\x10V[PV[a\x0B\xA0a\x1C@V[a\x0B\xA9\x82a\x1C\xE4V[a\x0B\xB3\x82\x82a\x1D%V[PPV[_a\x0B\xC0a\x1D\xE6V[P_Q` a6\\_9_Q\x90_R\x90V[a\x0B\xDAa\x15\xB5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C%W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0CHa\x15\xB5V[a\x0C>_a\x1E/V[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xA1V[`\t\x80T_\x91\x82\x91\x90a\x0C\x8A`\x01\x83a19V[\x81T\x81\x10a\x0C\x9AWa\x0C\x9Aa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xD9W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\r\x9AW\x84`\t\x82\x81T\x81\x10a\r\tWa\r\ta1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\x92W`\t\x81\x81T\x81\x10a\rBWa\rBa1LV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\reWa\rea1LV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0C\xEDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xB9WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP`\x01a\n\x8FV[a\r\xDB\x82\x84a0\xEDV[`\x01`\x01`@\x1B\x03\x16_\x03a\r\xFBWa\r\xF4\x82\x84a1`V[\x90Pa\n\x8FV[a\x0E\x05\x82\x84a1`V[a\r\xF4\x90`\x01a0\xBAV[a\x0E\x18a\x15\xB5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0E7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0EsW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a6|_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xCAWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xE5WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xF3WP\x80\x15[\x15a\x0F\x11W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0F;W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0FD\x86a\x1E\x9FV[a\x0FLa\x1E\xB0V[a\x0FW\x89\x89\x89a\x1E\xB8V[\x83\x15a\x0F\x9DW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0F\xCDWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0F\xEBW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x10$WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10BW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10O\x84`@\x01Qa\x1F\xE4V[a\x10\\\x83` \x01Qa\x1F\xE4V[a\x10i\x83`@\x01Qa\x1F\xE4V[a\x10v\x83``\x01Qa\x1F\xE4V[_a\x10\x7Fa\x0CQV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\x9F\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xA1V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xE3Wa\x10\xC5\x86` \x01Qa\n\0V[\x15a\x10\xE3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x11\x8FW`\x02a\x11\x06\x83\x83a1\x1AV[`\x01`\x01`@\x1B\x03\x16\x10a\x11-W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x118\x82`\x01a0\xBAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11qWP`\x06Ta\x11o\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\x8FW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\x9B\x86\x86\x86\x86a %V[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x11\xF8WPa\x11\xF8\x86` \x01Qa\t\x9EV[\x15a\x12bW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x12F\x82`\x01a0\xBAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12mCB\x88a\"OV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x12\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a6|_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13\x03WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13!W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x13iW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\xB2\x83\x85a\r\xA1V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14/WP\x80\x15[\x80a\x14yWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14]Wa\x14]a1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x97W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xA5`\x01\x85a19V[\x90P[\x81a\x15AW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15AW\x86`\t\x82\x81T\x81\x10a\x14\xDAWa\x14\xDAa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15/W`\x01\x91P`\t\x81\x81T\x81\x10a\x15\x0FWa\x15\x0Fa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15AV[\x80a\x159\x81a1\x8DV[\x91PPa\x14\xA8V[\x81a\x15_W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15j\x84\x89a19V[\x11\x97\x96PPPPPPPV[a\x15~a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x95\x81a\x1E/V[3a\x15\xE7\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C>W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xA3V[a\x16\x18a&GV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xC6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xBA_Q` a6\\_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\xECa\x15\xB5V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x7FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D|\x91\x81\x01\x90a1\xA2V[`\x01[a\x1D\xA7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\\_9_Q\x90_R\x81\x14a\x1D\xD7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xA3V[a\x1D\xE1\x83\x83a$8V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0C>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1E\xA7a$\x8DV[a\x0B\x95\x81a$\xC3V[a\x0C>a$\x8DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\xDCWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\xE9WP` \x82\x01Q\x15[\x80a\x1E\xF6WP`@\x82\x01Q\x15[\x80a\x1F\x03WP``\x82\x01Q\x15[\x80a\x1F\rWP\x81Q\x15[\x80a\x1F\x1FWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1F3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1FQW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x0B\xB3W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a .a\x08\xF9V[\x90Pa 8a(\xACV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a \x90WPa \x90\x87` \x01Qa\t\x9EV[\x15a \xD9W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa!\x14V[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra!e\x91\x84\x90\x89\x90` \x01a1\xD0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!\xA9\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a1\xF2V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a!\xE9\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a3\xE7V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\"\x04W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"(\x91\x90a6\x07V[a\"EW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"\xC4WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\x8FWa\"\x8Fa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"\xB9\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1\x1AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#WW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xF1Wa\"\xF1a1LV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a#1\x83a6&V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a$A\x82a$\xCBV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a$\x85Wa\x1D\xE1\x82\x82a%.V[a\x0B\xB3a%\xA0V[_Q` a6|_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C>W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15~a$\x8DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\\_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa%J\x91\x90a6PV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\x82W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\x87V[``\x91P[P\x91P\x91Pa%\x97\x85\x83\x83a%\xBFV[\x95\x94PPPPPV[4\x15a\x0C>W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xD4Wa%\xCF\x82a&\x1EV[a&\x17V[\x81Q\x15\x80\x15a%\xEBWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\x14W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xA3V[P\x80[\x93\x92PPPV[\x80Q\x15a&.W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a&z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a(\xF0W__\xFD[a&\x17\x82a(\xCAV[_` \x82\x84\x03\x12\x15a)\tW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)B`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+7W__\xFD[a&\x17\x82a+\x11V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+wWa+wa+@V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xA5Wa+\xA5a+@V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xBDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xDFWa+\xDFa+@V[`@R\x90P\x80a+\xEE\x83a+\x11V[\x81Ra+\xFC` \x84\x01a+\x11V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,\"W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,DWa,Da+@V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,oW__\xFD[a,wa+TV[\x90Pa,\x83\x83\x83a,\x12V[\x81Ra,\x92\x83`@\x84\x01a,\x12V[` \x82\x01Ra,\xA4\x83`\x80\x84\x01a,\x12V[`@\x82\x01Ra,\xB6\x83`\xC0\x84\x01a,\x12V[``\x82\x01Ra,\xC9\x83a\x01\0\x84\x01a,\x12V[`\x80\x82\x01Ra,\xDC\x83a\x01@\x84\x01a,\x12V[`\xA0\x82\x01Ra,\xEF\x83a\x01\x80\x84\x01a,\x12V[`\xC0\x82\x01Ra-\x02\x83a\x01\xC0\x84\x01a,\x12V[`\xE0\x82\x01Ra-\x15\x83a\x02\0\x84\x01a,\x12V[a\x01\0\x82\x01Ra-)\x83a\x02@\x84\x01a,\x12V[a\x01 \x82\x01Ra-=\x83a\x02\x80\x84\x01a,\x12V[a\x01@\x82\x01Ra-Q\x83a\x02\xC0\x84\x01a,\x12V[a\x01`\x82\x01Ra-e\x83a\x03\0\x84\x01a,\x12V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a-\xFBW__\xFD[a.\x05\x84\x84a+\xADV[\x91Pa.\x14\x84``\x85\x01a,^V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.@W__\xFD[a&\x17\x82a.\x1DV[__`@\x83\x85\x03\x12\x15a.ZW__\xFD[a.c\x83a(\xCAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.}W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\x8DW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA6Wa.\xA6a+@V[a.\xB9`\x1F\x82\x01`\x1F\x19\x16` \x01a+}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xCDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a.\xFCW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x1EWa/\x1Ea+@V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/_W__\xFD[a/i\x85\x85a+\xADV[\x92Pa/x\x85``\x86\x01a.\xECV[\x91Pa/\x87\x85`\xE0\x86\x01a,^V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xA1W__\xFD[a/\xAA\x83a+\x11V[\x91Pa.\x14` \x84\x01a+\x11V[____a\x01 \x85\x87\x03\x12\x15a/\xCCW__\xFD[a/\xD6\x86\x86a+\xADV[\x93Pa/\xE5\x86``\x87\x01a.\xECV[\x92Pa/\xF3`\xE0\x86\x01a.\x1DV[\x91Pa0\x02a\x01\0\x86\x01a(\xCAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0!W__\xFD[a0+\x86\x86a+\xADV[\x93Pa0:\x86``\x87\x01a.\xECV[\x92P`\xE0\x85\x015\x91Pa0\x02\x86a\x01\0\x87\x01a,^V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\x97W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xA6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x05Wa1\x05a0\xD9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xA6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xA6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1xWa1xa0\xD9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\x9BWa1\x9Ba0\xA6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xB2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a1\xE4a1\xDE\x83\x87a1\xB9V[\x85a1\xB9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2\0Wa2\0a0\xD9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2'W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2\x08V[PPPPV[a2B\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa4\x19`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra5\xF1a\x05\0\x83\x01\x85a2\x05V[a5\xFFa\x05\xA0\x83\x01\x84a2-V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a6\x17W__\xFD[\x81Q\x80\x15\x15\x81\x14a&\x17W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6GWa6Ga0\xA6V[`\x01\x01\x92\x91PPV[_a&\x17\x82\x84a1\xB9V\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5291    );
5292    /// The runtime bytecode of the contract, as deployed on the network.
5293    ///
5294    /// ```text
5295    ///0x608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b6102463660046128e0565b6107fd565b005b348015610258575f5ffd5b5061026c6102673660046128f9565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612910565b348015610343575f5ffd5b5061024b610352366004612b27565b61090e565b348015610362575f5ffd5b5061024b610371366004612de9565b610985565b348015610381575f5ffd5b50610395610390366004612b27565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b27565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e30565b610b84565b61024b6104dd366004612e49565b610b98565b3480156104ed575f5ffd5b50610447610bb7565b348015610501575f5ffd5b5061024b610bd2565b348015610515575f5ffd5b5061024b610c40565b348015610529575f5ffd5b5061024b610371366004612f4c565b348015610543575f5ffd5b506103cb610c51565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a6105853660046128f9565b610c76565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612f90565b610da1565b34801561060d575f5ffd5b5061024b61061c366004612e30565b610e10565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fb8565b610e99565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461300d565b610fa8565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613051565b348015610711575f5ffd5b5061024b610720366004612f90565b6112cd565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a6366004613086565b61141e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e43660046128e0565b611576565b3480156107f4575f5ffd5b50600954610447565b6108056115b5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612647565b610909611610565b905090565b6109166115b5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610da1565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130ba565b6109eb91906130ed565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b0316836130ed565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661311a565b600a546001600160401b0391821691610a849116846130ed565b6001600160401b0316115b92915050565b5f51602061367c5f395f51905f52805460039190600160401b900460ff1680610acb575080546001600160401b03808416911610155b15610ae95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b239291810482169116610da1565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b8c6115b5565b610b9581610e10565b50565b610ba0611c40565b610ba982611ce4565b610bb38282611d25565b5050565b5f610bc0611de6565b505f51602061365c5f395f51905f5290565b610bda6115b5565b6008546001600160a01b031615610c2557600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c486115b5565b610c3e5f611e2f565b600654600a545f91610909916001600160401b03600160401b90920482169116610da1565b600980545f91829190610c8a600183613139565b81548110610c9a57610c9a61314c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cd957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610d9a578460098281548110610d0957610d0961314c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610d925760098181548110610d4257610d4261314c565b905f5260205f2090600202016001015460098281548110610d6557610d6561314c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ced565b5050915091565b5f816001600160401b03165f03610db957505f610a8f565b826001600160401b03165f03610dd157506001610a8f565b610ddb82846130ed565b6001600160401b03165f03610dfb57610df48284613160565b9050610a8f565b610e058284613160565b610df49060016130ba565b610e186115b5565b610e108163ffffffff161080610e3757506301e133808163ffffffff16115b80610e55575060085463ffffffff600160a01b909104811690821611155b15610e73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061367c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610eca5750825b90505f826001600160401b03166001148015610ee55750303b155b905081158015610ef3575080155b15610f115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f3b57845460ff60401b1916600160401b1785555b610f4486611e9f565b610f4c611eb0565b610f57898989611eb8565b8315610f9d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fcd57506008546001600160a01b03163314155b15610feb576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b039182169116111580611024575060065460208501516001600160401b03600160401b9092048216911611155b156110425760405163051c46ef60e01b815260040160405180910390fd5b61104f8460400151611fe4565b61105c8360200151611fe4565b6110698360400151611fe4565b6110768360600151611fe4565b5f61107f610c51565b6020860151600a549192505f9161109f91906001600160401b0316610da1565b6010549091506001600160401b03908116908216106110e3576110c58660200151610a00565b156110e35760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561118f576002611106838361311a565b6001600160401b03161061112d5760405163080ae8d960e01b815260040160405180910390fd5b6111388260016130ba565b6001600160401b0316816001600160401b0316148015611171575060065461116f90600160401b90046001600160401b031661099e565b155b1561118f5760405163080ae8d960e01b815260040160405180910390fd5b61119b86868686612025565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906111f857506111f8866020015161099e565b15611262578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6112468260016130ba565b6040516001600160401b03909116815260200160405180910390a15b61126d43428861224f565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112bd91815260200190565b60405180910390a3505050505050565b5f51602061367c5f395f51905f52805460029190600160401b900460ff1680611303575080546001600160401b03808416911610155b156113215760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611369576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113b28385610da1565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061142f575080155b806114795750600854600980549091600160c01b90046001600160401b031690811061145d5761145d61314c565b5f9182526020909120600290910201546001600160401b031684105b156114975760405163b0b4387760e01b815260040160405180910390fd5b5f80806114a5600185613139565b90505b8161154157600854600160c01b90046001600160401b031681106115415786600982815481106114da576114da61314c565b5f9182526020909120600290910201546001600160401b03161161152f57600191506009818154811061150f5761150f61314c565b5f9182526020909120600290910201546001600160401b03169250611541565b806115398161318d565b9150506114a8565b8161155f5760405163b0b4387760e01b815260040160405180910390fd5b8561156a8489613139565b11979650505050505050565b61157e6115b5565b6001600160a01b0381166115ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9581611e2f565b336115e77f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c3e5760405163118cdaa760e01b81523360048201526024016115a3565b611618612647565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cc657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cba5f51602061365c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c3e5760405163703e46dd60e11b815260040160405180910390fd5b611cec6115b5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d7f575060408051601f3d908101601f19168201909252611d7c918101906131a2565b60015b611da757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115a3565b5f51602061365c5f395f51905f528114611dd757604051632a87526960e21b8152600481018290526024016115a3565b611de18383612438565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c3e5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611ea761248d565b610b95816124c3565b610c3e61248d565b82516001600160401b0316151580611edc575060208301516001600160401b031615155b80611ee957506020820151155b80611ef657506040820151155b80611f0357506060820151155b80611f0d57508151155b80611f1f5750610e108163ffffffff16105b80611f3357506301e133808163ffffffff16115b15611f51576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bb35760405163016c173360e21b815260040160405180910390fd5b5f61202e6108f9565b90506120386128ac565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120905750612090876020015161099e565b156120d9576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612114565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261216591849089906020016131d0565b60408051601f19818403018152919052805160209091012090506121a97f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001826131f2565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906121e990879087908a906004016133e7565b602060405180830381865af4158015612204573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122289190613607565b612245576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906122c4575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061228f5761228f61314c565b5f9182526020909120600290910201546122b990600160401b90046001600160401b03168461311a565b6001600160401b0316115b1561235757600854600980549091600160c01b90046001600160401b03169081106122f1576122f161314c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861233183613626565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612441826124cb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561248557611de1828261252e565b610bb36125a0565b5f51602061367c5f395f51905f5254600160401b900460ff16610c3e57604051631afcd79f60e31b815260040160405180910390fd5b61157e61248d565b806001600160a01b03163b5f0361250057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115a3565b5f51602061365c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161254a9190613650565b5f60405180830381855af49150503d805f8114612582576040519150601f19603f3d011682016040523d82523d5f602084013e612587565b606091505b50915091506125978583836125bf565b95945050505050565b3415610c3e5760405163b398979f60e01b815260040160405180910390fd5b6060826125d4576125cf8261261e565b612617565b81511580156125eb57506001600160a01b0384163b155b1561261457604051639996b31560e01b81526001600160a01b03851660048201526024016115a3565b50805b9392505050565b80511561262e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161267a60405180604001604052805f81526020015f81525090565b815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f602082840312156128f0575f5ffd5b612617826128ca565b5f60208284031215612909575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612942604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b37575f5ffd5b61261782612b11565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b7757612b77612b40565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612ba557612ba5612b40565b604052919050565b5f60608284031215612bbd575f5ffd5b604051606081016001600160401b0381118282101715612bdf57612bdf612b40565b604052905080612bee83612b11565b8152612bfc60208401612b11565b6020820152604092830135920191909152919050565b5f60408284031215612c22575f5ffd5b604080519081016001600160401b0381118282101715612c4457612c44612b40565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c6f575f5ffd5b612c77612b54565b9050612c838383612c12565b8152612c928360408401612c12565b6020820152612ca48360808401612c12565b6040820152612cb68360c08401612c12565b6060820152612cc9836101008401612c12565b6080820152612cdc836101408401612c12565b60a0820152612cef836101808401612c12565b60c0820152612d02836101c08401612c12565b60e0820152612d15836102008401612c12565b610100820152612d29836102408401612c12565b610120820152612d3d836102808401612c12565b610140820152612d51836102c08401612c12565b610160820152612d65836103008401612c12565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612dfb575f5ffd5b612e058484612bad565b9150612e148460608501612c5e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e40575f5ffd5b61261782612e1d565b5f5f60408385031215612e5a575f5ffd5b612e63836128ca565b915060208301356001600160401b03811115612e7d575f5ffd5b8301601f81018513612e8d575f5ffd5b80356001600160401b03811115612ea657612ea6612b40565b612eb9601f8201601f1916602001612b7d565b818152866020838501011115612ecd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612efc575f5ffd5b604051608081016001600160401b0381118282101715612f1e57612f1e612b40565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f5f575f5ffd5b612f698585612bad565b9250612f788560608601612eec565b9150612f878560e08601612c5e565b90509250925092565b5f5f60408385031215612fa1575f5ffd5b612faa83612b11565b9150612e1460208401612b11565b5f5f5f5f6101208587031215612fcc575f5ffd5b612fd68686612bad565b9350612fe58660608701612eec565b9250612ff360e08601612e1d565b915061300261010086016128ca565b905092959194509250565b5f5f5f5f6105808587031215613021575f5ffd5b61302b8686612bad565b935061303a8660608701612eec565b925060e08501359150613002866101008701612c5e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215613097575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130a6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613105576131056130d9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130a6565b81810381811115610a8f57610a8f6130a6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613178576131786130d9565b806001600160401b0384160491505092915050565b5f8161319b5761319b6130a6565b505f190190565b5f602082840312156131b2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6131e46131de83876131b9565b856131b9565b928352505060200192915050565b5f82613200576132006130d9565b500690565b805f5b6005811015613227578151845260209384019390910190600101613208565b50505050565b61324282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613419604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526135f1610500830185613205565b6135ff6105a083018461322d565b949350505050565b5f60208284031215613617575f5ffd5b81518015158114612617575f5ffd5b5f6001600160401b0382166001600160401b038103613647576136476130a6565b60010192915050565b5f61261782846131b956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5296    /// ```
5297    #[rustfmt::skip]
5298    #[allow(clippy::all)]
5299    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5300        b"`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a(\xE0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a(\xF9V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)\x10V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+'V[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a-\xE9V[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+'V[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+'V[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.0V[a\x0B\x84V[a\x02Ka\x04\xDD6`\x04a.IV[a\x0B\x98V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xB7V[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xD2V[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0C@V[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/LV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CQV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a(\xF9V[a\x0CvV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\x90V[a\r\xA1V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.0V[a\x0E\x10V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xB8V[a\x0E\x99V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0\rV[a\x0F\xA8V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0QV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\x90V[a\x12\xCDV[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\x86V[a\x14\x1EV[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a(\xE0V[a\x15vV[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&GV[a\t\ta\x16\x10V[\x90P\x90V[a\t\x16a\x15\xB5V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xA1V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xBAV[a\t\xEB\x91\x90a0\xEDV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a0\xEDV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1\x1AV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a0\xEDV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a6|_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xCBWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xE9W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x0B#\x92\x91\x81\x04\x82\x16\x91\x16a\r\xA1V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x0B\x8Ca\x15\xB5V[a\x0B\x95\x81a\x0E\x10V[PV[a\x0B\xA0a\x1C@V[a\x0B\xA9\x82a\x1C\xE4V[a\x0B\xB3\x82\x82a\x1D%V[PPV[_a\x0B\xC0a\x1D\xE6V[P_Q` a6\\_9_Q\x90_R\x90V[a\x0B\xDAa\x15\xB5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C%W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0CHa\x15\xB5V[a\x0C>_a\x1E/V[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xA1V[`\t\x80T_\x91\x82\x91\x90a\x0C\x8A`\x01\x83a19V[\x81T\x81\x10a\x0C\x9AWa\x0C\x9Aa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xD9W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\r\x9AW\x84`\t\x82\x81T\x81\x10a\r\tWa\r\ta1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\x92W`\t\x81\x81T\x81\x10a\rBWa\rBa1LV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\reWa\rea1LV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0C\xEDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xB9WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP`\x01a\n\x8FV[a\r\xDB\x82\x84a0\xEDV[`\x01`\x01`@\x1B\x03\x16_\x03a\r\xFBWa\r\xF4\x82\x84a1`V[\x90Pa\n\x8FV[a\x0E\x05\x82\x84a1`V[a\r\xF4\x90`\x01a0\xBAV[a\x0E\x18a\x15\xB5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0E7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0EsW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a6|_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xCAWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xE5WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xF3WP\x80\x15[\x15a\x0F\x11W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0F;W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0FD\x86a\x1E\x9FV[a\x0FLa\x1E\xB0V[a\x0FW\x89\x89\x89a\x1E\xB8V[\x83\x15a\x0F\x9DW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0F\xCDWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0F\xEBW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x10$WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10BW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10O\x84`@\x01Qa\x1F\xE4V[a\x10\\\x83` \x01Qa\x1F\xE4V[a\x10i\x83`@\x01Qa\x1F\xE4V[a\x10v\x83``\x01Qa\x1F\xE4V[_a\x10\x7Fa\x0CQV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\x9F\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xA1V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xE3Wa\x10\xC5\x86` \x01Qa\n\0V[\x15a\x10\xE3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x11\x8FW`\x02a\x11\x06\x83\x83a1\x1AV[`\x01`\x01`@\x1B\x03\x16\x10a\x11-W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x118\x82`\x01a0\xBAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11qWP`\x06Ta\x11o\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\x8FW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\x9B\x86\x86\x86\x86a %V[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x11\xF8WPa\x11\xF8\x86` \x01Qa\t\x9EV[\x15a\x12bW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x12F\x82`\x01a0\xBAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12mCB\x88a\"OV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x12\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a6|_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13\x03WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13!W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x13iW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\xB2\x83\x85a\r\xA1V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14/WP\x80\x15[\x80a\x14yWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14]Wa\x14]a1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x97W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xA5`\x01\x85a19V[\x90P[\x81a\x15AW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15AW\x86`\t\x82\x81T\x81\x10a\x14\xDAWa\x14\xDAa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15/W`\x01\x91P`\t\x81\x81T\x81\x10a\x15\x0FWa\x15\x0Fa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15AV[\x80a\x159\x81a1\x8DV[\x91PPa\x14\xA8V[\x81a\x15_W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15j\x84\x89a19V[\x11\x97\x96PPPPPPPV[a\x15~a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x95\x81a\x1E/V[3a\x15\xE7\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C>W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xA3V[a\x16\x18a&GV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xC6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xBA_Q` a6\\_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\xECa\x15\xB5V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x7FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D|\x91\x81\x01\x90a1\xA2V[`\x01[a\x1D\xA7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\\_9_Q\x90_R\x81\x14a\x1D\xD7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xA3V[a\x1D\xE1\x83\x83a$8V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0C>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1E\xA7a$\x8DV[a\x0B\x95\x81a$\xC3V[a\x0C>a$\x8DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\xDCWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\xE9WP` \x82\x01Q\x15[\x80a\x1E\xF6WP`@\x82\x01Q\x15[\x80a\x1F\x03WP``\x82\x01Q\x15[\x80a\x1F\rWP\x81Q\x15[\x80a\x1F\x1FWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1F3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1FQW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x0B\xB3W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a .a\x08\xF9V[\x90Pa 8a(\xACV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a \x90WPa \x90\x87` \x01Qa\t\x9EV[\x15a \xD9W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa!\x14V[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra!e\x91\x84\x90\x89\x90` \x01a1\xD0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!\xA9\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a1\xF2V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a!\xE9\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a3\xE7V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\"\x04W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"(\x91\x90a6\x07V[a\"EW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"\xC4WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\x8FWa\"\x8Fa1LV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"\xB9\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1\x1AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#WW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xF1Wa\"\xF1a1LV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a#1\x83a6&V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a$A\x82a$\xCBV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a$\x85Wa\x1D\xE1\x82\x82a%.V[a\x0B\xB3a%\xA0V[_Q` a6|_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C>W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15~a$\x8DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\\_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa%J\x91\x90a6PV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\x82W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\x87V[``\x91P[P\x91P\x91Pa%\x97\x85\x83\x83a%\xBFV[\x95\x94PPPPPV[4\x15a\x0C>W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xD4Wa%\xCF\x82a&\x1EV[a&\x17V[\x81Q\x15\x80\x15a%\xEBWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\x14W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xA3V[P\x80[\x93\x92PPPV[\x80Q\x15a&.W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a&z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a(\xF0W__\xFD[a&\x17\x82a(\xCAV[_` \x82\x84\x03\x12\x15a)\tW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)B`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+7W__\xFD[a&\x17\x82a+\x11V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+wWa+wa+@V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xA5Wa+\xA5a+@V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xBDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xDFWa+\xDFa+@V[`@R\x90P\x80a+\xEE\x83a+\x11V[\x81Ra+\xFC` \x84\x01a+\x11V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,\"W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,DWa,Da+@V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,oW__\xFD[a,wa+TV[\x90Pa,\x83\x83\x83a,\x12V[\x81Ra,\x92\x83`@\x84\x01a,\x12V[` \x82\x01Ra,\xA4\x83`\x80\x84\x01a,\x12V[`@\x82\x01Ra,\xB6\x83`\xC0\x84\x01a,\x12V[``\x82\x01Ra,\xC9\x83a\x01\0\x84\x01a,\x12V[`\x80\x82\x01Ra,\xDC\x83a\x01@\x84\x01a,\x12V[`\xA0\x82\x01Ra,\xEF\x83a\x01\x80\x84\x01a,\x12V[`\xC0\x82\x01Ra-\x02\x83a\x01\xC0\x84\x01a,\x12V[`\xE0\x82\x01Ra-\x15\x83a\x02\0\x84\x01a,\x12V[a\x01\0\x82\x01Ra-)\x83a\x02@\x84\x01a,\x12V[a\x01 \x82\x01Ra-=\x83a\x02\x80\x84\x01a,\x12V[a\x01@\x82\x01Ra-Q\x83a\x02\xC0\x84\x01a,\x12V[a\x01`\x82\x01Ra-e\x83a\x03\0\x84\x01a,\x12V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a-\xFBW__\xFD[a.\x05\x84\x84a+\xADV[\x91Pa.\x14\x84``\x85\x01a,^V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.@W__\xFD[a&\x17\x82a.\x1DV[__`@\x83\x85\x03\x12\x15a.ZW__\xFD[a.c\x83a(\xCAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.}W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\x8DW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xA6Wa.\xA6a+@V[a.\xB9`\x1F\x82\x01`\x1F\x19\x16` \x01a+}V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xCDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a.\xFCW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x1EWa/\x1Ea+@V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/_W__\xFD[a/i\x85\x85a+\xADV[\x92Pa/x\x85``\x86\x01a.\xECV[\x91Pa/\x87\x85`\xE0\x86\x01a,^V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xA1W__\xFD[a/\xAA\x83a+\x11V[\x91Pa.\x14` \x84\x01a+\x11V[____a\x01 \x85\x87\x03\x12\x15a/\xCCW__\xFD[a/\xD6\x86\x86a+\xADV[\x93Pa/\xE5\x86``\x87\x01a.\xECV[\x92Pa/\xF3`\xE0\x86\x01a.\x1DV[\x91Pa0\x02a\x01\0\x86\x01a(\xCAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0!W__\xFD[a0+\x86\x86a+\xADV[\x93Pa0:\x86``\x87\x01a.\xECV[\x92P`\xE0\x85\x015\x91Pa0\x02\x86a\x01\0\x87\x01a,^V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\x97W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xA6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x05Wa1\x05a0\xD9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xA6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xA6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1xWa1xa0\xD9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\x9BWa1\x9Ba0\xA6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xB2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a1\xE4a1\xDE\x83\x87a1\xB9V[\x85a1\xB9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2\0Wa2\0a0\xD9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2'W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2\x08V[PPPPV[a2B\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa4\x19`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra5\xF1a\x05\0\x83\x01\x85a2\x05V[a5\xFFa\x05\xA0\x83\x01\x84a2-V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a6\x17W__\xFD[\x81Q\x80\x15\x15\x81\x14a&\x17W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6GWa6Ga0\xA6V[`\x01\x01\x92\x91PPV[_a&\x17\x82\x84a1\xB9V\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5301    );
5302    #[derive(serde::Serialize, serde::Deserialize)]
5303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5304    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5305```solidity
5306error AddressEmptyCode(address target);
5307```*/
5308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5309    #[derive(Clone)]
5310    pub struct AddressEmptyCode {
5311        #[allow(missing_docs)]
5312        pub target: alloy::sol_types::private::Address,
5313    }
5314    #[allow(
5315        non_camel_case_types,
5316        non_snake_case,
5317        clippy::pub_underscore_fields,
5318        clippy::style
5319    )]
5320    const _: () = {
5321        use alloy::sol_types as alloy_sol_types;
5322        #[doc(hidden)]
5323        #[allow(dead_code)]
5324        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5325        #[doc(hidden)]
5326        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5327        #[cfg(test)]
5328        #[allow(dead_code, unreachable_patterns)]
5329        fn _type_assertion(
5330            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5331        ) {
5332            match _t {
5333                alloy_sol_types::private::AssertTypeEq::<
5334                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5335                >(_) => {}
5336            }
5337        }
5338        #[automatically_derived]
5339        #[doc(hidden)]
5340        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5341            fn from(value: AddressEmptyCode) -> Self {
5342                (value.target,)
5343            }
5344        }
5345        #[automatically_derived]
5346        #[doc(hidden)]
5347        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5348            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5349                Self { target: tuple.0 }
5350            }
5351        }
5352        #[automatically_derived]
5353        impl alloy_sol_types::SolError for AddressEmptyCode {
5354            type Parameters<'a> = UnderlyingSolTuple<'a>;
5355            type Token<'a> = <Self::Parameters<
5356                'a,
5357            > as alloy_sol_types::SolType>::Token<'a>;
5358            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5359            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5360            #[inline]
5361            fn new<'a>(
5362                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5363            ) -> Self {
5364                tuple.into()
5365            }
5366            #[inline]
5367            fn tokenize(&self) -> Self::Token<'_> {
5368                (
5369                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5370                        &self.target,
5371                    ),
5372                )
5373            }
5374            #[inline]
5375            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5376                <Self::Parameters<
5377                    '_,
5378                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5379                    .map(Self::new)
5380            }
5381        }
5382    };
5383    #[derive(serde::Serialize, serde::Deserialize)]
5384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5385    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5386```solidity
5387error DeprecatedApi();
5388```*/
5389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5390    #[derive(Clone)]
5391    pub struct DeprecatedApi;
5392    #[allow(
5393        non_camel_case_types,
5394        non_snake_case,
5395        clippy::pub_underscore_fields,
5396        clippy::style
5397    )]
5398    const _: () = {
5399        use alloy::sol_types as alloy_sol_types;
5400        #[doc(hidden)]
5401        #[allow(dead_code)]
5402        type UnderlyingSolTuple<'a> = ();
5403        #[doc(hidden)]
5404        type UnderlyingRustTuple<'a> = ();
5405        #[cfg(test)]
5406        #[allow(dead_code, unreachable_patterns)]
5407        fn _type_assertion(
5408            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5409        ) {
5410            match _t {
5411                alloy_sol_types::private::AssertTypeEq::<
5412                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5413                >(_) => {}
5414            }
5415        }
5416        #[automatically_derived]
5417        #[doc(hidden)]
5418        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5419            fn from(value: DeprecatedApi) -> Self {
5420                ()
5421            }
5422        }
5423        #[automatically_derived]
5424        #[doc(hidden)]
5425        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5426            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5427                Self
5428            }
5429        }
5430        #[automatically_derived]
5431        impl alloy_sol_types::SolError for DeprecatedApi {
5432            type Parameters<'a> = UnderlyingSolTuple<'a>;
5433            type Token<'a> = <Self::Parameters<
5434                'a,
5435            > as alloy_sol_types::SolType>::Token<'a>;
5436            const SIGNATURE: &'static str = "DeprecatedApi()";
5437            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5438            #[inline]
5439            fn new<'a>(
5440                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5441            ) -> Self {
5442                tuple.into()
5443            }
5444            #[inline]
5445            fn tokenize(&self) -> Self::Token<'_> {
5446                ()
5447            }
5448            #[inline]
5449            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5450                <Self::Parameters<
5451                    '_,
5452                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5453                    .map(Self::new)
5454            }
5455        }
5456    };
5457    #[derive(serde::Serialize, serde::Deserialize)]
5458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5459    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5460```solidity
5461error ERC1967InvalidImplementation(address implementation);
5462```*/
5463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5464    #[derive(Clone)]
5465    pub struct ERC1967InvalidImplementation {
5466        #[allow(missing_docs)]
5467        pub implementation: alloy::sol_types::private::Address,
5468    }
5469    #[allow(
5470        non_camel_case_types,
5471        non_snake_case,
5472        clippy::pub_underscore_fields,
5473        clippy::style
5474    )]
5475    const _: () = {
5476        use alloy::sol_types as alloy_sol_types;
5477        #[doc(hidden)]
5478        #[allow(dead_code)]
5479        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5480        #[doc(hidden)]
5481        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5482        #[cfg(test)]
5483        #[allow(dead_code, unreachable_patterns)]
5484        fn _type_assertion(
5485            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5486        ) {
5487            match _t {
5488                alloy_sol_types::private::AssertTypeEq::<
5489                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5490                >(_) => {}
5491            }
5492        }
5493        #[automatically_derived]
5494        #[doc(hidden)]
5495        impl ::core::convert::From<ERC1967InvalidImplementation>
5496        for UnderlyingRustTuple<'_> {
5497            fn from(value: ERC1967InvalidImplementation) -> Self {
5498                (value.implementation,)
5499            }
5500        }
5501        #[automatically_derived]
5502        #[doc(hidden)]
5503        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5504        for ERC1967InvalidImplementation {
5505            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5506                Self { implementation: tuple.0 }
5507            }
5508        }
5509        #[automatically_derived]
5510        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5511            type Parameters<'a> = UnderlyingSolTuple<'a>;
5512            type Token<'a> = <Self::Parameters<
5513                'a,
5514            > as alloy_sol_types::SolType>::Token<'a>;
5515            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5516            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5517            #[inline]
5518            fn new<'a>(
5519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5520            ) -> Self {
5521                tuple.into()
5522            }
5523            #[inline]
5524            fn tokenize(&self) -> Self::Token<'_> {
5525                (
5526                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5527                        &self.implementation,
5528                    ),
5529                )
5530            }
5531            #[inline]
5532            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5533                <Self::Parameters<
5534                    '_,
5535                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5536                    .map(Self::new)
5537            }
5538        }
5539    };
5540    #[derive(serde::Serialize, serde::Deserialize)]
5541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5542    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5543```solidity
5544error ERC1967NonPayable();
5545```*/
5546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5547    #[derive(Clone)]
5548    pub struct ERC1967NonPayable;
5549    #[allow(
5550        non_camel_case_types,
5551        non_snake_case,
5552        clippy::pub_underscore_fields,
5553        clippy::style
5554    )]
5555    const _: () = {
5556        use alloy::sol_types as alloy_sol_types;
5557        #[doc(hidden)]
5558        #[allow(dead_code)]
5559        type UnderlyingSolTuple<'a> = ();
5560        #[doc(hidden)]
5561        type UnderlyingRustTuple<'a> = ();
5562        #[cfg(test)]
5563        #[allow(dead_code, unreachable_patterns)]
5564        fn _type_assertion(
5565            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5566        ) {
5567            match _t {
5568                alloy_sol_types::private::AssertTypeEq::<
5569                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5570                >(_) => {}
5571            }
5572        }
5573        #[automatically_derived]
5574        #[doc(hidden)]
5575        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5576            fn from(value: ERC1967NonPayable) -> Self {
5577                ()
5578            }
5579        }
5580        #[automatically_derived]
5581        #[doc(hidden)]
5582        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5583            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5584                Self
5585            }
5586        }
5587        #[automatically_derived]
5588        impl alloy_sol_types::SolError for ERC1967NonPayable {
5589            type Parameters<'a> = UnderlyingSolTuple<'a>;
5590            type Token<'a> = <Self::Parameters<
5591                'a,
5592            > as alloy_sol_types::SolType>::Token<'a>;
5593            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5594            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5595            #[inline]
5596            fn new<'a>(
5597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5598            ) -> Self {
5599                tuple.into()
5600            }
5601            #[inline]
5602            fn tokenize(&self) -> Self::Token<'_> {
5603                ()
5604            }
5605            #[inline]
5606            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5607                <Self::Parameters<
5608                    '_,
5609                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5610                    .map(Self::new)
5611            }
5612        }
5613    };
5614    #[derive(serde::Serialize, serde::Deserialize)]
5615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5616    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5617```solidity
5618error FailedInnerCall();
5619```*/
5620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5621    #[derive(Clone)]
5622    pub struct FailedInnerCall;
5623    #[allow(
5624        non_camel_case_types,
5625        non_snake_case,
5626        clippy::pub_underscore_fields,
5627        clippy::style
5628    )]
5629    const _: () = {
5630        use alloy::sol_types as alloy_sol_types;
5631        #[doc(hidden)]
5632        #[allow(dead_code)]
5633        type UnderlyingSolTuple<'a> = ();
5634        #[doc(hidden)]
5635        type UnderlyingRustTuple<'a> = ();
5636        #[cfg(test)]
5637        #[allow(dead_code, unreachable_patterns)]
5638        fn _type_assertion(
5639            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5640        ) {
5641            match _t {
5642                alloy_sol_types::private::AssertTypeEq::<
5643                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5644                >(_) => {}
5645            }
5646        }
5647        #[automatically_derived]
5648        #[doc(hidden)]
5649        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5650            fn from(value: FailedInnerCall) -> Self {
5651                ()
5652            }
5653        }
5654        #[automatically_derived]
5655        #[doc(hidden)]
5656        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5657            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5658                Self
5659            }
5660        }
5661        #[automatically_derived]
5662        impl alloy_sol_types::SolError for FailedInnerCall {
5663            type Parameters<'a> = UnderlyingSolTuple<'a>;
5664            type Token<'a> = <Self::Parameters<
5665                'a,
5666            > as alloy_sol_types::SolType>::Token<'a>;
5667            const SIGNATURE: &'static str = "FailedInnerCall()";
5668            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5669            #[inline]
5670            fn new<'a>(
5671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5672            ) -> Self {
5673                tuple.into()
5674            }
5675            #[inline]
5676            fn tokenize(&self) -> Self::Token<'_> {
5677                ()
5678            }
5679            #[inline]
5680            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5681                <Self::Parameters<
5682                    '_,
5683                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5684                    .map(Self::new)
5685            }
5686        }
5687    };
5688    #[derive(serde::Serialize, serde::Deserialize)]
5689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5690    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5691```solidity
5692error InsufficientSnapshotHistory();
5693```*/
5694    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5695    #[derive(Clone)]
5696    pub struct InsufficientSnapshotHistory;
5697    #[allow(
5698        non_camel_case_types,
5699        non_snake_case,
5700        clippy::pub_underscore_fields,
5701        clippy::style
5702    )]
5703    const _: () = {
5704        use alloy::sol_types as alloy_sol_types;
5705        #[doc(hidden)]
5706        #[allow(dead_code)]
5707        type UnderlyingSolTuple<'a> = ();
5708        #[doc(hidden)]
5709        type UnderlyingRustTuple<'a> = ();
5710        #[cfg(test)]
5711        #[allow(dead_code, unreachable_patterns)]
5712        fn _type_assertion(
5713            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5714        ) {
5715            match _t {
5716                alloy_sol_types::private::AssertTypeEq::<
5717                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5718                >(_) => {}
5719            }
5720        }
5721        #[automatically_derived]
5722        #[doc(hidden)]
5723        impl ::core::convert::From<InsufficientSnapshotHistory>
5724        for UnderlyingRustTuple<'_> {
5725            fn from(value: InsufficientSnapshotHistory) -> Self {
5726                ()
5727            }
5728        }
5729        #[automatically_derived]
5730        #[doc(hidden)]
5731        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5732        for InsufficientSnapshotHistory {
5733            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5734                Self
5735            }
5736        }
5737        #[automatically_derived]
5738        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5739            type Parameters<'a> = UnderlyingSolTuple<'a>;
5740            type Token<'a> = <Self::Parameters<
5741                'a,
5742            > as alloy_sol_types::SolType>::Token<'a>;
5743            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5744            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5745            #[inline]
5746            fn new<'a>(
5747                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5748            ) -> Self {
5749                tuple.into()
5750            }
5751            #[inline]
5752            fn tokenize(&self) -> Self::Token<'_> {
5753                ()
5754            }
5755            #[inline]
5756            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5757                <Self::Parameters<
5758                    '_,
5759                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5760                    .map(Self::new)
5761            }
5762        }
5763    };
5764    #[derive(serde::Serialize, serde::Deserialize)]
5765    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5766    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5767```solidity
5768error InvalidAddress();
5769```*/
5770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5771    #[derive(Clone)]
5772    pub struct InvalidAddress;
5773    #[allow(
5774        non_camel_case_types,
5775        non_snake_case,
5776        clippy::pub_underscore_fields,
5777        clippy::style
5778    )]
5779    const _: () = {
5780        use alloy::sol_types as alloy_sol_types;
5781        #[doc(hidden)]
5782        #[allow(dead_code)]
5783        type UnderlyingSolTuple<'a> = ();
5784        #[doc(hidden)]
5785        type UnderlyingRustTuple<'a> = ();
5786        #[cfg(test)]
5787        #[allow(dead_code, unreachable_patterns)]
5788        fn _type_assertion(
5789            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5790        ) {
5791            match _t {
5792                alloy_sol_types::private::AssertTypeEq::<
5793                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5794                >(_) => {}
5795            }
5796        }
5797        #[automatically_derived]
5798        #[doc(hidden)]
5799        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5800            fn from(value: InvalidAddress) -> Self {
5801                ()
5802            }
5803        }
5804        #[automatically_derived]
5805        #[doc(hidden)]
5806        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5807            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5808                Self
5809            }
5810        }
5811        #[automatically_derived]
5812        impl alloy_sol_types::SolError for InvalidAddress {
5813            type Parameters<'a> = UnderlyingSolTuple<'a>;
5814            type Token<'a> = <Self::Parameters<
5815                'a,
5816            > as alloy_sol_types::SolType>::Token<'a>;
5817            const SIGNATURE: &'static str = "InvalidAddress()";
5818            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5819            #[inline]
5820            fn new<'a>(
5821                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5822            ) -> Self {
5823                tuple.into()
5824            }
5825            #[inline]
5826            fn tokenize(&self) -> Self::Token<'_> {
5827                ()
5828            }
5829            #[inline]
5830            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5831                <Self::Parameters<
5832                    '_,
5833                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5834                    .map(Self::new)
5835            }
5836        }
5837    };
5838    #[derive(serde::Serialize, serde::Deserialize)]
5839    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5840    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5841```solidity
5842error InvalidArgs();
5843```*/
5844    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5845    #[derive(Clone)]
5846    pub struct InvalidArgs;
5847    #[allow(
5848        non_camel_case_types,
5849        non_snake_case,
5850        clippy::pub_underscore_fields,
5851        clippy::style
5852    )]
5853    const _: () = {
5854        use alloy::sol_types as alloy_sol_types;
5855        #[doc(hidden)]
5856        #[allow(dead_code)]
5857        type UnderlyingSolTuple<'a> = ();
5858        #[doc(hidden)]
5859        type UnderlyingRustTuple<'a> = ();
5860        #[cfg(test)]
5861        #[allow(dead_code, unreachable_patterns)]
5862        fn _type_assertion(
5863            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5864        ) {
5865            match _t {
5866                alloy_sol_types::private::AssertTypeEq::<
5867                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5868                >(_) => {}
5869            }
5870        }
5871        #[automatically_derived]
5872        #[doc(hidden)]
5873        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5874            fn from(value: InvalidArgs) -> Self {
5875                ()
5876            }
5877        }
5878        #[automatically_derived]
5879        #[doc(hidden)]
5880        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5881            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5882                Self
5883            }
5884        }
5885        #[automatically_derived]
5886        impl alloy_sol_types::SolError for InvalidArgs {
5887            type Parameters<'a> = UnderlyingSolTuple<'a>;
5888            type Token<'a> = <Self::Parameters<
5889                'a,
5890            > as alloy_sol_types::SolType>::Token<'a>;
5891            const SIGNATURE: &'static str = "InvalidArgs()";
5892            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5893            #[inline]
5894            fn new<'a>(
5895                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5896            ) -> Self {
5897                tuple.into()
5898            }
5899            #[inline]
5900            fn tokenize(&self) -> Self::Token<'_> {
5901                ()
5902            }
5903            #[inline]
5904            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5905                <Self::Parameters<
5906                    '_,
5907                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5908                    .map(Self::new)
5909            }
5910        }
5911    };
5912    #[derive(serde::Serialize, serde::Deserialize)]
5913    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5914    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5915```solidity
5916error InvalidHotShotBlockForCommitmentCheck();
5917```*/
5918    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5919    #[derive(Clone)]
5920    pub struct InvalidHotShotBlockForCommitmentCheck;
5921    #[allow(
5922        non_camel_case_types,
5923        non_snake_case,
5924        clippy::pub_underscore_fields,
5925        clippy::style
5926    )]
5927    const _: () = {
5928        use alloy::sol_types as alloy_sol_types;
5929        #[doc(hidden)]
5930        #[allow(dead_code)]
5931        type UnderlyingSolTuple<'a> = ();
5932        #[doc(hidden)]
5933        type UnderlyingRustTuple<'a> = ();
5934        #[cfg(test)]
5935        #[allow(dead_code, unreachable_patterns)]
5936        fn _type_assertion(
5937            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5938        ) {
5939            match _t {
5940                alloy_sol_types::private::AssertTypeEq::<
5941                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5942                >(_) => {}
5943            }
5944        }
5945        #[automatically_derived]
5946        #[doc(hidden)]
5947        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5948        for UnderlyingRustTuple<'_> {
5949            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5950                ()
5951            }
5952        }
5953        #[automatically_derived]
5954        #[doc(hidden)]
5955        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5956        for InvalidHotShotBlockForCommitmentCheck {
5957            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5958                Self
5959            }
5960        }
5961        #[automatically_derived]
5962        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5963            type Parameters<'a> = UnderlyingSolTuple<'a>;
5964            type Token<'a> = <Self::Parameters<
5965                'a,
5966            > as alloy_sol_types::SolType>::Token<'a>;
5967            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5968            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5969            #[inline]
5970            fn new<'a>(
5971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5972            ) -> Self {
5973                tuple.into()
5974            }
5975            #[inline]
5976            fn tokenize(&self) -> Self::Token<'_> {
5977                ()
5978            }
5979            #[inline]
5980            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5981                <Self::Parameters<
5982                    '_,
5983                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5984                    .map(Self::new)
5985            }
5986        }
5987    };
5988    #[derive(serde::Serialize, serde::Deserialize)]
5989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5990    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5991```solidity
5992error InvalidInitialization();
5993```*/
5994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5995    #[derive(Clone)]
5996    pub struct InvalidInitialization;
5997    #[allow(
5998        non_camel_case_types,
5999        non_snake_case,
6000        clippy::pub_underscore_fields,
6001        clippy::style
6002    )]
6003    const _: () = {
6004        use alloy::sol_types as alloy_sol_types;
6005        #[doc(hidden)]
6006        #[allow(dead_code)]
6007        type UnderlyingSolTuple<'a> = ();
6008        #[doc(hidden)]
6009        type UnderlyingRustTuple<'a> = ();
6010        #[cfg(test)]
6011        #[allow(dead_code, unreachable_patterns)]
6012        fn _type_assertion(
6013            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6014        ) {
6015            match _t {
6016                alloy_sol_types::private::AssertTypeEq::<
6017                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6018                >(_) => {}
6019            }
6020        }
6021        #[automatically_derived]
6022        #[doc(hidden)]
6023        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6024            fn from(value: InvalidInitialization) -> Self {
6025                ()
6026            }
6027        }
6028        #[automatically_derived]
6029        #[doc(hidden)]
6030        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6031            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6032                Self
6033            }
6034        }
6035        #[automatically_derived]
6036        impl alloy_sol_types::SolError for InvalidInitialization {
6037            type Parameters<'a> = UnderlyingSolTuple<'a>;
6038            type Token<'a> = <Self::Parameters<
6039                'a,
6040            > as alloy_sol_types::SolType>::Token<'a>;
6041            const SIGNATURE: &'static str = "InvalidInitialization()";
6042            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6043            #[inline]
6044            fn new<'a>(
6045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6046            ) -> Self {
6047                tuple.into()
6048            }
6049            #[inline]
6050            fn tokenize(&self) -> Self::Token<'_> {
6051                ()
6052            }
6053            #[inline]
6054            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6055                <Self::Parameters<
6056                    '_,
6057                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6058                    .map(Self::new)
6059            }
6060        }
6061    };
6062    #[derive(serde::Serialize, serde::Deserialize)]
6063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6064    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6065```solidity
6066error InvalidMaxStateHistory();
6067```*/
6068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6069    #[derive(Clone)]
6070    pub struct InvalidMaxStateHistory;
6071    #[allow(
6072        non_camel_case_types,
6073        non_snake_case,
6074        clippy::pub_underscore_fields,
6075        clippy::style
6076    )]
6077    const _: () = {
6078        use alloy::sol_types as alloy_sol_types;
6079        #[doc(hidden)]
6080        #[allow(dead_code)]
6081        type UnderlyingSolTuple<'a> = ();
6082        #[doc(hidden)]
6083        type UnderlyingRustTuple<'a> = ();
6084        #[cfg(test)]
6085        #[allow(dead_code, unreachable_patterns)]
6086        fn _type_assertion(
6087            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6088        ) {
6089            match _t {
6090                alloy_sol_types::private::AssertTypeEq::<
6091                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6092                >(_) => {}
6093            }
6094        }
6095        #[automatically_derived]
6096        #[doc(hidden)]
6097        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6098            fn from(value: InvalidMaxStateHistory) -> Self {
6099                ()
6100            }
6101        }
6102        #[automatically_derived]
6103        #[doc(hidden)]
6104        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6105            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6106                Self
6107            }
6108        }
6109        #[automatically_derived]
6110        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6111            type Parameters<'a> = UnderlyingSolTuple<'a>;
6112            type Token<'a> = <Self::Parameters<
6113                'a,
6114            > as alloy_sol_types::SolType>::Token<'a>;
6115            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6116            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6117            #[inline]
6118            fn new<'a>(
6119                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6120            ) -> Self {
6121                tuple.into()
6122            }
6123            #[inline]
6124            fn tokenize(&self) -> Self::Token<'_> {
6125                ()
6126            }
6127            #[inline]
6128            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6129                <Self::Parameters<
6130                    '_,
6131                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6132                    .map(Self::new)
6133            }
6134        }
6135    };
6136    #[derive(serde::Serialize, serde::Deserialize)]
6137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6138    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6139```solidity
6140error InvalidProof();
6141```*/
6142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6143    #[derive(Clone)]
6144    pub struct InvalidProof;
6145    #[allow(
6146        non_camel_case_types,
6147        non_snake_case,
6148        clippy::pub_underscore_fields,
6149        clippy::style
6150    )]
6151    const _: () = {
6152        use alloy::sol_types as alloy_sol_types;
6153        #[doc(hidden)]
6154        #[allow(dead_code)]
6155        type UnderlyingSolTuple<'a> = ();
6156        #[doc(hidden)]
6157        type UnderlyingRustTuple<'a> = ();
6158        #[cfg(test)]
6159        #[allow(dead_code, unreachable_patterns)]
6160        fn _type_assertion(
6161            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6162        ) {
6163            match _t {
6164                alloy_sol_types::private::AssertTypeEq::<
6165                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6166                >(_) => {}
6167            }
6168        }
6169        #[automatically_derived]
6170        #[doc(hidden)]
6171        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6172            fn from(value: InvalidProof) -> Self {
6173                ()
6174            }
6175        }
6176        #[automatically_derived]
6177        #[doc(hidden)]
6178        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6179            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6180                Self
6181            }
6182        }
6183        #[automatically_derived]
6184        impl alloy_sol_types::SolError for InvalidProof {
6185            type Parameters<'a> = UnderlyingSolTuple<'a>;
6186            type Token<'a> = <Self::Parameters<
6187                'a,
6188            > as alloy_sol_types::SolType>::Token<'a>;
6189            const SIGNATURE: &'static str = "InvalidProof()";
6190            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6191            #[inline]
6192            fn new<'a>(
6193                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6194            ) -> Self {
6195                tuple.into()
6196            }
6197            #[inline]
6198            fn tokenize(&self) -> Self::Token<'_> {
6199                ()
6200            }
6201            #[inline]
6202            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6203                <Self::Parameters<
6204                    '_,
6205                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6206                    .map(Self::new)
6207            }
6208        }
6209    };
6210    #[derive(serde::Serialize, serde::Deserialize)]
6211    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6212    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6213```solidity
6214error InvalidScalar();
6215```*/
6216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6217    #[derive(Clone)]
6218    pub struct InvalidScalar;
6219    #[allow(
6220        non_camel_case_types,
6221        non_snake_case,
6222        clippy::pub_underscore_fields,
6223        clippy::style
6224    )]
6225    const _: () = {
6226        use alloy::sol_types as alloy_sol_types;
6227        #[doc(hidden)]
6228        #[allow(dead_code)]
6229        type UnderlyingSolTuple<'a> = ();
6230        #[doc(hidden)]
6231        type UnderlyingRustTuple<'a> = ();
6232        #[cfg(test)]
6233        #[allow(dead_code, unreachable_patterns)]
6234        fn _type_assertion(
6235            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6236        ) {
6237            match _t {
6238                alloy_sol_types::private::AssertTypeEq::<
6239                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6240                >(_) => {}
6241            }
6242        }
6243        #[automatically_derived]
6244        #[doc(hidden)]
6245        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6246            fn from(value: InvalidScalar) -> Self {
6247                ()
6248            }
6249        }
6250        #[automatically_derived]
6251        #[doc(hidden)]
6252        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6253            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6254                Self
6255            }
6256        }
6257        #[automatically_derived]
6258        impl alloy_sol_types::SolError for InvalidScalar {
6259            type Parameters<'a> = UnderlyingSolTuple<'a>;
6260            type Token<'a> = <Self::Parameters<
6261                'a,
6262            > as alloy_sol_types::SolType>::Token<'a>;
6263            const SIGNATURE: &'static str = "InvalidScalar()";
6264            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6265            #[inline]
6266            fn new<'a>(
6267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6268            ) -> Self {
6269                tuple.into()
6270            }
6271            #[inline]
6272            fn tokenize(&self) -> Self::Token<'_> {
6273                ()
6274            }
6275            #[inline]
6276            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6277                <Self::Parameters<
6278                    '_,
6279                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6280                    .map(Self::new)
6281            }
6282        }
6283    };
6284    #[derive(serde::Serialize, serde::Deserialize)]
6285    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6286    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6287```solidity
6288error MissingEpochRootUpdate();
6289```*/
6290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6291    #[derive(Clone)]
6292    pub struct MissingEpochRootUpdate;
6293    #[allow(
6294        non_camel_case_types,
6295        non_snake_case,
6296        clippy::pub_underscore_fields,
6297        clippy::style
6298    )]
6299    const _: () = {
6300        use alloy::sol_types as alloy_sol_types;
6301        #[doc(hidden)]
6302        #[allow(dead_code)]
6303        type UnderlyingSolTuple<'a> = ();
6304        #[doc(hidden)]
6305        type UnderlyingRustTuple<'a> = ();
6306        #[cfg(test)]
6307        #[allow(dead_code, unreachable_patterns)]
6308        fn _type_assertion(
6309            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6310        ) {
6311            match _t {
6312                alloy_sol_types::private::AssertTypeEq::<
6313                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6314                >(_) => {}
6315            }
6316        }
6317        #[automatically_derived]
6318        #[doc(hidden)]
6319        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6320            fn from(value: MissingEpochRootUpdate) -> Self {
6321                ()
6322            }
6323        }
6324        #[automatically_derived]
6325        #[doc(hidden)]
6326        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6327            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6328                Self
6329            }
6330        }
6331        #[automatically_derived]
6332        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6333            type Parameters<'a> = UnderlyingSolTuple<'a>;
6334            type Token<'a> = <Self::Parameters<
6335                'a,
6336            > as alloy_sol_types::SolType>::Token<'a>;
6337            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6338            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6339            #[inline]
6340            fn new<'a>(
6341                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6342            ) -> Self {
6343                tuple.into()
6344            }
6345            #[inline]
6346            fn tokenize(&self) -> Self::Token<'_> {
6347                ()
6348            }
6349            #[inline]
6350            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6351                <Self::Parameters<
6352                    '_,
6353                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6354                    .map(Self::new)
6355            }
6356        }
6357    };
6358    #[derive(serde::Serialize, serde::Deserialize)]
6359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6360    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6361```solidity
6362error NoChangeRequired();
6363```*/
6364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6365    #[derive(Clone)]
6366    pub struct NoChangeRequired;
6367    #[allow(
6368        non_camel_case_types,
6369        non_snake_case,
6370        clippy::pub_underscore_fields,
6371        clippy::style
6372    )]
6373    const _: () = {
6374        use alloy::sol_types as alloy_sol_types;
6375        #[doc(hidden)]
6376        #[allow(dead_code)]
6377        type UnderlyingSolTuple<'a> = ();
6378        #[doc(hidden)]
6379        type UnderlyingRustTuple<'a> = ();
6380        #[cfg(test)]
6381        #[allow(dead_code, unreachable_patterns)]
6382        fn _type_assertion(
6383            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6384        ) {
6385            match _t {
6386                alloy_sol_types::private::AssertTypeEq::<
6387                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6388                >(_) => {}
6389            }
6390        }
6391        #[automatically_derived]
6392        #[doc(hidden)]
6393        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6394            fn from(value: NoChangeRequired) -> Self {
6395                ()
6396            }
6397        }
6398        #[automatically_derived]
6399        #[doc(hidden)]
6400        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6401            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6402                Self
6403            }
6404        }
6405        #[automatically_derived]
6406        impl alloy_sol_types::SolError for NoChangeRequired {
6407            type Parameters<'a> = UnderlyingSolTuple<'a>;
6408            type Token<'a> = <Self::Parameters<
6409                'a,
6410            > as alloy_sol_types::SolType>::Token<'a>;
6411            const SIGNATURE: &'static str = "NoChangeRequired()";
6412            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6413            #[inline]
6414            fn new<'a>(
6415                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6416            ) -> Self {
6417                tuple.into()
6418            }
6419            #[inline]
6420            fn tokenize(&self) -> Self::Token<'_> {
6421                ()
6422            }
6423            #[inline]
6424            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6425                <Self::Parameters<
6426                    '_,
6427                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6428                    .map(Self::new)
6429            }
6430        }
6431    };
6432    #[derive(serde::Serialize, serde::Deserialize)]
6433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6434    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6435```solidity
6436error NotInitializing();
6437```*/
6438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6439    #[derive(Clone)]
6440    pub struct NotInitializing;
6441    #[allow(
6442        non_camel_case_types,
6443        non_snake_case,
6444        clippy::pub_underscore_fields,
6445        clippy::style
6446    )]
6447    const _: () = {
6448        use alloy::sol_types as alloy_sol_types;
6449        #[doc(hidden)]
6450        #[allow(dead_code)]
6451        type UnderlyingSolTuple<'a> = ();
6452        #[doc(hidden)]
6453        type UnderlyingRustTuple<'a> = ();
6454        #[cfg(test)]
6455        #[allow(dead_code, unreachable_patterns)]
6456        fn _type_assertion(
6457            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6458        ) {
6459            match _t {
6460                alloy_sol_types::private::AssertTypeEq::<
6461                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6462                >(_) => {}
6463            }
6464        }
6465        #[automatically_derived]
6466        #[doc(hidden)]
6467        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6468            fn from(value: NotInitializing) -> Self {
6469                ()
6470            }
6471        }
6472        #[automatically_derived]
6473        #[doc(hidden)]
6474        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6475            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6476                Self
6477            }
6478        }
6479        #[automatically_derived]
6480        impl alloy_sol_types::SolError for NotInitializing {
6481            type Parameters<'a> = UnderlyingSolTuple<'a>;
6482            type Token<'a> = <Self::Parameters<
6483                'a,
6484            > as alloy_sol_types::SolType>::Token<'a>;
6485            const SIGNATURE: &'static str = "NotInitializing()";
6486            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6487            #[inline]
6488            fn new<'a>(
6489                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6490            ) -> Self {
6491                tuple.into()
6492            }
6493            #[inline]
6494            fn tokenize(&self) -> Self::Token<'_> {
6495                ()
6496            }
6497            #[inline]
6498            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6499                <Self::Parameters<
6500                    '_,
6501                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6502                    .map(Self::new)
6503            }
6504        }
6505    };
6506    #[derive(serde::Serialize, serde::Deserialize)]
6507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6508    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6509```solidity
6510error OutdatedState();
6511```*/
6512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6513    #[derive(Clone)]
6514    pub struct OutdatedState;
6515    #[allow(
6516        non_camel_case_types,
6517        non_snake_case,
6518        clippy::pub_underscore_fields,
6519        clippy::style
6520    )]
6521    const _: () = {
6522        use alloy::sol_types as alloy_sol_types;
6523        #[doc(hidden)]
6524        #[allow(dead_code)]
6525        type UnderlyingSolTuple<'a> = ();
6526        #[doc(hidden)]
6527        type UnderlyingRustTuple<'a> = ();
6528        #[cfg(test)]
6529        #[allow(dead_code, unreachable_patterns)]
6530        fn _type_assertion(
6531            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6532        ) {
6533            match _t {
6534                alloy_sol_types::private::AssertTypeEq::<
6535                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6536                >(_) => {}
6537            }
6538        }
6539        #[automatically_derived]
6540        #[doc(hidden)]
6541        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6542            fn from(value: OutdatedState) -> Self {
6543                ()
6544            }
6545        }
6546        #[automatically_derived]
6547        #[doc(hidden)]
6548        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6549            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6550                Self
6551            }
6552        }
6553        #[automatically_derived]
6554        impl alloy_sol_types::SolError for OutdatedState {
6555            type Parameters<'a> = UnderlyingSolTuple<'a>;
6556            type Token<'a> = <Self::Parameters<
6557                'a,
6558            > as alloy_sol_types::SolType>::Token<'a>;
6559            const SIGNATURE: &'static str = "OutdatedState()";
6560            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6561            #[inline]
6562            fn new<'a>(
6563                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6564            ) -> Self {
6565                tuple.into()
6566            }
6567            #[inline]
6568            fn tokenize(&self) -> Self::Token<'_> {
6569                ()
6570            }
6571            #[inline]
6572            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6573                <Self::Parameters<
6574                    '_,
6575                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6576                    .map(Self::new)
6577            }
6578        }
6579    };
6580    #[derive(serde::Serialize, serde::Deserialize)]
6581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6582    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6583```solidity
6584error OwnableInvalidOwner(address owner);
6585```*/
6586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6587    #[derive(Clone)]
6588    pub struct OwnableInvalidOwner {
6589        #[allow(missing_docs)]
6590        pub owner: alloy::sol_types::private::Address,
6591    }
6592    #[allow(
6593        non_camel_case_types,
6594        non_snake_case,
6595        clippy::pub_underscore_fields,
6596        clippy::style
6597    )]
6598    const _: () = {
6599        use alloy::sol_types as alloy_sol_types;
6600        #[doc(hidden)]
6601        #[allow(dead_code)]
6602        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6603        #[doc(hidden)]
6604        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6605        #[cfg(test)]
6606        #[allow(dead_code, unreachable_patterns)]
6607        fn _type_assertion(
6608            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6609        ) {
6610            match _t {
6611                alloy_sol_types::private::AssertTypeEq::<
6612                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6613                >(_) => {}
6614            }
6615        }
6616        #[automatically_derived]
6617        #[doc(hidden)]
6618        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6619            fn from(value: OwnableInvalidOwner) -> Self {
6620                (value.owner,)
6621            }
6622        }
6623        #[automatically_derived]
6624        #[doc(hidden)]
6625        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6626            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6627                Self { owner: tuple.0 }
6628            }
6629        }
6630        #[automatically_derived]
6631        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6632            type Parameters<'a> = UnderlyingSolTuple<'a>;
6633            type Token<'a> = <Self::Parameters<
6634                'a,
6635            > as alloy_sol_types::SolType>::Token<'a>;
6636            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6637            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6638            #[inline]
6639            fn new<'a>(
6640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6641            ) -> Self {
6642                tuple.into()
6643            }
6644            #[inline]
6645            fn tokenize(&self) -> Self::Token<'_> {
6646                (
6647                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6648                        &self.owner,
6649                    ),
6650                )
6651            }
6652            #[inline]
6653            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6654                <Self::Parameters<
6655                    '_,
6656                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6657                    .map(Self::new)
6658            }
6659        }
6660    };
6661    #[derive(serde::Serialize, serde::Deserialize)]
6662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6663    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6664```solidity
6665error OwnableUnauthorizedAccount(address account);
6666```*/
6667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6668    #[derive(Clone)]
6669    pub struct OwnableUnauthorizedAccount {
6670        #[allow(missing_docs)]
6671        pub account: alloy::sol_types::private::Address,
6672    }
6673    #[allow(
6674        non_camel_case_types,
6675        non_snake_case,
6676        clippy::pub_underscore_fields,
6677        clippy::style
6678    )]
6679    const _: () = {
6680        use alloy::sol_types as alloy_sol_types;
6681        #[doc(hidden)]
6682        #[allow(dead_code)]
6683        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6684        #[doc(hidden)]
6685        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6686        #[cfg(test)]
6687        #[allow(dead_code, unreachable_patterns)]
6688        fn _type_assertion(
6689            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6690        ) {
6691            match _t {
6692                alloy_sol_types::private::AssertTypeEq::<
6693                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6694                >(_) => {}
6695            }
6696        }
6697        #[automatically_derived]
6698        #[doc(hidden)]
6699        impl ::core::convert::From<OwnableUnauthorizedAccount>
6700        for UnderlyingRustTuple<'_> {
6701            fn from(value: OwnableUnauthorizedAccount) -> Self {
6702                (value.account,)
6703            }
6704        }
6705        #[automatically_derived]
6706        #[doc(hidden)]
6707        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6708        for OwnableUnauthorizedAccount {
6709            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6710                Self { account: tuple.0 }
6711            }
6712        }
6713        #[automatically_derived]
6714        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6715            type Parameters<'a> = UnderlyingSolTuple<'a>;
6716            type Token<'a> = <Self::Parameters<
6717                'a,
6718            > as alloy_sol_types::SolType>::Token<'a>;
6719            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6720            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6721            #[inline]
6722            fn new<'a>(
6723                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6724            ) -> Self {
6725                tuple.into()
6726            }
6727            #[inline]
6728            fn tokenize(&self) -> Self::Token<'_> {
6729                (
6730                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6731                        &self.account,
6732                    ),
6733                )
6734            }
6735            #[inline]
6736            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6737                <Self::Parameters<
6738                    '_,
6739                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6740                    .map(Self::new)
6741            }
6742        }
6743    };
6744    #[derive(serde::Serialize, serde::Deserialize)]
6745    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6746    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6747```solidity
6748error ProverNotPermissioned();
6749```*/
6750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6751    #[derive(Clone)]
6752    pub struct ProverNotPermissioned;
6753    #[allow(
6754        non_camel_case_types,
6755        non_snake_case,
6756        clippy::pub_underscore_fields,
6757        clippy::style
6758    )]
6759    const _: () = {
6760        use alloy::sol_types as alloy_sol_types;
6761        #[doc(hidden)]
6762        #[allow(dead_code)]
6763        type UnderlyingSolTuple<'a> = ();
6764        #[doc(hidden)]
6765        type UnderlyingRustTuple<'a> = ();
6766        #[cfg(test)]
6767        #[allow(dead_code, unreachable_patterns)]
6768        fn _type_assertion(
6769            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6770        ) {
6771            match _t {
6772                alloy_sol_types::private::AssertTypeEq::<
6773                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6774                >(_) => {}
6775            }
6776        }
6777        #[automatically_derived]
6778        #[doc(hidden)]
6779        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6780            fn from(value: ProverNotPermissioned) -> Self {
6781                ()
6782            }
6783        }
6784        #[automatically_derived]
6785        #[doc(hidden)]
6786        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6787            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6788                Self
6789            }
6790        }
6791        #[automatically_derived]
6792        impl alloy_sol_types::SolError for ProverNotPermissioned {
6793            type Parameters<'a> = UnderlyingSolTuple<'a>;
6794            type Token<'a> = <Self::Parameters<
6795                'a,
6796            > as alloy_sol_types::SolType>::Token<'a>;
6797            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6798            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6799            #[inline]
6800            fn new<'a>(
6801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6802            ) -> Self {
6803                tuple.into()
6804            }
6805            #[inline]
6806            fn tokenize(&self) -> Self::Token<'_> {
6807                ()
6808            }
6809            #[inline]
6810            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6811                <Self::Parameters<
6812                    '_,
6813                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6814                    .map(Self::new)
6815            }
6816        }
6817    };
6818    #[derive(serde::Serialize, serde::Deserialize)]
6819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6820    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6821```solidity
6822error UUPSUnauthorizedCallContext();
6823```*/
6824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6825    #[derive(Clone)]
6826    pub struct UUPSUnauthorizedCallContext;
6827    #[allow(
6828        non_camel_case_types,
6829        non_snake_case,
6830        clippy::pub_underscore_fields,
6831        clippy::style
6832    )]
6833    const _: () = {
6834        use alloy::sol_types as alloy_sol_types;
6835        #[doc(hidden)]
6836        #[allow(dead_code)]
6837        type UnderlyingSolTuple<'a> = ();
6838        #[doc(hidden)]
6839        type UnderlyingRustTuple<'a> = ();
6840        #[cfg(test)]
6841        #[allow(dead_code, unreachable_patterns)]
6842        fn _type_assertion(
6843            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6844        ) {
6845            match _t {
6846                alloy_sol_types::private::AssertTypeEq::<
6847                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6848                >(_) => {}
6849            }
6850        }
6851        #[automatically_derived]
6852        #[doc(hidden)]
6853        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6854        for UnderlyingRustTuple<'_> {
6855            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6856                ()
6857            }
6858        }
6859        #[automatically_derived]
6860        #[doc(hidden)]
6861        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6862        for UUPSUnauthorizedCallContext {
6863            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6864                Self
6865            }
6866        }
6867        #[automatically_derived]
6868        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6869            type Parameters<'a> = UnderlyingSolTuple<'a>;
6870            type Token<'a> = <Self::Parameters<
6871                'a,
6872            > as alloy_sol_types::SolType>::Token<'a>;
6873            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6874            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6875            #[inline]
6876            fn new<'a>(
6877                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6878            ) -> Self {
6879                tuple.into()
6880            }
6881            #[inline]
6882            fn tokenize(&self) -> Self::Token<'_> {
6883                ()
6884            }
6885            #[inline]
6886            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6887                <Self::Parameters<
6888                    '_,
6889                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6890                    .map(Self::new)
6891            }
6892        }
6893    };
6894    #[derive(serde::Serialize, serde::Deserialize)]
6895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6896    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6897```solidity
6898error UUPSUnsupportedProxiableUUID(bytes32 slot);
6899```*/
6900    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6901    #[derive(Clone)]
6902    pub struct UUPSUnsupportedProxiableUUID {
6903        #[allow(missing_docs)]
6904        pub slot: alloy::sol_types::private::FixedBytes<32>,
6905    }
6906    #[allow(
6907        non_camel_case_types,
6908        non_snake_case,
6909        clippy::pub_underscore_fields,
6910        clippy::style
6911    )]
6912    const _: () = {
6913        use alloy::sol_types as alloy_sol_types;
6914        #[doc(hidden)]
6915        #[allow(dead_code)]
6916        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6917        #[doc(hidden)]
6918        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6919        #[cfg(test)]
6920        #[allow(dead_code, unreachable_patterns)]
6921        fn _type_assertion(
6922            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6923        ) {
6924            match _t {
6925                alloy_sol_types::private::AssertTypeEq::<
6926                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6927                >(_) => {}
6928            }
6929        }
6930        #[automatically_derived]
6931        #[doc(hidden)]
6932        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6933        for UnderlyingRustTuple<'_> {
6934            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6935                (value.slot,)
6936            }
6937        }
6938        #[automatically_derived]
6939        #[doc(hidden)]
6940        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6941        for UUPSUnsupportedProxiableUUID {
6942            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6943                Self { slot: tuple.0 }
6944            }
6945        }
6946        #[automatically_derived]
6947        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6948            type Parameters<'a> = UnderlyingSolTuple<'a>;
6949            type Token<'a> = <Self::Parameters<
6950                'a,
6951            > as alloy_sol_types::SolType>::Token<'a>;
6952            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6953            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6954            #[inline]
6955            fn new<'a>(
6956                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6957            ) -> Self {
6958                tuple.into()
6959            }
6960            #[inline]
6961            fn tokenize(&self) -> Self::Token<'_> {
6962                (
6963                    <alloy::sol_types::sol_data::FixedBytes<
6964                        32,
6965                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6966                )
6967            }
6968            #[inline]
6969            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6970                <Self::Parameters<
6971                    '_,
6972                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6973                    .map(Self::new)
6974            }
6975        }
6976    };
6977    #[derive(serde::Serialize, serde::Deserialize)]
6978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6979    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6980```solidity
6981error WrongStakeTableUsed();
6982```*/
6983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6984    #[derive(Clone)]
6985    pub struct WrongStakeTableUsed;
6986    #[allow(
6987        non_camel_case_types,
6988        non_snake_case,
6989        clippy::pub_underscore_fields,
6990        clippy::style
6991    )]
6992    const _: () = {
6993        use alloy::sol_types as alloy_sol_types;
6994        #[doc(hidden)]
6995        #[allow(dead_code)]
6996        type UnderlyingSolTuple<'a> = ();
6997        #[doc(hidden)]
6998        type UnderlyingRustTuple<'a> = ();
6999        #[cfg(test)]
7000        #[allow(dead_code, unreachable_patterns)]
7001        fn _type_assertion(
7002            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7003        ) {
7004            match _t {
7005                alloy_sol_types::private::AssertTypeEq::<
7006                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7007                >(_) => {}
7008            }
7009        }
7010        #[automatically_derived]
7011        #[doc(hidden)]
7012        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7013            fn from(value: WrongStakeTableUsed) -> Self {
7014                ()
7015            }
7016        }
7017        #[automatically_derived]
7018        #[doc(hidden)]
7019        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7020            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7021                Self
7022            }
7023        }
7024        #[automatically_derived]
7025        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7026            type Parameters<'a> = UnderlyingSolTuple<'a>;
7027            type Token<'a> = <Self::Parameters<
7028                'a,
7029            > as alloy_sol_types::SolType>::Token<'a>;
7030            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7031            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7032            #[inline]
7033            fn new<'a>(
7034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7035            ) -> Self {
7036                tuple.into()
7037            }
7038            #[inline]
7039            fn tokenize(&self) -> Self::Token<'_> {
7040                ()
7041            }
7042            #[inline]
7043            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7044                <Self::Parameters<
7045                    '_,
7046                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7047                    .map(Self::new)
7048            }
7049        }
7050    };
7051    #[derive(serde::Serialize, serde::Deserialize)]
7052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7053    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7054```solidity
7055event Initialized(uint64 version);
7056```*/
7057    #[allow(
7058        non_camel_case_types,
7059        non_snake_case,
7060        clippy::pub_underscore_fields,
7061        clippy::style
7062    )]
7063    #[derive(Clone)]
7064    pub struct Initialized {
7065        #[allow(missing_docs)]
7066        pub version: u64,
7067    }
7068    #[allow(
7069        non_camel_case_types,
7070        non_snake_case,
7071        clippy::pub_underscore_fields,
7072        clippy::style
7073    )]
7074    const _: () = {
7075        use alloy::sol_types as alloy_sol_types;
7076        #[automatically_derived]
7077        impl alloy_sol_types::SolEvent for Initialized {
7078            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7079            type DataToken<'a> = <Self::DataTuple<
7080                'a,
7081            > as alloy_sol_types::SolType>::Token<'a>;
7082            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7083            const SIGNATURE: &'static str = "Initialized(uint64)";
7084            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7085                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7086                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7087                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7088            ]);
7089            const ANONYMOUS: bool = false;
7090            #[allow(unused_variables)]
7091            #[inline]
7092            fn new(
7093                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7094                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7095            ) -> Self {
7096                Self { version: data.0 }
7097            }
7098            #[inline]
7099            fn check_signature(
7100                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7101            ) -> alloy_sol_types::Result<()> {
7102                if topics.0 != Self::SIGNATURE_HASH {
7103                    return Err(
7104                        alloy_sol_types::Error::invalid_event_signature_hash(
7105                            Self::SIGNATURE,
7106                            topics.0,
7107                            Self::SIGNATURE_HASH,
7108                        ),
7109                    );
7110                }
7111                Ok(())
7112            }
7113            #[inline]
7114            fn tokenize_body(&self) -> Self::DataToken<'_> {
7115                (
7116                    <alloy::sol_types::sol_data::Uint<
7117                        64,
7118                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7119                )
7120            }
7121            #[inline]
7122            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7123                (Self::SIGNATURE_HASH.into(),)
7124            }
7125            #[inline]
7126            fn encode_topics_raw(
7127                &self,
7128                out: &mut [alloy_sol_types::abi::token::WordToken],
7129            ) -> alloy_sol_types::Result<()> {
7130                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7131                    return Err(alloy_sol_types::Error::Overrun);
7132                }
7133                out[0usize] = alloy_sol_types::abi::token::WordToken(
7134                    Self::SIGNATURE_HASH,
7135                );
7136                Ok(())
7137            }
7138        }
7139        #[automatically_derived]
7140        impl alloy_sol_types::private::IntoLogData for Initialized {
7141            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7142                From::from(self)
7143            }
7144            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7145                From::from(&self)
7146            }
7147        }
7148        #[automatically_derived]
7149        impl From<&Initialized> for alloy_sol_types::private::LogData {
7150            #[inline]
7151            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7152                alloy_sol_types::SolEvent::encode_log_data(this)
7153            }
7154        }
7155    };
7156    #[derive(serde::Serialize, serde::Deserialize)]
7157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7158    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7159```solidity
7160event NewEpoch(uint64 epoch);
7161```*/
7162    #[allow(
7163        non_camel_case_types,
7164        non_snake_case,
7165        clippy::pub_underscore_fields,
7166        clippy::style
7167    )]
7168    #[derive(Clone)]
7169    pub struct NewEpoch {
7170        #[allow(missing_docs)]
7171        pub epoch: u64,
7172    }
7173    #[allow(
7174        non_camel_case_types,
7175        non_snake_case,
7176        clippy::pub_underscore_fields,
7177        clippy::style
7178    )]
7179    const _: () = {
7180        use alloy::sol_types as alloy_sol_types;
7181        #[automatically_derived]
7182        impl alloy_sol_types::SolEvent for NewEpoch {
7183            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7184            type DataToken<'a> = <Self::DataTuple<
7185                'a,
7186            > as alloy_sol_types::SolType>::Token<'a>;
7187            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7188            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7189            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7190                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7191                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7192                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7193            ]);
7194            const ANONYMOUS: bool = false;
7195            #[allow(unused_variables)]
7196            #[inline]
7197            fn new(
7198                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7199                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7200            ) -> Self {
7201                Self { epoch: data.0 }
7202            }
7203            #[inline]
7204            fn check_signature(
7205                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7206            ) -> alloy_sol_types::Result<()> {
7207                if topics.0 != Self::SIGNATURE_HASH {
7208                    return Err(
7209                        alloy_sol_types::Error::invalid_event_signature_hash(
7210                            Self::SIGNATURE,
7211                            topics.0,
7212                            Self::SIGNATURE_HASH,
7213                        ),
7214                    );
7215                }
7216                Ok(())
7217            }
7218            #[inline]
7219            fn tokenize_body(&self) -> Self::DataToken<'_> {
7220                (
7221                    <alloy::sol_types::sol_data::Uint<
7222                        64,
7223                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7224                )
7225            }
7226            #[inline]
7227            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7228                (Self::SIGNATURE_HASH.into(),)
7229            }
7230            #[inline]
7231            fn encode_topics_raw(
7232                &self,
7233                out: &mut [alloy_sol_types::abi::token::WordToken],
7234            ) -> alloy_sol_types::Result<()> {
7235                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7236                    return Err(alloy_sol_types::Error::Overrun);
7237                }
7238                out[0usize] = alloy_sol_types::abi::token::WordToken(
7239                    Self::SIGNATURE_HASH,
7240                );
7241                Ok(())
7242            }
7243        }
7244        #[automatically_derived]
7245        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7246            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7247                From::from(self)
7248            }
7249            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7250                From::from(&self)
7251            }
7252        }
7253        #[automatically_derived]
7254        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7255            #[inline]
7256            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7257                alloy_sol_types::SolEvent::encode_log_data(this)
7258            }
7259        }
7260    };
7261    #[derive(serde::Serialize, serde::Deserialize)]
7262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7263    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7264```solidity
7265event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7266```*/
7267    #[allow(
7268        non_camel_case_types,
7269        non_snake_case,
7270        clippy::pub_underscore_fields,
7271        clippy::style
7272    )]
7273    #[derive(Clone)]
7274    pub struct NewState {
7275        #[allow(missing_docs)]
7276        pub viewNum: u64,
7277        #[allow(missing_docs)]
7278        pub blockHeight: u64,
7279        #[allow(missing_docs)]
7280        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7281    }
7282    #[allow(
7283        non_camel_case_types,
7284        non_snake_case,
7285        clippy::pub_underscore_fields,
7286        clippy::style
7287    )]
7288    const _: () = {
7289        use alloy::sol_types as alloy_sol_types;
7290        #[automatically_derived]
7291        impl alloy_sol_types::SolEvent for NewState {
7292            type DataTuple<'a> = (BN254::ScalarField,);
7293            type DataToken<'a> = <Self::DataTuple<
7294                'a,
7295            > as alloy_sol_types::SolType>::Token<'a>;
7296            type TopicList = (
7297                alloy_sol_types::sol_data::FixedBytes<32>,
7298                alloy::sol_types::sol_data::Uint<64>,
7299                alloy::sol_types::sol_data::Uint<64>,
7300            );
7301            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7302            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7303                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7304                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7305                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7306            ]);
7307            const ANONYMOUS: bool = false;
7308            #[allow(unused_variables)]
7309            #[inline]
7310            fn new(
7311                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7312                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7313            ) -> Self {
7314                Self {
7315                    viewNum: topics.1,
7316                    blockHeight: topics.2,
7317                    blockCommRoot: data.0,
7318                }
7319            }
7320            #[inline]
7321            fn check_signature(
7322                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7323            ) -> alloy_sol_types::Result<()> {
7324                if topics.0 != Self::SIGNATURE_HASH {
7325                    return Err(
7326                        alloy_sol_types::Error::invalid_event_signature_hash(
7327                            Self::SIGNATURE,
7328                            topics.0,
7329                            Self::SIGNATURE_HASH,
7330                        ),
7331                    );
7332                }
7333                Ok(())
7334            }
7335            #[inline]
7336            fn tokenize_body(&self) -> Self::DataToken<'_> {
7337                (
7338                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7339                        &self.blockCommRoot,
7340                    ),
7341                )
7342            }
7343            #[inline]
7344            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7345                (
7346                    Self::SIGNATURE_HASH.into(),
7347                    self.viewNum.clone(),
7348                    self.blockHeight.clone(),
7349                )
7350            }
7351            #[inline]
7352            fn encode_topics_raw(
7353                &self,
7354                out: &mut [alloy_sol_types::abi::token::WordToken],
7355            ) -> alloy_sol_types::Result<()> {
7356                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7357                    return Err(alloy_sol_types::Error::Overrun);
7358                }
7359                out[0usize] = alloy_sol_types::abi::token::WordToken(
7360                    Self::SIGNATURE_HASH,
7361                );
7362                out[1usize] = <alloy::sol_types::sol_data::Uint<
7363                    64,
7364                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7365                out[2usize] = <alloy::sol_types::sol_data::Uint<
7366                    64,
7367                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7368                Ok(())
7369            }
7370        }
7371        #[automatically_derived]
7372        impl alloy_sol_types::private::IntoLogData for NewState {
7373            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7374                From::from(self)
7375            }
7376            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7377                From::from(&self)
7378            }
7379        }
7380        #[automatically_derived]
7381        impl From<&NewState> for alloy_sol_types::private::LogData {
7382            #[inline]
7383            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7384                alloy_sol_types::SolEvent::encode_log_data(this)
7385            }
7386        }
7387    };
7388    #[derive(serde::Serialize, serde::Deserialize)]
7389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7390    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7391```solidity
7392event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7393```*/
7394    #[allow(
7395        non_camel_case_types,
7396        non_snake_case,
7397        clippy::pub_underscore_fields,
7398        clippy::style
7399    )]
7400    #[derive(Clone)]
7401    pub struct OwnershipTransferred {
7402        #[allow(missing_docs)]
7403        pub previousOwner: alloy::sol_types::private::Address,
7404        #[allow(missing_docs)]
7405        pub newOwner: alloy::sol_types::private::Address,
7406    }
7407    #[allow(
7408        non_camel_case_types,
7409        non_snake_case,
7410        clippy::pub_underscore_fields,
7411        clippy::style
7412    )]
7413    const _: () = {
7414        use alloy::sol_types as alloy_sol_types;
7415        #[automatically_derived]
7416        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7417            type DataTuple<'a> = ();
7418            type DataToken<'a> = <Self::DataTuple<
7419                'a,
7420            > as alloy_sol_types::SolType>::Token<'a>;
7421            type TopicList = (
7422                alloy_sol_types::sol_data::FixedBytes<32>,
7423                alloy::sol_types::sol_data::Address,
7424                alloy::sol_types::sol_data::Address,
7425            );
7426            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7427            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7428                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7429                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7430                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7431            ]);
7432            const ANONYMOUS: bool = false;
7433            #[allow(unused_variables)]
7434            #[inline]
7435            fn new(
7436                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7437                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7438            ) -> Self {
7439                Self {
7440                    previousOwner: topics.1,
7441                    newOwner: topics.2,
7442                }
7443            }
7444            #[inline]
7445            fn check_signature(
7446                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7447            ) -> alloy_sol_types::Result<()> {
7448                if topics.0 != Self::SIGNATURE_HASH {
7449                    return Err(
7450                        alloy_sol_types::Error::invalid_event_signature_hash(
7451                            Self::SIGNATURE,
7452                            topics.0,
7453                            Self::SIGNATURE_HASH,
7454                        ),
7455                    );
7456                }
7457                Ok(())
7458            }
7459            #[inline]
7460            fn tokenize_body(&self) -> Self::DataToken<'_> {
7461                ()
7462            }
7463            #[inline]
7464            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7465                (
7466                    Self::SIGNATURE_HASH.into(),
7467                    self.previousOwner.clone(),
7468                    self.newOwner.clone(),
7469                )
7470            }
7471            #[inline]
7472            fn encode_topics_raw(
7473                &self,
7474                out: &mut [alloy_sol_types::abi::token::WordToken],
7475            ) -> alloy_sol_types::Result<()> {
7476                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7477                    return Err(alloy_sol_types::Error::Overrun);
7478                }
7479                out[0usize] = alloy_sol_types::abi::token::WordToken(
7480                    Self::SIGNATURE_HASH,
7481                );
7482                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7483                    &self.previousOwner,
7484                );
7485                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7486                    &self.newOwner,
7487                );
7488                Ok(())
7489            }
7490        }
7491        #[automatically_derived]
7492        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7493            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7494                From::from(self)
7495            }
7496            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7497                From::from(&self)
7498            }
7499        }
7500        #[automatically_derived]
7501        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7502            #[inline]
7503            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7504                alloy_sol_types::SolEvent::encode_log_data(this)
7505            }
7506        }
7507    };
7508    #[derive(serde::Serialize, serde::Deserialize)]
7509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7510    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7511```solidity
7512event PermissionedProverNotRequired();
7513```*/
7514    #[allow(
7515        non_camel_case_types,
7516        non_snake_case,
7517        clippy::pub_underscore_fields,
7518        clippy::style
7519    )]
7520    #[derive(Clone)]
7521    pub struct PermissionedProverNotRequired;
7522    #[allow(
7523        non_camel_case_types,
7524        non_snake_case,
7525        clippy::pub_underscore_fields,
7526        clippy::style
7527    )]
7528    const _: () = {
7529        use alloy::sol_types as alloy_sol_types;
7530        #[automatically_derived]
7531        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7532            type DataTuple<'a> = ();
7533            type DataToken<'a> = <Self::DataTuple<
7534                'a,
7535            > as alloy_sol_types::SolType>::Token<'a>;
7536            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7537            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7538            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7539                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7540                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7541                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7542            ]);
7543            const ANONYMOUS: bool = false;
7544            #[allow(unused_variables)]
7545            #[inline]
7546            fn new(
7547                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7548                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7549            ) -> Self {
7550                Self {}
7551            }
7552            #[inline]
7553            fn check_signature(
7554                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7555            ) -> alloy_sol_types::Result<()> {
7556                if topics.0 != Self::SIGNATURE_HASH {
7557                    return Err(
7558                        alloy_sol_types::Error::invalid_event_signature_hash(
7559                            Self::SIGNATURE,
7560                            topics.0,
7561                            Self::SIGNATURE_HASH,
7562                        ),
7563                    );
7564                }
7565                Ok(())
7566            }
7567            #[inline]
7568            fn tokenize_body(&self) -> Self::DataToken<'_> {
7569                ()
7570            }
7571            #[inline]
7572            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7573                (Self::SIGNATURE_HASH.into(),)
7574            }
7575            #[inline]
7576            fn encode_topics_raw(
7577                &self,
7578                out: &mut [alloy_sol_types::abi::token::WordToken],
7579            ) -> alloy_sol_types::Result<()> {
7580                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7581                    return Err(alloy_sol_types::Error::Overrun);
7582                }
7583                out[0usize] = alloy_sol_types::abi::token::WordToken(
7584                    Self::SIGNATURE_HASH,
7585                );
7586                Ok(())
7587            }
7588        }
7589        #[automatically_derived]
7590        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7591            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7592                From::from(self)
7593            }
7594            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7595                From::from(&self)
7596            }
7597        }
7598        #[automatically_derived]
7599        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7600            #[inline]
7601            fn from(
7602                this: &PermissionedProverNotRequired,
7603            ) -> alloy_sol_types::private::LogData {
7604                alloy_sol_types::SolEvent::encode_log_data(this)
7605            }
7606        }
7607    };
7608    #[derive(serde::Serialize, serde::Deserialize)]
7609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7610    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7611```solidity
7612event PermissionedProverRequired(address permissionedProver);
7613```*/
7614    #[allow(
7615        non_camel_case_types,
7616        non_snake_case,
7617        clippy::pub_underscore_fields,
7618        clippy::style
7619    )]
7620    #[derive(Clone)]
7621    pub struct PermissionedProverRequired {
7622        #[allow(missing_docs)]
7623        pub permissionedProver: alloy::sol_types::private::Address,
7624    }
7625    #[allow(
7626        non_camel_case_types,
7627        non_snake_case,
7628        clippy::pub_underscore_fields,
7629        clippy::style
7630    )]
7631    const _: () = {
7632        use alloy::sol_types as alloy_sol_types;
7633        #[automatically_derived]
7634        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7635            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7636            type DataToken<'a> = <Self::DataTuple<
7637                'a,
7638            > as alloy_sol_types::SolType>::Token<'a>;
7639            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7640            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7641            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7642                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7643                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7644                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7645            ]);
7646            const ANONYMOUS: bool = false;
7647            #[allow(unused_variables)]
7648            #[inline]
7649            fn new(
7650                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7651                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7652            ) -> Self {
7653                Self { permissionedProver: data.0 }
7654            }
7655            #[inline]
7656            fn check_signature(
7657                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7658            ) -> alloy_sol_types::Result<()> {
7659                if topics.0 != Self::SIGNATURE_HASH {
7660                    return Err(
7661                        alloy_sol_types::Error::invalid_event_signature_hash(
7662                            Self::SIGNATURE,
7663                            topics.0,
7664                            Self::SIGNATURE_HASH,
7665                        ),
7666                    );
7667                }
7668                Ok(())
7669            }
7670            #[inline]
7671            fn tokenize_body(&self) -> Self::DataToken<'_> {
7672                (
7673                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7674                        &self.permissionedProver,
7675                    ),
7676                )
7677            }
7678            #[inline]
7679            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7680                (Self::SIGNATURE_HASH.into(),)
7681            }
7682            #[inline]
7683            fn encode_topics_raw(
7684                &self,
7685                out: &mut [alloy_sol_types::abi::token::WordToken],
7686            ) -> alloy_sol_types::Result<()> {
7687                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7688                    return Err(alloy_sol_types::Error::Overrun);
7689                }
7690                out[0usize] = alloy_sol_types::abi::token::WordToken(
7691                    Self::SIGNATURE_HASH,
7692                );
7693                Ok(())
7694            }
7695        }
7696        #[automatically_derived]
7697        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7698            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7699                From::from(self)
7700            }
7701            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7702                From::from(&self)
7703            }
7704        }
7705        #[automatically_derived]
7706        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7707            #[inline]
7708            fn from(
7709                this: &PermissionedProverRequired,
7710            ) -> alloy_sol_types::private::LogData {
7711                alloy_sol_types::SolEvent::encode_log_data(this)
7712            }
7713        }
7714    };
7715    #[derive(serde::Serialize, serde::Deserialize)]
7716    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7717    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7718```solidity
7719event Upgrade(address implementation);
7720```*/
7721    #[allow(
7722        non_camel_case_types,
7723        non_snake_case,
7724        clippy::pub_underscore_fields,
7725        clippy::style
7726    )]
7727    #[derive(Clone)]
7728    pub struct Upgrade {
7729        #[allow(missing_docs)]
7730        pub implementation: alloy::sol_types::private::Address,
7731    }
7732    #[allow(
7733        non_camel_case_types,
7734        non_snake_case,
7735        clippy::pub_underscore_fields,
7736        clippy::style
7737    )]
7738    const _: () = {
7739        use alloy::sol_types as alloy_sol_types;
7740        #[automatically_derived]
7741        impl alloy_sol_types::SolEvent for Upgrade {
7742            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7743            type DataToken<'a> = <Self::DataTuple<
7744                'a,
7745            > as alloy_sol_types::SolType>::Token<'a>;
7746            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7747            const SIGNATURE: &'static str = "Upgrade(address)";
7748            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7749                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7750                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7751                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7752            ]);
7753            const ANONYMOUS: bool = false;
7754            #[allow(unused_variables)]
7755            #[inline]
7756            fn new(
7757                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7758                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7759            ) -> Self {
7760                Self { implementation: data.0 }
7761            }
7762            #[inline]
7763            fn check_signature(
7764                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7765            ) -> alloy_sol_types::Result<()> {
7766                if topics.0 != Self::SIGNATURE_HASH {
7767                    return Err(
7768                        alloy_sol_types::Error::invalid_event_signature_hash(
7769                            Self::SIGNATURE,
7770                            topics.0,
7771                            Self::SIGNATURE_HASH,
7772                        ),
7773                    );
7774                }
7775                Ok(())
7776            }
7777            #[inline]
7778            fn tokenize_body(&self) -> Self::DataToken<'_> {
7779                (
7780                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7781                        &self.implementation,
7782                    ),
7783                )
7784            }
7785            #[inline]
7786            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7787                (Self::SIGNATURE_HASH.into(),)
7788            }
7789            #[inline]
7790            fn encode_topics_raw(
7791                &self,
7792                out: &mut [alloy_sol_types::abi::token::WordToken],
7793            ) -> alloy_sol_types::Result<()> {
7794                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7795                    return Err(alloy_sol_types::Error::Overrun);
7796                }
7797                out[0usize] = alloy_sol_types::abi::token::WordToken(
7798                    Self::SIGNATURE_HASH,
7799                );
7800                Ok(())
7801            }
7802        }
7803        #[automatically_derived]
7804        impl alloy_sol_types::private::IntoLogData for Upgrade {
7805            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7806                From::from(self)
7807            }
7808            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7809                From::from(&self)
7810            }
7811        }
7812        #[automatically_derived]
7813        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7814            #[inline]
7815            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7816                alloy_sol_types::SolEvent::encode_log_data(this)
7817            }
7818        }
7819    };
7820    #[derive(serde::Serialize, serde::Deserialize)]
7821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7822    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7823```solidity
7824event Upgraded(address indexed implementation);
7825```*/
7826    #[allow(
7827        non_camel_case_types,
7828        non_snake_case,
7829        clippy::pub_underscore_fields,
7830        clippy::style
7831    )]
7832    #[derive(Clone)]
7833    pub struct Upgraded {
7834        #[allow(missing_docs)]
7835        pub implementation: alloy::sol_types::private::Address,
7836    }
7837    #[allow(
7838        non_camel_case_types,
7839        non_snake_case,
7840        clippy::pub_underscore_fields,
7841        clippy::style
7842    )]
7843    const _: () = {
7844        use alloy::sol_types as alloy_sol_types;
7845        #[automatically_derived]
7846        impl alloy_sol_types::SolEvent for Upgraded {
7847            type DataTuple<'a> = ();
7848            type DataToken<'a> = <Self::DataTuple<
7849                'a,
7850            > as alloy_sol_types::SolType>::Token<'a>;
7851            type TopicList = (
7852                alloy_sol_types::sol_data::FixedBytes<32>,
7853                alloy::sol_types::sol_data::Address,
7854            );
7855            const SIGNATURE: &'static str = "Upgraded(address)";
7856            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7857                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7858                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7859                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7860            ]);
7861            const ANONYMOUS: bool = false;
7862            #[allow(unused_variables)]
7863            #[inline]
7864            fn new(
7865                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7866                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7867            ) -> Self {
7868                Self { implementation: topics.1 }
7869            }
7870            #[inline]
7871            fn check_signature(
7872                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7873            ) -> alloy_sol_types::Result<()> {
7874                if topics.0 != Self::SIGNATURE_HASH {
7875                    return Err(
7876                        alloy_sol_types::Error::invalid_event_signature_hash(
7877                            Self::SIGNATURE,
7878                            topics.0,
7879                            Self::SIGNATURE_HASH,
7880                        ),
7881                    );
7882                }
7883                Ok(())
7884            }
7885            #[inline]
7886            fn tokenize_body(&self) -> Self::DataToken<'_> {
7887                ()
7888            }
7889            #[inline]
7890            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7891                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7892            }
7893            #[inline]
7894            fn encode_topics_raw(
7895                &self,
7896                out: &mut [alloy_sol_types::abi::token::WordToken],
7897            ) -> alloy_sol_types::Result<()> {
7898                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7899                    return Err(alloy_sol_types::Error::Overrun);
7900                }
7901                out[0usize] = alloy_sol_types::abi::token::WordToken(
7902                    Self::SIGNATURE_HASH,
7903                );
7904                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7905                    &self.implementation,
7906                );
7907                Ok(())
7908            }
7909        }
7910        #[automatically_derived]
7911        impl alloy_sol_types::private::IntoLogData for Upgraded {
7912            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7913                From::from(self)
7914            }
7915            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7916                From::from(&self)
7917            }
7918        }
7919        #[automatically_derived]
7920        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7921            #[inline]
7922            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7923                alloy_sol_types::SolEvent::encode_log_data(this)
7924            }
7925        }
7926    };
7927    #[derive(serde::Serialize, serde::Deserialize)]
7928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7929    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7930```solidity
7931function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7932```*/
7933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7934    #[derive(Clone)]
7935    pub struct UPGRADE_INTERFACE_VERSIONCall;
7936    #[derive(serde::Serialize, serde::Deserialize)]
7937    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7938    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7939    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7940    #[derive(Clone)]
7941    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7942        #[allow(missing_docs)]
7943        pub _0: alloy::sol_types::private::String,
7944    }
7945    #[allow(
7946        non_camel_case_types,
7947        non_snake_case,
7948        clippy::pub_underscore_fields,
7949        clippy::style
7950    )]
7951    const _: () = {
7952        use alloy::sol_types as alloy_sol_types;
7953        {
7954            #[doc(hidden)]
7955            #[allow(dead_code)]
7956            type UnderlyingSolTuple<'a> = ();
7957            #[doc(hidden)]
7958            type UnderlyingRustTuple<'a> = ();
7959            #[cfg(test)]
7960            #[allow(dead_code, unreachable_patterns)]
7961            fn _type_assertion(
7962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7963            ) {
7964                match _t {
7965                    alloy_sol_types::private::AssertTypeEq::<
7966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7967                    >(_) => {}
7968                }
7969            }
7970            #[automatically_derived]
7971            #[doc(hidden)]
7972            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7973            for UnderlyingRustTuple<'_> {
7974                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7975                    ()
7976                }
7977            }
7978            #[automatically_derived]
7979            #[doc(hidden)]
7980            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7981            for UPGRADE_INTERFACE_VERSIONCall {
7982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7983                    Self
7984                }
7985            }
7986        }
7987        {
7988            #[doc(hidden)]
7989            #[allow(dead_code)]
7990            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7991            #[doc(hidden)]
7992            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7993            #[cfg(test)]
7994            #[allow(dead_code, unreachable_patterns)]
7995            fn _type_assertion(
7996                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7997            ) {
7998                match _t {
7999                    alloy_sol_types::private::AssertTypeEq::<
8000                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8001                    >(_) => {}
8002                }
8003            }
8004            #[automatically_derived]
8005            #[doc(hidden)]
8006            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8007            for UnderlyingRustTuple<'_> {
8008                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8009                    (value._0,)
8010                }
8011            }
8012            #[automatically_derived]
8013            #[doc(hidden)]
8014            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8015            for UPGRADE_INTERFACE_VERSIONReturn {
8016                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8017                    Self { _0: tuple.0 }
8018                }
8019            }
8020        }
8021        #[automatically_derived]
8022        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8023            type Parameters<'a> = ();
8024            type Token<'a> = <Self::Parameters<
8025                'a,
8026            > as alloy_sol_types::SolType>::Token<'a>;
8027            type Return = alloy::sol_types::private::String;
8028            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8029            type ReturnToken<'a> = <Self::ReturnTuple<
8030                'a,
8031            > as alloy_sol_types::SolType>::Token<'a>;
8032            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8033            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8034            #[inline]
8035            fn new<'a>(
8036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8037            ) -> Self {
8038                tuple.into()
8039            }
8040            #[inline]
8041            fn tokenize(&self) -> Self::Token<'_> {
8042                ()
8043            }
8044            #[inline]
8045            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8046                (
8047                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8048                        ret,
8049                    ),
8050                )
8051            }
8052            #[inline]
8053            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8054                <Self::ReturnTuple<
8055                    '_,
8056                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8057                    .map(|r| {
8058                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8059                        r._0
8060                    })
8061            }
8062            #[inline]
8063            fn abi_decode_returns_validate(
8064                data: &[u8],
8065            ) -> alloy_sol_types::Result<Self::Return> {
8066                <Self::ReturnTuple<
8067                    '_,
8068                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8069                    .map(|r| {
8070                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8071                        r._0
8072                    })
8073            }
8074        }
8075    };
8076    #[derive(serde::Serialize, serde::Deserialize)]
8077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8078    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8079```solidity
8080function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8081```*/
8082    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8083    #[derive(Clone)]
8084    pub struct _getVkCall;
8085    #[derive(serde::Serialize, serde::Deserialize)]
8086    #[derive()]
8087    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8089    #[derive(Clone)]
8090    pub struct _getVkReturn {
8091        #[allow(missing_docs)]
8092        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8093    }
8094    #[allow(
8095        non_camel_case_types,
8096        non_snake_case,
8097        clippy::pub_underscore_fields,
8098        clippy::style
8099    )]
8100    const _: () = {
8101        use alloy::sol_types as alloy_sol_types;
8102        {
8103            #[doc(hidden)]
8104            #[allow(dead_code)]
8105            type UnderlyingSolTuple<'a> = ();
8106            #[doc(hidden)]
8107            type UnderlyingRustTuple<'a> = ();
8108            #[cfg(test)]
8109            #[allow(dead_code, unreachable_patterns)]
8110            fn _type_assertion(
8111                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8112            ) {
8113                match _t {
8114                    alloy_sol_types::private::AssertTypeEq::<
8115                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8116                    >(_) => {}
8117                }
8118            }
8119            #[automatically_derived]
8120            #[doc(hidden)]
8121            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8122                fn from(value: _getVkCall) -> Self {
8123                    ()
8124                }
8125            }
8126            #[automatically_derived]
8127            #[doc(hidden)]
8128            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8129                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8130                    Self
8131                }
8132            }
8133        }
8134        {
8135            #[doc(hidden)]
8136            #[allow(dead_code)]
8137            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8138            #[doc(hidden)]
8139            type UnderlyingRustTuple<'a> = (
8140                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8141            );
8142            #[cfg(test)]
8143            #[allow(dead_code, unreachable_patterns)]
8144            fn _type_assertion(
8145                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8146            ) {
8147                match _t {
8148                    alloy_sol_types::private::AssertTypeEq::<
8149                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8150                    >(_) => {}
8151                }
8152            }
8153            #[automatically_derived]
8154            #[doc(hidden)]
8155            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8156                fn from(value: _getVkReturn) -> Self {
8157                    (value.vk,)
8158                }
8159            }
8160            #[automatically_derived]
8161            #[doc(hidden)]
8162            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8163                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8164                    Self { vk: tuple.0 }
8165                }
8166            }
8167        }
8168        #[automatically_derived]
8169        impl alloy_sol_types::SolCall for _getVkCall {
8170            type Parameters<'a> = ();
8171            type Token<'a> = <Self::Parameters<
8172                'a,
8173            > as alloy_sol_types::SolType>::Token<'a>;
8174            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8175            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8176            type ReturnToken<'a> = <Self::ReturnTuple<
8177                'a,
8178            > as alloy_sol_types::SolType>::Token<'a>;
8179            const SIGNATURE: &'static str = "_getVk()";
8180            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8181            #[inline]
8182            fn new<'a>(
8183                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8184            ) -> Self {
8185                tuple.into()
8186            }
8187            #[inline]
8188            fn tokenize(&self) -> Self::Token<'_> {
8189                ()
8190            }
8191            #[inline]
8192            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8193                (
8194                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8195                        ret,
8196                    ),
8197                )
8198            }
8199            #[inline]
8200            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8201                <Self::ReturnTuple<
8202                    '_,
8203                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8204                    .map(|r| {
8205                        let r: _getVkReturn = r.into();
8206                        r.vk
8207                    })
8208            }
8209            #[inline]
8210            fn abi_decode_returns_validate(
8211                data: &[u8],
8212            ) -> alloy_sol_types::Result<Self::Return> {
8213                <Self::ReturnTuple<
8214                    '_,
8215                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8216                    .map(|r| {
8217                        let r: _getVkReturn = r.into();
8218                        r.vk
8219                    })
8220            }
8221        }
8222    };
8223    #[derive(serde::Serialize, serde::Deserialize)]
8224    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8225    /**Function with signature `authRoot()` and selector `0x998328e8`.
8226```solidity
8227function authRoot() external view returns (uint256);
8228```*/
8229    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8230    #[derive(Clone)]
8231    pub struct authRootCall;
8232    #[derive(serde::Serialize, serde::Deserialize)]
8233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8234    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8235    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8236    #[derive(Clone)]
8237    pub struct authRootReturn {
8238        #[allow(missing_docs)]
8239        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8240    }
8241    #[allow(
8242        non_camel_case_types,
8243        non_snake_case,
8244        clippy::pub_underscore_fields,
8245        clippy::style
8246    )]
8247    const _: () = {
8248        use alloy::sol_types as alloy_sol_types;
8249        {
8250            #[doc(hidden)]
8251            #[allow(dead_code)]
8252            type UnderlyingSolTuple<'a> = ();
8253            #[doc(hidden)]
8254            type UnderlyingRustTuple<'a> = ();
8255            #[cfg(test)]
8256            #[allow(dead_code, unreachable_patterns)]
8257            fn _type_assertion(
8258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8259            ) {
8260                match _t {
8261                    alloy_sol_types::private::AssertTypeEq::<
8262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8263                    >(_) => {}
8264                }
8265            }
8266            #[automatically_derived]
8267            #[doc(hidden)]
8268            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8269                fn from(value: authRootCall) -> Self {
8270                    ()
8271                }
8272            }
8273            #[automatically_derived]
8274            #[doc(hidden)]
8275            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8276                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8277                    Self
8278                }
8279            }
8280        }
8281        {
8282            #[doc(hidden)]
8283            #[allow(dead_code)]
8284            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8285            #[doc(hidden)]
8286            type UnderlyingRustTuple<'a> = (
8287                alloy::sol_types::private::primitives::aliases::U256,
8288            );
8289            #[cfg(test)]
8290            #[allow(dead_code, unreachable_patterns)]
8291            fn _type_assertion(
8292                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8293            ) {
8294                match _t {
8295                    alloy_sol_types::private::AssertTypeEq::<
8296                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8297                    >(_) => {}
8298                }
8299            }
8300            #[automatically_derived]
8301            #[doc(hidden)]
8302            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8303                fn from(value: authRootReturn) -> Self {
8304                    (value._0,)
8305                }
8306            }
8307            #[automatically_derived]
8308            #[doc(hidden)]
8309            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8311                    Self { _0: tuple.0 }
8312                }
8313            }
8314        }
8315        #[automatically_derived]
8316        impl alloy_sol_types::SolCall for authRootCall {
8317            type Parameters<'a> = ();
8318            type Token<'a> = <Self::Parameters<
8319                'a,
8320            > as alloy_sol_types::SolType>::Token<'a>;
8321            type Return = alloy::sol_types::private::primitives::aliases::U256;
8322            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8323            type ReturnToken<'a> = <Self::ReturnTuple<
8324                'a,
8325            > as alloy_sol_types::SolType>::Token<'a>;
8326            const SIGNATURE: &'static str = "authRoot()";
8327            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8328            #[inline]
8329            fn new<'a>(
8330                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8331            ) -> Self {
8332                tuple.into()
8333            }
8334            #[inline]
8335            fn tokenize(&self) -> Self::Token<'_> {
8336                ()
8337            }
8338            #[inline]
8339            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8340                (
8341                    <alloy::sol_types::sol_data::Uint<
8342                        256,
8343                    > as alloy_sol_types::SolType>::tokenize(ret),
8344                )
8345            }
8346            #[inline]
8347            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8348                <Self::ReturnTuple<
8349                    '_,
8350                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8351                    .map(|r| {
8352                        let r: authRootReturn = r.into();
8353                        r._0
8354                    })
8355            }
8356            #[inline]
8357            fn abi_decode_returns_validate(
8358                data: &[u8],
8359            ) -> alloy_sol_types::Result<Self::Return> {
8360                <Self::ReturnTuple<
8361                    '_,
8362                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8363                    .map(|r| {
8364                        let r: authRootReturn = r.into();
8365                        r._0
8366                    })
8367            }
8368        }
8369    };
8370    #[derive(serde::Serialize, serde::Deserialize)]
8371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8372    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8373```solidity
8374function blocksPerEpoch() external view returns (uint64);
8375```*/
8376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8377    #[derive(Clone)]
8378    pub struct blocksPerEpochCall;
8379    #[derive(serde::Serialize, serde::Deserialize)]
8380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8381    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8383    #[derive(Clone)]
8384    pub struct blocksPerEpochReturn {
8385        #[allow(missing_docs)]
8386        pub _0: u64,
8387    }
8388    #[allow(
8389        non_camel_case_types,
8390        non_snake_case,
8391        clippy::pub_underscore_fields,
8392        clippy::style
8393    )]
8394    const _: () = {
8395        use alloy::sol_types as alloy_sol_types;
8396        {
8397            #[doc(hidden)]
8398            #[allow(dead_code)]
8399            type UnderlyingSolTuple<'a> = ();
8400            #[doc(hidden)]
8401            type UnderlyingRustTuple<'a> = ();
8402            #[cfg(test)]
8403            #[allow(dead_code, unreachable_patterns)]
8404            fn _type_assertion(
8405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8406            ) {
8407                match _t {
8408                    alloy_sol_types::private::AssertTypeEq::<
8409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8410                    >(_) => {}
8411                }
8412            }
8413            #[automatically_derived]
8414            #[doc(hidden)]
8415            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8416                fn from(value: blocksPerEpochCall) -> Self {
8417                    ()
8418                }
8419            }
8420            #[automatically_derived]
8421            #[doc(hidden)]
8422            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8423                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8424                    Self
8425                }
8426            }
8427        }
8428        {
8429            #[doc(hidden)]
8430            #[allow(dead_code)]
8431            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8432            #[doc(hidden)]
8433            type UnderlyingRustTuple<'a> = (u64,);
8434            #[cfg(test)]
8435            #[allow(dead_code, unreachable_patterns)]
8436            fn _type_assertion(
8437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8438            ) {
8439                match _t {
8440                    alloy_sol_types::private::AssertTypeEq::<
8441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8442                    >(_) => {}
8443                }
8444            }
8445            #[automatically_derived]
8446            #[doc(hidden)]
8447            impl ::core::convert::From<blocksPerEpochReturn>
8448            for UnderlyingRustTuple<'_> {
8449                fn from(value: blocksPerEpochReturn) -> Self {
8450                    (value._0,)
8451                }
8452            }
8453            #[automatically_derived]
8454            #[doc(hidden)]
8455            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8456            for blocksPerEpochReturn {
8457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8458                    Self { _0: tuple.0 }
8459                }
8460            }
8461        }
8462        #[automatically_derived]
8463        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8464            type Parameters<'a> = ();
8465            type Token<'a> = <Self::Parameters<
8466                'a,
8467            > as alloy_sol_types::SolType>::Token<'a>;
8468            type Return = u64;
8469            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8470            type ReturnToken<'a> = <Self::ReturnTuple<
8471                'a,
8472            > as alloy_sol_types::SolType>::Token<'a>;
8473            const SIGNATURE: &'static str = "blocksPerEpoch()";
8474            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8475            #[inline]
8476            fn new<'a>(
8477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8478            ) -> Self {
8479                tuple.into()
8480            }
8481            #[inline]
8482            fn tokenize(&self) -> Self::Token<'_> {
8483                ()
8484            }
8485            #[inline]
8486            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8487                (
8488                    <alloy::sol_types::sol_data::Uint<
8489                        64,
8490                    > as alloy_sol_types::SolType>::tokenize(ret),
8491                )
8492            }
8493            #[inline]
8494            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8495                <Self::ReturnTuple<
8496                    '_,
8497                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8498                    .map(|r| {
8499                        let r: blocksPerEpochReturn = r.into();
8500                        r._0
8501                    })
8502            }
8503            #[inline]
8504            fn abi_decode_returns_validate(
8505                data: &[u8],
8506            ) -> alloy_sol_types::Result<Self::Return> {
8507                <Self::ReturnTuple<
8508                    '_,
8509                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8510                    .map(|r| {
8511                        let r: blocksPerEpochReturn = r.into();
8512                        r._0
8513                    })
8514            }
8515        }
8516    };
8517    #[derive(serde::Serialize, serde::Deserialize)]
8518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8519    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8520```solidity
8521function currentBlockNumber() external view returns (uint256);
8522```*/
8523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8524    #[derive(Clone)]
8525    pub struct currentBlockNumberCall;
8526    #[derive(serde::Serialize, serde::Deserialize)]
8527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8528    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8529    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8530    #[derive(Clone)]
8531    pub struct currentBlockNumberReturn {
8532        #[allow(missing_docs)]
8533        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8534    }
8535    #[allow(
8536        non_camel_case_types,
8537        non_snake_case,
8538        clippy::pub_underscore_fields,
8539        clippy::style
8540    )]
8541    const _: () = {
8542        use alloy::sol_types as alloy_sol_types;
8543        {
8544            #[doc(hidden)]
8545            #[allow(dead_code)]
8546            type UnderlyingSolTuple<'a> = ();
8547            #[doc(hidden)]
8548            type UnderlyingRustTuple<'a> = ();
8549            #[cfg(test)]
8550            #[allow(dead_code, unreachable_patterns)]
8551            fn _type_assertion(
8552                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8553            ) {
8554                match _t {
8555                    alloy_sol_types::private::AssertTypeEq::<
8556                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8557                    >(_) => {}
8558                }
8559            }
8560            #[automatically_derived]
8561            #[doc(hidden)]
8562            impl ::core::convert::From<currentBlockNumberCall>
8563            for UnderlyingRustTuple<'_> {
8564                fn from(value: currentBlockNumberCall) -> Self {
8565                    ()
8566                }
8567            }
8568            #[automatically_derived]
8569            #[doc(hidden)]
8570            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8571            for currentBlockNumberCall {
8572                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8573                    Self
8574                }
8575            }
8576        }
8577        {
8578            #[doc(hidden)]
8579            #[allow(dead_code)]
8580            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8581            #[doc(hidden)]
8582            type UnderlyingRustTuple<'a> = (
8583                alloy::sol_types::private::primitives::aliases::U256,
8584            );
8585            #[cfg(test)]
8586            #[allow(dead_code, unreachable_patterns)]
8587            fn _type_assertion(
8588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8589            ) {
8590                match _t {
8591                    alloy_sol_types::private::AssertTypeEq::<
8592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8593                    >(_) => {}
8594                }
8595            }
8596            #[automatically_derived]
8597            #[doc(hidden)]
8598            impl ::core::convert::From<currentBlockNumberReturn>
8599            for UnderlyingRustTuple<'_> {
8600                fn from(value: currentBlockNumberReturn) -> Self {
8601                    (value._0,)
8602                }
8603            }
8604            #[automatically_derived]
8605            #[doc(hidden)]
8606            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8607            for currentBlockNumberReturn {
8608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8609                    Self { _0: tuple.0 }
8610                }
8611            }
8612        }
8613        #[automatically_derived]
8614        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8615            type Parameters<'a> = ();
8616            type Token<'a> = <Self::Parameters<
8617                'a,
8618            > as alloy_sol_types::SolType>::Token<'a>;
8619            type Return = alloy::sol_types::private::primitives::aliases::U256;
8620            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8621            type ReturnToken<'a> = <Self::ReturnTuple<
8622                'a,
8623            > as alloy_sol_types::SolType>::Token<'a>;
8624            const SIGNATURE: &'static str = "currentBlockNumber()";
8625            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8626            #[inline]
8627            fn new<'a>(
8628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8629            ) -> Self {
8630                tuple.into()
8631            }
8632            #[inline]
8633            fn tokenize(&self) -> Self::Token<'_> {
8634                ()
8635            }
8636            #[inline]
8637            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8638                (
8639                    <alloy::sol_types::sol_data::Uint<
8640                        256,
8641                    > as alloy_sol_types::SolType>::tokenize(ret),
8642                )
8643            }
8644            #[inline]
8645            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8646                <Self::ReturnTuple<
8647                    '_,
8648                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8649                    .map(|r| {
8650                        let r: currentBlockNumberReturn = r.into();
8651                        r._0
8652                    })
8653            }
8654            #[inline]
8655            fn abi_decode_returns_validate(
8656                data: &[u8],
8657            ) -> alloy_sol_types::Result<Self::Return> {
8658                <Self::ReturnTuple<
8659                    '_,
8660                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8661                    .map(|r| {
8662                        let r: currentBlockNumberReturn = r.into();
8663                        r._0
8664                    })
8665            }
8666        }
8667    };
8668    #[derive(serde::Serialize, serde::Deserialize)]
8669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8670    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8671```solidity
8672function currentEpoch() external view returns (uint64);
8673```*/
8674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8675    #[derive(Clone)]
8676    pub struct currentEpochCall;
8677    #[derive(serde::Serialize, serde::Deserialize)]
8678    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8679    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8680    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8681    #[derive(Clone)]
8682    pub struct currentEpochReturn {
8683        #[allow(missing_docs)]
8684        pub _0: u64,
8685    }
8686    #[allow(
8687        non_camel_case_types,
8688        non_snake_case,
8689        clippy::pub_underscore_fields,
8690        clippy::style
8691    )]
8692    const _: () = {
8693        use alloy::sol_types as alloy_sol_types;
8694        {
8695            #[doc(hidden)]
8696            #[allow(dead_code)]
8697            type UnderlyingSolTuple<'a> = ();
8698            #[doc(hidden)]
8699            type UnderlyingRustTuple<'a> = ();
8700            #[cfg(test)]
8701            #[allow(dead_code, unreachable_patterns)]
8702            fn _type_assertion(
8703                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8704            ) {
8705                match _t {
8706                    alloy_sol_types::private::AssertTypeEq::<
8707                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8708                    >(_) => {}
8709                }
8710            }
8711            #[automatically_derived]
8712            #[doc(hidden)]
8713            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8714                fn from(value: currentEpochCall) -> Self {
8715                    ()
8716                }
8717            }
8718            #[automatically_derived]
8719            #[doc(hidden)]
8720            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8721                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8722                    Self
8723                }
8724            }
8725        }
8726        {
8727            #[doc(hidden)]
8728            #[allow(dead_code)]
8729            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8730            #[doc(hidden)]
8731            type UnderlyingRustTuple<'a> = (u64,);
8732            #[cfg(test)]
8733            #[allow(dead_code, unreachable_patterns)]
8734            fn _type_assertion(
8735                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8736            ) {
8737                match _t {
8738                    alloy_sol_types::private::AssertTypeEq::<
8739                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8740                    >(_) => {}
8741                }
8742            }
8743            #[automatically_derived]
8744            #[doc(hidden)]
8745            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8746                fn from(value: currentEpochReturn) -> Self {
8747                    (value._0,)
8748                }
8749            }
8750            #[automatically_derived]
8751            #[doc(hidden)]
8752            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8754                    Self { _0: tuple.0 }
8755                }
8756            }
8757        }
8758        #[automatically_derived]
8759        impl alloy_sol_types::SolCall for currentEpochCall {
8760            type Parameters<'a> = ();
8761            type Token<'a> = <Self::Parameters<
8762                'a,
8763            > as alloy_sol_types::SolType>::Token<'a>;
8764            type Return = u64;
8765            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8766            type ReturnToken<'a> = <Self::ReturnTuple<
8767                'a,
8768            > as alloy_sol_types::SolType>::Token<'a>;
8769            const SIGNATURE: &'static str = "currentEpoch()";
8770            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8771            #[inline]
8772            fn new<'a>(
8773                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8774            ) -> Self {
8775                tuple.into()
8776            }
8777            #[inline]
8778            fn tokenize(&self) -> Self::Token<'_> {
8779                ()
8780            }
8781            #[inline]
8782            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8783                (
8784                    <alloy::sol_types::sol_data::Uint<
8785                        64,
8786                    > as alloy_sol_types::SolType>::tokenize(ret),
8787                )
8788            }
8789            #[inline]
8790            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8791                <Self::ReturnTuple<
8792                    '_,
8793                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8794                    .map(|r| {
8795                        let r: currentEpochReturn = r.into();
8796                        r._0
8797                    })
8798            }
8799            #[inline]
8800            fn abi_decode_returns_validate(
8801                data: &[u8],
8802            ) -> alloy_sol_types::Result<Self::Return> {
8803                <Self::ReturnTuple<
8804                    '_,
8805                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8806                    .map(|r| {
8807                        let r: currentEpochReturn = r.into();
8808                        r._0
8809                    })
8810            }
8811        }
8812    };
8813    #[derive(serde::Serialize, serde::Deserialize)]
8814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8815    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8816```solidity
8817function disablePermissionedProverMode() external;
8818```*/
8819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8820    #[derive(Clone)]
8821    pub struct disablePermissionedProverModeCall;
8822    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8823    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8824    #[derive(Clone)]
8825    pub struct disablePermissionedProverModeReturn {}
8826    #[allow(
8827        non_camel_case_types,
8828        non_snake_case,
8829        clippy::pub_underscore_fields,
8830        clippy::style
8831    )]
8832    const _: () = {
8833        use alloy::sol_types as alloy_sol_types;
8834        {
8835            #[doc(hidden)]
8836            #[allow(dead_code)]
8837            type UnderlyingSolTuple<'a> = ();
8838            #[doc(hidden)]
8839            type UnderlyingRustTuple<'a> = ();
8840            #[cfg(test)]
8841            #[allow(dead_code, unreachable_patterns)]
8842            fn _type_assertion(
8843                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8844            ) {
8845                match _t {
8846                    alloy_sol_types::private::AssertTypeEq::<
8847                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8848                    >(_) => {}
8849                }
8850            }
8851            #[automatically_derived]
8852            #[doc(hidden)]
8853            impl ::core::convert::From<disablePermissionedProverModeCall>
8854            for UnderlyingRustTuple<'_> {
8855                fn from(value: disablePermissionedProverModeCall) -> Self {
8856                    ()
8857                }
8858            }
8859            #[automatically_derived]
8860            #[doc(hidden)]
8861            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8862            for disablePermissionedProverModeCall {
8863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8864                    Self
8865                }
8866            }
8867        }
8868        {
8869            #[doc(hidden)]
8870            #[allow(dead_code)]
8871            type UnderlyingSolTuple<'a> = ();
8872            #[doc(hidden)]
8873            type UnderlyingRustTuple<'a> = ();
8874            #[cfg(test)]
8875            #[allow(dead_code, unreachable_patterns)]
8876            fn _type_assertion(
8877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8878            ) {
8879                match _t {
8880                    alloy_sol_types::private::AssertTypeEq::<
8881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8882                    >(_) => {}
8883                }
8884            }
8885            #[automatically_derived]
8886            #[doc(hidden)]
8887            impl ::core::convert::From<disablePermissionedProverModeReturn>
8888            for UnderlyingRustTuple<'_> {
8889                fn from(value: disablePermissionedProverModeReturn) -> Self {
8890                    ()
8891                }
8892            }
8893            #[automatically_derived]
8894            #[doc(hidden)]
8895            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8896            for disablePermissionedProverModeReturn {
8897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8898                    Self {}
8899                }
8900            }
8901        }
8902        impl disablePermissionedProverModeReturn {
8903            fn _tokenize(
8904                &self,
8905            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8906                '_,
8907            > {
8908                ()
8909            }
8910        }
8911        #[automatically_derived]
8912        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8913            type Parameters<'a> = ();
8914            type Token<'a> = <Self::Parameters<
8915                'a,
8916            > as alloy_sol_types::SolType>::Token<'a>;
8917            type Return = disablePermissionedProverModeReturn;
8918            type ReturnTuple<'a> = ();
8919            type ReturnToken<'a> = <Self::ReturnTuple<
8920                'a,
8921            > as alloy_sol_types::SolType>::Token<'a>;
8922            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8923            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8924            #[inline]
8925            fn new<'a>(
8926                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8927            ) -> Self {
8928                tuple.into()
8929            }
8930            #[inline]
8931            fn tokenize(&self) -> Self::Token<'_> {
8932                ()
8933            }
8934            #[inline]
8935            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8936                disablePermissionedProverModeReturn::_tokenize(ret)
8937            }
8938            #[inline]
8939            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8940                <Self::ReturnTuple<
8941                    '_,
8942                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8943                    .map(Into::into)
8944            }
8945            #[inline]
8946            fn abi_decode_returns_validate(
8947                data: &[u8],
8948            ) -> alloy_sol_types::Result<Self::Return> {
8949                <Self::ReturnTuple<
8950                    '_,
8951                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8952                    .map(Into::into)
8953            }
8954        }
8955    };
8956    #[derive(serde::Serialize, serde::Deserialize)]
8957    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8958    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8959```solidity
8960function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8961```*/
8962    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8963    #[derive(Clone)]
8964    pub struct epochFromBlockNumberCall {
8965        #[allow(missing_docs)]
8966        pub _blockNum: u64,
8967        #[allow(missing_docs)]
8968        pub _blocksPerEpoch: u64,
8969    }
8970    #[derive(serde::Serialize, serde::Deserialize)]
8971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8972    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8974    #[derive(Clone)]
8975    pub struct epochFromBlockNumberReturn {
8976        #[allow(missing_docs)]
8977        pub _0: u64,
8978    }
8979    #[allow(
8980        non_camel_case_types,
8981        non_snake_case,
8982        clippy::pub_underscore_fields,
8983        clippy::style
8984    )]
8985    const _: () = {
8986        use alloy::sol_types as alloy_sol_types;
8987        {
8988            #[doc(hidden)]
8989            #[allow(dead_code)]
8990            type UnderlyingSolTuple<'a> = (
8991                alloy::sol_types::sol_data::Uint<64>,
8992                alloy::sol_types::sol_data::Uint<64>,
8993            );
8994            #[doc(hidden)]
8995            type UnderlyingRustTuple<'a> = (u64, u64);
8996            #[cfg(test)]
8997            #[allow(dead_code, unreachable_patterns)]
8998            fn _type_assertion(
8999                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9000            ) {
9001                match _t {
9002                    alloy_sol_types::private::AssertTypeEq::<
9003                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9004                    >(_) => {}
9005                }
9006            }
9007            #[automatically_derived]
9008            #[doc(hidden)]
9009            impl ::core::convert::From<epochFromBlockNumberCall>
9010            for UnderlyingRustTuple<'_> {
9011                fn from(value: epochFromBlockNumberCall) -> Self {
9012                    (value._blockNum, value._blocksPerEpoch)
9013                }
9014            }
9015            #[automatically_derived]
9016            #[doc(hidden)]
9017            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9018            for epochFromBlockNumberCall {
9019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9020                    Self {
9021                        _blockNum: tuple.0,
9022                        _blocksPerEpoch: tuple.1,
9023                    }
9024                }
9025            }
9026        }
9027        {
9028            #[doc(hidden)]
9029            #[allow(dead_code)]
9030            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9031            #[doc(hidden)]
9032            type UnderlyingRustTuple<'a> = (u64,);
9033            #[cfg(test)]
9034            #[allow(dead_code, unreachable_patterns)]
9035            fn _type_assertion(
9036                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9037            ) {
9038                match _t {
9039                    alloy_sol_types::private::AssertTypeEq::<
9040                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9041                    >(_) => {}
9042                }
9043            }
9044            #[automatically_derived]
9045            #[doc(hidden)]
9046            impl ::core::convert::From<epochFromBlockNumberReturn>
9047            for UnderlyingRustTuple<'_> {
9048                fn from(value: epochFromBlockNumberReturn) -> Self {
9049                    (value._0,)
9050                }
9051            }
9052            #[automatically_derived]
9053            #[doc(hidden)]
9054            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9055            for epochFromBlockNumberReturn {
9056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9057                    Self { _0: tuple.0 }
9058                }
9059            }
9060        }
9061        #[automatically_derived]
9062        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9063            type Parameters<'a> = (
9064                alloy::sol_types::sol_data::Uint<64>,
9065                alloy::sol_types::sol_data::Uint<64>,
9066            );
9067            type Token<'a> = <Self::Parameters<
9068                'a,
9069            > as alloy_sol_types::SolType>::Token<'a>;
9070            type Return = u64;
9071            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9072            type ReturnToken<'a> = <Self::ReturnTuple<
9073                'a,
9074            > as alloy_sol_types::SolType>::Token<'a>;
9075            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9076            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9077            #[inline]
9078            fn new<'a>(
9079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9080            ) -> Self {
9081                tuple.into()
9082            }
9083            #[inline]
9084            fn tokenize(&self) -> Self::Token<'_> {
9085                (
9086                    <alloy::sol_types::sol_data::Uint<
9087                        64,
9088                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9089                    <alloy::sol_types::sol_data::Uint<
9090                        64,
9091                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9092                )
9093            }
9094            #[inline]
9095            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9096                (
9097                    <alloy::sol_types::sol_data::Uint<
9098                        64,
9099                    > as alloy_sol_types::SolType>::tokenize(ret),
9100                )
9101            }
9102            #[inline]
9103            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9104                <Self::ReturnTuple<
9105                    '_,
9106                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9107                    .map(|r| {
9108                        let r: epochFromBlockNumberReturn = r.into();
9109                        r._0
9110                    })
9111            }
9112            #[inline]
9113            fn abi_decode_returns_validate(
9114                data: &[u8],
9115            ) -> alloy_sol_types::Result<Self::Return> {
9116                <Self::ReturnTuple<
9117                    '_,
9118                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9119                    .map(|r| {
9120                        let r: epochFromBlockNumberReturn = r.into();
9121                        r._0
9122                    })
9123            }
9124        }
9125    };
9126    #[derive(serde::Serialize, serde::Deserialize)]
9127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9128    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9129```solidity
9130function epochStartBlock() external view returns (uint64);
9131```*/
9132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9133    #[derive(Clone)]
9134    pub struct epochStartBlockCall;
9135    #[derive(serde::Serialize, serde::Deserialize)]
9136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9137    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9139    #[derive(Clone)]
9140    pub struct epochStartBlockReturn {
9141        #[allow(missing_docs)]
9142        pub _0: u64,
9143    }
9144    #[allow(
9145        non_camel_case_types,
9146        non_snake_case,
9147        clippy::pub_underscore_fields,
9148        clippy::style
9149    )]
9150    const _: () = {
9151        use alloy::sol_types as alloy_sol_types;
9152        {
9153            #[doc(hidden)]
9154            #[allow(dead_code)]
9155            type UnderlyingSolTuple<'a> = ();
9156            #[doc(hidden)]
9157            type UnderlyingRustTuple<'a> = ();
9158            #[cfg(test)]
9159            #[allow(dead_code, unreachable_patterns)]
9160            fn _type_assertion(
9161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9162            ) {
9163                match _t {
9164                    alloy_sol_types::private::AssertTypeEq::<
9165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9166                    >(_) => {}
9167                }
9168            }
9169            #[automatically_derived]
9170            #[doc(hidden)]
9171            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9172                fn from(value: epochStartBlockCall) -> Self {
9173                    ()
9174                }
9175            }
9176            #[automatically_derived]
9177            #[doc(hidden)]
9178            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9180                    Self
9181                }
9182            }
9183        }
9184        {
9185            #[doc(hidden)]
9186            #[allow(dead_code)]
9187            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9188            #[doc(hidden)]
9189            type UnderlyingRustTuple<'a> = (u64,);
9190            #[cfg(test)]
9191            #[allow(dead_code, unreachable_patterns)]
9192            fn _type_assertion(
9193                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9194            ) {
9195                match _t {
9196                    alloy_sol_types::private::AssertTypeEq::<
9197                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9198                    >(_) => {}
9199                }
9200            }
9201            #[automatically_derived]
9202            #[doc(hidden)]
9203            impl ::core::convert::From<epochStartBlockReturn>
9204            for UnderlyingRustTuple<'_> {
9205                fn from(value: epochStartBlockReturn) -> Self {
9206                    (value._0,)
9207                }
9208            }
9209            #[automatically_derived]
9210            #[doc(hidden)]
9211            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9212            for epochStartBlockReturn {
9213                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9214                    Self { _0: tuple.0 }
9215                }
9216            }
9217        }
9218        #[automatically_derived]
9219        impl alloy_sol_types::SolCall for epochStartBlockCall {
9220            type Parameters<'a> = ();
9221            type Token<'a> = <Self::Parameters<
9222                'a,
9223            > as alloy_sol_types::SolType>::Token<'a>;
9224            type Return = u64;
9225            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9226            type ReturnToken<'a> = <Self::ReturnTuple<
9227                'a,
9228            > as alloy_sol_types::SolType>::Token<'a>;
9229            const SIGNATURE: &'static str = "epochStartBlock()";
9230            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9231            #[inline]
9232            fn new<'a>(
9233                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9234            ) -> Self {
9235                tuple.into()
9236            }
9237            #[inline]
9238            fn tokenize(&self) -> Self::Token<'_> {
9239                ()
9240            }
9241            #[inline]
9242            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9243                (
9244                    <alloy::sol_types::sol_data::Uint<
9245                        64,
9246                    > as alloy_sol_types::SolType>::tokenize(ret),
9247                )
9248            }
9249            #[inline]
9250            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9251                <Self::ReturnTuple<
9252                    '_,
9253                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9254                    .map(|r| {
9255                        let r: epochStartBlockReturn = r.into();
9256                        r._0
9257                    })
9258            }
9259            #[inline]
9260            fn abi_decode_returns_validate(
9261                data: &[u8],
9262            ) -> alloy_sol_types::Result<Self::Return> {
9263                <Self::ReturnTuple<
9264                    '_,
9265                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9266                    .map(|r| {
9267                        let r: epochStartBlockReturn = r.into();
9268                        r._0
9269                    })
9270            }
9271        }
9272    };
9273    #[derive(serde::Serialize, serde::Deserialize)]
9274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9275    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9276```solidity
9277function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9278```*/
9279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9280    #[derive(Clone)]
9281    pub struct finalizedStateCall;
9282    #[derive(serde::Serialize, serde::Deserialize)]
9283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9284    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9286    #[derive(Clone)]
9287    pub struct finalizedStateReturn {
9288        #[allow(missing_docs)]
9289        pub viewNum: u64,
9290        #[allow(missing_docs)]
9291        pub blockHeight: u64,
9292        #[allow(missing_docs)]
9293        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9294    }
9295    #[allow(
9296        non_camel_case_types,
9297        non_snake_case,
9298        clippy::pub_underscore_fields,
9299        clippy::style
9300    )]
9301    const _: () = {
9302        use alloy::sol_types as alloy_sol_types;
9303        {
9304            #[doc(hidden)]
9305            #[allow(dead_code)]
9306            type UnderlyingSolTuple<'a> = ();
9307            #[doc(hidden)]
9308            type UnderlyingRustTuple<'a> = ();
9309            #[cfg(test)]
9310            #[allow(dead_code, unreachable_patterns)]
9311            fn _type_assertion(
9312                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9313            ) {
9314                match _t {
9315                    alloy_sol_types::private::AssertTypeEq::<
9316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9317                    >(_) => {}
9318                }
9319            }
9320            #[automatically_derived]
9321            #[doc(hidden)]
9322            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9323                fn from(value: finalizedStateCall) -> Self {
9324                    ()
9325                }
9326            }
9327            #[automatically_derived]
9328            #[doc(hidden)]
9329            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9331                    Self
9332                }
9333            }
9334        }
9335        {
9336            #[doc(hidden)]
9337            #[allow(dead_code)]
9338            type UnderlyingSolTuple<'a> = (
9339                alloy::sol_types::sol_data::Uint<64>,
9340                alloy::sol_types::sol_data::Uint<64>,
9341                BN254::ScalarField,
9342            );
9343            #[doc(hidden)]
9344            type UnderlyingRustTuple<'a> = (
9345                u64,
9346                u64,
9347                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9348            );
9349            #[cfg(test)]
9350            #[allow(dead_code, unreachable_patterns)]
9351            fn _type_assertion(
9352                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9353            ) {
9354                match _t {
9355                    alloy_sol_types::private::AssertTypeEq::<
9356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9357                    >(_) => {}
9358                }
9359            }
9360            #[automatically_derived]
9361            #[doc(hidden)]
9362            impl ::core::convert::From<finalizedStateReturn>
9363            for UnderlyingRustTuple<'_> {
9364                fn from(value: finalizedStateReturn) -> Self {
9365                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9366                }
9367            }
9368            #[automatically_derived]
9369            #[doc(hidden)]
9370            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9371            for finalizedStateReturn {
9372                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9373                    Self {
9374                        viewNum: tuple.0,
9375                        blockHeight: tuple.1,
9376                        blockCommRoot: tuple.2,
9377                    }
9378                }
9379            }
9380        }
9381        impl finalizedStateReturn {
9382            fn _tokenize(
9383                &self,
9384            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9385                (
9386                    <alloy::sol_types::sol_data::Uint<
9387                        64,
9388                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9389                    <alloy::sol_types::sol_data::Uint<
9390                        64,
9391                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9392                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9393                        &self.blockCommRoot,
9394                    ),
9395                )
9396            }
9397        }
9398        #[automatically_derived]
9399        impl alloy_sol_types::SolCall for finalizedStateCall {
9400            type Parameters<'a> = ();
9401            type Token<'a> = <Self::Parameters<
9402                'a,
9403            > as alloy_sol_types::SolType>::Token<'a>;
9404            type Return = finalizedStateReturn;
9405            type ReturnTuple<'a> = (
9406                alloy::sol_types::sol_data::Uint<64>,
9407                alloy::sol_types::sol_data::Uint<64>,
9408                BN254::ScalarField,
9409            );
9410            type ReturnToken<'a> = <Self::ReturnTuple<
9411                'a,
9412            > as alloy_sol_types::SolType>::Token<'a>;
9413            const SIGNATURE: &'static str = "finalizedState()";
9414            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9415            #[inline]
9416            fn new<'a>(
9417                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9418            ) -> Self {
9419                tuple.into()
9420            }
9421            #[inline]
9422            fn tokenize(&self) -> Self::Token<'_> {
9423                ()
9424            }
9425            #[inline]
9426            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9427                finalizedStateReturn::_tokenize(ret)
9428            }
9429            #[inline]
9430            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9431                <Self::ReturnTuple<
9432                    '_,
9433                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9434                    .map(Into::into)
9435            }
9436            #[inline]
9437            fn abi_decode_returns_validate(
9438                data: &[u8],
9439            ) -> alloy_sol_types::Result<Self::Return> {
9440                <Self::ReturnTuple<
9441                    '_,
9442                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9443                    .map(Into::into)
9444            }
9445        }
9446    };
9447    #[derive(serde::Serialize, serde::Deserialize)]
9448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9449    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9450```solidity
9451function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9452```*/
9453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9454    #[derive(Clone)]
9455    pub struct genesisStakeTableStateCall;
9456    #[derive(serde::Serialize, serde::Deserialize)]
9457    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9458    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9460    #[derive(Clone)]
9461    pub struct genesisStakeTableStateReturn {
9462        #[allow(missing_docs)]
9463        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9464        #[allow(missing_docs)]
9465        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9466        #[allow(missing_docs)]
9467        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9468        #[allow(missing_docs)]
9469        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9470    }
9471    #[allow(
9472        non_camel_case_types,
9473        non_snake_case,
9474        clippy::pub_underscore_fields,
9475        clippy::style
9476    )]
9477    const _: () = {
9478        use alloy::sol_types as alloy_sol_types;
9479        {
9480            #[doc(hidden)]
9481            #[allow(dead_code)]
9482            type UnderlyingSolTuple<'a> = ();
9483            #[doc(hidden)]
9484            type UnderlyingRustTuple<'a> = ();
9485            #[cfg(test)]
9486            #[allow(dead_code, unreachable_patterns)]
9487            fn _type_assertion(
9488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9489            ) {
9490                match _t {
9491                    alloy_sol_types::private::AssertTypeEq::<
9492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9493                    >(_) => {}
9494                }
9495            }
9496            #[automatically_derived]
9497            #[doc(hidden)]
9498            impl ::core::convert::From<genesisStakeTableStateCall>
9499            for UnderlyingRustTuple<'_> {
9500                fn from(value: genesisStakeTableStateCall) -> Self {
9501                    ()
9502                }
9503            }
9504            #[automatically_derived]
9505            #[doc(hidden)]
9506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9507            for genesisStakeTableStateCall {
9508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9509                    Self
9510                }
9511            }
9512        }
9513        {
9514            #[doc(hidden)]
9515            #[allow(dead_code)]
9516            type UnderlyingSolTuple<'a> = (
9517                alloy::sol_types::sol_data::Uint<256>,
9518                BN254::ScalarField,
9519                BN254::ScalarField,
9520                BN254::ScalarField,
9521            );
9522            #[doc(hidden)]
9523            type UnderlyingRustTuple<'a> = (
9524                alloy::sol_types::private::primitives::aliases::U256,
9525                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9526                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9527                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9528            );
9529            #[cfg(test)]
9530            #[allow(dead_code, unreachable_patterns)]
9531            fn _type_assertion(
9532                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9533            ) {
9534                match _t {
9535                    alloy_sol_types::private::AssertTypeEq::<
9536                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9537                    >(_) => {}
9538                }
9539            }
9540            #[automatically_derived]
9541            #[doc(hidden)]
9542            impl ::core::convert::From<genesisStakeTableStateReturn>
9543            for UnderlyingRustTuple<'_> {
9544                fn from(value: genesisStakeTableStateReturn) -> Self {
9545                    (
9546                        value.threshold,
9547                        value.blsKeyComm,
9548                        value.schnorrKeyComm,
9549                        value.amountComm,
9550                    )
9551                }
9552            }
9553            #[automatically_derived]
9554            #[doc(hidden)]
9555            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9556            for genesisStakeTableStateReturn {
9557                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9558                    Self {
9559                        threshold: tuple.0,
9560                        blsKeyComm: tuple.1,
9561                        schnorrKeyComm: tuple.2,
9562                        amountComm: tuple.3,
9563                    }
9564                }
9565            }
9566        }
9567        impl genesisStakeTableStateReturn {
9568            fn _tokenize(
9569                &self,
9570            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9571                '_,
9572            > {
9573                (
9574                    <alloy::sol_types::sol_data::Uint<
9575                        256,
9576                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9577                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9578                        &self.blsKeyComm,
9579                    ),
9580                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9581                        &self.schnorrKeyComm,
9582                    ),
9583                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9584                        &self.amountComm,
9585                    ),
9586                )
9587            }
9588        }
9589        #[automatically_derived]
9590        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9591            type Parameters<'a> = ();
9592            type Token<'a> = <Self::Parameters<
9593                'a,
9594            > as alloy_sol_types::SolType>::Token<'a>;
9595            type Return = genesisStakeTableStateReturn;
9596            type ReturnTuple<'a> = (
9597                alloy::sol_types::sol_data::Uint<256>,
9598                BN254::ScalarField,
9599                BN254::ScalarField,
9600                BN254::ScalarField,
9601            );
9602            type ReturnToken<'a> = <Self::ReturnTuple<
9603                'a,
9604            > as alloy_sol_types::SolType>::Token<'a>;
9605            const SIGNATURE: &'static str = "genesisStakeTableState()";
9606            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9607            #[inline]
9608            fn new<'a>(
9609                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9610            ) -> Self {
9611                tuple.into()
9612            }
9613            #[inline]
9614            fn tokenize(&self) -> Self::Token<'_> {
9615                ()
9616            }
9617            #[inline]
9618            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9619                genesisStakeTableStateReturn::_tokenize(ret)
9620            }
9621            #[inline]
9622            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9623                <Self::ReturnTuple<
9624                    '_,
9625                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9626                    .map(Into::into)
9627            }
9628            #[inline]
9629            fn abi_decode_returns_validate(
9630                data: &[u8],
9631            ) -> alloy_sol_types::Result<Self::Return> {
9632                <Self::ReturnTuple<
9633                    '_,
9634                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9635                    .map(Into::into)
9636            }
9637        }
9638    };
9639    #[derive(serde::Serialize, serde::Deserialize)]
9640    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9641    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9642```solidity
9643function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9644```*/
9645    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9646    #[derive(Clone)]
9647    pub struct genesisStateCall;
9648    #[derive(serde::Serialize, serde::Deserialize)]
9649    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9650    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9652    #[derive(Clone)]
9653    pub struct genesisStateReturn {
9654        #[allow(missing_docs)]
9655        pub viewNum: u64,
9656        #[allow(missing_docs)]
9657        pub blockHeight: u64,
9658        #[allow(missing_docs)]
9659        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9660    }
9661    #[allow(
9662        non_camel_case_types,
9663        non_snake_case,
9664        clippy::pub_underscore_fields,
9665        clippy::style
9666    )]
9667    const _: () = {
9668        use alloy::sol_types as alloy_sol_types;
9669        {
9670            #[doc(hidden)]
9671            #[allow(dead_code)]
9672            type UnderlyingSolTuple<'a> = ();
9673            #[doc(hidden)]
9674            type UnderlyingRustTuple<'a> = ();
9675            #[cfg(test)]
9676            #[allow(dead_code, unreachable_patterns)]
9677            fn _type_assertion(
9678                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9679            ) {
9680                match _t {
9681                    alloy_sol_types::private::AssertTypeEq::<
9682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9683                    >(_) => {}
9684                }
9685            }
9686            #[automatically_derived]
9687            #[doc(hidden)]
9688            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9689                fn from(value: genesisStateCall) -> Self {
9690                    ()
9691                }
9692            }
9693            #[automatically_derived]
9694            #[doc(hidden)]
9695            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9696                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9697                    Self
9698                }
9699            }
9700        }
9701        {
9702            #[doc(hidden)]
9703            #[allow(dead_code)]
9704            type UnderlyingSolTuple<'a> = (
9705                alloy::sol_types::sol_data::Uint<64>,
9706                alloy::sol_types::sol_data::Uint<64>,
9707                BN254::ScalarField,
9708            );
9709            #[doc(hidden)]
9710            type UnderlyingRustTuple<'a> = (
9711                u64,
9712                u64,
9713                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9714            );
9715            #[cfg(test)]
9716            #[allow(dead_code, unreachable_patterns)]
9717            fn _type_assertion(
9718                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9719            ) {
9720                match _t {
9721                    alloy_sol_types::private::AssertTypeEq::<
9722                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9723                    >(_) => {}
9724                }
9725            }
9726            #[automatically_derived]
9727            #[doc(hidden)]
9728            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9729                fn from(value: genesisStateReturn) -> Self {
9730                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9731                }
9732            }
9733            #[automatically_derived]
9734            #[doc(hidden)]
9735            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9736                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9737                    Self {
9738                        viewNum: tuple.0,
9739                        blockHeight: tuple.1,
9740                        blockCommRoot: tuple.2,
9741                    }
9742                }
9743            }
9744        }
9745        impl genesisStateReturn {
9746            fn _tokenize(
9747                &self,
9748            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9749                (
9750                    <alloy::sol_types::sol_data::Uint<
9751                        64,
9752                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9753                    <alloy::sol_types::sol_data::Uint<
9754                        64,
9755                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9756                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9757                        &self.blockCommRoot,
9758                    ),
9759                )
9760            }
9761        }
9762        #[automatically_derived]
9763        impl alloy_sol_types::SolCall for genesisStateCall {
9764            type Parameters<'a> = ();
9765            type Token<'a> = <Self::Parameters<
9766                'a,
9767            > as alloy_sol_types::SolType>::Token<'a>;
9768            type Return = genesisStateReturn;
9769            type ReturnTuple<'a> = (
9770                alloy::sol_types::sol_data::Uint<64>,
9771                alloy::sol_types::sol_data::Uint<64>,
9772                BN254::ScalarField,
9773            );
9774            type ReturnToken<'a> = <Self::ReturnTuple<
9775                'a,
9776            > as alloy_sol_types::SolType>::Token<'a>;
9777            const SIGNATURE: &'static str = "genesisState()";
9778            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9779            #[inline]
9780            fn new<'a>(
9781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9782            ) -> Self {
9783                tuple.into()
9784            }
9785            #[inline]
9786            fn tokenize(&self) -> Self::Token<'_> {
9787                ()
9788            }
9789            #[inline]
9790            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9791                genesisStateReturn::_tokenize(ret)
9792            }
9793            #[inline]
9794            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9795                <Self::ReturnTuple<
9796                    '_,
9797                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9798                    .map(Into::into)
9799            }
9800            #[inline]
9801            fn abi_decode_returns_validate(
9802                data: &[u8],
9803            ) -> alloy_sol_types::Result<Self::Return> {
9804                <Self::ReturnTuple<
9805                    '_,
9806                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9807                    .map(Into::into)
9808            }
9809        }
9810    };
9811    #[derive(serde::Serialize, serde::Deserialize)]
9812    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9813    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9814```solidity
9815function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9816```*/
9817    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9818    #[derive(Clone)]
9819    pub struct getHotShotCommitmentCall {
9820        #[allow(missing_docs)]
9821        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9822    }
9823    #[derive(serde::Serialize, serde::Deserialize)]
9824    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9825    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9827    #[derive(Clone)]
9828    pub struct getHotShotCommitmentReturn {
9829        #[allow(missing_docs)]
9830        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9831        #[allow(missing_docs)]
9832        pub hotshotBlockHeight: u64,
9833    }
9834    #[allow(
9835        non_camel_case_types,
9836        non_snake_case,
9837        clippy::pub_underscore_fields,
9838        clippy::style
9839    )]
9840    const _: () = {
9841        use alloy::sol_types as alloy_sol_types;
9842        {
9843            #[doc(hidden)]
9844            #[allow(dead_code)]
9845            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9846            #[doc(hidden)]
9847            type UnderlyingRustTuple<'a> = (
9848                alloy::sol_types::private::primitives::aliases::U256,
9849            );
9850            #[cfg(test)]
9851            #[allow(dead_code, unreachable_patterns)]
9852            fn _type_assertion(
9853                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9854            ) {
9855                match _t {
9856                    alloy_sol_types::private::AssertTypeEq::<
9857                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9858                    >(_) => {}
9859                }
9860            }
9861            #[automatically_derived]
9862            #[doc(hidden)]
9863            impl ::core::convert::From<getHotShotCommitmentCall>
9864            for UnderlyingRustTuple<'_> {
9865                fn from(value: getHotShotCommitmentCall) -> Self {
9866                    (value.hotShotBlockHeight,)
9867                }
9868            }
9869            #[automatically_derived]
9870            #[doc(hidden)]
9871            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9872            for getHotShotCommitmentCall {
9873                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9874                    Self {
9875                        hotShotBlockHeight: tuple.0,
9876                    }
9877                }
9878            }
9879        }
9880        {
9881            #[doc(hidden)]
9882            #[allow(dead_code)]
9883            type UnderlyingSolTuple<'a> = (
9884                BN254::ScalarField,
9885                alloy::sol_types::sol_data::Uint<64>,
9886            );
9887            #[doc(hidden)]
9888            type UnderlyingRustTuple<'a> = (
9889                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9890                u64,
9891            );
9892            #[cfg(test)]
9893            #[allow(dead_code, unreachable_patterns)]
9894            fn _type_assertion(
9895                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9896            ) {
9897                match _t {
9898                    alloy_sol_types::private::AssertTypeEq::<
9899                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9900                    >(_) => {}
9901                }
9902            }
9903            #[automatically_derived]
9904            #[doc(hidden)]
9905            impl ::core::convert::From<getHotShotCommitmentReturn>
9906            for UnderlyingRustTuple<'_> {
9907                fn from(value: getHotShotCommitmentReturn) -> Self {
9908                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9909                }
9910            }
9911            #[automatically_derived]
9912            #[doc(hidden)]
9913            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9914            for getHotShotCommitmentReturn {
9915                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9916                    Self {
9917                        hotShotBlockCommRoot: tuple.0,
9918                        hotshotBlockHeight: tuple.1,
9919                    }
9920                }
9921            }
9922        }
9923        impl getHotShotCommitmentReturn {
9924            fn _tokenize(
9925                &self,
9926            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9927                '_,
9928            > {
9929                (
9930                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9931                        &self.hotShotBlockCommRoot,
9932                    ),
9933                    <alloy::sol_types::sol_data::Uint<
9934                        64,
9935                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9936                )
9937            }
9938        }
9939        #[automatically_derived]
9940        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9941            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9942            type Token<'a> = <Self::Parameters<
9943                'a,
9944            > as alloy_sol_types::SolType>::Token<'a>;
9945            type Return = getHotShotCommitmentReturn;
9946            type ReturnTuple<'a> = (
9947                BN254::ScalarField,
9948                alloy::sol_types::sol_data::Uint<64>,
9949            );
9950            type ReturnToken<'a> = <Self::ReturnTuple<
9951                'a,
9952            > as alloy_sol_types::SolType>::Token<'a>;
9953            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9954            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9955            #[inline]
9956            fn new<'a>(
9957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9958            ) -> Self {
9959                tuple.into()
9960            }
9961            #[inline]
9962            fn tokenize(&self) -> Self::Token<'_> {
9963                (
9964                    <alloy::sol_types::sol_data::Uint<
9965                        256,
9966                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9967                )
9968            }
9969            #[inline]
9970            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9971                getHotShotCommitmentReturn::_tokenize(ret)
9972            }
9973            #[inline]
9974            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9975                <Self::ReturnTuple<
9976                    '_,
9977                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9978                    .map(Into::into)
9979            }
9980            #[inline]
9981            fn abi_decode_returns_validate(
9982                data: &[u8],
9983            ) -> alloy_sol_types::Result<Self::Return> {
9984                <Self::ReturnTuple<
9985                    '_,
9986                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9987                    .map(Into::into)
9988            }
9989        }
9990    };
9991    #[derive(serde::Serialize, serde::Deserialize)]
9992    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9993    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9994```solidity
9995function getStateHistoryCount() external view returns (uint256);
9996```*/
9997    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9998    #[derive(Clone)]
9999    pub struct getStateHistoryCountCall;
10000    #[derive(serde::Serialize, serde::Deserialize)]
10001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10002    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10003    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10004    #[derive(Clone)]
10005    pub struct getStateHistoryCountReturn {
10006        #[allow(missing_docs)]
10007        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10008    }
10009    #[allow(
10010        non_camel_case_types,
10011        non_snake_case,
10012        clippy::pub_underscore_fields,
10013        clippy::style
10014    )]
10015    const _: () = {
10016        use alloy::sol_types as alloy_sol_types;
10017        {
10018            #[doc(hidden)]
10019            #[allow(dead_code)]
10020            type UnderlyingSolTuple<'a> = ();
10021            #[doc(hidden)]
10022            type UnderlyingRustTuple<'a> = ();
10023            #[cfg(test)]
10024            #[allow(dead_code, unreachable_patterns)]
10025            fn _type_assertion(
10026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10027            ) {
10028                match _t {
10029                    alloy_sol_types::private::AssertTypeEq::<
10030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10031                    >(_) => {}
10032                }
10033            }
10034            #[automatically_derived]
10035            #[doc(hidden)]
10036            impl ::core::convert::From<getStateHistoryCountCall>
10037            for UnderlyingRustTuple<'_> {
10038                fn from(value: getStateHistoryCountCall) -> Self {
10039                    ()
10040                }
10041            }
10042            #[automatically_derived]
10043            #[doc(hidden)]
10044            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10045            for getStateHistoryCountCall {
10046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10047                    Self
10048                }
10049            }
10050        }
10051        {
10052            #[doc(hidden)]
10053            #[allow(dead_code)]
10054            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10055            #[doc(hidden)]
10056            type UnderlyingRustTuple<'a> = (
10057                alloy::sol_types::private::primitives::aliases::U256,
10058            );
10059            #[cfg(test)]
10060            #[allow(dead_code, unreachable_patterns)]
10061            fn _type_assertion(
10062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10063            ) {
10064                match _t {
10065                    alloy_sol_types::private::AssertTypeEq::<
10066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10067                    >(_) => {}
10068                }
10069            }
10070            #[automatically_derived]
10071            #[doc(hidden)]
10072            impl ::core::convert::From<getStateHistoryCountReturn>
10073            for UnderlyingRustTuple<'_> {
10074                fn from(value: getStateHistoryCountReturn) -> Self {
10075                    (value._0,)
10076                }
10077            }
10078            #[automatically_derived]
10079            #[doc(hidden)]
10080            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10081            for getStateHistoryCountReturn {
10082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10083                    Self { _0: tuple.0 }
10084                }
10085            }
10086        }
10087        #[automatically_derived]
10088        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10089            type Parameters<'a> = ();
10090            type Token<'a> = <Self::Parameters<
10091                'a,
10092            > as alloy_sol_types::SolType>::Token<'a>;
10093            type Return = alloy::sol_types::private::primitives::aliases::U256;
10094            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10095            type ReturnToken<'a> = <Self::ReturnTuple<
10096                'a,
10097            > as alloy_sol_types::SolType>::Token<'a>;
10098            const SIGNATURE: &'static str = "getStateHistoryCount()";
10099            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10100            #[inline]
10101            fn new<'a>(
10102                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10103            ) -> Self {
10104                tuple.into()
10105            }
10106            #[inline]
10107            fn tokenize(&self) -> Self::Token<'_> {
10108                ()
10109            }
10110            #[inline]
10111            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10112                (
10113                    <alloy::sol_types::sol_data::Uint<
10114                        256,
10115                    > as alloy_sol_types::SolType>::tokenize(ret),
10116                )
10117            }
10118            #[inline]
10119            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10120                <Self::ReturnTuple<
10121                    '_,
10122                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10123                    .map(|r| {
10124                        let r: getStateHistoryCountReturn = r.into();
10125                        r._0
10126                    })
10127            }
10128            #[inline]
10129            fn abi_decode_returns_validate(
10130                data: &[u8],
10131            ) -> alloy_sol_types::Result<Self::Return> {
10132                <Self::ReturnTuple<
10133                    '_,
10134                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10135                    .map(|r| {
10136                        let r: getStateHistoryCountReturn = r.into();
10137                        r._0
10138                    })
10139            }
10140        }
10141    };
10142    #[derive(serde::Serialize, serde::Deserialize)]
10143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10144    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10145```solidity
10146function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10147```*/
10148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10149    #[derive(Clone)]
10150    pub struct getVersionCall;
10151    #[derive(serde::Serialize, serde::Deserialize)]
10152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10153    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10155    #[derive(Clone)]
10156    pub struct getVersionReturn {
10157        #[allow(missing_docs)]
10158        pub majorVersion: u8,
10159        #[allow(missing_docs)]
10160        pub minorVersion: u8,
10161        #[allow(missing_docs)]
10162        pub patchVersion: u8,
10163    }
10164    #[allow(
10165        non_camel_case_types,
10166        non_snake_case,
10167        clippy::pub_underscore_fields,
10168        clippy::style
10169    )]
10170    const _: () = {
10171        use alloy::sol_types as alloy_sol_types;
10172        {
10173            #[doc(hidden)]
10174            #[allow(dead_code)]
10175            type UnderlyingSolTuple<'a> = ();
10176            #[doc(hidden)]
10177            type UnderlyingRustTuple<'a> = ();
10178            #[cfg(test)]
10179            #[allow(dead_code, unreachable_patterns)]
10180            fn _type_assertion(
10181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10182            ) {
10183                match _t {
10184                    alloy_sol_types::private::AssertTypeEq::<
10185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10186                    >(_) => {}
10187                }
10188            }
10189            #[automatically_derived]
10190            #[doc(hidden)]
10191            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10192                fn from(value: getVersionCall) -> Self {
10193                    ()
10194                }
10195            }
10196            #[automatically_derived]
10197            #[doc(hidden)]
10198            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10199                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10200                    Self
10201                }
10202            }
10203        }
10204        {
10205            #[doc(hidden)]
10206            #[allow(dead_code)]
10207            type UnderlyingSolTuple<'a> = (
10208                alloy::sol_types::sol_data::Uint<8>,
10209                alloy::sol_types::sol_data::Uint<8>,
10210                alloy::sol_types::sol_data::Uint<8>,
10211            );
10212            #[doc(hidden)]
10213            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10214            #[cfg(test)]
10215            #[allow(dead_code, unreachable_patterns)]
10216            fn _type_assertion(
10217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10218            ) {
10219                match _t {
10220                    alloy_sol_types::private::AssertTypeEq::<
10221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10222                    >(_) => {}
10223                }
10224            }
10225            #[automatically_derived]
10226            #[doc(hidden)]
10227            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10228                fn from(value: getVersionReturn) -> Self {
10229                    (value.majorVersion, value.minorVersion, value.patchVersion)
10230                }
10231            }
10232            #[automatically_derived]
10233            #[doc(hidden)]
10234            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10236                    Self {
10237                        majorVersion: tuple.0,
10238                        minorVersion: tuple.1,
10239                        patchVersion: tuple.2,
10240                    }
10241                }
10242            }
10243        }
10244        impl getVersionReturn {
10245            fn _tokenize(
10246                &self,
10247            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10248                (
10249                    <alloy::sol_types::sol_data::Uint<
10250                        8,
10251                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10252                    <alloy::sol_types::sol_data::Uint<
10253                        8,
10254                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10255                    <alloy::sol_types::sol_data::Uint<
10256                        8,
10257                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10258                )
10259            }
10260        }
10261        #[automatically_derived]
10262        impl alloy_sol_types::SolCall for getVersionCall {
10263            type Parameters<'a> = ();
10264            type Token<'a> = <Self::Parameters<
10265                'a,
10266            > as alloy_sol_types::SolType>::Token<'a>;
10267            type Return = getVersionReturn;
10268            type ReturnTuple<'a> = (
10269                alloy::sol_types::sol_data::Uint<8>,
10270                alloy::sol_types::sol_data::Uint<8>,
10271                alloy::sol_types::sol_data::Uint<8>,
10272            );
10273            type ReturnToken<'a> = <Self::ReturnTuple<
10274                'a,
10275            > as alloy_sol_types::SolType>::Token<'a>;
10276            const SIGNATURE: &'static str = "getVersion()";
10277            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10278            #[inline]
10279            fn new<'a>(
10280                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10281            ) -> Self {
10282                tuple.into()
10283            }
10284            #[inline]
10285            fn tokenize(&self) -> Self::Token<'_> {
10286                ()
10287            }
10288            #[inline]
10289            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10290                getVersionReturn::_tokenize(ret)
10291            }
10292            #[inline]
10293            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10294                <Self::ReturnTuple<
10295                    '_,
10296                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10297                    .map(Into::into)
10298            }
10299            #[inline]
10300            fn abi_decode_returns_validate(
10301                data: &[u8],
10302            ) -> alloy_sol_types::Result<Self::Return> {
10303                <Self::ReturnTuple<
10304                    '_,
10305                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10306                    .map(Into::into)
10307            }
10308        }
10309    };
10310    #[derive(serde::Serialize, serde::Deserialize)]
10311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10312    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10313```solidity
10314function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10315```*/
10316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10317    #[derive(Clone)]
10318    pub struct initializeCall {
10319        #[allow(missing_docs)]
10320        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10321        #[allow(missing_docs)]
10322        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10323        #[allow(missing_docs)]
10324        pub _stateHistoryRetentionPeriod: u32,
10325        #[allow(missing_docs)]
10326        pub owner: alloy::sol_types::private::Address,
10327    }
10328    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10330    #[derive(Clone)]
10331    pub struct initializeReturn {}
10332    #[allow(
10333        non_camel_case_types,
10334        non_snake_case,
10335        clippy::pub_underscore_fields,
10336        clippy::style
10337    )]
10338    const _: () = {
10339        use alloy::sol_types as alloy_sol_types;
10340        {
10341            #[doc(hidden)]
10342            #[allow(dead_code)]
10343            type UnderlyingSolTuple<'a> = (
10344                LightClient::LightClientState,
10345                LightClient::StakeTableState,
10346                alloy::sol_types::sol_data::Uint<32>,
10347                alloy::sol_types::sol_data::Address,
10348            );
10349            #[doc(hidden)]
10350            type UnderlyingRustTuple<'a> = (
10351                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10352                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10353                u32,
10354                alloy::sol_types::private::Address,
10355            );
10356            #[cfg(test)]
10357            #[allow(dead_code, unreachable_patterns)]
10358            fn _type_assertion(
10359                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10360            ) {
10361                match _t {
10362                    alloy_sol_types::private::AssertTypeEq::<
10363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10364                    >(_) => {}
10365                }
10366            }
10367            #[automatically_derived]
10368            #[doc(hidden)]
10369            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10370                fn from(value: initializeCall) -> Self {
10371                    (
10372                        value._genesis,
10373                        value._genesisStakeTableState,
10374                        value._stateHistoryRetentionPeriod,
10375                        value.owner,
10376                    )
10377                }
10378            }
10379            #[automatically_derived]
10380            #[doc(hidden)]
10381            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10383                    Self {
10384                        _genesis: tuple.0,
10385                        _genesisStakeTableState: tuple.1,
10386                        _stateHistoryRetentionPeriod: tuple.2,
10387                        owner: tuple.3,
10388                    }
10389                }
10390            }
10391        }
10392        {
10393            #[doc(hidden)]
10394            #[allow(dead_code)]
10395            type UnderlyingSolTuple<'a> = ();
10396            #[doc(hidden)]
10397            type UnderlyingRustTuple<'a> = ();
10398            #[cfg(test)]
10399            #[allow(dead_code, unreachable_patterns)]
10400            fn _type_assertion(
10401                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10402            ) {
10403                match _t {
10404                    alloy_sol_types::private::AssertTypeEq::<
10405                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10406                    >(_) => {}
10407                }
10408            }
10409            #[automatically_derived]
10410            #[doc(hidden)]
10411            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10412                fn from(value: initializeReturn) -> Self {
10413                    ()
10414                }
10415            }
10416            #[automatically_derived]
10417            #[doc(hidden)]
10418            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10420                    Self {}
10421                }
10422            }
10423        }
10424        impl initializeReturn {
10425            fn _tokenize(
10426                &self,
10427            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10428                ()
10429            }
10430        }
10431        #[automatically_derived]
10432        impl alloy_sol_types::SolCall for initializeCall {
10433            type Parameters<'a> = (
10434                LightClient::LightClientState,
10435                LightClient::StakeTableState,
10436                alloy::sol_types::sol_data::Uint<32>,
10437                alloy::sol_types::sol_data::Address,
10438            );
10439            type Token<'a> = <Self::Parameters<
10440                'a,
10441            > as alloy_sol_types::SolType>::Token<'a>;
10442            type Return = initializeReturn;
10443            type ReturnTuple<'a> = ();
10444            type ReturnToken<'a> = <Self::ReturnTuple<
10445                'a,
10446            > as alloy_sol_types::SolType>::Token<'a>;
10447            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10448            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10449            #[inline]
10450            fn new<'a>(
10451                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10452            ) -> Self {
10453                tuple.into()
10454            }
10455            #[inline]
10456            fn tokenize(&self) -> Self::Token<'_> {
10457                (
10458                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10459                        &self._genesis,
10460                    ),
10461                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10462                        &self._genesisStakeTableState,
10463                    ),
10464                    <alloy::sol_types::sol_data::Uint<
10465                        32,
10466                    > as alloy_sol_types::SolType>::tokenize(
10467                        &self._stateHistoryRetentionPeriod,
10468                    ),
10469                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10470                        &self.owner,
10471                    ),
10472                )
10473            }
10474            #[inline]
10475            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10476                initializeReturn::_tokenize(ret)
10477            }
10478            #[inline]
10479            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10480                <Self::ReturnTuple<
10481                    '_,
10482                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10483                    .map(Into::into)
10484            }
10485            #[inline]
10486            fn abi_decode_returns_validate(
10487                data: &[u8],
10488            ) -> alloy_sol_types::Result<Self::Return> {
10489                <Self::ReturnTuple<
10490                    '_,
10491                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10492                    .map(Into::into)
10493            }
10494        }
10495    };
10496    #[derive(serde::Serialize, serde::Deserialize)]
10497    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10498    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10499```solidity
10500function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10501```*/
10502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10503    #[derive(Clone)]
10504    pub struct initializeV2Call {
10505        #[allow(missing_docs)]
10506        pub _blocksPerEpoch: u64,
10507        #[allow(missing_docs)]
10508        pub _epochStartBlock: u64,
10509    }
10510    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10512    #[derive(Clone)]
10513    pub struct initializeV2Return {}
10514    #[allow(
10515        non_camel_case_types,
10516        non_snake_case,
10517        clippy::pub_underscore_fields,
10518        clippy::style
10519    )]
10520    const _: () = {
10521        use alloy::sol_types as alloy_sol_types;
10522        {
10523            #[doc(hidden)]
10524            #[allow(dead_code)]
10525            type UnderlyingSolTuple<'a> = (
10526                alloy::sol_types::sol_data::Uint<64>,
10527                alloy::sol_types::sol_data::Uint<64>,
10528            );
10529            #[doc(hidden)]
10530            type UnderlyingRustTuple<'a> = (u64, u64);
10531            #[cfg(test)]
10532            #[allow(dead_code, unreachable_patterns)]
10533            fn _type_assertion(
10534                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10535            ) {
10536                match _t {
10537                    alloy_sol_types::private::AssertTypeEq::<
10538                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10539                    >(_) => {}
10540                }
10541            }
10542            #[automatically_derived]
10543            #[doc(hidden)]
10544            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10545                fn from(value: initializeV2Call) -> Self {
10546                    (value._blocksPerEpoch, value._epochStartBlock)
10547                }
10548            }
10549            #[automatically_derived]
10550            #[doc(hidden)]
10551            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10552                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10553                    Self {
10554                        _blocksPerEpoch: tuple.0,
10555                        _epochStartBlock: tuple.1,
10556                    }
10557                }
10558            }
10559        }
10560        {
10561            #[doc(hidden)]
10562            #[allow(dead_code)]
10563            type UnderlyingSolTuple<'a> = ();
10564            #[doc(hidden)]
10565            type UnderlyingRustTuple<'a> = ();
10566            #[cfg(test)]
10567            #[allow(dead_code, unreachable_patterns)]
10568            fn _type_assertion(
10569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10570            ) {
10571                match _t {
10572                    alloy_sol_types::private::AssertTypeEq::<
10573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10574                    >(_) => {}
10575                }
10576            }
10577            #[automatically_derived]
10578            #[doc(hidden)]
10579            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10580                fn from(value: initializeV2Return) -> Self {
10581                    ()
10582                }
10583            }
10584            #[automatically_derived]
10585            #[doc(hidden)]
10586            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10587                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10588                    Self {}
10589                }
10590            }
10591        }
10592        impl initializeV2Return {
10593            fn _tokenize(
10594                &self,
10595            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10596                ()
10597            }
10598        }
10599        #[automatically_derived]
10600        impl alloy_sol_types::SolCall for initializeV2Call {
10601            type Parameters<'a> = (
10602                alloy::sol_types::sol_data::Uint<64>,
10603                alloy::sol_types::sol_data::Uint<64>,
10604            );
10605            type Token<'a> = <Self::Parameters<
10606                'a,
10607            > as alloy_sol_types::SolType>::Token<'a>;
10608            type Return = initializeV2Return;
10609            type ReturnTuple<'a> = ();
10610            type ReturnToken<'a> = <Self::ReturnTuple<
10611                'a,
10612            > as alloy_sol_types::SolType>::Token<'a>;
10613            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10614            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10615            #[inline]
10616            fn new<'a>(
10617                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10618            ) -> Self {
10619                tuple.into()
10620            }
10621            #[inline]
10622            fn tokenize(&self) -> Self::Token<'_> {
10623                (
10624                    <alloy::sol_types::sol_data::Uint<
10625                        64,
10626                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10627                    <alloy::sol_types::sol_data::Uint<
10628                        64,
10629                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10630                )
10631            }
10632            #[inline]
10633            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10634                initializeV2Return::_tokenize(ret)
10635            }
10636            #[inline]
10637            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10638                <Self::ReturnTuple<
10639                    '_,
10640                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10641                    .map(Into::into)
10642            }
10643            #[inline]
10644            fn abi_decode_returns_validate(
10645                data: &[u8],
10646            ) -> alloy_sol_types::Result<Self::Return> {
10647                <Self::ReturnTuple<
10648                    '_,
10649                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10650                    .map(Into::into)
10651            }
10652        }
10653    };
10654    #[derive(serde::Serialize, serde::Deserialize)]
10655    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10656    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
10657```solidity
10658function initializeV3() external;
10659```*/
10660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10661    #[derive(Clone)]
10662    pub struct initializeV3Call;
10663    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
10664    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10665    #[derive(Clone)]
10666    pub struct initializeV3Return {}
10667    #[allow(
10668        non_camel_case_types,
10669        non_snake_case,
10670        clippy::pub_underscore_fields,
10671        clippy::style
10672    )]
10673    const _: () = {
10674        use alloy::sol_types as alloy_sol_types;
10675        {
10676            #[doc(hidden)]
10677            #[allow(dead_code)]
10678            type UnderlyingSolTuple<'a> = ();
10679            #[doc(hidden)]
10680            type UnderlyingRustTuple<'a> = ();
10681            #[cfg(test)]
10682            #[allow(dead_code, unreachable_patterns)]
10683            fn _type_assertion(
10684                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10685            ) {
10686                match _t {
10687                    alloy_sol_types::private::AssertTypeEq::<
10688                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10689                    >(_) => {}
10690                }
10691            }
10692            #[automatically_derived]
10693            #[doc(hidden)]
10694            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
10695                fn from(value: initializeV3Call) -> Self {
10696                    ()
10697                }
10698            }
10699            #[automatically_derived]
10700            #[doc(hidden)]
10701            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
10702                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10703                    Self
10704                }
10705            }
10706        }
10707        {
10708            #[doc(hidden)]
10709            #[allow(dead_code)]
10710            type UnderlyingSolTuple<'a> = ();
10711            #[doc(hidden)]
10712            type UnderlyingRustTuple<'a> = ();
10713            #[cfg(test)]
10714            #[allow(dead_code, unreachable_patterns)]
10715            fn _type_assertion(
10716                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10717            ) {
10718                match _t {
10719                    alloy_sol_types::private::AssertTypeEq::<
10720                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10721                    >(_) => {}
10722                }
10723            }
10724            #[automatically_derived]
10725            #[doc(hidden)]
10726            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
10727                fn from(value: initializeV3Return) -> Self {
10728                    ()
10729                }
10730            }
10731            #[automatically_derived]
10732            #[doc(hidden)]
10733            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
10734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10735                    Self {}
10736                }
10737            }
10738        }
10739        impl initializeV3Return {
10740            fn _tokenize(
10741                &self,
10742            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10743                ()
10744            }
10745        }
10746        #[automatically_derived]
10747        impl alloy_sol_types::SolCall for initializeV3Call {
10748            type Parameters<'a> = ();
10749            type Token<'a> = <Self::Parameters<
10750                'a,
10751            > as alloy_sol_types::SolType>::Token<'a>;
10752            type Return = initializeV3Return;
10753            type ReturnTuple<'a> = ();
10754            type ReturnToken<'a> = <Self::ReturnTuple<
10755                'a,
10756            > as alloy_sol_types::SolType>::Token<'a>;
10757            const SIGNATURE: &'static str = "initializeV3()";
10758            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
10759            #[inline]
10760            fn new<'a>(
10761                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10762            ) -> Self {
10763                tuple.into()
10764            }
10765            #[inline]
10766            fn tokenize(&self) -> Self::Token<'_> {
10767                ()
10768            }
10769            #[inline]
10770            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10771                initializeV3Return::_tokenize(ret)
10772            }
10773            #[inline]
10774            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10775                <Self::ReturnTuple<
10776                    '_,
10777                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10778                    .map(Into::into)
10779            }
10780            #[inline]
10781            fn abi_decode_returns_validate(
10782                data: &[u8],
10783            ) -> alloy_sol_types::Result<Self::Return> {
10784                <Self::ReturnTuple<
10785                    '_,
10786                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10787                    .map(Into::into)
10788            }
10789        }
10790    };
10791    #[derive(serde::Serialize, serde::Deserialize)]
10792    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10793    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10794```solidity
10795function isEpochRoot(uint64 blockHeight) external view returns (bool);
10796```*/
10797    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10798    #[derive(Clone)]
10799    pub struct isEpochRootCall {
10800        #[allow(missing_docs)]
10801        pub blockHeight: u64,
10802    }
10803    #[derive(serde::Serialize, serde::Deserialize)]
10804    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10805    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10807    #[derive(Clone)]
10808    pub struct isEpochRootReturn {
10809        #[allow(missing_docs)]
10810        pub _0: bool,
10811    }
10812    #[allow(
10813        non_camel_case_types,
10814        non_snake_case,
10815        clippy::pub_underscore_fields,
10816        clippy::style
10817    )]
10818    const _: () = {
10819        use alloy::sol_types as alloy_sol_types;
10820        {
10821            #[doc(hidden)]
10822            #[allow(dead_code)]
10823            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10824            #[doc(hidden)]
10825            type UnderlyingRustTuple<'a> = (u64,);
10826            #[cfg(test)]
10827            #[allow(dead_code, unreachable_patterns)]
10828            fn _type_assertion(
10829                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10830            ) {
10831                match _t {
10832                    alloy_sol_types::private::AssertTypeEq::<
10833                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10834                    >(_) => {}
10835                }
10836            }
10837            #[automatically_derived]
10838            #[doc(hidden)]
10839            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10840                fn from(value: isEpochRootCall) -> Self {
10841                    (value.blockHeight,)
10842                }
10843            }
10844            #[automatically_derived]
10845            #[doc(hidden)]
10846            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10848                    Self { blockHeight: tuple.0 }
10849                }
10850            }
10851        }
10852        {
10853            #[doc(hidden)]
10854            #[allow(dead_code)]
10855            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10856            #[doc(hidden)]
10857            type UnderlyingRustTuple<'a> = (bool,);
10858            #[cfg(test)]
10859            #[allow(dead_code, unreachable_patterns)]
10860            fn _type_assertion(
10861                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10862            ) {
10863                match _t {
10864                    alloy_sol_types::private::AssertTypeEq::<
10865                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10866                    >(_) => {}
10867                }
10868            }
10869            #[automatically_derived]
10870            #[doc(hidden)]
10871            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10872                fn from(value: isEpochRootReturn) -> Self {
10873                    (value._0,)
10874                }
10875            }
10876            #[automatically_derived]
10877            #[doc(hidden)]
10878            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10879                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10880                    Self { _0: tuple.0 }
10881                }
10882            }
10883        }
10884        #[automatically_derived]
10885        impl alloy_sol_types::SolCall for isEpochRootCall {
10886            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10887            type Token<'a> = <Self::Parameters<
10888                'a,
10889            > as alloy_sol_types::SolType>::Token<'a>;
10890            type Return = bool;
10891            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10892            type ReturnToken<'a> = <Self::ReturnTuple<
10893                'a,
10894            > as alloy_sol_types::SolType>::Token<'a>;
10895            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10896            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10897            #[inline]
10898            fn new<'a>(
10899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10900            ) -> Self {
10901                tuple.into()
10902            }
10903            #[inline]
10904            fn tokenize(&self) -> Self::Token<'_> {
10905                (
10906                    <alloy::sol_types::sol_data::Uint<
10907                        64,
10908                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10909                )
10910            }
10911            #[inline]
10912            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10913                (
10914                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10915                        ret,
10916                    ),
10917                )
10918            }
10919            #[inline]
10920            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10921                <Self::ReturnTuple<
10922                    '_,
10923                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10924                    .map(|r| {
10925                        let r: isEpochRootReturn = r.into();
10926                        r._0
10927                    })
10928            }
10929            #[inline]
10930            fn abi_decode_returns_validate(
10931                data: &[u8],
10932            ) -> alloy_sol_types::Result<Self::Return> {
10933                <Self::ReturnTuple<
10934                    '_,
10935                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10936                    .map(|r| {
10937                        let r: isEpochRootReturn = r.into();
10938                        r._0
10939                    })
10940            }
10941        }
10942    };
10943    #[derive(serde::Serialize, serde::Deserialize)]
10944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10945    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10946```solidity
10947function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10948```*/
10949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10950    #[derive(Clone)]
10951    pub struct isGtEpochRootCall {
10952        #[allow(missing_docs)]
10953        pub blockHeight: u64,
10954    }
10955    #[derive(serde::Serialize, serde::Deserialize)]
10956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10957    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10959    #[derive(Clone)]
10960    pub struct isGtEpochRootReturn {
10961        #[allow(missing_docs)]
10962        pub _0: bool,
10963    }
10964    #[allow(
10965        non_camel_case_types,
10966        non_snake_case,
10967        clippy::pub_underscore_fields,
10968        clippy::style
10969    )]
10970    const _: () = {
10971        use alloy::sol_types as alloy_sol_types;
10972        {
10973            #[doc(hidden)]
10974            #[allow(dead_code)]
10975            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10976            #[doc(hidden)]
10977            type UnderlyingRustTuple<'a> = (u64,);
10978            #[cfg(test)]
10979            #[allow(dead_code, unreachable_patterns)]
10980            fn _type_assertion(
10981                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10982            ) {
10983                match _t {
10984                    alloy_sol_types::private::AssertTypeEq::<
10985                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10986                    >(_) => {}
10987                }
10988            }
10989            #[automatically_derived]
10990            #[doc(hidden)]
10991            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10992                fn from(value: isGtEpochRootCall) -> Self {
10993                    (value.blockHeight,)
10994                }
10995            }
10996            #[automatically_derived]
10997            #[doc(hidden)]
10998            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10999                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11000                    Self { blockHeight: tuple.0 }
11001                }
11002            }
11003        }
11004        {
11005            #[doc(hidden)]
11006            #[allow(dead_code)]
11007            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11008            #[doc(hidden)]
11009            type UnderlyingRustTuple<'a> = (bool,);
11010            #[cfg(test)]
11011            #[allow(dead_code, unreachable_patterns)]
11012            fn _type_assertion(
11013                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11014            ) {
11015                match _t {
11016                    alloy_sol_types::private::AssertTypeEq::<
11017                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11018                    >(_) => {}
11019                }
11020            }
11021            #[automatically_derived]
11022            #[doc(hidden)]
11023            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11024                fn from(value: isGtEpochRootReturn) -> Self {
11025                    (value._0,)
11026                }
11027            }
11028            #[automatically_derived]
11029            #[doc(hidden)]
11030            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11032                    Self { _0: tuple.0 }
11033                }
11034            }
11035        }
11036        #[automatically_derived]
11037        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11038            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11039            type Token<'a> = <Self::Parameters<
11040                'a,
11041            > as alloy_sol_types::SolType>::Token<'a>;
11042            type Return = bool;
11043            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11044            type ReturnToken<'a> = <Self::ReturnTuple<
11045                'a,
11046            > as alloy_sol_types::SolType>::Token<'a>;
11047            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11048            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11049            #[inline]
11050            fn new<'a>(
11051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11052            ) -> Self {
11053                tuple.into()
11054            }
11055            #[inline]
11056            fn tokenize(&self) -> Self::Token<'_> {
11057                (
11058                    <alloy::sol_types::sol_data::Uint<
11059                        64,
11060                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11061                )
11062            }
11063            #[inline]
11064            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11065                (
11066                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11067                        ret,
11068                    ),
11069                )
11070            }
11071            #[inline]
11072            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11073                <Self::ReturnTuple<
11074                    '_,
11075                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11076                    .map(|r| {
11077                        let r: isGtEpochRootReturn = r.into();
11078                        r._0
11079                    })
11080            }
11081            #[inline]
11082            fn abi_decode_returns_validate(
11083                data: &[u8],
11084            ) -> alloy_sol_types::Result<Self::Return> {
11085                <Self::ReturnTuple<
11086                    '_,
11087                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11088                    .map(|r| {
11089                        let r: isGtEpochRootReturn = r.into();
11090                        r._0
11091                    })
11092            }
11093        }
11094    };
11095    #[derive(serde::Serialize, serde::Deserialize)]
11096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11097    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11098```solidity
11099function isPermissionedProverEnabled() external view returns (bool);
11100```*/
11101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11102    #[derive(Clone)]
11103    pub struct isPermissionedProverEnabledCall;
11104    #[derive(serde::Serialize, serde::Deserialize)]
11105    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11106    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11108    #[derive(Clone)]
11109    pub struct isPermissionedProverEnabledReturn {
11110        #[allow(missing_docs)]
11111        pub _0: bool,
11112    }
11113    #[allow(
11114        non_camel_case_types,
11115        non_snake_case,
11116        clippy::pub_underscore_fields,
11117        clippy::style
11118    )]
11119    const _: () = {
11120        use alloy::sol_types as alloy_sol_types;
11121        {
11122            #[doc(hidden)]
11123            #[allow(dead_code)]
11124            type UnderlyingSolTuple<'a> = ();
11125            #[doc(hidden)]
11126            type UnderlyingRustTuple<'a> = ();
11127            #[cfg(test)]
11128            #[allow(dead_code, unreachable_patterns)]
11129            fn _type_assertion(
11130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11131            ) {
11132                match _t {
11133                    alloy_sol_types::private::AssertTypeEq::<
11134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11135                    >(_) => {}
11136                }
11137            }
11138            #[automatically_derived]
11139            #[doc(hidden)]
11140            impl ::core::convert::From<isPermissionedProverEnabledCall>
11141            for UnderlyingRustTuple<'_> {
11142                fn from(value: isPermissionedProverEnabledCall) -> Self {
11143                    ()
11144                }
11145            }
11146            #[automatically_derived]
11147            #[doc(hidden)]
11148            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11149            for isPermissionedProverEnabledCall {
11150                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11151                    Self
11152                }
11153            }
11154        }
11155        {
11156            #[doc(hidden)]
11157            #[allow(dead_code)]
11158            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11159            #[doc(hidden)]
11160            type UnderlyingRustTuple<'a> = (bool,);
11161            #[cfg(test)]
11162            #[allow(dead_code, unreachable_patterns)]
11163            fn _type_assertion(
11164                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11165            ) {
11166                match _t {
11167                    alloy_sol_types::private::AssertTypeEq::<
11168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11169                    >(_) => {}
11170                }
11171            }
11172            #[automatically_derived]
11173            #[doc(hidden)]
11174            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11175            for UnderlyingRustTuple<'_> {
11176                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11177                    (value._0,)
11178                }
11179            }
11180            #[automatically_derived]
11181            #[doc(hidden)]
11182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11183            for isPermissionedProverEnabledReturn {
11184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11185                    Self { _0: tuple.0 }
11186                }
11187            }
11188        }
11189        #[automatically_derived]
11190        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11191            type Parameters<'a> = ();
11192            type Token<'a> = <Self::Parameters<
11193                'a,
11194            > as alloy_sol_types::SolType>::Token<'a>;
11195            type Return = bool;
11196            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11197            type ReturnToken<'a> = <Self::ReturnTuple<
11198                'a,
11199            > as alloy_sol_types::SolType>::Token<'a>;
11200            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11201            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11202            #[inline]
11203            fn new<'a>(
11204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11205            ) -> Self {
11206                tuple.into()
11207            }
11208            #[inline]
11209            fn tokenize(&self) -> Self::Token<'_> {
11210                ()
11211            }
11212            #[inline]
11213            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11214                (
11215                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11216                        ret,
11217                    ),
11218                )
11219            }
11220            #[inline]
11221            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11222                <Self::ReturnTuple<
11223                    '_,
11224                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11225                    .map(|r| {
11226                        let r: isPermissionedProverEnabledReturn = r.into();
11227                        r._0
11228                    })
11229            }
11230            #[inline]
11231            fn abi_decode_returns_validate(
11232                data: &[u8],
11233            ) -> alloy_sol_types::Result<Self::Return> {
11234                <Self::ReturnTuple<
11235                    '_,
11236                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11237                    .map(|r| {
11238                        let r: isPermissionedProverEnabledReturn = r.into();
11239                        r._0
11240                    })
11241            }
11242        }
11243    };
11244    #[derive(serde::Serialize, serde::Deserialize)]
11245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11246    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11247```solidity
11248function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
11249```*/
11250    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11251    #[derive(Clone)]
11252    pub struct lagOverEscapeHatchThresholdCall {
11253        #[allow(missing_docs)]
11254        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11255        #[allow(missing_docs)]
11256        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
11257    }
11258    #[derive(serde::Serialize, serde::Deserialize)]
11259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11260    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11262    #[derive(Clone)]
11263    pub struct lagOverEscapeHatchThresholdReturn {
11264        #[allow(missing_docs)]
11265        pub _0: bool,
11266    }
11267    #[allow(
11268        non_camel_case_types,
11269        non_snake_case,
11270        clippy::pub_underscore_fields,
11271        clippy::style
11272    )]
11273    const _: () = {
11274        use alloy::sol_types as alloy_sol_types;
11275        {
11276            #[doc(hidden)]
11277            #[allow(dead_code)]
11278            type UnderlyingSolTuple<'a> = (
11279                alloy::sol_types::sol_data::Uint<256>,
11280                alloy::sol_types::sol_data::Uint<256>,
11281            );
11282            #[doc(hidden)]
11283            type UnderlyingRustTuple<'a> = (
11284                alloy::sol_types::private::primitives::aliases::U256,
11285                alloy::sol_types::private::primitives::aliases::U256,
11286            );
11287            #[cfg(test)]
11288            #[allow(dead_code, unreachable_patterns)]
11289            fn _type_assertion(
11290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11291            ) {
11292                match _t {
11293                    alloy_sol_types::private::AssertTypeEq::<
11294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11295                    >(_) => {}
11296                }
11297            }
11298            #[automatically_derived]
11299            #[doc(hidden)]
11300            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11301            for UnderlyingRustTuple<'_> {
11302                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11303                    (value.blockNumber, value.blockThreshold)
11304                }
11305            }
11306            #[automatically_derived]
11307            #[doc(hidden)]
11308            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11309            for lagOverEscapeHatchThresholdCall {
11310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11311                    Self {
11312                        blockNumber: tuple.0,
11313                        blockThreshold: tuple.1,
11314                    }
11315                }
11316            }
11317        }
11318        {
11319            #[doc(hidden)]
11320            #[allow(dead_code)]
11321            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11322            #[doc(hidden)]
11323            type UnderlyingRustTuple<'a> = (bool,);
11324            #[cfg(test)]
11325            #[allow(dead_code, unreachable_patterns)]
11326            fn _type_assertion(
11327                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11328            ) {
11329                match _t {
11330                    alloy_sol_types::private::AssertTypeEq::<
11331                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11332                    >(_) => {}
11333                }
11334            }
11335            #[automatically_derived]
11336            #[doc(hidden)]
11337            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11338            for UnderlyingRustTuple<'_> {
11339                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11340                    (value._0,)
11341                }
11342            }
11343            #[automatically_derived]
11344            #[doc(hidden)]
11345            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11346            for lagOverEscapeHatchThresholdReturn {
11347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11348                    Self { _0: tuple.0 }
11349                }
11350            }
11351        }
11352        #[automatically_derived]
11353        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11354            type Parameters<'a> = (
11355                alloy::sol_types::sol_data::Uint<256>,
11356                alloy::sol_types::sol_data::Uint<256>,
11357            );
11358            type Token<'a> = <Self::Parameters<
11359                'a,
11360            > as alloy_sol_types::SolType>::Token<'a>;
11361            type Return = bool;
11362            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11363            type ReturnToken<'a> = <Self::ReturnTuple<
11364                'a,
11365            > as alloy_sol_types::SolType>::Token<'a>;
11366            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11367            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11368            #[inline]
11369            fn new<'a>(
11370                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11371            ) -> Self {
11372                tuple.into()
11373            }
11374            #[inline]
11375            fn tokenize(&self) -> Self::Token<'_> {
11376                (
11377                    <alloy::sol_types::sol_data::Uint<
11378                        256,
11379                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11380                    <alloy::sol_types::sol_data::Uint<
11381                        256,
11382                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
11383                )
11384            }
11385            #[inline]
11386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11387                (
11388                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11389                        ret,
11390                    ),
11391                )
11392            }
11393            #[inline]
11394            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11395                <Self::ReturnTuple<
11396                    '_,
11397                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11398                    .map(|r| {
11399                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11400                        r._0
11401                    })
11402            }
11403            #[inline]
11404            fn abi_decode_returns_validate(
11405                data: &[u8],
11406            ) -> alloy_sol_types::Result<Self::Return> {
11407                <Self::ReturnTuple<
11408                    '_,
11409                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11410                    .map(|r| {
11411                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11412                        r._0
11413                    })
11414            }
11415        }
11416    };
11417    #[derive(serde::Serialize, serde::Deserialize)]
11418    #[derive()]
11419    /**Function with signature `newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x2063d4f7`.
11420```solidity
11421function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11422```*/
11423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11424    #[derive(Clone)]
11425    pub struct newFinalizedState_0Call {
11426        #[allow(missing_docs)]
11427        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11428        #[allow(missing_docs)]
11429        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11430    }
11431    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
11432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11433    #[derive(Clone)]
11434    pub struct newFinalizedState_0Return {}
11435    #[allow(
11436        non_camel_case_types,
11437        non_snake_case,
11438        clippy::pub_underscore_fields,
11439        clippy::style
11440    )]
11441    const _: () = {
11442        use alloy::sol_types as alloy_sol_types;
11443        {
11444            #[doc(hidden)]
11445            #[allow(dead_code)]
11446            type UnderlyingSolTuple<'a> = (
11447                LightClient::LightClientState,
11448                IPlonkVerifier::PlonkProof,
11449            );
11450            #[doc(hidden)]
11451            type UnderlyingRustTuple<'a> = (
11452                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11453                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11454            );
11455            #[cfg(test)]
11456            #[allow(dead_code, unreachable_patterns)]
11457            fn _type_assertion(
11458                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11459            ) {
11460                match _t {
11461                    alloy_sol_types::private::AssertTypeEq::<
11462                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11463                    >(_) => {}
11464                }
11465            }
11466            #[automatically_derived]
11467            #[doc(hidden)]
11468            impl ::core::convert::From<newFinalizedState_0Call>
11469            for UnderlyingRustTuple<'_> {
11470                fn from(value: newFinalizedState_0Call) -> Self {
11471                    (value._0, value._1)
11472                }
11473            }
11474            #[automatically_derived]
11475            #[doc(hidden)]
11476            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11477            for newFinalizedState_0Call {
11478                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11479                    Self { _0: tuple.0, _1: tuple.1 }
11480                }
11481            }
11482        }
11483        {
11484            #[doc(hidden)]
11485            #[allow(dead_code)]
11486            type UnderlyingSolTuple<'a> = ();
11487            #[doc(hidden)]
11488            type UnderlyingRustTuple<'a> = ();
11489            #[cfg(test)]
11490            #[allow(dead_code, unreachable_patterns)]
11491            fn _type_assertion(
11492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11493            ) {
11494                match _t {
11495                    alloy_sol_types::private::AssertTypeEq::<
11496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11497                    >(_) => {}
11498                }
11499            }
11500            #[automatically_derived]
11501            #[doc(hidden)]
11502            impl ::core::convert::From<newFinalizedState_0Return>
11503            for UnderlyingRustTuple<'_> {
11504                fn from(value: newFinalizedState_0Return) -> Self {
11505                    ()
11506                }
11507            }
11508            #[automatically_derived]
11509            #[doc(hidden)]
11510            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11511            for newFinalizedState_0Return {
11512                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11513                    Self {}
11514                }
11515            }
11516        }
11517        impl newFinalizedState_0Return {
11518            fn _tokenize(
11519                &self,
11520            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11521                ()
11522            }
11523        }
11524        #[automatically_derived]
11525        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11526            type Parameters<'a> = (
11527                LightClient::LightClientState,
11528                IPlonkVerifier::PlonkProof,
11529            );
11530            type Token<'a> = <Self::Parameters<
11531                'a,
11532            > as alloy_sol_types::SolType>::Token<'a>;
11533            type Return = newFinalizedState_0Return;
11534            type ReturnTuple<'a> = ();
11535            type ReturnToken<'a> = <Self::ReturnTuple<
11536                'a,
11537            > as alloy_sol_types::SolType>::Token<'a>;
11538            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11539            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11540            #[inline]
11541            fn new<'a>(
11542                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11543            ) -> Self {
11544                tuple.into()
11545            }
11546            #[inline]
11547            fn tokenize(&self) -> Self::Token<'_> {
11548                (
11549                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11550                        &self._0,
11551                    ),
11552                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11553                        &self._1,
11554                    ),
11555                )
11556            }
11557            #[inline]
11558            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11559                newFinalizedState_0Return::_tokenize(ret)
11560            }
11561            #[inline]
11562            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11563                <Self::ReturnTuple<
11564                    '_,
11565                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11566                    .map(Into::into)
11567            }
11568            #[inline]
11569            fn abi_decode_returns_validate(
11570                data: &[u8],
11571            ) -> alloy_sol_types::Result<Self::Return> {
11572                <Self::ReturnTuple<
11573                    '_,
11574                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11575                    .map(Into::into)
11576            }
11577        }
11578    };
11579    #[derive(serde::Serialize, serde::Deserialize)]
11580    #[derive()]
11581    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
11582```solidity
11583function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
11584```*/
11585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11586    #[derive(Clone)]
11587    pub struct newFinalizedState_1Call {
11588        #[allow(missing_docs)]
11589        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11590        #[allow(missing_docs)]
11591        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11592        #[allow(missing_docs)]
11593        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11594    }
11595    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
11596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11597    #[derive(Clone)]
11598    pub struct newFinalizedState_1Return {}
11599    #[allow(
11600        non_camel_case_types,
11601        non_snake_case,
11602        clippy::pub_underscore_fields,
11603        clippy::style
11604    )]
11605    const _: () = {
11606        use alloy::sol_types as alloy_sol_types;
11607        {
11608            #[doc(hidden)]
11609            #[allow(dead_code)]
11610            type UnderlyingSolTuple<'a> = (
11611                LightClient::LightClientState,
11612                LightClient::StakeTableState,
11613                IPlonkVerifier::PlonkProof,
11614            );
11615            #[doc(hidden)]
11616            type UnderlyingRustTuple<'a> = (
11617                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11618                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11619                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11620            );
11621            #[cfg(test)]
11622            #[allow(dead_code, unreachable_patterns)]
11623            fn _type_assertion(
11624                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11625            ) {
11626                match _t {
11627                    alloy_sol_types::private::AssertTypeEq::<
11628                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11629                    >(_) => {}
11630                }
11631            }
11632            #[automatically_derived]
11633            #[doc(hidden)]
11634            impl ::core::convert::From<newFinalizedState_1Call>
11635            for UnderlyingRustTuple<'_> {
11636                fn from(value: newFinalizedState_1Call) -> Self {
11637                    (value._0, value._1, value._2)
11638                }
11639            }
11640            #[automatically_derived]
11641            #[doc(hidden)]
11642            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11643            for newFinalizedState_1Call {
11644                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11645                    Self {
11646                        _0: tuple.0,
11647                        _1: tuple.1,
11648                        _2: tuple.2,
11649                    }
11650                }
11651            }
11652        }
11653        {
11654            #[doc(hidden)]
11655            #[allow(dead_code)]
11656            type UnderlyingSolTuple<'a> = ();
11657            #[doc(hidden)]
11658            type UnderlyingRustTuple<'a> = ();
11659            #[cfg(test)]
11660            #[allow(dead_code, unreachable_patterns)]
11661            fn _type_assertion(
11662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11663            ) {
11664                match _t {
11665                    alloy_sol_types::private::AssertTypeEq::<
11666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11667                    >(_) => {}
11668                }
11669            }
11670            #[automatically_derived]
11671            #[doc(hidden)]
11672            impl ::core::convert::From<newFinalizedState_1Return>
11673            for UnderlyingRustTuple<'_> {
11674                fn from(value: newFinalizedState_1Return) -> Self {
11675                    ()
11676                }
11677            }
11678            #[automatically_derived]
11679            #[doc(hidden)]
11680            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11681            for newFinalizedState_1Return {
11682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11683                    Self {}
11684                }
11685            }
11686        }
11687        impl newFinalizedState_1Return {
11688            fn _tokenize(
11689                &self,
11690            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11691                ()
11692            }
11693        }
11694        #[automatically_derived]
11695        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11696            type Parameters<'a> = (
11697                LightClient::LightClientState,
11698                LightClient::StakeTableState,
11699                IPlonkVerifier::PlonkProof,
11700            );
11701            type Token<'a> = <Self::Parameters<
11702                'a,
11703            > as alloy_sol_types::SolType>::Token<'a>;
11704            type Return = newFinalizedState_1Return;
11705            type ReturnTuple<'a> = ();
11706            type ReturnToken<'a> = <Self::ReturnTuple<
11707                'a,
11708            > as alloy_sol_types::SolType>::Token<'a>;
11709            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11710            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11711            #[inline]
11712            fn new<'a>(
11713                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11714            ) -> Self {
11715                tuple.into()
11716            }
11717            #[inline]
11718            fn tokenize(&self) -> Self::Token<'_> {
11719                (
11720                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11721                        &self._0,
11722                    ),
11723                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11724                        &self._1,
11725                    ),
11726                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11727                        &self._2,
11728                    ),
11729                )
11730            }
11731            #[inline]
11732            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11733                newFinalizedState_1Return::_tokenize(ret)
11734            }
11735            #[inline]
11736            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11737                <Self::ReturnTuple<
11738                    '_,
11739                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11740                    .map(Into::into)
11741            }
11742            #[inline]
11743            fn abi_decode_returns_validate(
11744                data: &[u8],
11745            ) -> alloy_sol_types::Result<Self::Return> {
11746                <Self::ReturnTuple<
11747                    '_,
11748                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11749                    .map(Into::into)
11750            }
11751        }
11752    };
11753    #[derive(serde::Serialize, serde::Deserialize)]
11754    #[derive()]
11755    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0xaabd5db3`.
11756```solidity
11757function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
11758```*/
11759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11760    #[derive(Clone)]
11761    pub struct newFinalizedState_2Call {
11762        #[allow(missing_docs)]
11763        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11764        #[allow(missing_docs)]
11765        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11766        #[allow(missing_docs)]
11767        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
11768        #[allow(missing_docs)]
11769        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11770    }
11771    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_2Call) function.
11772    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11773    #[derive(Clone)]
11774    pub struct newFinalizedState_2Return {}
11775    #[allow(
11776        non_camel_case_types,
11777        non_snake_case,
11778        clippy::pub_underscore_fields,
11779        clippy::style
11780    )]
11781    const _: () = {
11782        use alloy::sol_types as alloy_sol_types;
11783        {
11784            #[doc(hidden)]
11785            #[allow(dead_code)]
11786            type UnderlyingSolTuple<'a> = (
11787                LightClient::LightClientState,
11788                LightClient::StakeTableState,
11789                alloy::sol_types::sol_data::Uint<256>,
11790                IPlonkVerifier::PlonkProof,
11791            );
11792            #[doc(hidden)]
11793            type UnderlyingRustTuple<'a> = (
11794                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11795                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11796                alloy::sol_types::private::primitives::aliases::U256,
11797                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11798            );
11799            #[cfg(test)]
11800            #[allow(dead_code, unreachable_patterns)]
11801            fn _type_assertion(
11802                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11803            ) {
11804                match _t {
11805                    alloy_sol_types::private::AssertTypeEq::<
11806                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11807                    >(_) => {}
11808                }
11809            }
11810            #[automatically_derived]
11811            #[doc(hidden)]
11812            impl ::core::convert::From<newFinalizedState_2Call>
11813            for UnderlyingRustTuple<'_> {
11814                fn from(value: newFinalizedState_2Call) -> Self {
11815                    (
11816                        value.newState,
11817                        value.nextStakeTable,
11818                        value.newAuthRoot,
11819                        value.proof,
11820                    )
11821                }
11822            }
11823            #[automatically_derived]
11824            #[doc(hidden)]
11825            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11826            for newFinalizedState_2Call {
11827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11828                    Self {
11829                        newState: tuple.0,
11830                        nextStakeTable: tuple.1,
11831                        newAuthRoot: tuple.2,
11832                        proof: tuple.3,
11833                    }
11834                }
11835            }
11836        }
11837        {
11838            #[doc(hidden)]
11839            #[allow(dead_code)]
11840            type UnderlyingSolTuple<'a> = ();
11841            #[doc(hidden)]
11842            type UnderlyingRustTuple<'a> = ();
11843            #[cfg(test)]
11844            #[allow(dead_code, unreachable_patterns)]
11845            fn _type_assertion(
11846                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11847            ) {
11848                match _t {
11849                    alloy_sol_types::private::AssertTypeEq::<
11850                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11851                    >(_) => {}
11852                }
11853            }
11854            #[automatically_derived]
11855            #[doc(hidden)]
11856            impl ::core::convert::From<newFinalizedState_2Return>
11857            for UnderlyingRustTuple<'_> {
11858                fn from(value: newFinalizedState_2Return) -> Self {
11859                    ()
11860                }
11861            }
11862            #[automatically_derived]
11863            #[doc(hidden)]
11864            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11865            for newFinalizedState_2Return {
11866                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11867                    Self {}
11868                }
11869            }
11870        }
11871        impl newFinalizedState_2Return {
11872            fn _tokenize(
11873                &self,
11874            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11875                ()
11876            }
11877        }
11878        #[automatically_derived]
11879        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
11880            type Parameters<'a> = (
11881                LightClient::LightClientState,
11882                LightClient::StakeTableState,
11883                alloy::sol_types::sol_data::Uint<256>,
11884                IPlonkVerifier::PlonkProof,
11885            );
11886            type Token<'a> = <Self::Parameters<
11887                'a,
11888            > as alloy_sol_types::SolType>::Token<'a>;
11889            type Return = newFinalizedState_2Return;
11890            type ReturnTuple<'a> = ();
11891            type ReturnToken<'a> = <Self::ReturnTuple<
11892                'a,
11893            > as alloy_sol_types::SolType>::Token<'a>;
11894            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11895            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
11896            #[inline]
11897            fn new<'a>(
11898                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11899            ) -> Self {
11900                tuple.into()
11901            }
11902            #[inline]
11903            fn tokenize(&self) -> Self::Token<'_> {
11904                (
11905                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11906                        &self.newState,
11907                    ),
11908                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11909                        &self.nextStakeTable,
11910                    ),
11911                    <alloy::sol_types::sol_data::Uint<
11912                        256,
11913                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
11914                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11915                        &self.proof,
11916                    ),
11917                )
11918            }
11919            #[inline]
11920            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11921                newFinalizedState_2Return::_tokenize(ret)
11922            }
11923            #[inline]
11924            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11925                <Self::ReturnTuple<
11926                    '_,
11927                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11928                    .map(Into::into)
11929            }
11930            #[inline]
11931            fn abi_decode_returns_validate(
11932                data: &[u8],
11933            ) -> alloy_sol_types::Result<Self::Return> {
11934                <Self::ReturnTuple<
11935                    '_,
11936                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11937                    .map(Into::into)
11938            }
11939        }
11940    };
11941    #[derive(serde::Serialize, serde::Deserialize)]
11942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11943    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11944```solidity
11945function owner() external view returns (address);
11946```*/
11947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11948    #[derive(Clone)]
11949    pub struct ownerCall;
11950    #[derive(serde::Serialize, serde::Deserialize)]
11951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11952    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11953    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11954    #[derive(Clone)]
11955    pub struct ownerReturn {
11956        #[allow(missing_docs)]
11957        pub _0: alloy::sol_types::private::Address,
11958    }
11959    #[allow(
11960        non_camel_case_types,
11961        non_snake_case,
11962        clippy::pub_underscore_fields,
11963        clippy::style
11964    )]
11965    const _: () = {
11966        use alloy::sol_types as alloy_sol_types;
11967        {
11968            #[doc(hidden)]
11969            #[allow(dead_code)]
11970            type UnderlyingSolTuple<'a> = ();
11971            #[doc(hidden)]
11972            type UnderlyingRustTuple<'a> = ();
11973            #[cfg(test)]
11974            #[allow(dead_code, unreachable_patterns)]
11975            fn _type_assertion(
11976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11977            ) {
11978                match _t {
11979                    alloy_sol_types::private::AssertTypeEq::<
11980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11981                    >(_) => {}
11982                }
11983            }
11984            #[automatically_derived]
11985            #[doc(hidden)]
11986            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11987                fn from(value: ownerCall) -> Self {
11988                    ()
11989                }
11990            }
11991            #[automatically_derived]
11992            #[doc(hidden)]
11993            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11995                    Self
11996                }
11997            }
11998        }
11999        {
12000            #[doc(hidden)]
12001            #[allow(dead_code)]
12002            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12003            #[doc(hidden)]
12004            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12005            #[cfg(test)]
12006            #[allow(dead_code, unreachable_patterns)]
12007            fn _type_assertion(
12008                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12009            ) {
12010                match _t {
12011                    alloy_sol_types::private::AssertTypeEq::<
12012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12013                    >(_) => {}
12014                }
12015            }
12016            #[automatically_derived]
12017            #[doc(hidden)]
12018            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12019                fn from(value: ownerReturn) -> Self {
12020                    (value._0,)
12021                }
12022            }
12023            #[automatically_derived]
12024            #[doc(hidden)]
12025            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12027                    Self { _0: tuple.0 }
12028                }
12029            }
12030        }
12031        #[automatically_derived]
12032        impl alloy_sol_types::SolCall for ownerCall {
12033            type Parameters<'a> = ();
12034            type Token<'a> = <Self::Parameters<
12035                'a,
12036            > as alloy_sol_types::SolType>::Token<'a>;
12037            type Return = alloy::sol_types::private::Address;
12038            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12039            type ReturnToken<'a> = <Self::ReturnTuple<
12040                'a,
12041            > as alloy_sol_types::SolType>::Token<'a>;
12042            const SIGNATURE: &'static str = "owner()";
12043            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12044            #[inline]
12045            fn new<'a>(
12046                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12047            ) -> Self {
12048                tuple.into()
12049            }
12050            #[inline]
12051            fn tokenize(&self) -> Self::Token<'_> {
12052                ()
12053            }
12054            #[inline]
12055            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12056                (
12057                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12058                        ret,
12059                    ),
12060                )
12061            }
12062            #[inline]
12063            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12064                <Self::ReturnTuple<
12065                    '_,
12066                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12067                    .map(|r| {
12068                        let r: ownerReturn = r.into();
12069                        r._0
12070                    })
12071            }
12072            #[inline]
12073            fn abi_decode_returns_validate(
12074                data: &[u8],
12075            ) -> alloy_sol_types::Result<Self::Return> {
12076                <Self::ReturnTuple<
12077                    '_,
12078                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12079                    .map(|r| {
12080                        let r: ownerReturn = r.into();
12081                        r._0
12082                    })
12083            }
12084        }
12085    };
12086    #[derive(serde::Serialize, serde::Deserialize)]
12087    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12088    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12089```solidity
12090function permissionedProver() external view returns (address);
12091```*/
12092    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12093    #[derive(Clone)]
12094    pub struct permissionedProverCall;
12095    #[derive(serde::Serialize, serde::Deserialize)]
12096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12097    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12099    #[derive(Clone)]
12100    pub struct permissionedProverReturn {
12101        #[allow(missing_docs)]
12102        pub _0: alloy::sol_types::private::Address,
12103    }
12104    #[allow(
12105        non_camel_case_types,
12106        non_snake_case,
12107        clippy::pub_underscore_fields,
12108        clippy::style
12109    )]
12110    const _: () = {
12111        use alloy::sol_types as alloy_sol_types;
12112        {
12113            #[doc(hidden)]
12114            #[allow(dead_code)]
12115            type UnderlyingSolTuple<'a> = ();
12116            #[doc(hidden)]
12117            type UnderlyingRustTuple<'a> = ();
12118            #[cfg(test)]
12119            #[allow(dead_code, unreachable_patterns)]
12120            fn _type_assertion(
12121                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12122            ) {
12123                match _t {
12124                    alloy_sol_types::private::AssertTypeEq::<
12125                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12126                    >(_) => {}
12127                }
12128            }
12129            #[automatically_derived]
12130            #[doc(hidden)]
12131            impl ::core::convert::From<permissionedProverCall>
12132            for UnderlyingRustTuple<'_> {
12133                fn from(value: permissionedProverCall) -> Self {
12134                    ()
12135                }
12136            }
12137            #[automatically_derived]
12138            #[doc(hidden)]
12139            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12140            for permissionedProverCall {
12141                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12142                    Self
12143                }
12144            }
12145        }
12146        {
12147            #[doc(hidden)]
12148            #[allow(dead_code)]
12149            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12150            #[doc(hidden)]
12151            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12152            #[cfg(test)]
12153            #[allow(dead_code, unreachable_patterns)]
12154            fn _type_assertion(
12155                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12156            ) {
12157                match _t {
12158                    alloy_sol_types::private::AssertTypeEq::<
12159                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12160                    >(_) => {}
12161                }
12162            }
12163            #[automatically_derived]
12164            #[doc(hidden)]
12165            impl ::core::convert::From<permissionedProverReturn>
12166            for UnderlyingRustTuple<'_> {
12167                fn from(value: permissionedProverReturn) -> Self {
12168                    (value._0,)
12169                }
12170            }
12171            #[automatically_derived]
12172            #[doc(hidden)]
12173            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12174            for permissionedProverReturn {
12175                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12176                    Self { _0: tuple.0 }
12177                }
12178            }
12179        }
12180        #[automatically_derived]
12181        impl alloy_sol_types::SolCall for permissionedProverCall {
12182            type Parameters<'a> = ();
12183            type Token<'a> = <Self::Parameters<
12184                'a,
12185            > as alloy_sol_types::SolType>::Token<'a>;
12186            type Return = alloy::sol_types::private::Address;
12187            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12188            type ReturnToken<'a> = <Self::ReturnTuple<
12189                'a,
12190            > as alloy_sol_types::SolType>::Token<'a>;
12191            const SIGNATURE: &'static str = "permissionedProver()";
12192            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12193            #[inline]
12194            fn new<'a>(
12195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12196            ) -> Self {
12197                tuple.into()
12198            }
12199            #[inline]
12200            fn tokenize(&self) -> Self::Token<'_> {
12201                ()
12202            }
12203            #[inline]
12204            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12205                (
12206                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12207                        ret,
12208                    ),
12209                )
12210            }
12211            #[inline]
12212            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12213                <Self::ReturnTuple<
12214                    '_,
12215                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12216                    .map(|r| {
12217                        let r: permissionedProverReturn = r.into();
12218                        r._0
12219                    })
12220            }
12221            #[inline]
12222            fn abi_decode_returns_validate(
12223                data: &[u8],
12224            ) -> alloy_sol_types::Result<Self::Return> {
12225                <Self::ReturnTuple<
12226                    '_,
12227                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12228                    .map(|r| {
12229                        let r: permissionedProverReturn = r.into();
12230                        r._0
12231                    })
12232            }
12233        }
12234    };
12235    #[derive(serde::Serialize, serde::Deserialize)]
12236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12237    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12238```solidity
12239function proxiableUUID() external view returns (bytes32);
12240```*/
12241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12242    #[derive(Clone)]
12243    pub struct proxiableUUIDCall;
12244    #[derive(serde::Serialize, serde::Deserialize)]
12245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12246    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12248    #[derive(Clone)]
12249    pub struct proxiableUUIDReturn {
12250        #[allow(missing_docs)]
12251        pub _0: alloy::sol_types::private::FixedBytes<32>,
12252    }
12253    #[allow(
12254        non_camel_case_types,
12255        non_snake_case,
12256        clippy::pub_underscore_fields,
12257        clippy::style
12258    )]
12259    const _: () = {
12260        use alloy::sol_types as alloy_sol_types;
12261        {
12262            #[doc(hidden)]
12263            #[allow(dead_code)]
12264            type UnderlyingSolTuple<'a> = ();
12265            #[doc(hidden)]
12266            type UnderlyingRustTuple<'a> = ();
12267            #[cfg(test)]
12268            #[allow(dead_code, unreachable_patterns)]
12269            fn _type_assertion(
12270                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12271            ) {
12272                match _t {
12273                    alloy_sol_types::private::AssertTypeEq::<
12274                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12275                    >(_) => {}
12276                }
12277            }
12278            #[automatically_derived]
12279            #[doc(hidden)]
12280            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12281                fn from(value: proxiableUUIDCall) -> Self {
12282                    ()
12283                }
12284            }
12285            #[automatically_derived]
12286            #[doc(hidden)]
12287            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12288                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12289                    Self
12290                }
12291            }
12292        }
12293        {
12294            #[doc(hidden)]
12295            #[allow(dead_code)]
12296            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12297            #[doc(hidden)]
12298            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12299            #[cfg(test)]
12300            #[allow(dead_code, unreachable_patterns)]
12301            fn _type_assertion(
12302                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12303            ) {
12304                match _t {
12305                    alloy_sol_types::private::AssertTypeEq::<
12306                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12307                    >(_) => {}
12308                }
12309            }
12310            #[automatically_derived]
12311            #[doc(hidden)]
12312            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12313                fn from(value: proxiableUUIDReturn) -> Self {
12314                    (value._0,)
12315                }
12316            }
12317            #[automatically_derived]
12318            #[doc(hidden)]
12319            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12321                    Self { _0: tuple.0 }
12322                }
12323            }
12324        }
12325        #[automatically_derived]
12326        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12327            type Parameters<'a> = ();
12328            type Token<'a> = <Self::Parameters<
12329                'a,
12330            > as alloy_sol_types::SolType>::Token<'a>;
12331            type Return = alloy::sol_types::private::FixedBytes<32>;
12332            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12333            type ReturnToken<'a> = <Self::ReturnTuple<
12334                'a,
12335            > as alloy_sol_types::SolType>::Token<'a>;
12336            const SIGNATURE: &'static str = "proxiableUUID()";
12337            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12338            #[inline]
12339            fn new<'a>(
12340                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12341            ) -> Self {
12342                tuple.into()
12343            }
12344            #[inline]
12345            fn tokenize(&self) -> Self::Token<'_> {
12346                ()
12347            }
12348            #[inline]
12349            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12350                (
12351                    <alloy::sol_types::sol_data::FixedBytes<
12352                        32,
12353                    > as alloy_sol_types::SolType>::tokenize(ret),
12354                )
12355            }
12356            #[inline]
12357            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12358                <Self::ReturnTuple<
12359                    '_,
12360                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12361                    .map(|r| {
12362                        let r: proxiableUUIDReturn = r.into();
12363                        r._0
12364                    })
12365            }
12366            #[inline]
12367            fn abi_decode_returns_validate(
12368                data: &[u8],
12369            ) -> alloy_sol_types::Result<Self::Return> {
12370                <Self::ReturnTuple<
12371                    '_,
12372                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12373                    .map(|r| {
12374                        let r: proxiableUUIDReturn = r.into();
12375                        r._0
12376                    })
12377            }
12378        }
12379    };
12380    #[derive(serde::Serialize, serde::Deserialize)]
12381    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12382    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12383```solidity
12384function renounceOwnership() external;
12385```*/
12386    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12387    #[derive(Clone)]
12388    pub struct renounceOwnershipCall;
12389    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12391    #[derive(Clone)]
12392    pub struct renounceOwnershipReturn {}
12393    #[allow(
12394        non_camel_case_types,
12395        non_snake_case,
12396        clippy::pub_underscore_fields,
12397        clippy::style
12398    )]
12399    const _: () = {
12400        use alloy::sol_types as alloy_sol_types;
12401        {
12402            #[doc(hidden)]
12403            #[allow(dead_code)]
12404            type UnderlyingSolTuple<'a> = ();
12405            #[doc(hidden)]
12406            type UnderlyingRustTuple<'a> = ();
12407            #[cfg(test)]
12408            #[allow(dead_code, unreachable_patterns)]
12409            fn _type_assertion(
12410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12411            ) {
12412                match _t {
12413                    alloy_sol_types::private::AssertTypeEq::<
12414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12415                    >(_) => {}
12416                }
12417            }
12418            #[automatically_derived]
12419            #[doc(hidden)]
12420            impl ::core::convert::From<renounceOwnershipCall>
12421            for UnderlyingRustTuple<'_> {
12422                fn from(value: renounceOwnershipCall) -> Self {
12423                    ()
12424                }
12425            }
12426            #[automatically_derived]
12427            #[doc(hidden)]
12428            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12429            for renounceOwnershipCall {
12430                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12431                    Self
12432                }
12433            }
12434        }
12435        {
12436            #[doc(hidden)]
12437            #[allow(dead_code)]
12438            type UnderlyingSolTuple<'a> = ();
12439            #[doc(hidden)]
12440            type UnderlyingRustTuple<'a> = ();
12441            #[cfg(test)]
12442            #[allow(dead_code, unreachable_patterns)]
12443            fn _type_assertion(
12444                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12445            ) {
12446                match _t {
12447                    alloy_sol_types::private::AssertTypeEq::<
12448                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12449                    >(_) => {}
12450                }
12451            }
12452            #[automatically_derived]
12453            #[doc(hidden)]
12454            impl ::core::convert::From<renounceOwnershipReturn>
12455            for UnderlyingRustTuple<'_> {
12456                fn from(value: renounceOwnershipReturn) -> Self {
12457                    ()
12458                }
12459            }
12460            #[automatically_derived]
12461            #[doc(hidden)]
12462            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12463            for renounceOwnershipReturn {
12464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12465                    Self {}
12466                }
12467            }
12468        }
12469        impl renounceOwnershipReturn {
12470            fn _tokenize(
12471                &self,
12472            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12473                ()
12474            }
12475        }
12476        #[automatically_derived]
12477        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12478            type Parameters<'a> = ();
12479            type Token<'a> = <Self::Parameters<
12480                'a,
12481            > as alloy_sol_types::SolType>::Token<'a>;
12482            type Return = renounceOwnershipReturn;
12483            type ReturnTuple<'a> = ();
12484            type ReturnToken<'a> = <Self::ReturnTuple<
12485                'a,
12486            > as alloy_sol_types::SolType>::Token<'a>;
12487            const SIGNATURE: &'static str = "renounceOwnership()";
12488            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12489            #[inline]
12490            fn new<'a>(
12491                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12492            ) -> Self {
12493                tuple.into()
12494            }
12495            #[inline]
12496            fn tokenize(&self) -> Self::Token<'_> {
12497                ()
12498            }
12499            #[inline]
12500            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12501                renounceOwnershipReturn::_tokenize(ret)
12502            }
12503            #[inline]
12504            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12505                <Self::ReturnTuple<
12506                    '_,
12507                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12508                    .map(Into::into)
12509            }
12510            #[inline]
12511            fn abi_decode_returns_validate(
12512                data: &[u8],
12513            ) -> alloy_sol_types::Result<Self::Return> {
12514                <Self::ReturnTuple<
12515                    '_,
12516                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12517                    .map(Into::into)
12518            }
12519        }
12520    };
12521    #[derive(serde::Serialize, serde::Deserialize)]
12522    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12523    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12524```solidity
12525function setPermissionedProver(address prover) external;
12526```*/
12527    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12528    #[derive(Clone)]
12529    pub struct setPermissionedProverCall {
12530        #[allow(missing_docs)]
12531        pub prover: alloy::sol_types::private::Address,
12532    }
12533    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12535    #[derive(Clone)]
12536    pub struct setPermissionedProverReturn {}
12537    #[allow(
12538        non_camel_case_types,
12539        non_snake_case,
12540        clippy::pub_underscore_fields,
12541        clippy::style
12542    )]
12543    const _: () = {
12544        use alloy::sol_types as alloy_sol_types;
12545        {
12546            #[doc(hidden)]
12547            #[allow(dead_code)]
12548            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12549            #[doc(hidden)]
12550            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12551            #[cfg(test)]
12552            #[allow(dead_code, unreachable_patterns)]
12553            fn _type_assertion(
12554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12555            ) {
12556                match _t {
12557                    alloy_sol_types::private::AssertTypeEq::<
12558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12559                    >(_) => {}
12560                }
12561            }
12562            #[automatically_derived]
12563            #[doc(hidden)]
12564            impl ::core::convert::From<setPermissionedProverCall>
12565            for UnderlyingRustTuple<'_> {
12566                fn from(value: setPermissionedProverCall) -> Self {
12567                    (value.prover,)
12568                }
12569            }
12570            #[automatically_derived]
12571            #[doc(hidden)]
12572            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12573            for setPermissionedProverCall {
12574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12575                    Self { prover: tuple.0 }
12576                }
12577            }
12578        }
12579        {
12580            #[doc(hidden)]
12581            #[allow(dead_code)]
12582            type UnderlyingSolTuple<'a> = ();
12583            #[doc(hidden)]
12584            type UnderlyingRustTuple<'a> = ();
12585            #[cfg(test)]
12586            #[allow(dead_code, unreachable_patterns)]
12587            fn _type_assertion(
12588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12589            ) {
12590                match _t {
12591                    alloy_sol_types::private::AssertTypeEq::<
12592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12593                    >(_) => {}
12594                }
12595            }
12596            #[automatically_derived]
12597            #[doc(hidden)]
12598            impl ::core::convert::From<setPermissionedProverReturn>
12599            for UnderlyingRustTuple<'_> {
12600                fn from(value: setPermissionedProverReturn) -> Self {
12601                    ()
12602                }
12603            }
12604            #[automatically_derived]
12605            #[doc(hidden)]
12606            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12607            for setPermissionedProverReturn {
12608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12609                    Self {}
12610                }
12611            }
12612        }
12613        impl setPermissionedProverReturn {
12614            fn _tokenize(
12615                &self,
12616            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
12617                '_,
12618            > {
12619                ()
12620            }
12621        }
12622        #[automatically_derived]
12623        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12624            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12625            type Token<'a> = <Self::Parameters<
12626                'a,
12627            > as alloy_sol_types::SolType>::Token<'a>;
12628            type Return = setPermissionedProverReturn;
12629            type ReturnTuple<'a> = ();
12630            type ReturnToken<'a> = <Self::ReturnTuple<
12631                'a,
12632            > as alloy_sol_types::SolType>::Token<'a>;
12633            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12634            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12635            #[inline]
12636            fn new<'a>(
12637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12638            ) -> Self {
12639                tuple.into()
12640            }
12641            #[inline]
12642            fn tokenize(&self) -> Self::Token<'_> {
12643                (
12644                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12645                        &self.prover,
12646                    ),
12647                )
12648            }
12649            #[inline]
12650            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12651                setPermissionedProverReturn::_tokenize(ret)
12652            }
12653            #[inline]
12654            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12655                <Self::ReturnTuple<
12656                    '_,
12657                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12658                    .map(Into::into)
12659            }
12660            #[inline]
12661            fn abi_decode_returns_validate(
12662                data: &[u8],
12663            ) -> alloy_sol_types::Result<Self::Return> {
12664                <Self::ReturnTuple<
12665                    '_,
12666                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12667                    .map(Into::into)
12668            }
12669        }
12670    };
12671    #[derive(serde::Serialize, serde::Deserialize)]
12672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12673    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
12674```solidity
12675function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
12676```*/
12677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12678    #[derive(Clone)]
12679    pub struct setStateHistoryRetentionPeriodCall {
12680        #[allow(missing_docs)]
12681        pub historySeconds: u32,
12682    }
12683    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
12684    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12685    #[derive(Clone)]
12686    pub struct setStateHistoryRetentionPeriodReturn {}
12687    #[allow(
12688        non_camel_case_types,
12689        non_snake_case,
12690        clippy::pub_underscore_fields,
12691        clippy::style
12692    )]
12693    const _: () = {
12694        use alloy::sol_types as alloy_sol_types;
12695        {
12696            #[doc(hidden)]
12697            #[allow(dead_code)]
12698            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12699            #[doc(hidden)]
12700            type UnderlyingRustTuple<'a> = (u32,);
12701            #[cfg(test)]
12702            #[allow(dead_code, unreachable_patterns)]
12703            fn _type_assertion(
12704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12705            ) {
12706                match _t {
12707                    alloy_sol_types::private::AssertTypeEq::<
12708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12709                    >(_) => {}
12710                }
12711            }
12712            #[automatically_derived]
12713            #[doc(hidden)]
12714            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
12715            for UnderlyingRustTuple<'_> {
12716                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
12717                    (value.historySeconds,)
12718                }
12719            }
12720            #[automatically_derived]
12721            #[doc(hidden)]
12722            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12723            for setStateHistoryRetentionPeriodCall {
12724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12725                    Self { historySeconds: tuple.0 }
12726                }
12727            }
12728        }
12729        {
12730            #[doc(hidden)]
12731            #[allow(dead_code)]
12732            type UnderlyingSolTuple<'a> = ();
12733            #[doc(hidden)]
12734            type UnderlyingRustTuple<'a> = ();
12735            #[cfg(test)]
12736            #[allow(dead_code, unreachable_patterns)]
12737            fn _type_assertion(
12738                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12739            ) {
12740                match _t {
12741                    alloy_sol_types::private::AssertTypeEq::<
12742                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12743                    >(_) => {}
12744                }
12745            }
12746            #[automatically_derived]
12747            #[doc(hidden)]
12748            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
12749            for UnderlyingRustTuple<'_> {
12750                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
12751                    ()
12752                }
12753            }
12754            #[automatically_derived]
12755            #[doc(hidden)]
12756            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12757            for setStateHistoryRetentionPeriodReturn {
12758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12759                    Self {}
12760                }
12761            }
12762        }
12763        impl setStateHistoryRetentionPeriodReturn {
12764            fn _tokenize(
12765                &self,
12766            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12767                '_,
12768            > {
12769                ()
12770            }
12771        }
12772        #[automatically_derived]
12773        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12774            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12775            type Token<'a> = <Self::Parameters<
12776                'a,
12777            > as alloy_sol_types::SolType>::Token<'a>;
12778            type Return = setStateHistoryRetentionPeriodReturn;
12779            type ReturnTuple<'a> = ();
12780            type ReturnToken<'a> = <Self::ReturnTuple<
12781                'a,
12782            > as alloy_sol_types::SolType>::Token<'a>;
12783            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12784            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12785            #[inline]
12786            fn new<'a>(
12787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12788            ) -> Self {
12789                tuple.into()
12790            }
12791            #[inline]
12792            fn tokenize(&self) -> Self::Token<'_> {
12793                (
12794                    <alloy::sol_types::sol_data::Uint<
12795                        32,
12796                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12797                )
12798            }
12799            #[inline]
12800            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12801                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
12802            }
12803            #[inline]
12804            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12805                <Self::ReturnTuple<
12806                    '_,
12807                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12808                    .map(Into::into)
12809            }
12810            #[inline]
12811            fn abi_decode_returns_validate(
12812                data: &[u8],
12813            ) -> alloy_sol_types::Result<Self::Return> {
12814                <Self::ReturnTuple<
12815                    '_,
12816                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12817                    .map(Into::into)
12818            }
12819        }
12820    };
12821    #[derive(serde::Serialize, serde::Deserialize)]
12822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12823    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12824```solidity
12825function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12826```*/
12827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12828    #[derive(Clone)]
12829    pub struct setstateHistoryRetentionPeriodCall {
12830        #[allow(missing_docs)]
12831        pub historySeconds: u32,
12832    }
12833    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12834    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12835    #[derive(Clone)]
12836    pub struct setstateHistoryRetentionPeriodReturn {}
12837    #[allow(
12838        non_camel_case_types,
12839        non_snake_case,
12840        clippy::pub_underscore_fields,
12841        clippy::style
12842    )]
12843    const _: () = {
12844        use alloy::sol_types as alloy_sol_types;
12845        {
12846            #[doc(hidden)]
12847            #[allow(dead_code)]
12848            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12849            #[doc(hidden)]
12850            type UnderlyingRustTuple<'a> = (u32,);
12851            #[cfg(test)]
12852            #[allow(dead_code, unreachable_patterns)]
12853            fn _type_assertion(
12854                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12855            ) {
12856                match _t {
12857                    alloy_sol_types::private::AssertTypeEq::<
12858                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12859                    >(_) => {}
12860                }
12861            }
12862            #[automatically_derived]
12863            #[doc(hidden)]
12864            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12865            for UnderlyingRustTuple<'_> {
12866                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12867                    (value.historySeconds,)
12868                }
12869            }
12870            #[automatically_derived]
12871            #[doc(hidden)]
12872            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12873            for setstateHistoryRetentionPeriodCall {
12874                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12875                    Self { historySeconds: tuple.0 }
12876                }
12877            }
12878        }
12879        {
12880            #[doc(hidden)]
12881            #[allow(dead_code)]
12882            type UnderlyingSolTuple<'a> = ();
12883            #[doc(hidden)]
12884            type UnderlyingRustTuple<'a> = ();
12885            #[cfg(test)]
12886            #[allow(dead_code, unreachable_patterns)]
12887            fn _type_assertion(
12888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12889            ) {
12890                match _t {
12891                    alloy_sol_types::private::AssertTypeEq::<
12892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12893                    >(_) => {}
12894                }
12895            }
12896            #[automatically_derived]
12897            #[doc(hidden)]
12898            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12899            for UnderlyingRustTuple<'_> {
12900                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12901                    ()
12902                }
12903            }
12904            #[automatically_derived]
12905            #[doc(hidden)]
12906            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12907            for setstateHistoryRetentionPeriodReturn {
12908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12909                    Self {}
12910                }
12911            }
12912        }
12913        impl setstateHistoryRetentionPeriodReturn {
12914            fn _tokenize(
12915                &self,
12916            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12917                '_,
12918            > {
12919                ()
12920            }
12921        }
12922        #[automatically_derived]
12923        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12924            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12925            type Token<'a> = <Self::Parameters<
12926                'a,
12927            > as alloy_sol_types::SolType>::Token<'a>;
12928            type Return = setstateHistoryRetentionPeriodReturn;
12929            type ReturnTuple<'a> = ();
12930            type ReturnToken<'a> = <Self::ReturnTuple<
12931                'a,
12932            > as alloy_sol_types::SolType>::Token<'a>;
12933            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12934            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12935            #[inline]
12936            fn new<'a>(
12937                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12938            ) -> Self {
12939                tuple.into()
12940            }
12941            #[inline]
12942            fn tokenize(&self) -> Self::Token<'_> {
12943                (
12944                    <alloy::sol_types::sol_data::Uint<
12945                        32,
12946                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12947                )
12948            }
12949            #[inline]
12950            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12951                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12952            }
12953            #[inline]
12954            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12955                <Self::ReturnTuple<
12956                    '_,
12957                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12958                    .map(Into::into)
12959            }
12960            #[inline]
12961            fn abi_decode_returns_validate(
12962                data: &[u8],
12963            ) -> alloy_sol_types::Result<Self::Return> {
12964                <Self::ReturnTuple<
12965                    '_,
12966                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12967                    .map(Into::into)
12968            }
12969        }
12970    };
12971    #[derive(serde::Serialize, serde::Deserialize)]
12972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12973    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12974```solidity
12975function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12976```*/
12977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12978    #[derive(Clone)]
12979    pub struct stateHistoryCommitmentsCall(
12980        pub alloy::sol_types::private::primitives::aliases::U256,
12981    );
12982    #[derive(serde::Serialize, serde::Deserialize)]
12983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12984    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12986    #[derive(Clone)]
12987    pub struct stateHistoryCommitmentsReturn {
12988        #[allow(missing_docs)]
12989        pub l1BlockHeight: u64,
12990        #[allow(missing_docs)]
12991        pub l1BlockTimestamp: u64,
12992        #[allow(missing_docs)]
12993        pub hotShotBlockHeight: u64,
12994        #[allow(missing_docs)]
12995        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12996    }
12997    #[allow(
12998        non_camel_case_types,
12999        non_snake_case,
13000        clippy::pub_underscore_fields,
13001        clippy::style
13002    )]
13003    const _: () = {
13004        use alloy::sol_types as alloy_sol_types;
13005        {
13006            #[doc(hidden)]
13007            #[allow(dead_code)]
13008            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13009            #[doc(hidden)]
13010            type UnderlyingRustTuple<'a> = (
13011                alloy::sol_types::private::primitives::aliases::U256,
13012            );
13013            #[cfg(test)]
13014            #[allow(dead_code, unreachable_patterns)]
13015            fn _type_assertion(
13016                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13017            ) {
13018                match _t {
13019                    alloy_sol_types::private::AssertTypeEq::<
13020                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13021                    >(_) => {}
13022                }
13023            }
13024            #[automatically_derived]
13025            #[doc(hidden)]
13026            impl ::core::convert::From<stateHistoryCommitmentsCall>
13027            for UnderlyingRustTuple<'_> {
13028                fn from(value: stateHistoryCommitmentsCall) -> Self {
13029                    (value.0,)
13030                }
13031            }
13032            #[automatically_derived]
13033            #[doc(hidden)]
13034            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13035            for stateHistoryCommitmentsCall {
13036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13037                    Self(tuple.0)
13038                }
13039            }
13040        }
13041        {
13042            #[doc(hidden)]
13043            #[allow(dead_code)]
13044            type UnderlyingSolTuple<'a> = (
13045                alloy::sol_types::sol_data::Uint<64>,
13046                alloy::sol_types::sol_data::Uint<64>,
13047                alloy::sol_types::sol_data::Uint<64>,
13048                BN254::ScalarField,
13049            );
13050            #[doc(hidden)]
13051            type UnderlyingRustTuple<'a> = (
13052                u64,
13053                u64,
13054                u64,
13055                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13056            );
13057            #[cfg(test)]
13058            #[allow(dead_code, unreachable_patterns)]
13059            fn _type_assertion(
13060                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13061            ) {
13062                match _t {
13063                    alloy_sol_types::private::AssertTypeEq::<
13064                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13065                    >(_) => {}
13066                }
13067            }
13068            #[automatically_derived]
13069            #[doc(hidden)]
13070            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13071            for UnderlyingRustTuple<'_> {
13072                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13073                    (
13074                        value.l1BlockHeight,
13075                        value.l1BlockTimestamp,
13076                        value.hotShotBlockHeight,
13077                        value.hotShotBlockCommRoot,
13078                    )
13079                }
13080            }
13081            #[automatically_derived]
13082            #[doc(hidden)]
13083            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13084            for stateHistoryCommitmentsReturn {
13085                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13086                    Self {
13087                        l1BlockHeight: tuple.0,
13088                        l1BlockTimestamp: tuple.1,
13089                        hotShotBlockHeight: tuple.2,
13090                        hotShotBlockCommRoot: tuple.3,
13091                    }
13092                }
13093            }
13094        }
13095        impl stateHistoryCommitmentsReturn {
13096            fn _tokenize(
13097                &self,
13098            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13099                '_,
13100            > {
13101                (
13102                    <alloy::sol_types::sol_data::Uint<
13103                        64,
13104                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13105                    <alloy::sol_types::sol_data::Uint<
13106                        64,
13107                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13108                    <alloy::sol_types::sol_data::Uint<
13109                        64,
13110                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13111                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13112                        &self.hotShotBlockCommRoot,
13113                    ),
13114                )
13115            }
13116        }
13117        #[automatically_derived]
13118        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13119            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13120            type Token<'a> = <Self::Parameters<
13121                'a,
13122            > as alloy_sol_types::SolType>::Token<'a>;
13123            type Return = stateHistoryCommitmentsReturn;
13124            type ReturnTuple<'a> = (
13125                alloy::sol_types::sol_data::Uint<64>,
13126                alloy::sol_types::sol_data::Uint<64>,
13127                alloy::sol_types::sol_data::Uint<64>,
13128                BN254::ScalarField,
13129            );
13130            type ReturnToken<'a> = <Self::ReturnTuple<
13131                'a,
13132            > as alloy_sol_types::SolType>::Token<'a>;
13133            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13134            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13135            #[inline]
13136            fn new<'a>(
13137                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13138            ) -> Self {
13139                tuple.into()
13140            }
13141            #[inline]
13142            fn tokenize(&self) -> Self::Token<'_> {
13143                (
13144                    <alloy::sol_types::sol_data::Uint<
13145                        256,
13146                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13147                )
13148            }
13149            #[inline]
13150            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13151                stateHistoryCommitmentsReturn::_tokenize(ret)
13152            }
13153            #[inline]
13154            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13155                <Self::ReturnTuple<
13156                    '_,
13157                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13158                    .map(Into::into)
13159            }
13160            #[inline]
13161            fn abi_decode_returns_validate(
13162                data: &[u8],
13163            ) -> alloy_sol_types::Result<Self::Return> {
13164                <Self::ReturnTuple<
13165                    '_,
13166                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13167                    .map(Into::into)
13168            }
13169        }
13170    };
13171    #[derive(serde::Serialize, serde::Deserialize)]
13172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13173    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13174```solidity
13175function stateHistoryFirstIndex() external view returns (uint64);
13176```*/
13177    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13178    #[derive(Clone)]
13179    pub struct stateHistoryFirstIndexCall;
13180    #[derive(serde::Serialize, serde::Deserialize)]
13181    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13182    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13184    #[derive(Clone)]
13185    pub struct stateHistoryFirstIndexReturn {
13186        #[allow(missing_docs)]
13187        pub _0: u64,
13188    }
13189    #[allow(
13190        non_camel_case_types,
13191        non_snake_case,
13192        clippy::pub_underscore_fields,
13193        clippy::style
13194    )]
13195    const _: () = {
13196        use alloy::sol_types as alloy_sol_types;
13197        {
13198            #[doc(hidden)]
13199            #[allow(dead_code)]
13200            type UnderlyingSolTuple<'a> = ();
13201            #[doc(hidden)]
13202            type UnderlyingRustTuple<'a> = ();
13203            #[cfg(test)]
13204            #[allow(dead_code, unreachable_patterns)]
13205            fn _type_assertion(
13206                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13207            ) {
13208                match _t {
13209                    alloy_sol_types::private::AssertTypeEq::<
13210                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13211                    >(_) => {}
13212                }
13213            }
13214            #[automatically_derived]
13215            #[doc(hidden)]
13216            impl ::core::convert::From<stateHistoryFirstIndexCall>
13217            for UnderlyingRustTuple<'_> {
13218                fn from(value: stateHistoryFirstIndexCall) -> Self {
13219                    ()
13220                }
13221            }
13222            #[automatically_derived]
13223            #[doc(hidden)]
13224            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13225            for stateHistoryFirstIndexCall {
13226                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13227                    Self
13228                }
13229            }
13230        }
13231        {
13232            #[doc(hidden)]
13233            #[allow(dead_code)]
13234            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13235            #[doc(hidden)]
13236            type UnderlyingRustTuple<'a> = (u64,);
13237            #[cfg(test)]
13238            #[allow(dead_code, unreachable_patterns)]
13239            fn _type_assertion(
13240                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13241            ) {
13242                match _t {
13243                    alloy_sol_types::private::AssertTypeEq::<
13244                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13245                    >(_) => {}
13246                }
13247            }
13248            #[automatically_derived]
13249            #[doc(hidden)]
13250            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13251            for UnderlyingRustTuple<'_> {
13252                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13253                    (value._0,)
13254                }
13255            }
13256            #[automatically_derived]
13257            #[doc(hidden)]
13258            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13259            for stateHistoryFirstIndexReturn {
13260                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13261                    Self { _0: tuple.0 }
13262                }
13263            }
13264        }
13265        #[automatically_derived]
13266        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13267            type Parameters<'a> = ();
13268            type Token<'a> = <Self::Parameters<
13269                'a,
13270            > as alloy_sol_types::SolType>::Token<'a>;
13271            type Return = u64;
13272            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13273            type ReturnToken<'a> = <Self::ReturnTuple<
13274                'a,
13275            > as alloy_sol_types::SolType>::Token<'a>;
13276            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13277            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13278            #[inline]
13279            fn new<'a>(
13280                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13281            ) -> Self {
13282                tuple.into()
13283            }
13284            #[inline]
13285            fn tokenize(&self) -> Self::Token<'_> {
13286                ()
13287            }
13288            #[inline]
13289            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13290                (
13291                    <alloy::sol_types::sol_data::Uint<
13292                        64,
13293                    > as alloy_sol_types::SolType>::tokenize(ret),
13294                )
13295            }
13296            #[inline]
13297            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13298                <Self::ReturnTuple<
13299                    '_,
13300                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13301                    .map(|r| {
13302                        let r: stateHistoryFirstIndexReturn = r.into();
13303                        r._0
13304                    })
13305            }
13306            #[inline]
13307            fn abi_decode_returns_validate(
13308                data: &[u8],
13309            ) -> alloy_sol_types::Result<Self::Return> {
13310                <Self::ReturnTuple<
13311                    '_,
13312                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13313                    .map(|r| {
13314                        let r: stateHistoryFirstIndexReturn = r.into();
13315                        r._0
13316                    })
13317            }
13318        }
13319    };
13320    #[derive(serde::Serialize, serde::Deserialize)]
13321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13322    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13323```solidity
13324function stateHistoryRetentionPeriod() external view returns (uint32);
13325```*/
13326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13327    #[derive(Clone)]
13328    pub struct stateHistoryRetentionPeriodCall;
13329    #[derive(serde::Serialize, serde::Deserialize)]
13330    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13331    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13333    #[derive(Clone)]
13334    pub struct stateHistoryRetentionPeriodReturn {
13335        #[allow(missing_docs)]
13336        pub _0: u32,
13337    }
13338    #[allow(
13339        non_camel_case_types,
13340        non_snake_case,
13341        clippy::pub_underscore_fields,
13342        clippy::style
13343    )]
13344    const _: () = {
13345        use alloy::sol_types as alloy_sol_types;
13346        {
13347            #[doc(hidden)]
13348            #[allow(dead_code)]
13349            type UnderlyingSolTuple<'a> = ();
13350            #[doc(hidden)]
13351            type UnderlyingRustTuple<'a> = ();
13352            #[cfg(test)]
13353            #[allow(dead_code, unreachable_patterns)]
13354            fn _type_assertion(
13355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13356            ) {
13357                match _t {
13358                    alloy_sol_types::private::AssertTypeEq::<
13359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13360                    >(_) => {}
13361                }
13362            }
13363            #[automatically_derived]
13364            #[doc(hidden)]
13365            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13366            for UnderlyingRustTuple<'_> {
13367                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13368                    ()
13369                }
13370            }
13371            #[automatically_derived]
13372            #[doc(hidden)]
13373            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13374            for stateHistoryRetentionPeriodCall {
13375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13376                    Self
13377                }
13378            }
13379        }
13380        {
13381            #[doc(hidden)]
13382            #[allow(dead_code)]
13383            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13384            #[doc(hidden)]
13385            type UnderlyingRustTuple<'a> = (u32,);
13386            #[cfg(test)]
13387            #[allow(dead_code, unreachable_patterns)]
13388            fn _type_assertion(
13389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13390            ) {
13391                match _t {
13392                    alloy_sol_types::private::AssertTypeEq::<
13393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13394                    >(_) => {}
13395                }
13396            }
13397            #[automatically_derived]
13398            #[doc(hidden)]
13399            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
13400            for UnderlyingRustTuple<'_> {
13401                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
13402                    (value._0,)
13403                }
13404            }
13405            #[automatically_derived]
13406            #[doc(hidden)]
13407            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13408            for stateHistoryRetentionPeriodReturn {
13409                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13410                    Self { _0: tuple.0 }
13411                }
13412            }
13413        }
13414        #[automatically_derived]
13415        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
13416            type Parameters<'a> = ();
13417            type Token<'a> = <Self::Parameters<
13418                'a,
13419            > as alloy_sol_types::SolType>::Token<'a>;
13420            type Return = u32;
13421            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13422            type ReturnToken<'a> = <Self::ReturnTuple<
13423                'a,
13424            > as alloy_sol_types::SolType>::Token<'a>;
13425            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
13426            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
13427            #[inline]
13428            fn new<'a>(
13429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13430            ) -> Self {
13431                tuple.into()
13432            }
13433            #[inline]
13434            fn tokenize(&self) -> Self::Token<'_> {
13435                ()
13436            }
13437            #[inline]
13438            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13439                (
13440                    <alloy::sol_types::sol_data::Uint<
13441                        32,
13442                    > as alloy_sol_types::SolType>::tokenize(ret),
13443                )
13444            }
13445            #[inline]
13446            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13447                <Self::ReturnTuple<
13448                    '_,
13449                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13450                    .map(|r| {
13451                        let r: stateHistoryRetentionPeriodReturn = r.into();
13452                        r._0
13453                    })
13454            }
13455            #[inline]
13456            fn abi_decode_returns_validate(
13457                data: &[u8],
13458            ) -> alloy_sol_types::Result<Self::Return> {
13459                <Self::ReturnTuple<
13460                    '_,
13461                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13462                    .map(|r| {
13463                        let r: stateHistoryRetentionPeriodReturn = r.into();
13464                        r._0
13465                    })
13466            }
13467        }
13468    };
13469    #[derive(serde::Serialize, serde::Deserialize)]
13470    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13471    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13472```solidity
13473function transferOwnership(address newOwner) external;
13474```*/
13475    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13476    #[derive(Clone)]
13477    pub struct transferOwnershipCall {
13478        #[allow(missing_docs)]
13479        pub newOwner: alloy::sol_types::private::Address,
13480    }
13481    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
13482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13483    #[derive(Clone)]
13484    pub struct transferOwnershipReturn {}
13485    #[allow(
13486        non_camel_case_types,
13487        non_snake_case,
13488        clippy::pub_underscore_fields,
13489        clippy::style
13490    )]
13491    const _: () = {
13492        use alloy::sol_types as alloy_sol_types;
13493        {
13494            #[doc(hidden)]
13495            #[allow(dead_code)]
13496            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13497            #[doc(hidden)]
13498            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13499            #[cfg(test)]
13500            #[allow(dead_code, unreachable_patterns)]
13501            fn _type_assertion(
13502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13503            ) {
13504                match _t {
13505                    alloy_sol_types::private::AssertTypeEq::<
13506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13507                    >(_) => {}
13508                }
13509            }
13510            #[automatically_derived]
13511            #[doc(hidden)]
13512            impl ::core::convert::From<transferOwnershipCall>
13513            for UnderlyingRustTuple<'_> {
13514                fn from(value: transferOwnershipCall) -> Self {
13515                    (value.newOwner,)
13516                }
13517            }
13518            #[automatically_derived]
13519            #[doc(hidden)]
13520            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13521            for transferOwnershipCall {
13522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13523                    Self { newOwner: tuple.0 }
13524                }
13525            }
13526        }
13527        {
13528            #[doc(hidden)]
13529            #[allow(dead_code)]
13530            type UnderlyingSolTuple<'a> = ();
13531            #[doc(hidden)]
13532            type UnderlyingRustTuple<'a> = ();
13533            #[cfg(test)]
13534            #[allow(dead_code, unreachable_patterns)]
13535            fn _type_assertion(
13536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13537            ) {
13538                match _t {
13539                    alloy_sol_types::private::AssertTypeEq::<
13540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13541                    >(_) => {}
13542                }
13543            }
13544            #[automatically_derived]
13545            #[doc(hidden)]
13546            impl ::core::convert::From<transferOwnershipReturn>
13547            for UnderlyingRustTuple<'_> {
13548                fn from(value: transferOwnershipReturn) -> Self {
13549                    ()
13550                }
13551            }
13552            #[automatically_derived]
13553            #[doc(hidden)]
13554            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13555            for transferOwnershipReturn {
13556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13557                    Self {}
13558                }
13559            }
13560        }
13561        impl transferOwnershipReturn {
13562            fn _tokenize(
13563                &self,
13564            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13565                ()
13566            }
13567        }
13568        #[automatically_derived]
13569        impl alloy_sol_types::SolCall for transferOwnershipCall {
13570            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13571            type Token<'a> = <Self::Parameters<
13572                'a,
13573            > as alloy_sol_types::SolType>::Token<'a>;
13574            type Return = transferOwnershipReturn;
13575            type ReturnTuple<'a> = ();
13576            type ReturnToken<'a> = <Self::ReturnTuple<
13577                'a,
13578            > as alloy_sol_types::SolType>::Token<'a>;
13579            const SIGNATURE: &'static str = "transferOwnership(address)";
13580            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
13581            #[inline]
13582            fn new<'a>(
13583                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13584            ) -> Self {
13585                tuple.into()
13586            }
13587            #[inline]
13588            fn tokenize(&self) -> Self::Token<'_> {
13589                (
13590                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13591                        &self.newOwner,
13592                    ),
13593                )
13594            }
13595            #[inline]
13596            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13597                transferOwnershipReturn::_tokenize(ret)
13598            }
13599            #[inline]
13600            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13601                <Self::ReturnTuple<
13602                    '_,
13603                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13604                    .map(Into::into)
13605            }
13606            #[inline]
13607            fn abi_decode_returns_validate(
13608                data: &[u8],
13609            ) -> alloy_sol_types::Result<Self::Return> {
13610                <Self::ReturnTuple<
13611                    '_,
13612                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13613                    .map(Into::into)
13614            }
13615        }
13616    };
13617    #[derive(serde::Serialize, serde::Deserialize)]
13618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13619    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
13620```solidity
13621function updateEpochStartBlock(uint64 newEpochStartBlock) external;
13622```*/
13623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13624    #[derive(Clone)]
13625    pub struct updateEpochStartBlockCall {
13626        #[allow(missing_docs)]
13627        pub newEpochStartBlock: u64,
13628    }
13629    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
13630    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13631    #[derive(Clone)]
13632    pub struct updateEpochStartBlockReturn {}
13633    #[allow(
13634        non_camel_case_types,
13635        non_snake_case,
13636        clippy::pub_underscore_fields,
13637        clippy::style
13638    )]
13639    const _: () = {
13640        use alloy::sol_types as alloy_sol_types;
13641        {
13642            #[doc(hidden)]
13643            #[allow(dead_code)]
13644            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13645            #[doc(hidden)]
13646            type UnderlyingRustTuple<'a> = (u64,);
13647            #[cfg(test)]
13648            #[allow(dead_code, unreachable_patterns)]
13649            fn _type_assertion(
13650                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13651            ) {
13652                match _t {
13653                    alloy_sol_types::private::AssertTypeEq::<
13654                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13655                    >(_) => {}
13656                }
13657            }
13658            #[automatically_derived]
13659            #[doc(hidden)]
13660            impl ::core::convert::From<updateEpochStartBlockCall>
13661            for UnderlyingRustTuple<'_> {
13662                fn from(value: updateEpochStartBlockCall) -> Self {
13663                    (value.newEpochStartBlock,)
13664                }
13665            }
13666            #[automatically_derived]
13667            #[doc(hidden)]
13668            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13669            for updateEpochStartBlockCall {
13670                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13671                    Self {
13672                        newEpochStartBlock: tuple.0,
13673                    }
13674                }
13675            }
13676        }
13677        {
13678            #[doc(hidden)]
13679            #[allow(dead_code)]
13680            type UnderlyingSolTuple<'a> = ();
13681            #[doc(hidden)]
13682            type UnderlyingRustTuple<'a> = ();
13683            #[cfg(test)]
13684            #[allow(dead_code, unreachable_patterns)]
13685            fn _type_assertion(
13686                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13687            ) {
13688                match _t {
13689                    alloy_sol_types::private::AssertTypeEq::<
13690                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13691                    >(_) => {}
13692                }
13693            }
13694            #[automatically_derived]
13695            #[doc(hidden)]
13696            impl ::core::convert::From<updateEpochStartBlockReturn>
13697            for UnderlyingRustTuple<'_> {
13698                fn from(value: updateEpochStartBlockReturn) -> Self {
13699                    ()
13700                }
13701            }
13702            #[automatically_derived]
13703            #[doc(hidden)]
13704            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13705            for updateEpochStartBlockReturn {
13706                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13707                    Self {}
13708                }
13709            }
13710        }
13711        impl updateEpochStartBlockReturn {
13712            fn _tokenize(
13713                &self,
13714            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
13715                '_,
13716            > {
13717                ()
13718            }
13719        }
13720        #[automatically_derived]
13721        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
13722            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13723            type Token<'a> = <Self::Parameters<
13724                'a,
13725            > as alloy_sol_types::SolType>::Token<'a>;
13726            type Return = updateEpochStartBlockReturn;
13727            type ReturnTuple<'a> = ();
13728            type ReturnToken<'a> = <Self::ReturnTuple<
13729                'a,
13730            > as alloy_sol_types::SolType>::Token<'a>;
13731            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
13732            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
13733            #[inline]
13734            fn new<'a>(
13735                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13736            ) -> Self {
13737                tuple.into()
13738            }
13739            #[inline]
13740            fn tokenize(&self) -> Self::Token<'_> {
13741                (
13742                    <alloy::sol_types::sol_data::Uint<
13743                        64,
13744                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
13745                )
13746            }
13747            #[inline]
13748            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13749                updateEpochStartBlockReturn::_tokenize(ret)
13750            }
13751            #[inline]
13752            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13753                <Self::ReturnTuple<
13754                    '_,
13755                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13756                    .map(Into::into)
13757            }
13758            #[inline]
13759            fn abi_decode_returns_validate(
13760                data: &[u8],
13761            ) -> alloy_sol_types::Result<Self::Return> {
13762                <Self::ReturnTuple<
13763                    '_,
13764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13765                    .map(Into::into)
13766            }
13767        }
13768    };
13769    #[derive(serde::Serialize, serde::Deserialize)]
13770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13771    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13772```solidity
13773function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13774```*/
13775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13776    #[derive(Clone)]
13777    pub struct upgradeToAndCallCall {
13778        #[allow(missing_docs)]
13779        pub newImplementation: alloy::sol_types::private::Address,
13780        #[allow(missing_docs)]
13781        pub data: alloy::sol_types::private::Bytes,
13782    }
13783    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13785    #[derive(Clone)]
13786    pub struct upgradeToAndCallReturn {}
13787    #[allow(
13788        non_camel_case_types,
13789        non_snake_case,
13790        clippy::pub_underscore_fields,
13791        clippy::style
13792    )]
13793    const _: () = {
13794        use alloy::sol_types as alloy_sol_types;
13795        {
13796            #[doc(hidden)]
13797            #[allow(dead_code)]
13798            type UnderlyingSolTuple<'a> = (
13799                alloy::sol_types::sol_data::Address,
13800                alloy::sol_types::sol_data::Bytes,
13801            );
13802            #[doc(hidden)]
13803            type UnderlyingRustTuple<'a> = (
13804                alloy::sol_types::private::Address,
13805                alloy::sol_types::private::Bytes,
13806            );
13807            #[cfg(test)]
13808            #[allow(dead_code, unreachable_patterns)]
13809            fn _type_assertion(
13810                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13811            ) {
13812                match _t {
13813                    alloy_sol_types::private::AssertTypeEq::<
13814                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13815                    >(_) => {}
13816                }
13817            }
13818            #[automatically_derived]
13819            #[doc(hidden)]
13820            impl ::core::convert::From<upgradeToAndCallCall>
13821            for UnderlyingRustTuple<'_> {
13822                fn from(value: upgradeToAndCallCall) -> Self {
13823                    (value.newImplementation, value.data)
13824                }
13825            }
13826            #[automatically_derived]
13827            #[doc(hidden)]
13828            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13829            for upgradeToAndCallCall {
13830                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13831                    Self {
13832                        newImplementation: tuple.0,
13833                        data: tuple.1,
13834                    }
13835                }
13836            }
13837        }
13838        {
13839            #[doc(hidden)]
13840            #[allow(dead_code)]
13841            type UnderlyingSolTuple<'a> = ();
13842            #[doc(hidden)]
13843            type UnderlyingRustTuple<'a> = ();
13844            #[cfg(test)]
13845            #[allow(dead_code, unreachable_patterns)]
13846            fn _type_assertion(
13847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13848            ) {
13849                match _t {
13850                    alloy_sol_types::private::AssertTypeEq::<
13851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13852                    >(_) => {}
13853                }
13854            }
13855            #[automatically_derived]
13856            #[doc(hidden)]
13857            impl ::core::convert::From<upgradeToAndCallReturn>
13858            for UnderlyingRustTuple<'_> {
13859                fn from(value: upgradeToAndCallReturn) -> Self {
13860                    ()
13861                }
13862            }
13863            #[automatically_derived]
13864            #[doc(hidden)]
13865            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13866            for upgradeToAndCallReturn {
13867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13868                    Self {}
13869                }
13870            }
13871        }
13872        impl upgradeToAndCallReturn {
13873            fn _tokenize(
13874                &self,
13875            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13876                ()
13877            }
13878        }
13879        #[automatically_derived]
13880        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13881            type Parameters<'a> = (
13882                alloy::sol_types::sol_data::Address,
13883                alloy::sol_types::sol_data::Bytes,
13884            );
13885            type Token<'a> = <Self::Parameters<
13886                'a,
13887            > as alloy_sol_types::SolType>::Token<'a>;
13888            type Return = upgradeToAndCallReturn;
13889            type ReturnTuple<'a> = ();
13890            type ReturnToken<'a> = <Self::ReturnTuple<
13891                'a,
13892            > as alloy_sol_types::SolType>::Token<'a>;
13893            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13894            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13895            #[inline]
13896            fn new<'a>(
13897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13898            ) -> Self {
13899                tuple.into()
13900            }
13901            #[inline]
13902            fn tokenize(&self) -> Self::Token<'_> {
13903                (
13904                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13905                        &self.newImplementation,
13906                    ),
13907                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13908                        &self.data,
13909                    ),
13910                )
13911            }
13912            #[inline]
13913            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13914                upgradeToAndCallReturn::_tokenize(ret)
13915            }
13916            #[inline]
13917            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13918                <Self::ReturnTuple<
13919                    '_,
13920                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13921                    .map(Into::into)
13922            }
13923            #[inline]
13924            fn abi_decode_returns_validate(
13925                data: &[u8],
13926            ) -> alloy_sol_types::Result<Self::Return> {
13927                <Self::ReturnTuple<
13928                    '_,
13929                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13930                    .map(Into::into)
13931            }
13932        }
13933    };
13934    #[derive(serde::Serialize, serde::Deserialize)]
13935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13936    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13937```solidity
13938function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13939```*/
13940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13941    #[derive(Clone)]
13942    pub struct votingStakeTableStateCall;
13943    #[derive(serde::Serialize, serde::Deserialize)]
13944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13945    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13947    #[derive(Clone)]
13948    pub struct votingStakeTableStateReturn {
13949        #[allow(missing_docs)]
13950        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13951        #[allow(missing_docs)]
13952        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13953        #[allow(missing_docs)]
13954        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13955        #[allow(missing_docs)]
13956        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13957    }
13958    #[allow(
13959        non_camel_case_types,
13960        non_snake_case,
13961        clippy::pub_underscore_fields,
13962        clippy::style
13963    )]
13964    const _: () = {
13965        use alloy::sol_types as alloy_sol_types;
13966        {
13967            #[doc(hidden)]
13968            #[allow(dead_code)]
13969            type UnderlyingSolTuple<'a> = ();
13970            #[doc(hidden)]
13971            type UnderlyingRustTuple<'a> = ();
13972            #[cfg(test)]
13973            #[allow(dead_code, unreachable_patterns)]
13974            fn _type_assertion(
13975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13976            ) {
13977                match _t {
13978                    alloy_sol_types::private::AssertTypeEq::<
13979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13980                    >(_) => {}
13981                }
13982            }
13983            #[automatically_derived]
13984            #[doc(hidden)]
13985            impl ::core::convert::From<votingStakeTableStateCall>
13986            for UnderlyingRustTuple<'_> {
13987                fn from(value: votingStakeTableStateCall) -> Self {
13988                    ()
13989                }
13990            }
13991            #[automatically_derived]
13992            #[doc(hidden)]
13993            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13994            for votingStakeTableStateCall {
13995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13996                    Self
13997                }
13998            }
13999        }
14000        {
14001            #[doc(hidden)]
14002            #[allow(dead_code)]
14003            type UnderlyingSolTuple<'a> = (
14004                alloy::sol_types::sol_data::Uint<256>,
14005                BN254::ScalarField,
14006                BN254::ScalarField,
14007                BN254::ScalarField,
14008            );
14009            #[doc(hidden)]
14010            type UnderlyingRustTuple<'a> = (
14011                alloy::sol_types::private::primitives::aliases::U256,
14012                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14013                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14014                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14015            );
14016            #[cfg(test)]
14017            #[allow(dead_code, unreachable_patterns)]
14018            fn _type_assertion(
14019                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14020            ) {
14021                match _t {
14022                    alloy_sol_types::private::AssertTypeEq::<
14023                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14024                    >(_) => {}
14025                }
14026            }
14027            #[automatically_derived]
14028            #[doc(hidden)]
14029            impl ::core::convert::From<votingStakeTableStateReturn>
14030            for UnderlyingRustTuple<'_> {
14031                fn from(value: votingStakeTableStateReturn) -> Self {
14032                    (
14033                        value.threshold,
14034                        value.blsKeyComm,
14035                        value.schnorrKeyComm,
14036                        value.amountComm,
14037                    )
14038                }
14039            }
14040            #[automatically_derived]
14041            #[doc(hidden)]
14042            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14043            for votingStakeTableStateReturn {
14044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14045                    Self {
14046                        threshold: tuple.0,
14047                        blsKeyComm: tuple.1,
14048                        schnorrKeyComm: tuple.2,
14049                        amountComm: tuple.3,
14050                    }
14051                }
14052            }
14053        }
14054        impl votingStakeTableStateReturn {
14055            fn _tokenize(
14056                &self,
14057            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14058                '_,
14059            > {
14060                (
14061                    <alloy::sol_types::sol_data::Uint<
14062                        256,
14063                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14064                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14065                        &self.blsKeyComm,
14066                    ),
14067                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14068                        &self.schnorrKeyComm,
14069                    ),
14070                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14071                        &self.amountComm,
14072                    ),
14073                )
14074            }
14075        }
14076        #[automatically_derived]
14077        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14078            type Parameters<'a> = ();
14079            type Token<'a> = <Self::Parameters<
14080                'a,
14081            > as alloy_sol_types::SolType>::Token<'a>;
14082            type Return = votingStakeTableStateReturn;
14083            type ReturnTuple<'a> = (
14084                alloy::sol_types::sol_data::Uint<256>,
14085                BN254::ScalarField,
14086                BN254::ScalarField,
14087                BN254::ScalarField,
14088            );
14089            type ReturnToken<'a> = <Self::ReturnTuple<
14090                'a,
14091            > as alloy_sol_types::SolType>::Token<'a>;
14092            const SIGNATURE: &'static str = "votingStakeTableState()";
14093            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14094            #[inline]
14095            fn new<'a>(
14096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14097            ) -> Self {
14098                tuple.into()
14099            }
14100            #[inline]
14101            fn tokenize(&self) -> Self::Token<'_> {
14102                ()
14103            }
14104            #[inline]
14105            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14106                votingStakeTableStateReturn::_tokenize(ret)
14107            }
14108            #[inline]
14109            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14110                <Self::ReturnTuple<
14111                    '_,
14112                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14113                    .map(Into::into)
14114            }
14115            #[inline]
14116            fn abi_decode_returns_validate(
14117                data: &[u8],
14118            ) -> alloy_sol_types::Result<Self::Return> {
14119                <Self::ReturnTuple<
14120                    '_,
14121                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14122                    .map(Into::into)
14123            }
14124        }
14125    };
14126    ///Container for all the [`LightClientV3`](self) function calls.
14127    #[derive(serde::Serialize, serde::Deserialize)]
14128    #[derive()]
14129    pub enum LightClientV3Calls {
14130        #[allow(missing_docs)]
14131        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14132        #[allow(missing_docs)]
14133        _getVk(_getVkCall),
14134        #[allow(missing_docs)]
14135        authRoot(authRootCall),
14136        #[allow(missing_docs)]
14137        blocksPerEpoch(blocksPerEpochCall),
14138        #[allow(missing_docs)]
14139        currentBlockNumber(currentBlockNumberCall),
14140        #[allow(missing_docs)]
14141        currentEpoch(currentEpochCall),
14142        #[allow(missing_docs)]
14143        disablePermissionedProverMode(disablePermissionedProverModeCall),
14144        #[allow(missing_docs)]
14145        epochFromBlockNumber(epochFromBlockNumberCall),
14146        #[allow(missing_docs)]
14147        epochStartBlock(epochStartBlockCall),
14148        #[allow(missing_docs)]
14149        finalizedState(finalizedStateCall),
14150        #[allow(missing_docs)]
14151        genesisStakeTableState(genesisStakeTableStateCall),
14152        #[allow(missing_docs)]
14153        genesisState(genesisStateCall),
14154        #[allow(missing_docs)]
14155        getHotShotCommitment(getHotShotCommitmentCall),
14156        #[allow(missing_docs)]
14157        getStateHistoryCount(getStateHistoryCountCall),
14158        #[allow(missing_docs)]
14159        getVersion(getVersionCall),
14160        #[allow(missing_docs)]
14161        initialize(initializeCall),
14162        #[allow(missing_docs)]
14163        initializeV2(initializeV2Call),
14164        #[allow(missing_docs)]
14165        initializeV3(initializeV3Call),
14166        #[allow(missing_docs)]
14167        isEpochRoot(isEpochRootCall),
14168        #[allow(missing_docs)]
14169        isGtEpochRoot(isGtEpochRootCall),
14170        #[allow(missing_docs)]
14171        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14172        #[allow(missing_docs)]
14173        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14174        #[allow(missing_docs)]
14175        newFinalizedState_0(newFinalizedState_0Call),
14176        #[allow(missing_docs)]
14177        newFinalizedState_1(newFinalizedState_1Call),
14178        #[allow(missing_docs)]
14179        newFinalizedState_2(newFinalizedState_2Call),
14180        #[allow(missing_docs)]
14181        owner(ownerCall),
14182        #[allow(missing_docs)]
14183        permissionedProver(permissionedProverCall),
14184        #[allow(missing_docs)]
14185        proxiableUUID(proxiableUUIDCall),
14186        #[allow(missing_docs)]
14187        renounceOwnership(renounceOwnershipCall),
14188        #[allow(missing_docs)]
14189        setPermissionedProver(setPermissionedProverCall),
14190        #[allow(missing_docs)]
14191        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14192        #[allow(missing_docs)]
14193        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14194        #[allow(missing_docs)]
14195        stateHistoryCommitments(stateHistoryCommitmentsCall),
14196        #[allow(missing_docs)]
14197        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14198        #[allow(missing_docs)]
14199        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14200        #[allow(missing_docs)]
14201        transferOwnership(transferOwnershipCall),
14202        #[allow(missing_docs)]
14203        updateEpochStartBlock(updateEpochStartBlockCall),
14204        #[allow(missing_docs)]
14205        upgradeToAndCall(upgradeToAndCallCall),
14206        #[allow(missing_docs)]
14207        votingStakeTableState(votingStakeTableStateCall),
14208    }
14209    #[automatically_derived]
14210    impl LightClientV3Calls {
14211        /// All the selectors of this enum.
14212        ///
14213        /// Note that the selectors might not be in the same order as the variants.
14214        /// No guarantees are made about the order of the selectors.
14215        ///
14216        /// Prefer using `SolInterface` methods instead.
14217        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14218            [1u8, 63u8, 165u8, 252u8],
14219            [2u8, 181u8, 146u8, 243u8],
14220            [6u8, 37u8, 225u8, 155u8],
14221            [13u8, 142u8, 110u8, 44u8],
14222            [18u8, 23u8, 60u8, 44u8],
14223            [22u8, 122u8, 198u8, 24u8],
14224            [32u8, 99u8, 212u8, 247u8],
14225            [37u8, 41u8, 116u8, 39u8],
14226            [47u8, 121u8, 136u8, 157u8],
14227            [48u8, 12u8, 137u8, 221u8],
14228            [49u8, 61u8, 247u8, 177u8],
14229            [55u8, 142u8, 194u8, 59u8],
14230            [56u8, 228u8, 84u8, 177u8],
14231            [62u8, 213u8, 91u8, 123u8],
14232            [66u8, 109u8, 49u8, 148u8],
14233            [67u8, 61u8, 186u8, 159u8],
14234            [79u8, 30u8, 242u8, 134u8],
14235            [82u8, 209u8, 144u8, 45u8],
14236            [105u8, 204u8, 106u8, 4u8],
14237            [113u8, 80u8, 24u8, 166u8],
14238            [117u8, 124u8, 55u8, 173u8],
14239            [118u8, 103u8, 24u8, 8u8],
14240            [130u8, 110u8, 65u8, 252u8],
14241            [133u8, 132u8, 210u8, 63u8],
14242            [141u8, 165u8, 203u8, 91u8],
14243            [144u8, 193u8, 67u8, 144u8],
14244            [150u8, 193u8, 202u8, 97u8],
14245            [153u8, 131u8, 40u8, 232u8],
14246            [155u8, 170u8, 60u8, 201u8],
14247            [159u8, 219u8, 84u8, 167u8],
14248            [170u8, 189u8, 93u8, 179u8],
14249            [173u8, 60u8, 177u8, 204u8],
14250            [179u8, 59u8, 196u8, 145u8],
14251            [194u8, 59u8, 158u8, 158u8],
14252            [210u8, 77u8, 147u8, 61u8],
14253            [224u8, 48u8, 51u8, 1u8],
14254            [240u8, 104u8, 32u8, 84u8],
14255            [242u8, 253u8, 227u8, 139u8],
14256            [249u8, 229u8, 13u8, 25u8],
14257        ];
14258    }
14259    #[automatically_derived]
14260    impl alloy_sol_types::SolInterface for LightClientV3Calls {
14261        const NAME: &'static str = "LightClientV3Calls";
14262        const MIN_DATA_LENGTH: usize = 0usize;
14263        const COUNT: usize = 39usize;
14264        #[inline]
14265        fn selector(&self) -> [u8; 4] {
14266            match self {
14267                Self::UPGRADE_INTERFACE_VERSION(_) => {
14268                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14269                }
14270                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14271                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
14272                Self::blocksPerEpoch(_) => {
14273                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14274                }
14275                Self::currentBlockNumber(_) => {
14276                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14277                }
14278                Self::currentEpoch(_) => {
14279                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14280                }
14281                Self::disablePermissionedProverMode(_) => {
14282                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14283                }
14284                Self::epochFromBlockNumber(_) => {
14285                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14286                }
14287                Self::epochStartBlock(_) => {
14288                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14289                }
14290                Self::finalizedState(_) => {
14291                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14292                }
14293                Self::genesisStakeTableState(_) => {
14294                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14295                }
14296                Self::genesisState(_) => {
14297                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14298                }
14299                Self::getHotShotCommitment(_) => {
14300                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14301                }
14302                Self::getStateHistoryCount(_) => {
14303                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14304                }
14305                Self::getVersion(_) => {
14306                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14307                }
14308                Self::initialize(_) => {
14309                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14310                }
14311                Self::initializeV2(_) => {
14312                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14313                }
14314                Self::initializeV3(_) => {
14315                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
14316                }
14317                Self::isEpochRoot(_) => {
14318                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14319                }
14320                Self::isGtEpochRoot(_) => {
14321                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14322                }
14323                Self::isPermissionedProverEnabled(_) => {
14324                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14325                }
14326                Self::lagOverEscapeHatchThreshold(_) => {
14327                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14328                }
14329                Self::newFinalizedState_0(_) => {
14330                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14331                }
14332                Self::newFinalizedState_1(_) => {
14333                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14334                }
14335                Self::newFinalizedState_2(_) => {
14336                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
14337                }
14338                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14339                Self::permissionedProver(_) => {
14340                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14341                }
14342                Self::proxiableUUID(_) => {
14343                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14344                }
14345                Self::renounceOwnership(_) => {
14346                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14347                }
14348                Self::setPermissionedProver(_) => {
14349                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14350                }
14351                Self::setStateHistoryRetentionPeriod(_) => {
14352                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14353                }
14354                Self::setstateHistoryRetentionPeriod(_) => {
14355                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14356                }
14357                Self::stateHistoryCommitments(_) => {
14358                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
14359                }
14360                Self::stateHistoryFirstIndex(_) => {
14361                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
14362                }
14363                Self::stateHistoryRetentionPeriod(_) => {
14364                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14365                }
14366                Self::transferOwnership(_) => {
14367                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14368                }
14369                Self::updateEpochStartBlock(_) => {
14370                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14371                }
14372                Self::upgradeToAndCall(_) => {
14373                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
14374                }
14375                Self::votingStakeTableState(_) => {
14376                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14377                }
14378            }
14379        }
14380        #[inline]
14381        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14382            Self::SELECTORS.get(i).copied()
14383        }
14384        #[inline]
14385        fn valid_selector(selector: [u8; 4]) -> bool {
14386            Self::SELECTORS.binary_search(&selector).is_ok()
14387        }
14388        #[inline]
14389        #[allow(non_snake_case)]
14390        fn abi_decode_raw(
14391            selector: [u8; 4],
14392            data: &[u8],
14393        ) -> alloy_sol_types::Result<Self> {
14394            static DECODE_SHIMS: &[fn(
14395                &[u8],
14396            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
14397                {
14398                    fn setPermissionedProver(
14399                        data: &[u8],
14400                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14401                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14402                                data,
14403                            )
14404                            .map(LightClientV3Calls::setPermissionedProver)
14405                    }
14406                    setPermissionedProver
14407                },
14408                {
14409                    fn stateHistoryCommitments(
14410                        data: &[u8],
14411                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14412                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14413                                data,
14414                            )
14415                            .map(LightClientV3Calls::stateHistoryCommitments)
14416                    }
14417                    stateHistoryCommitments
14418                },
14419                {
14420                    fn votingStakeTableState(
14421                        data: &[u8],
14422                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14423                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14424                                data,
14425                            )
14426                            .map(LightClientV3Calls::votingStakeTableState)
14427                    }
14428                    votingStakeTableState
14429                },
14430                {
14431                    fn getVersion(
14432                        data: &[u8],
14433                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14434                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
14435                                data,
14436                            )
14437                            .map(LightClientV3Calls::getVersion)
14438                    }
14439                    getVersion
14440                },
14441                {
14442                    fn _getVk(
14443                        data: &[u8],
14444                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14445                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14446                            .map(LightClientV3Calls::_getVk)
14447                    }
14448                    _getVk
14449                },
14450                {
14451                    fn updateEpochStartBlock(
14452                        data: &[u8],
14453                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14454                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14455                                data,
14456                            )
14457                            .map(LightClientV3Calls::updateEpochStartBlock)
14458                    }
14459                    updateEpochStartBlock
14460                },
14461                {
14462                    fn newFinalizedState_0(
14463                        data: &[u8],
14464                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14465                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
14466                                data,
14467                            )
14468                            .map(LightClientV3Calls::newFinalizedState_0)
14469                    }
14470                    newFinalizedState_0
14471                },
14472                {
14473                    fn isEpochRoot(
14474                        data: &[u8],
14475                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14476                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14477                                data,
14478                            )
14479                            .map(LightClientV3Calls::isEpochRoot)
14480                    }
14481                    isEpochRoot
14482                },
14483                {
14484                    fn stateHistoryFirstIndex(
14485                        data: &[u8],
14486                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14487                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
14488                                data,
14489                            )
14490                            .map(LightClientV3Calls::stateHistoryFirstIndex)
14491                    }
14492                    stateHistoryFirstIndex
14493                },
14494                {
14495                    fn isGtEpochRoot(
14496                        data: &[u8],
14497                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14498                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14499                                data,
14500                            )
14501                            .map(LightClientV3Calls::isGtEpochRoot)
14502                    }
14503                    isGtEpochRoot
14504                },
14505                {
14506                    fn permissionedProver(
14507                        data: &[u8],
14508                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14509                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14510                                data,
14511                            )
14512                            .map(LightClientV3Calls::permissionedProver)
14513                    }
14514                    permissionedProver
14515                },
14516                {
14517                    fn currentBlockNumber(
14518                        data: &[u8],
14519                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14520                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14521                                data,
14522                            )
14523                            .map(LightClientV3Calls::currentBlockNumber)
14524                    }
14525                    currentBlockNumber
14526                },
14527                {
14528                    fn initializeV3(
14529                        data: &[u8],
14530                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14531                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
14532                                data,
14533                            )
14534                            .map(LightClientV3Calls::initializeV3)
14535                    }
14536                    initializeV3
14537                },
14538                {
14539                    fn epochStartBlock(
14540                        data: &[u8],
14541                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14542                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14543                                data,
14544                            )
14545                            .map(LightClientV3Calls::epochStartBlock)
14546                    }
14547                    epochStartBlock
14548                },
14549                {
14550                    fn genesisStakeTableState(
14551                        data: &[u8],
14552                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14553                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14554                                data,
14555                            )
14556                            .map(LightClientV3Calls::genesisStakeTableState)
14557                    }
14558                    genesisStakeTableState
14559                },
14560                {
14561                    fn setStateHistoryRetentionPeriod(
14562                        data: &[u8],
14563                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14564                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14565                                data,
14566                            )
14567                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
14568                    }
14569                    setStateHistoryRetentionPeriod
14570                },
14571                {
14572                    fn upgradeToAndCall(
14573                        data: &[u8],
14574                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14575                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
14576                                data,
14577                            )
14578                            .map(LightClientV3Calls::upgradeToAndCall)
14579                    }
14580                    upgradeToAndCall
14581                },
14582                {
14583                    fn proxiableUUID(
14584                        data: &[u8],
14585                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14586                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
14587                                data,
14588                            )
14589                            .map(LightClientV3Calls::proxiableUUID)
14590                    }
14591                    proxiableUUID
14592                },
14593                {
14594                    fn disablePermissionedProverMode(
14595                        data: &[u8],
14596                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14597                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14598                                data,
14599                            )
14600                            .map(LightClientV3Calls::disablePermissionedProverMode)
14601                    }
14602                    disablePermissionedProverMode
14603                },
14604                {
14605                    fn renounceOwnership(
14606                        data: &[u8],
14607                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14608                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14609                                data,
14610                            )
14611                            .map(LightClientV3Calls::renounceOwnership)
14612                    }
14613                    renounceOwnership
14614                },
14615                {
14616                    fn newFinalizedState_1(
14617                        data: &[u8],
14618                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14619                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14620                                data,
14621                            )
14622                            .map(LightClientV3Calls::newFinalizedState_1)
14623                    }
14624                    newFinalizedState_1
14625                },
14626                {
14627                    fn currentEpoch(
14628                        data: &[u8],
14629                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14630                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14631                                data,
14632                            )
14633                            .map(LightClientV3Calls::currentEpoch)
14634                    }
14635                    currentEpoch
14636                },
14637                {
14638                    fn isPermissionedProverEnabled(
14639                        data: &[u8],
14640                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14641                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
14642                                data,
14643                            )
14644                            .map(LightClientV3Calls::isPermissionedProverEnabled)
14645                    }
14646                    isPermissionedProverEnabled
14647                },
14648                {
14649                    fn getHotShotCommitment(
14650                        data: &[u8],
14651                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14652                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
14653                                data,
14654                            )
14655                            .map(LightClientV3Calls::getHotShotCommitment)
14656                    }
14657                    getHotShotCommitment
14658                },
14659                {
14660                    fn owner(
14661                        data: &[u8],
14662                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14663                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14664                            .map(LightClientV3Calls::owner)
14665                    }
14666                    owner
14667                },
14668                {
14669                    fn epochFromBlockNumber(
14670                        data: &[u8],
14671                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14672                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14673                                data,
14674                            )
14675                            .map(LightClientV3Calls::epochFromBlockNumber)
14676                    }
14677                    epochFromBlockNumber
14678                },
14679                {
14680                    fn setstateHistoryRetentionPeriod(
14681                        data: &[u8],
14682                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14683                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14684                                data,
14685                            )
14686                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
14687                    }
14688                    setstateHistoryRetentionPeriod
14689                },
14690                {
14691                    fn authRoot(
14692                        data: &[u8],
14693                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14694                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14695                            .map(LightClientV3Calls::authRoot)
14696                    }
14697                    authRoot
14698                },
14699                {
14700                    fn initialize(
14701                        data: &[u8],
14702                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14703                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14704                                data,
14705                            )
14706                            .map(LightClientV3Calls::initialize)
14707                    }
14708                    initialize
14709                },
14710                {
14711                    fn finalizedState(
14712                        data: &[u8],
14713                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14714                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14715                                data,
14716                            )
14717                            .map(LightClientV3Calls::finalizedState)
14718                    }
14719                    finalizedState
14720                },
14721                {
14722                    fn newFinalizedState_2(
14723                        data: &[u8],
14724                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14725                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14726                                data,
14727                            )
14728                            .map(LightClientV3Calls::newFinalizedState_2)
14729                    }
14730                    newFinalizedState_2
14731                },
14732                {
14733                    fn UPGRADE_INTERFACE_VERSION(
14734                        data: &[u8],
14735                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14736                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14737                                data,
14738                            )
14739                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
14740                    }
14741                    UPGRADE_INTERFACE_VERSION
14742                },
14743                {
14744                    fn initializeV2(
14745                        data: &[u8],
14746                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14747                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14748                                data,
14749                            )
14750                            .map(LightClientV3Calls::initializeV2)
14751                    }
14752                    initializeV2
14753                },
14754                {
14755                    fn stateHistoryRetentionPeriod(
14756                        data: &[u8],
14757                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14758                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14759                                data,
14760                            )
14761                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
14762                    }
14763                    stateHistoryRetentionPeriod
14764                },
14765                {
14766                    fn genesisState(
14767                        data: &[u8],
14768                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14769                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14770                                data,
14771                            )
14772                            .map(LightClientV3Calls::genesisState)
14773                    }
14774                    genesisState
14775                },
14776                {
14777                    fn lagOverEscapeHatchThreshold(
14778                        data: &[u8],
14779                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14780                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14781                                data,
14782                            )
14783                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
14784                    }
14785                    lagOverEscapeHatchThreshold
14786                },
14787                {
14788                    fn blocksPerEpoch(
14789                        data: &[u8],
14790                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14791                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14792                                data,
14793                            )
14794                            .map(LightClientV3Calls::blocksPerEpoch)
14795                    }
14796                    blocksPerEpoch
14797                },
14798                {
14799                    fn transferOwnership(
14800                        data: &[u8],
14801                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14802                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14803                                data,
14804                            )
14805                            .map(LightClientV3Calls::transferOwnership)
14806                    }
14807                    transferOwnership
14808                },
14809                {
14810                    fn getStateHistoryCount(
14811                        data: &[u8],
14812                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14813                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14814                                data,
14815                            )
14816                            .map(LightClientV3Calls::getStateHistoryCount)
14817                    }
14818                    getStateHistoryCount
14819                },
14820            ];
14821            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14822                return Err(
14823                    alloy_sol_types::Error::unknown_selector(
14824                        <Self as alloy_sol_types::SolInterface>::NAME,
14825                        selector,
14826                    ),
14827                );
14828            };
14829            DECODE_SHIMS[idx](data)
14830        }
14831        #[inline]
14832        #[allow(non_snake_case)]
14833        fn abi_decode_raw_validate(
14834            selector: [u8; 4],
14835            data: &[u8],
14836        ) -> alloy_sol_types::Result<Self> {
14837            static DECODE_VALIDATE_SHIMS: &[fn(
14838                &[u8],
14839            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
14840                {
14841                    fn setPermissionedProver(
14842                        data: &[u8],
14843                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14844                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14845                                data,
14846                            )
14847                            .map(LightClientV3Calls::setPermissionedProver)
14848                    }
14849                    setPermissionedProver
14850                },
14851                {
14852                    fn stateHistoryCommitments(
14853                        data: &[u8],
14854                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14855                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14856                                data,
14857                            )
14858                            .map(LightClientV3Calls::stateHistoryCommitments)
14859                    }
14860                    stateHistoryCommitments
14861                },
14862                {
14863                    fn votingStakeTableState(
14864                        data: &[u8],
14865                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14866                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14867                                data,
14868                            )
14869                            .map(LightClientV3Calls::votingStakeTableState)
14870                    }
14871                    votingStakeTableState
14872                },
14873                {
14874                    fn getVersion(
14875                        data: &[u8],
14876                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14877                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14878                                data,
14879                            )
14880                            .map(LightClientV3Calls::getVersion)
14881                    }
14882                    getVersion
14883                },
14884                {
14885                    fn _getVk(
14886                        data: &[u8],
14887                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14888                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14889                                data,
14890                            )
14891                            .map(LightClientV3Calls::_getVk)
14892                    }
14893                    _getVk
14894                },
14895                {
14896                    fn updateEpochStartBlock(
14897                        data: &[u8],
14898                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14899                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14900                                data,
14901                            )
14902                            .map(LightClientV3Calls::updateEpochStartBlock)
14903                    }
14904                    updateEpochStartBlock
14905                },
14906                {
14907                    fn newFinalizedState_0(
14908                        data: &[u8],
14909                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14910                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14911                                data,
14912                            )
14913                            .map(LightClientV3Calls::newFinalizedState_0)
14914                    }
14915                    newFinalizedState_0
14916                },
14917                {
14918                    fn isEpochRoot(
14919                        data: &[u8],
14920                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14921                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14922                                data,
14923                            )
14924                            .map(LightClientV3Calls::isEpochRoot)
14925                    }
14926                    isEpochRoot
14927                },
14928                {
14929                    fn stateHistoryFirstIndex(
14930                        data: &[u8],
14931                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14932                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14933                                data,
14934                            )
14935                            .map(LightClientV3Calls::stateHistoryFirstIndex)
14936                    }
14937                    stateHistoryFirstIndex
14938                },
14939                {
14940                    fn isGtEpochRoot(
14941                        data: &[u8],
14942                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14943                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14944                                data,
14945                            )
14946                            .map(LightClientV3Calls::isGtEpochRoot)
14947                    }
14948                    isGtEpochRoot
14949                },
14950                {
14951                    fn permissionedProver(
14952                        data: &[u8],
14953                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14954                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14955                                data,
14956                            )
14957                            .map(LightClientV3Calls::permissionedProver)
14958                    }
14959                    permissionedProver
14960                },
14961                {
14962                    fn currentBlockNumber(
14963                        data: &[u8],
14964                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14965                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14966                                data,
14967                            )
14968                            .map(LightClientV3Calls::currentBlockNumber)
14969                    }
14970                    currentBlockNumber
14971                },
14972                {
14973                    fn initializeV3(
14974                        data: &[u8],
14975                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14976                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14977                                data,
14978                            )
14979                            .map(LightClientV3Calls::initializeV3)
14980                    }
14981                    initializeV3
14982                },
14983                {
14984                    fn epochStartBlock(
14985                        data: &[u8],
14986                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14987                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14988                                data,
14989                            )
14990                            .map(LightClientV3Calls::epochStartBlock)
14991                    }
14992                    epochStartBlock
14993                },
14994                {
14995                    fn genesisStakeTableState(
14996                        data: &[u8],
14997                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14998                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14999                                data,
15000                            )
15001                            .map(LightClientV3Calls::genesisStakeTableState)
15002                    }
15003                    genesisStakeTableState
15004                },
15005                {
15006                    fn setStateHistoryRetentionPeriod(
15007                        data: &[u8],
15008                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15009                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15010                                data,
15011                            )
15012                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
15013                    }
15014                    setStateHistoryRetentionPeriod
15015                },
15016                {
15017                    fn upgradeToAndCall(
15018                        data: &[u8],
15019                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15020                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15021                                data,
15022                            )
15023                            .map(LightClientV3Calls::upgradeToAndCall)
15024                    }
15025                    upgradeToAndCall
15026                },
15027                {
15028                    fn proxiableUUID(
15029                        data: &[u8],
15030                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15031                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15032                                data,
15033                            )
15034                            .map(LightClientV3Calls::proxiableUUID)
15035                    }
15036                    proxiableUUID
15037                },
15038                {
15039                    fn disablePermissionedProverMode(
15040                        data: &[u8],
15041                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15042                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15043                                data,
15044                            )
15045                            .map(LightClientV3Calls::disablePermissionedProverMode)
15046                    }
15047                    disablePermissionedProverMode
15048                },
15049                {
15050                    fn renounceOwnership(
15051                        data: &[u8],
15052                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15053                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15054                                data,
15055                            )
15056                            .map(LightClientV3Calls::renounceOwnership)
15057                    }
15058                    renounceOwnership
15059                },
15060                {
15061                    fn newFinalizedState_1(
15062                        data: &[u8],
15063                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15064                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15065                                data,
15066                            )
15067                            .map(LightClientV3Calls::newFinalizedState_1)
15068                    }
15069                    newFinalizedState_1
15070                },
15071                {
15072                    fn currentEpoch(
15073                        data: &[u8],
15074                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15075                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15076                                data,
15077                            )
15078                            .map(LightClientV3Calls::currentEpoch)
15079                    }
15080                    currentEpoch
15081                },
15082                {
15083                    fn isPermissionedProverEnabled(
15084                        data: &[u8],
15085                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15086                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15087                                data,
15088                            )
15089                            .map(LightClientV3Calls::isPermissionedProverEnabled)
15090                    }
15091                    isPermissionedProverEnabled
15092                },
15093                {
15094                    fn getHotShotCommitment(
15095                        data: &[u8],
15096                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15097                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15098                                data,
15099                            )
15100                            .map(LightClientV3Calls::getHotShotCommitment)
15101                    }
15102                    getHotShotCommitment
15103                },
15104                {
15105                    fn owner(
15106                        data: &[u8],
15107                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15108                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15109                                data,
15110                            )
15111                            .map(LightClientV3Calls::owner)
15112                    }
15113                    owner
15114                },
15115                {
15116                    fn epochFromBlockNumber(
15117                        data: &[u8],
15118                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15119                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15120                                data,
15121                            )
15122                            .map(LightClientV3Calls::epochFromBlockNumber)
15123                    }
15124                    epochFromBlockNumber
15125                },
15126                {
15127                    fn setstateHistoryRetentionPeriod(
15128                        data: &[u8],
15129                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15130                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15131                                data,
15132                            )
15133                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
15134                    }
15135                    setstateHistoryRetentionPeriod
15136                },
15137                {
15138                    fn authRoot(
15139                        data: &[u8],
15140                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15141                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15142                                data,
15143                            )
15144                            .map(LightClientV3Calls::authRoot)
15145                    }
15146                    authRoot
15147                },
15148                {
15149                    fn initialize(
15150                        data: &[u8],
15151                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15152                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15153                                data,
15154                            )
15155                            .map(LightClientV3Calls::initialize)
15156                    }
15157                    initialize
15158                },
15159                {
15160                    fn finalizedState(
15161                        data: &[u8],
15162                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15163                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15164                                data,
15165                            )
15166                            .map(LightClientV3Calls::finalizedState)
15167                    }
15168                    finalizedState
15169                },
15170                {
15171                    fn newFinalizedState_2(
15172                        data: &[u8],
15173                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15174                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15175                                data,
15176                            )
15177                            .map(LightClientV3Calls::newFinalizedState_2)
15178                    }
15179                    newFinalizedState_2
15180                },
15181                {
15182                    fn UPGRADE_INTERFACE_VERSION(
15183                        data: &[u8],
15184                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15185                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15186                                data,
15187                            )
15188                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
15189                    }
15190                    UPGRADE_INTERFACE_VERSION
15191                },
15192                {
15193                    fn initializeV2(
15194                        data: &[u8],
15195                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15196                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15197                                data,
15198                            )
15199                            .map(LightClientV3Calls::initializeV2)
15200                    }
15201                    initializeV2
15202                },
15203                {
15204                    fn stateHistoryRetentionPeriod(
15205                        data: &[u8],
15206                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15207                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15208                                data,
15209                            )
15210                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
15211                    }
15212                    stateHistoryRetentionPeriod
15213                },
15214                {
15215                    fn genesisState(
15216                        data: &[u8],
15217                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15218                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15219                                data,
15220                            )
15221                            .map(LightClientV3Calls::genesisState)
15222                    }
15223                    genesisState
15224                },
15225                {
15226                    fn lagOverEscapeHatchThreshold(
15227                        data: &[u8],
15228                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15229                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15230                                data,
15231                            )
15232                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
15233                    }
15234                    lagOverEscapeHatchThreshold
15235                },
15236                {
15237                    fn blocksPerEpoch(
15238                        data: &[u8],
15239                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15240                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15241                                data,
15242                            )
15243                            .map(LightClientV3Calls::blocksPerEpoch)
15244                    }
15245                    blocksPerEpoch
15246                },
15247                {
15248                    fn transferOwnership(
15249                        data: &[u8],
15250                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15251                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15252                                data,
15253                            )
15254                            .map(LightClientV3Calls::transferOwnership)
15255                    }
15256                    transferOwnership
15257                },
15258                {
15259                    fn getStateHistoryCount(
15260                        data: &[u8],
15261                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15262                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15263                                data,
15264                            )
15265                            .map(LightClientV3Calls::getStateHistoryCount)
15266                    }
15267                    getStateHistoryCount
15268                },
15269            ];
15270            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15271                return Err(
15272                    alloy_sol_types::Error::unknown_selector(
15273                        <Self as alloy_sol_types::SolInterface>::NAME,
15274                        selector,
15275                    ),
15276                );
15277            };
15278            DECODE_VALIDATE_SHIMS[idx](data)
15279        }
15280        #[inline]
15281        fn abi_encoded_size(&self) -> usize {
15282            match self {
15283                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15284                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
15285                        inner,
15286                    )
15287                }
15288                Self::_getVk(inner) => {
15289                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15290                }
15291                Self::authRoot(inner) => {
15292                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15293                }
15294                Self::blocksPerEpoch(inner) => {
15295                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15296                        inner,
15297                    )
15298                }
15299                Self::currentBlockNumber(inner) => {
15300                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15301                        inner,
15302                    )
15303                }
15304                Self::currentEpoch(inner) => {
15305                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15306                        inner,
15307                    )
15308                }
15309                Self::disablePermissionedProverMode(inner) => {
15310                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
15311                        inner,
15312                    )
15313                }
15314                Self::epochFromBlockNumber(inner) => {
15315                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15316                        inner,
15317                    )
15318                }
15319                Self::epochStartBlock(inner) => {
15320                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15321                        inner,
15322                    )
15323                }
15324                Self::finalizedState(inner) => {
15325                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15326                        inner,
15327                    )
15328                }
15329                Self::genesisStakeTableState(inner) => {
15330                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15331                        inner,
15332                    )
15333                }
15334                Self::genesisState(inner) => {
15335                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15336                        inner,
15337                    )
15338                }
15339                Self::getHotShotCommitment(inner) => {
15340                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15341                        inner,
15342                    )
15343                }
15344                Self::getStateHistoryCount(inner) => {
15345                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
15346                        inner,
15347                    )
15348                }
15349                Self::getVersion(inner) => {
15350                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15351                }
15352                Self::initialize(inner) => {
15353                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15354                }
15355                Self::initializeV2(inner) => {
15356                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15357                        inner,
15358                    )
15359                }
15360                Self::initializeV3(inner) => {
15361                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
15362                        inner,
15363                    )
15364                }
15365                Self::isEpochRoot(inner) => {
15366                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15367                        inner,
15368                    )
15369                }
15370                Self::isGtEpochRoot(inner) => {
15371                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15372                        inner,
15373                    )
15374                }
15375                Self::isPermissionedProverEnabled(inner) => {
15376                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
15377                        inner,
15378                    )
15379                }
15380                Self::lagOverEscapeHatchThreshold(inner) => {
15381                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
15382                        inner,
15383                    )
15384                }
15385                Self::newFinalizedState_0(inner) => {
15386                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
15387                        inner,
15388                    )
15389                }
15390                Self::newFinalizedState_1(inner) => {
15391                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
15392                        inner,
15393                    )
15394                }
15395                Self::newFinalizedState_2(inner) => {
15396                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15397                        inner,
15398                    )
15399                }
15400                Self::owner(inner) => {
15401                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15402                }
15403                Self::permissionedProver(inner) => {
15404                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15405                        inner,
15406                    )
15407                }
15408                Self::proxiableUUID(inner) => {
15409                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
15410                        inner,
15411                    )
15412                }
15413                Self::renounceOwnership(inner) => {
15414                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15415                        inner,
15416                    )
15417                }
15418                Self::setPermissionedProver(inner) => {
15419                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15420                        inner,
15421                    )
15422                }
15423                Self::setStateHistoryRetentionPeriod(inner) => {
15424                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15425                        inner,
15426                    )
15427                }
15428                Self::setstateHistoryRetentionPeriod(inner) => {
15429                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15430                        inner,
15431                    )
15432                }
15433                Self::stateHistoryCommitments(inner) => {
15434                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15435                        inner,
15436                    )
15437                }
15438                Self::stateHistoryFirstIndex(inner) => {
15439                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
15440                        inner,
15441                    )
15442                }
15443                Self::stateHistoryRetentionPeriod(inner) => {
15444                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15445                        inner,
15446                    )
15447                }
15448                Self::transferOwnership(inner) => {
15449                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15450                        inner,
15451                    )
15452                }
15453                Self::updateEpochStartBlock(inner) => {
15454                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15455                        inner,
15456                    )
15457                }
15458                Self::upgradeToAndCall(inner) => {
15459                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
15460                        inner,
15461                    )
15462                }
15463                Self::votingStakeTableState(inner) => {
15464                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15465                        inner,
15466                    )
15467                }
15468            }
15469        }
15470        #[inline]
15471        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15472            match self {
15473                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15474                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
15475                        inner,
15476                        out,
15477                    )
15478                }
15479                Self::_getVk(inner) => {
15480                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15481                }
15482                Self::authRoot(inner) => {
15483                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15484                        inner,
15485                        out,
15486                    )
15487                }
15488                Self::blocksPerEpoch(inner) => {
15489                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15490                        inner,
15491                        out,
15492                    )
15493                }
15494                Self::currentBlockNumber(inner) => {
15495                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15496                        inner,
15497                        out,
15498                    )
15499                }
15500                Self::currentEpoch(inner) => {
15501                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15502                        inner,
15503                        out,
15504                    )
15505                }
15506                Self::disablePermissionedProverMode(inner) => {
15507                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15508                        inner,
15509                        out,
15510                    )
15511                }
15512                Self::epochFromBlockNumber(inner) => {
15513                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15514                        inner,
15515                        out,
15516                    )
15517                }
15518                Self::epochStartBlock(inner) => {
15519                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15520                        inner,
15521                        out,
15522                    )
15523                }
15524                Self::finalizedState(inner) => {
15525                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15526                        inner,
15527                        out,
15528                    )
15529                }
15530                Self::genesisStakeTableState(inner) => {
15531                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15532                        inner,
15533                        out,
15534                    )
15535                }
15536                Self::genesisState(inner) => {
15537                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15538                        inner,
15539                        out,
15540                    )
15541                }
15542                Self::getHotShotCommitment(inner) => {
15543                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15544                        inner,
15545                        out,
15546                    )
15547                }
15548                Self::getStateHistoryCount(inner) => {
15549                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
15550                        inner,
15551                        out,
15552                    )
15553                }
15554                Self::getVersion(inner) => {
15555                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
15556                        inner,
15557                        out,
15558                    )
15559                }
15560                Self::initialize(inner) => {
15561                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15562                        inner,
15563                        out,
15564                    )
15565                }
15566                Self::initializeV2(inner) => {
15567                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15568                        inner,
15569                        out,
15570                    )
15571                }
15572                Self::initializeV3(inner) => {
15573                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
15574                        inner,
15575                        out,
15576                    )
15577                }
15578                Self::isEpochRoot(inner) => {
15579                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15580                        inner,
15581                        out,
15582                    )
15583                }
15584                Self::isGtEpochRoot(inner) => {
15585                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15586                        inner,
15587                        out,
15588                    )
15589                }
15590                Self::isPermissionedProverEnabled(inner) => {
15591                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
15592                        inner,
15593                        out,
15594                    )
15595                }
15596                Self::lagOverEscapeHatchThreshold(inner) => {
15597                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
15598                        inner,
15599                        out,
15600                    )
15601                }
15602                Self::newFinalizedState_0(inner) => {
15603                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15604                        inner,
15605                        out,
15606                    )
15607                }
15608                Self::newFinalizedState_1(inner) => {
15609                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15610                        inner,
15611                        out,
15612                    )
15613                }
15614                Self::newFinalizedState_2(inner) => {
15615                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15616                        inner,
15617                        out,
15618                    )
15619                }
15620                Self::owner(inner) => {
15621                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15622                }
15623                Self::permissionedProver(inner) => {
15624                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15625                        inner,
15626                        out,
15627                    )
15628                }
15629                Self::proxiableUUID(inner) => {
15630                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15631                        inner,
15632                        out,
15633                    )
15634                }
15635                Self::renounceOwnership(inner) => {
15636                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15637                        inner,
15638                        out,
15639                    )
15640                }
15641                Self::setPermissionedProver(inner) => {
15642                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15643                        inner,
15644                        out,
15645                    )
15646                }
15647                Self::setStateHistoryRetentionPeriod(inner) => {
15648                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15649                        inner,
15650                        out,
15651                    )
15652                }
15653                Self::setstateHistoryRetentionPeriod(inner) => {
15654                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15655                        inner,
15656                        out,
15657                    )
15658                }
15659                Self::stateHistoryCommitments(inner) => {
15660                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15661                        inner,
15662                        out,
15663                    )
15664                }
15665                Self::stateHistoryFirstIndex(inner) => {
15666                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
15667                        inner,
15668                        out,
15669                    )
15670                }
15671                Self::stateHistoryRetentionPeriod(inner) => {
15672                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15673                        inner,
15674                        out,
15675                    )
15676                }
15677                Self::transferOwnership(inner) => {
15678                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15679                        inner,
15680                        out,
15681                    )
15682                }
15683                Self::updateEpochStartBlock(inner) => {
15684                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15685                        inner,
15686                        out,
15687                    )
15688                }
15689                Self::upgradeToAndCall(inner) => {
15690                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
15691                        inner,
15692                        out,
15693                    )
15694                }
15695                Self::votingStakeTableState(inner) => {
15696                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15697                        inner,
15698                        out,
15699                    )
15700                }
15701            }
15702        }
15703    }
15704    ///Container for all the [`LightClientV3`](self) custom errors.
15705    #[derive(serde::Serialize, serde::Deserialize)]
15706    #[derive(Debug, PartialEq, Eq, Hash)]
15707    pub enum LightClientV3Errors {
15708        #[allow(missing_docs)]
15709        AddressEmptyCode(AddressEmptyCode),
15710        #[allow(missing_docs)]
15711        DeprecatedApi(DeprecatedApi),
15712        #[allow(missing_docs)]
15713        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
15714        #[allow(missing_docs)]
15715        ERC1967NonPayable(ERC1967NonPayable),
15716        #[allow(missing_docs)]
15717        FailedInnerCall(FailedInnerCall),
15718        #[allow(missing_docs)]
15719        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
15720        #[allow(missing_docs)]
15721        InvalidAddress(InvalidAddress),
15722        #[allow(missing_docs)]
15723        InvalidArgs(InvalidArgs),
15724        #[allow(missing_docs)]
15725        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
15726        #[allow(missing_docs)]
15727        InvalidInitialization(InvalidInitialization),
15728        #[allow(missing_docs)]
15729        InvalidMaxStateHistory(InvalidMaxStateHistory),
15730        #[allow(missing_docs)]
15731        InvalidProof(InvalidProof),
15732        #[allow(missing_docs)]
15733        InvalidScalar(InvalidScalar),
15734        #[allow(missing_docs)]
15735        MissingEpochRootUpdate(MissingEpochRootUpdate),
15736        #[allow(missing_docs)]
15737        NoChangeRequired(NoChangeRequired),
15738        #[allow(missing_docs)]
15739        NotInitializing(NotInitializing),
15740        #[allow(missing_docs)]
15741        OutdatedState(OutdatedState),
15742        #[allow(missing_docs)]
15743        OwnableInvalidOwner(OwnableInvalidOwner),
15744        #[allow(missing_docs)]
15745        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
15746        #[allow(missing_docs)]
15747        ProverNotPermissioned(ProverNotPermissioned),
15748        #[allow(missing_docs)]
15749        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
15750        #[allow(missing_docs)]
15751        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
15752        #[allow(missing_docs)]
15753        WrongStakeTableUsed(WrongStakeTableUsed),
15754    }
15755    #[automatically_derived]
15756    impl LightClientV3Errors {
15757        /// All the selectors of this enum.
15758        ///
15759        /// Note that the selectors might not be in the same order as the variants.
15760        /// No guarantees are made about the order of the selectors.
15761        ///
15762        /// Prefer using `SolInterface` methods instead.
15763        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15764            [5u8, 28u8, 70u8, 239u8],
15765            [5u8, 176u8, 92u8, 204u8],
15766            [8u8, 10u8, 232u8, 217u8],
15767            [9u8, 189u8, 227u8, 57u8],
15768            [17u8, 140u8, 218u8, 167u8],
15769            [20u8, 37u8, 234u8, 66u8],
15770            [30u8, 79u8, 189u8, 247u8],
15771            [76u8, 156u8, 140u8, 227u8],
15772            [78u8, 64u8, 92u8, 141u8],
15773            [81u8, 97u8, 128u8, 137u8],
15774            [97u8, 90u8, 146u8, 100u8],
15775            [153u8, 150u8, 179u8, 21u8],
15776            [161u8, 186u8, 7u8, 238u8],
15777            [163u8, 166u8, 71u8, 128u8],
15778            [168u8, 99u8, 174u8, 201u8],
15779            [170u8, 29u8, 73u8, 164u8],
15780            [176u8, 180u8, 56u8, 119u8],
15781            [179u8, 152u8, 151u8, 159u8],
15782            [215u8, 230u8, 188u8, 248u8],
15783            [224u8, 124u8, 141u8, 186u8],
15784            [230u8, 196u8, 36u8, 123u8],
15785            [244u8, 160u8, 238u8, 224u8],
15786            [249u8, 46u8, 232u8, 169u8],
15787        ];
15788    }
15789    #[automatically_derived]
15790    impl alloy_sol_types::SolInterface for LightClientV3Errors {
15791        const NAME: &'static str = "LightClientV3Errors";
15792        const MIN_DATA_LENGTH: usize = 0usize;
15793        const COUNT: usize = 23usize;
15794        #[inline]
15795        fn selector(&self) -> [u8; 4] {
15796            match self {
15797                Self::AddressEmptyCode(_) => {
15798                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
15799                }
15800                Self::DeprecatedApi(_) => {
15801                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
15802                }
15803                Self::ERC1967InvalidImplementation(_) => {
15804                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
15805                }
15806                Self::ERC1967NonPayable(_) => {
15807                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
15808                }
15809                Self::FailedInnerCall(_) => {
15810                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
15811                }
15812                Self::InsufficientSnapshotHistory(_) => {
15813                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
15814                }
15815                Self::InvalidAddress(_) => {
15816                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
15817                }
15818                Self::InvalidArgs(_) => {
15819                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
15820                }
15821                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
15822                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
15823                }
15824                Self::InvalidInitialization(_) => {
15825                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
15826                }
15827                Self::InvalidMaxStateHistory(_) => {
15828                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
15829                }
15830                Self::InvalidProof(_) => {
15831                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
15832                }
15833                Self::InvalidScalar(_) => {
15834                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
15835                }
15836                Self::MissingEpochRootUpdate(_) => {
15837                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
15838                }
15839                Self::NoChangeRequired(_) => {
15840                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
15841                }
15842                Self::NotInitializing(_) => {
15843                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
15844                }
15845                Self::OutdatedState(_) => {
15846                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
15847                }
15848                Self::OwnableInvalidOwner(_) => {
15849                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
15850                }
15851                Self::OwnableUnauthorizedAccount(_) => {
15852                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
15853                }
15854                Self::ProverNotPermissioned(_) => {
15855                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
15856                }
15857                Self::UUPSUnauthorizedCallContext(_) => {
15858                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
15859                }
15860                Self::UUPSUnsupportedProxiableUUID(_) => {
15861                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
15862                }
15863                Self::WrongStakeTableUsed(_) => {
15864                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
15865                }
15866            }
15867        }
15868        #[inline]
15869        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15870            Self::SELECTORS.get(i).copied()
15871        }
15872        #[inline]
15873        fn valid_selector(selector: [u8; 4]) -> bool {
15874            Self::SELECTORS.binary_search(&selector).is_ok()
15875        }
15876        #[inline]
15877        #[allow(non_snake_case)]
15878        fn abi_decode_raw(
15879            selector: [u8; 4],
15880            data: &[u8],
15881        ) -> alloy_sol_types::Result<Self> {
15882            static DECODE_SHIMS: &[fn(
15883                &[u8],
15884            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
15885                {
15886                    fn OutdatedState(
15887                        data: &[u8],
15888                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15889                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
15890                                data,
15891                            )
15892                            .map(LightClientV3Errors::OutdatedState)
15893                    }
15894                    OutdatedState
15895                },
15896                {
15897                    fn InvalidScalar(
15898                        data: &[u8],
15899                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15900                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
15901                                data,
15902                            )
15903                            .map(LightClientV3Errors::InvalidScalar)
15904                    }
15905                    InvalidScalar
15906                },
15907                {
15908                    fn MissingEpochRootUpdate(
15909                        data: &[u8],
15910                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15911                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
15912                                data,
15913                            )
15914                            .map(LightClientV3Errors::MissingEpochRootUpdate)
15915                    }
15916                    MissingEpochRootUpdate
15917                },
15918                {
15919                    fn InvalidProof(
15920                        data: &[u8],
15921                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15922                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
15923                            .map(LightClientV3Errors::InvalidProof)
15924                    }
15925                    InvalidProof
15926                },
15927                {
15928                    fn OwnableUnauthorizedAccount(
15929                        data: &[u8],
15930                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15931                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
15932                                data,
15933                            )
15934                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
15935                    }
15936                    OwnableUnauthorizedAccount
15937                },
15938                {
15939                    fn FailedInnerCall(
15940                        data: &[u8],
15941                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15942                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
15943                                data,
15944                            )
15945                            .map(LightClientV3Errors::FailedInnerCall)
15946                    }
15947                    FailedInnerCall
15948                },
15949                {
15950                    fn OwnableInvalidOwner(
15951                        data: &[u8],
15952                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15953                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15954                                data,
15955                            )
15956                            .map(LightClientV3Errors::OwnableInvalidOwner)
15957                    }
15958                    OwnableInvalidOwner
15959                },
15960                {
15961                    fn ERC1967InvalidImplementation(
15962                        data: &[u8],
15963                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15964                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15965                                data,
15966                            )
15967                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
15968                    }
15969                    ERC1967InvalidImplementation
15970                },
15971                {
15972                    fn DeprecatedApi(
15973                        data: &[u8],
15974                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15975                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15976                                data,
15977                            )
15978                            .map(LightClientV3Errors::DeprecatedApi)
15979                    }
15980                    DeprecatedApi
15981                },
15982                {
15983                    fn WrongStakeTableUsed(
15984                        data: &[u8],
15985                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15986                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15987                                data,
15988                            )
15989                            .map(LightClientV3Errors::WrongStakeTableUsed)
15990                    }
15991                    WrongStakeTableUsed
15992                },
15993                {
15994                    fn InvalidHotShotBlockForCommitmentCheck(
15995                        data: &[u8],
15996                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15997                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15998                                data,
15999                            )
16000                            .map(
16001                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
16002                            )
16003                    }
16004                    InvalidHotShotBlockForCommitmentCheck
16005                },
16006                {
16007                    fn AddressEmptyCode(
16008                        data: &[u8],
16009                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16010                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
16011                                data,
16012                            )
16013                            .map(LightClientV3Errors::AddressEmptyCode)
16014                    }
16015                    AddressEmptyCode
16016                },
16017                {
16018                    fn InvalidArgs(
16019                        data: &[u8],
16020                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16021                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
16022                            .map(LightClientV3Errors::InvalidArgs)
16023                    }
16024                    InvalidArgs
16025                },
16026                {
16027                    fn ProverNotPermissioned(
16028                        data: &[u8],
16029                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16030                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
16031                                data,
16032                            )
16033                            .map(LightClientV3Errors::ProverNotPermissioned)
16034                    }
16035                    ProverNotPermissioned
16036                },
16037                {
16038                    fn NoChangeRequired(
16039                        data: &[u8],
16040                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16041                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
16042                                data,
16043                            )
16044                            .map(LightClientV3Errors::NoChangeRequired)
16045                    }
16046                    NoChangeRequired
16047                },
16048                {
16049                    fn UUPSUnsupportedProxiableUUID(
16050                        data: &[u8],
16051                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16052                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
16053                                data,
16054                            )
16055                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16056                    }
16057                    UUPSUnsupportedProxiableUUID
16058                },
16059                {
16060                    fn InsufficientSnapshotHistory(
16061                        data: &[u8],
16062                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16063                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
16064                                data,
16065                            )
16066                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16067                    }
16068                    InsufficientSnapshotHistory
16069                },
16070                {
16071                    fn ERC1967NonPayable(
16072                        data: &[u8],
16073                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16074                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16075                                data,
16076                            )
16077                            .map(LightClientV3Errors::ERC1967NonPayable)
16078                    }
16079                    ERC1967NonPayable
16080                },
16081                {
16082                    fn NotInitializing(
16083                        data: &[u8],
16084                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16085                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16086                                data,
16087                            )
16088                            .map(LightClientV3Errors::NotInitializing)
16089                    }
16090                    NotInitializing
16091                },
16092                {
16093                    fn UUPSUnauthorizedCallContext(
16094                        data: &[u8],
16095                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16096                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16097                                data,
16098                            )
16099                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16100                    }
16101                    UUPSUnauthorizedCallContext
16102                },
16103                {
16104                    fn InvalidAddress(
16105                        data: &[u8],
16106                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16107                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16108                                data,
16109                            )
16110                            .map(LightClientV3Errors::InvalidAddress)
16111                    }
16112                    InvalidAddress
16113                },
16114                {
16115                    fn InvalidMaxStateHistory(
16116                        data: &[u8],
16117                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16118                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16119                                data,
16120                            )
16121                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16122                    }
16123                    InvalidMaxStateHistory
16124                },
16125                {
16126                    fn InvalidInitialization(
16127                        data: &[u8],
16128                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16129                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16130                                data,
16131                            )
16132                            .map(LightClientV3Errors::InvalidInitialization)
16133                    }
16134                    InvalidInitialization
16135                },
16136            ];
16137            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16138                return Err(
16139                    alloy_sol_types::Error::unknown_selector(
16140                        <Self as alloy_sol_types::SolInterface>::NAME,
16141                        selector,
16142                    ),
16143                );
16144            };
16145            DECODE_SHIMS[idx](data)
16146        }
16147        #[inline]
16148        #[allow(non_snake_case)]
16149        fn abi_decode_raw_validate(
16150            selector: [u8; 4],
16151            data: &[u8],
16152        ) -> alloy_sol_types::Result<Self> {
16153            static DECODE_VALIDATE_SHIMS: &[fn(
16154                &[u8],
16155            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
16156                {
16157                    fn OutdatedState(
16158                        data: &[u8],
16159                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16160                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
16161                                data,
16162                            )
16163                            .map(LightClientV3Errors::OutdatedState)
16164                    }
16165                    OutdatedState
16166                },
16167                {
16168                    fn InvalidScalar(
16169                        data: &[u8],
16170                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16171                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
16172                                data,
16173                            )
16174                            .map(LightClientV3Errors::InvalidScalar)
16175                    }
16176                    InvalidScalar
16177                },
16178                {
16179                    fn MissingEpochRootUpdate(
16180                        data: &[u8],
16181                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16182                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
16183                                data,
16184                            )
16185                            .map(LightClientV3Errors::MissingEpochRootUpdate)
16186                    }
16187                    MissingEpochRootUpdate
16188                },
16189                {
16190                    fn InvalidProof(
16191                        data: &[u8],
16192                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16193                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
16194                                data,
16195                            )
16196                            .map(LightClientV3Errors::InvalidProof)
16197                    }
16198                    InvalidProof
16199                },
16200                {
16201                    fn OwnableUnauthorizedAccount(
16202                        data: &[u8],
16203                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16204                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
16205                                data,
16206                            )
16207                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
16208                    }
16209                    OwnableUnauthorizedAccount
16210                },
16211                {
16212                    fn FailedInnerCall(
16213                        data: &[u8],
16214                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16215                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
16216                                data,
16217                            )
16218                            .map(LightClientV3Errors::FailedInnerCall)
16219                    }
16220                    FailedInnerCall
16221                },
16222                {
16223                    fn OwnableInvalidOwner(
16224                        data: &[u8],
16225                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16226                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
16227                                data,
16228                            )
16229                            .map(LightClientV3Errors::OwnableInvalidOwner)
16230                    }
16231                    OwnableInvalidOwner
16232                },
16233                {
16234                    fn ERC1967InvalidImplementation(
16235                        data: &[u8],
16236                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16237                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
16238                                data,
16239                            )
16240                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
16241                    }
16242                    ERC1967InvalidImplementation
16243                },
16244                {
16245                    fn DeprecatedApi(
16246                        data: &[u8],
16247                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16248                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
16249                                data,
16250                            )
16251                            .map(LightClientV3Errors::DeprecatedApi)
16252                    }
16253                    DeprecatedApi
16254                },
16255                {
16256                    fn WrongStakeTableUsed(
16257                        data: &[u8],
16258                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16259                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
16260                                data,
16261                            )
16262                            .map(LightClientV3Errors::WrongStakeTableUsed)
16263                    }
16264                    WrongStakeTableUsed
16265                },
16266                {
16267                    fn InvalidHotShotBlockForCommitmentCheck(
16268                        data: &[u8],
16269                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16270                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
16271                                data,
16272                            )
16273                            .map(
16274                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
16275                            )
16276                    }
16277                    InvalidHotShotBlockForCommitmentCheck
16278                },
16279                {
16280                    fn AddressEmptyCode(
16281                        data: &[u8],
16282                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16283                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
16284                                data,
16285                            )
16286                            .map(LightClientV3Errors::AddressEmptyCode)
16287                    }
16288                    AddressEmptyCode
16289                },
16290                {
16291                    fn InvalidArgs(
16292                        data: &[u8],
16293                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16294                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
16295                                data,
16296                            )
16297                            .map(LightClientV3Errors::InvalidArgs)
16298                    }
16299                    InvalidArgs
16300                },
16301                {
16302                    fn ProverNotPermissioned(
16303                        data: &[u8],
16304                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16305                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
16306                                data,
16307                            )
16308                            .map(LightClientV3Errors::ProverNotPermissioned)
16309                    }
16310                    ProverNotPermissioned
16311                },
16312                {
16313                    fn NoChangeRequired(
16314                        data: &[u8],
16315                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16316                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
16317                                data,
16318                            )
16319                            .map(LightClientV3Errors::NoChangeRequired)
16320                    }
16321                    NoChangeRequired
16322                },
16323                {
16324                    fn UUPSUnsupportedProxiableUUID(
16325                        data: &[u8],
16326                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16327                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
16328                                data,
16329                            )
16330                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16331                    }
16332                    UUPSUnsupportedProxiableUUID
16333                },
16334                {
16335                    fn InsufficientSnapshotHistory(
16336                        data: &[u8],
16337                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16338                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16339                                data,
16340                            )
16341                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16342                    }
16343                    InsufficientSnapshotHistory
16344                },
16345                {
16346                    fn ERC1967NonPayable(
16347                        data: &[u8],
16348                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16349                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
16350                                data,
16351                            )
16352                            .map(LightClientV3Errors::ERC1967NonPayable)
16353                    }
16354                    ERC1967NonPayable
16355                },
16356                {
16357                    fn NotInitializing(
16358                        data: &[u8],
16359                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16360                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
16361                                data,
16362                            )
16363                            .map(LightClientV3Errors::NotInitializing)
16364                    }
16365                    NotInitializing
16366                },
16367                {
16368                    fn UUPSUnauthorizedCallContext(
16369                        data: &[u8],
16370                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16371                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
16372                                data,
16373                            )
16374                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16375                    }
16376                    UUPSUnauthorizedCallContext
16377                },
16378                {
16379                    fn InvalidAddress(
16380                        data: &[u8],
16381                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16382                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
16383                                data,
16384                            )
16385                            .map(LightClientV3Errors::InvalidAddress)
16386                    }
16387                    InvalidAddress
16388                },
16389                {
16390                    fn InvalidMaxStateHistory(
16391                        data: &[u8],
16392                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16393                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16394                                data,
16395                            )
16396                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16397                    }
16398                    InvalidMaxStateHistory
16399                },
16400                {
16401                    fn InvalidInitialization(
16402                        data: &[u8],
16403                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16404                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
16405                                data,
16406                            )
16407                            .map(LightClientV3Errors::InvalidInitialization)
16408                    }
16409                    InvalidInitialization
16410                },
16411            ];
16412            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16413                return Err(
16414                    alloy_sol_types::Error::unknown_selector(
16415                        <Self as alloy_sol_types::SolInterface>::NAME,
16416                        selector,
16417                    ),
16418                );
16419            };
16420            DECODE_VALIDATE_SHIMS[idx](data)
16421        }
16422        #[inline]
16423        fn abi_encoded_size(&self) -> usize {
16424            match self {
16425                Self::AddressEmptyCode(inner) => {
16426                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
16427                        inner,
16428                    )
16429                }
16430                Self::DeprecatedApi(inner) => {
16431                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
16432                }
16433                Self::ERC1967InvalidImplementation(inner) => {
16434                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
16435                        inner,
16436                    )
16437                }
16438                Self::ERC1967NonPayable(inner) => {
16439                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
16440                        inner,
16441                    )
16442                }
16443                Self::FailedInnerCall(inner) => {
16444                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
16445                        inner,
16446                    )
16447                }
16448                Self::InsufficientSnapshotHistory(inner) => {
16449                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
16450                        inner,
16451                    )
16452                }
16453                Self::InvalidAddress(inner) => {
16454                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
16455                        inner,
16456                    )
16457                }
16458                Self::InvalidArgs(inner) => {
16459                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
16460                }
16461                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16462                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
16463                        inner,
16464                    )
16465                }
16466                Self::InvalidInitialization(inner) => {
16467                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
16468                        inner,
16469                    )
16470                }
16471                Self::InvalidMaxStateHistory(inner) => {
16472                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
16473                        inner,
16474                    )
16475                }
16476                Self::InvalidProof(inner) => {
16477                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
16478                }
16479                Self::InvalidScalar(inner) => {
16480                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
16481                }
16482                Self::MissingEpochRootUpdate(inner) => {
16483                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
16484                        inner,
16485                    )
16486                }
16487                Self::NoChangeRequired(inner) => {
16488                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
16489                        inner,
16490                    )
16491                }
16492                Self::NotInitializing(inner) => {
16493                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
16494                        inner,
16495                    )
16496                }
16497                Self::OutdatedState(inner) => {
16498                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
16499                }
16500                Self::OwnableInvalidOwner(inner) => {
16501                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
16502                        inner,
16503                    )
16504                }
16505                Self::OwnableUnauthorizedAccount(inner) => {
16506                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
16507                        inner,
16508                    )
16509                }
16510                Self::ProverNotPermissioned(inner) => {
16511                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
16512                        inner,
16513                    )
16514                }
16515                Self::UUPSUnauthorizedCallContext(inner) => {
16516                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
16517                        inner,
16518                    )
16519                }
16520                Self::UUPSUnsupportedProxiableUUID(inner) => {
16521                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
16522                        inner,
16523                    )
16524                }
16525                Self::WrongStakeTableUsed(inner) => {
16526                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
16527                        inner,
16528                    )
16529                }
16530            }
16531        }
16532        #[inline]
16533        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16534            match self {
16535                Self::AddressEmptyCode(inner) => {
16536                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
16537                        inner,
16538                        out,
16539                    )
16540                }
16541                Self::DeprecatedApi(inner) => {
16542                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
16543                        inner,
16544                        out,
16545                    )
16546                }
16547                Self::ERC1967InvalidImplementation(inner) => {
16548                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
16549                        inner,
16550                        out,
16551                    )
16552                }
16553                Self::ERC1967NonPayable(inner) => {
16554                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
16555                        inner,
16556                        out,
16557                    )
16558                }
16559                Self::FailedInnerCall(inner) => {
16560                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
16561                        inner,
16562                        out,
16563                    )
16564                }
16565                Self::InsufficientSnapshotHistory(inner) => {
16566                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
16567                        inner,
16568                        out,
16569                    )
16570                }
16571                Self::InvalidAddress(inner) => {
16572                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
16573                        inner,
16574                        out,
16575                    )
16576                }
16577                Self::InvalidArgs(inner) => {
16578                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
16579                        inner,
16580                        out,
16581                    )
16582                }
16583                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16584                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
16585                        inner,
16586                        out,
16587                    )
16588                }
16589                Self::InvalidInitialization(inner) => {
16590                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
16591                        inner,
16592                        out,
16593                    )
16594                }
16595                Self::InvalidMaxStateHistory(inner) => {
16596                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
16597                        inner,
16598                        out,
16599                    )
16600                }
16601                Self::InvalidProof(inner) => {
16602                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
16603                        inner,
16604                        out,
16605                    )
16606                }
16607                Self::InvalidScalar(inner) => {
16608                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
16609                        inner,
16610                        out,
16611                    )
16612                }
16613                Self::MissingEpochRootUpdate(inner) => {
16614                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
16615                        inner,
16616                        out,
16617                    )
16618                }
16619                Self::NoChangeRequired(inner) => {
16620                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
16621                        inner,
16622                        out,
16623                    )
16624                }
16625                Self::NotInitializing(inner) => {
16626                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
16627                        inner,
16628                        out,
16629                    )
16630                }
16631                Self::OutdatedState(inner) => {
16632                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
16633                        inner,
16634                        out,
16635                    )
16636                }
16637                Self::OwnableInvalidOwner(inner) => {
16638                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
16639                        inner,
16640                        out,
16641                    )
16642                }
16643                Self::OwnableUnauthorizedAccount(inner) => {
16644                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16645                        inner,
16646                        out,
16647                    )
16648                }
16649                Self::ProverNotPermissioned(inner) => {
16650                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16651                        inner,
16652                        out,
16653                    )
16654                }
16655                Self::UUPSUnauthorizedCallContext(inner) => {
16656                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16657                        inner,
16658                        out,
16659                    )
16660                }
16661                Self::UUPSUnsupportedProxiableUUID(inner) => {
16662                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16663                        inner,
16664                        out,
16665                    )
16666                }
16667                Self::WrongStakeTableUsed(inner) => {
16668                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16669                        inner,
16670                        out,
16671                    )
16672                }
16673            }
16674        }
16675    }
16676    ///Container for all the [`LightClientV3`](self) events.
16677    #[derive(serde::Serialize, serde::Deserialize)]
16678    #[derive(Debug, PartialEq, Eq, Hash)]
16679    pub enum LightClientV3Events {
16680        #[allow(missing_docs)]
16681        Initialized(Initialized),
16682        #[allow(missing_docs)]
16683        NewEpoch(NewEpoch),
16684        #[allow(missing_docs)]
16685        NewState(NewState),
16686        #[allow(missing_docs)]
16687        OwnershipTransferred(OwnershipTransferred),
16688        #[allow(missing_docs)]
16689        PermissionedProverNotRequired(PermissionedProverNotRequired),
16690        #[allow(missing_docs)]
16691        PermissionedProverRequired(PermissionedProverRequired),
16692        #[allow(missing_docs)]
16693        Upgrade(Upgrade),
16694        #[allow(missing_docs)]
16695        Upgraded(Upgraded),
16696    }
16697    #[automatically_derived]
16698    impl LightClientV3Events {
16699        /// All the selectors of this enum.
16700        ///
16701        /// Note that the selectors might not be in the same order as the variants.
16702        /// No guarantees are made about the order of the selectors.
16703        ///
16704        /// Prefer using `SolInterface` methods instead.
16705        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16706            [
16707                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16708                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16709                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16710            ],
16711            [
16712                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
16713                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
16714                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
16715            ],
16716            [
16717                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16718                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16719                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16720            ],
16721            [
16722                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
16723                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
16724                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
16725            ],
16726            [
16727                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
16728                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
16729                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
16730            ],
16731            [
16732                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
16733                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
16734                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
16735            ],
16736            [
16737                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
16738                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
16739                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
16740            ],
16741            [
16742                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
16743                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
16744                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
16745            ],
16746        ];
16747    }
16748    #[automatically_derived]
16749    impl alloy_sol_types::SolEventInterface for LightClientV3Events {
16750        const NAME: &'static str = "LightClientV3Events";
16751        const COUNT: usize = 8usize;
16752        fn decode_raw_log(
16753            topics: &[alloy_sol_types::Word],
16754            data: &[u8],
16755        ) -> alloy_sol_types::Result<Self> {
16756            match topics.first().copied() {
16757                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16758                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
16759                            topics,
16760                            data,
16761                        )
16762                        .map(Self::Initialized)
16763                }
16764                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16765                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16766                        .map(Self::NewEpoch)
16767                }
16768                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16769                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16770                        .map(Self::NewState)
16771                }
16772                Some(
16773                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16774                ) => {
16775                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
16776                            topics,
16777                            data,
16778                        )
16779                        .map(Self::OwnershipTransferred)
16780                }
16781                Some(
16782                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16783                ) => {
16784                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16785                            topics,
16786                            data,
16787                        )
16788                        .map(Self::PermissionedProverNotRequired)
16789                }
16790                Some(
16791                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16792                ) => {
16793                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16794                            topics,
16795                            data,
16796                        )
16797                        .map(Self::PermissionedProverRequired)
16798                }
16799                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16800                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16801                        .map(Self::Upgrade)
16802                }
16803                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16804                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16805                        .map(Self::Upgraded)
16806                }
16807                _ => {
16808                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16809                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16810                        log: alloy_sol_types::private::Box::new(
16811                            alloy_sol_types::private::LogData::new_unchecked(
16812                                topics.to_vec(),
16813                                data.to_vec().into(),
16814                            ),
16815                        ),
16816                    })
16817                }
16818            }
16819        }
16820    }
16821    #[automatically_derived]
16822    impl alloy_sol_types::private::IntoLogData for LightClientV3Events {
16823        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16824            match self {
16825                Self::Initialized(inner) => {
16826                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16827                }
16828                Self::NewEpoch(inner) => {
16829                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16830                }
16831                Self::NewState(inner) => {
16832                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16833                }
16834                Self::OwnershipTransferred(inner) => {
16835                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16836                }
16837                Self::PermissionedProverNotRequired(inner) => {
16838                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16839                }
16840                Self::PermissionedProverRequired(inner) => {
16841                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16842                }
16843                Self::Upgrade(inner) => {
16844                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16845                }
16846                Self::Upgraded(inner) => {
16847                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16848                }
16849            }
16850        }
16851        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16852            match self {
16853                Self::Initialized(inner) => {
16854                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16855                }
16856                Self::NewEpoch(inner) => {
16857                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16858                }
16859                Self::NewState(inner) => {
16860                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16861                }
16862                Self::OwnershipTransferred(inner) => {
16863                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16864                }
16865                Self::PermissionedProverNotRequired(inner) => {
16866                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16867                }
16868                Self::PermissionedProverRequired(inner) => {
16869                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16870                }
16871                Self::Upgrade(inner) => {
16872                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16873                }
16874                Self::Upgraded(inner) => {
16875                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16876                }
16877            }
16878        }
16879    }
16880    use alloy::contract as alloy_contract;
16881    /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
16882
16883See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
16884    #[inline]
16885    pub const fn new<
16886        P: alloy_contract::private::Provider<N>,
16887        N: alloy_contract::private::Network,
16888    >(
16889        address: alloy_sol_types::private::Address,
16890        __provider: P,
16891    ) -> LightClientV3Instance<P, N> {
16892        LightClientV3Instance::<P, N>::new(address, __provider)
16893    }
16894    /**Deploys this contract using the given `provider` and constructor arguments, if any.
16895
16896Returns a new instance of the contract, if the deployment was successful.
16897
16898For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16899    #[inline]
16900    pub fn deploy<
16901        P: alloy_contract::private::Provider<N>,
16902        N: alloy_contract::private::Network,
16903    >(
16904        __provider: P,
16905    ) -> impl ::core::future::Future<
16906        Output = alloy_contract::Result<LightClientV3Instance<P, N>>,
16907    > {
16908        LightClientV3Instance::<P, N>::deploy(__provider)
16909    }
16910    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16911and constructor arguments, if any.
16912
16913This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16914the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16915    #[inline]
16916    pub fn deploy_builder<
16917        P: alloy_contract::private::Provider<N>,
16918        N: alloy_contract::private::Network,
16919    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16920        LightClientV3Instance::<P, N>::deploy_builder(__provider)
16921    }
16922    /**A [`LightClientV3`](self) instance.
16923
16924Contains type-safe methods for interacting with an on-chain instance of the
16925[`LightClientV3`](self) contract located at a given `address`, using a given
16926provider `P`.
16927
16928If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16929documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16930be used to deploy a new instance of the contract.
16931
16932See the [module-level documentation](self) for all the available methods.*/
16933    #[derive(Clone)]
16934    pub struct LightClientV3Instance<P, N = alloy_contract::private::Ethereum> {
16935        address: alloy_sol_types::private::Address,
16936        provider: P,
16937        _network: ::core::marker::PhantomData<N>,
16938    }
16939    #[automatically_derived]
16940    impl<P, N> ::core::fmt::Debug for LightClientV3Instance<P, N> {
16941        #[inline]
16942        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16943            f.debug_tuple("LightClientV3Instance").field(&self.address).finish()
16944        }
16945    }
16946    /// Instantiation and getters/setters.
16947    #[automatically_derived]
16948    impl<
16949        P: alloy_contract::private::Provider<N>,
16950        N: alloy_contract::private::Network,
16951    > LightClientV3Instance<P, N> {
16952        /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
16953
16954See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
16955        #[inline]
16956        pub const fn new(
16957            address: alloy_sol_types::private::Address,
16958            __provider: P,
16959        ) -> Self {
16960            Self {
16961                address,
16962                provider: __provider,
16963                _network: ::core::marker::PhantomData,
16964            }
16965        }
16966        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16967
16968Returns a new instance of the contract, if the deployment was successful.
16969
16970For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16971        #[inline]
16972        pub async fn deploy(
16973            __provider: P,
16974        ) -> alloy_contract::Result<LightClientV3Instance<P, N>> {
16975            let call_builder = Self::deploy_builder(__provider);
16976            let contract_address = call_builder.deploy().await?;
16977            Ok(Self::new(contract_address, call_builder.provider))
16978        }
16979        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16980and constructor arguments, if any.
16981
16982This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16983the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16984        #[inline]
16985        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16986            alloy_contract::RawCallBuilder::new_raw_deploy(
16987                __provider,
16988                ::core::clone::Clone::clone(&BYTECODE),
16989            )
16990        }
16991        /// Returns a reference to the address.
16992        #[inline]
16993        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16994            &self.address
16995        }
16996        /// Sets the address.
16997        #[inline]
16998        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16999            self.address = address;
17000        }
17001        /// Sets the address and returns `self`.
17002        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17003            self.set_address(address);
17004            self
17005        }
17006        /// Returns a reference to the provider.
17007        #[inline]
17008        pub const fn provider(&self) -> &P {
17009            &self.provider
17010        }
17011    }
17012    impl<P: ::core::clone::Clone, N> LightClientV3Instance<&P, N> {
17013        /// Clones the provider and returns a new instance with the cloned provider.
17014        #[inline]
17015        pub fn with_cloned_provider(self) -> LightClientV3Instance<P, N> {
17016            LightClientV3Instance {
17017                address: self.address,
17018                provider: ::core::clone::Clone::clone(&self.provider),
17019                _network: ::core::marker::PhantomData,
17020            }
17021        }
17022    }
17023    /// Function calls.
17024    #[automatically_derived]
17025    impl<
17026        P: alloy_contract::private::Provider<N>,
17027        N: alloy_contract::private::Network,
17028    > LightClientV3Instance<P, N> {
17029        /// Creates a new call builder using this contract instance's provider and address.
17030        ///
17031        /// Note that the call can be any function call, not just those defined in this
17032        /// contract. Prefer using the other methods for building type-safe contract calls.
17033        pub fn call_builder<C: alloy_sol_types::SolCall>(
17034            &self,
17035            call: &C,
17036        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17037            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17038        }
17039        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17040        pub fn UPGRADE_INTERFACE_VERSION(
17041            &self,
17042        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17043            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17044        }
17045        ///Creates a new call builder for the [`_getVk`] function.
17046        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17047            self.call_builder(&_getVkCall)
17048        }
17049        ///Creates a new call builder for the [`authRoot`] function.
17050        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
17051            self.call_builder(&authRootCall)
17052        }
17053        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17054        pub fn blocksPerEpoch(
17055            &self,
17056        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17057            self.call_builder(&blocksPerEpochCall)
17058        }
17059        ///Creates a new call builder for the [`currentBlockNumber`] function.
17060        pub fn currentBlockNumber(
17061            &self,
17062        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17063            self.call_builder(&currentBlockNumberCall)
17064        }
17065        ///Creates a new call builder for the [`currentEpoch`] function.
17066        pub fn currentEpoch(
17067            &self,
17068        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17069            self.call_builder(&currentEpochCall)
17070        }
17071        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17072        pub fn disablePermissionedProverMode(
17073            &self,
17074        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17075            self.call_builder(&disablePermissionedProverModeCall)
17076        }
17077        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17078        pub fn epochFromBlockNumber(
17079            &self,
17080            _blockNum: u64,
17081            _blocksPerEpoch: u64,
17082        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17083            self.call_builder(
17084                &epochFromBlockNumberCall {
17085                    _blockNum,
17086                    _blocksPerEpoch,
17087                },
17088            )
17089        }
17090        ///Creates a new call builder for the [`epochStartBlock`] function.
17091        pub fn epochStartBlock(
17092            &self,
17093        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17094            self.call_builder(&epochStartBlockCall)
17095        }
17096        ///Creates a new call builder for the [`finalizedState`] function.
17097        pub fn finalizedState(
17098            &self,
17099        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17100            self.call_builder(&finalizedStateCall)
17101        }
17102        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17103        pub fn genesisStakeTableState(
17104            &self,
17105        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17106            self.call_builder(&genesisStakeTableStateCall)
17107        }
17108        ///Creates a new call builder for the [`genesisState`] function.
17109        pub fn genesisState(
17110            &self,
17111        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17112            self.call_builder(&genesisStateCall)
17113        }
17114        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17115        pub fn getHotShotCommitment(
17116            &self,
17117            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17118        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17119            self.call_builder(
17120                &getHotShotCommitmentCall {
17121                    hotShotBlockHeight,
17122                },
17123            )
17124        }
17125        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17126        pub fn getStateHistoryCount(
17127            &self,
17128        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17129            self.call_builder(&getStateHistoryCountCall)
17130        }
17131        ///Creates a new call builder for the [`getVersion`] function.
17132        pub fn getVersion(
17133            &self,
17134        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17135            self.call_builder(&getVersionCall)
17136        }
17137        ///Creates a new call builder for the [`initialize`] function.
17138        pub fn initialize(
17139            &self,
17140            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17141            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17142            _stateHistoryRetentionPeriod: u32,
17143            owner: alloy::sol_types::private::Address,
17144        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17145            self.call_builder(
17146                &initializeCall {
17147                    _genesis,
17148                    _genesisStakeTableState,
17149                    _stateHistoryRetentionPeriod,
17150                    owner,
17151                },
17152            )
17153        }
17154        ///Creates a new call builder for the [`initializeV2`] function.
17155        pub fn initializeV2(
17156            &self,
17157            _blocksPerEpoch: u64,
17158            _epochStartBlock: u64,
17159        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17160            self.call_builder(
17161                &initializeV2Call {
17162                    _blocksPerEpoch,
17163                    _epochStartBlock,
17164                },
17165            )
17166        }
17167        ///Creates a new call builder for the [`initializeV3`] function.
17168        pub fn initializeV3(
17169            &self,
17170        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
17171            self.call_builder(&initializeV3Call)
17172        }
17173        ///Creates a new call builder for the [`isEpochRoot`] function.
17174        pub fn isEpochRoot(
17175            &self,
17176            blockHeight: u64,
17177        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17178            self.call_builder(&isEpochRootCall { blockHeight })
17179        }
17180        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17181        pub fn isGtEpochRoot(
17182            &self,
17183            blockHeight: u64,
17184        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17185            self.call_builder(&isGtEpochRootCall { blockHeight })
17186        }
17187        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17188        pub fn isPermissionedProverEnabled(
17189            &self,
17190        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
17191            self.call_builder(&isPermissionedProverEnabledCall)
17192        }
17193        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
17194        pub fn lagOverEscapeHatchThreshold(
17195            &self,
17196            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
17197            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
17198        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
17199            self.call_builder(
17200                &lagOverEscapeHatchThresholdCall {
17201                    blockNumber,
17202                    blockThreshold,
17203                },
17204            )
17205        }
17206        ///Creates a new call builder for the [`newFinalizedState_0`] function.
17207        pub fn newFinalizedState_0(
17208            &self,
17209            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17210            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17211        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
17212            self.call_builder(&newFinalizedState_0Call { _0, _1 })
17213        }
17214        ///Creates a new call builder for the [`newFinalizedState_1`] function.
17215        pub fn newFinalizedState_1(
17216            &self,
17217            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17218            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17219            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17220        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
17221            self.call_builder(
17222                &newFinalizedState_1Call {
17223                    _0,
17224                    _1,
17225                    _2,
17226                },
17227            )
17228        }
17229        ///Creates a new call builder for the [`newFinalizedState_2`] function.
17230        pub fn newFinalizedState_2(
17231            &self,
17232            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17233            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17234            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
17235            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17236        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
17237            self.call_builder(
17238                &newFinalizedState_2Call {
17239                    newState,
17240                    nextStakeTable,
17241                    newAuthRoot,
17242                    proof,
17243                },
17244            )
17245        }
17246        ///Creates a new call builder for the [`owner`] function.
17247        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
17248            self.call_builder(&ownerCall)
17249        }
17250        ///Creates a new call builder for the [`permissionedProver`] function.
17251        pub fn permissionedProver(
17252            &self,
17253        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
17254            self.call_builder(&permissionedProverCall)
17255        }
17256        ///Creates a new call builder for the [`proxiableUUID`] function.
17257        pub fn proxiableUUID(
17258            &self,
17259        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
17260            self.call_builder(&proxiableUUIDCall)
17261        }
17262        ///Creates a new call builder for the [`renounceOwnership`] function.
17263        pub fn renounceOwnership(
17264            &self,
17265        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
17266            self.call_builder(&renounceOwnershipCall)
17267        }
17268        ///Creates a new call builder for the [`setPermissionedProver`] function.
17269        pub fn setPermissionedProver(
17270            &self,
17271            prover: alloy::sol_types::private::Address,
17272        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
17273            self.call_builder(
17274                &setPermissionedProverCall {
17275                    prover,
17276                },
17277            )
17278        }
17279        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
17280        pub fn setStateHistoryRetentionPeriod(
17281            &self,
17282            historySeconds: u32,
17283        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
17284            self.call_builder(
17285                &setStateHistoryRetentionPeriodCall {
17286                    historySeconds,
17287                },
17288            )
17289        }
17290        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
17291        pub fn setstateHistoryRetentionPeriod(
17292            &self,
17293            historySeconds: u32,
17294        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
17295            self.call_builder(
17296                &setstateHistoryRetentionPeriodCall {
17297                    historySeconds,
17298                },
17299            )
17300        }
17301        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
17302        pub fn stateHistoryCommitments(
17303            &self,
17304            _0: alloy::sol_types::private::primitives::aliases::U256,
17305        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
17306            self.call_builder(&stateHistoryCommitmentsCall(_0))
17307        }
17308        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
17309        pub fn stateHistoryFirstIndex(
17310            &self,
17311        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
17312            self.call_builder(&stateHistoryFirstIndexCall)
17313        }
17314        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
17315        pub fn stateHistoryRetentionPeriod(
17316            &self,
17317        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
17318            self.call_builder(&stateHistoryRetentionPeriodCall)
17319        }
17320        ///Creates a new call builder for the [`transferOwnership`] function.
17321        pub fn transferOwnership(
17322            &self,
17323            newOwner: alloy::sol_types::private::Address,
17324        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
17325            self.call_builder(&transferOwnershipCall { newOwner })
17326        }
17327        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
17328        pub fn updateEpochStartBlock(
17329            &self,
17330            newEpochStartBlock: u64,
17331        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
17332            self.call_builder(
17333                &updateEpochStartBlockCall {
17334                    newEpochStartBlock,
17335                },
17336            )
17337        }
17338        ///Creates a new call builder for the [`upgradeToAndCall`] function.
17339        pub fn upgradeToAndCall(
17340            &self,
17341            newImplementation: alloy::sol_types::private::Address,
17342            data: alloy::sol_types::private::Bytes,
17343        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
17344            self.call_builder(
17345                &upgradeToAndCallCall {
17346                    newImplementation,
17347                    data,
17348                },
17349            )
17350        }
17351        ///Creates a new call builder for the [`votingStakeTableState`] function.
17352        pub fn votingStakeTableState(
17353            &self,
17354        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
17355            self.call_builder(&votingStakeTableStateCall)
17356        }
17357    }
17358    /// Event filters.
17359    #[automatically_derived]
17360    impl<
17361        P: alloy_contract::private::Provider<N>,
17362        N: alloy_contract::private::Network,
17363    > LightClientV3Instance<P, N> {
17364        /// Creates a new event filter using this contract instance's provider and address.
17365        ///
17366        /// Note that the type can be any event, not just those defined in this contract.
17367        /// Prefer using the other methods for building type-safe event filters.
17368        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17369            &self,
17370        ) -> alloy_contract::Event<&P, E, N> {
17371            alloy_contract::Event::new_sol(&self.provider, &self.address)
17372        }
17373        ///Creates a new event filter for the [`Initialized`] event.
17374        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
17375            self.event_filter::<Initialized>()
17376        }
17377        ///Creates a new event filter for the [`NewEpoch`] event.
17378        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
17379            self.event_filter::<NewEpoch>()
17380        }
17381        ///Creates a new event filter for the [`NewState`] event.
17382        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
17383            self.event_filter::<NewState>()
17384        }
17385        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17386        pub fn OwnershipTransferred_filter(
17387            &self,
17388        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
17389            self.event_filter::<OwnershipTransferred>()
17390        }
17391        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
17392        pub fn PermissionedProverNotRequired_filter(
17393            &self,
17394        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
17395            self.event_filter::<PermissionedProverNotRequired>()
17396        }
17397        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
17398        pub fn PermissionedProverRequired_filter(
17399            &self,
17400        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
17401            self.event_filter::<PermissionedProverRequired>()
17402        }
17403        ///Creates a new event filter for the [`Upgrade`] event.
17404        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
17405            self.event_filter::<Upgrade>()
17406        }
17407        ///Creates a new event filter for the [`Upgraded`] event.
17408        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
17409            self.event_filter::<Upgraded>()
17410        }
17411    }
17412}