Skip to main content

hotshot_contract_adapter/bindings/
light_client_v2.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        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(BaseField);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(ScalarField);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    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; }
636    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; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
651    /**```solidity
652struct 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; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
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::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField 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        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "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)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1374    /**```solidity
1375struct 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; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
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            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "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)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241}
2242```*/
2243#[allow(
2244    non_camel_case_types,
2245    non_snake_case,
2246    clippy::pub_underscore_fields,
2247    clippy::style,
2248    clippy::empty_structs_with_brackets
2249)]
2250pub mod LightClient {
2251    use super::*;
2252    use alloy::sol_types as alloy_sol_types;
2253    #[derive(serde::Serialize, serde::Deserialize)]
2254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2255    /**```solidity
2256struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2257```*/
2258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2259    #[derive(Clone)]
2260    pub struct LightClientState {
2261        #[allow(missing_docs)]
2262        pub viewNum: u64,
2263        #[allow(missing_docs)]
2264        pub blockHeight: u64,
2265        #[allow(missing_docs)]
2266        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2267    }
2268    #[allow(
2269        non_camel_case_types,
2270        non_snake_case,
2271        clippy::pub_underscore_fields,
2272        clippy::style
2273    )]
2274    const _: () = {
2275        use alloy::sol_types as alloy_sol_types;
2276        #[doc(hidden)]
2277        #[allow(dead_code)]
2278        type UnderlyingSolTuple<'a> = (
2279            alloy::sol_types::sol_data::Uint<64>,
2280            alloy::sol_types::sol_data::Uint<64>,
2281            BN254::ScalarField,
2282        );
2283        #[doc(hidden)]
2284        type UnderlyingRustTuple<'a> = (
2285            u64,
2286            u64,
2287            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2288        );
2289        #[cfg(test)]
2290        #[allow(dead_code, unreachable_patterns)]
2291        fn _type_assertion(
2292            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2293        ) {
2294            match _t {
2295                alloy_sol_types::private::AssertTypeEq::<
2296                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2297                >(_) => {}
2298            }
2299        }
2300        #[automatically_derived]
2301        #[doc(hidden)]
2302        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2303            fn from(value: LightClientState) -> Self {
2304                (value.viewNum, value.blockHeight, value.blockCommRoot)
2305            }
2306        }
2307        #[automatically_derived]
2308        #[doc(hidden)]
2309        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2310            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2311                Self {
2312                    viewNum: tuple.0,
2313                    blockHeight: tuple.1,
2314                    blockCommRoot: tuple.2,
2315                }
2316            }
2317        }
2318        #[automatically_derived]
2319        impl alloy_sol_types::SolValue for LightClientState {
2320            type SolType = Self;
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2324            #[inline]
2325            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2326                (
2327                    <alloy::sol_types::sol_data::Uint<
2328                        64,
2329                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2330                    <alloy::sol_types::sol_data::Uint<
2331                        64,
2332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2333                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2334                        &self.blockCommRoot,
2335                    ),
2336                )
2337            }
2338            #[inline]
2339            fn stv_abi_encoded_size(&self) -> usize {
2340                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2341                    return size;
2342                }
2343                let tuple = <UnderlyingRustTuple<
2344                    '_,
2345                > as ::core::convert::From<Self>>::from(self.clone());
2346                <UnderlyingSolTuple<
2347                    '_,
2348                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2349            }
2350            #[inline]
2351            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2352                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2353            }
2354            #[inline]
2355            fn stv_abi_encode_packed_to(
2356                &self,
2357                out: &mut alloy_sol_types::private::Vec<u8>,
2358            ) {
2359                let tuple = <UnderlyingRustTuple<
2360                    '_,
2361                > as ::core::convert::From<Self>>::from(self.clone());
2362                <UnderlyingSolTuple<
2363                    '_,
2364                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2365            }
2366            #[inline]
2367            fn stv_abi_packed_encoded_size(&self) -> usize {
2368                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2369                    return size;
2370                }
2371                let tuple = <UnderlyingRustTuple<
2372                    '_,
2373                > as ::core::convert::From<Self>>::from(self.clone());
2374                <UnderlyingSolTuple<
2375                    '_,
2376                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2377            }
2378        }
2379        #[automatically_derived]
2380        impl alloy_sol_types::SolType for LightClientState {
2381            type RustType = Self;
2382            type Token<'a> = <UnderlyingSolTuple<
2383                'a,
2384            > as alloy_sol_types::SolType>::Token<'a>;
2385            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2386            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2387                '_,
2388            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2389            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2390                '_,
2391            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2392            #[inline]
2393            fn valid_token(token: &Self::Token<'_>) -> bool {
2394                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2395            }
2396            #[inline]
2397            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2398                let tuple = <UnderlyingSolTuple<
2399                    '_,
2400                > as alloy_sol_types::SolType>::detokenize(token);
2401                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2402            }
2403        }
2404        #[automatically_derived]
2405        impl alloy_sol_types::SolStruct for LightClientState {
2406            const NAME: &'static str = "LightClientState";
2407            #[inline]
2408            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2409                alloy_sol_types::private::Cow::Borrowed(
2410                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2411                )
2412            }
2413            #[inline]
2414            fn eip712_components() -> alloy_sol_types::private::Vec<
2415                alloy_sol_types::private::Cow<'static, str>,
2416            > {
2417                alloy_sol_types::private::Vec::new()
2418            }
2419            #[inline]
2420            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2421                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2422            }
2423            #[inline]
2424            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2425                [
2426                    <alloy::sol_types::sol_data::Uint<
2427                        64,
2428                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2429                        .0,
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2433                        .0,
2434                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2435                            &self.blockCommRoot,
2436                        )
2437                        .0,
2438                ]
2439                    .concat()
2440            }
2441        }
2442        #[automatically_derived]
2443        impl alloy_sol_types::EventTopic for LightClientState {
2444            #[inline]
2445            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2446                0usize
2447                    + <alloy::sol_types::sol_data::Uint<
2448                        64,
2449                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2450                        &rust.viewNum,
2451                    )
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.blockHeight,
2456                    )
2457                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.blockCommRoot,
2459                    )
2460            }
2461            #[inline]
2462            fn encode_topic_preimage(
2463                rust: &Self::RustType,
2464                out: &mut alloy_sol_types::private::Vec<u8>,
2465            ) {
2466                out.reserve(
2467                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2468                );
2469                <alloy::sol_types::sol_data::Uint<
2470                    64,
2471                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2472                    &rust.viewNum,
2473                    out,
2474                );
2475                <alloy::sol_types::sol_data::Uint<
2476                    64,
2477                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2478                    &rust.blockHeight,
2479                    out,
2480                );
2481                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockCommRoot,
2483                    out,
2484                );
2485            }
2486            #[inline]
2487            fn encode_topic(
2488                rust: &Self::RustType,
2489            ) -> alloy_sol_types::abi::token::WordToken {
2490                let mut out = alloy_sol_types::private::Vec::new();
2491                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2492                    rust,
2493                    &mut out,
2494                );
2495                alloy_sol_types::abi::token::WordToken(
2496                    alloy_sol_types::private::keccak256(out),
2497                )
2498            }
2499        }
2500    };
2501    #[derive(serde::Serialize, serde::Deserialize)]
2502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2503    /**```solidity
2504struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2505```*/
2506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2507    #[derive(Clone)]
2508    pub struct StakeTableState {
2509        #[allow(missing_docs)]
2510        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2511        #[allow(missing_docs)]
2512        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2513        #[allow(missing_docs)]
2514        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2515        #[allow(missing_docs)]
2516        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517    }
2518    #[allow(
2519        non_camel_case_types,
2520        non_snake_case,
2521        clippy::pub_underscore_fields,
2522        clippy::style
2523    )]
2524    const _: () = {
2525        use alloy::sol_types as alloy_sol_types;
2526        #[doc(hidden)]
2527        #[allow(dead_code)]
2528        type UnderlyingSolTuple<'a> = (
2529            alloy::sol_types::sol_data::Uint<256>,
2530            BN254::ScalarField,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533        );
2534        #[doc(hidden)]
2535        type UnderlyingRustTuple<'a> = (
2536            alloy::sol_types::private::primitives::aliases::U256,
2537            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540        );
2541        #[cfg(test)]
2542        #[allow(dead_code, unreachable_patterns)]
2543        fn _type_assertion(
2544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2545        ) {
2546            match _t {
2547                alloy_sol_types::private::AssertTypeEq::<
2548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2549                >(_) => {}
2550            }
2551        }
2552        #[automatically_derived]
2553        #[doc(hidden)]
2554        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2555            fn from(value: StakeTableState) -> Self {
2556                (
2557                    value.threshold,
2558                    value.blsKeyComm,
2559                    value.schnorrKeyComm,
2560                    value.amountComm,
2561                )
2562            }
2563        }
2564        #[automatically_derived]
2565        #[doc(hidden)]
2566        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2567            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2568                Self {
2569                    threshold: tuple.0,
2570                    blsKeyComm: tuple.1,
2571                    schnorrKeyComm: tuple.2,
2572                    amountComm: tuple.3,
2573                }
2574            }
2575        }
2576        #[automatically_derived]
2577        impl alloy_sol_types::SolValue for StakeTableState {
2578            type SolType = Self;
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2582            #[inline]
2583            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2584                (
2585                    <alloy::sol_types::sol_data::Uint<
2586                        256,
2587                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2588                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2589                        &self.blsKeyComm,
2590                    ),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.schnorrKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.amountComm,
2596                    ),
2597                )
2598            }
2599            #[inline]
2600            fn stv_abi_encoded_size(&self) -> usize {
2601                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2602                    return size;
2603                }
2604                let tuple = <UnderlyingRustTuple<
2605                    '_,
2606                > as ::core::convert::From<Self>>::from(self.clone());
2607                <UnderlyingSolTuple<
2608                    '_,
2609                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2610            }
2611            #[inline]
2612            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2613                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2614            }
2615            #[inline]
2616            fn stv_abi_encode_packed_to(
2617                &self,
2618                out: &mut alloy_sol_types::private::Vec<u8>,
2619            ) {
2620                let tuple = <UnderlyingRustTuple<
2621                    '_,
2622                > as ::core::convert::From<Self>>::from(self.clone());
2623                <UnderlyingSolTuple<
2624                    '_,
2625                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2626            }
2627            #[inline]
2628            fn stv_abi_packed_encoded_size(&self) -> usize {
2629                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2630                    return size;
2631                }
2632                let tuple = <UnderlyingRustTuple<
2633                    '_,
2634                > as ::core::convert::From<Self>>::from(self.clone());
2635                <UnderlyingSolTuple<
2636                    '_,
2637                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2638            }
2639        }
2640        #[automatically_derived]
2641        impl alloy_sol_types::SolType for StakeTableState {
2642            type RustType = Self;
2643            type Token<'a> = <UnderlyingSolTuple<
2644                'a,
2645            > as alloy_sol_types::SolType>::Token<'a>;
2646            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2647            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2648                '_,
2649            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2650            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2653            #[inline]
2654            fn valid_token(token: &Self::Token<'_>) -> bool {
2655                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2656            }
2657            #[inline]
2658            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2659                let tuple = <UnderlyingSolTuple<
2660                    '_,
2661                > as alloy_sol_types::SolType>::detokenize(token);
2662                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2663            }
2664        }
2665        #[automatically_derived]
2666        impl alloy_sol_types::SolStruct for StakeTableState {
2667            const NAME: &'static str = "StakeTableState";
2668            #[inline]
2669            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2670                alloy_sol_types::private::Cow::Borrowed(
2671                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2672                )
2673            }
2674            #[inline]
2675            fn eip712_components() -> alloy_sol_types::private::Vec<
2676                alloy_sol_types::private::Cow<'static, str>,
2677            > {
2678                alloy_sol_types::private::Vec::new()
2679            }
2680            #[inline]
2681            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2682                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2683            }
2684            #[inline]
2685            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2686                [
2687                    <alloy::sol_types::sol_data::Uint<
2688                        256,
2689                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2690                        .0,
2691                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2692                            &self.blsKeyComm,
2693                        )
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.schnorrKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.amountComm,
2701                        )
2702                        .0,
2703                ]
2704                    .concat()
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::EventTopic for StakeTableState {
2709            #[inline]
2710            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2711                0usize
2712                    + <alloy::sol_types::sol_data::Uint<
2713                        256,
2714                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2715                        &rust.threshold,
2716                    )
2717                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.blsKeyComm,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.schnorrKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.amountComm,
2725                    )
2726            }
2727            #[inline]
2728            fn encode_topic_preimage(
2729                rust: &Self::RustType,
2730                out: &mut alloy_sol_types::private::Vec<u8>,
2731            ) {
2732                out.reserve(
2733                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2734                );
2735                <alloy::sol_types::sol_data::Uint<
2736                    256,
2737                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2738                    &rust.threshold,
2739                    out,
2740                );
2741                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.blsKeyComm,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.schnorrKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.amountComm,
2751                    out,
2752                );
2753            }
2754            #[inline]
2755            fn encode_topic(
2756                rust: &Self::RustType,
2757            ) -> alloy_sol_types::abi::token::WordToken {
2758                let mut out = alloy_sol_types::private::Vec::new();
2759                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2760                    rust,
2761                    &mut out,
2762                );
2763                alloy_sol_types::abi::token::WordToken(
2764                    alloy_sol_types::private::keccak256(out),
2765                )
2766            }
2767        }
2768    };
2769    use alloy::contract as alloy_contract;
2770    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2771
2772See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2773    #[inline]
2774    pub const fn new<
2775        P: alloy_contract::private::Provider<N>,
2776        N: alloy_contract::private::Network,
2777    >(
2778        address: alloy_sol_types::private::Address,
2779        __provider: P,
2780    ) -> LightClientInstance<P, N> {
2781        LightClientInstance::<P, N>::new(address, __provider)
2782    }
2783    /**A [`LightClient`](self) instance.
2784
2785Contains type-safe methods for interacting with an on-chain instance of the
2786[`LightClient`](self) contract located at a given `address`, using a given
2787provider `P`.
2788
2789If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2790documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2791be used to deploy a new instance of the contract.
2792
2793See the [module-level documentation](self) for all the available methods.*/
2794    #[derive(Clone)]
2795    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2796        address: alloy_sol_types::private::Address,
2797        provider: P,
2798        _network: ::core::marker::PhantomData<N>,
2799    }
2800    #[automatically_derived]
2801    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2802        #[inline]
2803        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2804            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2805        }
2806    }
2807    /// Instantiation and getters/setters.
2808    impl<
2809        P: alloy_contract::private::Provider<N>,
2810        N: alloy_contract::private::Network,
2811    > LightClientInstance<P, N> {
2812        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2813
2814See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2815        #[inline]
2816        pub const fn new(
2817            address: alloy_sol_types::private::Address,
2818            __provider: P,
2819        ) -> Self {
2820            Self {
2821                address,
2822                provider: __provider,
2823                _network: ::core::marker::PhantomData,
2824            }
2825        }
2826        /// Returns a reference to the address.
2827        #[inline]
2828        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2829            &self.address
2830        }
2831        /// Sets the address.
2832        #[inline]
2833        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2834            self.address = address;
2835        }
2836        /// Sets the address and returns `self`.
2837        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2838            self.set_address(address);
2839            self
2840        }
2841        /// Returns a reference to the provider.
2842        #[inline]
2843        pub const fn provider(&self) -> &P {
2844            &self.provider
2845        }
2846    }
2847    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2848        /// Clones the provider and returns a new instance with the cloned provider.
2849        #[inline]
2850        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2851            LightClientInstance {
2852                address: self.address,
2853                provider: ::core::clone::Clone::clone(&self.provider),
2854                _network: ::core::marker::PhantomData,
2855            }
2856        }
2857    }
2858    /// Function calls.
2859    impl<
2860        P: alloy_contract::private::Provider<N>,
2861        N: alloy_contract::private::Network,
2862    > LightClientInstance<P, N> {
2863        /// Creates a new call builder using this contract instance's provider and address.
2864        ///
2865        /// Note that the call can be any function call, not just those defined in this
2866        /// contract. Prefer using the other methods for building type-safe contract calls.
2867        pub fn call_builder<C: alloy_sol_types::SolCall>(
2868            &self,
2869            call: &C,
2870        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2871            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2872        }
2873    }
2874    /// Event filters.
2875    impl<
2876        P: alloy_contract::private::Provider<N>,
2877        N: alloy_contract::private::Network,
2878    > LightClientInstance<P, N> {
2879        /// Creates a new event filter using this contract instance's provider and address.
2880        ///
2881        /// Note that the type can be any event, not just those defined in this contract.
2882        /// Prefer using the other methods for building type-safe event filters.
2883        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2884            &self,
2885        ) -> alloy_contract::Event<&P, E, N> {
2886            alloy_contract::Event::new_sol(&self.provider, &self.address)
2887        }
2888    }
2889}
2890/**
2891
2892Generated by the following Solidity interface...
2893```solidity
2894library BN254 {
2895    type BaseField is uint256;
2896    type ScalarField is uint256;
2897    struct G1Point {
2898        BaseField x;
2899        BaseField y;
2900    }
2901}
2902
2903library IPlonkVerifier {
2904    struct PlonkProof {
2905        BN254.G1Point wire0;
2906        BN254.G1Point wire1;
2907        BN254.G1Point wire2;
2908        BN254.G1Point wire3;
2909        BN254.G1Point wire4;
2910        BN254.G1Point prodPerm;
2911        BN254.G1Point split0;
2912        BN254.G1Point split1;
2913        BN254.G1Point split2;
2914        BN254.G1Point split3;
2915        BN254.G1Point split4;
2916        BN254.G1Point zeta;
2917        BN254.G1Point zetaOmega;
2918        BN254.ScalarField wireEval0;
2919        BN254.ScalarField wireEval1;
2920        BN254.ScalarField wireEval2;
2921        BN254.ScalarField wireEval3;
2922        BN254.ScalarField wireEval4;
2923        BN254.ScalarField sigmaEval0;
2924        BN254.ScalarField sigmaEval1;
2925        BN254.ScalarField sigmaEval2;
2926        BN254.ScalarField sigmaEval3;
2927        BN254.ScalarField prodPermZetaOmegaEval;
2928    }
2929    struct VerifyingKey {
2930        uint256 domainSize;
2931        uint256 numInputs;
2932        BN254.G1Point sigma0;
2933        BN254.G1Point sigma1;
2934        BN254.G1Point sigma2;
2935        BN254.G1Point sigma3;
2936        BN254.G1Point sigma4;
2937        BN254.G1Point q1;
2938        BN254.G1Point q2;
2939        BN254.G1Point q3;
2940        BN254.G1Point q4;
2941        BN254.G1Point qM12;
2942        BN254.G1Point qM34;
2943        BN254.G1Point qO;
2944        BN254.G1Point qC;
2945        BN254.G1Point qH1;
2946        BN254.G1Point qH2;
2947        BN254.G1Point qH3;
2948        BN254.G1Point qH4;
2949        BN254.G1Point qEcc;
2950        bytes32 g2LSB;
2951        bytes32 g2MSB;
2952    }
2953}
2954
2955library LightClient {
2956    struct LightClientState {
2957        uint64 viewNum;
2958        uint64 blockHeight;
2959        BN254.ScalarField blockCommRoot;
2960    }
2961    struct StakeTableState {
2962        uint256 threshold;
2963        BN254.ScalarField blsKeyComm;
2964        BN254.ScalarField schnorrKeyComm;
2965        BN254.ScalarField amountComm;
2966    }
2967}
2968
2969interface LightClientV2 {
2970    error AddressEmptyCode(address target);
2971    error DeprecatedApi();
2972    error ERC1967InvalidImplementation(address implementation);
2973    error ERC1967NonPayable();
2974    error FailedInnerCall();
2975    error InsufficientSnapshotHistory();
2976    error InvalidAddress();
2977    error InvalidArgs();
2978    error InvalidHotShotBlockForCommitmentCheck();
2979    error InvalidInitialization();
2980    error InvalidMaxStateHistory();
2981    error InvalidProof();
2982    error InvalidScalar();
2983    error MissingEpochRootUpdate();
2984    error NoChangeRequired();
2985    error NotInitializing();
2986    error OutdatedState();
2987    error OwnableInvalidOwner(address owner);
2988    error OwnableUnauthorizedAccount(address account);
2989    error OwnershipCannotBeRenounced();
2990    error ProverNotPermissioned();
2991    error UUPSUnauthorizedCallContext();
2992    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2993    error WrongStakeTableUsed();
2994
2995    event Initialized(uint64 version);
2996    event NewEpoch(uint64 epoch);
2997    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2998    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2999    event PermissionedProverNotRequired();
3000    event PermissionedProverRequired(address permissionedProver);
3001    event Upgrade(address implementation);
3002    event Upgraded(address indexed implementation);
3003
3004    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3005    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3006    function blocksPerEpoch() external view returns (uint64);
3007    function currentBlockNumber() external view returns (uint256);
3008    function currentEpoch() external view returns (uint64);
3009    function disablePermissionedProverMode() external;
3010    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3011    function epochStartBlock() external view returns (uint64);
3012    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3013    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3014    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3015    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3016    function getStateHistoryCount() external view returns (uint256);
3017    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3018    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3019    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3020    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3021    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3022    function isPermissionedProverEnabled() external view returns (bool);
3023    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3024    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3025    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3026    function owner() external view returns (address);
3027    function permissionedProver() external view returns (address);
3028    function proxiableUUID() external view returns (bytes32);
3029    function renounceOwnership() external;
3030    function setPermissionedProver(address prover) external;
3031    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3032    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3033    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3034    function stateHistoryFirstIndex() external view returns (uint64);
3035    function stateHistoryRetentionPeriod() external view returns (uint32);
3036    function transferOwnership(address newOwner) external;
3037    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3038    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3039    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3040}
3041```
3042
3043...which was generated by the following JSON ABI:
3044```json
3045[
3046  {
3047    "type": "function",
3048    "name": "UPGRADE_INTERFACE_VERSION",
3049    "inputs": [],
3050    "outputs": [
3051      {
3052        "name": "",
3053        "type": "string",
3054        "internalType": "string"
3055      }
3056    ],
3057    "stateMutability": "view"
3058  },
3059  {
3060    "type": "function",
3061    "name": "_getVk",
3062    "inputs": [],
3063    "outputs": [
3064      {
3065        "name": "vk",
3066        "type": "tuple",
3067        "internalType": "struct IPlonkVerifier.VerifyingKey",
3068        "components": [
3069          {
3070            "name": "domainSize",
3071            "type": "uint256",
3072            "internalType": "uint256"
3073          },
3074          {
3075            "name": "numInputs",
3076            "type": "uint256",
3077            "internalType": "uint256"
3078          },
3079          {
3080            "name": "sigma0",
3081            "type": "tuple",
3082            "internalType": "struct BN254.G1Point",
3083            "components": [
3084              {
3085                "name": "x",
3086                "type": "uint256",
3087                "internalType": "BN254.BaseField"
3088              },
3089              {
3090                "name": "y",
3091                "type": "uint256",
3092                "internalType": "BN254.BaseField"
3093              }
3094            ]
3095          },
3096          {
3097            "name": "sigma1",
3098            "type": "tuple",
3099            "internalType": "struct BN254.G1Point",
3100            "components": [
3101              {
3102                "name": "x",
3103                "type": "uint256",
3104                "internalType": "BN254.BaseField"
3105              },
3106              {
3107                "name": "y",
3108                "type": "uint256",
3109                "internalType": "BN254.BaseField"
3110              }
3111            ]
3112          },
3113          {
3114            "name": "sigma2",
3115            "type": "tuple",
3116            "internalType": "struct BN254.G1Point",
3117            "components": [
3118              {
3119                "name": "x",
3120                "type": "uint256",
3121                "internalType": "BN254.BaseField"
3122              },
3123              {
3124                "name": "y",
3125                "type": "uint256",
3126                "internalType": "BN254.BaseField"
3127              }
3128            ]
3129          },
3130          {
3131            "name": "sigma3",
3132            "type": "tuple",
3133            "internalType": "struct BN254.G1Point",
3134            "components": [
3135              {
3136                "name": "x",
3137                "type": "uint256",
3138                "internalType": "BN254.BaseField"
3139              },
3140              {
3141                "name": "y",
3142                "type": "uint256",
3143                "internalType": "BN254.BaseField"
3144              }
3145            ]
3146          },
3147          {
3148            "name": "sigma4",
3149            "type": "tuple",
3150            "internalType": "struct BN254.G1Point",
3151            "components": [
3152              {
3153                "name": "x",
3154                "type": "uint256",
3155                "internalType": "BN254.BaseField"
3156              },
3157              {
3158                "name": "y",
3159                "type": "uint256",
3160                "internalType": "BN254.BaseField"
3161              }
3162            ]
3163          },
3164          {
3165            "name": "q1",
3166            "type": "tuple",
3167            "internalType": "struct BN254.G1Point",
3168            "components": [
3169              {
3170                "name": "x",
3171                "type": "uint256",
3172                "internalType": "BN254.BaseField"
3173              },
3174              {
3175                "name": "y",
3176                "type": "uint256",
3177                "internalType": "BN254.BaseField"
3178              }
3179            ]
3180          },
3181          {
3182            "name": "q2",
3183            "type": "tuple",
3184            "internalType": "struct BN254.G1Point",
3185            "components": [
3186              {
3187                "name": "x",
3188                "type": "uint256",
3189                "internalType": "BN254.BaseField"
3190              },
3191              {
3192                "name": "y",
3193                "type": "uint256",
3194                "internalType": "BN254.BaseField"
3195              }
3196            ]
3197          },
3198          {
3199            "name": "q3",
3200            "type": "tuple",
3201            "internalType": "struct BN254.G1Point",
3202            "components": [
3203              {
3204                "name": "x",
3205                "type": "uint256",
3206                "internalType": "BN254.BaseField"
3207              },
3208              {
3209                "name": "y",
3210                "type": "uint256",
3211                "internalType": "BN254.BaseField"
3212              }
3213            ]
3214          },
3215          {
3216            "name": "q4",
3217            "type": "tuple",
3218            "internalType": "struct BN254.G1Point",
3219            "components": [
3220              {
3221                "name": "x",
3222                "type": "uint256",
3223                "internalType": "BN254.BaseField"
3224              },
3225              {
3226                "name": "y",
3227                "type": "uint256",
3228                "internalType": "BN254.BaseField"
3229              }
3230            ]
3231          },
3232          {
3233            "name": "qM12",
3234            "type": "tuple",
3235            "internalType": "struct BN254.G1Point",
3236            "components": [
3237              {
3238                "name": "x",
3239                "type": "uint256",
3240                "internalType": "BN254.BaseField"
3241              },
3242              {
3243                "name": "y",
3244                "type": "uint256",
3245                "internalType": "BN254.BaseField"
3246              }
3247            ]
3248          },
3249          {
3250            "name": "qM34",
3251            "type": "tuple",
3252            "internalType": "struct BN254.G1Point",
3253            "components": [
3254              {
3255                "name": "x",
3256                "type": "uint256",
3257                "internalType": "BN254.BaseField"
3258              },
3259              {
3260                "name": "y",
3261                "type": "uint256",
3262                "internalType": "BN254.BaseField"
3263              }
3264            ]
3265          },
3266          {
3267            "name": "qO",
3268            "type": "tuple",
3269            "internalType": "struct BN254.G1Point",
3270            "components": [
3271              {
3272                "name": "x",
3273                "type": "uint256",
3274                "internalType": "BN254.BaseField"
3275              },
3276              {
3277                "name": "y",
3278                "type": "uint256",
3279                "internalType": "BN254.BaseField"
3280              }
3281            ]
3282          },
3283          {
3284            "name": "qC",
3285            "type": "tuple",
3286            "internalType": "struct BN254.G1Point",
3287            "components": [
3288              {
3289                "name": "x",
3290                "type": "uint256",
3291                "internalType": "BN254.BaseField"
3292              },
3293              {
3294                "name": "y",
3295                "type": "uint256",
3296                "internalType": "BN254.BaseField"
3297              }
3298            ]
3299          },
3300          {
3301            "name": "qH1",
3302            "type": "tuple",
3303            "internalType": "struct BN254.G1Point",
3304            "components": [
3305              {
3306                "name": "x",
3307                "type": "uint256",
3308                "internalType": "BN254.BaseField"
3309              },
3310              {
3311                "name": "y",
3312                "type": "uint256",
3313                "internalType": "BN254.BaseField"
3314              }
3315            ]
3316          },
3317          {
3318            "name": "qH2",
3319            "type": "tuple",
3320            "internalType": "struct BN254.G1Point",
3321            "components": [
3322              {
3323                "name": "x",
3324                "type": "uint256",
3325                "internalType": "BN254.BaseField"
3326              },
3327              {
3328                "name": "y",
3329                "type": "uint256",
3330                "internalType": "BN254.BaseField"
3331              }
3332            ]
3333          },
3334          {
3335            "name": "qH3",
3336            "type": "tuple",
3337            "internalType": "struct BN254.G1Point",
3338            "components": [
3339              {
3340                "name": "x",
3341                "type": "uint256",
3342                "internalType": "BN254.BaseField"
3343              },
3344              {
3345                "name": "y",
3346                "type": "uint256",
3347                "internalType": "BN254.BaseField"
3348              }
3349            ]
3350          },
3351          {
3352            "name": "qH4",
3353            "type": "tuple",
3354            "internalType": "struct BN254.G1Point",
3355            "components": [
3356              {
3357                "name": "x",
3358                "type": "uint256",
3359                "internalType": "BN254.BaseField"
3360              },
3361              {
3362                "name": "y",
3363                "type": "uint256",
3364                "internalType": "BN254.BaseField"
3365              }
3366            ]
3367          },
3368          {
3369            "name": "qEcc",
3370            "type": "tuple",
3371            "internalType": "struct BN254.G1Point",
3372            "components": [
3373              {
3374                "name": "x",
3375                "type": "uint256",
3376                "internalType": "BN254.BaseField"
3377              },
3378              {
3379                "name": "y",
3380                "type": "uint256",
3381                "internalType": "BN254.BaseField"
3382              }
3383            ]
3384          },
3385          {
3386            "name": "g2LSB",
3387            "type": "bytes32",
3388            "internalType": "bytes32"
3389          },
3390          {
3391            "name": "g2MSB",
3392            "type": "bytes32",
3393            "internalType": "bytes32"
3394          }
3395        ]
3396      }
3397    ],
3398    "stateMutability": "pure"
3399  },
3400  {
3401    "type": "function",
3402    "name": "blocksPerEpoch",
3403    "inputs": [],
3404    "outputs": [
3405      {
3406        "name": "",
3407        "type": "uint64",
3408        "internalType": "uint64"
3409      }
3410    ],
3411    "stateMutability": "view"
3412  },
3413  {
3414    "type": "function",
3415    "name": "currentBlockNumber",
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": "currentEpoch",
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": "disablePermissionedProverMode",
3442    "inputs": [],
3443    "outputs": [],
3444    "stateMutability": "nonpayable"
3445  },
3446  {
3447    "type": "function",
3448    "name": "epochFromBlockNumber",
3449    "inputs": [
3450      {
3451        "name": "_blockNum",
3452        "type": "uint64",
3453        "internalType": "uint64"
3454      },
3455      {
3456        "name": "_blocksPerEpoch",
3457        "type": "uint64",
3458        "internalType": "uint64"
3459      }
3460    ],
3461    "outputs": [
3462      {
3463        "name": "",
3464        "type": "uint64",
3465        "internalType": "uint64"
3466      }
3467    ],
3468    "stateMutability": "pure"
3469  },
3470  {
3471    "type": "function",
3472    "name": "epochStartBlock",
3473    "inputs": [],
3474    "outputs": [
3475      {
3476        "name": "",
3477        "type": "uint64",
3478        "internalType": "uint64"
3479      }
3480    ],
3481    "stateMutability": "view"
3482  },
3483  {
3484    "type": "function",
3485    "name": "finalizedState",
3486    "inputs": [],
3487    "outputs": [
3488      {
3489        "name": "viewNum",
3490        "type": "uint64",
3491        "internalType": "uint64"
3492      },
3493      {
3494        "name": "blockHeight",
3495        "type": "uint64",
3496        "internalType": "uint64"
3497      },
3498      {
3499        "name": "blockCommRoot",
3500        "type": "uint256",
3501        "internalType": "BN254.ScalarField"
3502      }
3503    ],
3504    "stateMutability": "view"
3505  },
3506  {
3507    "type": "function",
3508    "name": "genesisStakeTableState",
3509    "inputs": [],
3510    "outputs": [
3511      {
3512        "name": "threshold",
3513        "type": "uint256",
3514        "internalType": "uint256"
3515      },
3516      {
3517        "name": "blsKeyComm",
3518        "type": "uint256",
3519        "internalType": "BN254.ScalarField"
3520      },
3521      {
3522        "name": "schnorrKeyComm",
3523        "type": "uint256",
3524        "internalType": "BN254.ScalarField"
3525      },
3526      {
3527        "name": "amountComm",
3528        "type": "uint256",
3529        "internalType": "BN254.ScalarField"
3530      }
3531    ],
3532    "stateMutability": "view"
3533  },
3534  {
3535    "type": "function",
3536    "name": "genesisState",
3537    "inputs": [],
3538    "outputs": [
3539      {
3540        "name": "viewNum",
3541        "type": "uint64",
3542        "internalType": "uint64"
3543      },
3544      {
3545        "name": "blockHeight",
3546        "type": "uint64",
3547        "internalType": "uint64"
3548      },
3549      {
3550        "name": "blockCommRoot",
3551        "type": "uint256",
3552        "internalType": "BN254.ScalarField"
3553      }
3554    ],
3555    "stateMutability": "view"
3556  },
3557  {
3558    "type": "function",
3559    "name": "getHotShotCommitment",
3560    "inputs": [
3561      {
3562        "name": "hotShotBlockHeight",
3563        "type": "uint256",
3564        "internalType": "uint256"
3565      }
3566    ],
3567    "outputs": [
3568      {
3569        "name": "hotShotBlockCommRoot",
3570        "type": "uint256",
3571        "internalType": "BN254.ScalarField"
3572      },
3573      {
3574        "name": "hotshotBlockHeight",
3575        "type": "uint64",
3576        "internalType": "uint64"
3577      }
3578    ],
3579    "stateMutability": "view"
3580  },
3581  {
3582    "type": "function",
3583    "name": "getStateHistoryCount",
3584    "inputs": [],
3585    "outputs": [
3586      {
3587        "name": "",
3588        "type": "uint256",
3589        "internalType": "uint256"
3590      }
3591    ],
3592    "stateMutability": "view"
3593  },
3594  {
3595    "type": "function",
3596    "name": "getVersion",
3597    "inputs": [],
3598    "outputs": [
3599      {
3600        "name": "majorVersion",
3601        "type": "uint8",
3602        "internalType": "uint8"
3603      },
3604      {
3605        "name": "minorVersion",
3606        "type": "uint8",
3607        "internalType": "uint8"
3608      },
3609      {
3610        "name": "patchVersion",
3611        "type": "uint8",
3612        "internalType": "uint8"
3613      }
3614    ],
3615    "stateMutability": "pure"
3616  },
3617  {
3618    "type": "function",
3619    "name": "initialize",
3620    "inputs": [
3621      {
3622        "name": "_genesis",
3623        "type": "tuple",
3624        "internalType": "struct LightClient.LightClientState",
3625        "components": [
3626          {
3627            "name": "viewNum",
3628            "type": "uint64",
3629            "internalType": "uint64"
3630          },
3631          {
3632            "name": "blockHeight",
3633            "type": "uint64",
3634            "internalType": "uint64"
3635          },
3636          {
3637            "name": "blockCommRoot",
3638            "type": "uint256",
3639            "internalType": "BN254.ScalarField"
3640          }
3641        ]
3642      },
3643      {
3644        "name": "_genesisStakeTableState",
3645        "type": "tuple",
3646        "internalType": "struct LightClient.StakeTableState",
3647        "components": [
3648          {
3649            "name": "threshold",
3650            "type": "uint256",
3651            "internalType": "uint256"
3652          },
3653          {
3654            "name": "blsKeyComm",
3655            "type": "uint256",
3656            "internalType": "BN254.ScalarField"
3657          },
3658          {
3659            "name": "schnorrKeyComm",
3660            "type": "uint256",
3661            "internalType": "BN254.ScalarField"
3662          },
3663          {
3664            "name": "amountComm",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          }
3668        ]
3669      },
3670      {
3671        "name": "_stateHistoryRetentionPeriod",
3672        "type": "uint32",
3673        "internalType": "uint32"
3674      },
3675      {
3676        "name": "owner",
3677        "type": "address",
3678        "internalType": "address"
3679      }
3680    ],
3681    "outputs": [],
3682    "stateMutability": "nonpayable"
3683  },
3684  {
3685    "type": "function",
3686    "name": "initializeV2",
3687    "inputs": [
3688      {
3689        "name": "_blocksPerEpoch",
3690        "type": "uint64",
3691        "internalType": "uint64"
3692      },
3693      {
3694        "name": "_epochStartBlock",
3695        "type": "uint64",
3696        "internalType": "uint64"
3697      }
3698    ],
3699    "outputs": [],
3700    "stateMutability": "nonpayable"
3701  },
3702  {
3703    "type": "function",
3704    "name": "isEpochRoot",
3705    "inputs": [
3706      {
3707        "name": "blockHeight",
3708        "type": "uint64",
3709        "internalType": "uint64"
3710      }
3711    ],
3712    "outputs": [
3713      {
3714        "name": "",
3715        "type": "bool",
3716        "internalType": "bool"
3717      }
3718    ],
3719    "stateMutability": "view"
3720  },
3721  {
3722    "type": "function",
3723    "name": "isGtEpochRoot",
3724    "inputs": [
3725      {
3726        "name": "blockHeight",
3727        "type": "uint64",
3728        "internalType": "uint64"
3729      }
3730    ],
3731    "outputs": [
3732      {
3733        "name": "",
3734        "type": "bool",
3735        "internalType": "bool"
3736      }
3737    ],
3738    "stateMutability": "view"
3739  },
3740  {
3741    "type": "function",
3742    "name": "isPermissionedProverEnabled",
3743    "inputs": [],
3744    "outputs": [
3745      {
3746        "name": "",
3747        "type": "bool",
3748        "internalType": "bool"
3749      }
3750    ],
3751    "stateMutability": "view"
3752  },
3753  {
3754    "type": "function",
3755    "name": "lagOverEscapeHatchThreshold",
3756    "inputs": [
3757      {
3758        "name": "blockNumber",
3759        "type": "uint256",
3760        "internalType": "uint256"
3761      },
3762      {
3763        "name": "blockThreshold",
3764        "type": "uint256",
3765        "internalType": "uint256"
3766      }
3767    ],
3768    "outputs": [
3769      {
3770        "name": "",
3771        "type": "bool",
3772        "internalType": "bool"
3773      }
3774    ],
3775    "stateMutability": "view"
3776  },
3777  {
3778    "type": "function",
3779    "name": "newFinalizedState",
3780    "inputs": [
3781      {
3782        "name": "",
3783        "type": "tuple",
3784        "internalType": "struct LightClient.LightClientState",
3785        "components": [
3786          {
3787            "name": "viewNum",
3788            "type": "uint64",
3789            "internalType": "uint64"
3790          },
3791          {
3792            "name": "blockHeight",
3793            "type": "uint64",
3794            "internalType": "uint64"
3795          },
3796          {
3797            "name": "blockCommRoot",
3798            "type": "uint256",
3799            "internalType": "BN254.ScalarField"
3800          }
3801        ]
3802      },
3803      {
3804        "name": "",
3805        "type": "tuple",
3806        "internalType": "struct IPlonkVerifier.PlonkProof",
3807        "components": [
3808          {
3809            "name": "wire0",
3810            "type": "tuple",
3811            "internalType": "struct BN254.G1Point",
3812            "components": [
3813              {
3814                "name": "x",
3815                "type": "uint256",
3816                "internalType": "BN254.BaseField"
3817              },
3818              {
3819                "name": "y",
3820                "type": "uint256",
3821                "internalType": "BN254.BaseField"
3822              }
3823            ]
3824          },
3825          {
3826            "name": "wire1",
3827            "type": "tuple",
3828            "internalType": "struct BN254.G1Point",
3829            "components": [
3830              {
3831                "name": "x",
3832                "type": "uint256",
3833                "internalType": "BN254.BaseField"
3834              },
3835              {
3836                "name": "y",
3837                "type": "uint256",
3838                "internalType": "BN254.BaseField"
3839              }
3840            ]
3841          },
3842          {
3843            "name": "wire2",
3844            "type": "tuple",
3845            "internalType": "struct BN254.G1Point",
3846            "components": [
3847              {
3848                "name": "x",
3849                "type": "uint256",
3850                "internalType": "BN254.BaseField"
3851              },
3852              {
3853                "name": "y",
3854                "type": "uint256",
3855                "internalType": "BN254.BaseField"
3856              }
3857            ]
3858          },
3859          {
3860            "name": "wire3",
3861            "type": "tuple",
3862            "internalType": "struct BN254.G1Point",
3863            "components": [
3864              {
3865                "name": "x",
3866                "type": "uint256",
3867                "internalType": "BN254.BaseField"
3868              },
3869              {
3870                "name": "y",
3871                "type": "uint256",
3872                "internalType": "BN254.BaseField"
3873              }
3874            ]
3875          },
3876          {
3877            "name": "wire4",
3878            "type": "tuple",
3879            "internalType": "struct BN254.G1Point",
3880            "components": [
3881              {
3882                "name": "x",
3883                "type": "uint256",
3884                "internalType": "BN254.BaseField"
3885              },
3886              {
3887                "name": "y",
3888                "type": "uint256",
3889                "internalType": "BN254.BaseField"
3890              }
3891            ]
3892          },
3893          {
3894            "name": "prodPerm",
3895            "type": "tuple",
3896            "internalType": "struct BN254.G1Point",
3897            "components": [
3898              {
3899                "name": "x",
3900                "type": "uint256",
3901                "internalType": "BN254.BaseField"
3902              },
3903              {
3904                "name": "y",
3905                "type": "uint256",
3906                "internalType": "BN254.BaseField"
3907              }
3908            ]
3909          },
3910          {
3911            "name": "split0",
3912            "type": "tuple",
3913            "internalType": "struct BN254.G1Point",
3914            "components": [
3915              {
3916                "name": "x",
3917                "type": "uint256",
3918                "internalType": "BN254.BaseField"
3919              },
3920              {
3921                "name": "y",
3922                "type": "uint256",
3923                "internalType": "BN254.BaseField"
3924              }
3925            ]
3926          },
3927          {
3928            "name": "split1",
3929            "type": "tuple",
3930            "internalType": "struct BN254.G1Point",
3931            "components": [
3932              {
3933                "name": "x",
3934                "type": "uint256",
3935                "internalType": "BN254.BaseField"
3936              },
3937              {
3938                "name": "y",
3939                "type": "uint256",
3940                "internalType": "BN254.BaseField"
3941              }
3942            ]
3943          },
3944          {
3945            "name": "split2",
3946            "type": "tuple",
3947            "internalType": "struct BN254.G1Point",
3948            "components": [
3949              {
3950                "name": "x",
3951                "type": "uint256",
3952                "internalType": "BN254.BaseField"
3953              },
3954              {
3955                "name": "y",
3956                "type": "uint256",
3957                "internalType": "BN254.BaseField"
3958              }
3959            ]
3960          },
3961          {
3962            "name": "split3",
3963            "type": "tuple",
3964            "internalType": "struct BN254.G1Point",
3965            "components": [
3966              {
3967                "name": "x",
3968                "type": "uint256",
3969                "internalType": "BN254.BaseField"
3970              },
3971              {
3972                "name": "y",
3973                "type": "uint256",
3974                "internalType": "BN254.BaseField"
3975              }
3976            ]
3977          },
3978          {
3979            "name": "split4",
3980            "type": "tuple",
3981            "internalType": "struct BN254.G1Point",
3982            "components": [
3983              {
3984                "name": "x",
3985                "type": "uint256",
3986                "internalType": "BN254.BaseField"
3987              },
3988              {
3989                "name": "y",
3990                "type": "uint256",
3991                "internalType": "BN254.BaseField"
3992              }
3993            ]
3994          },
3995          {
3996            "name": "zeta",
3997            "type": "tuple",
3998            "internalType": "struct BN254.G1Point",
3999            "components": [
4000              {
4001                "name": "x",
4002                "type": "uint256",
4003                "internalType": "BN254.BaseField"
4004              },
4005              {
4006                "name": "y",
4007                "type": "uint256",
4008                "internalType": "BN254.BaseField"
4009              }
4010            ]
4011          },
4012          {
4013            "name": "zetaOmega",
4014            "type": "tuple",
4015            "internalType": "struct BN254.G1Point",
4016            "components": [
4017              {
4018                "name": "x",
4019                "type": "uint256",
4020                "internalType": "BN254.BaseField"
4021              },
4022              {
4023                "name": "y",
4024                "type": "uint256",
4025                "internalType": "BN254.BaseField"
4026              }
4027            ]
4028          },
4029          {
4030            "name": "wireEval0",
4031            "type": "uint256",
4032            "internalType": "BN254.ScalarField"
4033          },
4034          {
4035            "name": "wireEval1",
4036            "type": "uint256",
4037            "internalType": "BN254.ScalarField"
4038          },
4039          {
4040            "name": "wireEval2",
4041            "type": "uint256",
4042            "internalType": "BN254.ScalarField"
4043          },
4044          {
4045            "name": "wireEval3",
4046            "type": "uint256",
4047            "internalType": "BN254.ScalarField"
4048          },
4049          {
4050            "name": "wireEval4",
4051            "type": "uint256",
4052            "internalType": "BN254.ScalarField"
4053          },
4054          {
4055            "name": "sigmaEval0",
4056            "type": "uint256",
4057            "internalType": "BN254.ScalarField"
4058          },
4059          {
4060            "name": "sigmaEval1",
4061            "type": "uint256",
4062            "internalType": "BN254.ScalarField"
4063          },
4064          {
4065            "name": "sigmaEval2",
4066            "type": "uint256",
4067            "internalType": "BN254.ScalarField"
4068          },
4069          {
4070            "name": "sigmaEval3",
4071            "type": "uint256",
4072            "internalType": "BN254.ScalarField"
4073          },
4074          {
4075            "name": "prodPermZetaOmegaEval",
4076            "type": "uint256",
4077            "internalType": "BN254.ScalarField"
4078          }
4079        ]
4080      }
4081    ],
4082    "outputs": [],
4083    "stateMutability": "pure"
4084  },
4085  {
4086    "type": "function",
4087    "name": "newFinalizedState",
4088    "inputs": [
4089      {
4090        "name": "newState",
4091        "type": "tuple",
4092        "internalType": "struct LightClient.LightClientState",
4093        "components": [
4094          {
4095            "name": "viewNum",
4096            "type": "uint64",
4097            "internalType": "uint64"
4098          },
4099          {
4100            "name": "blockHeight",
4101            "type": "uint64",
4102            "internalType": "uint64"
4103          },
4104          {
4105            "name": "blockCommRoot",
4106            "type": "uint256",
4107            "internalType": "BN254.ScalarField"
4108          }
4109        ]
4110      },
4111      {
4112        "name": "nextStakeTable",
4113        "type": "tuple",
4114        "internalType": "struct LightClient.StakeTableState",
4115        "components": [
4116          {
4117            "name": "threshold",
4118            "type": "uint256",
4119            "internalType": "uint256"
4120          },
4121          {
4122            "name": "blsKeyComm",
4123            "type": "uint256",
4124            "internalType": "BN254.ScalarField"
4125          },
4126          {
4127            "name": "schnorrKeyComm",
4128            "type": "uint256",
4129            "internalType": "BN254.ScalarField"
4130          },
4131          {
4132            "name": "amountComm",
4133            "type": "uint256",
4134            "internalType": "BN254.ScalarField"
4135          }
4136        ]
4137      },
4138      {
4139        "name": "proof",
4140        "type": "tuple",
4141        "internalType": "struct IPlonkVerifier.PlonkProof",
4142        "components": [
4143          {
4144            "name": "wire0",
4145            "type": "tuple",
4146            "internalType": "struct BN254.G1Point",
4147            "components": [
4148              {
4149                "name": "x",
4150                "type": "uint256",
4151                "internalType": "BN254.BaseField"
4152              },
4153              {
4154                "name": "y",
4155                "type": "uint256",
4156                "internalType": "BN254.BaseField"
4157              }
4158            ]
4159          },
4160          {
4161            "name": "wire1",
4162            "type": "tuple",
4163            "internalType": "struct BN254.G1Point",
4164            "components": [
4165              {
4166                "name": "x",
4167                "type": "uint256",
4168                "internalType": "BN254.BaseField"
4169              },
4170              {
4171                "name": "y",
4172                "type": "uint256",
4173                "internalType": "BN254.BaseField"
4174              }
4175            ]
4176          },
4177          {
4178            "name": "wire2",
4179            "type": "tuple",
4180            "internalType": "struct BN254.G1Point",
4181            "components": [
4182              {
4183                "name": "x",
4184                "type": "uint256",
4185                "internalType": "BN254.BaseField"
4186              },
4187              {
4188                "name": "y",
4189                "type": "uint256",
4190                "internalType": "BN254.BaseField"
4191              }
4192            ]
4193          },
4194          {
4195            "name": "wire3",
4196            "type": "tuple",
4197            "internalType": "struct BN254.G1Point",
4198            "components": [
4199              {
4200                "name": "x",
4201                "type": "uint256",
4202                "internalType": "BN254.BaseField"
4203              },
4204              {
4205                "name": "y",
4206                "type": "uint256",
4207                "internalType": "BN254.BaseField"
4208              }
4209            ]
4210          },
4211          {
4212            "name": "wire4",
4213            "type": "tuple",
4214            "internalType": "struct BN254.G1Point",
4215            "components": [
4216              {
4217                "name": "x",
4218                "type": "uint256",
4219                "internalType": "BN254.BaseField"
4220              },
4221              {
4222                "name": "y",
4223                "type": "uint256",
4224                "internalType": "BN254.BaseField"
4225              }
4226            ]
4227          },
4228          {
4229            "name": "prodPerm",
4230            "type": "tuple",
4231            "internalType": "struct BN254.G1Point",
4232            "components": [
4233              {
4234                "name": "x",
4235                "type": "uint256",
4236                "internalType": "BN254.BaseField"
4237              },
4238              {
4239                "name": "y",
4240                "type": "uint256",
4241                "internalType": "BN254.BaseField"
4242              }
4243            ]
4244          },
4245          {
4246            "name": "split0",
4247            "type": "tuple",
4248            "internalType": "struct BN254.G1Point",
4249            "components": [
4250              {
4251                "name": "x",
4252                "type": "uint256",
4253                "internalType": "BN254.BaseField"
4254              },
4255              {
4256                "name": "y",
4257                "type": "uint256",
4258                "internalType": "BN254.BaseField"
4259              }
4260            ]
4261          },
4262          {
4263            "name": "split1",
4264            "type": "tuple",
4265            "internalType": "struct BN254.G1Point",
4266            "components": [
4267              {
4268                "name": "x",
4269                "type": "uint256",
4270                "internalType": "BN254.BaseField"
4271              },
4272              {
4273                "name": "y",
4274                "type": "uint256",
4275                "internalType": "BN254.BaseField"
4276              }
4277            ]
4278          },
4279          {
4280            "name": "split2",
4281            "type": "tuple",
4282            "internalType": "struct BN254.G1Point",
4283            "components": [
4284              {
4285                "name": "x",
4286                "type": "uint256",
4287                "internalType": "BN254.BaseField"
4288              },
4289              {
4290                "name": "y",
4291                "type": "uint256",
4292                "internalType": "BN254.BaseField"
4293              }
4294            ]
4295          },
4296          {
4297            "name": "split3",
4298            "type": "tuple",
4299            "internalType": "struct BN254.G1Point",
4300            "components": [
4301              {
4302                "name": "x",
4303                "type": "uint256",
4304                "internalType": "BN254.BaseField"
4305              },
4306              {
4307                "name": "y",
4308                "type": "uint256",
4309                "internalType": "BN254.BaseField"
4310              }
4311            ]
4312          },
4313          {
4314            "name": "split4",
4315            "type": "tuple",
4316            "internalType": "struct BN254.G1Point",
4317            "components": [
4318              {
4319                "name": "x",
4320                "type": "uint256",
4321                "internalType": "BN254.BaseField"
4322              },
4323              {
4324                "name": "y",
4325                "type": "uint256",
4326                "internalType": "BN254.BaseField"
4327              }
4328            ]
4329          },
4330          {
4331            "name": "zeta",
4332            "type": "tuple",
4333            "internalType": "struct BN254.G1Point",
4334            "components": [
4335              {
4336                "name": "x",
4337                "type": "uint256",
4338                "internalType": "BN254.BaseField"
4339              },
4340              {
4341                "name": "y",
4342                "type": "uint256",
4343                "internalType": "BN254.BaseField"
4344              }
4345            ]
4346          },
4347          {
4348            "name": "zetaOmega",
4349            "type": "tuple",
4350            "internalType": "struct BN254.G1Point",
4351            "components": [
4352              {
4353                "name": "x",
4354                "type": "uint256",
4355                "internalType": "BN254.BaseField"
4356              },
4357              {
4358                "name": "y",
4359                "type": "uint256",
4360                "internalType": "BN254.BaseField"
4361              }
4362            ]
4363          },
4364          {
4365            "name": "wireEval0",
4366            "type": "uint256",
4367            "internalType": "BN254.ScalarField"
4368          },
4369          {
4370            "name": "wireEval1",
4371            "type": "uint256",
4372            "internalType": "BN254.ScalarField"
4373          },
4374          {
4375            "name": "wireEval2",
4376            "type": "uint256",
4377            "internalType": "BN254.ScalarField"
4378          },
4379          {
4380            "name": "wireEval3",
4381            "type": "uint256",
4382            "internalType": "BN254.ScalarField"
4383          },
4384          {
4385            "name": "wireEval4",
4386            "type": "uint256",
4387            "internalType": "BN254.ScalarField"
4388          },
4389          {
4390            "name": "sigmaEval0",
4391            "type": "uint256",
4392            "internalType": "BN254.ScalarField"
4393          },
4394          {
4395            "name": "sigmaEval1",
4396            "type": "uint256",
4397            "internalType": "BN254.ScalarField"
4398          },
4399          {
4400            "name": "sigmaEval2",
4401            "type": "uint256",
4402            "internalType": "BN254.ScalarField"
4403          },
4404          {
4405            "name": "sigmaEval3",
4406            "type": "uint256",
4407            "internalType": "BN254.ScalarField"
4408          },
4409          {
4410            "name": "prodPermZetaOmegaEval",
4411            "type": "uint256",
4412            "internalType": "BN254.ScalarField"
4413          }
4414        ]
4415      }
4416    ],
4417    "outputs": [],
4418    "stateMutability": "nonpayable"
4419  },
4420  {
4421    "type": "function",
4422    "name": "owner",
4423    "inputs": [],
4424    "outputs": [
4425      {
4426        "name": "",
4427        "type": "address",
4428        "internalType": "address"
4429      }
4430    ],
4431    "stateMutability": "view"
4432  },
4433  {
4434    "type": "function",
4435    "name": "permissionedProver",
4436    "inputs": [],
4437    "outputs": [
4438      {
4439        "name": "",
4440        "type": "address",
4441        "internalType": "address"
4442      }
4443    ],
4444    "stateMutability": "view"
4445  },
4446  {
4447    "type": "function",
4448    "name": "proxiableUUID",
4449    "inputs": [],
4450    "outputs": [
4451      {
4452        "name": "",
4453        "type": "bytes32",
4454        "internalType": "bytes32"
4455      }
4456    ],
4457    "stateMutability": "view"
4458  },
4459  {
4460    "type": "function",
4461    "name": "renounceOwnership",
4462    "inputs": [],
4463    "outputs": [],
4464    "stateMutability": "nonpayable"
4465  },
4466  {
4467    "type": "function",
4468    "name": "setPermissionedProver",
4469    "inputs": [
4470      {
4471        "name": "prover",
4472        "type": "address",
4473        "internalType": "address"
4474      }
4475    ],
4476    "outputs": [],
4477    "stateMutability": "nonpayable"
4478  },
4479  {
4480    "type": "function",
4481    "name": "setStateHistoryRetentionPeriod",
4482    "inputs": [
4483      {
4484        "name": "historySeconds",
4485        "type": "uint32",
4486        "internalType": "uint32"
4487      }
4488    ],
4489    "outputs": [],
4490    "stateMutability": "nonpayable"
4491  },
4492  {
4493    "type": "function",
4494    "name": "setstateHistoryRetentionPeriod",
4495    "inputs": [
4496      {
4497        "name": "historySeconds",
4498        "type": "uint32",
4499        "internalType": "uint32"
4500      }
4501    ],
4502    "outputs": [],
4503    "stateMutability": "nonpayable"
4504  },
4505  {
4506    "type": "function",
4507    "name": "stateHistoryCommitments",
4508    "inputs": [
4509      {
4510        "name": "",
4511        "type": "uint256",
4512        "internalType": "uint256"
4513      }
4514    ],
4515    "outputs": [
4516      {
4517        "name": "l1BlockHeight",
4518        "type": "uint64",
4519        "internalType": "uint64"
4520      },
4521      {
4522        "name": "l1BlockTimestamp",
4523        "type": "uint64",
4524        "internalType": "uint64"
4525      },
4526      {
4527        "name": "hotShotBlockHeight",
4528        "type": "uint64",
4529        "internalType": "uint64"
4530      },
4531      {
4532        "name": "hotShotBlockCommRoot",
4533        "type": "uint256",
4534        "internalType": "BN254.ScalarField"
4535      }
4536    ],
4537    "stateMutability": "view"
4538  },
4539  {
4540    "type": "function",
4541    "name": "stateHistoryFirstIndex",
4542    "inputs": [],
4543    "outputs": [
4544      {
4545        "name": "",
4546        "type": "uint64",
4547        "internalType": "uint64"
4548      }
4549    ],
4550    "stateMutability": "view"
4551  },
4552  {
4553    "type": "function",
4554    "name": "stateHistoryRetentionPeriod",
4555    "inputs": [],
4556    "outputs": [
4557      {
4558        "name": "",
4559        "type": "uint32",
4560        "internalType": "uint32"
4561      }
4562    ],
4563    "stateMutability": "view"
4564  },
4565  {
4566    "type": "function",
4567    "name": "transferOwnership",
4568    "inputs": [
4569      {
4570        "name": "newOwner",
4571        "type": "address",
4572        "internalType": "address"
4573      }
4574    ],
4575    "outputs": [],
4576    "stateMutability": "nonpayable"
4577  },
4578  {
4579    "type": "function",
4580    "name": "updateEpochStartBlock",
4581    "inputs": [
4582      {
4583        "name": "newEpochStartBlock",
4584        "type": "uint64",
4585        "internalType": "uint64"
4586      }
4587    ],
4588    "outputs": [],
4589    "stateMutability": "nonpayable"
4590  },
4591  {
4592    "type": "function",
4593    "name": "upgradeToAndCall",
4594    "inputs": [
4595      {
4596        "name": "newImplementation",
4597        "type": "address",
4598        "internalType": "address"
4599      },
4600      {
4601        "name": "data",
4602        "type": "bytes",
4603        "internalType": "bytes"
4604      }
4605    ],
4606    "outputs": [],
4607    "stateMutability": "payable"
4608  },
4609  {
4610    "type": "function",
4611    "name": "votingStakeTableState",
4612    "inputs": [],
4613    "outputs": [
4614      {
4615        "name": "threshold",
4616        "type": "uint256",
4617        "internalType": "uint256"
4618      },
4619      {
4620        "name": "blsKeyComm",
4621        "type": "uint256",
4622        "internalType": "BN254.ScalarField"
4623      },
4624      {
4625        "name": "schnorrKeyComm",
4626        "type": "uint256",
4627        "internalType": "BN254.ScalarField"
4628      },
4629      {
4630        "name": "amountComm",
4631        "type": "uint256",
4632        "internalType": "BN254.ScalarField"
4633      }
4634    ],
4635    "stateMutability": "view"
4636  },
4637  {
4638    "type": "event",
4639    "name": "Initialized",
4640    "inputs": [
4641      {
4642        "name": "version",
4643        "type": "uint64",
4644        "indexed": false,
4645        "internalType": "uint64"
4646      }
4647    ],
4648    "anonymous": false
4649  },
4650  {
4651    "type": "event",
4652    "name": "NewEpoch",
4653    "inputs": [
4654      {
4655        "name": "epoch",
4656        "type": "uint64",
4657        "indexed": false,
4658        "internalType": "uint64"
4659      }
4660    ],
4661    "anonymous": false
4662  },
4663  {
4664    "type": "event",
4665    "name": "NewState",
4666    "inputs": [
4667      {
4668        "name": "viewNum",
4669        "type": "uint64",
4670        "indexed": true,
4671        "internalType": "uint64"
4672      },
4673      {
4674        "name": "blockHeight",
4675        "type": "uint64",
4676        "indexed": true,
4677        "internalType": "uint64"
4678      },
4679      {
4680        "name": "blockCommRoot",
4681        "type": "uint256",
4682        "indexed": false,
4683        "internalType": "BN254.ScalarField"
4684      }
4685    ],
4686    "anonymous": false
4687  },
4688  {
4689    "type": "event",
4690    "name": "OwnershipTransferred",
4691    "inputs": [
4692      {
4693        "name": "previousOwner",
4694        "type": "address",
4695        "indexed": true,
4696        "internalType": "address"
4697      },
4698      {
4699        "name": "newOwner",
4700        "type": "address",
4701        "indexed": true,
4702        "internalType": "address"
4703      }
4704    ],
4705    "anonymous": false
4706  },
4707  {
4708    "type": "event",
4709    "name": "PermissionedProverNotRequired",
4710    "inputs": [],
4711    "anonymous": false
4712  },
4713  {
4714    "type": "event",
4715    "name": "PermissionedProverRequired",
4716    "inputs": [
4717      {
4718        "name": "permissionedProver",
4719        "type": "address",
4720        "indexed": false,
4721        "internalType": "address"
4722      }
4723    ],
4724    "anonymous": false
4725  },
4726  {
4727    "type": "event",
4728    "name": "Upgrade",
4729    "inputs": [
4730      {
4731        "name": "implementation",
4732        "type": "address",
4733        "indexed": false,
4734        "internalType": "address"
4735      }
4736    ],
4737    "anonymous": false
4738  },
4739  {
4740    "type": "event",
4741    "name": "Upgraded",
4742    "inputs": [
4743      {
4744        "name": "implementation",
4745        "type": "address",
4746        "indexed": true,
4747        "internalType": "address"
4748      }
4749    ],
4750    "anonymous": false
4751  },
4752  {
4753    "type": "error",
4754    "name": "AddressEmptyCode",
4755    "inputs": [
4756      {
4757        "name": "target",
4758        "type": "address",
4759        "internalType": "address"
4760      }
4761    ]
4762  },
4763  {
4764    "type": "error",
4765    "name": "DeprecatedApi",
4766    "inputs": []
4767  },
4768  {
4769    "type": "error",
4770    "name": "ERC1967InvalidImplementation",
4771    "inputs": [
4772      {
4773        "name": "implementation",
4774        "type": "address",
4775        "internalType": "address"
4776      }
4777    ]
4778  },
4779  {
4780    "type": "error",
4781    "name": "ERC1967NonPayable",
4782    "inputs": []
4783  },
4784  {
4785    "type": "error",
4786    "name": "FailedInnerCall",
4787    "inputs": []
4788  },
4789  {
4790    "type": "error",
4791    "name": "InsufficientSnapshotHistory",
4792    "inputs": []
4793  },
4794  {
4795    "type": "error",
4796    "name": "InvalidAddress",
4797    "inputs": []
4798  },
4799  {
4800    "type": "error",
4801    "name": "InvalidArgs",
4802    "inputs": []
4803  },
4804  {
4805    "type": "error",
4806    "name": "InvalidHotShotBlockForCommitmentCheck",
4807    "inputs": []
4808  },
4809  {
4810    "type": "error",
4811    "name": "InvalidInitialization",
4812    "inputs": []
4813  },
4814  {
4815    "type": "error",
4816    "name": "InvalidMaxStateHistory",
4817    "inputs": []
4818  },
4819  {
4820    "type": "error",
4821    "name": "InvalidProof",
4822    "inputs": []
4823  },
4824  {
4825    "type": "error",
4826    "name": "InvalidScalar",
4827    "inputs": []
4828  },
4829  {
4830    "type": "error",
4831    "name": "MissingEpochRootUpdate",
4832    "inputs": []
4833  },
4834  {
4835    "type": "error",
4836    "name": "NoChangeRequired",
4837    "inputs": []
4838  },
4839  {
4840    "type": "error",
4841    "name": "NotInitializing",
4842    "inputs": []
4843  },
4844  {
4845    "type": "error",
4846    "name": "OutdatedState",
4847    "inputs": []
4848  },
4849  {
4850    "type": "error",
4851    "name": "OwnableInvalidOwner",
4852    "inputs": [
4853      {
4854        "name": "owner",
4855        "type": "address",
4856        "internalType": "address"
4857      }
4858    ]
4859  },
4860  {
4861    "type": "error",
4862    "name": "OwnableUnauthorizedAccount",
4863    "inputs": [
4864      {
4865        "name": "account",
4866        "type": "address",
4867        "internalType": "address"
4868      }
4869    ]
4870  },
4871  {
4872    "type": "error",
4873    "name": "OwnershipCannotBeRenounced",
4874    "inputs": []
4875  },
4876  {
4877    "type": "error",
4878    "name": "ProverNotPermissioned",
4879    "inputs": []
4880  },
4881  {
4882    "type": "error",
4883    "name": "UUPSUnauthorizedCallContext",
4884    "inputs": []
4885  },
4886  {
4887    "type": "error",
4888    "name": "UUPSUnsupportedProxiableUUID",
4889    "inputs": [
4890      {
4891        "name": "slot",
4892        "type": "bytes32",
4893        "internalType": "bytes32"
4894      }
4895    ]
4896  },
4897  {
4898    "type": "error",
4899    "name": "WrongStakeTableUsed",
4900    "inputs": []
4901  }
4902]
4903```*/
4904#[allow(
4905    non_camel_case_types,
4906    non_snake_case,
4907    clippy::pub_underscore_fields,
4908    clippy::style,
4909    clippy::empty_structs_with_brackets
4910)]
4911pub mod LightClientV2 {
4912    use super::*;
4913    use alloy::sol_types as alloy_sol_types;
4914    /// The creation / init bytecode of the contract.
4915    ///
4916    /// ```text
4917    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134586100f95f395f8181611b3f01528181611b680152611ce501526134585ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612735565b610799565b005b348015610237575f5ffd5b5061024b61024636600461274e565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b6040516102809190612765565b348015610322575f5ffd5b5061022a61033136600461297c565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c3e565b610921565b348015610360575f5ffd5b5061037461036f36600461297c565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc36600461297c565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c85565b610a31565b61022a6104a8366004612c9e565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612da1565b610b0e565b348015610513575f5ffd5b506103aa610e41565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a61055536600461274e565b610e66565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612de5565b610f91565b3480156105dd575f5ffd5b5061022a6105ec366004612c85565b611000565b3480156105fc575f5ffd5b5061022a61060b366004612e0d565b611089565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e62565b3480156106ad575f5ffd5b5061022a6106bc366004612de5565b6111ab565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e97565b611317565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a610780366004612735565b61146f565b348015610790575f5ffd5b50600954610426565b6107a16114ae565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d61249b565b6108a5611509565b905090565b6108b26114ae565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f91565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ecb565b6109879190612efe565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612efe565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f2b565b600a546001600160401b0391821691610a20911684612efe565b6001600160401b0316115b92915050565b610a396114ae565b610a4281611000565b50565b610a4d611b34565b610a5682611bd8565b610a608282611c19565b5050565b5f610a6d611cda565b505f51602061342c5f395f51905f5290565b610a876114ae565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af56114ae565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b3357506008546001600160a01b03163314155b15610b51576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b8a575060065460208401516001600160401b03600160401b9092048216911611155b15610ba85760405163051c46ef60e01b815260040160405180910390fd5b610bb58360400151611d23565b610bc28260200151611d23565b610bcf8260400151611d23565b610bdc8260600151611d23565b5f610be5610e41565b6020850151600a549192505f91610c0591906001600160401b0316610f91565b600a549091506001600160401b03600160801b909104811690821610610c5057610c32856020015161099c565b15610c505760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d03576002610c7a8383612f2b565b6001600160401b031610610ca15760405163080ae8d960e01b815260040160405180910390fd5b610cac826001612ecb565b6001600160401b0316816001600160401b0316148015610ce55750600654610ce390600160401b90046001600160401b031661093a565b155b15610d035760405163080ae8d960e01b815260040160405180910390fd5b610d0e858585611d64565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d6d5750610d6d856020015161093a565b15610dd7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dbb826001612ecb565b6040516001600160401b03909116815260200160405180910390a15b610de2434287611edb565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e3291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f91565b600980545f91829190610e7a600183612f4a565b81548110610e8a57610e8a612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03168410610ec957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f8a578460098281548110610ef957610ef9612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f825760098181548110610f3257610f32612f5d565b905f5260205f2090600202016001015460098281548110610f5557610f55612f5d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610edd565b5050915091565b5f816001600160401b03165f03610fa957505f610a2b565b826001600160401b03165f03610fc157506001610a2b565b610fcb8284612efe565b6001600160401b03165f03610feb57610fe48284612f71565b9050610a2b565b610ff58284612f71565b610fe4906001612ecb565b6110086114ae565b610e108163ffffffff16108061102757506301e133808163ffffffff16115b80611045575060085463ffffffff600160a01b909104811690821611155b15611063576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110cd5750825b90505f826001600160401b031660011480156110e85750303b155b9050811580156110f6575080155b156111145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113e57845460ff60401b1916600160401b1785555b611147866120c4565b61114f6120d5565b61115a8989896120dd565b83156111a057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6111b36114ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111fc575080546001600160401b03808416911610155b1561121a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611262576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112ab8385610f91565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611328575080155b806113725750600854600980549091600160c01b90046001600160401b031690811061135657611356612f5d565b5f9182526020909120600290910201546001600160401b031684105b156113905760405163b0b4387760e01b815260040160405180910390fd5b5f808061139e600185612f4a565b90505b8161143a57600854600160c01b90046001600160401b0316811061143a5786600982815481106113d3576113d3612f5d565b5f9182526020909120600290910201546001600160401b03161161142857600191506009818154811061140857611408612f5d565b5f9182526020909120600290910201546001600160401b0316925061143a565b8061143281612f9e565b9150506113a1565b816114585760405163b0b4387760e01b815260040160405180910390fd5b856114638489612f4a565b11979650505050505050565b6114776114ae565b6001600160a01b0381166114a557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281612209565b336114e07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b815233600482015260240161149c565b61151161249b565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bae5f51602061342c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611be06114ae565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190612fb3565b60015b611c9b57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b5f51602061342c5f395f51905f528114611ccb57604051632a87526960e21b81526004810182905260240161149c565b611cd58383612279565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611d6d610895565b9050611d77612700565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611de75750611de7856020015161093a565b15611e1957602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e3d565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611e78908590859088906004016131ac565b602060405180830381865af4158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb791906133cc565b611ed4576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611f50575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f1b57611f1b612f5d565b5f918252602090912060029091020154611f4590600160401b90046001600160401b031684612f2b565b6001600160401b0316115b15611fe357600854600980549091600160c01b90046001600160401b0316908110611f7d57611f7d612f5d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018611fbd836133eb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6120cc6122ce565b610a4281612317565b610aeb6122ce565b82516001600160401b0316151580612101575060208301516001600160401b031615155b8061210e57506020820151155b8061211b57506040820151155b8061212857506060820151155b8061213257508151155b806121445750610e108163ffffffff16105b8061215857506301e133808163ffffffff16115b15612176576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122828261231f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122c657611cd58282612382565b610a606123f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b6114776122ce565b806001600160a01b03163b5f0361235457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b5f51602061342c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161239e9190613415565b5f60405180830381855af49150503d805f81146123d6576040519150601f19603f3d011682016040523d82523d5f602084013e6123db565b606091505b50915091506123eb858383612413565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124285761242382612472565b61246b565b815115801561243f57506001600160a01b0384163b155b1561246857604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b50805b9392505050565b8051156124825780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124ce60405180604001604052805f81526020015f81525090565b81526020016124ee60405180604001604052805f81526020015f81525090565b815260200161250e60405180604001604052805f81526020015f81525090565b815260200161252e60405180604001604052805f81526020015f81525090565b815260200161254e60405180604001604052805f81526020015f81525090565b815260200161256e60405180604001604052805f81526020015f81525090565b815260200161258e60405180604001604052805f81526020015f81525090565b81526020016125ae60405180604001604052805f81526020015f81525090565b81526020016125ce60405180604001604052805f81526020015f81525090565b81526020016125ee60405180604001604052805f81526020015f81525090565b815260200161260e60405180604001604052805f81526020015f81525090565b815260200161262e60405180604001604052805f81526020015f81525090565b815260200161264e60405180604001604052805f81526020015f81525090565b815260200161266e60405180604001604052805f81526020015f81525090565b815260200161268e60405180604001604052805f81526020015f81525090565b81526020016126ae60405180604001604052805f81526020015f81525090565b81526020016126ce60405180604001604052805f81526020015f81525090565b81526020016126ee60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f60208284031215612745575f5ffd5b61246b8261271f565b5f6020828403121561275e575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612797604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f6020828403121561298c575f5ffd5b61246b82612966565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129cc576129cc612995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fa576129fa612995565b604052919050565b5f60608284031215612a12575f5ffd5b604051606081016001600160401b0381118282101715612a3457612a34612995565b604052905080612a4383612966565b8152612a5160208401612966565b6020820152604092830135920191909152919050565b5f60408284031215612a77575f5ffd5b604080519081016001600160401b0381118282101715612a9957612a99612995565b604052823581526020928301359281019290925250919050565b5f6104808284031215612ac4575f5ffd5b612acc6129a9565b9050612ad88383612a67565b8152612ae78360408401612a67565b6020820152612af98360808401612a67565b6040820152612b0b8360c08401612a67565b6060820152612b1e836101008401612a67565b6080820152612b31836101408401612a67565b60a0820152612b44836101808401612a67565b60c0820152612b57836101c08401612a67565b60e0820152612b6a836102008401612a67565b610100820152612b7e836102408401612a67565b610120820152612b92836102808401612a67565b610140820152612ba6836102c08401612a67565b610160820152612bba836103008401612a67565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c50575f5ffd5b612c5a8484612a02565b9150612c698460608501612ab3565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c95575f5ffd5b61246b82612c72565b5f5f60408385031215612caf575f5ffd5b612cb88361271f565b915060208301356001600160401b03811115612cd2575f5ffd5b8301601f81018513612ce2575f5ffd5b80356001600160401b03811115612cfb57612cfb612995565b612d0e601f8201601f19166020016129d2565b818152866020838501011115612d22575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d51575f5ffd5b604051608081016001600160401b0381118282101715612d7357612d73612995565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612db4575f5ffd5b612dbe8585612a02565b9250612dcd8560608601612d41565b9150612ddc8560e08601612ab3565b90509250925092565b5f5f60408385031215612df6575f5ffd5b612dff83612966565b9150612c6960208401612966565b5f5f5f5f6101208587031215612e21575f5ffd5b612e2b8686612a02565b9350612e3a8660608701612d41565b9250612e4860e08601612c72565b9150612e57610100860161271f565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ea8575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612eb7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f1657612f16612eea565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612eb7565b81810381811115610a2b57610a2b612eb7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f8957612f89612eea565b806001600160401b0384160491505092915050565b5f81612fac57612fac612eb7565b505f190190565b5f60208284031215612fc3575f5ffd5b5051919050565b805f5b600b811015612fec578151845260209384019390910190600101612fcd565b50505050565b61300782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131de604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133b6610500830185612fca565b6133c4610660830184612ff2565b949350505050565b5f602082840312156133dc575f5ffd5b8151801515811461246b575f5ffd5b5f6001600160401b0382166001600160401b03810361340c5761340c612eb7565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
4918    /// ```
4919    #[rustfmt::skip]
4920    #[allow(clippy::all)]
4921    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4922        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[`\x80Qa4Xa\0\xF9_9_\x81\x81a\x1B?\x01R\x81\x81a\x1Bh\x01Ra\x1C\xE5\x01Ra4X_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'5V[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'NV[a\x08LV[`@Qa\x02\x80\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\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'eV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)|V[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,>V[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)|V[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)|V[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,\x85V[a\n1V[a\x02*a\x04\xA86`\x04a,\x9EV[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\xA1V[a\x0B\x0EV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0EAV[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'NV[a\x0EfV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\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\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xE5V[a\x0F\x91V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x85V[a\x10\0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.\rV[a\x10\x89V[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\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\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.bV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xE5V[a\x11\xABV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\x97V[a\x13\x17V[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'5V[a\x14oV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@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\x07\xF7W`@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[W_\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\x08\x9Da$\x9BV[a\x08\xA5a\x15\tV[\x90P\x90V[a\x08\xB2a\x14\xAEV[`\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\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x91V[`\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\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xCBV[a\t\x87\x91\x90a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/+V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\xAEV[a\nB\x81a\x10\0V[PV[a\nMa\x1B4V[a\nV\x82a\x1B\xD8V[a\n`\x82\x82a\x1C\x19V[PPV[_a\nma\x1C\xDAV[P_Q` a4,_9_Q\x90_R\x90V[a\n\x87a\x14\xAEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\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\n\xF5a\x14\xAEV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B3WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BQW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\x8AWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xA8W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xB5\x83`@\x01Qa\x1D#V[a\x0B\xC2\x82` \x01Qa\x1D#V[a\x0B\xCF\x82`@\x01Qa\x1D#V[a\x0B\xDC\x82``\x01Qa\x1D#V[_a\x0B\xE5a\x0EAV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C\x05\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x91V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0CPWa\x0C2\x85` \x01Qa\t\x9CV[\x15a\x0CPW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r\x03W`\x02a\x0Cz\x83\x83a/+V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xA1W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xAC\x82`\x01a.\xCBV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xE5WP`\x06Ta\x0C\xE3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\r\x03W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x0E\x85\x85\x85a\x1DdV[\x84Q`\x06\x80T` \x88\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`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\rmWPa\rm\x85` \x01Qa\t:V[\x15a\r\xD7W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\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\r\xBB\x82`\x01a.\xCBV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xE2CB\x87a\x1E\xDBV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x91V[`\t\x80T_\x91\x82\x91\x90a\x0Ez`\x01\x83a/JV[\x81T\x81\x10a\x0E\x8AWa\x0E\x8Aa/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xC9W`@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\x0F\x8AW\x84`\t\x82\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\x82W`\t\x81\x81T\x81\x10a\x0F2Wa\x0F2a/]V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FUWa\x0FUa/]V[\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\x0E\xDDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xA9WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xC1WP`\x01a\n+V[a\x0F\xCB\x82\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xEBWa\x0F\xE4\x82\x84a/qV[\x90Pa\n+V[a\x0F\xF5\x82\x84a/qV[a\x0F\xE4\x90`\x01a.\xCBV[a\x10\x08a\x14\xAEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10cW`@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[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x10\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xF6WP\x80\x15[\x15a\x11\x14W`@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\x11>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11G\x86a \xC4V[a\x11Oa \xD5V[a\x11Z\x89\x89\x89a \xDDV[\x83\x15a\x11\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x11\xB3a\x14\xAEV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x11\xFCWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x1AW`@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\x12bW`@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\x12\xAB\x83\x85a\x0F\x91V[`\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\x13(WP\x80\x15[\x80a\x13rWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13VWa\x13Va/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\x90W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x9E`\x01\x85a/JV[\x90P[\x81a\x14:W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14:W\x86`\t\x82\x81T\x81\x10a\x13\xD3Wa\x13\xD3a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14(W`\x01\x91P`\t\x81\x81T\x81\x10a\x14\x08Wa\x14\x08a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14:V[\x80a\x142\x81a/\x9EV[\x91PPa\x13\xA1V[\x81a\x14XW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14c\x84\x89a/JV[\x11\x97\x96PPPPPPPV[a\x14wa\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\"\tV[3a\x14\xE0\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\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x9CV[a\x15\x11a$\x9BV[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` 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\x1B\xBAWP\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\x1B\xAE_Q` a4,_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xE0a\x14\xAEV[`@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\x08AV[\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\x1CsWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Cp\x91\x81\x01\x90a/\xB3V[`\x01[a\x1C\x9BW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x81\x14a\x1C\xCBW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x9CV[a\x1C\xD5\x83\x83a\"yV[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\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Dma\x08\x95V[\x90Pa\x1Dwa'\0V[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1D\xE7WPa\x1D\xE7\x85` \x01Qa\t:V[\x15a\x1E\x19W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E=V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1Ex\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xACV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\xB7\x91\x90a3\xCCV[a\x1E\xD4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1FPWP`\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\x1F\x1BWa\x1F\x1Ba/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1FE\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/+V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x1F\xE3W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F}Wa\x1F}a/]V[_\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\x1F\xBD\x83a3\xEBV[\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 \xCCa\"\xCEV[a\nB\x81a#\x17V[a\n\xEBa\"\xCEV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x01WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x0EWP` \x82\x01Q\x15[\x80a!\x1BWP`@\x82\x01Q\x15[\x80a!(WP``\x82\x01Q\x15[\x80a!2WP\x81Q\x15[\x80a!DWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!XWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!vW`@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[\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\"\x82\x82a#\x1FV[`@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\"\xC6Wa\x1C\xD5\x82\x82a#\x82V[a\n`a#\xF4V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14wa\"\xCEV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#TW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_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#\x9E\x91\x90a4\x15V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xDBV[``\x91P[P\x91P\x91Pa#\xEB\x85\x83\x83a$\x13V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$(Wa$#\x82a$rV[a$kV[\x81Q\x15\x80\x15a$?WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$hW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a$\x82W\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$\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'EW__\xFD[a$k\x82a'\x1FV[_` \x82\x84\x03\x12\x15a'^W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x97`@\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\x97W__\xFD[_` \x82\x84\x03\x12\x15a)\x8CW__\xFD[a$k\x82a)fV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xCCWa)\xCCa)\x95V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xFAWa)\xFAa)\x95V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x12W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*4Wa*4a)\x95V[`@R\x90P\x80a*C\x83a)fV[\x81Ra*Q` \x84\x01a)fV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*wW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x99Wa*\x99a)\x95V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xC4W__\xFD[a*\xCCa)\xA9V[\x90Pa*\xD8\x83\x83a*gV[\x81Ra*\xE7\x83`@\x84\x01a*gV[` \x82\x01Ra*\xF9\x83`\x80\x84\x01a*gV[`@\x82\x01Ra+\x0B\x83`\xC0\x84\x01a*gV[``\x82\x01Ra+\x1E\x83a\x01\0\x84\x01a*gV[`\x80\x82\x01Ra+1\x83a\x01@\x84\x01a*gV[`\xA0\x82\x01Ra+D\x83a\x01\x80\x84\x01a*gV[`\xC0\x82\x01Ra+W\x83a\x01\xC0\x84\x01a*gV[`\xE0\x82\x01Ra+j\x83a\x02\0\x84\x01a*gV[a\x01\0\x82\x01Ra+~\x83a\x02@\x84\x01a*gV[a\x01 \x82\x01Ra+\x92\x83a\x02\x80\x84\x01a*gV[a\x01@\x82\x01Ra+\xA6\x83a\x02\xC0\x84\x01a*gV[a\x01`\x82\x01Ra+\xBA\x83a\x03\0\x84\x01a*gV[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,PW__\xFD[a,Z\x84\x84a*\x02V[\x91Pa,i\x84``\x85\x01a*\xB3V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\x95W__\xFD[a$k\x82a,rV[__`@\x83\x85\x03\x12\x15a,\xAFW__\xFD[a,\xB8\x83a'\x1FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xE2W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xFBWa,\xFBa)\x95V[a-\x0E`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xD2V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\"W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-QW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-sWa-sa)\x95V[`@\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-\xB4W__\xFD[a-\xBE\x85\x85a*\x02V[\x92Pa-\xCD\x85``\x86\x01a-AV[\x91Pa-\xDC\x85`\xE0\x86\x01a*\xB3V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xF6W__\xFD[a-\xFF\x83a)fV[\x91Pa,i` \x84\x01a)fV[____a\x01 \x85\x87\x03\x12\x15a.!W__\xFD[a.+\x86\x86a*\x02V[\x93Pa.:\x86``\x87\x01a-AV[\x92Pa.H`\xE0\x86\x01a,rV[\x91Pa.Wa\x01\0\x86\x01a'\x1FV[\x90P\x92\x95\x91\x94P\x92PV[` \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\x15a.\xA8W__\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+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x16Wa/\x16a.\xEAV[\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+Wa\n+a.\xB7V[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x89Wa/\x89a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xACWa/\xACa.\xB7V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xC3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xECW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xCDV[PPPPV[a0\x07\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\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa1\xDE`@\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\x01Ra3\xB6a\x05\0\x83\x01\x85a/\xCAV[a3\xC4a\x06`\x83\x01\x84a/\xF2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xDCW__\xFD[\x81Q\x80\x15\x15\x81\x14a$kW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x0CWa4\x0Ca.\xB7V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08#\0\n",
4923    );
4924    /// The runtime bytecode of the contract, as deployed on the network.
4925    ///
4926    /// ```text
4927    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612735565b610799565b005b348015610237575f5ffd5b5061024b61024636600461274e565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b6040516102809190612765565b348015610322575f5ffd5b5061022a61033136600461297c565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c3e565b610921565b348015610360575f5ffd5b5061037461036f36600461297c565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc36600461297c565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c85565b610a31565b61022a6104a8366004612c9e565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612da1565b610b0e565b348015610513575f5ffd5b506103aa610e41565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a61055536600461274e565b610e66565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612de5565b610f91565b3480156105dd575f5ffd5b5061022a6105ec366004612c85565b611000565b3480156105fc575f5ffd5b5061022a61060b366004612e0d565b611089565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e62565b3480156106ad575f5ffd5b5061022a6106bc366004612de5565b6111ab565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e97565b611317565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a610780366004612735565b61146f565b348015610790575f5ffd5b50600954610426565b6107a16114ae565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d61249b565b6108a5611509565b905090565b6108b26114ae565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f91565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ecb565b6109879190612efe565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612efe565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f2b565b600a546001600160401b0391821691610a20911684612efe565b6001600160401b0316115b92915050565b610a396114ae565b610a4281611000565b50565b610a4d611b34565b610a5682611bd8565b610a608282611c19565b5050565b5f610a6d611cda565b505f51602061342c5f395f51905f5290565b610a876114ae565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af56114ae565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b3357506008546001600160a01b03163314155b15610b51576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b8a575060065460208401516001600160401b03600160401b9092048216911611155b15610ba85760405163051c46ef60e01b815260040160405180910390fd5b610bb58360400151611d23565b610bc28260200151611d23565b610bcf8260400151611d23565b610bdc8260600151611d23565b5f610be5610e41565b6020850151600a549192505f91610c0591906001600160401b0316610f91565b600a549091506001600160401b03600160801b909104811690821610610c5057610c32856020015161099c565b15610c505760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d03576002610c7a8383612f2b565b6001600160401b031610610ca15760405163080ae8d960e01b815260040160405180910390fd5b610cac826001612ecb565b6001600160401b0316816001600160401b0316148015610ce55750600654610ce390600160401b90046001600160401b031661093a565b155b15610d035760405163080ae8d960e01b815260040160405180910390fd5b610d0e858585611d64565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d6d5750610d6d856020015161093a565b15610dd7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dbb826001612ecb565b6040516001600160401b03909116815260200160405180910390a15b610de2434287611edb565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e3291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f91565b600980545f91829190610e7a600183612f4a565b81548110610e8a57610e8a612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03168410610ec957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f8a578460098281548110610ef957610ef9612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f825760098181548110610f3257610f32612f5d565b905f5260205f2090600202016001015460098281548110610f5557610f55612f5d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610edd565b5050915091565b5f816001600160401b03165f03610fa957505f610a2b565b826001600160401b03165f03610fc157506001610a2b565b610fcb8284612efe565b6001600160401b03165f03610feb57610fe48284612f71565b9050610a2b565b610ff58284612f71565b610fe4906001612ecb565b6110086114ae565b610e108163ffffffff16108061102757506301e133808163ffffffff16115b80611045575060085463ffffffff600160a01b909104811690821611155b15611063576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110cd5750825b90505f826001600160401b031660011480156110e85750303b155b9050811580156110f6575080155b156111145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113e57845460ff60401b1916600160401b1785555b611147866120c4565b61114f6120d5565b61115a8989896120dd565b83156111a057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6111b36114ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111fc575080546001600160401b03808416911610155b1561121a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611262576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112ab8385610f91565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611328575080155b806113725750600854600980549091600160c01b90046001600160401b031690811061135657611356612f5d565b5f9182526020909120600290910201546001600160401b031684105b156113905760405163b0b4387760e01b815260040160405180910390fd5b5f808061139e600185612f4a565b90505b8161143a57600854600160c01b90046001600160401b0316811061143a5786600982815481106113d3576113d3612f5d565b5f9182526020909120600290910201546001600160401b03161161142857600191506009818154811061140857611408612f5d565b5f9182526020909120600290910201546001600160401b0316925061143a565b8061143281612f9e565b9150506113a1565b816114585760405163b0b4387760e01b815260040160405180910390fd5b856114638489612f4a565b11979650505050505050565b6114776114ae565b6001600160a01b0381166114a557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281612209565b336114e07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b815233600482015260240161149c565b61151161249b565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bae5f51602061342c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611be06114ae565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190612fb3565b60015b611c9b57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b5f51602061342c5f395f51905f528114611ccb57604051632a87526960e21b81526004810182905260240161149c565b611cd58383612279565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611d6d610895565b9050611d77612700565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611de75750611de7856020015161093a565b15611e1957602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e3d565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611e78908590859088906004016131ac565b602060405180830381865af4158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb791906133cc565b611ed4576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611f50575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f1b57611f1b612f5d565b5f918252602090912060029091020154611f4590600160401b90046001600160401b031684612f2b565b6001600160401b0316115b15611fe357600854600980549091600160c01b90046001600160401b0316908110611f7d57611f7d612f5d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018611fbd836133eb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6120cc6122ce565b610a4281612317565b610aeb6122ce565b82516001600160401b0316151580612101575060208301516001600160401b031615155b8061210e57506020820151155b8061211b57506040820151155b8061212857506060820151155b8061213257508151155b806121445750610e108163ffffffff16105b8061215857506301e133808163ffffffff16115b15612176576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122828261231f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122c657611cd58282612382565b610a606123f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b6114776122ce565b806001600160a01b03163b5f0361235457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b5f51602061342c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161239e9190613415565b5f60405180830381855af49150503d805f81146123d6576040519150601f19603f3d011682016040523d82523d5f602084013e6123db565b606091505b50915091506123eb858383612413565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124285761242382612472565b61246b565b815115801561243f57506001600160a01b0384163b155b1561246857604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b50805b9392505050565b8051156124825780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124ce60405180604001604052805f81526020015f81525090565b81526020016124ee60405180604001604052805f81526020015f81525090565b815260200161250e60405180604001604052805f81526020015f81525090565b815260200161252e60405180604001604052805f81526020015f81525090565b815260200161254e60405180604001604052805f81526020015f81525090565b815260200161256e60405180604001604052805f81526020015f81525090565b815260200161258e60405180604001604052805f81526020015f81525090565b81526020016125ae60405180604001604052805f81526020015f81525090565b81526020016125ce60405180604001604052805f81526020015f81525090565b81526020016125ee60405180604001604052805f81526020015f81525090565b815260200161260e60405180604001604052805f81526020015f81525090565b815260200161262e60405180604001604052805f81526020015f81525090565b815260200161264e60405180604001604052805f81526020015f81525090565b815260200161266e60405180604001604052805f81526020015f81525090565b815260200161268e60405180604001604052805f81526020015f81525090565b81526020016126ae60405180604001604052805f81526020015f81525090565b81526020016126ce60405180604001604052805f81526020015f81525090565b81526020016126ee60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f60208284031215612745575f5ffd5b61246b8261271f565b5f6020828403121561275e575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612797604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f6020828403121561298c575f5ffd5b61246b82612966565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129cc576129cc612995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fa576129fa612995565b604052919050565b5f60608284031215612a12575f5ffd5b604051606081016001600160401b0381118282101715612a3457612a34612995565b604052905080612a4383612966565b8152612a5160208401612966565b6020820152604092830135920191909152919050565b5f60408284031215612a77575f5ffd5b604080519081016001600160401b0381118282101715612a9957612a99612995565b604052823581526020928301359281019290925250919050565b5f6104808284031215612ac4575f5ffd5b612acc6129a9565b9050612ad88383612a67565b8152612ae78360408401612a67565b6020820152612af98360808401612a67565b6040820152612b0b8360c08401612a67565b6060820152612b1e836101008401612a67565b6080820152612b31836101408401612a67565b60a0820152612b44836101808401612a67565b60c0820152612b57836101c08401612a67565b60e0820152612b6a836102008401612a67565b610100820152612b7e836102408401612a67565b610120820152612b92836102808401612a67565b610140820152612ba6836102c08401612a67565b610160820152612bba836103008401612a67565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c50575f5ffd5b612c5a8484612a02565b9150612c698460608501612ab3565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c95575f5ffd5b61246b82612c72565b5f5f60408385031215612caf575f5ffd5b612cb88361271f565b915060208301356001600160401b03811115612cd2575f5ffd5b8301601f81018513612ce2575f5ffd5b80356001600160401b03811115612cfb57612cfb612995565b612d0e601f8201601f19166020016129d2565b818152866020838501011115612d22575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d51575f5ffd5b604051608081016001600160401b0381118282101715612d7357612d73612995565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612db4575f5ffd5b612dbe8585612a02565b9250612dcd8560608601612d41565b9150612ddc8560e08601612ab3565b90509250925092565b5f5f60408385031215612df6575f5ffd5b612dff83612966565b9150612c6960208401612966565b5f5f5f5f6101208587031215612e21575f5ffd5b612e2b8686612a02565b9350612e3a8660608701612d41565b9250612e4860e08601612c72565b9150612e57610100860161271f565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ea8575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612eb7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f1657612f16612eea565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612eb7565b81810381811115610a2b57610a2b612eb7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f8957612f89612eea565b806001600160401b0384160491505092915050565b5f81612fac57612fac612eb7565b505f190190565b5f60208284031215612fc3575f5ffd5b5051919050565b805f5b600b811015612fec578151845260209384019390910190600101612fcd565b50505050565b61300782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131de604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133b6610500830185612fca565b6133c4610660830184612ff2565b949350505050565b5f602082840312156133dc575f5ffd5b8151801515811461246b575f5ffd5b5f6001600160401b0382166001600160401b03810361340c5761340c612eb7565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
4928    /// ```
4929    #[rustfmt::skip]
4930    #[allow(clippy::all)]
4931    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4932        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'5V[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'NV[a\x08LV[`@Qa\x02\x80\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\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'eV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)|V[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,>V[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)|V[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)|V[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,\x85V[a\n1V[a\x02*a\x04\xA86`\x04a,\x9EV[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\xA1V[a\x0B\x0EV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0EAV[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'NV[a\x0EfV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\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\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xE5V[a\x0F\x91V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x85V[a\x10\0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.\rV[a\x10\x89V[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\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\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.bV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xE5V[a\x11\xABV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\x97V[a\x13\x17V[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'5V[a\x14oV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@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\x07\xF7W`@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[W_\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\x08\x9Da$\x9BV[a\x08\xA5a\x15\tV[\x90P\x90V[a\x08\xB2a\x14\xAEV[`\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\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x91V[`\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\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xCBV[a\t\x87\x91\x90a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/+V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\xAEV[a\nB\x81a\x10\0V[PV[a\nMa\x1B4V[a\nV\x82a\x1B\xD8V[a\n`\x82\x82a\x1C\x19V[PPV[_a\nma\x1C\xDAV[P_Q` a4,_9_Q\x90_R\x90V[a\n\x87a\x14\xAEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\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\n\xF5a\x14\xAEV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B3WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BQW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\x8AWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xA8W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xB5\x83`@\x01Qa\x1D#V[a\x0B\xC2\x82` \x01Qa\x1D#V[a\x0B\xCF\x82`@\x01Qa\x1D#V[a\x0B\xDC\x82``\x01Qa\x1D#V[_a\x0B\xE5a\x0EAV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C\x05\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x91V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0CPWa\x0C2\x85` \x01Qa\t\x9CV[\x15a\x0CPW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r\x03W`\x02a\x0Cz\x83\x83a/+V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xA1W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xAC\x82`\x01a.\xCBV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xE5WP`\x06Ta\x0C\xE3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\r\x03W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x0E\x85\x85\x85a\x1DdV[\x84Q`\x06\x80T` \x88\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`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\rmWPa\rm\x85` \x01Qa\t:V[\x15a\r\xD7W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\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\r\xBB\x82`\x01a.\xCBV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xE2CB\x87a\x1E\xDBV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x91V[`\t\x80T_\x91\x82\x91\x90a\x0Ez`\x01\x83a/JV[\x81T\x81\x10a\x0E\x8AWa\x0E\x8Aa/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xC9W`@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\x0F\x8AW\x84`\t\x82\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\x82W`\t\x81\x81T\x81\x10a\x0F2Wa\x0F2a/]V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FUWa\x0FUa/]V[\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\x0E\xDDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xA9WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xC1WP`\x01a\n+V[a\x0F\xCB\x82\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xEBWa\x0F\xE4\x82\x84a/qV[\x90Pa\n+V[a\x0F\xF5\x82\x84a/qV[a\x0F\xE4\x90`\x01a.\xCBV[a\x10\x08a\x14\xAEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10cW`@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[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x10\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xF6WP\x80\x15[\x15a\x11\x14W`@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\x11>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11G\x86a \xC4V[a\x11Oa \xD5V[a\x11Z\x89\x89\x89a \xDDV[\x83\x15a\x11\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x11\xB3a\x14\xAEV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x11\xFCWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x1AW`@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\x12bW`@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\x12\xAB\x83\x85a\x0F\x91V[`\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\x13(WP\x80\x15[\x80a\x13rWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13VWa\x13Va/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\x90W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x9E`\x01\x85a/JV[\x90P[\x81a\x14:W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14:W\x86`\t\x82\x81T\x81\x10a\x13\xD3Wa\x13\xD3a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14(W`\x01\x91P`\t\x81\x81T\x81\x10a\x14\x08Wa\x14\x08a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14:V[\x80a\x142\x81a/\x9EV[\x91PPa\x13\xA1V[\x81a\x14XW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14c\x84\x89a/JV[\x11\x97\x96PPPPPPPV[a\x14wa\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\"\tV[3a\x14\xE0\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\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x9CV[a\x15\x11a$\x9BV[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` 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\x1B\xBAWP\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\x1B\xAE_Q` a4,_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xE0a\x14\xAEV[`@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\x08AV[\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\x1CsWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Cp\x91\x81\x01\x90a/\xB3V[`\x01[a\x1C\x9BW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x81\x14a\x1C\xCBW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x9CV[a\x1C\xD5\x83\x83a\"yV[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\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Dma\x08\x95V[\x90Pa\x1Dwa'\0V[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1D\xE7WPa\x1D\xE7\x85` \x01Qa\t:V[\x15a\x1E\x19W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E=V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1Ex\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xACV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\xB7\x91\x90a3\xCCV[a\x1E\xD4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1FPWP`\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\x1F\x1BWa\x1F\x1Ba/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1FE\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/+V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x1F\xE3W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F}Wa\x1F}a/]V[_\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\x1F\xBD\x83a3\xEBV[\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 \xCCa\"\xCEV[a\nB\x81a#\x17V[a\n\xEBa\"\xCEV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x01WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x0EWP` \x82\x01Q\x15[\x80a!\x1BWP`@\x82\x01Q\x15[\x80a!(WP``\x82\x01Q\x15[\x80a!2WP\x81Q\x15[\x80a!DWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!XWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!vW`@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[\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\"\x82\x82a#\x1FV[`@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\"\xC6Wa\x1C\xD5\x82\x82a#\x82V[a\n`a#\xF4V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14wa\"\xCEV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#TW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_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#\x9E\x91\x90a4\x15V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xDBV[``\x91P[P\x91P\x91Pa#\xEB\x85\x83\x83a$\x13V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$(Wa$#\x82a$rV[a$kV[\x81Q\x15\x80\x15a$?WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$hW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a$\x82W\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$\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'EW__\xFD[a$k\x82a'\x1FV[_` \x82\x84\x03\x12\x15a'^W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x97`@\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\x97W__\xFD[_` \x82\x84\x03\x12\x15a)\x8CW__\xFD[a$k\x82a)fV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xCCWa)\xCCa)\x95V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xFAWa)\xFAa)\x95V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x12W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*4Wa*4a)\x95V[`@R\x90P\x80a*C\x83a)fV[\x81Ra*Q` \x84\x01a)fV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*wW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x99Wa*\x99a)\x95V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xC4W__\xFD[a*\xCCa)\xA9V[\x90Pa*\xD8\x83\x83a*gV[\x81Ra*\xE7\x83`@\x84\x01a*gV[` \x82\x01Ra*\xF9\x83`\x80\x84\x01a*gV[`@\x82\x01Ra+\x0B\x83`\xC0\x84\x01a*gV[``\x82\x01Ra+\x1E\x83a\x01\0\x84\x01a*gV[`\x80\x82\x01Ra+1\x83a\x01@\x84\x01a*gV[`\xA0\x82\x01Ra+D\x83a\x01\x80\x84\x01a*gV[`\xC0\x82\x01Ra+W\x83a\x01\xC0\x84\x01a*gV[`\xE0\x82\x01Ra+j\x83a\x02\0\x84\x01a*gV[a\x01\0\x82\x01Ra+~\x83a\x02@\x84\x01a*gV[a\x01 \x82\x01Ra+\x92\x83a\x02\x80\x84\x01a*gV[a\x01@\x82\x01Ra+\xA6\x83a\x02\xC0\x84\x01a*gV[a\x01`\x82\x01Ra+\xBA\x83a\x03\0\x84\x01a*gV[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,PW__\xFD[a,Z\x84\x84a*\x02V[\x91Pa,i\x84``\x85\x01a*\xB3V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\x95W__\xFD[a$k\x82a,rV[__`@\x83\x85\x03\x12\x15a,\xAFW__\xFD[a,\xB8\x83a'\x1FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xE2W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xFBWa,\xFBa)\x95V[a-\x0E`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xD2V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\"W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-QW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-sWa-sa)\x95V[`@\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-\xB4W__\xFD[a-\xBE\x85\x85a*\x02V[\x92Pa-\xCD\x85``\x86\x01a-AV[\x91Pa-\xDC\x85`\xE0\x86\x01a*\xB3V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xF6W__\xFD[a-\xFF\x83a)fV[\x91Pa,i` \x84\x01a)fV[____a\x01 \x85\x87\x03\x12\x15a.!W__\xFD[a.+\x86\x86a*\x02V[\x93Pa.:\x86``\x87\x01a-AV[\x92Pa.H`\xE0\x86\x01a,rV[\x91Pa.Wa\x01\0\x86\x01a'\x1FV[\x90P\x92\x95\x91\x94P\x92PV[` \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\x15a.\xA8W__\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+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x16Wa/\x16a.\xEAV[\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+Wa\n+a.\xB7V[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x89Wa/\x89a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xACWa/\xACa.\xB7V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xC3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xECW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xCDV[PPPPV[a0\x07\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\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa1\xDE`@\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\x01Ra3\xB6a\x05\0\x83\x01\x85a/\xCAV[a3\xC4a\x06`\x83\x01\x84a/\xF2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xDCW__\xFD[\x81Q\x80\x15\x15\x81\x14a$kW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x0CWa4\x0Ca.\xB7V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08#\0\n",
4933    );
4934    #[derive(serde::Serialize, serde::Deserialize)]
4935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4936    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4937```solidity
4938error AddressEmptyCode(address target);
4939```*/
4940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4941    #[derive(Clone)]
4942    pub struct AddressEmptyCode {
4943        #[allow(missing_docs)]
4944        pub target: alloy::sol_types::private::Address,
4945    }
4946    #[allow(
4947        non_camel_case_types,
4948        non_snake_case,
4949        clippy::pub_underscore_fields,
4950        clippy::style
4951    )]
4952    const _: () = {
4953        use alloy::sol_types as alloy_sol_types;
4954        #[doc(hidden)]
4955        #[allow(dead_code)]
4956        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4957        #[doc(hidden)]
4958        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4959        #[cfg(test)]
4960        #[allow(dead_code, unreachable_patterns)]
4961        fn _type_assertion(
4962            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4963        ) {
4964            match _t {
4965                alloy_sol_types::private::AssertTypeEq::<
4966                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4967                >(_) => {}
4968            }
4969        }
4970        #[automatically_derived]
4971        #[doc(hidden)]
4972        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4973            fn from(value: AddressEmptyCode) -> Self {
4974                (value.target,)
4975            }
4976        }
4977        #[automatically_derived]
4978        #[doc(hidden)]
4979        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4980            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4981                Self { target: tuple.0 }
4982            }
4983        }
4984        #[automatically_derived]
4985        impl alloy_sol_types::SolError for AddressEmptyCode {
4986            type Parameters<'a> = UnderlyingSolTuple<'a>;
4987            type Token<'a> = <Self::Parameters<
4988                'a,
4989            > as alloy_sol_types::SolType>::Token<'a>;
4990            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4991            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4992            #[inline]
4993            fn new<'a>(
4994                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4995            ) -> Self {
4996                tuple.into()
4997            }
4998            #[inline]
4999            fn tokenize(&self) -> Self::Token<'_> {
5000                (
5001                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5002                        &self.target,
5003                    ),
5004                )
5005            }
5006            #[inline]
5007            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5008                Self::abi_decode_raw_with_config(
5009                    data,
5010                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5011                )
5012            }
5013        }
5014    };
5015    #[derive(serde::Serialize, serde::Deserialize)]
5016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5017    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5018```solidity
5019error DeprecatedApi();
5020```*/
5021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5022    #[derive(Clone)]
5023    pub struct DeprecatedApi;
5024    #[allow(
5025        non_camel_case_types,
5026        non_snake_case,
5027        clippy::pub_underscore_fields,
5028        clippy::style
5029    )]
5030    const _: () = {
5031        use alloy::sol_types as alloy_sol_types;
5032        #[doc(hidden)]
5033        #[allow(dead_code)]
5034        type UnderlyingSolTuple<'a> = ();
5035        #[doc(hidden)]
5036        type UnderlyingRustTuple<'a> = ();
5037        #[cfg(test)]
5038        #[allow(dead_code, unreachable_patterns)]
5039        fn _type_assertion(
5040            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5041        ) {
5042            match _t {
5043                alloy_sol_types::private::AssertTypeEq::<
5044                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5045                >(_) => {}
5046            }
5047        }
5048        #[automatically_derived]
5049        #[doc(hidden)]
5050        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5051            fn from(value: DeprecatedApi) -> Self {
5052                ()
5053            }
5054        }
5055        #[automatically_derived]
5056        #[doc(hidden)]
5057        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5058            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5059                Self
5060            }
5061        }
5062        #[automatically_derived]
5063        impl alloy_sol_types::SolError for DeprecatedApi {
5064            type Parameters<'a> = UnderlyingSolTuple<'a>;
5065            type Token<'a> = <Self::Parameters<
5066                'a,
5067            > as alloy_sol_types::SolType>::Token<'a>;
5068            const SIGNATURE: &'static str = "DeprecatedApi()";
5069            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5070            #[inline]
5071            fn new<'a>(
5072                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5073            ) -> Self {
5074                tuple.into()
5075            }
5076            #[inline]
5077            fn tokenize(&self) -> Self::Token<'_> {
5078                ()
5079            }
5080            #[inline]
5081            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5082                Self::abi_decode_raw_with_config(
5083                    data,
5084                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5085                )
5086            }
5087        }
5088    };
5089    #[derive(serde::Serialize, serde::Deserialize)]
5090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5091    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5092```solidity
5093error ERC1967InvalidImplementation(address implementation);
5094```*/
5095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5096    #[derive(Clone)]
5097    pub struct ERC1967InvalidImplementation {
5098        #[allow(missing_docs)]
5099        pub implementation: alloy::sol_types::private::Address,
5100    }
5101    #[allow(
5102        non_camel_case_types,
5103        non_snake_case,
5104        clippy::pub_underscore_fields,
5105        clippy::style
5106    )]
5107    const _: () = {
5108        use alloy::sol_types as alloy_sol_types;
5109        #[doc(hidden)]
5110        #[allow(dead_code)]
5111        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5112        #[doc(hidden)]
5113        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5114        #[cfg(test)]
5115        #[allow(dead_code, unreachable_patterns)]
5116        fn _type_assertion(
5117            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5118        ) {
5119            match _t {
5120                alloy_sol_types::private::AssertTypeEq::<
5121                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5122                >(_) => {}
5123            }
5124        }
5125        #[automatically_derived]
5126        #[doc(hidden)]
5127        impl ::core::convert::From<ERC1967InvalidImplementation>
5128        for UnderlyingRustTuple<'_> {
5129            fn from(value: ERC1967InvalidImplementation) -> Self {
5130                (value.implementation,)
5131            }
5132        }
5133        #[automatically_derived]
5134        #[doc(hidden)]
5135        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5136        for ERC1967InvalidImplementation {
5137            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5138                Self { implementation: tuple.0 }
5139            }
5140        }
5141        #[automatically_derived]
5142        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5143            type Parameters<'a> = UnderlyingSolTuple<'a>;
5144            type Token<'a> = <Self::Parameters<
5145                'a,
5146            > as alloy_sol_types::SolType>::Token<'a>;
5147            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5148            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5149            #[inline]
5150            fn new<'a>(
5151                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5152            ) -> Self {
5153                tuple.into()
5154            }
5155            #[inline]
5156            fn tokenize(&self) -> Self::Token<'_> {
5157                (
5158                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5159                        &self.implementation,
5160                    ),
5161                )
5162            }
5163            #[inline]
5164            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5165                Self::abi_decode_raw_with_config(
5166                    data,
5167                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5168                )
5169            }
5170        }
5171    };
5172    #[derive(serde::Serialize, serde::Deserialize)]
5173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5174    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5175```solidity
5176error ERC1967NonPayable();
5177```*/
5178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5179    #[derive(Clone)]
5180    pub struct ERC1967NonPayable;
5181    #[allow(
5182        non_camel_case_types,
5183        non_snake_case,
5184        clippy::pub_underscore_fields,
5185        clippy::style
5186    )]
5187    const _: () = {
5188        use alloy::sol_types as alloy_sol_types;
5189        #[doc(hidden)]
5190        #[allow(dead_code)]
5191        type UnderlyingSolTuple<'a> = ();
5192        #[doc(hidden)]
5193        type UnderlyingRustTuple<'a> = ();
5194        #[cfg(test)]
5195        #[allow(dead_code, unreachable_patterns)]
5196        fn _type_assertion(
5197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5198        ) {
5199            match _t {
5200                alloy_sol_types::private::AssertTypeEq::<
5201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5202                >(_) => {}
5203            }
5204        }
5205        #[automatically_derived]
5206        #[doc(hidden)]
5207        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5208            fn from(value: ERC1967NonPayable) -> Self {
5209                ()
5210            }
5211        }
5212        #[automatically_derived]
5213        #[doc(hidden)]
5214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5216                Self
5217            }
5218        }
5219        #[automatically_derived]
5220        impl alloy_sol_types::SolError for ERC1967NonPayable {
5221            type Parameters<'a> = UnderlyingSolTuple<'a>;
5222            type Token<'a> = <Self::Parameters<
5223                'a,
5224            > as alloy_sol_types::SolType>::Token<'a>;
5225            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5226            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5227            #[inline]
5228            fn new<'a>(
5229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5230            ) -> Self {
5231                tuple.into()
5232            }
5233            #[inline]
5234            fn tokenize(&self) -> Self::Token<'_> {
5235                ()
5236            }
5237            #[inline]
5238            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5239                Self::abi_decode_raw_with_config(
5240                    data,
5241                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5242                )
5243            }
5244        }
5245    };
5246    #[derive(serde::Serialize, serde::Deserialize)]
5247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5248    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5249```solidity
5250error FailedInnerCall();
5251```*/
5252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5253    #[derive(Clone)]
5254    pub struct FailedInnerCall;
5255    #[allow(
5256        non_camel_case_types,
5257        non_snake_case,
5258        clippy::pub_underscore_fields,
5259        clippy::style
5260    )]
5261    const _: () = {
5262        use alloy::sol_types as alloy_sol_types;
5263        #[doc(hidden)]
5264        #[allow(dead_code)]
5265        type UnderlyingSolTuple<'a> = ();
5266        #[doc(hidden)]
5267        type UnderlyingRustTuple<'a> = ();
5268        #[cfg(test)]
5269        #[allow(dead_code, unreachable_patterns)]
5270        fn _type_assertion(
5271            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5272        ) {
5273            match _t {
5274                alloy_sol_types::private::AssertTypeEq::<
5275                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5276                >(_) => {}
5277            }
5278        }
5279        #[automatically_derived]
5280        #[doc(hidden)]
5281        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5282            fn from(value: FailedInnerCall) -> Self {
5283                ()
5284            }
5285        }
5286        #[automatically_derived]
5287        #[doc(hidden)]
5288        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5289            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5290                Self
5291            }
5292        }
5293        #[automatically_derived]
5294        impl alloy_sol_types::SolError for FailedInnerCall {
5295            type Parameters<'a> = UnderlyingSolTuple<'a>;
5296            type Token<'a> = <Self::Parameters<
5297                'a,
5298            > as alloy_sol_types::SolType>::Token<'a>;
5299            const SIGNATURE: &'static str = "FailedInnerCall()";
5300            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5301            #[inline]
5302            fn new<'a>(
5303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5304            ) -> Self {
5305                tuple.into()
5306            }
5307            #[inline]
5308            fn tokenize(&self) -> Self::Token<'_> {
5309                ()
5310            }
5311            #[inline]
5312            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5313                Self::abi_decode_raw_with_config(
5314                    data,
5315                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5316                )
5317            }
5318        }
5319    };
5320    #[derive(serde::Serialize, serde::Deserialize)]
5321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5322    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5323```solidity
5324error InsufficientSnapshotHistory();
5325```*/
5326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5327    #[derive(Clone)]
5328    pub struct InsufficientSnapshotHistory;
5329    #[allow(
5330        non_camel_case_types,
5331        non_snake_case,
5332        clippy::pub_underscore_fields,
5333        clippy::style
5334    )]
5335    const _: () = {
5336        use alloy::sol_types as alloy_sol_types;
5337        #[doc(hidden)]
5338        #[allow(dead_code)]
5339        type UnderlyingSolTuple<'a> = ();
5340        #[doc(hidden)]
5341        type UnderlyingRustTuple<'a> = ();
5342        #[cfg(test)]
5343        #[allow(dead_code, unreachable_patterns)]
5344        fn _type_assertion(
5345            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5346        ) {
5347            match _t {
5348                alloy_sol_types::private::AssertTypeEq::<
5349                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5350                >(_) => {}
5351            }
5352        }
5353        #[automatically_derived]
5354        #[doc(hidden)]
5355        impl ::core::convert::From<InsufficientSnapshotHistory>
5356        for UnderlyingRustTuple<'_> {
5357            fn from(value: InsufficientSnapshotHistory) -> Self {
5358                ()
5359            }
5360        }
5361        #[automatically_derived]
5362        #[doc(hidden)]
5363        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5364        for InsufficientSnapshotHistory {
5365            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5366                Self
5367            }
5368        }
5369        #[automatically_derived]
5370        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5371            type Parameters<'a> = UnderlyingSolTuple<'a>;
5372            type Token<'a> = <Self::Parameters<
5373                'a,
5374            > as alloy_sol_types::SolType>::Token<'a>;
5375            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5376            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5377            #[inline]
5378            fn new<'a>(
5379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5380            ) -> Self {
5381                tuple.into()
5382            }
5383            #[inline]
5384            fn tokenize(&self) -> Self::Token<'_> {
5385                ()
5386            }
5387            #[inline]
5388            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5389                Self::abi_decode_raw_with_config(
5390                    data,
5391                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5392                )
5393            }
5394        }
5395    };
5396    #[derive(serde::Serialize, serde::Deserialize)]
5397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5398    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5399```solidity
5400error InvalidAddress();
5401```*/
5402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5403    #[derive(Clone)]
5404    pub struct InvalidAddress;
5405    #[allow(
5406        non_camel_case_types,
5407        non_snake_case,
5408        clippy::pub_underscore_fields,
5409        clippy::style
5410    )]
5411    const _: () = {
5412        use alloy::sol_types as alloy_sol_types;
5413        #[doc(hidden)]
5414        #[allow(dead_code)]
5415        type UnderlyingSolTuple<'a> = ();
5416        #[doc(hidden)]
5417        type UnderlyingRustTuple<'a> = ();
5418        #[cfg(test)]
5419        #[allow(dead_code, unreachable_patterns)]
5420        fn _type_assertion(
5421            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5422        ) {
5423            match _t {
5424                alloy_sol_types::private::AssertTypeEq::<
5425                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5426                >(_) => {}
5427            }
5428        }
5429        #[automatically_derived]
5430        #[doc(hidden)]
5431        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5432            fn from(value: InvalidAddress) -> Self {
5433                ()
5434            }
5435        }
5436        #[automatically_derived]
5437        #[doc(hidden)]
5438        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5439            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5440                Self
5441            }
5442        }
5443        #[automatically_derived]
5444        impl alloy_sol_types::SolError for InvalidAddress {
5445            type Parameters<'a> = UnderlyingSolTuple<'a>;
5446            type Token<'a> = <Self::Parameters<
5447                'a,
5448            > as alloy_sol_types::SolType>::Token<'a>;
5449            const SIGNATURE: &'static str = "InvalidAddress()";
5450            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5451            #[inline]
5452            fn new<'a>(
5453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5454            ) -> Self {
5455                tuple.into()
5456            }
5457            #[inline]
5458            fn tokenize(&self) -> Self::Token<'_> {
5459                ()
5460            }
5461            #[inline]
5462            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5463                Self::abi_decode_raw_with_config(
5464                    data,
5465                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5466                )
5467            }
5468        }
5469    };
5470    #[derive(serde::Serialize, serde::Deserialize)]
5471    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5472    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5473```solidity
5474error InvalidArgs();
5475```*/
5476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5477    #[derive(Clone)]
5478    pub struct InvalidArgs;
5479    #[allow(
5480        non_camel_case_types,
5481        non_snake_case,
5482        clippy::pub_underscore_fields,
5483        clippy::style
5484    )]
5485    const _: () = {
5486        use alloy::sol_types as alloy_sol_types;
5487        #[doc(hidden)]
5488        #[allow(dead_code)]
5489        type UnderlyingSolTuple<'a> = ();
5490        #[doc(hidden)]
5491        type UnderlyingRustTuple<'a> = ();
5492        #[cfg(test)]
5493        #[allow(dead_code, unreachable_patterns)]
5494        fn _type_assertion(
5495            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5496        ) {
5497            match _t {
5498                alloy_sol_types::private::AssertTypeEq::<
5499                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5500                >(_) => {}
5501            }
5502        }
5503        #[automatically_derived]
5504        #[doc(hidden)]
5505        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5506            fn from(value: InvalidArgs) -> Self {
5507                ()
5508            }
5509        }
5510        #[automatically_derived]
5511        #[doc(hidden)]
5512        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5513            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                Self
5515            }
5516        }
5517        #[automatically_derived]
5518        impl alloy_sol_types::SolError for InvalidArgs {
5519            type Parameters<'a> = UnderlyingSolTuple<'a>;
5520            type Token<'a> = <Self::Parameters<
5521                'a,
5522            > as alloy_sol_types::SolType>::Token<'a>;
5523            const SIGNATURE: &'static str = "InvalidArgs()";
5524            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5525            #[inline]
5526            fn new<'a>(
5527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5528            ) -> Self {
5529                tuple.into()
5530            }
5531            #[inline]
5532            fn tokenize(&self) -> Self::Token<'_> {
5533                ()
5534            }
5535            #[inline]
5536            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5537                Self::abi_decode_raw_with_config(
5538                    data,
5539                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5540                )
5541            }
5542        }
5543    };
5544    #[derive(serde::Serialize, serde::Deserialize)]
5545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5546    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5547```solidity
5548error InvalidHotShotBlockForCommitmentCheck();
5549```*/
5550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5551    #[derive(Clone)]
5552    pub struct InvalidHotShotBlockForCommitmentCheck;
5553    #[allow(
5554        non_camel_case_types,
5555        non_snake_case,
5556        clippy::pub_underscore_fields,
5557        clippy::style
5558    )]
5559    const _: () = {
5560        use alloy::sol_types as alloy_sol_types;
5561        #[doc(hidden)]
5562        #[allow(dead_code)]
5563        type UnderlyingSolTuple<'a> = ();
5564        #[doc(hidden)]
5565        type UnderlyingRustTuple<'a> = ();
5566        #[cfg(test)]
5567        #[allow(dead_code, unreachable_patterns)]
5568        fn _type_assertion(
5569            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5570        ) {
5571            match _t {
5572                alloy_sol_types::private::AssertTypeEq::<
5573                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5574                >(_) => {}
5575            }
5576        }
5577        #[automatically_derived]
5578        #[doc(hidden)]
5579        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5580        for UnderlyingRustTuple<'_> {
5581            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5582                ()
5583            }
5584        }
5585        #[automatically_derived]
5586        #[doc(hidden)]
5587        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5588        for InvalidHotShotBlockForCommitmentCheck {
5589            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5590                Self
5591            }
5592        }
5593        #[automatically_derived]
5594        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5595            type Parameters<'a> = UnderlyingSolTuple<'a>;
5596            type Token<'a> = <Self::Parameters<
5597                'a,
5598            > as alloy_sol_types::SolType>::Token<'a>;
5599            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5600            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5601            #[inline]
5602            fn new<'a>(
5603                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5604            ) -> Self {
5605                tuple.into()
5606            }
5607            #[inline]
5608            fn tokenize(&self) -> Self::Token<'_> {
5609                ()
5610            }
5611            #[inline]
5612            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5613                Self::abi_decode_raw_with_config(
5614                    data,
5615                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5616                )
5617            }
5618        }
5619    };
5620    #[derive(serde::Serialize, serde::Deserialize)]
5621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5622    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5623```solidity
5624error InvalidInitialization();
5625```*/
5626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5627    #[derive(Clone)]
5628    pub struct InvalidInitialization;
5629    #[allow(
5630        non_camel_case_types,
5631        non_snake_case,
5632        clippy::pub_underscore_fields,
5633        clippy::style
5634    )]
5635    const _: () = {
5636        use alloy::sol_types as alloy_sol_types;
5637        #[doc(hidden)]
5638        #[allow(dead_code)]
5639        type UnderlyingSolTuple<'a> = ();
5640        #[doc(hidden)]
5641        type UnderlyingRustTuple<'a> = ();
5642        #[cfg(test)]
5643        #[allow(dead_code, unreachable_patterns)]
5644        fn _type_assertion(
5645            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5646        ) {
5647            match _t {
5648                alloy_sol_types::private::AssertTypeEq::<
5649                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5650                >(_) => {}
5651            }
5652        }
5653        #[automatically_derived]
5654        #[doc(hidden)]
5655        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5656            fn from(value: InvalidInitialization) -> Self {
5657                ()
5658            }
5659        }
5660        #[automatically_derived]
5661        #[doc(hidden)]
5662        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5663            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5664                Self
5665            }
5666        }
5667        #[automatically_derived]
5668        impl alloy_sol_types::SolError for InvalidInitialization {
5669            type Parameters<'a> = UnderlyingSolTuple<'a>;
5670            type Token<'a> = <Self::Parameters<
5671                'a,
5672            > as alloy_sol_types::SolType>::Token<'a>;
5673            const SIGNATURE: &'static str = "InvalidInitialization()";
5674            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5675            #[inline]
5676            fn new<'a>(
5677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5678            ) -> Self {
5679                tuple.into()
5680            }
5681            #[inline]
5682            fn tokenize(&self) -> Self::Token<'_> {
5683                ()
5684            }
5685            #[inline]
5686            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5687                Self::abi_decode_raw_with_config(
5688                    data,
5689                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5690                )
5691            }
5692        }
5693    };
5694    #[derive(serde::Serialize, serde::Deserialize)]
5695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5696    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5697```solidity
5698error InvalidMaxStateHistory();
5699```*/
5700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5701    #[derive(Clone)]
5702    pub struct InvalidMaxStateHistory;
5703    #[allow(
5704        non_camel_case_types,
5705        non_snake_case,
5706        clippy::pub_underscore_fields,
5707        clippy::style
5708    )]
5709    const _: () = {
5710        use alloy::sol_types as alloy_sol_types;
5711        #[doc(hidden)]
5712        #[allow(dead_code)]
5713        type UnderlyingSolTuple<'a> = ();
5714        #[doc(hidden)]
5715        type UnderlyingRustTuple<'a> = ();
5716        #[cfg(test)]
5717        #[allow(dead_code, unreachable_patterns)]
5718        fn _type_assertion(
5719            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5720        ) {
5721            match _t {
5722                alloy_sol_types::private::AssertTypeEq::<
5723                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5724                >(_) => {}
5725            }
5726        }
5727        #[automatically_derived]
5728        #[doc(hidden)]
5729        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5730            fn from(value: InvalidMaxStateHistory) -> Self {
5731                ()
5732            }
5733        }
5734        #[automatically_derived]
5735        #[doc(hidden)]
5736        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5737            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5738                Self
5739            }
5740        }
5741        #[automatically_derived]
5742        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5743            type Parameters<'a> = UnderlyingSolTuple<'a>;
5744            type Token<'a> = <Self::Parameters<
5745                'a,
5746            > as alloy_sol_types::SolType>::Token<'a>;
5747            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5748            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5749            #[inline]
5750            fn new<'a>(
5751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5752            ) -> Self {
5753                tuple.into()
5754            }
5755            #[inline]
5756            fn tokenize(&self) -> Self::Token<'_> {
5757                ()
5758            }
5759            #[inline]
5760            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5761                Self::abi_decode_raw_with_config(
5762                    data,
5763                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5764                )
5765            }
5766        }
5767    };
5768    #[derive(serde::Serialize, serde::Deserialize)]
5769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5770    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5771```solidity
5772error InvalidProof();
5773```*/
5774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5775    #[derive(Clone)]
5776    pub struct InvalidProof;
5777    #[allow(
5778        non_camel_case_types,
5779        non_snake_case,
5780        clippy::pub_underscore_fields,
5781        clippy::style
5782    )]
5783    const _: () = {
5784        use alloy::sol_types as alloy_sol_types;
5785        #[doc(hidden)]
5786        #[allow(dead_code)]
5787        type UnderlyingSolTuple<'a> = ();
5788        #[doc(hidden)]
5789        type UnderlyingRustTuple<'a> = ();
5790        #[cfg(test)]
5791        #[allow(dead_code, unreachable_patterns)]
5792        fn _type_assertion(
5793            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5794        ) {
5795            match _t {
5796                alloy_sol_types::private::AssertTypeEq::<
5797                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5798                >(_) => {}
5799            }
5800        }
5801        #[automatically_derived]
5802        #[doc(hidden)]
5803        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5804            fn from(value: InvalidProof) -> Self {
5805                ()
5806            }
5807        }
5808        #[automatically_derived]
5809        #[doc(hidden)]
5810        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5811            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5812                Self
5813            }
5814        }
5815        #[automatically_derived]
5816        impl alloy_sol_types::SolError for InvalidProof {
5817            type Parameters<'a> = UnderlyingSolTuple<'a>;
5818            type Token<'a> = <Self::Parameters<
5819                'a,
5820            > as alloy_sol_types::SolType>::Token<'a>;
5821            const SIGNATURE: &'static str = "InvalidProof()";
5822            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5823            #[inline]
5824            fn new<'a>(
5825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5826            ) -> Self {
5827                tuple.into()
5828            }
5829            #[inline]
5830            fn tokenize(&self) -> Self::Token<'_> {
5831                ()
5832            }
5833            #[inline]
5834            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5835                Self::abi_decode_raw_with_config(
5836                    data,
5837                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5838                )
5839            }
5840        }
5841    };
5842    #[derive(serde::Serialize, serde::Deserialize)]
5843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5844    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5845```solidity
5846error InvalidScalar();
5847```*/
5848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5849    #[derive(Clone)]
5850    pub struct InvalidScalar;
5851    #[allow(
5852        non_camel_case_types,
5853        non_snake_case,
5854        clippy::pub_underscore_fields,
5855        clippy::style
5856    )]
5857    const _: () = {
5858        use alloy::sol_types as alloy_sol_types;
5859        #[doc(hidden)]
5860        #[allow(dead_code)]
5861        type UnderlyingSolTuple<'a> = ();
5862        #[doc(hidden)]
5863        type UnderlyingRustTuple<'a> = ();
5864        #[cfg(test)]
5865        #[allow(dead_code, unreachable_patterns)]
5866        fn _type_assertion(
5867            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5868        ) {
5869            match _t {
5870                alloy_sol_types::private::AssertTypeEq::<
5871                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5872                >(_) => {}
5873            }
5874        }
5875        #[automatically_derived]
5876        #[doc(hidden)]
5877        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5878            fn from(value: InvalidScalar) -> Self {
5879                ()
5880            }
5881        }
5882        #[automatically_derived]
5883        #[doc(hidden)]
5884        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5885            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5886                Self
5887            }
5888        }
5889        #[automatically_derived]
5890        impl alloy_sol_types::SolError for InvalidScalar {
5891            type Parameters<'a> = UnderlyingSolTuple<'a>;
5892            type Token<'a> = <Self::Parameters<
5893                'a,
5894            > as alloy_sol_types::SolType>::Token<'a>;
5895            const SIGNATURE: &'static str = "InvalidScalar()";
5896            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5897            #[inline]
5898            fn new<'a>(
5899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5900            ) -> Self {
5901                tuple.into()
5902            }
5903            #[inline]
5904            fn tokenize(&self) -> Self::Token<'_> {
5905                ()
5906            }
5907            #[inline]
5908            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5909                Self::abi_decode_raw_with_config(
5910                    data,
5911                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5912                )
5913            }
5914        }
5915    };
5916    #[derive(serde::Serialize, serde::Deserialize)]
5917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5918    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5919```solidity
5920error MissingEpochRootUpdate();
5921```*/
5922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5923    #[derive(Clone)]
5924    pub struct MissingEpochRootUpdate;
5925    #[allow(
5926        non_camel_case_types,
5927        non_snake_case,
5928        clippy::pub_underscore_fields,
5929        clippy::style
5930    )]
5931    const _: () = {
5932        use alloy::sol_types as alloy_sol_types;
5933        #[doc(hidden)]
5934        #[allow(dead_code)]
5935        type UnderlyingSolTuple<'a> = ();
5936        #[doc(hidden)]
5937        type UnderlyingRustTuple<'a> = ();
5938        #[cfg(test)]
5939        #[allow(dead_code, unreachable_patterns)]
5940        fn _type_assertion(
5941            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5942        ) {
5943            match _t {
5944                alloy_sol_types::private::AssertTypeEq::<
5945                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5946                >(_) => {}
5947            }
5948        }
5949        #[automatically_derived]
5950        #[doc(hidden)]
5951        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5952            fn from(value: MissingEpochRootUpdate) -> Self {
5953                ()
5954            }
5955        }
5956        #[automatically_derived]
5957        #[doc(hidden)]
5958        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5959            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5960                Self
5961            }
5962        }
5963        #[automatically_derived]
5964        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5965            type Parameters<'a> = UnderlyingSolTuple<'a>;
5966            type Token<'a> = <Self::Parameters<
5967                'a,
5968            > as alloy_sol_types::SolType>::Token<'a>;
5969            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5970            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5971            #[inline]
5972            fn new<'a>(
5973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5974            ) -> Self {
5975                tuple.into()
5976            }
5977            #[inline]
5978            fn tokenize(&self) -> Self::Token<'_> {
5979                ()
5980            }
5981            #[inline]
5982            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5983                Self::abi_decode_raw_with_config(
5984                    data,
5985                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5986                )
5987            }
5988        }
5989    };
5990    #[derive(serde::Serialize, serde::Deserialize)]
5991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5992    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5993```solidity
5994error NoChangeRequired();
5995```*/
5996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5997    #[derive(Clone)]
5998    pub struct NoChangeRequired;
5999    #[allow(
6000        non_camel_case_types,
6001        non_snake_case,
6002        clippy::pub_underscore_fields,
6003        clippy::style
6004    )]
6005    const _: () = {
6006        use alloy::sol_types as alloy_sol_types;
6007        #[doc(hidden)]
6008        #[allow(dead_code)]
6009        type UnderlyingSolTuple<'a> = ();
6010        #[doc(hidden)]
6011        type UnderlyingRustTuple<'a> = ();
6012        #[cfg(test)]
6013        #[allow(dead_code, unreachable_patterns)]
6014        fn _type_assertion(
6015            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6016        ) {
6017            match _t {
6018                alloy_sol_types::private::AssertTypeEq::<
6019                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6020                >(_) => {}
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6026            fn from(value: NoChangeRequired) -> Self {
6027                ()
6028            }
6029        }
6030        #[automatically_derived]
6031        #[doc(hidden)]
6032        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6033            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6034                Self
6035            }
6036        }
6037        #[automatically_derived]
6038        impl alloy_sol_types::SolError for NoChangeRequired {
6039            type Parameters<'a> = UnderlyingSolTuple<'a>;
6040            type Token<'a> = <Self::Parameters<
6041                'a,
6042            > as alloy_sol_types::SolType>::Token<'a>;
6043            const SIGNATURE: &'static str = "NoChangeRequired()";
6044            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6045            #[inline]
6046            fn new<'a>(
6047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6048            ) -> Self {
6049                tuple.into()
6050            }
6051            #[inline]
6052            fn tokenize(&self) -> Self::Token<'_> {
6053                ()
6054            }
6055            #[inline]
6056            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6057                Self::abi_decode_raw_with_config(
6058                    data,
6059                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6060                )
6061            }
6062        }
6063    };
6064    #[derive(serde::Serialize, serde::Deserialize)]
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6067```solidity
6068error NotInitializing();
6069```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct NotInitializing;
6073    #[allow(
6074        non_camel_case_types,
6075        non_snake_case,
6076        clippy::pub_underscore_fields,
6077        clippy::style
6078    )]
6079    const _: () = {
6080        use alloy::sol_types as alloy_sol_types;
6081        #[doc(hidden)]
6082        #[allow(dead_code)]
6083        type UnderlyingSolTuple<'a> = ();
6084        #[doc(hidden)]
6085        type UnderlyingRustTuple<'a> = ();
6086        #[cfg(test)]
6087        #[allow(dead_code, unreachable_patterns)]
6088        fn _type_assertion(
6089            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6090        ) {
6091            match _t {
6092                alloy_sol_types::private::AssertTypeEq::<
6093                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6094                >(_) => {}
6095            }
6096        }
6097        #[automatically_derived]
6098        #[doc(hidden)]
6099        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6100            fn from(value: NotInitializing) -> Self {
6101                ()
6102            }
6103        }
6104        #[automatically_derived]
6105        #[doc(hidden)]
6106        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6107            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6108                Self
6109            }
6110        }
6111        #[automatically_derived]
6112        impl alloy_sol_types::SolError for NotInitializing {
6113            type Parameters<'a> = UnderlyingSolTuple<'a>;
6114            type Token<'a> = <Self::Parameters<
6115                'a,
6116            > as alloy_sol_types::SolType>::Token<'a>;
6117            const SIGNATURE: &'static str = "NotInitializing()";
6118            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6119            #[inline]
6120            fn new<'a>(
6121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6122            ) -> Self {
6123                tuple.into()
6124            }
6125            #[inline]
6126            fn tokenize(&self) -> Self::Token<'_> {
6127                ()
6128            }
6129            #[inline]
6130            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6131                Self::abi_decode_raw_with_config(
6132                    data,
6133                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6134                )
6135            }
6136        }
6137    };
6138    #[derive(serde::Serialize, serde::Deserialize)]
6139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6140    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6141```solidity
6142error OutdatedState();
6143```*/
6144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6145    #[derive(Clone)]
6146    pub struct OutdatedState;
6147    #[allow(
6148        non_camel_case_types,
6149        non_snake_case,
6150        clippy::pub_underscore_fields,
6151        clippy::style
6152    )]
6153    const _: () = {
6154        use alloy::sol_types as alloy_sol_types;
6155        #[doc(hidden)]
6156        #[allow(dead_code)]
6157        type UnderlyingSolTuple<'a> = ();
6158        #[doc(hidden)]
6159        type UnderlyingRustTuple<'a> = ();
6160        #[cfg(test)]
6161        #[allow(dead_code, unreachable_patterns)]
6162        fn _type_assertion(
6163            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6164        ) {
6165            match _t {
6166                alloy_sol_types::private::AssertTypeEq::<
6167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6168                >(_) => {}
6169            }
6170        }
6171        #[automatically_derived]
6172        #[doc(hidden)]
6173        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6174            fn from(value: OutdatedState) -> Self {
6175                ()
6176            }
6177        }
6178        #[automatically_derived]
6179        #[doc(hidden)]
6180        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6181            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6182                Self
6183            }
6184        }
6185        #[automatically_derived]
6186        impl alloy_sol_types::SolError for OutdatedState {
6187            type Parameters<'a> = UnderlyingSolTuple<'a>;
6188            type Token<'a> = <Self::Parameters<
6189                'a,
6190            > as alloy_sol_types::SolType>::Token<'a>;
6191            const SIGNATURE: &'static str = "OutdatedState()";
6192            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6193            #[inline]
6194            fn new<'a>(
6195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6196            ) -> Self {
6197                tuple.into()
6198            }
6199            #[inline]
6200            fn tokenize(&self) -> Self::Token<'_> {
6201                ()
6202            }
6203            #[inline]
6204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6205                Self::abi_decode_raw_with_config(
6206                    data,
6207                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6208                )
6209            }
6210        }
6211    };
6212    #[derive(serde::Serialize, serde::Deserialize)]
6213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6214    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6215```solidity
6216error OwnableInvalidOwner(address owner);
6217```*/
6218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6219    #[derive(Clone)]
6220    pub struct OwnableInvalidOwner {
6221        #[allow(missing_docs)]
6222        pub owner: alloy::sol_types::private::Address,
6223    }
6224    #[allow(
6225        non_camel_case_types,
6226        non_snake_case,
6227        clippy::pub_underscore_fields,
6228        clippy::style
6229    )]
6230    const _: () = {
6231        use alloy::sol_types as alloy_sol_types;
6232        #[doc(hidden)]
6233        #[allow(dead_code)]
6234        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6235        #[doc(hidden)]
6236        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6237        #[cfg(test)]
6238        #[allow(dead_code, unreachable_patterns)]
6239        fn _type_assertion(
6240            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6241        ) {
6242            match _t {
6243                alloy_sol_types::private::AssertTypeEq::<
6244                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6245                >(_) => {}
6246            }
6247        }
6248        #[automatically_derived]
6249        #[doc(hidden)]
6250        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6251            fn from(value: OwnableInvalidOwner) -> Self {
6252                (value.owner,)
6253            }
6254        }
6255        #[automatically_derived]
6256        #[doc(hidden)]
6257        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6258            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6259                Self { owner: tuple.0 }
6260            }
6261        }
6262        #[automatically_derived]
6263        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6264            type Parameters<'a> = UnderlyingSolTuple<'a>;
6265            type Token<'a> = <Self::Parameters<
6266                'a,
6267            > as alloy_sol_types::SolType>::Token<'a>;
6268            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6269            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6270            #[inline]
6271            fn new<'a>(
6272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6273            ) -> Self {
6274                tuple.into()
6275            }
6276            #[inline]
6277            fn tokenize(&self) -> Self::Token<'_> {
6278                (
6279                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6280                        &self.owner,
6281                    ),
6282                )
6283            }
6284            #[inline]
6285            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6286                Self::abi_decode_raw_with_config(
6287                    data,
6288                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6289                )
6290            }
6291        }
6292    };
6293    #[derive(serde::Serialize, serde::Deserialize)]
6294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6295    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6296```solidity
6297error OwnableUnauthorizedAccount(address account);
6298```*/
6299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6300    #[derive(Clone)]
6301    pub struct OwnableUnauthorizedAccount {
6302        #[allow(missing_docs)]
6303        pub account: alloy::sol_types::private::Address,
6304    }
6305    #[allow(
6306        non_camel_case_types,
6307        non_snake_case,
6308        clippy::pub_underscore_fields,
6309        clippy::style
6310    )]
6311    const _: () = {
6312        use alloy::sol_types as alloy_sol_types;
6313        #[doc(hidden)]
6314        #[allow(dead_code)]
6315        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6316        #[doc(hidden)]
6317        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6318        #[cfg(test)]
6319        #[allow(dead_code, unreachable_patterns)]
6320        fn _type_assertion(
6321            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6322        ) {
6323            match _t {
6324                alloy_sol_types::private::AssertTypeEq::<
6325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6326                >(_) => {}
6327            }
6328        }
6329        #[automatically_derived]
6330        #[doc(hidden)]
6331        impl ::core::convert::From<OwnableUnauthorizedAccount>
6332        for UnderlyingRustTuple<'_> {
6333            fn from(value: OwnableUnauthorizedAccount) -> Self {
6334                (value.account,)
6335            }
6336        }
6337        #[automatically_derived]
6338        #[doc(hidden)]
6339        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6340        for OwnableUnauthorizedAccount {
6341            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6342                Self { account: tuple.0 }
6343            }
6344        }
6345        #[automatically_derived]
6346        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6347            type Parameters<'a> = UnderlyingSolTuple<'a>;
6348            type Token<'a> = <Self::Parameters<
6349                'a,
6350            > as alloy_sol_types::SolType>::Token<'a>;
6351            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6352            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6353            #[inline]
6354            fn new<'a>(
6355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6356            ) -> Self {
6357                tuple.into()
6358            }
6359            #[inline]
6360            fn tokenize(&self) -> Self::Token<'_> {
6361                (
6362                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6363                        &self.account,
6364                    ),
6365                )
6366            }
6367            #[inline]
6368            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6369                Self::abi_decode_raw_with_config(
6370                    data,
6371                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6372                )
6373            }
6374        }
6375    };
6376    #[derive(serde::Serialize, serde::Deserialize)]
6377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6378    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6379```solidity
6380error OwnershipCannotBeRenounced();
6381```*/
6382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6383    #[derive(Clone)]
6384    pub struct OwnershipCannotBeRenounced;
6385    #[allow(
6386        non_camel_case_types,
6387        non_snake_case,
6388        clippy::pub_underscore_fields,
6389        clippy::style
6390    )]
6391    const _: () = {
6392        use alloy::sol_types as alloy_sol_types;
6393        #[doc(hidden)]
6394        #[allow(dead_code)]
6395        type UnderlyingSolTuple<'a> = ();
6396        #[doc(hidden)]
6397        type UnderlyingRustTuple<'a> = ();
6398        #[cfg(test)]
6399        #[allow(dead_code, unreachable_patterns)]
6400        fn _type_assertion(
6401            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6402        ) {
6403            match _t {
6404                alloy_sol_types::private::AssertTypeEq::<
6405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6406                >(_) => {}
6407            }
6408        }
6409        #[automatically_derived]
6410        #[doc(hidden)]
6411        impl ::core::convert::From<OwnershipCannotBeRenounced>
6412        for UnderlyingRustTuple<'_> {
6413            fn from(value: OwnershipCannotBeRenounced) -> Self {
6414                ()
6415            }
6416        }
6417        #[automatically_derived]
6418        #[doc(hidden)]
6419        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6420        for OwnershipCannotBeRenounced {
6421            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6422                Self
6423            }
6424        }
6425        #[automatically_derived]
6426        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6427            type Parameters<'a> = UnderlyingSolTuple<'a>;
6428            type Token<'a> = <Self::Parameters<
6429                'a,
6430            > as alloy_sol_types::SolType>::Token<'a>;
6431            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6432            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6433            #[inline]
6434            fn new<'a>(
6435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6436            ) -> Self {
6437                tuple.into()
6438            }
6439            #[inline]
6440            fn tokenize(&self) -> Self::Token<'_> {
6441                ()
6442            }
6443            #[inline]
6444            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6445                Self::abi_decode_raw_with_config(
6446                    data,
6447                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6448                )
6449            }
6450        }
6451    };
6452    #[derive(serde::Serialize, serde::Deserialize)]
6453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6454    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6455```solidity
6456error ProverNotPermissioned();
6457```*/
6458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6459    #[derive(Clone)]
6460    pub struct ProverNotPermissioned;
6461    #[allow(
6462        non_camel_case_types,
6463        non_snake_case,
6464        clippy::pub_underscore_fields,
6465        clippy::style
6466    )]
6467    const _: () = {
6468        use alloy::sol_types as alloy_sol_types;
6469        #[doc(hidden)]
6470        #[allow(dead_code)]
6471        type UnderlyingSolTuple<'a> = ();
6472        #[doc(hidden)]
6473        type UnderlyingRustTuple<'a> = ();
6474        #[cfg(test)]
6475        #[allow(dead_code, unreachable_patterns)]
6476        fn _type_assertion(
6477            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6478        ) {
6479            match _t {
6480                alloy_sol_types::private::AssertTypeEq::<
6481                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6482                >(_) => {}
6483            }
6484        }
6485        #[automatically_derived]
6486        #[doc(hidden)]
6487        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6488            fn from(value: ProverNotPermissioned) -> Self {
6489                ()
6490            }
6491        }
6492        #[automatically_derived]
6493        #[doc(hidden)]
6494        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6495            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6496                Self
6497            }
6498        }
6499        #[automatically_derived]
6500        impl alloy_sol_types::SolError for ProverNotPermissioned {
6501            type Parameters<'a> = UnderlyingSolTuple<'a>;
6502            type Token<'a> = <Self::Parameters<
6503                'a,
6504            > as alloy_sol_types::SolType>::Token<'a>;
6505            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6506            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6507            #[inline]
6508            fn new<'a>(
6509                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6510            ) -> Self {
6511                tuple.into()
6512            }
6513            #[inline]
6514            fn tokenize(&self) -> Self::Token<'_> {
6515                ()
6516            }
6517            #[inline]
6518            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6519                Self::abi_decode_raw_with_config(
6520                    data,
6521                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6522                )
6523            }
6524        }
6525    };
6526    #[derive(serde::Serialize, serde::Deserialize)]
6527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6528    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6529```solidity
6530error UUPSUnauthorizedCallContext();
6531```*/
6532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6533    #[derive(Clone)]
6534    pub struct UUPSUnauthorizedCallContext;
6535    #[allow(
6536        non_camel_case_types,
6537        non_snake_case,
6538        clippy::pub_underscore_fields,
6539        clippy::style
6540    )]
6541    const _: () = {
6542        use alloy::sol_types as alloy_sol_types;
6543        #[doc(hidden)]
6544        #[allow(dead_code)]
6545        type UnderlyingSolTuple<'a> = ();
6546        #[doc(hidden)]
6547        type UnderlyingRustTuple<'a> = ();
6548        #[cfg(test)]
6549        #[allow(dead_code, unreachable_patterns)]
6550        fn _type_assertion(
6551            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6552        ) {
6553            match _t {
6554                alloy_sol_types::private::AssertTypeEq::<
6555                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6556                >(_) => {}
6557            }
6558        }
6559        #[automatically_derived]
6560        #[doc(hidden)]
6561        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6562        for UnderlyingRustTuple<'_> {
6563            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6564                ()
6565            }
6566        }
6567        #[automatically_derived]
6568        #[doc(hidden)]
6569        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6570        for UUPSUnauthorizedCallContext {
6571            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6572                Self
6573            }
6574        }
6575        #[automatically_derived]
6576        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6577            type Parameters<'a> = UnderlyingSolTuple<'a>;
6578            type Token<'a> = <Self::Parameters<
6579                'a,
6580            > as alloy_sol_types::SolType>::Token<'a>;
6581            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6582            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6583            #[inline]
6584            fn new<'a>(
6585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6586            ) -> Self {
6587                tuple.into()
6588            }
6589            #[inline]
6590            fn tokenize(&self) -> Self::Token<'_> {
6591                ()
6592            }
6593            #[inline]
6594            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6595                Self::abi_decode_raw_with_config(
6596                    data,
6597                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6598                )
6599            }
6600        }
6601    };
6602    #[derive(serde::Serialize, serde::Deserialize)]
6603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6604    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6605```solidity
6606error UUPSUnsupportedProxiableUUID(bytes32 slot);
6607```*/
6608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6609    #[derive(Clone)]
6610    pub struct UUPSUnsupportedProxiableUUID {
6611        #[allow(missing_docs)]
6612        pub slot: alloy::sol_types::private::FixedBytes<32>,
6613    }
6614    #[allow(
6615        non_camel_case_types,
6616        non_snake_case,
6617        clippy::pub_underscore_fields,
6618        clippy::style
6619    )]
6620    const _: () = {
6621        use alloy::sol_types as alloy_sol_types;
6622        #[doc(hidden)]
6623        #[allow(dead_code)]
6624        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6625        #[doc(hidden)]
6626        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6627        #[cfg(test)]
6628        #[allow(dead_code, unreachable_patterns)]
6629        fn _type_assertion(
6630            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6631        ) {
6632            match _t {
6633                alloy_sol_types::private::AssertTypeEq::<
6634                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6635                >(_) => {}
6636            }
6637        }
6638        #[automatically_derived]
6639        #[doc(hidden)]
6640        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6641        for UnderlyingRustTuple<'_> {
6642            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6643                (value.slot,)
6644            }
6645        }
6646        #[automatically_derived]
6647        #[doc(hidden)]
6648        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6649        for UUPSUnsupportedProxiableUUID {
6650            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6651                Self { slot: tuple.0 }
6652            }
6653        }
6654        #[automatically_derived]
6655        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6656            type Parameters<'a> = UnderlyingSolTuple<'a>;
6657            type Token<'a> = <Self::Parameters<
6658                'a,
6659            > as alloy_sol_types::SolType>::Token<'a>;
6660            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6661            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6662            #[inline]
6663            fn new<'a>(
6664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6665            ) -> Self {
6666                tuple.into()
6667            }
6668            #[inline]
6669            fn tokenize(&self) -> Self::Token<'_> {
6670                (
6671                    <alloy::sol_types::sol_data::FixedBytes<
6672                        32,
6673                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6674                )
6675            }
6676            #[inline]
6677            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6678                Self::abi_decode_raw_with_config(
6679                    data,
6680                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6681                )
6682            }
6683        }
6684    };
6685    #[derive(serde::Serialize, serde::Deserialize)]
6686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6687    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6688```solidity
6689error WrongStakeTableUsed();
6690```*/
6691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6692    #[derive(Clone)]
6693    pub struct WrongStakeTableUsed;
6694    #[allow(
6695        non_camel_case_types,
6696        non_snake_case,
6697        clippy::pub_underscore_fields,
6698        clippy::style
6699    )]
6700    const _: () = {
6701        use alloy::sol_types as alloy_sol_types;
6702        #[doc(hidden)]
6703        #[allow(dead_code)]
6704        type UnderlyingSolTuple<'a> = ();
6705        #[doc(hidden)]
6706        type UnderlyingRustTuple<'a> = ();
6707        #[cfg(test)]
6708        #[allow(dead_code, unreachable_patterns)]
6709        fn _type_assertion(
6710            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6711        ) {
6712            match _t {
6713                alloy_sol_types::private::AssertTypeEq::<
6714                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6715                >(_) => {}
6716            }
6717        }
6718        #[automatically_derived]
6719        #[doc(hidden)]
6720        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6721            fn from(value: WrongStakeTableUsed) -> Self {
6722                ()
6723            }
6724        }
6725        #[automatically_derived]
6726        #[doc(hidden)]
6727        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6729                Self
6730            }
6731        }
6732        #[automatically_derived]
6733        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6734            type Parameters<'a> = UnderlyingSolTuple<'a>;
6735            type Token<'a> = <Self::Parameters<
6736                'a,
6737            > as alloy_sol_types::SolType>::Token<'a>;
6738            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6739            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6740            #[inline]
6741            fn new<'a>(
6742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6743            ) -> Self {
6744                tuple.into()
6745            }
6746            #[inline]
6747            fn tokenize(&self) -> Self::Token<'_> {
6748                ()
6749            }
6750            #[inline]
6751            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6752                Self::abi_decode_raw_with_config(
6753                    data,
6754                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6755                )
6756            }
6757        }
6758    };
6759    #[derive(serde::Serialize, serde::Deserialize)]
6760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6761    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6762```solidity
6763event Initialized(uint64 version);
6764```*/
6765    #[allow(
6766        non_camel_case_types,
6767        non_snake_case,
6768        clippy::pub_underscore_fields,
6769        clippy::style
6770    )]
6771    #[derive(Clone)]
6772    pub struct Initialized {
6773        #[allow(missing_docs)]
6774        pub version: u64,
6775    }
6776    #[allow(
6777        non_camel_case_types,
6778        non_snake_case,
6779        clippy::pub_underscore_fields,
6780        clippy::style
6781    )]
6782    const _: () = {
6783        use alloy::sol_types as alloy_sol_types;
6784        #[automatically_derived]
6785        impl alloy_sol_types::SolEvent for Initialized {
6786            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6787            type DataToken<'a> = <Self::DataTuple<
6788                'a,
6789            > as alloy_sol_types::SolType>::Token<'a>;
6790            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6791            const SIGNATURE: &'static str = "Initialized(uint64)";
6792            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6793                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6794                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6795                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6796            ]);
6797            const ANONYMOUS: bool = false;
6798            #[allow(unused_variables)]
6799            #[inline]
6800            fn new(
6801                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6802                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6803            ) -> Self {
6804                Self { version: data.0 }
6805            }
6806            #[inline]
6807            fn check_signature(
6808                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6809            ) -> alloy_sol_types::Result<()> {
6810                if topics.0 != Self::SIGNATURE_HASH {
6811                    return Err(
6812                        alloy_sol_types::Error::invalid_event_signature_hash(
6813                            Self::SIGNATURE,
6814                            topics.0,
6815                            Self::SIGNATURE_HASH,
6816                        ),
6817                    );
6818                }
6819                Ok(())
6820            }
6821            #[inline]
6822            fn tokenize_body(&self) -> Self::DataToken<'_> {
6823                (
6824                    <alloy::sol_types::sol_data::Uint<
6825                        64,
6826                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6827                )
6828            }
6829            #[inline]
6830            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6831                (Self::SIGNATURE_HASH.into(),)
6832            }
6833            #[inline]
6834            fn encode_topics_raw(
6835                &self,
6836                out: &mut [alloy_sol_types::abi::token::WordToken],
6837            ) -> alloy_sol_types::Result<()> {
6838                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6839                    return Err(alloy_sol_types::Error::Overrun);
6840                }
6841                out[0usize] = alloy_sol_types::abi::token::WordToken(
6842                    Self::SIGNATURE_HASH,
6843                );
6844                Ok(())
6845            }
6846        }
6847        #[automatically_derived]
6848        impl alloy_sol_types::private::IntoLogData for Initialized {
6849            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6850                From::from(self)
6851            }
6852            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6853                From::from(&self)
6854            }
6855        }
6856        #[automatically_derived]
6857        impl From<&Initialized> for alloy_sol_types::private::LogData {
6858            #[inline]
6859            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6860                alloy_sol_types::SolEvent::encode_log_data(this)
6861            }
6862        }
6863    };
6864    #[derive(serde::Serialize, serde::Deserialize)]
6865    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6866    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6867```solidity
6868event NewEpoch(uint64 epoch);
6869```*/
6870    #[allow(
6871        non_camel_case_types,
6872        non_snake_case,
6873        clippy::pub_underscore_fields,
6874        clippy::style
6875    )]
6876    #[derive(Clone)]
6877    pub struct NewEpoch {
6878        #[allow(missing_docs)]
6879        pub epoch: u64,
6880    }
6881    #[allow(
6882        non_camel_case_types,
6883        non_snake_case,
6884        clippy::pub_underscore_fields,
6885        clippy::style
6886    )]
6887    const _: () = {
6888        use alloy::sol_types as alloy_sol_types;
6889        #[automatically_derived]
6890        impl alloy_sol_types::SolEvent for NewEpoch {
6891            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6892            type DataToken<'a> = <Self::DataTuple<
6893                'a,
6894            > as alloy_sol_types::SolType>::Token<'a>;
6895            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6896            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6897            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6898                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6899                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6900                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6901            ]);
6902            const ANONYMOUS: bool = false;
6903            #[allow(unused_variables)]
6904            #[inline]
6905            fn new(
6906                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6907                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6908            ) -> Self {
6909                Self { epoch: data.0 }
6910            }
6911            #[inline]
6912            fn check_signature(
6913                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6914            ) -> alloy_sol_types::Result<()> {
6915                if topics.0 != Self::SIGNATURE_HASH {
6916                    return Err(
6917                        alloy_sol_types::Error::invalid_event_signature_hash(
6918                            Self::SIGNATURE,
6919                            topics.0,
6920                            Self::SIGNATURE_HASH,
6921                        ),
6922                    );
6923                }
6924                Ok(())
6925            }
6926            #[inline]
6927            fn tokenize_body(&self) -> Self::DataToken<'_> {
6928                (
6929                    <alloy::sol_types::sol_data::Uint<
6930                        64,
6931                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6932                )
6933            }
6934            #[inline]
6935            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6936                (Self::SIGNATURE_HASH.into(),)
6937            }
6938            #[inline]
6939            fn encode_topics_raw(
6940                &self,
6941                out: &mut [alloy_sol_types::abi::token::WordToken],
6942            ) -> alloy_sol_types::Result<()> {
6943                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6944                    return Err(alloy_sol_types::Error::Overrun);
6945                }
6946                out[0usize] = alloy_sol_types::abi::token::WordToken(
6947                    Self::SIGNATURE_HASH,
6948                );
6949                Ok(())
6950            }
6951        }
6952        #[automatically_derived]
6953        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6954            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6955                From::from(self)
6956            }
6957            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6958                From::from(&self)
6959            }
6960        }
6961        #[automatically_derived]
6962        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6963            #[inline]
6964            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6965                alloy_sol_types::SolEvent::encode_log_data(this)
6966            }
6967        }
6968    };
6969    #[derive(serde::Serialize, serde::Deserialize)]
6970    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6971    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6972```solidity
6973event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6974```*/
6975    #[allow(
6976        non_camel_case_types,
6977        non_snake_case,
6978        clippy::pub_underscore_fields,
6979        clippy::style
6980    )]
6981    #[derive(Clone)]
6982    pub struct NewState {
6983        #[allow(missing_docs)]
6984        pub viewNum: u64,
6985        #[allow(missing_docs)]
6986        pub blockHeight: u64,
6987        #[allow(missing_docs)]
6988        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6989    }
6990    #[allow(
6991        non_camel_case_types,
6992        non_snake_case,
6993        clippy::pub_underscore_fields,
6994        clippy::style
6995    )]
6996    const _: () = {
6997        use alloy::sol_types as alloy_sol_types;
6998        #[automatically_derived]
6999        impl alloy_sol_types::SolEvent for NewState {
7000            type DataTuple<'a> = (BN254::ScalarField,);
7001            type DataToken<'a> = <Self::DataTuple<
7002                'a,
7003            > as alloy_sol_types::SolType>::Token<'a>;
7004            type TopicList = (
7005                alloy_sol_types::sol_data::FixedBytes<32>,
7006                alloy::sol_types::sol_data::Uint<64>,
7007                alloy::sol_types::sol_data::Uint<64>,
7008            );
7009            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7010            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7011                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7012                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7013                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7014            ]);
7015            const ANONYMOUS: bool = false;
7016            #[allow(unused_variables)]
7017            #[inline]
7018            fn new(
7019                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7020                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7021            ) -> Self {
7022                Self {
7023                    viewNum: topics.1,
7024                    blockHeight: topics.2,
7025                    blockCommRoot: data.0,
7026                }
7027            }
7028            #[inline]
7029            fn check_signature(
7030                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7031            ) -> alloy_sol_types::Result<()> {
7032                if topics.0 != Self::SIGNATURE_HASH {
7033                    return Err(
7034                        alloy_sol_types::Error::invalid_event_signature_hash(
7035                            Self::SIGNATURE,
7036                            topics.0,
7037                            Self::SIGNATURE_HASH,
7038                        ),
7039                    );
7040                }
7041                Ok(())
7042            }
7043            #[inline]
7044            fn tokenize_body(&self) -> Self::DataToken<'_> {
7045                (
7046                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7047                        &self.blockCommRoot,
7048                    ),
7049                )
7050            }
7051            #[inline]
7052            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7053                (
7054                    Self::SIGNATURE_HASH.into(),
7055                    self.viewNum.clone(),
7056                    self.blockHeight.clone(),
7057                )
7058            }
7059            #[inline]
7060            fn encode_topics_raw(
7061                &self,
7062                out: &mut [alloy_sol_types::abi::token::WordToken],
7063            ) -> alloy_sol_types::Result<()> {
7064                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7065                    return Err(alloy_sol_types::Error::Overrun);
7066                }
7067                out[0usize] = alloy_sol_types::abi::token::WordToken(
7068                    Self::SIGNATURE_HASH,
7069                );
7070                out[1usize] = <alloy::sol_types::sol_data::Uint<
7071                    64,
7072                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7073                out[2usize] = <alloy::sol_types::sol_data::Uint<
7074                    64,
7075                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7076                Ok(())
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::private::IntoLogData for NewState {
7081            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7082                From::from(self)
7083            }
7084            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7085                From::from(&self)
7086            }
7087        }
7088        #[automatically_derived]
7089        impl From<&NewState> for alloy_sol_types::private::LogData {
7090            #[inline]
7091            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7092                alloy_sol_types::SolEvent::encode_log_data(this)
7093            }
7094        }
7095    };
7096    #[derive(serde::Serialize, serde::Deserialize)]
7097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7098    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7099```solidity
7100event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7101```*/
7102    #[allow(
7103        non_camel_case_types,
7104        non_snake_case,
7105        clippy::pub_underscore_fields,
7106        clippy::style
7107    )]
7108    #[derive(Clone)]
7109    pub struct OwnershipTransferred {
7110        #[allow(missing_docs)]
7111        pub previousOwner: alloy::sol_types::private::Address,
7112        #[allow(missing_docs)]
7113        pub newOwner: alloy::sol_types::private::Address,
7114    }
7115    #[allow(
7116        non_camel_case_types,
7117        non_snake_case,
7118        clippy::pub_underscore_fields,
7119        clippy::style
7120    )]
7121    const _: () = {
7122        use alloy::sol_types as alloy_sol_types;
7123        #[automatically_derived]
7124        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7125            type DataTuple<'a> = ();
7126            type DataToken<'a> = <Self::DataTuple<
7127                'a,
7128            > as alloy_sol_types::SolType>::Token<'a>;
7129            type TopicList = (
7130                alloy_sol_types::sol_data::FixedBytes<32>,
7131                alloy::sol_types::sol_data::Address,
7132                alloy::sol_types::sol_data::Address,
7133            );
7134            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7135            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7136                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7137                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7138                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7139            ]);
7140            const ANONYMOUS: bool = false;
7141            #[allow(unused_variables)]
7142            #[inline]
7143            fn new(
7144                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7145                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7146            ) -> Self {
7147                Self {
7148                    previousOwner: topics.1,
7149                    newOwner: topics.2,
7150                }
7151            }
7152            #[inline]
7153            fn check_signature(
7154                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7155            ) -> alloy_sol_types::Result<()> {
7156                if topics.0 != Self::SIGNATURE_HASH {
7157                    return Err(
7158                        alloy_sol_types::Error::invalid_event_signature_hash(
7159                            Self::SIGNATURE,
7160                            topics.0,
7161                            Self::SIGNATURE_HASH,
7162                        ),
7163                    );
7164                }
7165                Ok(())
7166            }
7167            #[inline]
7168            fn tokenize_body(&self) -> Self::DataToken<'_> {
7169                ()
7170            }
7171            #[inline]
7172            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7173                (
7174                    Self::SIGNATURE_HASH.into(),
7175                    self.previousOwner.clone(),
7176                    self.newOwner.clone(),
7177                )
7178            }
7179            #[inline]
7180            fn encode_topics_raw(
7181                &self,
7182                out: &mut [alloy_sol_types::abi::token::WordToken],
7183            ) -> alloy_sol_types::Result<()> {
7184                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7185                    return Err(alloy_sol_types::Error::Overrun);
7186                }
7187                out[0usize] = alloy_sol_types::abi::token::WordToken(
7188                    Self::SIGNATURE_HASH,
7189                );
7190                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7191                    &self.previousOwner,
7192                );
7193                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7194                    &self.newOwner,
7195                );
7196                Ok(())
7197            }
7198        }
7199        #[automatically_derived]
7200        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7201            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7202                From::from(self)
7203            }
7204            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7205                From::from(&self)
7206            }
7207        }
7208        #[automatically_derived]
7209        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7210            #[inline]
7211            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7212                alloy_sol_types::SolEvent::encode_log_data(this)
7213            }
7214        }
7215    };
7216    #[derive(serde::Serialize, serde::Deserialize)]
7217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7218    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7219```solidity
7220event PermissionedProverNotRequired();
7221```*/
7222    #[allow(
7223        non_camel_case_types,
7224        non_snake_case,
7225        clippy::pub_underscore_fields,
7226        clippy::style
7227    )]
7228    #[derive(Clone)]
7229    pub struct PermissionedProverNotRequired;
7230    #[allow(
7231        non_camel_case_types,
7232        non_snake_case,
7233        clippy::pub_underscore_fields,
7234        clippy::style
7235    )]
7236    const _: () = {
7237        use alloy::sol_types as alloy_sol_types;
7238        #[automatically_derived]
7239        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7240            type DataTuple<'a> = ();
7241            type DataToken<'a> = <Self::DataTuple<
7242                'a,
7243            > as alloy_sol_types::SolType>::Token<'a>;
7244            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7245            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7246            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7247                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7248                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7249                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7250            ]);
7251            const ANONYMOUS: bool = false;
7252            #[allow(unused_variables)]
7253            #[inline]
7254            fn new(
7255                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7256                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7257            ) -> Self {
7258                Self {}
7259            }
7260            #[inline]
7261            fn check_signature(
7262                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7263            ) -> alloy_sol_types::Result<()> {
7264                if topics.0 != Self::SIGNATURE_HASH {
7265                    return Err(
7266                        alloy_sol_types::Error::invalid_event_signature_hash(
7267                            Self::SIGNATURE,
7268                            topics.0,
7269                            Self::SIGNATURE_HASH,
7270                        ),
7271                    );
7272                }
7273                Ok(())
7274            }
7275            #[inline]
7276            fn tokenize_body(&self) -> Self::DataToken<'_> {
7277                ()
7278            }
7279            #[inline]
7280            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7281                (Self::SIGNATURE_HASH.into(),)
7282            }
7283            #[inline]
7284            fn encode_topics_raw(
7285                &self,
7286                out: &mut [alloy_sol_types::abi::token::WordToken],
7287            ) -> alloy_sol_types::Result<()> {
7288                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7289                    return Err(alloy_sol_types::Error::Overrun);
7290                }
7291                out[0usize] = alloy_sol_types::abi::token::WordToken(
7292                    Self::SIGNATURE_HASH,
7293                );
7294                Ok(())
7295            }
7296        }
7297        #[automatically_derived]
7298        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7299            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7300                From::from(self)
7301            }
7302            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7303                From::from(&self)
7304            }
7305        }
7306        #[automatically_derived]
7307        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7308            #[inline]
7309            fn from(
7310                this: &PermissionedProverNotRequired,
7311            ) -> alloy_sol_types::private::LogData {
7312                alloy_sol_types::SolEvent::encode_log_data(this)
7313            }
7314        }
7315    };
7316    #[derive(serde::Serialize, serde::Deserialize)]
7317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7318    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7319```solidity
7320event PermissionedProverRequired(address permissionedProver);
7321```*/
7322    #[allow(
7323        non_camel_case_types,
7324        non_snake_case,
7325        clippy::pub_underscore_fields,
7326        clippy::style
7327    )]
7328    #[derive(Clone)]
7329    pub struct PermissionedProverRequired {
7330        #[allow(missing_docs)]
7331        pub permissionedProver: alloy::sol_types::private::Address,
7332    }
7333    #[allow(
7334        non_camel_case_types,
7335        non_snake_case,
7336        clippy::pub_underscore_fields,
7337        clippy::style
7338    )]
7339    const _: () = {
7340        use alloy::sol_types as alloy_sol_types;
7341        #[automatically_derived]
7342        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7343            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7344            type DataToken<'a> = <Self::DataTuple<
7345                'a,
7346            > as alloy_sol_types::SolType>::Token<'a>;
7347            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7348            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7349            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7350                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7351                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7352                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7353            ]);
7354            const ANONYMOUS: bool = false;
7355            #[allow(unused_variables)]
7356            #[inline]
7357            fn new(
7358                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7359                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7360            ) -> Self {
7361                Self { permissionedProver: data.0 }
7362            }
7363            #[inline]
7364            fn check_signature(
7365                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7366            ) -> alloy_sol_types::Result<()> {
7367                if topics.0 != Self::SIGNATURE_HASH {
7368                    return Err(
7369                        alloy_sol_types::Error::invalid_event_signature_hash(
7370                            Self::SIGNATURE,
7371                            topics.0,
7372                            Self::SIGNATURE_HASH,
7373                        ),
7374                    );
7375                }
7376                Ok(())
7377            }
7378            #[inline]
7379            fn tokenize_body(&self) -> Self::DataToken<'_> {
7380                (
7381                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7382                        &self.permissionedProver,
7383                    ),
7384                )
7385            }
7386            #[inline]
7387            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7388                (Self::SIGNATURE_HASH.into(),)
7389            }
7390            #[inline]
7391            fn encode_topics_raw(
7392                &self,
7393                out: &mut [alloy_sol_types::abi::token::WordToken],
7394            ) -> alloy_sol_types::Result<()> {
7395                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7396                    return Err(alloy_sol_types::Error::Overrun);
7397                }
7398                out[0usize] = alloy_sol_types::abi::token::WordToken(
7399                    Self::SIGNATURE_HASH,
7400                );
7401                Ok(())
7402            }
7403        }
7404        #[automatically_derived]
7405        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7406            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7407                From::from(self)
7408            }
7409            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7410                From::from(&self)
7411            }
7412        }
7413        #[automatically_derived]
7414        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7415            #[inline]
7416            fn from(
7417                this: &PermissionedProverRequired,
7418            ) -> alloy_sol_types::private::LogData {
7419                alloy_sol_types::SolEvent::encode_log_data(this)
7420            }
7421        }
7422    };
7423    #[derive(serde::Serialize, serde::Deserialize)]
7424    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7425    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7426```solidity
7427event Upgrade(address implementation);
7428```*/
7429    #[allow(
7430        non_camel_case_types,
7431        non_snake_case,
7432        clippy::pub_underscore_fields,
7433        clippy::style
7434    )]
7435    #[derive(Clone)]
7436    pub struct Upgrade {
7437        #[allow(missing_docs)]
7438        pub implementation: alloy::sol_types::private::Address,
7439    }
7440    #[allow(
7441        non_camel_case_types,
7442        non_snake_case,
7443        clippy::pub_underscore_fields,
7444        clippy::style
7445    )]
7446    const _: () = {
7447        use alloy::sol_types as alloy_sol_types;
7448        #[automatically_derived]
7449        impl alloy_sol_types::SolEvent for Upgrade {
7450            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7451            type DataToken<'a> = <Self::DataTuple<
7452                'a,
7453            > as alloy_sol_types::SolType>::Token<'a>;
7454            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7455            const SIGNATURE: &'static str = "Upgrade(address)";
7456            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7457                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7458                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7459                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7460            ]);
7461            const ANONYMOUS: bool = false;
7462            #[allow(unused_variables)]
7463            #[inline]
7464            fn new(
7465                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7466                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7467            ) -> Self {
7468                Self { implementation: data.0 }
7469            }
7470            #[inline]
7471            fn check_signature(
7472                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7473            ) -> alloy_sol_types::Result<()> {
7474                if topics.0 != Self::SIGNATURE_HASH {
7475                    return Err(
7476                        alloy_sol_types::Error::invalid_event_signature_hash(
7477                            Self::SIGNATURE,
7478                            topics.0,
7479                            Self::SIGNATURE_HASH,
7480                        ),
7481                    );
7482                }
7483                Ok(())
7484            }
7485            #[inline]
7486            fn tokenize_body(&self) -> Self::DataToken<'_> {
7487                (
7488                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7489                        &self.implementation,
7490                    ),
7491                )
7492            }
7493            #[inline]
7494            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7495                (Self::SIGNATURE_HASH.into(),)
7496            }
7497            #[inline]
7498            fn encode_topics_raw(
7499                &self,
7500                out: &mut [alloy_sol_types::abi::token::WordToken],
7501            ) -> alloy_sol_types::Result<()> {
7502                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7503                    return Err(alloy_sol_types::Error::Overrun);
7504                }
7505                out[0usize] = alloy_sol_types::abi::token::WordToken(
7506                    Self::SIGNATURE_HASH,
7507                );
7508                Ok(())
7509            }
7510        }
7511        #[automatically_derived]
7512        impl alloy_sol_types::private::IntoLogData for Upgrade {
7513            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7514                From::from(self)
7515            }
7516            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7517                From::from(&self)
7518            }
7519        }
7520        #[automatically_derived]
7521        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7522            #[inline]
7523            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7524                alloy_sol_types::SolEvent::encode_log_data(this)
7525            }
7526        }
7527    };
7528    #[derive(serde::Serialize, serde::Deserialize)]
7529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7530    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7531```solidity
7532event Upgraded(address indexed implementation);
7533```*/
7534    #[allow(
7535        non_camel_case_types,
7536        non_snake_case,
7537        clippy::pub_underscore_fields,
7538        clippy::style
7539    )]
7540    #[derive(Clone)]
7541    pub struct Upgraded {
7542        #[allow(missing_docs)]
7543        pub implementation: alloy::sol_types::private::Address,
7544    }
7545    #[allow(
7546        non_camel_case_types,
7547        non_snake_case,
7548        clippy::pub_underscore_fields,
7549        clippy::style
7550    )]
7551    const _: () = {
7552        use alloy::sol_types as alloy_sol_types;
7553        #[automatically_derived]
7554        impl alloy_sol_types::SolEvent for Upgraded {
7555            type DataTuple<'a> = ();
7556            type DataToken<'a> = <Self::DataTuple<
7557                'a,
7558            > as alloy_sol_types::SolType>::Token<'a>;
7559            type TopicList = (
7560                alloy_sol_types::sol_data::FixedBytes<32>,
7561                alloy::sol_types::sol_data::Address,
7562            );
7563            const SIGNATURE: &'static str = "Upgraded(address)";
7564            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7565                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7566                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7567                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7568            ]);
7569            const ANONYMOUS: bool = false;
7570            #[allow(unused_variables)]
7571            #[inline]
7572            fn new(
7573                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7574                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7575            ) -> Self {
7576                Self { implementation: topics.1 }
7577            }
7578            #[inline]
7579            fn check_signature(
7580                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7581            ) -> alloy_sol_types::Result<()> {
7582                if topics.0 != Self::SIGNATURE_HASH {
7583                    return Err(
7584                        alloy_sol_types::Error::invalid_event_signature_hash(
7585                            Self::SIGNATURE,
7586                            topics.0,
7587                            Self::SIGNATURE_HASH,
7588                        ),
7589                    );
7590                }
7591                Ok(())
7592            }
7593            #[inline]
7594            fn tokenize_body(&self) -> Self::DataToken<'_> {
7595                ()
7596            }
7597            #[inline]
7598            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7599                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7600            }
7601            #[inline]
7602            fn encode_topics_raw(
7603                &self,
7604                out: &mut [alloy_sol_types::abi::token::WordToken],
7605            ) -> alloy_sol_types::Result<()> {
7606                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7607                    return Err(alloy_sol_types::Error::Overrun);
7608                }
7609                out[0usize] = alloy_sol_types::abi::token::WordToken(
7610                    Self::SIGNATURE_HASH,
7611                );
7612                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7613                    &self.implementation,
7614                );
7615                Ok(())
7616            }
7617        }
7618        #[automatically_derived]
7619        impl alloy_sol_types::private::IntoLogData for Upgraded {
7620            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7621                From::from(self)
7622            }
7623            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7624                From::from(&self)
7625            }
7626        }
7627        #[automatically_derived]
7628        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7629            #[inline]
7630            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7631                alloy_sol_types::SolEvent::encode_log_data(this)
7632            }
7633        }
7634    };
7635    #[derive(serde::Serialize, serde::Deserialize)]
7636    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7637    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7638```solidity
7639function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7640```*/
7641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7642    #[derive(Clone)]
7643    pub struct UPGRADE_INTERFACE_VERSIONCall;
7644    #[derive(serde::Serialize, serde::Deserialize)]
7645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7646    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7648    #[derive(Clone)]
7649    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7650        #[allow(missing_docs)]
7651        pub _0: alloy::sol_types::private::String,
7652    }
7653    #[allow(
7654        non_camel_case_types,
7655        non_snake_case,
7656        clippy::pub_underscore_fields,
7657        clippy::style
7658    )]
7659    const _: () = {
7660        use alloy::sol_types as alloy_sol_types;
7661        {
7662            #[doc(hidden)]
7663            #[allow(dead_code)]
7664            type UnderlyingSolTuple<'a> = ();
7665            #[doc(hidden)]
7666            type UnderlyingRustTuple<'a> = ();
7667            #[cfg(test)]
7668            #[allow(dead_code, unreachable_patterns)]
7669            fn _type_assertion(
7670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7671            ) {
7672                match _t {
7673                    alloy_sol_types::private::AssertTypeEq::<
7674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7675                    >(_) => {}
7676                }
7677            }
7678            #[automatically_derived]
7679            #[doc(hidden)]
7680            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7681            for UnderlyingRustTuple<'_> {
7682                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7683                    ()
7684                }
7685            }
7686            #[automatically_derived]
7687            #[doc(hidden)]
7688            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7689            for UPGRADE_INTERFACE_VERSIONCall {
7690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7691                    Self
7692                }
7693            }
7694        }
7695        {
7696            #[doc(hidden)]
7697            #[allow(dead_code)]
7698            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7699            #[doc(hidden)]
7700            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7701            #[cfg(test)]
7702            #[allow(dead_code, unreachable_patterns)]
7703            fn _type_assertion(
7704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7705            ) {
7706                match _t {
7707                    alloy_sol_types::private::AssertTypeEq::<
7708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7709                    >(_) => {}
7710                }
7711            }
7712            #[automatically_derived]
7713            #[doc(hidden)]
7714            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7715            for UnderlyingRustTuple<'_> {
7716                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7717                    (value._0,)
7718                }
7719            }
7720            #[automatically_derived]
7721            #[doc(hidden)]
7722            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7723            for UPGRADE_INTERFACE_VERSIONReturn {
7724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7725                    Self { _0: tuple.0 }
7726                }
7727            }
7728        }
7729        #[automatically_derived]
7730        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7731            type Parameters<'a> = ();
7732            type Token<'a> = <Self::Parameters<
7733                'a,
7734            > as alloy_sol_types::SolType>::Token<'a>;
7735            type Return = alloy::sol_types::private::String;
7736            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7737            type ReturnToken<'a> = <Self::ReturnTuple<
7738                'a,
7739            > as alloy_sol_types::SolType>::Token<'a>;
7740            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7741            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7742            #[inline]
7743            fn new<'a>(
7744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7745            ) -> Self {
7746                tuple.into()
7747            }
7748            #[inline]
7749            fn tokenize(&self) -> Self::Token<'_> {
7750                ()
7751            }
7752            #[inline]
7753            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7754                (
7755                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7756                        ret,
7757                    ),
7758                )
7759            }
7760            #[inline]
7761            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7762                <Self::ReturnTuple<
7763                    '_,
7764                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7765                    .map(|r| {
7766                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7767                        r._0
7768                    })
7769            }
7770            #[inline]
7771            fn abi_decode_returns_with_config(
7772                data: &[u8],
7773                config: alloy_sol_types::abi::AbiDecoderConfig,
7774            ) -> alloy_sol_types::Result<Self::Return> {
7775                <Self::ReturnTuple<
7776                    '_,
7777                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7778                        data,
7779                        config,
7780                    )
7781                    .map(|r| {
7782                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7783                        r._0
7784                    })
7785            }
7786            #[inline]
7787            fn abi_decode_returns_validate(
7788                data: &[u8],
7789            ) -> alloy_sol_types::Result<Self::Return> {
7790                Self::abi_decode_returns_with_config(
7791                    data,
7792                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7793                )
7794            }
7795        }
7796    };
7797    #[derive(serde::Serialize, serde::Deserialize)]
7798    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7799    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7800```solidity
7801function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7802```*/
7803    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7804    #[derive(Clone)]
7805    pub struct _getVkCall;
7806    #[derive(serde::Serialize, serde::Deserialize)]
7807    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7808    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7810    #[derive(Clone)]
7811    pub struct _getVkReturn {
7812        #[allow(missing_docs)]
7813        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7814    }
7815    #[allow(
7816        non_camel_case_types,
7817        non_snake_case,
7818        clippy::pub_underscore_fields,
7819        clippy::style
7820    )]
7821    const _: () = {
7822        use alloy::sol_types as alloy_sol_types;
7823        {
7824            #[doc(hidden)]
7825            #[allow(dead_code)]
7826            type UnderlyingSolTuple<'a> = ();
7827            #[doc(hidden)]
7828            type UnderlyingRustTuple<'a> = ();
7829            #[cfg(test)]
7830            #[allow(dead_code, unreachable_patterns)]
7831            fn _type_assertion(
7832                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7833            ) {
7834                match _t {
7835                    alloy_sol_types::private::AssertTypeEq::<
7836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7837                    >(_) => {}
7838                }
7839            }
7840            #[automatically_derived]
7841            #[doc(hidden)]
7842            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7843                fn from(value: _getVkCall) -> Self {
7844                    ()
7845                }
7846            }
7847            #[automatically_derived]
7848            #[doc(hidden)]
7849            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7851                    Self
7852                }
7853            }
7854        }
7855        {
7856            #[doc(hidden)]
7857            #[allow(dead_code)]
7858            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7859            #[doc(hidden)]
7860            type UnderlyingRustTuple<'a> = (
7861                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7862            );
7863            #[cfg(test)]
7864            #[allow(dead_code, unreachable_patterns)]
7865            fn _type_assertion(
7866                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7867            ) {
7868                match _t {
7869                    alloy_sol_types::private::AssertTypeEq::<
7870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7871                    >(_) => {}
7872                }
7873            }
7874            #[automatically_derived]
7875            #[doc(hidden)]
7876            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7877                fn from(value: _getVkReturn) -> Self {
7878                    (value.vk,)
7879                }
7880            }
7881            #[automatically_derived]
7882            #[doc(hidden)]
7883            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7885                    Self { vk: tuple.0 }
7886                }
7887            }
7888        }
7889        #[automatically_derived]
7890        impl alloy_sol_types::SolCall for _getVkCall {
7891            type Parameters<'a> = ();
7892            type Token<'a> = <Self::Parameters<
7893                'a,
7894            > as alloy_sol_types::SolType>::Token<'a>;
7895            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7896            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7897            type ReturnToken<'a> = <Self::ReturnTuple<
7898                'a,
7899            > as alloy_sol_types::SolType>::Token<'a>;
7900            const SIGNATURE: &'static str = "_getVk()";
7901            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7902            #[inline]
7903            fn new<'a>(
7904                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7905            ) -> Self {
7906                tuple.into()
7907            }
7908            #[inline]
7909            fn tokenize(&self) -> Self::Token<'_> {
7910                ()
7911            }
7912            #[inline]
7913            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7914                (
7915                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7916                        ret,
7917                    ),
7918                )
7919            }
7920            #[inline]
7921            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7922                <Self::ReturnTuple<
7923                    '_,
7924                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7925                    .map(|r| {
7926                        let r: _getVkReturn = r.into();
7927                        r.vk
7928                    })
7929            }
7930            #[inline]
7931            fn abi_decode_returns_with_config(
7932                data: &[u8],
7933                config: alloy_sol_types::abi::AbiDecoderConfig,
7934            ) -> alloy_sol_types::Result<Self::Return> {
7935                <Self::ReturnTuple<
7936                    '_,
7937                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7938                        data,
7939                        config,
7940                    )
7941                    .map(|r| {
7942                        let r: _getVkReturn = r.into();
7943                        r.vk
7944                    })
7945            }
7946            #[inline]
7947            fn abi_decode_returns_validate(
7948                data: &[u8],
7949            ) -> alloy_sol_types::Result<Self::Return> {
7950                Self::abi_decode_returns_with_config(
7951                    data,
7952                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7953                )
7954            }
7955        }
7956    };
7957    #[derive(serde::Serialize, serde::Deserialize)]
7958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7959    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7960```solidity
7961function blocksPerEpoch() external view returns (uint64);
7962```*/
7963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7964    #[derive(Clone)]
7965    pub struct blocksPerEpochCall;
7966    #[derive(serde::Serialize, serde::Deserialize)]
7967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7968    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7969    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7970    #[derive(Clone)]
7971    pub struct blocksPerEpochReturn {
7972        #[allow(missing_docs)]
7973        pub _0: u64,
7974    }
7975    #[allow(
7976        non_camel_case_types,
7977        non_snake_case,
7978        clippy::pub_underscore_fields,
7979        clippy::style
7980    )]
7981    const _: () = {
7982        use alloy::sol_types as alloy_sol_types;
7983        {
7984            #[doc(hidden)]
7985            #[allow(dead_code)]
7986            type UnderlyingSolTuple<'a> = ();
7987            #[doc(hidden)]
7988            type UnderlyingRustTuple<'a> = ();
7989            #[cfg(test)]
7990            #[allow(dead_code, unreachable_patterns)]
7991            fn _type_assertion(
7992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7993            ) {
7994                match _t {
7995                    alloy_sol_types::private::AssertTypeEq::<
7996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7997                    >(_) => {}
7998                }
7999            }
8000            #[automatically_derived]
8001            #[doc(hidden)]
8002            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8003                fn from(value: blocksPerEpochCall) -> Self {
8004                    ()
8005                }
8006            }
8007            #[automatically_derived]
8008            #[doc(hidden)]
8009            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8011                    Self
8012                }
8013            }
8014        }
8015        {
8016            #[doc(hidden)]
8017            #[allow(dead_code)]
8018            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8019            #[doc(hidden)]
8020            type UnderlyingRustTuple<'a> = (u64,);
8021            #[cfg(test)]
8022            #[allow(dead_code, unreachable_patterns)]
8023            fn _type_assertion(
8024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8025            ) {
8026                match _t {
8027                    alloy_sol_types::private::AssertTypeEq::<
8028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8029                    >(_) => {}
8030                }
8031            }
8032            #[automatically_derived]
8033            #[doc(hidden)]
8034            impl ::core::convert::From<blocksPerEpochReturn>
8035            for UnderlyingRustTuple<'_> {
8036                fn from(value: blocksPerEpochReturn) -> Self {
8037                    (value._0,)
8038                }
8039            }
8040            #[automatically_derived]
8041            #[doc(hidden)]
8042            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8043            for blocksPerEpochReturn {
8044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8045                    Self { _0: tuple.0 }
8046                }
8047            }
8048        }
8049        #[automatically_derived]
8050        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8051            type Parameters<'a> = ();
8052            type Token<'a> = <Self::Parameters<
8053                'a,
8054            > as alloy_sol_types::SolType>::Token<'a>;
8055            type Return = u64;
8056            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8057            type ReturnToken<'a> = <Self::ReturnTuple<
8058                'a,
8059            > as alloy_sol_types::SolType>::Token<'a>;
8060            const SIGNATURE: &'static str = "blocksPerEpoch()";
8061            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8062            #[inline]
8063            fn new<'a>(
8064                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8065            ) -> Self {
8066                tuple.into()
8067            }
8068            #[inline]
8069            fn tokenize(&self) -> Self::Token<'_> {
8070                ()
8071            }
8072            #[inline]
8073            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8074                (
8075                    <alloy::sol_types::sol_data::Uint<
8076                        64,
8077                    > as alloy_sol_types::SolType>::tokenize(ret),
8078                )
8079            }
8080            #[inline]
8081            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8082                <Self::ReturnTuple<
8083                    '_,
8084                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8085                    .map(|r| {
8086                        let r: blocksPerEpochReturn = r.into();
8087                        r._0
8088                    })
8089            }
8090            #[inline]
8091            fn abi_decode_returns_with_config(
8092                data: &[u8],
8093                config: alloy_sol_types::abi::AbiDecoderConfig,
8094            ) -> alloy_sol_types::Result<Self::Return> {
8095                <Self::ReturnTuple<
8096                    '_,
8097                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8098                        data,
8099                        config,
8100                    )
8101                    .map(|r| {
8102                        let r: blocksPerEpochReturn = r.into();
8103                        r._0
8104                    })
8105            }
8106            #[inline]
8107            fn abi_decode_returns_validate(
8108                data: &[u8],
8109            ) -> alloy_sol_types::Result<Self::Return> {
8110                Self::abi_decode_returns_with_config(
8111                    data,
8112                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8113                )
8114            }
8115        }
8116    };
8117    #[derive(serde::Serialize, serde::Deserialize)]
8118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8119    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8120```solidity
8121function currentBlockNumber() external view returns (uint256);
8122```*/
8123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8124    #[derive(Clone)]
8125    pub struct currentBlockNumberCall;
8126    #[derive(serde::Serialize, serde::Deserialize)]
8127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8128    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8130    #[derive(Clone)]
8131    pub struct currentBlockNumberReturn {
8132        #[allow(missing_docs)]
8133        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8134    }
8135    #[allow(
8136        non_camel_case_types,
8137        non_snake_case,
8138        clippy::pub_underscore_fields,
8139        clippy::style
8140    )]
8141    const _: () = {
8142        use alloy::sol_types as alloy_sol_types;
8143        {
8144            #[doc(hidden)]
8145            #[allow(dead_code)]
8146            type UnderlyingSolTuple<'a> = ();
8147            #[doc(hidden)]
8148            type UnderlyingRustTuple<'a> = ();
8149            #[cfg(test)]
8150            #[allow(dead_code, unreachable_patterns)]
8151            fn _type_assertion(
8152                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8153            ) {
8154                match _t {
8155                    alloy_sol_types::private::AssertTypeEq::<
8156                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8157                    >(_) => {}
8158                }
8159            }
8160            #[automatically_derived]
8161            #[doc(hidden)]
8162            impl ::core::convert::From<currentBlockNumberCall>
8163            for UnderlyingRustTuple<'_> {
8164                fn from(value: currentBlockNumberCall) -> Self {
8165                    ()
8166                }
8167            }
8168            #[automatically_derived]
8169            #[doc(hidden)]
8170            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8171            for currentBlockNumberCall {
8172                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8173                    Self
8174                }
8175            }
8176        }
8177        {
8178            #[doc(hidden)]
8179            #[allow(dead_code)]
8180            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8181            #[doc(hidden)]
8182            type UnderlyingRustTuple<'a> = (
8183                alloy::sol_types::private::primitives::aliases::U256,
8184            );
8185            #[cfg(test)]
8186            #[allow(dead_code, unreachable_patterns)]
8187            fn _type_assertion(
8188                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8189            ) {
8190                match _t {
8191                    alloy_sol_types::private::AssertTypeEq::<
8192                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8193                    >(_) => {}
8194                }
8195            }
8196            #[automatically_derived]
8197            #[doc(hidden)]
8198            impl ::core::convert::From<currentBlockNumberReturn>
8199            for UnderlyingRustTuple<'_> {
8200                fn from(value: currentBlockNumberReturn) -> Self {
8201                    (value._0,)
8202                }
8203            }
8204            #[automatically_derived]
8205            #[doc(hidden)]
8206            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8207            for currentBlockNumberReturn {
8208                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8209                    Self { _0: tuple.0 }
8210                }
8211            }
8212        }
8213        #[automatically_derived]
8214        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8215            type Parameters<'a> = ();
8216            type Token<'a> = <Self::Parameters<
8217                'a,
8218            > as alloy_sol_types::SolType>::Token<'a>;
8219            type Return = alloy::sol_types::private::primitives::aliases::U256;
8220            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8221            type ReturnToken<'a> = <Self::ReturnTuple<
8222                'a,
8223            > as alloy_sol_types::SolType>::Token<'a>;
8224            const SIGNATURE: &'static str = "currentBlockNumber()";
8225            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8226            #[inline]
8227            fn new<'a>(
8228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8229            ) -> Self {
8230                tuple.into()
8231            }
8232            #[inline]
8233            fn tokenize(&self) -> Self::Token<'_> {
8234                ()
8235            }
8236            #[inline]
8237            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8238                (
8239                    <alloy::sol_types::sol_data::Uint<
8240                        256,
8241                    > as alloy_sol_types::SolType>::tokenize(ret),
8242                )
8243            }
8244            #[inline]
8245            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8246                <Self::ReturnTuple<
8247                    '_,
8248                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8249                    .map(|r| {
8250                        let r: currentBlockNumberReturn = r.into();
8251                        r._0
8252                    })
8253            }
8254            #[inline]
8255            fn abi_decode_returns_with_config(
8256                data: &[u8],
8257                config: alloy_sol_types::abi::AbiDecoderConfig,
8258            ) -> alloy_sol_types::Result<Self::Return> {
8259                <Self::ReturnTuple<
8260                    '_,
8261                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8262                        data,
8263                        config,
8264                    )
8265                    .map(|r| {
8266                        let r: currentBlockNumberReturn = r.into();
8267                        r._0
8268                    })
8269            }
8270            #[inline]
8271            fn abi_decode_returns_validate(
8272                data: &[u8],
8273            ) -> alloy_sol_types::Result<Self::Return> {
8274                Self::abi_decode_returns_with_config(
8275                    data,
8276                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8277                )
8278            }
8279        }
8280    };
8281    #[derive(serde::Serialize, serde::Deserialize)]
8282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8283    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8284```solidity
8285function currentEpoch() external view returns (uint64);
8286```*/
8287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8288    #[derive(Clone)]
8289    pub struct currentEpochCall;
8290    #[derive(serde::Serialize, serde::Deserialize)]
8291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8292    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8294    #[derive(Clone)]
8295    pub struct currentEpochReturn {
8296        #[allow(missing_docs)]
8297        pub _0: u64,
8298    }
8299    #[allow(
8300        non_camel_case_types,
8301        non_snake_case,
8302        clippy::pub_underscore_fields,
8303        clippy::style
8304    )]
8305    const _: () = {
8306        use alloy::sol_types as alloy_sol_types;
8307        {
8308            #[doc(hidden)]
8309            #[allow(dead_code)]
8310            type UnderlyingSolTuple<'a> = ();
8311            #[doc(hidden)]
8312            type UnderlyingRustTuple<'a> = ();
8313            #[cfg(test)]
8314            #[allow(dead_code, unreachable_patterns)]
8315            fn _type_assertion(
8316                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8317            ) {
8318                match _t {
8319                    alloy_sol_types::private::AssertTypeEq::<
8320                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8321                    >(_) => {}
8322                }
8323            }
8324            #[automatically_derived]
8325            #[doc(hidden)]
8326            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8327                fn from(value: currentEpochCall) -> Self {
8328                    ()
8329                }
8330            }
8331            #[automatically_derived]
8332            #[doc(hidden)]
8333            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8335                    Self
8336                }
8337            }
8338        }
8339        {
8340            #[doc(hidden)]
8341            #[allow(dead_code)]
8342            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8343            #[doc(hidden)]
8344            type UnderlyingRustTuple<'a> = (u64,);
8345            #[cfg(test)]
8346            #[allow(dead_code, unreachable_patterns)]
8347            fn _type_assertion(
8348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8349            ) {
8350                match _t {
8351                    alloy_sol_types::private::AssertTypeEq::<
8352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8353                    >(_) => {}
8354                }
8355            }
8356            #[automatically_derived]
8357            #[doc(hidden)]
8358            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8359                fn from(value: currentEpochReturn) -> Self {
8360                    (value._0,)
8361                }
8362            }
8363            #[automatically_derived]
8364            #[doc(hidden)]
8365            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8366                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8367                    Self { _0: tuple.0 }
8368                }
8369            }
8370        }
8371        #[automatically_derived]
8372        impl alloy_sol_types::SolCall for currentEpochCall {
8373            type Parameters<'a> = ();
8374            type Token<'a> = <Self::Parameters<
8375                'a,
8376            > as alloy_sol_types::SolType>::Token<'a>;
8377            type Return = u64;
8378            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8379            type ReturnToken<'a> = <Self::ReturnTuple<
8380                'a,
8381            > as alloy_sol_types::SolType>::Token<'a>;
8382            const SIGNATURE: &'static str = "currentEpoch()";
8383            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8384            #[inline]
8385            fn new<'a>(
8386                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8387            ) -> Self {
8388                tuple.into()
8389            }
8390            #[inline]
8391            fn tokenize(&self) -> Self::Token<'_> {
8392                ()
8393            }
8394            #[inline]
8395            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8396                (
8397                    <alloy::sol_types::sol_data::Uint<
8398                        64,
8399                    > as alloy_sol_types::SolType>::tokenize(ret),
8400                )
8401            }
8402            #[inline]
8403            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8404                <Self::ReturnTuple<
8405                    '_,
8406                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8407                    .map(|r| {
8408                        let r: currentEpochReturn = r.into();
8409                        r._0
8410                    })
8411            }
8412            #[inline]
8413            fn abi_decode_returns_with_config(
8414                data: &[u8],
8415                config: alloy_sol_types::abi::AbiDecoderConfig,
8416            ) -> alloy_sol_types::Result<Self::Return> {
8417                <Self::ReturnTuple<
8418                    '_,
8419                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8420                        data,
8421                        config,
8422                    )
8423                    .map(|r| {
8424                        let r: currentEpochReturn = r.into();
8425                        r._0
8426                    })
8427            }
8428            #[inline]
8429            fn abi_decode_returns_validate(
8430                data: &[u8],
8431            ) -> alloy_sol_types::Result<Self::Return> {
8432                Self::abi_decode_returns_with_config(
8433                    data,
8434                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8435                )
8436            }
8437        }
8438    };
8439    #[derive(serde::Serialize, serde::Deserialize)]
8440    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8441    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8442```solidity
8443function disablePermissionedProverMode() external;
8444```*/
8445    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8446    #[derive(Clone)]
8447    pub struct disablePermissionedProverModeCall;
8448    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8450    #[derive(Clone)]
8451    pub struct disablePermissionedProverModeReturn {}
8452    #[allow(
8453        non_camel_case_types,
8454        non_snake_case,
8455        clippy::pub_underscore_fields,
8456        clippy::style
8457    )]
8458    const _: () = {
8459        use alloy::sol_types as alloy_sol_types;
8460        {
8461            #[doc(hidden)]
8462            #[allow(dead_code)]
8463            type UnderlyingSolTuple<'a> = ();
8464            #[doc(hidden)]
8465            type UnderlyingRustTuple<'a> = ();
8466            #[cfg(test)]
8467            #[allow(dead_code, unreachable_patterns)]
8468            fn _type_assertion(
8469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8470            ) {
8471                match _t {
8472                    alloy_sol_types::private::AssertTypeEq::<
8473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8474                    >(_) => {}
8475                }
8476            }
8477            #[automatically_derived]
8478            #[doc(hidden)]
8479            impl ::core::convert::From<disablePermissionedProverModeCall>
8480            for UnderlyingRustTuple<'_> {
8481                fn from(value: disablePermissionedProverModeCall) -> Self {
8482                    ()
8483                }
8484            }
8485            #[automatically_derived]
8486            #[doc(hidden)]
8487            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8488            for disablePermissionedProverModeCall {
8489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8490                    Self
8491                }
8492            }
8493        }
8494        {
8495            #[doc(hidden)]
8496            #[allow(dead_code)]
8497            type UnderlyingSolTuple<'a> = ();
8498            #[doc(hidden)]
8499            type UnderlyingRustTuple<'a> = ();
8500            #[cfg(test)]
8501            #[allow(dead_code, unreachable_patterns)]
8502            fn _type_assertion(
8503                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8504            ) {
8505                match _t {
8506                    alloy_sol_types::private::AssertTypeEq::<
8507                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8508                    >(_) => {}
8509                }
8510            }
8511            #[automatically_derived]
8512            #[doc(hidden)]
8513            impl ::core::convert::From<disablePermissionedProverModeReturn>
8514            for UnderlyingRustTuple<'_> {
8515                fn from(value: disablePermissionedProverModeReturn) -> Self {
8516                    ()
8517                }
8518            }
8519            #[automatically_derived]
8520            #[doc(hidden)]
8521            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8522            for disablePermissionedProverModeReturn {
8523                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8524                    Self {}
8525                }
8526            }
8527        }
8528        impl disablePermissionedProverModeReturn {
8529            fn _tokenize(
8530                &self,
8531            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8532                '_,
8533            > {
8534                ()
8535            }
8536        }
8537        #[automatically_derived]
8538        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8539            type Parameters<'a> = ();
8540            type Token<'a> = <Self::Parameters<
8541                'a,
8542            > as alloy_sol_types::SolType>::Token<'a>;
8543            type Return = disablePermissionedProverModeReturn;
8544            type ReturnTuple<'a> = ();
8545            type ReturnToken<'a> = <Self::ReturnTuple<
8546                'a,
8547            > as alloy_sol_types::SolType>::Token<'a>;
8548            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8549            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8550            #[inline]
8551            fn new<'a>(
8552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8553            ) -> Self {
8554                tuple.into()
8555            }
8556            #[inline]
8557            fn tokenize(&self) -> Self::Token<'_> {
8558                ()
8559            }
8560            #[inline]
8561            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8562                disablePermissionedProverModeReturn::_tokenize(ret)
8563            }
8564            #[inline]
8565            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8566                <Self::ReturnTuple<
8567                    '_,
8568                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8569                    .map(Into::into)
8570            }
8571            #[inline]
8572            fn abi_decode_returns_with_config(
8573                data: &[u8],
8574                config: alloy_sol_types::abi::AbiDecoderConfig,
8575            ) -> alloy_sol_types::Result<Self::Return> {
8576                <Self::ReturnTuple<
8577                    '_,
8578                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8579                        data,
8580                        config,
8581                    )
8582                    .map(Into::into)
8583            }
8584            #[inline]
8585            fn abi_decode_returns_validate(
8586                data: &[u8],
8587            ) -> alloy_sol_types::Result<Self::Return> {
8588                Self::abi_decode_returns_with_config(
8589                    data,
8590                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8591                )
8592            }
8593        }
8594    };
8595    #[derive(serde::Serialize, serde::Deserialize)]
8596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8597    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8598```solidity
8599function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8600```*/
8601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8602    #[derive(Clone)]
8603    pub struct epochFromBlockNumberCall {
8604        #[allow(missing_docs)]
8605        pub _blockNum: u64,
8606        #[allow(missing_docs)]
8607        pub _blocksPerEpoch: u64,
8608    }
8609    #[derive(serde::Serialize, serde::Deserialize)]
8610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8611    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8612    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8613    #[derive(Clone)]
8614    pub struct epochFromBlockNumberReturn {
8615        #[allow(missing_docs)]
8616        pub _0: u64,
8617    }
8618    #[allow(
8619        non_camel_case_types,
8620        non_snake_case,
8621        clippy::pub_underscore_fields,
8622        clippy::style
8623    )]
8624    const _: () = {
8625        use alloy::sol_types as alloy_sol_types;
8626        {
8627            #[doc(hidden)]
8628            #[allow(dead_code)]
8629            type UnderlyingSolTuple<'a> = (
8630                alloy::sol_types::sol_data::Uint<64>,
8631                alloy::sol_types::sol_data::Uint<64>,
8632            );
8633            #[doc(hidden)]
8634            type UnderlyingRustTuple<'a> = (u64, u64);
8635            #[cfg(test)]
8636            #[allow(dead_code, unreachable_patterns)]
8637            fn _type_assertion(
8638                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8639            ) {
8640                match _t {
8641                    alloy_sol_types::private::AssertTypeEq::<
8642                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8643                    >(_) => {}
8644                }
8645            }
8646            #[automatically_derived]
8647            #[doc(hidden)]
8648            impl ::core::convert::From<epochFromBlockNumberCall>
8649            for UnderlyingRustTuple<'_> {
8650                fn from(value: epochFromBlockNumberCall) -> Self {
8651                    (value._blockNum, value._blocksPerEpoch)
8652                }
8653            }
8654            #[automatically_derived]
8655            #[doc(hidden)]
8656            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8657            for epochFromBlockNumberCall {
8658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8659                    Self {
8660                        _blockNum: tuple.0,
8661                        _blocksPerEpoch: tuple.1,
8662                    }
8663                }
8664            }
8665        }
8666        {
8667            #[doc(hidden)]
8668            #[allow(dead_code)]
8669            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8670            #[doc(hidden)]
8671            type UnderlyingRustTuple<'a> = (u64,);
8672            #[cfg(test)]
8673            #[allow(dead_code, unreachable_patterns)]
8674            fn _type_assertion(
8675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8676            ) {
8677                match _t {
8678                    alloy_sol_types::private::AssertTypeEq::<
8679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8680                    >(_) => {}
8681                }
8682            }
8683            #[automatically_derived]
8684            #[doc(hidden)]
8685            impl ::core::convert::From<epochFromBlockNumberReturn>
8686            for UnderlyingRustTuple<'_> {
8687                fn from(value: epochFromBlockNumberReturn) -> Self {
8688                    (value._0,)
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8694            for epochFromBlockNumberReturn {
8695                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8696                    Self { _0: tuple.0 }
8697                }
8698            }
8699        }
8700        #[automatically_derived]
8701        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8702            type Parameters<'a> = (
8703                alloy::sol_types::sol_data::Uint<64>,
8704                alloy::sol_types::sol_data::Uint<64>,
8705            );
8706            type Token<'a> = <Self::Parameters<
8707                'a,
8708            > as alloy_sol_types::SolType>::Token<'a>;
8709            type Return = u64;
8710            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8711            type ReturnToken<'a> = <Self::ReturnTuple<
8712                'a,
8713            > as alloy_sol_types::SolType>::Token<'a>;
8714            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8715            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8716            #[inline]
8717            fn new<'a>(
8718                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8719            ) -> Self {
8720                tuple.into()
8721            }
8722            #[inline]
8723            fn tokenize(&self) -> Self::Token<'_> {
8724                (
8725                    <alloy::sol_types::sol_data::Uint<
8726                        64,
8727                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8728                    <alloy::sol_types::sol_data::Uint<
8729                        64,
8730                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8731                )
8732            }
8733            #[inline]
8734            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8735                (
8736                    <alloy::sol_types::sol_data::Uint<
8737                        64,
8738                    > as alloy_sol_types::SolType>::tokenize(ret),
8739                )
8740            }
8741            #[inline]
8742            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8743                <Self::ReturnTuple<
8744                    '_,
8745                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8746                    .map(|r| {
8747                        let r: epochFromBlockNumberReturn = r.into();
8748                        r._0
8749                    })
8750            }
8751            #[inline]
8752            fn abi_decode_returns_with_config(
8753                data: &[u8],
8754                config: alloy_sol_types::abi::AbiDecoderConfig,
8755            ) -> alloy_sol_types::Result<Self::Return> {
8756                <Self::ReturnTuple<
8757                    '_,
8758                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8759                        data,
8760                        config,
8761                    )
8762                    .map(|r| {
8763                        let r: epochFromBlockNumberReturn = r.into();
8764                        r._0
8765                    })
8766            }
8767            #[inline]
8768            fn abi_decode_returns_validate(
8769                data: &[u8],
8770            ) -> alloy_sol_types::Result<Self::Return> {
8771                Self::abi_decode_returns_with_config(
8772                    data,
8773                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8774                )
8775            }
8776        }
8777    };
8778    #[derive(serde::Serialize, serde::Deserialize)]
8779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8780    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8781```solidity
8782function epochStartBlock() external view returns (uint64);
8783```*/
8784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8785    #[derive(Clone)]
8786    pub struct epochStartBlockCall;
8787    #[derive(serde::Serialize, serde::Deserialize)]
8788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8789    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8791    #[derive(Clone)]
8792    pub struct epochStartBlockReturn {
8793        #[allow(missing_docs)]
8794        pub _0: u64,
8795    }
8796    #[allow(
8797        non_camel_case_types,
8798        non_snake_case,
8799        clippy::pub_underscore_fields,
8800        clippy::style
8801    )]
8802    const _: () = {
8803        use alloy::sol_types as alloy_sol_types;
8804        {
8805            #[doc(hidden)]
8806            #[allow(dead_code)]
8807            type UnderlyingSolTuple<'a> = ();
8808            #[doc(hidden)]
8809            type UnderlyingRustTuple<'a> = ();
8810            #[cfg(test)]
8811            #[allow(dead_code, unreachable_patterns)]
8812            fn _type_assertion(
8813                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8814            ) {
8815                match _t {
8816                    alloy_sol_types::private::AssertTypeEq::<
8817                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8818                    >(_) => {}
8819                }
8820            }
8821            #[automatically_derived]
8822            #[doc(hidden)]
8823            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8824                fn from(value: epochStartBlockCall) -> Self {
8825                    ()
8826                }
8827            }
8828            #[automatically_derived]
8829            #[doc(hidden)]
8830            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8832                    Self
8833                }
8834            }
8835        }
8836        {
8837            #[doc(hidden)]
8838            #[allow(dead_code)]
8839            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8840            #[doc(hidden)]
8841            type UnderlyingRustTuple<'a> = (u64,);
8842            #[cfg(test)]
8843            #[allow(dead_code, unreachable_patterns)]
8844            fn _type_assertion(
8845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8846            ) {
8847                match _t {
8848                    alloy_sol_types::private::AssertTypeEq::<
8849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8850                    >(_) => {}
8851                }
8852            }
8853            #[automatically_derived]
8854            #[doc(hidden)]
8855            impl ::core::convert::From<epochStartBlockReturn>
8856            for UnderlyingRustTuple<'_> {
8857                fn from(value: epochStartBlockReturn) -> Self {
8858                    (value._0,)
8859                }
8860            }
8861            #[automatically_derived]
8862            #[doc(hidden)]
8863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8864            for epochStartBlockReturn {
8865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8866                    Self { _0: tuple.0 }
8867                }
8868            }
8869        }
8870        #[automatically_derived]
8871        impl alloy_sol_types::SolCall for epochStartBlockCall {
8872            type Parameters<'a> = ();
8873            type Token<'a> = <Self::Parameters<
8874                'a,
8875            > as alloy_sol_types::SolType>::Token<'a>;
8876            type Return = u64;
8877            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8878            type ReturnToken<'a> = <Self::ReturnTuple<
8879                'a,
8880            > as alloy_sol_types::SolType>::Token<'a>;
8881            const SIGNATURE: &'static str = "epochStartBlock()";
8882            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8883            #[inline]
8884            fn new<'a>(
8885                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8886            ) -> Self {
8887                tuple.into()
8888            }
8889            #[inline]
8890            fn tokenize(&self) -> Self::Token<'_> {
8891                ()
8892            }
8893            #[inline]
8894            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8895                (
8896                    <alloy::sol_types::sol_data::Uint<
8897                        64,
8898                    > as alloy_sol_types::SolType>::tokenize(ret),
8899                )
8900            }
8901            #[inline]
8902            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8903                <Self::ReturnTuple<
8904                    '_,
8905                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8906                    .map(|r| {
8907                        let r: epochStartBlockReturn = r.into();
8908                        r._0
8909                    })
8910            }
8911            #[inline]
8912            fn abi_decode_returns_with_config(
8913                data: &[u8],
8914                config: alloy_sol_types::abi::AbiDecoderConfig,
8915            ) -> alloy_sol_types::Result<Self::Return> {
8916                <Self::ReturnTuple<
8917                    '_,
8918                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8919                        data,
8920                        config,
8921                    )
8922                    .map(|r| {
8923                        let r: epochStartBlockReturn = r.into();
8924                        r._0
8925                    })
8926            }
8927            #[inline]
8928            fn abi_decode_returns_validate(
8929                data: &[u8],
8930            ) -> alloy_sol_types::Result<Self::Return> {
8931                Self::abi_decode_returns_with_config(
8932                    data,
8933                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8934                )
8935            }
8936        }
8937    };
8938    #[derive(serde::Serialize, serde::Deserialize)]
8939    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8940    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8941```solidity
8942function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8943```*/
8944    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8945    #[derive(Clone)]
8946    pub struct finalizedStateCall;
8947    #[derive(serde::Serialize, serde::Deserialize)]
8948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8949    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8951    #[derive(Clone)]
8952    pub struct finalizedStateReturn {
8953        #[allow(missing_docs)]
8954        pub viewNum: u64,
8955        #[allow(missing_docs)]
8956        pub blockHeight: u64,
8957        #[allow(missing_docs)]
8958        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8959    }
8960    #[allow(
8961        non_camel_case_types,
8962        non_snake_case,
8963        clippy::pub_underscore_fields,
8964        clippy::style
8965    )]
8966    const _: () = {
8967        use alloy::sol_types as alloy_sol_types;
8968        {
8969            #[doc(hidden)]
8970            #[allow(dead_code)]
8971            type UnderlyingSolTuple<'a> = ();
8972            #[doc(hidden)]
8973            type UnderlyingRustTuple<'a> = ();
8974            #[cfg(test)]
8975            #[allow(dead_code, unreachable_patterns)]
8976            fn _type_assertion(
8977                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8978            ) {
8979                match _t {
8980                    alloy_sol_types::private::AssertTypeEq::<
8981                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8982                    >(_) => {}
8983                }
8984            }
8985            #[automatically_derived]
8986            #[doc(hidden)]
8987            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8988                fn from(value: finalizedStateCall) -> Self {
8989                    ()
8990                }
8991            }
8992            #[automatically_derived]
8993            #[doc(hidden)]
8994            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8996                    Self
8997                }
8998            }
8999        }
9000        {
9001            #[doc(hidden)]
9002            #[allow(dead_code)]
9003            type UnderlyingSolTuple<'a> = (
9004                alloy::sol_types::sol_data::Uint<64>,
9005                alloy::sol_types::sol_data::Uint<64>,
9006                BN254::ScalarField,
9007            );
9008            #[doc(hidden)]
9009            type UnderlyingRustTuple<'a> = (
9010                u64,
9011                u64,
9012                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9013            );
9014            #[cfg(test)]
9015            #[allow(dead_code, unreachable_patterns)]
9016            fn _type_assertion(
9017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9018            ) {
9019                match _t {
9020                    alloy_sol_types::private::AssertTypeEq::<
9021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9022                    >(_) => {}
9023                }
9024            }
9025            #[automatically_derived]
9026            #[doc(hidden)]
9027            impl ::core::convert::From<finalizedStateReturn>
9028            for UnderlyingRustTuple<'_> {
9029                fn from(value: finalizedStateReturn) -> Self {
9030                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9031                }
9032            }
9033            #[automatically_derived]
9034            #[doc(hidden)]
9035            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9036            for finalizedStateReturn {
9037                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9038                    Self {
9039                        viewNum: tuple.0,
9040                        blockHeight: tuple.1,
9041                        blockCommRoot: tuple.2,
9042                    }
9043                }
9044            }
9045        }
9046        impl finalizedStateReturn {
9047            fn _tokenize(
9048                &self,
9049            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9050                (
9051                    <alloy::sol_types::sol_data::Uint<
9052                        64,
9053                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9054                    <alloy::sol_types::sol_data::Uint<
9055                        64,
9056                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9057                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9058                        &self.blockCommRoot,
9059                    ),
9060                )
9061            }
9062        }
9063        #[automatically_derived]
9064        impl alloy_sol_types::SolCall for finalizedStateCall {
9065            type Parameters<'a> = ();
9066            type Token<'a> = <Self::Parameters<
9067                'a,
9068            > as alloy_sol_types::SolType>::Token<'a>;
9069            type Return = finalizedStateReturn;
9070            type ReturnTuple<'a> = (
9071                alloy::sol_types::sol_data::Uint<64>,
9072                alloy::sol_types::sol_data::Uint<64>,
9073                BN254::ScalarField,
9074            );
9075            type ReturnToken<'a> = <Self::ReturnTuple<
9076                'a,
9077            > as alloy_sol_types::SolType>::Token<'a>;
9078            const SIGNATURE: &'static str = "finalizedState()";
9079            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9080            #[inline]
9081            fn new<'a>(
9082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9083            ) -> Self {
9084                tuple.into()
9085            }
9086            #[inline]
9087            fn tokenize(&self) -> Self::Token<'_> {
9088                ()
9089            }
9090            #[inline]
9091            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9092                finalizedStateReturn::_tokenize(ret)
9093            }
9094            #[inline]
9095            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9096                <Self::ReturnTuple<
9097                    '_,
9098                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9099                    .map(Into::into)
9100            }
9101            #[inline]
9102            fn abi_decode_returns_with_config(
9103                data: &[u8],
9104                config: alloy_sol_types::abi::AbiDecoderConfig,
9105            ) -> alloy_sol_types::Result<Self::Return> {
9106                <Self::ReturnTuple<
9107                    '_,
9108                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9109                        data,
9110                        config,
9111                    )
9112                    .map(Into::into)
9113            }
9114            #[inline]
9115            fn abi_decode_returns_validate(
9116                data: &[u8],
9117            ) -> alloy_sol_types::Result<Self::Return> {
9118                Self::abi_decode_returns_with_config(
9119                    data,
9120                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9121                )
9122            }
9123        }
9124    };
9125    #[derive(serde::Serialize, serde::Deserialize)]
9126    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9127    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9128```solidity
9129function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9130```*/
9131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9132    #[derive(Clone)]
9133    pub struct genesisStakeTableStateCall;
9134    #[derive(serde::Serialize, serde::Deserialize)]
9135    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9136    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9138    #[derive(Clone)]
9139    pub struct genesisStakeTableStateReturn {
9140        #[allow(missing_docs)]
9141        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9142        #[allow(missing_docs)]
9143        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9144        #[allow(missing_docs)]
9145        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9146        #[allow(missing_docs)]
9147        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9148    }
9149    #[allow(
9150        non_camel_case_types,
9151        non_snake_case,
9152        clippy::pub_underscore_fields,
9153        clippy::style
9154    )]
9155    const _: () = {
9156        use alloy::sol_types as alloy_sol_types;
9157        {
9158            #[doc(hidden)]
9159            #[allow(dead_code)]
9160            type UnderlyingSolTuple<'a> = ();
9161            #[doc(hidden)]
9162            type UnderlyingRustTuple<'a> = ();
9163            #[cfg(test)]
9164            #[allow(dead_code, unreachable_patterns)]
9165            fn _type_assertion(
9166                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9167            ) {
9168                match _t {
9169                    alloy_sol_types::private::AssertTypeEq::<
9170                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9171                    >(_) => {}
9172                }
9173            }
9174            #[automatically_derived]
9175            #[doc(hidden)]
9176            impl ::core::convert::From<genesisStakeTableStateCall>
9177            for UnderlyingRustTuple<'_> {
9178                fn from(value: genesisStakeTableStateCall) -> Self {
9179                    ()
9180                }
9181            }
9182            #[automatically_derived]
9183            #[doc(hidden)]
9184            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9185            for genesisStakeTableStateCall {
9186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9187                    Self
9188                }
9189            }
9190        }
9191        {
9192            #[doc(hidden)]
9193            #[allow(dead_code)]
9194            type UnderlyingSolTuple<'a> = (
9195                alloy::sol_types::sol_data::Uint<256>,
9196                BN254::ScalarField,
9197                BN254::ScalarField,
9198                BN254::ScalarField,
9199            );
9200            #[doc(hidden)]
9201            type UnderlyingRustTuple<'a> = (
9202                alloy::sol_types::private::primitives::aliases::U256,
9203                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9204                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9205                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9206            );
9207            #[cfg(test)]
9208            #[allow(dead_code, unreachable_patterns)]
9209            fn _type_assertion(
9210                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9211            ) {
9212                match _t {
9213                    alloy_sol_types::private::AssertTypeEq::<
9214                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9215                    >(_) => {}
9216                }
9217            }
9218            #[automatically_derived]
9219            #[doc(hidden)]
9220            impl ::core::convert::From<genesisStakeTableStateReturn>
9221            for UnderlyingRustTuple<'_> {
9222                fn from(value: genesisStakeTableStateReturn) -> Self {
9223                    (
9224                        value.threshold,
9225                        value.blsKeyComm,
9226                        value.schnorrKeyComm,
9227                        value.amountComm,
9228                    )
9229                }
9230            }
9231            #[automatically_derived]
9232            #[doc(hidden)]
9233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9234            for genesisStakeTableStateReturn {
9235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9236                    Self {
9237                        threshold: tuple.0,
9238                        blsKeyComm: tuple.1,
9239                        schnorrKeyComm: tuple.2,
9240                        amountComm: tuple.3,
9241                    }
9242                }
9243            }
9244        }
9245        impl genesisStakeTableStateReturn {
9246            fn _tokenize(
9247                &self,
9248            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9249                '_,
9250            > {
9251                (
9252                    <alloy::sol_types::sol_data::Uint<
9253                        256,
9254                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9255                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9256                        &self.blsKeyComm,
9257                    ),
9258                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9259                        &self.schnorrKeyComm,
9260                    ),
9261                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9262                        &self.amountComm,
9263                    ),
9264                )
9265            }
9266        }
9267        #[automatically_derived]
9268        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9269            type Parameters<'a> = ();
9270            type Token<'a> = <Self::Parameters<
9271                'a,
9272            > as alloy_sol_types::SolType>::Token<'a>;
9273            type Return = genesisStakeTableStateReturn;
9274            type ReturnTuple<'a> = (
9275                alloy::sol_types::sol_data::Uint<256>,
9276                BN254::ScalarField,
9277                BN254::ScalarField,
9278                BN254::ScalarField,
9279            );
9280            type ReturnToken<'a> = <Self::ReturnTuple<
9281                'a,
9282            > as alloy_sol_types::SolType>::Token<'a>;
9283            const SIGNATURE: &'static str = "genesisStakeTableState()";
9284            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9285            #[inline]
9286            fn new<'a>(
9287                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9288            ) -> Self {
9289                tuple.into()
9290            }
9291            #[inline]
9292            fn tokenize(&self) -> Self::Token<'_> {
9293                ()
9294            }
9295            #[inline]
9296            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9297                genesisStakeTableStateReturn::_tokenize(ret)
9298            }
9299            #[inline]
9300            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9301                <Self::ReturnTuple<
9302                    '_,
9303                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9304                    .map(Into::into)
9305            }
9306            #[inline]
9307            fn abi_decode_returns_with_config(
9308                data: &[u8],
9309                config: alloy_sol_types::abi::AbiDecoderConfig,
9310            ) -> alloy_sol_types::Result<Self::Return> {
9311                <Self::ReturnTuple<
9312                    '_,
9313                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9314                        data,
9315                        config,
9316                    )
9317                    .map(Into::into)
9318            }
9319            #[inline]
9320            fn abi_decode_returns_validate(
9321                data: &[u8],
9322            ) -> alloy_sol_types::Result<Self::Return> {
9323                Self::abi_decode_returns_with_config(
9324                    data,
9325                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9326                )
9327            }
9328        }
9329    };
9330    #[derive(serde::Serialize, serde::Deserialize)]
9331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9332    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9333```solidity
9334function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9335```*/
9336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9337    #[derive(Clone)]
9338    pub struct genesisStateCall;
9339    #[derive(serde::Serialize, serde::Deserialize)]
9340    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9341    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9343    #[derive(Clone)]
9344    pub struct genesisStateReturn {
9345        #[allow(missing_docs)]
9346        pub viewNum: u64,
9347        #[allow(missing_docs)]
9348        pub blockHeight: u64,
9349        #[allow(missing_docs)]
9350        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9351    }
9352    #[allow(
9353        non_camel_case_types,
9354        non_snake_case,
9355        clippy::pub_underscore_fields,
9356        clippy::style
9357    )]
9358    const _: () = {
9359        use alloy::sol_types as alloy_sol_types;
9360        {
9361            #[doc(hidden)]
9362            #[allow(dead_code)]
9363            type UnderlyingSolTuple<'a> = ();
9364            #[doc(hidden)]
9365            type UnderlyingRustTuple<'a> = ();
9366            #[cfg(test)]
9367            #[allow(dead_code, unreachable_patterns)]
9368            fn _type_assertion(
9369                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9370            ) {
9371                match _t {
9372                    alloy_sol_types::private::AssertTypeEq::<
9373                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9374                    >(_) => {}
9375                }
9376            }
9377            #[automatically_derived]
9378            #[doc(hidden)]
9379            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9380                fn from(value: genesisStateCall) -> Self {
9381                    ()
9382                }
9383            }
9384            #[automatically_derived]
9385            #[doc(hidden)]
9386            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9388                    Self
9389                }
9390            }
9391        }
9392        {
9393            #[doc(hidden)]
9394            #[allow(dead_code)]
9395            type UnderlyingSolTuple<'a> = (
9396                alloy::sol_types::sol_data::Uint<64>,
9397                alloy::sol_types::sol_data::Uint<64>,
9398                BN254::ScalarField,
9399            );
9400            #[doc(hidden)]
9401            type UnderlyingRustTuple<'a> = (
9402                u64,
9403                u64,
9404                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9405            );
9406            #[cfg(test)]
9407            #[allow(dead_code, unreachable_patterns)]
9408            fn _type_assertion(
9409                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9410            ) {
9411                match _t {
9412                    alloy_sol_types::private::AssertTypeEq::<
9413                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9414                    >(_) => {}
9415                }
9416            }
9417            #[automatically_derived]
9418            #[doc(hidden)]
9419            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9420                fn from(value: genesisStateReturn) -> Self {
9421                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9422                }
9423            }
9424            #[automatically_derived]
9425            #[doc(hidden)]
9426            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9427                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9428                    Self {
9429                        viewNum: tuple.0,
9430                        blockHeight: tuple.1,
9431                        blockCommRoot: tuple.2,
9432                    }
9433                }
9434            }
9435        }
9436        impl genesisStateReturn {
9437            fn _tokenize(
9438                &self,
9439            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9440                (
9441                    <alloy::sol_types::sol_data::Uint<
9442                        64,
9443                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9444                    <alloy::sol_types::sol_data::Uint<
9445                        64,
9446                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9447                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9448                        &self.blockCommRoot,
9449                    ),
9450                )
9451            }
9452        }
9453        #[automatically_derived]
9454        impl alloy_sol_types::SolCall for genesisStateCall {
9455            type Parameters<'a> = ();
9456            type Token<'a> = <Self::Parameters<
9457                'a,
9458            > as alloy_sol_types::SolType>::Token<'a>;
9459            type Return = genesisStateReturn;
9460            type ReturnTuple<'a> = (
9461                alloy::sol_types::sol_data::Uint<64>,
9462                alloy::sol_types::sol_data::Uint<64>,
9463                BN254::ScalarField,
9464            );
9465            type ReturnToken<'a> = <Self::ReturnTuple<
9466                'a,
9467            > as alloy_sol_types::SolType>::Token<'a>;
9468            const SIGNATURE: &'static str = "genesisState()";
9469            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9470            #[inline]
9471            fn new<'a>(
9472                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9473            ) -> Self {
9474                tuple.into()
9475            }
9476            #[inline]
9477            fn tokenize(&self) -> Self::Token<'_> {
9478                ()
9479            }
9480            #[inline]
9481            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9482                genesisStateReturn::_tokenize(ret)
9483            }
9484            #[inline]
9485            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9486                <Self::ReturnTuple<
9487                    '_,
9488                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9489                    .map(Into::into)
9490            }
9491            #[inline]
9492            fn abi_decode_returns_with_config(
9493                data: &[u8],
9494                config: alloy_sol_types::abi::AbiDecoderConfig,
9495            ) -> alloy_sol_types::Result<Self::Return> {
9496                <Self::ReturnTuple<
9497                    '_,
9498                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9499                        data,
9500                        config,
9501                    )
9502                    .map(Into::into)
9503            }
9504            #[inline]
9505            fn abi_decode_returns_validate(
9506                data: &[u8],
9507            ) -> alloy_sol_types::Result<Self::Return> {
9508                Self::abi_decode_returns_with_config(
9509                    data,
9510                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9511                )
9512            }
9513        }
9514    };
9515    #[derive(serde::Serialize, serde::Deserialize)]
9516    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9517    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9518```solidity
9519function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9520```*/
9521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9522    #[derive(Clone)]
9523    pub struct getHotShotCommitmentCall {
9524        #[allow(missing_docs)]
9525        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9526    }
9527    #[derive(serde::Serialize, serde::Deserialize)]
9528    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9529    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9531    #[derive(Clone)]
9532    pub struct getHotShotCommitmentReturn {
9533        #[allow(missing_docs)]
9534        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9535        #[allow(missing_docs)]
9536        pub hotshotBlockHeight: u64,
9537    }
9538    #[allow(
9539        non_camel_case_types,
9540        non_snake_case,
9541        clippy::pub_underscore_fields,
9542        clippy::style
9543    )]
9544    const _: () = {
9545        use alloy::sol_types as alloy_sol_types;
9546        {
9547            #[doc(hidden)]
9548            #[allow(dead_code)]
9549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9550            #[doc(hidden)]
9551            type UnderlyingRustTuple<'a> = (
9552                alloy::sol_types::private::primitives::aliases::U256,
9553            );
9554            #[cfg(test)]
9555            #[allow(dead_code, unreachable_patterns)]
9556            fn _type_assertion(
9557                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9558            ) {
9559                match _t {
9560                    alloy_sol_types::private::AssertTypeEq::<
9561                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9562                    >(_) => {}
9563                }
9564            }
9565            #[automatically_derived]
9566            #[doc(hidden)]
9567            impl ::core::convert::From<getHotShotCommitmentCall>
9568            for UnderlyingRustTuple<'_> {
9569                fn from(value: getHotShotCommitmentCall) -> Self {
9570                    (value.hotShotBlockHeight,)
9571                }
9572            }
9573            #[automatically_derived]
9574            #[doc(hidden)]
9575            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9576            for getHotShotCommitmentCall {
9577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9578                    Self {
9579                        hotShotBlockHeight: tuple.0,
9580                    }
9581                }
9582            }
9583        }
9584        {
9585            #[doc(hidden)]
9586            #[allow(dead_code)]
9587            type UnderlyingSolTuple<'a> = (
9588                BN254::ScalarField,
9589                alloy::sol_types::sol_data::Uint<64>,
9590            );
9591            #[doc(hidden)]
9592            type UnderlyingRustTuple<'a> = (
9593                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9594                u64,
9595            );
9596            #[cfg(test)]
9597            #[allow(dead_code, unreachable_patterns)]
9598            fn _type_assertion(
9599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9600            ) {
9601                match _t {
9602                    alloy_sol_types::private::AssertTypeEq::<
9603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9604                    >(_) => {}
9605                }
9606            }
9607            #[automatically_derived]
9608            #[doc(hidden)]
9609            impl ::core::convert::From<getHotShotCommitmentReturn>
9610            for UnderlyingRustTuple<'_> {
9611                fn from(value: getHotShotCommitmentReturn) -> Self {
9612                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9613                }
9614            }
9615            #[automatically_derived]
9616            #[doc(hidden)]
9617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9618            for getHotShotCommitmentReturn {
9619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9620                    Self {
9621                        hotShotBlockCommRoot: tuple.0,
9622                        hotshotBlockHeight: tuple.1,
9623                    }
9624                }
9625            }
9626        }
9627        impl getHotShotCommitmentReturn {
9628            fn _tokenize(
9629                &self,
9630            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9631                '_,
9632            > {
9633                (
9634                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9635                        &self.hotShotBlockCommRoot,
9636                    ),
9637                    <alloy::sol_types::sol_data::Uint<
9638                        64,
9639                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9640                )
9641            }
9642        }
9643        #[automatically_derived]
9644        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9645            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9646            type Token<'a> = <Self::Parameters<
9647                'a,
9648            > as alloy_sol_types::SolType>::Token<'a>;
9649            type Return = getHotShotCommitmentReturn;
9650            type ReturnTuple<'a> = (
9651                BN254::ScalarField,
9652                alloy::sol_types::sol_data::Uint<64>,
9653            );
9654            type ReturnToken<'a> = <Self::ReturnTuple<
9655                'a,
9656            > as alloy_sol_types::SolType>::Token<'a>;
9657            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9658            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9659            #[inline]
9660            fn new<'a>(
9661                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9662            ) -> Self {
9663                tuple.into()
9664            }
9665            #[inline]
9666            fn tokenize(&self) -> Self::Token<'_> {
9667                (
9668                    <alloy::sol_types::sol_data::Uint<
9669                        256,
9670                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9671                )
9672            }
9673            #[inline]
9674            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9675                getHotShotCommitmentReturn::_tokenize(ret)
9676            }
9677            #[inline]
9678            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9679                <Self::ReturnTuple<
9680                    '_,
9681                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9682                    .map(Into::into)
9683            }
9684            #[inline]
9685            fn abi_decode_returns_with_config(
9686                data: &[u8],
9687                config: alloy_sol_types::abi::AbiDecoderConfig,
9688            ) -> alloy_sol_types::Result<Self::Return> {
9689                <Self::ReturnTuple<
9690                    '_,
9691                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9692                        data,
9693                        config,
9694                    )
9695                    .map(Into::into)
9696            }
9697            #[inline]
9698            fn abi_decode_returns_validate(
9699                data: &[u8],
9700            ) -> alloy_sol_types::Result<Self::Return> {
9701                Self::abi_decode_returns_with_config(
9702                    data,
9703                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9704                )
9705            }
9706        }
9707    };
9708    #[derive(serde::Serialize, serde::Deserialize)]
9709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9710    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9711```solidity
9712function getStateHistoryCount() external view returns (uint256);
9713```*/
9714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9715    #[derive(Clone)]
9716    pub struct getStateHistoryCountCall;
9717    #[derive(serde::Serialize, serde::Deserialize)]
9718    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9719    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9721    #[derive(Clone)]
9722    pub struct getStateHistoryCountReturn {
9723        #[allow(missing_docs)]
9724        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9725    }
9726    #[allow(
9727        non_camel_case_types,
9728        non_snake_case,
9729        clippy::pub_underscore_fields,
9730        clippy::style
9731    )]
9732    const _: () = {
9733        use alloy::sol_types as alloy_sol_types;
9734        {
9735            #[doc(hidden)]
9736            #[allow(dead_code)]
9737            type UnderlyingSolTuple<'a> = ();
9738            #[doc(hidden)]
9739            type UnderlyingRustTuple<'a> = ();
9740            #[cfg(test)]
9741            #[allow(dead_code, unreachable_patterns)]
9742            fn _type_assertion(
9743                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9744            ) {
9745                match _t {
9746                    alloy_sol_types::private::AssertTypeEq::<
9747                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9748                    >(_) => {}
9749                }
9750            }
9751            #[automatically_derived]
9752            #[doc(hidden)]
9753            impl ::core::convert::From<getStateHistoryCountCall>
9754            for UnderlyingRustTuple<'_> {
9755                fn from(value: getStateHistoryCountCall) -> Self {
9756                    ()
9757                }
9758            }
9759            #[automatically_derived]
9760            #[doc(hidden)]
9761            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9762            for getStateHistoryCountCall {
9763                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9764                    Self
9765                }
9766            }
9767        }
9768        {
9769            #[doc(hidden)]
9770            #[allow(dead_code)]
9771            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9772            #[doc(hidden)]
9773            type UnderlyingRustTuple<'a> = (
9774                alloy::sol_types::private::primitives::aliases::U256,
9775            );
9776            #[cfg(test)]
9777            #[allow(dead_code, unreachable_patterns)]
9778            fn _type_assertion(
9779                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9780            ) {
9781                match _t {
9782                    alloy_sol_types::private::AssertTypeEq::<
9783                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9784                    >(_) => {}
9785                }
9786            }
9787            #[automatically_derived]
9788            #[doc(hidden)]
9789            impl ::core::convert::From<getStateHistoryCountReturn>
9790            for UnderlyingRustTuple<'_> {
9791                fn from(value: getStateHistoryCountReturn) -> Self {
9792                    (value._0,)
9793                }
9794            }
9795            #[automatically_derived]
9796            #[doc(hidden)]
9797            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9798            for getStateHistoryCountReturn {
9799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9800                    Self { _0: tuple.0 }
9801                }
9802            }
9803        }
9804        #[automatically_derived]
9805        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9806            type Parameters<'a> = ();
9807            type Token<'a> = <Self::Parameters<
9808                'a,
9809            > as alloy_sol_types::SolType>::Token<'a>;
9810            type Return = alloy::sol_types::private::primitives::aliases::U256;
9811            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9812            type ReturnToken<'a> = <Self::ReturnTuple<
9813                'a,
9814            > as alloy_sol_types::SolType>::Token<'a>;
9815            const SIGNATURE: &'static str = "getStateHistoryCount()";
9816            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9817            #[inline]
9818            fn new<'a>(
9819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9820            ) -> Self {
9821                tuple.into()
9822            }
9823            #[inline]
9824            fn tokenize(&self) -> Self::Token<'_> {
9825                ()
9826            }
9827            #[inline]
9828            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9829                (
9830                    <alloy::sol_types::sol_data::Uint<
9831                        256,
9832                    > as alloy_sol_types::SolType>::tokenize(ret),
9833                )
9834            }
9835            #[inline]
9836            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9837                <Self::ReturnTuple<
9838                    '_,
9839                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9840                    .map(|r| {
9841                        let r: getStateHistoryCountReturn = r.into();
9842                        r._0
9843                    })
9844            }
9845            #[inline]
9846            fn abi_decode_returns_with_config(
9847                data: &[u8],
9848                config: alloy_sol_types::abi::AbiDecoderConfig,
9849            ) -> alloy_sol_types::Result<Self::Return> {
9850                <Self::ReturnTuple<
9851                    '_,
9852                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9853                        data,
9854                        config,
9855                    )
9856                    .map(|r| {
9857                        let r: getStateHistoryCountReturn = r.into();
9858                        r._0
9859                    })
9860            }
9861            #[inline]
9862            fn abi_decode_returns_validate(
9863                data: &[u8],
9864            ) -> alloy_sol_types::Result<Self::Return> {
9865                Self::abi_decode_returns_with_config(
9866                    data,
9867                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9868                )
9869            }
9870        }
9871    };
9872    #[derive(serde::Serialize, serde::Deserialize)]
9873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9874    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9875```solidity
9876function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9877```*/
9878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9879    #[derive(Clone)]
9880    pub struct getVersionCall;
9881    #[derive(serde::Serialize, serde::Deserialize)]
9882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9883    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9885    #[derive(Clone)]
9886    pub struct getVersionReturn {
9887        #[allow(missing_docs)]
9888        pub majorVersion: u8,
9889        #[allow(missing_docs)]
9890        pub minorVersion: u8,
9891        #[allow(missing_docs)]
9892        pub patchVersion: u8,
9893    }
9894    #[allow(
9895        non_camel_case_types,
9896        non_snake_case,
9897        clippy::pub_underscore_fields,
9898        clippy::style
9899    )]
9900    const _: () = {
9901        use alloy::sol_types as alloy_sol_types;
9902        {
9903            #[doc(hidden)]
9904            #[allow(dead_code)]
9905            type UnderlyingSolTuple<'a> = ();
9906            #[doc(hidden)]
9907            type UnderlyingRustTuple<'a> = ();
9908            #[cfg(test)]
9909            #[allow(dead_code, unreachable_patterns)]
9910            fn _type_assertion(
9911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9912            ) {
9913                match _t {
9914                    alloy_sol_types::private::AssertTypeEq::<
9915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9916                    >(_) => {}
9917                }
9918            }
9919            #[automatically_derived]
9920            #[doc(hidden)]
9921            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9922                fn from(value: getVersionCall) -> Self {
9923                    ()
9924                }
9925            }
9926            #[automatically_derived]
9927            #[doc(hidden)]
9928            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9930                    Self
9931                }
9932            }
9933        }
9934        {
9935            #[doc(hidden)]
9936            #[allow(dead_code)]
9937            type UnderlyingSolTuple<'a> = (
9938                alloy::sol_types::sol_data::Uint<8>,
9939                alloy::sol_types::sol_data::Uint<8>,
9940                alloy::sol_types::sol_data::Uint<8>,
9941            );
9942            #[doc(hidden)]
9943            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9944            #[cfg(test)]
9945            #[allow(dead_code, unreachable_patterns)]
9946            fn _type_assertion(
9947                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9948            ) {
9949                match _t {
9950                    alloy_sol_types::private::AssertTypeEq::<
9951                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9952                    >(_) => {}
9953                }
9954            }
9955            #[automatically_derived]
9956            #[doc(hidden)]
9957            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9958                fn from(value: getVersionReturn) -> Self {
9959                    (value.majorVersion, value.minorVersion, value.patchVersion)
9960                }
9961            }
9962            #[automatically_derived]
9963            #[doc(hidden)]
9964            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9965                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9966                    Self {
9967                        majorVersion: tuple.0,
9968                        minorVersion: tuple.1,
9969                        patchVersion: tuple.2,
9970                    }
9971                }
9972            }
9973        }
9974        impl getVersionReturn {
9975            fn _tokenize(
9976                &self,
9977            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9978                (
9979                    <alloy::sol_types::sol_data::Uint<
9980                        8,
9981                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
9982                    <alloy::sol_types::sol_data::Uint<
9983                        8,
9984                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
9985                    <alloy::sol_types::sol_data::Uint<
9986                        8,
9987                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
9988                )
9989            }
9990        }
9991        #[automatically_derived]
9992        impl alloy_sol_types::SolCall for getVersionCall {
9993            type Parameters<'a> = ();
9994            type Token<'a> = <Self::Parameters<
9995                'a,
9996            > as alloy_sol_types::SolType>::Token<'a>;
9997            type Return = getVersionReturn;
9998            type ReturnTuple<'a> = (
9999                alloy::sol_types::sol_data::Uint<8>,
10000                alloy::sol_types::sol_data::Uint<8>,
10001                alloy::sol_types::sol_data::Uint<8>,
10002            );
10003            type ReturnToken<'a> = <Self::ReturnTuple<
10004                'a,
10005            > as alloy_sol_types::SolType>::Token<'a>;
10006            const SIGNATURE: &'static str = "getVersion()";
10007            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10008            #[inline]
10009            fn new<'a>(
10010                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10011            ) -> Self {
10012                tuple.into()
10013            }
10014            #[inline]
10015            fn tokenize(&self) -> Self::Token<'_> {
10016                ()
10017            }
10018            #[inline]
10019            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10020                getVersionReturn::_tokenize(ret)
10021            }
10022            #[inline]
10023            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10024                <Self::ReturnTuple<
10025                    '_,
10026                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10027                    .map(Into::into)
10028            }
10029            #[inline]
10030            fn abi_decode_returns_with_config(
10031                data: &[u8],
10032                config: alloy_sol_types::abi::AbiDecoderConfig,
10033            ) -> alloy_sol_types::Result<Self::Return> {
10034                <Self::ReturnTuple<
10035                    '_,
10036                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10037                        data,
10038                        config,
10039                    )
10040                    .map(Into::into)
10041            }
10042            #[inline]
10043            fn abi_decode_returns_validate(
10044                data: &[u8],
10045            ) -> alloy_sol_types::Result<Self::Return> {
10046                Self::abi_decode_returns_with_config(
10047                    data,
10048                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10049                )
10050            }
10051        }
10052    };
10053    #[derive(serde::Serialize, serde::Deserialize)]
10054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10055    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10056```solidity
10057function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10058```*/
10059    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10060    #[derive(Clone)]
10061    pub struct initializeCall {
10062        #[allow(missing_docs)]
10063        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10064        #[allow(missing_docs)]
10065        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10066        #[allow(missing_docs)]
10067        pub _stateHistoryRetentionPeriod: u32,
10068        #[allow(missing_docs)]
10069        pub owner: alloy::sol_types::private::Address,
10070    }
10071    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10073    #[derive(Clone)]
10074    pub struct initializeReturn {}
10075    #[allow(
10076        non_camel_case_types,
10077        non_snake_case,
10078        clippy::pub_underscore_fields,
10079        clippy::style
10080    )]
10081    const _: () = {
10082        use alloy::sol_types as alloy_sol_types;
10083        {
10084            #[doc(hidden)]
10085            #[allow(dead_code)]
10086            type UnderlyingSolTuple<'a> = (
10087                LightClient::LightClientState,
10088                LightClient::StakeTableState,
10089                alloy::sol_types::sol_data::Uint<32>,
10090                alloy::sol_types::sol_data::Address,
10091            );
10092            #[doc(hidden)]
10093            type UnderlyingRustTuple<'a> = (
10094                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10095                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10096                u32,
10097                alloy::sol_types::private::Address,
10098            );
10099            #[cfg(test)]
10100            #[allow(dead_code, unreachable_patterns)]
10101            fn _type_assertion(
10102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10103            ) {
10104                match _t {
10105                    alloy_sol_types::private::AssertTypeEq::<
10106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10107                    >(_) => {}
10108                }
10109            }
10110            #[automatically_derived]
10111            #[doc(hidden)]
10112            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10113                fn from(value: initializeCall) -> Self {
10114                    (
10115                        value._genesis,
10116                        value._genesisStakeTableState,
10117                        value._stateHistoryRetentionPeriod,
10118                        value.owner,
10119                    )
10120                }
10121            }
10122            #[automatically_derived]
10123            #[doc(hidden)]
10124            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10125                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10126                    Self {
10127                        _genesis: tuple.0,
10128                        _genesisStakeTableState: tuple.1,
10129                        _stateHistoryRetentionPeriod: tuple.2,
10130                        owner: tuple.3,
10131                    }
10132                }
10133            }
10134        }
10135        {
10136            #[doc(hidden)]
10137            #[allow(dead_code)]
10138            type UnderlyingSolTuple<'a> = ();
10139            #[doc(hidden)]
10140            type UnderlyingRustTuple<'a> = ();
10141            #[cfg(test)]
10142            #[allow(dead_code, unreachable_patterns)]
10143            fn _type_assertion(
10144                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10145            ) {
10146                match _t {
10147                    alloy_sol_types::private::AssertTypeEq::<
10148                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10149                    >(_) => {}
10150                }
10151            }
10152            #[automatically_derived]
10153            #[doc(hidden)]
10154            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10155                fn from(value: initializeReturn) -> Self {
10156                    ()
10157                }
10158            }
10159            #[automatically_derived]
10160            #[doc(hidden)]
10161            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10163                    Self {}
10164                }
10165            }
10166        }
10167        impl initializeReturn {
10168            fn _tokenize(
10169                &self,
10170            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10171                ()
10172            }
10173        }
10174        #[automatically_derived]
10175        impl alloy_sol_types::SolCall for initializeCall {
10176            type Parameters<'a> = (
10177                LightClient::LightClientState,
10178                LightClient::StakeTableState,
10179                alloy::sol_types::sol_data::Uint<32>,
10180                alloy::sol_types::sol_data::Address,
10181            );
10182            type Token<'a> = <Self::Parameters<
10183                'a,
10184            > as alloy_sol_types::SolType>::Token<'a>;
10185            type Return = initializeReturn;
10186            type ReturnTuple<'a> = ();
10187            type ReturnToken<'a> = <Self::ReturnTuple<
10188                'a,
10189            > as alloy_sol_types::SolType>::Token<'a>;
10190            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10191            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10192            #[inline]
10193            fn new<'a>(
10194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10195            ) -> Self {
10196                tuple.into()
10197            }
10198            #[inline]
10199            fn tokenize(&self) -> Self::Token<'_> {
10200                (
10201                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10202                        &self._genesis,
10203                    ),
10204                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10205                        &self._genesisStakeTableState,
10206                    ),
10207                    <alloy::sol_types::sol_data::Uint<
10208                        32,
10209                    > as alloy_sol_types::SolType>::tokenize(
10210                        &self._stateHistoryRetentionPeriod,
10211                    ),
10212                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10213                        &self.owner,
10214                    ),
10215                )
10216            }
10217            #[inline]
10218            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10219                initializeReturn::_tokenize(ret)
10220            }
10221            #[inline]
10222            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10223                <Self::ReturnTuple<
10224                    '_,
10225                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10226                    .map(Into::into)
10227            }
10228            #[inline]
10229            fn abi_decode_returns_with_config(
10230                data: &[u8],
10231                config: alloy_sol_types::abi::AbiDecoderConfig,
10232            ) -> alloy_sol_types::Result<Self::Return> {
10233                <Self::ReturnTuple<
10234                    '_,
10235                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10236                        data,
10237                        config,
10238                    )
10239                    .map(Into::into)
10240            }
10241            #[inline]
10242            fn abi_decode_returns_validate(
10243                data: &[u8],
10244            ) -> alloy_sol_types::Result<Self::Return> {
10245                Self::abi_decode_returns_with_config(
10246                    data,
10247                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10248                )
10249            }
10250        }
10251    };
10252    #[derive(serde::Serialize, serde::Deserialize)]
10253    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10254    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10255```solidity
10256function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10257```*/
10258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10259    #[derive(Clone)]
10260    pub struct initializeV2Call {
10261        #[allow(missing_docs)]
10262        pub _blocksPerEpoch: u64,
10263        #[allow(missing_docs)]
10264        pub _epochStartBlock: u64,
10265    }
10266    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10268    #[derive(Clone)]
10269    pub struct initializeV2Return {}
10270    #[allow(
10271        non_camel_case_types,
10272        non_snake_case,
10273        clippy::pub_underscore_fields,
10274        clippy::style
10275    )]
10276    const _: () = {
10277        use alloy::sol_types as alloy_sol_types;
10278        {
10279            #[doc(hidden)]
10280            #[allow(dead_code)]
10281            type UnderlyingSolTuple<'a> = (
10282                alloy::sol_types::sol_data::Uint<64>,
10283                alloy::sol_types::sol_data::Uint<64>,
10284            );
10285            #[doc(hidden)]
10286            type UnderlyingRustTuple<'a> = (u64, u64);
10287            #[cfg(test)]
10288            #[allow(dead_code, unreachable_patterns)]
10289            fn _type_assertion(
10290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10291            ) {
10292                match _t {
10293                    alloy_sol_types::private::AssertTypeEq::<
10294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10295                    >(_) => {}
10296                }
10297            }
10298            #[automatically_derived]
10299            #[doc(hidden)]
10300            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10301                fn from(value: initializeV2Call) -> Self {
10302                    (value._blocksPerEpoch, value._epochStartBlock)
10303                }
10304            }
10305            #[automatically_derived]
10306            #[doc(hidden)]
10307            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10309                    Self {
10310                        _blocksPerEpoch: tuple.0,
10311                        _epochStartBlock: tuple.1,
10312                    }
10313                }
10314            }
10315        }
10316        {
10317            #[doc(hidden)]
10318            #[allow(dead_code)]
10319            type UnderlyingSolTuple<'a> = ();
10320            #[doc(hidden)]
10321            type UnderlyingRustTuple<'a> = ();
10322            #[cfg(test)]
10323            #[allow(dead_code, unreachable_patterns)]
10324            fn _type_assertion(
10325                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10326            ) {
10327                match _t {
10328                    alloy_sol_types::private::AssertTypeEq::<
10329                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10330                    >(_) => {}
10331                }
10332            }
10333            #[automatically_derived]
10334            #[doc(hidden)]
10335            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10336                fn from(value: initializeV2Return) -> Self {
10337                    ()
10338                }
10339            }
10340            #[automatically_derived]
10341            #[doc(hidden)]
10342            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10343                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10344                    Self {}
10345                }
10346            }
10347        }
10348        impl initializeV2Return {
10349            fn _tokenize(
10350                &self,
10351            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10352                ()
10353            }
10354        }
10355        #[automatically_derived]
10356        impl alloy_sol_types::SolCall for initializeV2Call {
10357            type Parameters<'a> = (
10358                alloy::sol_types::sol_data::Uint<64>,
10359                alloy::sol_types::sol_data::Uint<64>,
10360            );
10361            type Token<'a> = <Self::Parameters<
10362                'a,
10363            > as alloy_sol_types::SolType>::Token<'a>;
10364            type Return = initializeV2Return;
10365            type ReturnTuple<'a> = ();
10366            type ReturnToken<'a> = <Self::ReturnTuple<
10367                'a,
10368            > as alloy_sol_types::SolType>::Token<'a>;
10369            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10370            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10371            #[inline]
10372            fn new<'a>(
10373                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10374            ) -> Self {
10375                tuple.into()
10376            }
10377            #[inline]
10378            fn tokenize(&self) -> Self::Token<'_> {
10379                (
10380                    <alloy::sol_types::sol_data::Uint<
10381                        64,
10382                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10383                    <alloy::sol_types::sol_data::Uint<
10384                        64,
10385                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10386                )
10387            }
10388            #[inline]
10389            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10390                initializeV2Return::_tokenize(ret)
10391            }
10392            #[inline]
10393            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10394                <Self::ReturnTuple<
10395                    '_,
10396                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10397                    .map(Into::into)
10398            }
10399            #[inline]
10400            fn abi_decode_returns_with_config(
10401                data: &[u8],
10402                config: alloy_sol_types::abi::AbiDecoderConfig,
10403            ) -> alloy_sol_types::Result<Self::Return> {
10404                <Self::ReturnTuple<
10405                    '_,
10406                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10407                        data,
10408                        config,
10409                    )
10410                    .map(Into::into)
10411            }
10412            #[inline]
10413            fn abi_decode_returns_validate(
10414                data: &[u8],
10415            ) -> alloy_sol_types::Result<Self::Return> {
10416                Self::abi_decode_returns_with_config(
10417                    data,
10418                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10419                )
10420            }
10421        }
10422    };
10423    #[derive(serde::Serialize, serde::Deserialize)]
10424    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10425    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10426```solidity
10427function isEpochRoot(uint64 blockHeight) external view returns (bool);
10428```*/
10429    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10430    #[derive(Clone)]
10431    pub struct isEpochRootCall {
10432        #[allow(missing_docs)]
10433        pub blockHeight: u64,
10434    }
10435    #[derive(serde::Serialize, serde::Deserialize)]
10436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10437    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10439    #[derive(Clone)]
10440    pub struct isEpochRootReturn {
10441        #[allow(missing_docs)]
10442        pub _0: bool,
10443    }
10444    #[allow(
10445        non_camel_case_types,
10446        non_snake_case,
10447        clippy::pub_underscore_fields,
10448        clippy::style
10449    )]
10450    const _: () = {
10451        use alloy::sol_types as alloy_sol_types;
10452        {
10453            #[doc(hidden)]
10454            #[allow(dead_code)]
10455            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10456            #[doc(hidden)]
10457            type UnderlyingRustTuple<'a> = (u64,);
10458            #[cfg(test)]
10459            #[allow(dead_code, unreachable_patterns)]
10460            fn _type_assertion(
10461                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10462            ) {
10463                match _t {
10464                    alloy_sol_types::private::AssertTypeEq::<
10465                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10466                    >(_) => {}
10467                }
10468            }
10469            #[automatically_derived]
10470            #[doc(hidden)]
10471            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10472                fn from(value: isEpochRootCall) -> Self {
10473                    (value.blockHeight,)
10474                }
10475            }
10476            #[automatically_derived]
10477            #[doc(hidden)]
10478            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10479                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10480                    Self { blockHeight: tuple.0 }
10481                }
10482            }
10483        }
10484        {
10485            #[doc(hidden)]
10486            #[allow(dead_code)]
10487            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10488            #[doc(hidden)]
10489            type UnderlyingRustTuple<'a> = (bool,);
10490            #[cfg(test)]
10491            #[allow(dead_code, unreachable_patterns)]
10492            fn _type_assertion(
10493                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10494            ) {
10495                match _t {
10496                    alloy_sol_types::private::AssertTypeEq::<
10497                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10498                    >(_) => {}
10499                }
10500            }
10501            #[automatically_derived]
10502            #[doc(hidden)]
10503            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10504                fn from(value: isEpochRootReturn) -> Self {
10505                    (value._0,)
10506                }
10507            }
10508            #[automatically_derived]
10509            #[doc(hidden)]
10510            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10512                    Self { _0: tuple.0 }
10513                }
10514            }
10515        }
10516        #[automatically_derived]
10517        impl alloy_sol_types::SolCall for isEpochRootCall {
10518            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10519            type Token<'a> = <Self::Parameters<
10520                'a,
10521            > as alloy_sol_types::SolType>::Token<'a>;
10522            type Return = bool;
10523            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10524            type ReturnToken<'a> = <Self::ReturnTuple<
10525                'a,
10526            > as alloy_sol_types::SolType>::Token<'a>;
10527            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10528            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10529            #[inline]
10530            fn new<'a>(
10531                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10532            ) -> Self {
10533                tuple.into()
10534            }
10535            #[inline]
10536            fn tokenize(&self) -> Self::Token<'_> {
10537                (
10538                    <alloy::sol_types::sol_data::Uint<
10539                        64,
10540                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10541                )
10542            }
10543            #[inline]
10544            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10545                (
10546                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10547                        ret,
10548                    ),
10549                )
10550            }
10551            #[inline]
10552            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10553                <Self::ReturnTuple<
10554                    '_,
10555                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10556                    .map(|r| {
10557                        let r: isEpochRootReturn = r.into();
10558                        r._0
10559                    })
10560            }
10561            #[inline]
10562            fn abi_decode_returns_with_config(
10563                data: &[u8],
10564                config: alloy_sol_types::abi::AbiDecoderConfig,
10565            ) -> alloy_sol_types::Result<Self::Return> {
10566                <Self::ReturnTuple<
10567                    '_,
10568                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10569                        data,
10570                        config,
10571                    )
10572                    .map(|r| {
10573                        let r: isEpochRootReturn = r.into();
10574                        r._0
10575                    })
10576            }
10577            #[inline]
10578            fn abi_decode_returns_validate(
10579                data: &[u8],
10580            ) -> alloy_sol_types::Result<Self::Return> {
10581                Self::abi_decode_returns_with_config(
10582                    data,
10583                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10584                )
10585            }
10586        }
10587    };
10588    #[derive(serde::Serialize, serde::Deserialize)]
10589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10590    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10591```solidity
10592function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10593```*/
10594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10595    #[derive(Clone)]
10596    pub struct isGtEpochRootCall {
10597        #[allow(missing_docs)]
10598        pub blockHeight: u64,
10599    }
10600    #[derive(serde::Serialize, serde::Deserialize)]
10601    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10602    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10603    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10604    #[derive(Clone)]
10605    pub struct isGtEpochRootReturn {
10606        #[allow(missing_docs)]
10607        pub _0: bool,
10608    }
10609    #[allow(
10610        non_camel_case_types,
10611        non_snake_case,
10612        clippy::pub_underscore_fields,
10613        clippy::style
10614    )]
10615    const _: () = {
10616        use alloy::sol_types as alloy_sol_types;
10617        {
10618            #[doc(hidden)]
10619            #[allow(dead_code)]
10620            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10621            #[doc(hidden)]
10622            type UnderlyingRustTuple<'a> = (u64,);
10623            #[cfg(test)]
10624            #[allow(dead_code, unreachable_patterns)]
10625            fn _type_assertion(
10626                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10627            ) {
10628                match _t {
10629                    alloy_sol_types::private::AssertTypeEq::<
10630                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10631                    >(_) => {}
10632                }
10633            }
10634            #[automatically_derived]
10635            #[doc(hidden)]
10636            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10637                fn from(value: isGtEpochRootCall) -> Self {
10638                    (value.blockHeight,)
10639                }
10640            }
10641            #[automatically_derived]
10642            #[doc(hidden)]
10643            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10644                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10645                    Self { blockHeight: tuple.0 }
10646                }
10647            }
10648        }
10649        {
10650            #[doc(hidden)]
10651            #[allow(dead_code)]
10652            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10653            #[doc(hidden)]
10654            type UnderlyingRustTuple<'a> = (bool,);
10655            #[cfg(test)]
10656            #[allow(dead_code, unreachable_patterns)]
10657            fn _type_assertion(
10658                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10659            ) {
10660                match _t {
10661                    alloy_sol_types::private::AssertTypeEq::<
10662                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10663                    >(_) => {}
10664                }
10665            }
10666            #[automatically_derived]
10667            #[doc(hidden)]
10668            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10669                fn from(value: isGtEpochRootReturn) -> Self {
10670                    (value._0,)
10671                }
10672            }
10673            #[automatically_derived]
10674            #[doc(hidden)]
10675            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10677                    Self { _0: tuple.0 }
10678                }
10679            }
10680        }
10681        #[automatically_derived]
10682        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10683            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10684            type Token<'a> = <Self::Parameters<
10685                'a,
10686            > as alloy_sol_types::SolType>::Token<'a>;
10687            type Return = bool;
10688            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10689            type ReturnToken<'a> = <Self::ReturnTuple<
10690                'a,
10691            > as alloy_sol_types::SolType>::Token<'a>;
10692            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10693            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10694            #[inline]
10695            fn new<'a>(
10696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10697            ) -> Self {
10698                tuple.into()
10699            }
10700            #[inline]
10701            fn tokenize(&self) -> Self::Token<'_> {
10702                (
10703                    <alloy::sol_types::sol_data::Uint<
10704                        64,
10705                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10706                )
10707            }
10708            #[inline]
10709            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10710                (
10711                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10712                        ret,
10713                    ),
10714                )
10715            }
10716            #[inline]
10717            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10718                <Self::ReturnTuple<
10719                    '_,
10720                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10721                    .map(|r| {
10722                        let r: isGtEpochRootReturn = r.into();
10723                        r._0
10724                    })
10725            }
10726            #[inline]
10727            fn abi_decode_returns_with_config(
10728                data: &[u8],
10729                config: alloy_sol_types::abi::AbiDecoderConfig,
10730            ) -> alloy_sol_types::Result<Self::Return> {
10731                <Self::ReturnTuple<
10732                    '_,
10733                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10734                        data,
10735                        config,
10736                    )
10737                    .map(|r| {
10738                        let r: isGtEpochRootReturn = r.into();
10739                        r._0
10740                    })
10741            }
10742            #[inline]
10743            fn abi_decode_returns_validate(
10744                data: &[u8],
10745            ) -> alloy_sol_types::Result<Self::Return> {
10746                Self::abi_decode_returns_with_config(
10747                    data,
10748                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10749                )
10750            }
10751        }
10752    };
10753    #[derive(serde::Serialize, serde::Deserialize)]
10754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10755    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10756```solidity
10757function isPermissionedProverEnabled() external view returns (bool);
10758```*/
10759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10760    #[derive(Clone)]
10761    pub struct isPermissionedProverEnabledCall;
10762    #[derive(serde::Serialize, serde::Deserialize)]
10763    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10764    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10766    #[derive(Clone)]
10767    pub struct isPermissionedProverEnabledReturn {
10768        #[allow(missing_docs)]
10769        pub _0: bool,
10770    }
10771    #[allow(
10772        non_camel_case_types,
10773        non_snake_case,
10774        clippy::pub_underscore_fields,
10775        clippy::style
10776    )]
10777    const _: () = {
10778        use alloy::sol_types as alloy_sol_types;
10779        {
10780            #[doc(hidden)]
10781            #[allow(dead_code)]
10782            type UnderlyingSolTuple<'a> = ();
10783            #[doc(hidden)]
10784            type UnderlyingRustTuple<'a> = ();
10785            #[cfg(test)]
10786            #[allow(dead_code, unreachable_patterns)]
10787            fn _type_assertion(
10788                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10789            ) {
10790                match _t {
10791                    alloy_sol_types::private::AssertTypeEq::<
10792                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10793                    >(_) => {}
10794                }
10795            }
10796            #[automatically_derived]
10797            #[doc(hidden)]
10798            impl ::core::convert::From<isPermissionedProverEnabledCall>
10799            for UnderlyingRustTuple<'_> {
10800                fn from(value: isPermissionedProverEnabledCall) -> Self {
10801                    ()
10802                }
10803            }
10804            #[automatically_derived]
10805            #[doc(hidden)]
10806            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10807            for isPermissionedProverEnabledCall {
10808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10809                    Self
10810                }
10811            }
10812        }
10813        {
10814            #[doc(hidden)]
10815            #[allow(dead_code)]
10816            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10817            #[doc(hidden)]
10818            type UnderlyingRustTuple<'a> = (bool,);
10819            #[cfg(test)]
10820            #[allow(dead_code, unreachable_patterns)]
10821            fn _type_assertion(
10822                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10823            ) {
10824                match _t {
10825                    alloy_sol_types::private::AssertTypeEq::<
10826                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10827                    >(_) => {}
10828                }
10829            }
10830            #[automatically_derived]
10831            #[doc(hidden)]
10832            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10833            for UnderlyingRustTuple<'_> {
10834                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10835                    (value._0,)
10836                }
10837            }
10838            #[automatically_derived]
10839            #[doc(hidden)]
10840            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10841            for isPermissionedProverEnabledReturn {
10842                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10843                    Self { _0: tuple.0 }
10844                }
10845            }
10846        }
10847        #[automatically_derived]
10848        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10849            type Parameters<'a> = ();
10850            type Token<'a> = <Self::Parameters<
10851                'a,
10852            > as alloy_sol_types::SolType>::Token<'a>;
10853            type Return = bool;
10854            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10855            type ReturnToken<'a> = <Self::ReturnTuple<
10856                'a,
10857            > as alloy_sol_types::SolType>::Token<'a>;
10858            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10859            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10860            #[inline]
10861            fn new<'a>(
10862                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10863            ) -> Self {
10864                tuple.into()
10865            }
10866            #[inline]
10867            fn tokenize(&self) -> Self::Token<'_> {
10868                ()
10869            }
10870            #[inline]
10871            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10872                (
10873                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10874                        ret,
10875                    ),
10876                )
10877            }
10878            #[inline]
10879            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10880                <Self::ReturnTuple<
10881                    '_,
10882                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10883                    .map(|r| {
10884                        let r: isPermissionedProverEnabledReturn = r.into();
10885                        r._0
10886                    })
10887            }
10888            #[inline]
10889            fn abi_decode_returns_with_config(
10890                data: &[u8],
10891                config: alloy_sol_types::abi::AbiDecoderConfig,
10892            ) -> alloy_sol_types::Result<Self::Return> {
10893                <Self::ReturnTuple<
10894                    '_,
10895                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10896                        data,
10897                        config,
10898                    )
10899                    .map(|r| {
10900                        let r: isPermissionedProverEnabledReturn = r.into();
10901                        r._0
10902                    })
10903            }
10904            #[inline]
10905            fn abi_decode_returns_validate(
10906                data: &[u8],
10907            ) -> alloy_sol_types::Result<Self::Return> {
10908                Self::abi_decode_returns_with_config(
10909                    data,
10910                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10911                )
10912            }
10913        }
10914    };
10915    #[derive(serde::Serialize, serde::Deserialize)]
10916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10917    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10918```solidity
10919function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
10920```*/
10921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10922    #[derive(Clone)]
10923    pub struct lagOverEscapeHatchThresholdCall {
10924        #[allow(missing_docs)]
10925        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10926        #[allow(missing_docs)]
10927        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10928    }
10929    #[derive(serde::Serialize, serde::Deserialize)]
10930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10931    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10932    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10933    #[derive(Clone)]
10934    pub struct lagOverEscapeHatchThresholdReturn {
10935        #[allow(missing_docs)]
10936        pub _0: bool,
10937    }
10938    #[allow(
10939        non_camel_case_types,
10940        non_snake_case,
10941        clippy::pub_underscore_fields,
10942        clippy::style
10943    )]
10944    const _: () = {
10945        use alloy::sol_types as alloy_sol_types;
10946        {
10947            #[doc(hidden)]
10948            #[allow(dead_code)]
10949            type UnderlyingSolTuple<'a> = (
10950                alloy::sol_types::sol_data::Uint<256>,
10951                alloy::sol_types::sol_data::Uint<256>,
10952            );
10953            #[doc(hidden)]
10954            type UnderlyingRustTuple<'a> = (
10955                alloy::sol_types::private::primitives::aliases::U256,
10956                alloy::sol_types::private::primitives::aliases::U256,
10957            );
10958            #[cfg(test)]
10959            #[allow(dead_code, unreachable_patterns)]
10960            fn _type_assertion(
10961                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10962            ) {
10963                match _t {
10964                    alloy_sol_types::private::AssertTypeEq::<
10965                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10966                    >(_) => {}
10967                }
10968            }
10969            #[automatically_derived]
10970            #[doc(hidden)]
10971            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10972            for UnderlyingRustTuple<'_> {
10973                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10974                    (value.blockNumber, value.blockThreshold)
10975                }
10976            }
10977            #[automatically_derived]
10978            #[doc(hidden)]
10979            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10980            for lagOverEscapeHatchThresholdCall {
10981                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10982                    Self {
10983                        blockNumber: tuple.0,
10984                        blockThreshold: tuple.1,
10985                    }
10986                }
10987            }
10988        }
10989        {
10990            #[doc(hidden)]
10991            #[allow(dead_code)]
10992            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10993            #[doc(hidden)]
10994            type UnderlyingRustTuple<'a> = (bool,);
10995            #[cfg(test)]
10996            #[allow(dead_code, unreachable_patterns)]
10997            fn _type_assertion(
10998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10999            ) {
11000                match _t {
11001                    alloy_sol_types::private::AssertTypeEq::<
11002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11003                    >(_) => {}
11004                }
11005            }
11006            #[automatically_derived]
11007            #[doc(hidden)]
11008            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11009            for UnderlyingRustTuple<'_> {
11010                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11011                    (value._0,)
11012                }
11013            }
11014            #[automatically_derived]
11015            #[doc(hidden)]
11016            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11017            for lagOverEscapeHatchThresholdReturn {
11018                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11019                    Self { _0: tuple.0 }
11020                }
11021            }
11022        }
11023        #[automatically_derived]
11024        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11025            type Parameters<'a> = (
11026                alloy::sol_types::sol_data::Uint<256>,
11027                alloy::sol_types::sol_data::Uint<256>,
11028            );
11029            type Token<'a> = <Self::Parameters<
11030                'a,
11031            > as alloy_sol_types::SolType>::Token<'a>;
11032            type Return = bool;
11033            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11034            type ReturnToken<'a> = <Self::ReturnTuple<
11035                'a,
11036            > as alloy_sol_types::SolType>::Token<'a>;
11037            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11038            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11039            #[inline]
11040            fn new<'a>(
11041                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11042            ) -> Self {
11043                tuple.into()
11044            }
11045            #[inline]
11046            fn tokenize(&self) -> Self::Token<'_> {
11047                (
11048                    <alloy::sol_types::sol_data::Uint<
11049                        256,
11050                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11051                    <alloy::sol_types::sol_data::Uint<
11052                        256,
11053                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
11054                )
11055            }
11056            #[inline]
11057            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11058                (
11059                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11060                        ret,
11061                    ),
11062                )
11063            }
11064            #[inline]
11065            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11066                <Self::ReturnTuple<
11067                    '_,
11068                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11069                    .map(|r| {
11070                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11071                        r._0
11072                    })
11073            }
11074            #[inline]
11075            fn abi_decode_returns_with_config(
11076                data: &[u8],
11077                config: alloy_sol_types::abi::AbiDecoderConfig,
11078            ) -> alloy_sol_types::Result<Self::Return> {
11079                <Self::ReturnTuple<
11080                    '_,
11081                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11082                        data,
11083                        config,
11084                    )
11085                    .map(|r| {
11086                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11087                        r._0
11088                    })
11089            }
11090            #[inline]
11091            fn abi_decode_returns_validate(
11092                data: &[u8],
11093            ) -> alloy_sol_types::Result<Self::Return> {
11094                Self::abi_decode_returns_with_config(
11095                    data,
11096                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11097                )
11098            }
11099        }
11100    };
11101    #[derive(serde::Serialize, serde::Deserialize)]
11102    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11103    /**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`.
11104```solidity
11105function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11106```*/
11107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11108    #[derive(Clone)]
11109    pub struct newFinalizedState_0Call {
11110        #[allow(missing_docs)]
11111        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11112        #[allow(missing_docs)]
11113        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11114    }
11115    ///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.
11116    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11117    #[derive(Clone)]
11118    pub struct newFinalizedState_0Return {}
11119    #[allow(
11120        non_camel_case_types,
11121        non_snake_case,
11122        clippy::pub_underscore_fields,
11123        clippy::style
11124    )]
11125    const _: () = {
11126        use alloy::sol_types as alloy_sol_types;
11127        {
11128            #[doc(hidden)]
11129            #[allow(dead_code)]
11130            type UnderlyingSolTuple<'a> = (
11131                LightClient::LightClientState,
11132                IPlonkVerifier::PlonkProof,
11133            );
11134            #[doc(hidden)]
11135            type UnderlyingRustTuple<'a> = (
11136                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11137                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11138            );
11139            #[cfg(test)]
11140            #[allow(dead_code, unreachable_patterns)]
11141            fn _type_assertion(
11142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11143            ) {
11144                match _t {
11145                    alloy_sol_types::private::AssertTypeEq::<
11146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11147                    >(_) => {}
11148                }
11149            }
11150            #[automatically_derived]
11151            #[doc(hidden)]
11152            impl ::core::convert::From<newFinalizedState_0Call>
11153            for UnderlyingRustTuple<'_> {
11154                fn from(value: newFinalizedState_0Call) -> Self {
11155                    (value._0, value._1)
11156                }
11157            }
11158            #[automatically_derived]
11159            #[doc(hidden)]
11160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11161            for newFinalizedState_0Call {
11162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11163                    Self { _0: tuple.0, _1: tuple.1 }
11164                }
11165            }
11166        }
11167        {
11168            #[doc(hidden)]
11169            #[allow(dead_code)]
11170            type UnderlyingSolTuple<'a> = ();
11171            #[doc(hidden)]
11172            type UnderlyingRustTuple<'a> = ();
11173            #[cfg(test)]
11174            #[allow(dead_code, unreachable_patterns)]
11175            fn _type_assertion(
11176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11177            ) {
11178                match _t {
11179                    alloy_sol_types::private::AssertTypeEq::<
11180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11181                    >(_) => {}
11182                }
11183            }
11184            #[automatically_derived]
11185            #[doc(hidden)]
11186            impl ::core::convert::From<newFinalizedState_0Return>
11187            for UnderlyingRustTuple<'_> {
11188                fn from(value: newFinalizedState_0Return) -> Self {
11189                    ()
11190                }
11191            }
11192            #[automatically_derived]
11193            #[doc(hidden)]
11194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11195            for newFinalizedState_0Return {
11196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11197                    Self {}
11198                }
11199            }
11200        }
11201        impl newFinalizedState_0Return {
11202            fn _tokenize(
11203                &self,
11204            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11205                ()
11206            }
11207        }
11208        #[automatically_derived]
11209        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11210            type Parameters<'a> = (
11211                LightClient::LightClientState,
11212                IPlonkVerifier::PlonkProof,
11213            );
11214            type Token<'a> = <Self::Parameters<
11215                'a,
11216            > as alloy_sol_types::SolType>::Token<'a>;
11217            type Return = newFinalizedState_0Return;
11218            type ReturnTuple<'a> = ();
11219            type ReturnToken<'a> = <Self::ReturnTuple<
11220                'a,
11221            > as alloy_sol_types::SolType>::Token<'a>;
11222            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))";
11223            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11224            #[inline]
11225            fn new<'a>(
11226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11227            ) -> Self {
11228                tuple.into()
11229            }
11230            #[inline]
11231            fn tokenize(&self) -> Self::Token<'_> {
11232                (
11233                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11234                        &self._0,
11235                    ),
11236                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11237                        &self._1,
11238                    ),
11239                )
11240            }
11241            #[inline]
11242            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11243                newFinalizedState_0Return::_tokenize(ret)
11244            }
11245            #[inline]
11246            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11247                <Self::ReturnTuple<
11248                    '_,
11249                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11250                    .map(Into::into)
11251            }
11252            #[inline]
11253            fn abi_decode_returns_with_config(
11254                data: &[u8],
11255                config: alloy_sol_types::abi::AbiDecoderConfig,
11256            ) -> alloy_sol_types::Result<Self::Return> {
11257                <Self::ReturnTuple<
11258                    '_,
11259                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11260                        data,
11261                        config,
11262                    )
11263                    .map(Into::into)
11264            }
11265            #[inline]
11266            fn abi_decode_returns_validate(
11267                data: &[u8],
11268            ) -> alloy_sol_types::Result<Self::Return> {
11269                Self::abi_decode_returns_with_config(
11270                    data,
11271                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11272                )
11273            }
11274        }
11275    };
11276    #[derive(serde::Serialize, serde::Deserialize)]
11277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11278    /**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`.
11279```solidity
11280function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11281```*/
11282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11283    #[derive(Clone)]
11284    pub struct newFinalizedState_1Call {
11285        #[allow(missing_docs)]
11286        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11287        #[allow(missing_docs)]
11288        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11289        #[allow(missing_docs)]
11290        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11291    }
11292    ///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.
11293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11294    #[derive(Clone)]
11295    pub struct newFinalizedState_1Return {}
11296    #[allow(
11297        non_camel_case_types,
11298        non_snake_case,
11299        clippy::pub_underscore_fields,
11300        clippy::style
11301    )]
11302    const _: () = {
11303        use alloy::sol_types as alloy_sol_types;
11304        {
11305            #[doc(hidden)]
11306            #[allow(dead_code)]
11307            type UnderlyingSolTuple<'a> = (
11308                LightClient::LightClientState,
11309                LightClient::StakeTableState,
11310                IPlonkVerifier::PlonkProof,
11311            );
11312            #[doc(hidden)]
11313            type UnderlyingRustTuple<'a> = (
11314                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11315                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11316                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11317            );
11318            #[cfg(test)]
11319            #[allow(dead_code, unreachable_patterns)]
11320            fn _type_assertion(
11321                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11322            ) {
11323                match _t {
11324                    alloy_sol_types::private::AssertTypeEq::<
11325                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11326                    >(_) => {}
11327                }
11328            }
11329            #[automatically_derived]
11330            #[doc(hidden)]
11331            impl ::core::convert::From<newFinalizedState_1Call>
11332            for UnderlyingRustTuple<'_> {
11333                fn from(value: newFinalizedState_1Call) -> Self {
11334                    (value.newState, value.nextStakeTable, value.proof)
11335                }
11336            }
11337            #[automatically_derived]
11338            #[doc(hidden)]
11339            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11340            for newFinalizedState_1Call {
11341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11342                    Self {
11343                        newState: tuple.0,
11344                        nextStakeTable: tuple.1,
11345                        proof: tuple.2,
11346                    }
11347                }
11348            }
11349        }
11350        {
11351            #[doc(hidden)]
11352            #[allow(dead_code)]
11353            type UnderlyingSolTuple<'a> = ();
11354            #[doc(hidden)]
11355            type UnderlyingRustTuple<'a> = ();
11356            #[cfg(test)]
11357            #[allow(dead_code, unreachable_patterns)]
11358            fn _type_assertion(
11359                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11360            ) {
11361                match _t {
11362                    alloy_sol_types::private::AssertTypeEq::<
11363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11364                    >(_) => {}
11365                }
11366            }
11367            #[automatically_derived]
11368            #[doc(hidden)]
11369            impl ::core::convert::From<newFinalizedState_1Return>
11370            for UnderlyingRustTuple<'_> {
11371                fn from(value: newFinalizedState_1Return) -> Self {
11372                    ()
11373                }
11374            }
11375            #[automatically_derived]
11376            #[doc(hidden)]
11377            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11378            for newFinalizedState_1Return {
11379                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11380                    Self {}
11381                }
11382            }
11383        }
11384        impl newFinalizedState_1Return {
11385            fn _tokenize(
11386                &self,
11387            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11388                ()
11389            }
11390        }
11391        #[automatically_derived]
11392        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11393            type Parameters<'a> = (
11394                LightClient::LightClientState,
11395                LightClient::StakeTableState,
11396                IPlonkVerifier::PlonkProof,
11397            );
11398            type Token<'a> = <Self::Parameters<
11399                'a,
11400            > as alloy_sol_types::SolType>::Token<'a>;
11401            type Return = newFinalizedState_1Return;
11402            type ReturnTuple<'a> = ();
11403            type ReturnToken<'a> = <Self::ReturnTuple<
11404                'a,
11405            > as alloy_sol_types::SolType>::Token<'a>;
11406            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))";
11407            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11408            #[inline]
11409            fn new<'a>(
11410                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11411            ) -> Self {
11412                tuple.into()
11413            }
11414            #[inline]
11415            fn tokenize(&self) -> Self::Token<'_> {
11416                (
11417                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11418                        &self.newState,
11419                    ),
11420                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11421                        &self.nextStakeTable,
11422                    ),
11423                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11424                        &self.proof,
11425                    ),
11426                )
11427            }
11428            #[inline]
11429            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11430                newFinalizedState_1Return::_tokenize(ret)
11431            }
11432            #[inline]
11433            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11434                <Self::ReturnTuple<
11435                    '_,
11436                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11437                    .map(Into::into)
11438            }
11439            #[inline]
11440            fn abi_decode_returns_with_config(
11441                data: &[u8],
11442                config: alloy_sol_types::abi::AbiDecoderConfig,
11443            ) -> alloy_sol_types::Result<Self::Return> {
11444                <Self::ReturnTuple<
11445                    '_,
11446                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11447                        data,
11448                        config,
11449                    )
11450                    .map(Into::into)
11451            }
11452            #[inline]
11453            fn abi_decode_returns_validate(
11454                data: &[u8],
11455            ) -> alloy_sol_types::Result<Self::Return> {
11456                Self::abi_decode_returns_with_config(
11457                    data,
11458                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11459                )
11460            }
11461        }
11462    };
11463    #[derive(serde::Serialize, serde::Deserialize)]
11464    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11465    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11466```solidity
11467function owner() external view returns (address);
11468```*/
11469    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11470    #[derive(Clone)]
11471    pub struct ownerCall;
11472    #[derive(serde::Serialize, serde::Deserialize)]
11473    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11474    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11475    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11476    #[derive(Clone)]
11477    pub struct ownerReturn {
11478        #[allow(missing_docs)]
11479        pub _0: alloy::sol_types::private::Address,
11480    }
11481    #[allow(
11482        non_camel_case_types,
11483        non_snake_case,
11484        clippy::pub_underscore_fields,
11485        clippy::style
11486    )]
11487    const _: () = {
11488        use alloy::sol_types as alloy_sol_types;
11489        {
11490            #[doc(hidden)]
11491            #[allow(dead_code)]
11492            type UnderlyingSolTuple<'a> = ();
11493            #[doc(hidden)]
11494            type UnderlyingRustTuple<'a> = ();
11495            #[cfg(test)]
11496            #[allow(dead_code, unreachable_patterns)]
11497            fn _type_assertion(
11498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11499            ) {
11500                match _t {
11501                    alloy_sol_types::private::AssertTypeEq::<
11502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11503                    >(_) => {}
11504                }
11505            }
11506            #[automatically_derived]
11507            #[doc(hidden)]
11508            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11509                fn from(value: ownerCall) -> Self {
11510                    ()
11511                }
11512            }
11513            #[automatically_derived]
11514            #[doc(hidden)]
11515            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11516                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11517                    Self
11518                }
11519            }
11520        }
11521        {
11522            #[doc(hidden)]
11523            #[allow(dead_code)]
11524            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11525            #[doc(hidden)]
11526            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11527            #[cfg(test)]
11528            #[allow(dead_code, unreachable_patterns)]
11529            fn _type_assertion(
11530                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11531            ) {
11532                match _t {
11533                    alloy_sol_types::private::AssertTypeEq::<
11534                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11535                    >(_) => {}
11536                }
11537            }
11538            #[automatically_derived]
11539            #[doc(hidden)]
11540            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11541                fn from(value: ownerReturn) -> Self {
11542                    (value._0,)
11543                }
11544            }
11545            #[automatically_derived]
11546            #[doc(hidden)]
11547            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11548                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11549                    Self { _0: tuple.0 }
11550                }
11551            }
11552        }
11553        #[automatically_derived]
11554        impl alloy_sol_types::SolCall for ownerCall {
11555            type Parameters<'a> = ();
11556            type Token<'a> = <Self::Parameters<
11557                'a,
11558            > as alloy_sol_types::SolType>::Token<'a>;
11559            type Return = alloy::sol_types::private::Address;
11560            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11561            type ReturnToken<'a> = <Self::ReturnTuple<
11562                'a,
11563            > as alloy_sol_types::SolType>::Token<'a>;
11564            const SIGNATURE: &'static str = "owner()";
11565            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11566            #[inline]
11567            fn new<'a>(
11568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11569            ) -> Self {
11570                tuple.into()
11571            }
11572            #[inline]
11573            fn tokenize(&self) -> Self::Token<'_> {
11574                ()
11575            }
11576            #[inline]
11577            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11578                (
11579                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11580                        ret,
11581                    ),
11582                )
11583            }
11584            #[inline]
11585            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11586                <Self::ReturnTuple<
11587                    '_,
11588                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11589                    .map(|r| {
11590                        let r: ownerReturn = r.into();
11591                        r._0
11592                    })
11593            }
11594            #[inline]
11595            fn abi_decode_returns_with_config(
11596                data: &[u8],
11597                config: alloy_sol_types::abi::AbiDecoderConfig,
11598            ) -> alloy_sol_types::Result<Self::Return> {
11599                <Self::ReturnTuple<
11600                    '_,
11601                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11602                        data,
11603                        config,
11604                    )
11605                    .map(|r| {
11606                        let r: ownerReturn = r.into();
11607                        r._0
11608                    })
11609            }
11610            #[inline]
11611            fn abi_decode_returns_validate(
11612                data: &[u8],
11613            ) -> alloy_sol_types::Result<Self::Return> {
11614                Self::abi_decode_returns_with_config(
11615                    data,
11616                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11617                )
11618            }
11619        }
11620    };
11621    #[derive(serde::Serialize, serde::Deserialize)]
11622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11623    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11624```solidity
11625function permissionedProver() external view returns (address);
11626```*/
11627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11628    #[derive(Clone)]
11629    pub struct permissionedProverCall;
11630    #[derive(serde::Serialize, serde::Deserialize)]
11631    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11632    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11634    #[derive(Clone)]
11635    pub struct permissionedProverReturn {
11636        #[allow(missing_docs)]
11637        pub _0: alloy::sol_types::private::Address,
11638    }
11639    #[allow(
11640        non_camel_case_types,
11641        non_snake_case,
11642        clippy::pub_underscore_fields,
11643        clippy::style
11644    )]
11645    const _: () = {
11646        use alloy::sol_types as alloy_sol_types;
11647        {
11648            #[doc(hidden)]
11649            #[allow(dead_code)]
11650            type UnderlyingSolTuple<'a> = ();
11651            #[doc(hidden)]
11652            type UnderlyingRustTuple<'a> = ();
11653            #[cfg(test)]
11654            #[allow(dead_code, unreachable_patterns)]
11655            fn _type_assertion(
11656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11657            ) {
11658                match _t {
11659                    alloy_sol_types::private::AssertTypeEq::<
11660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11661                    >(_) => {}
11662                }
11663            }
11664            #[automatically_derived]
11665            #[doc(hidden)]
11666            impl ::core::convert::From<permissionedProverCall>
11667            for UnderlyingRustTuple<'_> {
11668                fn from(value: permissionedProverCall) -> Self {
11669                    ()
11670                }
11671            }
11672            #[automatically_derived]
11673            #[doc(hidden)]
11674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11675            for permissionedProverCall {
11676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11677                    Self
11678                }
11679            }
11680        }
11681        {
11682            #[doc(hidden)]
11683            #[allow(dead_code)]
11684            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11685            #[doc(hidden)]
11686            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11687            #[cfg(test)]
11688            #[allow(dead_code, unreachable_patterns)]
11689            fn _type_assertion(
11690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11691            ) {
11692                match _t {
11693                    alloy_sol_types::private::AssertTypeEq::<
11694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11695                    >(_) => {}
11696                }
11697            }
11698            #[automatically_derived]
11699            #[doc(hidden)]
11700            impl ::core::convert::From<permissionedProverReturn>
11701            for UnderlyingRustTuple<'_> {
11702                fn from(value: permissionedProverReturn) -> Self {
11703                    (value._0,)
11704                }
11705            }
11706            #[automatically_derived]
11707            #[doc(hidden)]
11708            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11709            for permissionedProverReturn {
11710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11711                    Self { _0: tuple.0 }
11712                }
11713            }
11714        }
11715        #[automatically_derived]
11716        impl alloy_sol_types::SolCall for permissionedProverCall {
11717            type Parameters<'a> = ();
11718            type Token<'a> = <Self::Parameters<
11719                'a,
11720            > as alloy_sol_types::SolType>::Token<'a>;
11721            type Return = alloy::sol_types::private::Address;
11722            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11723            type ReturnToken<'a> = <Self::ReturnTuple<
11724                'a,
11725            > as alloy_sol_types::SolType>::Token<'a>;
11726            const SIGNATURE: &'static str = "permissionedProver()";
11727            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11728            #[inline]
11729            fn new<'a>(
11730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11731            ) -> Self {
11732                tuple.into()
11733            }
11734            #[inline]
11735            fn tokenize(&self) -> Self::Token<'_> {
11736                ()
11737            }
11738            #[inline]
11739            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11740                (
11741                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11742                        ret,
11743                    ),
11744                )
11745            }
11746            #[inline]
11747            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11748                <Self::ReturnTuple<
11749                    '_,
11750                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11751                    .map(|r| {
11752                        let r: permissionedProverReturn = r.into();
11753                        r._0
11754                    })
11755            }
11756            #[inline]
11757            fn abi_decode_returns_with_config(
11758                data: &[u8],
11759                config: alloy_sol_types::abi::AbiDecoderConfig,
11760            ) -> alloy_sol_types::Result<Self::Return> {
11761                <Self::ReturnTuple<
11762                    '_,
11763                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11764                        data,
11765                        config,
11766                    )
11767                    .map(|r| {
11768                        let r: permissionedProverReturn = r.into();
11769                        r._0
11770                    })
11771            }
11772            #[inline]
11773            fn abi_decode_returns_validate(
11774                data: &[u8],
11775            ) -> alloy_sol_types::Result<Self::Return> {
11776                Self::abi_decode_returns_with_config(
11777                    data,
11778                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11779                )
11780            }
11781        }
11782    };
11783    #[derive(serde::Serialize, serde::Deserialize)]
11784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11785    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11786```solidity
11787function proxiableUUID() external view returns (bytes32);
11788```*/
11789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11790    #[derive(Clone)]
11791    pub struct proxiableUUIDCall;
11792    #[derive(serde::Serialize, serde::Deserialize)]
11793    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11794    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11796    #[derive(Clone)]
11797    pub struct proxiableUUIDReturn {
11798        #[allow(missing_docs)]
11799        pub _0: alloy::sol_types::private::FixedBytes<32>,
11800    }
11801    #[allow(
11802        non_camel_case_types,
11803        non_snake_case,
11804        clippy::pub_underscore_fields,
11805        clippy::style
11806    )]
11807    const _: () = {
11808        use alloy::sol_types as alloy_sol_types;
11809        {
11810            #[doc(hidden)]
11811            #[allow(dead_code)]
11812            type UnderlyingSolTuple<'a> = ();
11813            #[doc(hidden)]
11814            type UnderlyingRustTuple<'a> = ();
11815            #[cfg(test)]
11816            #[allow(dead_code, unreachable_patterns)]
11817            fn _type_assertion(
11818                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11819            ) {
11820                match _t {
11821                    alloy_sol_types::private::AssertTypeEq::<
11822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11823                    >(_) => {}
11824                }
11825            }
11826            #[automatically_derived]
11827            #[doc(hidden)]
11828            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11829                fn from(value: proxiableUUIDCall) -> Self {
11830                    ()
11831                }
11832            }
11833            #[automatically_derived]
11834            #[doc(hidden)]
11835            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11836                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11837                    Self
11838                }
11839            }
11840        }
11841        {
11842            #[doc(hidden)]
11843            #[allow(dead_code)]
11844            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11845            #[doc(hidden)]
11846            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11847            #[cfg(test)]
11848            #[allow(dead_code, unreachable_patterns)]
11849            fn _type_assertion(
11850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11851            ) {
11852                match _t {
11853                    alloy_sol_types::private::AssertTypeEq::<
11854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11855                    >(_) => {}
11856                }
11857            }
11858            #[automatically_derived]
11859            #[doc(hidden)]
11860            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11861                fn from(value: proxiableUUIDReturn) -> Self {
11862                    (value._0,)
11863                }
11864            }
11865            #[automatically_derived]
11866            #[doc(hidden)]
11867            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11868                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11869                    Self { _0: tuple.0 }
11870                }
11871            }
11872        }
11873        #[automatically_derived]
11874        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11875            type Parameters<'a> = ();
11876            type Token<'a> = <Self::Parameters<
11877                'a,
11878            > as alloy_sol_types::SolType>::Token<'a>;
11879            type Return = alloy::sol_types::private::FixedBytes<32>;
11880            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11881            type ReturnToken<'a> = <Self::ReturnTuple<
11882                'a,
11883            > as alloy_sol_types::SolType>::Token<'a>;
11884            const SIGNATURE: &'static str = "proxiableUUID()";
11885            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11886            #[inline]
11887            fn new<'a>(
11888                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11889            ) -> Self {
11890                tuple.into()
11891            }
11892            #[inline]
11893            fn tokenize(&self) -> Self::Token<'_> {
11894                ()
11895            }
11896            #[inline]
11897            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11898                (
11899                    <alloy::sol_types::sol_data::FixedBytes<
11900                        32,
11901                    > as alloy_sol_types::SolType>::tokenize(ret),
11902                )
11903            }
11904            #[inline]
11905            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11906                <Self::ReturnTuple<
11907                    '_,
11908                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11909                    .map(|r| {
11910                        let r: proxiableUUIDReturn = r.into();
11911                        r._0
11912                    })
11913            }
11914            #[inline]
11915            fn abi_decode_returns_with_config(
11916                data: &[u8],
11917                config: alloy_sol_types::abi::AbiDecoderConfig,
11918            ) -> alloy_sol_types::Result<Self::Return> {
11919                <Self::ReturnTuple<
11920                    '_,
11921                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11922                        data,
11923                        config,
11924                    )
11925                    .map(|r| {
11926                        let r: proxiableUUIDReturn = r.into();
11927                        r._0
11928                    })
11929            }
11930            #[inline]
11931            fn abi_decode_returns_validate(
11932                data: &[u8],
11933            ) -> alloy_sol_types::Result<Self::Return> {
11934                Self::abi_decode_returns_with_config(
11935                    data,
11936                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11937                )
11938            }
11939        }
11940    };
11941    #[derive(serde::Serialize, serde::Deserialize)]
11942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11943    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11944```solidity
11945function renounceOwnership() external;
11946```*/
11947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11948    #[derive(Clone)]
11949    pub struct renounceOwnershipCall;
11950    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11951    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11952    #[derive(Clone)]
11953    pub struct renounceOwnershipReturn {}
11954    #[allow(
11955        non_camel_case_types,
11956        non_snake_case,
11957        clippy::pub_underscore_fields,
11958        clippy::style
11959    )]
11960    const _: () = {
11961        use alloy::sol_types as alloy_sol_types;
11962        {
11963            #[doc(hidden)]
11964            #[allow(dead_code)]
11965            type UnderlyingSolTuple<'a> = ();
11966            #[doc(hidden)]
11967            type UnderlyingRustTuple<'a> = ();
11968            #[cfg(test)]
11969            #[allow(dead_code, unreachable_patterns)]
11970            fn _type_assertion(
11971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11972            ) {
11973                match _t {
11974                    alloy_sol_types::private::AssertTypeEq::<
11975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11976                    >(_) => {}
11977                }
11978            }
11979            #[automatically_derived]
11980            #[doc(hidden)]
11981            impl ::core::convert::From<renounceOwnershipCall>
11982            for UnderlyingRustTuple<'_> {
11983                fn from(value: renounceOwnershipCall) -> Self {
11984                    ()
11985                }
11986            }
11987            #[automatically_derived]
11988            #[doc(hidden)]
11989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11990            for renounceOwnershipCall {
11991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11992                    Self
11993                }
11994            }
11995        }
11996        {
11997            #[doc(hidden)]
11998            #[allow(dead_code)]
11999            type UnderlyingSolTuple<'a> = ();
12000            #[doc(hidden)]
12001            type UnderlyingRustTuple<'a> = ();
12002            #[cfg(test)]
12003            #[allow(dead_code, unreachable_patterns)]
12004            fn _type_assertion(
12005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12006            ) {
12007                match _t {
12008                    alloy_sol_types::private::AssertTypeEq::<
12009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12010                    >(_) => {}
12011                }
12012            }
12013            #[automatically_derived]
12014            #[doc(hidden)]
12015            impl ::core::convert::From<renounceOwnershipReturn>
12016            for UnderlyingRustTuple<'_> {
12017                fn from(value: renounceOwnershipReturn) -> Self {
12018                    ()
12019                }
12020            }
12021            #[automatically_derived]
12022            #[doc(hidden)]
12023            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12024            for renounceOwnershipReturn {
12025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12026                    Self {}
12027                }
12028            }
12029        }
12030        impl renounceOwnershipReturn {
12031            fn _tokenize(
12032                &self,
12033            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12034                ()
12035            }
12036        }
12037        #[automatically_derived]
12038        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12039            type Parameters<'a> = ();
12040            type Token<'a> = <Self::Parameters<
12041                'a,
12042            > as alloy_sol_types::SolType>::Token<'a>;
12043            type Return = renounceOwnershipReturn;
12044            type ReturnTuple<'a> = ();
12045            type ReturnToken<'a> = <Self::ReturnTuple<
12046                'a,
12047            > as alloy_sol_types::SolType>::Token<'a>;
12048            const SIGNATURE: &'static str = "renounceOwnership()";
12049            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12050            #[inline]
12051            fn new<'a>(
12052                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12053            ) -> Self {
12054                tuple.into()
12055            }
12056            #[inline]
12057            fn tokenize(&self) -> Self::Token<'_> {
12058                ()
12059            }
12060            #[inline]
12061            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12062                renounceOwnershipReturn::_tokenize(ret)
12063            }
12064            #[inline]
12065            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12066                <Self::ReturnTuple<
12067                    '_,
12068                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12069                    .map(Into::into)
12070            }
12071            #[inline]
12072            fn abi_decode_returns_with_config(
12073                data: &[u8],
12074                config: alloy_sol_types::abi::AbiDecoderConfig,
12075            ) -> alloy_sol_types::Result<Self::Return> {
12076                <Self::ReturnTuple<
12077                    '_,
12078                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12079                        data,
12080                        config,
12081                    )
12082                    .map(Into::into)
12083            }
12084            #[inline]
12085            fn abi_decode_returns_validate(
12086                data: &[u8],
12087            ) -> alloy_sol_types::Result<Self::Return> {
12088                Self::abi_decode_returns_with_config(
12089                    data,
12090                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12091                )
12092            }
12093        }
12094    };
12095    #[derive(serde::Serialize, serde::Deserialize)]
12096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12097    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12098```solidity
12099function setPermissionedProver(address prover) external;
12100```*/
12101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12102    #[derive(Clone)]
12103    pub struct setPermissionedProverCall {
12104        #[allow(missing_docs)]
12105        pub prover: alloy::sol_types::private::Address,
12106    }
12107    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12109    #[derive(Clone)]
12110    pub struct setPermissionedProverReturn {}
12111    #[allow(
12112        non_camel_case_types,
12113        non_snake_case,
12114        clippy::pub_underscore_fields,
12115        clippy::style
12116    )]
12117    const _: () = {
12118        use alloy::sol_types as alloy_sol_types;
12119        {
12120            #[doc(hidden)]
12121            #[allow(dead_code)]
12122            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12123            #[doc(hidden)]
12124            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12125            #[cfg(test)]
12126            #[allow(dead_code, unreachable_patterns)]
12127            fn _type_assertion(
12128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12129            ) {
12130                match _t {
12131                    alloy_sol_types::private::AssertTypeEq::<
12132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12133                    >(_) => {}
12134                }
12135            }
12136            #[automatically_derived]
12137            #[doc(hidden)]
12138            impl ::core::convert::From<setPermissionedProverCall>
12139            for UnderlyingRustTuple<'_> {
12140                fn from(value: setPermissionedProverCall) -> Self {
12141                    (value.prover,)
12142                }
12143            }
12144            #[automatically_derived]
12145            #[doc(hidden)]
12146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12147            for setPermissionedProverCall {
12148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12149                    Self { prover: tuple.0 }
12150                }
12151            }
12152        }
12153        {
12154            #[doc(hidden)]
12155            #[allow(dead_code)]
12156            type UnderlyingSolTuple<'a> = ();
12157            #[doc(hidden)]
12158            type UnderlyingRustTuple<'a> = ();
12159            #[cfg(test)]
12160            #[allow(dead_code, unreachable_patterns)]
12161            fn _type_assertion(
12162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12163            ) {
12164                match _t {
12165                    alloy_sol_types::private::AssertTypeEq::<
12166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12167                    >(_) => {}
12168                }
12169            }
12170            #[automatically_derived]
12171            #[doc(hidden)]
12172            impl ::core::convert::From<setPermissionedProverReturn>
12173            for UnderlyingRustTuple<'_> {
12174                fn from(value: setPermissionedProverReturn) -> Self {
12175                    ()
12176                }
12177            }
12178            #[automatically_derived]
12179            #[doc(hidden)]
12180            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12181            for setPermissionedProverReturn {
12182                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12183                    Self {}
12184                }
12185            }
12186        }
12187        impl setPermissionedProverReturn {
12188            fn _tokenize(
12189                &self,
12190            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
12191                '_,
12192            > {
12193                ()
12194            }
12195        }
12196        #[automatically_derived]
12197        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12198            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12199            type Token<'a> = <Self::Parameters<
12200                'a,
12201            > as alloy_sol_types::SolType>::Token<'a>;
12202            type Return = setPermissionedProverReturn;
12203            type ReturnTuple<'a> = ();
12204            type ReturnToken<'a> = <Self::ReturnTuple<
12205                'a,
12206            > as alloy_sol_types::SolType>::Token<'a>;
12207            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12208            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12209            #[inline]
12210            fn new<'a>(
12211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12212            ) -> Self {
12213                tuple.into()
12214            }
12215            #[inline]
12216            fn tokenize(&self) -> Self::Token<'_> {
12217                (
12218                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12219                        &self.prover,
12220                    ),
12221                )
12222            }
12223            #[inline]
12224            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12225                setPermissionedProverReturn::_tokenize(ret)
12226            }
12227            #[inline]
12228            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12229                <Self::ReturnTuple<
12230                    '_,
12231                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12232                    .map(Into::into)
12233            }
12234            #[inline]
12235            fn abi_decode_returns_with_config(
12236                data: &[u8],
12237                config: alloy_sol_types::abi::AbiDecoderConfig,
12238            ) -> alloy_sol_types::Result<Self::Return> {
12239                <Self::ReturnTuple<
12240                    '_,
12241                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12242                        data,
12243                        config,
12244                    )
12245                    .map(Into::into)
12246            }
12247            #[inline]
12248            fn abi_decode_returns_validate(
12249                data: &[u8],
12250            ) -> alloy_sol_types::Result<Self::Return> {
12251                Self::abi_decode_returns_with_config(
12252                    data,
12253                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12254                )
12255            }
12256        }
12257    };
12258    #[derive(serde::Serialize, serde::Deserialize)]
12259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12260    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
12261```solidity
12262function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
12263```*/
12264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12265    #[derive(Clone)]
12266    pub struct setStateHistoryRetentionPeriodCall {
12267        #[allow(missing_docs)]
12268        pub historySeconds: u32,
12269    }
12270    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
12271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12272    #[derive(Clone)]
12273    pub struct setStateHistoryRetentionPeriodReturn {}
12274    #[allow(
12275        non_camel_case_types,
12276        non_snake_case,
12277        clippy::pub_underscore_fields,
12278        clippy::style
12279    )]
12280    const _: () = {
12281        use alloy::sol_types as alloy_sol_types;
12282        {
12283            #[doc(hidden)]
12284            #[allow(dead_code)]
12285            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12286            #[doc(hidden)]
12287            type UnderlyingRustTuple<'a> = (u32,);
12288            #[cfg(test)]
12289            #[allow(dead_code, unreachable_patterns)]
12290            fn _type_assertion(
12291                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12292            ) {
12293                match _t {
12294                    alloy_sol_types::private::AssertTypeEq::<
12295                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12296                    >(_) => {}
12297                }
12298            }
12299            #[automatically_derived]
12300            #[doc(hidden)]
12301            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
12302            for UnderlyingRustTuple<'_> {
12303                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
12304                    (value.historySeconds,)
12305                }
12306            }
12307            #[automatically_derived]
12308            #[doc(hidden)]
12309            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12310            for setStateHistoryRetentionPeriodCall {
12311                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12312                    Self { historySeconds: tuple.0 }
12313                }
12314            }
12315        }
12316        {
12317            #[doc(hidden)]
12318            #[allow(dead_code)]
12319            type UnderlyingSolTuple<'a> = ();
12320            #[doc(hidden)]
12321            type UnderlyingRustTuple<'a> = ();
12322            #[cfg(test)]
12323            #[allow(dead_code, unreachable_patterns)]
12324            fn _type_assertion(
12325                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12326            ) {
12327                match _t {
12328                    alloy_sol_types::private::AssertTypeEq::<
12329                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12330                    >(_) => {}
12331                }
12332            }
12333            #[automatically_derived]
12334            #[doc(hidden)]
12335            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
12336            for UnderlyingRustTuple<'_> {
12337                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
12338                    ()
12339                }
12340            }
12341            #[automatically_derived]
12342            #[doc(hidden)]
12343            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12344            for setStateHistoryRetentionPeriodReturn {
12345                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12346                    Self {}
12347                }
12348            }
12349        }
12350        impl setStateHistoryRetentionPeriodReturn {
12351            fn _tokenize(
12352                &self,
12353            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12354                '_,
12355            > {
12356                ()
12357            }
12358        }
12359        #[automatically_derived]
12360        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12361            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12362            type Token<'a> = <Self::Parameters<
12363                'a,
12364            > as alloy_sol_types::SolType>::Token<'a>;
12365            type Return = setStateHistoryRetentionPeriodReturn;
12366            type ReturnTuple<'a> = ();
12367            type ReturnToken<'a> = <Self::ReturnTuple<
12368                'a,
12369            > as alloy_sol_types::SolType>::Token<'a>;
12370            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12371            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12372            #[inline]
12373            fn new<'a>(
12374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12375            ) -> Self {
12376                tuple.into()
12377            }
12378            #[inline]
12379            fn tokenize(&self) -> Self::Token<'_> {
12380                (
12381                    <alloy::sol_types::sol_data::Uint<
12382                        32,
12383                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12384                )
12385            }
12386            #[inline]
12387            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12388                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
12389            }
12390            #[inline]
12391            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12392                <Self::ReturnTuple<
12393                    '_,
12394                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12395                    .map(Into::into)
12396            }
12397            #[inline]
12398            fn abi_decode_returns_with_config(
12399                data: &[u8],
12400                config: alloy_sol_types::abi::AbiDecoderConfig,
12401            ) -> alloy_sol_types::Result<Self::Return> {
12402                <Self::ReturnTuple<
12403                    '_,
12404                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12405                        data,
12406                        config,
12407                    )
12408                    .map(Into::into)
12409            }
12410            #[inline]
12411            fn abi_decode_returns_validate(
12412                data: &[u8],
12413            ) -> alloy_sol_types::Result<Self::Return> {
12414                Self::abi_decode_returns_with_config(
12415                    data,
12416                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12417                )
12418            }
12419        }
12420    };
12421    #[derive(serde::Serialize, serde::Deserialize)]
12422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12423    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12424```solidity
12425function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12426```*/
12427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12428    #[derive(Clone)]
12429    pub struct setstateHistoryRetentionPeriodCall {
12430        #[allow(missing_docs)]
12431        pub historySeconds: u32,
12432    }
12433    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12435    #[derive(Clone)]
12436    pub struct setstateHistoryRetentionPeriodReturn {}
12437    #[allow(
12438        non_camel_case_types,
12439        non_snake_case,
12440        clippy::pub_underscore_fields,
12441        clippy::style
12442    )]
12443    const _: () = {
12444        use alloy::sol_types as alloy_sol_types;
12445        {
12446            #[doc(hidden)]
12447            #[allow(dead_code)]
12448            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12449            #[doc(hidden)]
12450            type UnderlyingRustTuple<'a> = (u32,);
12451            #[cfg(test)]
12452            #[allow(dead_code, unreachable_patterns)]
12453            fn _type_assertion(
12454                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12455            ) {
12456                match _t {
12457                    alloy_sol_types::private::AssertTypeEq::<
12458                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12459                    >(_) => {}
12460                }
12461            }
12462            #[automatically_derived]
12463            #[doc(hidden)]
12464            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12465            for UnderlyingRustTuple<'_> {
12466                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12467                    (value.historySeconds,)
12468                }
12469            }
12470            #[automatically_derived]
12471            #[doc(hidden)]
12472            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12473            for setstateHistoryRetentionPeriodCall {
12474                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12475                    Self { historySeconds: tuple.0 }
12476                }
12477            }
12478        }
12479        {
12480            #[doc(hidden)]
12481            #[allow(dead_code)]
12482            type UnderlyingSolTuple<'a> = ();
12483            #[doc(hidden)]
12484            type UnderlyingRustTuple<'a> = ();
12485            #[cfg(test)]
12486            #[allow(dead_code, unreachable_patterns)]
12487            fn _type_assertion(
12488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12489            ) {
12490                match _t {
12491                    alloy_sol_types::private::AssertTypeEq::<
12492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12493                    >(_) => {}
12494                }
12495            }
12496            #[automatically_derived]
12497            #[doc(hidden)]
12498            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12499            for UnderlyingRustTuple<'_> {
12500                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12501                    ()
12502                }
12503            }
12504            #[automatically_derived]
12505            #[doc(hidden)]
12506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12507            for setstateHistoryRetentionPeriodReturn {
12508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12509                    Self {}
12510                }
12511            }
12512        }
12513        impl setstateHistoryRetentionPeriodReturn {
12514            fn _tokenize(
12515                &self,
12516            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12517                '_,
12518            > {
12519                ()
12520            }
12521        }
12522        #[automatically_derived]
12523        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12524            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12525            type Token<'a> = <Self::Parameters<
12526                'a,
12527            > as alloy_sol_types::SolType>::Token<'a>;
12528            type Return = setstateHistoryRetentionPeriodReturn;
12529            type ReturnTuple<'a> = ();
12530            type ReturnToken<'a> = <Self::ReturnTuple<
12531                'a,
12532            > as alloy_sol_types::SolType>::Token<'a>;
12533            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12534            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12535            #[inline]
12536            fn new<'a>(
12537                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12538            ) -> Self {
12539                tuple.into()
12540            }
12541            #[inline]
12542            fn tokenize(&self) -> Self::Token<'_> {
12543                (
12544                    <alloy::sol_types::sol_data::Uint<
12545                        32,
12546                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12547                )
12548            }
12549            #[inline]
12550            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12551                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12552            }
12553            #[inline]
12554            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12555                <Self::ReturnTuple<
12556                    '_,
12557                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12558                    .map(Into::into)
12559            }
12560            #[inline]
12561            fn abi_decode_returns_with_config(
12562                data: &[u8],
12563                config: alloy_sol_types::abi::AbiDecoderConfig,
12564            ) -> alloy_sol_types::Result<Self::Return> {
12565                <Self::ReturnTuple<
12566                    '_,
12567                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12568                        data,
12569                        config,
12570                    )
12571                    .map(Into::into)
12572            }
12573            #[inline]
12574            fn abi_decode_returns_validate(
12575                data: &[u8],
12576            ) -> alloy_sol_types::Result<Self::Return> {
12577                Self::abi_decode_returns_with_config(
12578                    data,
12579                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12580                )
12581            }
12582        }
12583    };
12584    #[derive(serde::Serialize, serde::Deserialize)]
12585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12586    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12587```solidity
12588function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12589```*/
12590    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12591    #[derive(Clone)]
12592    pub struct stateHistoryCommitmentsCall(
12593        pub alloy::sol_types::private::primitives::aliases::U256,
12594    );
12595    #[derive(serde::Serialize, serde::Deserialize)]
12596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12597    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12599    #[derive(Clone)]
12600    pub struct stateHistoryCommitmentsReturn {
12601        #[allow(missing_docs)]
12602        pub l1BlockHeight: u64,
12603        #[allow(missing_docs)]
12604        pub l1BlockTimestamp: u64,
12605        #[allow(missing_docs)]
12606        pub hotShotBlockHeight: u64,
12607        #[allow(missing_docs)]
12608        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12609    }
12610    #[allow(
12611        non_camel_case_types,
12612        non_snake_case,
12613        clippy::pub_underscore_fields,
12614        clippy::style
12615    )]
12616    const _: () = {
12617        use alloy::sol_types as alloy_sol_types;
12618        {
12619            #[doc(hidden)]
12620            #[allow(dead_code)]
12621            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12622            #[doc(hidden)]
12623            type UnderlyingRustTuple<'a> = (
12624                alloy::sol_types::private::primitives::aliases::U256,
12625            );
12626            #[cfg(test)]
12627            #[allow(dead_code, unreachable_patterns)]
12628            fn _type_assertion(
12629                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12630            ) {
12631                match _t {
12632                    alloy_sol_types::private::AssertTypeEq::<
12633                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12634                    >(_) => {}
12635                }
12636            }
12637            #[automatically_derived]
12638            #[doc(hidden)]
12639            impl ::core::convert::From<stateHistoryCommitmentsCall>
12640            for UnderlyingRustTuple<'_> {
12641                fn from(value: stateHistoryCommitmentsCall) -> Self {
12642                    (value.0,)
12643                }
12644            }
12645            #[automatically_derived]
12646            #[doc(hidden)]
12647            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12648            for stateHistoryCommitmentsCall {
12649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12650                    Self(tuple.0)
12651                }
12652            }
12653        }
12654        {
12655            #[doc(hidden)]
12656            #[allow(dead_code)]
12657            type UnderlyingSolTuple<'a> = (
12658                alloy::sol_types::sol_data::Uint<64>,
12659                alloy::sol_types::sol_data::Uint<64>,
12660                alloy::sol_types::sol_data::Uint<64>,
12661                BN254::ScalarField,
12662            );
12663            #[doc(hidden)]
12664            type UnderlyingRustTuple<'a> = (
12665                u64,
12666                u64,
12667                u64,
12668                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12669            );
12670            #[cfg(test)]
12671            #[allow(dead_code, unreachable_patterns)]
12672            fn _type_assertion(
12673                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12674            ) {
12675                match _t {
12676                    alloy_sol_types::private::AssertTypeEq::<
12677                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12678                    >(_) => {}
12679                }
12680            }
12681            #[automatically_derived]
12682            #[doc(hidden)]
12683            impl ::core::convert::From<stateHistoryCommitmentsReturn>
12684            for UnderlyingRustTuple<'_> {
12685                fn from(value: stateHistoryCommitmentsReturn) -> Self {
12686                    (
12687                        value.l1BlockHeight,
12688                        value.l1BlockTimestamp,
12689                        value.hotShotBlockHeight,
12690                        value.hotShotBlockCommRoot,
12691                    )
12692                }
12693            }
12694            #[automatically_derived]
12695            #[doc(hidden)]
12696            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12697            for stateHistoryCommitmentsReturn {
12698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12699                    Self {
12700                        l1BlockHeight: tuple.0,
12701                        l1BlockTimestamp: tuple.1,
12702                        hotShotBlockHeight: tuple.2,
12703                        hotShotBlockCommRoot: tuple.3,
12704                    }
12705                }
12706            }
12707        }
12708        impl stateHistoryCommitmentsReturn {
12709            fn _tokenize(
12710                &self,
12711            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
12712                '_,
12713            > {
12714                (
12715                    <alloy::sol_types::sol_data::Uint<
12716                        64,
12717                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
12718                    <alloy::sol_types::sol_data::Uint<
12719                        64,
12720                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
12721                    <alloy::sol_types::sol_data::Uint<
12722                        64,
12723                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
12724                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
12725                        &self.hotShotBlockCommRoot,
12726                    ),
12727                )
12728            }
12729        }
12730        #[automatically_derived]
12731        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12732            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12733            type Token<'a> = <Self::Parameters<
12734                'a,
12735            > as alloy_sol_types::SolType>::Token<'a>;
12736            type Return = stateHistoryCommitmentsReturn;
12737            type ReturnTuple<'a> = (
12738                alloy::sol_types::sol_data::Uint<64>,
12739                alloy::sol_types::sol_data::Uint<64>,
12740                alloy::sol_types::sol_data::Uint<64>,
12741                BN254::ScalarField,
12742            );
12743            type ReturnToken<'a> = <Self::ReturnTuple<
12744                'a,
12745            > as alloy_sol_types::SolType>::Token<'a>;
12746            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12747            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12748            #[inline]
12749            fn new<'a>(
12750                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12751            ) -> Self {
12752                tuple.into()
12753            }
12754            #[inline]
12755            fn tokenize(&self) -> Self::Token<'_> {
12756                (
12757                    <alloy::sol_types::sol_data::Uint<
12758                        256,
12759                    > as alloy_sol_types::SolType>::tokenize(&self.0),
12760                )
12761            }
12762            #[inline]
12763            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12764                stateHistoryCommitmentsReturn::_tokenize(ret)
12765            }
12766            #[inline]
12767            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12768                <Self::ReturnTuple<
12769                    '_,
12770                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12771                    .map(Into::into)
12772            }
12773            #[inline]
12774            fn abi_decode_returns_with_config(
12775                data: &[u8],
12776                config: alloy_sol_types::abi::AbiDecoderConfig,
12777            ) -> alloy_sol_types::Result<Self::Return> {
12778                <Self::ReturnTuple<
12779                    '_,
12780                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12781                        data,
12782                        config,
12783                    )
12784                    .map(Into::into)
12785            }
12786            #[inline]
12787            fn abi_decode_returns_validate(
12788                data: &[u8],
12789            ) -> alloy_sol_types::Result<Self::Return> {
12790                Self::abi_decode_returns_with_config(
12791                    data,
12792                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12793                )
12794            }
12795        }
12796    };
12797    #[derive(serde::Serialize, serde::Deserialize)]
12798    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12799    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12800```solidity
12801function stateHistoryFirstIndex() external view returns (uint64);
12802```*/
12803    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12804    #[derive(Clone)]
12805    pub struct stateHistoryFirstIndexCall;
12806    #[derive(serde::Serialize, serde::Deserialize)]
12807    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12808    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12810    #[derive(Clone)]
12811    pub struct stateHistoryFirstIndexReturn {
12812        #[allow(missing_docs)]
12813        pub _0: u64,
12814    }
12815    #[allow(
12816        non_camel_case_types,
12817        non_snake_case,
12818        clippy::pub_underscore_fields,
12819        clippy::style
12820    )]
12821    const _: () = {
12822        use alloy::sol_types as alloy_sol_types;
12823        {
12824            #[doc(hidden)]
12825            #[allow(dead_code)]
12826            type UnderlyingSolTuple<'a> = ();
12827            #[doc(hidden)]
12828            type UnderlyingRustTuple<'a> = ();
12829            #[cfg(test)]
12830            #[allow(dead_code, unreachable_patterns)]
12831            fn _type_assertion(
12832                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12833            ) {
12834                match _t {
12835                    alloy_sol_types::private::AssertTypeEq::<
12836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12837                    >(_) => {}
12838                }
12839            }
12840            #[automatically_derived]
12841            #[doc(hidden)]
12842            impl ::core::convert::From<stateHistoryFirstIndexCall>
12843            for UnderlyingRustTuple<'_> {
12844                fn from(value: stateHistoryFirstIndexCall) -> Self {
12845                    ()
12846                }
12847            }
12848            #[automatically_derived]
12849            #[doc(hidden)]
12850            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12851            for stateHistoryFirstIndexCall {
12852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12853                    Self
12854                }
12855            }
12856        }
12857        {
12858            #[doc(hidden)]
12859            #[allow(dead_code)]
12860            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12861            #[doc(hidden)]
12862            type UnderlyingRustTuple<'a> = (u64,);
12863            #[cfg(test)]
12864            #[allow(dead_code, unreachable_patterns)]
12865            fn _type_assertion(
12866                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12867            ) {
12868                match _t {
12869                    alloy_sol_types::private::AssertTypeEq::<
12870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12871                    >(_) => {}
12872                }
12873            }
12874            #[automatically_derived]
12875            #[doc(hidden)]
12876            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12877            for UnderlyingRustTuple<'_> {
12878                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12879                    (value._0,)
12880                }
12881            }
12882            #[automatically_derived]
12883            #[doc(hidden)]
12884            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12885            for stateHistoryFirstIndexReturn {
12886                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12887                    Self { _0: tuple.0 }
12888                }
12889            }
12890        }
12891        #[automatically_derived]
12892        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12893            type Parameters<'a> = ();
12894            type Token<'a> = <Self::Parameters<
12895                'a,
12896            > as alloy_sol_types::SolType>::Token<'a>;
12897            type Return = u64;
12898            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12899            type ReturnToken<'a> = <Self::ReturnTuple<
12900                'a,
12901            > as alloy_sol_types::SolType>::Token<'a>;
12902            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12903            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12904            #[inline]
12905            fn new<'a>(
12906                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12907            ) -> Self {
12908                tuple.into()
12909            }
12910            #[inline]
12911            fn tokenize(&self) -> Self::Token<'_> {
12912                ()
12913            }
12914            #[inline]
12915            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12916                (
12917                    <alloy::sol_types::sol_data::Uint<
12918                        64,
12919                    > as alloy_sol_types::SolType>::tokenize(ret),
12920                )
12921            }
12922            #[inline]
12923            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12924                <Self::ReturnTuple<
12925                    '_,
12926                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12927                    .map(|r| {
12928                        let r: stateHistoryFirstIndexReturn = r.into();
12929                        r._0
12930                    })
12931            }
12932            #[inline]
12933            fn abi_decode_returns_with_config(
12934                data: &[u8],
12935                config: alloy_sol_types::abi::AbiDecoderConfig,
12936            ) -> alloy_sol_types::Result<Self::Return> {
12937                <Self::ReturnTuple<
12938                    '_,
12939                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12940                        data,
12941                        config,
12942                    )
12943                    .map(|r| {
12944                        let r: stateHistoryFirstIndexReturn = r.into();
12945                        r._0
12946                    })
12947            }
12948            #[inline]
12949            fn abi_decode_returns_validate(
12950                data: &[u8],
12951            ) -> alloy_sol_types::Result<Self::Return> {
12952                Self::abi_decode_returns_with_config(
12953                    data,
12954                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12955                )
12956            }
12957        }
12958    };
12959    #[derive(serde::Serialize, serde::Deserialize)]
12960    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12961    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12962```solidity
12963function stateHistoryRetentionPeriod() external view returns (uint32);
12964```*/
12965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12966    #[derive(Clone)]
12967    pub struct stateHistoryRetentionPeriodCall;
12968    #[derive(serde::Serialize, serde::Deserialize)]
12969    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12970    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12972    #[derive(Clone)]
12973    pub struct stateHistoryRetentionPeriodReturn {
12974        #[allow(missing_docs)]
12975        pub _0: u32,
12976    }
12977    #[allow(
12978        non_camel_case_types,
12979        non_snake_case,
12980        clippy::pub_underscore_fields,
12981        clippy::style
12982    )]
12983    const _: () = {
12984        use alloy::sol_types as alloy_sol_types;
12985        {
12986            #[doc(hidden)]
12987            #[allow(dead_code)]
12988            type UnderlyingSolTuple<'a> = ();
12989            #[doc(hidden)]
12990            type UnderlyingRustTuple<'a> = ();
12991            #[cfg(test)]
12992            #[allow(dead_code, unreachable_patterns)]
12993            fn _type_assertion(
12994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12995            ) {
12996                match _t {
12997                    alloy_sol_types::private::AssertTypeEq::<
12998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12999                    >(_) => {}
13000                }
13001            }
13002            #[automatically_derived]
13003            #[doc(hidden)]
13004            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13005            for UnderlyingRustTuple<'_> {
13006                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13007                    ()
13008                }
13009            }
13010            #[automatically_derived]
13011            #[doc(hidden)]
13012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13013            for stateHistoryRetentionPeriodCall {
13014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13015                    Self
13016                }
13017            }
13018        }
13019        {
13020            #[doc(hidden)]
13021            #[allow(dead_code)]
13022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13023            #[doc(hidden)]
13024            type UnderlyingRustTuple<'a> = (u32,);
13025            #[cfg(test)]
13026            #[allow(dead_code, unreachable_patterns)]
13027            fn _type_assertion(
13028                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13029            ) {
13030                match _t {
13031                    alloy_sol_types::private::AssertTypeEq::<
13032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13033                    >(_) => {}
13034                }
13035            }
13036            #[automatically_derived]
13037            #[doc(hidden)]
13038            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
13039            for UnderlyingRustTuple<'_> {
13040                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
13041                    (value._0,)
13042                }
13043            }
13044            #[automatically_derived]
13045            #[doc(hidden)]
13046            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13047            for stateHistoryRetentionPeriodReturn {
13048                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13049                    Self { _0: tuple.0 }
13050                }
13051            }
13052        }
13053        #[automatically_derived]
13054        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
13055            type Parameters<'a> = ();
13056            type Token<'a> = <Self::Parameters<
13057                'a,
13058            > as alloy_sol_types::SolType>::Token<'a>;
13059            type Return = u32;
13060            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13061            type ReturnToken<'a> = <Self::ReturnTuple<
13062                'a,
13063            > as alloy_sol_types::SolType>::Token<'a>;
13064            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
13065            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
13066            #[inline]
13067            fn new<'a>(
13068                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13069            ) -> Self {
13070                tuple.into()
13071            }
13072            #[inline]
13073            fn tokenize(&self) -> Self::Token<'_> {
13074                ()
13075            }
13076            #[inline]
13077            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13078                (
13079                    <alloy::sol_types::sol_data::Uint<
13080                        32,
13081                    > as alloy_sol_types::SolType>::tokenize(ret),
13082                )
13083            }
13084            #[inline]
13085            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13086                <Self::ReturnTuple<
13087                    '_,
13088                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13089                    .map(|r| {
13090                        let r: stateHistoryRetentionPeriodReturn = r.into();
13091                        r._0
13092                    })
13093            }
13094            #[inline]
13095            fn abi_decode_returns_with_config(
13096                data: &[u8],
13097                config: alloy_sol_types::abi::AbiDecoderConfig,
13098            ) -> alloy_sol_types::Result<Self::Return> {
13099                <Self::ReturnTuple<
13100                    '_,
13101                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13102                        data,
13103                        config,
13104                    )
13105                    .map(|r| {
13106                        let r: stateHistoryRetentionPeriodReturn = r.into();
13107                        r._0
13108                    })
13109            }
13110            #[inline]
13111            fn abi_decode_returns_validate(
13112                data: &[u8],
13113            ) -> alloy_sol_types::Result<Self::Return> {
13114                Self::abi_decode_returns_with_config(
13115                    data,
13116                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13117                )
13118            }
13119        }
13120    };
13121    #[derive(serde::Serialize, serde::Deserialize)]
13122    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13123    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13124```solidity
13125function transferOwnership(address newOwner) external;
13126```*/
13127    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13128    #[derive(Clone)]
13129    pub struct transferOwnershipCall {
13130        #[allow(missing_docs)]
13131        pub newOwner: alloy::sol_types::private::Address,
13132    }
13133    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
13134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13135    #[derive(Clone)]
13136    pub struct transferOwnershipReturn {}
13137    #[allow(
13138        non_camel_case_types,
13139        non_snake_case,
13140        clippy::pub_underscore_fields,
13141        clippy::style
13142    )]
13143    const _: () = {
13144        use alloy::sol_types as alloy_sol_types;
13145        {
13146            #[doc(hidden)]
13147            #[allow(dead_code)]
13148            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13149            #[doc(hidden)]
13150            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13151            #[cfg(test)]
13152            #[allow(dead_code, unreachable_patterns)]
13153            fn _type_assertion(
13154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13155            ) {
13156                match _t {
13157                    alloy_sol_types::private::AssertTypeEq::<
13158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13159                    >(_) => {}
13160                }
13161            }
13162            #[automatically_derived]
13163            #[doc(hidden)]
13164            impl ::core::convert::From<transferOwnershipCall>
13165            for UnderlyingRustTuple<'_> {
13166                fn from(value: transferOwnershipCall) -> Self {
13167                    (value.newOwner,)
13168                }
13169            }
13170            #[automatically_derived]
13171            #[doc(hidden)]
13172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13173            for transferOwnershipCall {
13174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13175                    Self { newOwner: tuple.0 }
13176                }
13177            }
13178        }
13179        {
13180            #[doc(hidden)]
13181            #[allow(dead_code)]
13182            type UnderlyingSolTuple<'a> = ();
13183            #[doc(hidden)]
13184            type UnderlyingRustTuple<'a> = ();
13185            #[cfg(test)]
13186            #[allow(dead_code, unreachable_patterns)]
13187            fn _type_assertion(
13188                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13189            ) {
13190                match _t {
13191                    alloy_sol_types::private::AssertTypeEq::<
13192                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13193                    >(_) => {}
13194                }
13195            }
13196            #[automatically_derived]
13197            #[doc(hidden)]
13198            impl ::core::convert::From<transferOwnershipReturn>
13199            for UnderlyingRustTuple<'_> {
13200                fn from(value: transferOwnershipReturn) -> Self {
13201                    ()
13202                }
13203            }
13204            #[automatically_derived]
13205            #[doc(hidden)]
13206            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13207            for transferOwnershipReturn {
13208                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13209                    Self {}
13210                }
13211            }
13212        }
13213        impl transferOwnershipReturn {
13214            fn _tokenize(
13215                &self,
13216            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13217                ()
13218            }
13219        }
13220        #[automatically_derived]
13221        impl alloy_sol_types::SolCall for transferOwnershipCall {
13222            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13223            type Token<'a> = <Self::Parameters<
13224                'a,
13225            > as alloy_sol_types::SolType>::Token<'a>;
13226            type Return = transferOwnershipReturn;
13227            type ReturnTuple<'a> = ();
13228            type ReturnToken<'a> = <Self::ReturnTuple<
13229                'a,
13230            > as alloy_sol_types::SolType>::Token<'a>;
13231            const SIGNATURE: &'static str = "transferOwnership(address)";
13232            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
13233            #[inline]
13234            fn new<'a>(
13235                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13236            ) -> Self {
13237                tuple.into()
13238            }
13239            #[inline]
13240            fn tokenize(&self) -> Self::Token<'_> {
13241                (
13242                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13243                        &self.newOwner,
13244                    ),
13245                )
13246            }
13247            #[inline]
13248            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13249                transferOwnershipReturn::_tokenize(ret)
13250            }
13251            #[inline]
13252            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13253                <Self::ReturnTuple<
13254                    '_,
13255                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13256                    .map(Into::into)
13257            }
13258            #[inline]
13259            fn abi_decode_returns_with_config(
13260                data: &[u8],
13261                config: alloy_sol_types::abi::AbiDecoderConfig,
13262            ) -> alloy_sol_types::Result<Self::Return> {
13263                <Self::ReturnTuple<
13264                    '_,
13265                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13266                        data,
13267                        config,
13268                    )
13269                    .map(Into::into)
13270            }
13271            #[inline]
13272            fn abi_decode_returns_validate(
13273                data: &[u8],
13274            ) -> alloy_sol_types::Result<Self::Return> {
13275                Self::abi_decode_returns_with_config(
13276                    data,
13277                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13278                )
13279            }
13280        }
13281    };
13282    #[derive(serde::Serialize, serde::Deserialize)]
13283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13284    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
13285```solidity
13286function updateEpochStartBlock(uint64 newEpochStartBlock) external;
13287```*/
13288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13289    #[derive(Clone)]
13290    pub struct updateEpochStartBlockCall {
13291        #[allow(missing_docs)]
13292        pub newEpochStartBlock: u64,
13293    }
13294    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
13295    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13296    #[derive(Clone)]
13297    pub struct updateEpochStartBlockReturn {}
13298    #[allow(
13299        non_camel_case_types,
13300        non_snake_case,
13301        clippy::pub_underscore_fields,
13302        clippy::style
13303    )]
13304    const _: () = {
13305        use alloy::sol_types as alloy_sol_types;
13306        {
13307            #[doc(hidden)]
13308            #[allow(dead_code)]
13309            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13310            #[doc(hidden)]
13311            type UnderlyingRustTuple<'a> = (u64,);
13312            #[cfg(test)]
13313            #[allow(dead_code, unreachable_patterns)]
13314            fn _type_assertion(
13315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13316            ) {
13317                match _t {
13318                    alloy_sol_types::private::AssertTypeEq::<
13319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13320                    >(_) => {}
13321                }
13322            }
13323            #[automatically_derived]
13324            #[doc(hidden)]
13325            impl ::core::convert::From<updateEpochStartBlockCall>
13326            for UnderlyingRustTuple<'_> {
13327                fn from(value: updateEpochStartBlockCall) -> Self {
13328                    (value.newEpochStartBlock,)
13329                }
13330            }
13331            #[automatically_derived]
13332            #[doc(hidden)]
13333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13334            for updateEpochStartBlockCall {
13335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13336                    Self {
13337                        newEpochStartBlock: tuple.0,
13338                    }
13339                }
13340            }
13341        }
13342        {
13343            #[doc(hidden)]
13344            #[allow(dead_code)]
13345            type UnderlyingSolTuple<'a> = ();
13346            #[doc(hidden)]
13347            type UnderlyingRustTuple<'a> = ();
13348            #[cfg(test)]
13349            #[allow(dead_code, unreachable_patterns)]
13350            fn _type_assertion(
13351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13352            ) {
13353                match _t {
13354                    alloy_sol_types::private::AssertTypeEq::<
13355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13356                    >(_) => {}
13357                }
13358            }
13359            #[automatically_derived]
13360            #[doc(hidden)]
13361            impl ::core::convert::From<updateEpochStartBlockReturn>
13362            for UnderlyingRustTuple<'_> {
13363                fn from(value: updateEpochStartBlockReturn) -> Self {
13364                    ()
13365                }
13366            }
13367            #[automatically_derived]
13368            #[doc(hidden)]
13369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13370            for updateEpochStartBlockReturn {
13371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13372                    Self {}
13373                }
13374            }
13375        }
13376        impl updateEpochStartBlockReturn {
13377            fn _tokenize(
13378                &self,
13379            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
13380                '_,
13381            > {
13382                ()
13383            }
13384        }
13385        #[automatically_derived]
13386        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
13387            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13388            type Token<'a> = <Self::Parameters<
13389                'a,
13390            > as alloy_sol_types::SolType>::Token<'a>;
13391            type Return = updateEpochStartBlockReturn;
13392            type ReturnTuple<'a> = ();
13393            type ReturnToken<'a> = <Self::ReturnTuple<
13394                'a,
13395            > as alloy_sol_types::SolType>::Token<'a>;
13396            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
13397            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
13398            #[inline]
13399            fn new<'a>(
13400                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13401            ) -> Self {
13402                tuple.into()
13403            }
13404            #[inline]
13405            fn tokenize(&self) -> Self::Token<'_> {
13406                (
13407                    <alloy::sol_types::sol_data::Uint<
13408                        64,
13409                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
13410                )
13411            }
13412            #[inline]
13413            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13414                updateEpochStartBlockReturn::_tokenize(ret)
13415            }
13416            #[inline]
13417            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13418                <Self::ReturnTuple<
13419                    '_,
13420                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13421                    .map(Into::into)
13422            }
13423            #[inline]
13424            fn abi_decode_returns_with_config(
13425                data: &[u8],
13426                config: alloy_sol_types::abi::AbiDecoderConfig,
13427            ) -> alloy_sol_types::Result<Self::Return> {
13428                <Self::ReturnTuple<
13429                    '_,
13430                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13431                        data,
13432                        config,
13433                    )
13434                    .map(Into::into)
13435            }
13436            #[inline]
13437            fn abi_decode_returns_validate(
13438                data: &[u8],
13439            ) -> alloy_sol_types::Result<Self::Return> {
13440                Self::abi_decode_returns_with_config(
13441                    data,
13442                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13443                )
13444            }
13445        }
13446    };
13447    #[derive(serde::Serialize, serde::Deserialize)]
13448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13449    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13450```solidity
13451function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13452```*/
13453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13454    #[derive(Clone)]
13455    pub struct upgradeToAndCallCall {
13456        #[allow(missing_docs)]
13457        pub newImplementation: alloy::sol_types::private::Address,
13458        #[allow(missing_docs)]
13459        pub data: alloy::sol_types::private::Bytes,
13460    }
13461    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13463    #[derive(Clone)]
13464    pub struct upgradeToAndCallReturn {}
13465    #[allow(
13466        non_camel_case_types,
13467        non_snake_case,
13468        clippy::pub_underscore_fields,
13469        clippy::style
13470    )]
13471    const _: () = {
13472        use alloy::sol_types as alloy_sol_types;
13473        {
13474            #[doc(hidden)]
13475            #[allow(dead_code)]
13476            type UnderlyingSolTuple<'a> = (
13477                alloy::sol_types::sol_data::Address,
13478                alloy::sol_types::sol_data::Bytes,
13479            );
13480            #[doc(hidden)]
13481            type UnderlyingRustTuple<'a> = (
13482                alloy::sol_types::private::Address,
13483                alloy::sol_types::private::Bytes,
13484            );
13485            #[cfg(test)]
13486            #[allow(dead_code, unreachable_patterns)]
13487            fn _type_assertion(
13488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13489            ) {
13490                match _t {
13491                    alloy_sol_types::private::AssertTypeEq::<
13492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13493                    >(_) => {}
13494                }
13495            }
13496            #[automatically_derived]
13497            #[doc(hidden)]
13498            impl ::core::convert::From<upgradeToAndCallCall>
13499            for UnderlyingRustTuple<'_> {
13500                fn from(value: upgradeToAndCallCall) -> Self {
13501                    (value.newImplementation, value.data)
13502                }
13503            }
13504            #[automatically_derived]
13505            #[doc(hidden)]
13506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13507            for upgradeToAndCallCall {
13508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13509                    Self {
13510                        newImplementation: tuple.0,
13511                        data: tuple.1,
13512                    }
13513                }
13514            }
13515        }
13516        {
13517            #[doc(hidden)]
13518            #[allow(dead_code)]
13519            type UnderlyingSolTuple<'a> = ();
13520            #[doc(hidden)]
13521            type UnderlyingRustTuple<'a> = ();
13522            #[cfg(test)]
13523            #[allow(dead_code, unreachable_patterns)]
13524            fn _type_assertion(
13525                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13526            ) {
13527                match _t {
13528                    alloy_sol_types::private::AssertTypeEq::<
13529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13530                    >(_) => {}
13531                }
13532            }
13533            #[automatically_derived]
13534            #[doc(hidden)]
13535            impl ::core::convert::From<upgradeToAndCallReturn>
13536            for UnderlyingRustTuple<'_> {
13537                fn from(value: upgradeToAndCallReturn) -> Self {
13538                    ()
13539                }
13540            }
13541            #[automatically_derived]
13542            #[doc(hidden)]
13543            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13544            for upgradeToAndCallReturn {
13545                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13546                    Self {}
13547                }
13548            }
13549        }
13550        impl upgradeToAndCallReturn {
13551            fn _tokenize(
13552                &self,
13553            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13554                ()
13555            }
13556        }
13557        #[automatically_derived]
13558        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13559            type Parameters<'a> = (
13560                alloy::sol_types::sol_data::Address,
13561                alloy::sol_types::sol_data::Bytes,
13562            );
13563            type Token<'a> = <Self::Parameters<
13564                'a,
13565            > as alloy_sol_types::SolType>::Token<'a>;
13566            type Return = upgradeToAndCallReturn;
13567            type ReturnTuple<'a> = ();
13568            type ReturnToken<'a> = <Self::ReturnTuple<
13569                'a,
13570            > as alloy_sol_types::SolType>::Token<'a>;
13571            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13572            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13573            #[inline]
13574            fn new<'a>(
13575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13576            ) -> Self {
13577                tuple.into()
13578            }
13579            #[inline]
13580            fn tokenize(&self) -> Self::Token<'_> {
13581                (
13582                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13583                        &self.newImplementation,
13584                    ),
13585                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13586                        &self.data,
13587                    ),
13588                )
13589            }
13590            #[inline]
13591            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13592                upgradeToAndCallReturn::_tokenize(ret)
13593            }
13594            #[inline]
13595            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13596                <Self::ReturnTuple<
13597                    '_,
13598                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13599                    .map(Into::into)
13600            }
13601            #[inline]
13602            fn abi_decode_returns_with_config(
13603                data: &[u8],
13604                config: alloy_sol_types::abi::AbiDecoderConfig,
13605            ) -> alloy_sol_types::Result<Self::Return> {
13606                <Self::ReturnTuple<
13607                    '_,
13608                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13609                        data,
13610                        config,
13611                    )
13612                    .map(Into::into)
13613            }
13614            #[inline]
13615            fn abi_decode_returns_validate(
13616                data: &[u8],
13617            ) -> alloy_sol_types::Result<Self::Return> {
13618                Self::abi_decode_returns_with_config(
13619                    data,
13620                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13621                )
13622            }
13623        }
13624    };
13625    #[derive(serde::Serialize, serde::Deserialize)]
13626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13627    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13628```solidity
13629function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13630```*/
13631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13632    #[derive(Clone)]
13633    pub struct votingStakeTableStateCall;
13634    #[derive(serde::Serialize, serde::Deserialize)]
13635    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13636    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13638    #[derive(Clone)]
13639    pub struct votingStakeTableStateReturn {
13640        #[allow(missing_docs)]
13641        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13642        #[allow(missing_docs)]
13643        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13644        #[allow(missing_docs)]
13645        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13646        #[allow(missing_docs)]
13647        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13648    }
13649    #[allow(
13650        non_camel_case_types,
13651        non_snake_case,
13652        clippy::pub_underscore_fields,
13653        clippy::style
13654    )]
13655    const _: () = {
13656        use alloy::sol_types as alloy_sol_types;
13657        {
13658            #[doc(hidden)]
13659            #[allow(dead_code)]
13660            type UnderlyingSolTuple<'a> = ();
13661            #[doc(hidden)]
13662            type UnderlyingRustTuple<'a> = ();
13663            #[cfg(test)]
13664            #[allow(dead_code, unreachable_patterns)]
13665            fn _type_assertion(
13666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13667            ) {
13668                match _t {
13669                    alloy_sol_types::private::AssertTypeEq::<
13670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13671                    >(_) => {}
13672                }
13673            }
13674            #[automatically_derived]
13675            #[doc(hidden)]
13676            impl ::core::convert::From<votingStakeTableStateCall>
13677            for UnderlyingRustTuple<'_> {
13678                fn from(value: votingStakeTableStateCall) -> Self {
13679                    ()
13680                }
13681            }
13682            #[automatically_derived]
13683            #[doc(hidden)]
13684            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13685            for votingStakeTableStateCall {
13686                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13687                    Self
13688                }
13689            }
13690        }
13691        {
13692            #[doc(hidden)]
13693            #[allow(dead_code)]
13694            type UnderlyingSolTuple<'a> = (
13695                alloy::sol_types::sol_data::Uint<256>,
13696                BN254::ScalarField,
13697                BN254::ScalarField,
13698                BN254::ScalarField,
13699            );
13700            #[doc(hidden)]
13701            type UnderlyingRustTuple<'a> = (
13702                alloy::sol_types::private::primitives::aliases::U256,
13703                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13704                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13705                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13706            );
13707            #[cfg(test)]
13708            #[allow(dead_code, unreachable_patterns)]
13709            fn _type_assertion(
13710                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13711            ) {
13712                match _t {
13713                    alloy_sol_types::private::AssertTypeEq::<
13714                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13715                    >(_) => {}
13716                }
13717            }
13718            #[automatically_derived]
13719            #[doc(hidden)]
13720            impl ::core::convert::From<votingStakeTableStateReturn>
13721            for UnderlyingRustTuple<'_> {
13722                fn from(value: votingStakeTableStateReturn) -> Self {
13723                    (
13724                        value.threshold,
13725                        value.blsKeyComm,
13726                        value.schnorrKeyComm,
13727                        value.amountComm,
13728                    )
13729                }
13730            }
13731            #[automatically_derived]
13732            #[doc(hidden)]
13733            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13734            for votingStakeTableStateReturn {
13735                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13736                    Self {
13737                        threshold: tuple.0,
13738                        blsKeyComm: tuple.1,
13739                        schnorrKeyComm: tuple.2,
13740                        amountComm: tuple.3,
13741                    }
13742                }
13743            }
13744        }
13745        impl votingStakeTableStateReturn {
13746            fn _tokenize(
13747                &self,
13748            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13749                '_,
13750            > {
13751                (
13752                    <alloy::sol_types::sol_data::Uint<
13753                        256,
13754                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
13755                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13756                        &self.blsKeyComm,
13757                    ),
13758                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13759                        &self.schnorrKeyComm,
13760                    ),
13761                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13762                        &self.amountComm,
13763                    ),
13764                )
13765            }
13766        }
13767        #[automatically_derived]
13768        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
13769            type Parameters<'a> = ();
13770            type Token<'a> = <Self::Parameters<
13771                'a,
13772            > as alloy_sol_types::SolType>::Token<'a>;
13773            type Return = votingStakeTableStateReturn;
13774            type ReturnTuple<'a> = (
13775                alloy::sol_types::sol_data::Uint<256>,
13776                BN254::ScalarField,
13777                BN254::ScalarField,
13778                BN254::ScalarField,
13779            );
13780            type ReturnToken<'a> = <Self::ReturnTuple<
13781                'a,
13782            > as alloy_sol_types::SolType>::Token<'a>;
13783            const SIGNATURE: &'static str = "votingStakeTableState()";
13784            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
13785            #[inline]
13786            fn new<'a>(
13787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13788            ) -> Self {
13789                tuple.into()
13790            }
13791            #[inline]
13792            fn tokenize(&self) -> Self::Token<'_> {
13793                ()
13794            }
13795            #[inline]
13796            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13797                votingStakeTableStateReturn::_tokenize(ret)
13798            }
13799            #[inline]
13800            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13801                <Self::ReturnTuple<
13802                    '_,
13803                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13804                    .map(Into::into)
13805            }
13806            #[inline]
13807            fn abi_decode_returns_with_config(
13808                data: &[u8],
13809                config: alloy_sol_types::abi::AbiDecoderConfig,
13810            ) -> alloy_sol_types::Result<Self::Return> {
13811                <Self::ReturnTuple<
13812                    '_,
13813                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13814                        data,
13815                        config,
13816                    )
13817                    .map(Into::into)
13818            }
13819            #[inline]
13820            fn abi_decode_returns_validate(
13821                data: &[u8],
13822            ) -> alloy_sol_types::Result<Self::Return> {
13823                Self::abi_decode_returns_with_config(
13824                    data,
13825                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13826                )
13827            }
13828        }
13829    };
13830    ///Container for all the [`LightClientV2`](self) function calls.
13831    #[derive(Clone)]
13832    #[derive(serde::Serialize, serde::Deserialize)]
13833    #[derive(Debug, PartialEq, Eq, Hash)]
13834    pub enum LightClientV2Calls {
13835        #[allow(missing_docs)]
13836        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
13837        #[allow(missing_docs)]
13838        _getVk(_getVkCall),
13839        #[allow(missing_docs)]
13840        blocksPerEpoch(blocksPerEpochCall),
13841        #[allow(missing_docs)]
13842        currentBlockNumber(currentBlockNumberCall),
13843        #[allow(missing_docs)]
13844        currentEpoch(currentEpochCall),
13845        #[allow(missing_docs)]
13846        disablePermissionedProverMode(disablePermissionedProverModeCall),
13847        #[allow(missing_docs)]
13848        epochFromBlockNumber(epochFromBlockNumberCall),
13849        #[allow(missing_docs)]
13850        epochStartBlock(epochStartBlockCall),
13851        #[allow(missing_docs)]
13852        finalizedState(finalizedStateCall),
13853        #[allow(missing_docs)]
13854        genesisStakeTableState(genesisStakeTableStateCall),
13855        #[allow(missing_docs)]
13856        genesisState(genesisStateCall),
13857        #[allow(missing_docs)]
13858        getHotShotCommitment(getHotShotCommitmentCall),
13859        #[allow(missing_docs)]
13860        getStateHistoryCount(getStateHistoryCountCall),
13861        #[allow(missing_docs)]
13862        getVersion(getVersionCall),
13863        #[allow(missing_docs)]
13864        initialize(initializeCall),
13865        #[allow(missing_docs)]
13866        initializeV2(initializeV2Call),
13867        #[allow(missing_docs)]
13868        isEpochRoot(isEpochRootCall),
13869        #[allow(missing_docs)]
13870        isGtEpochRoot(isGtEpochRootCall),
13871        #[allow(missing_docs)]
13872        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
13873        #[allow(missing_docs)]
13874        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
13875        #[allow(missing_docs)]
13876        newFinalizedState_0(newFinalizedState_0Call),
13877        #[allow(missing_docs)]
13878        newFinalizedState_1(newFinalizedState_1Call),
13879        #[allow(missing_docs)]
13880        owner(ownerCall),
13881        #[allow(missing_docs)]
13882        permissionedProver(permissionedProverCall),
13883        #[allow(missing_docs)]
13884        proxiableUUID(proxiableUUIDCall),
13885        #[allow(missing_docs)]
13886        renounceOwnership(renounceOwnershipCall),
13887        #[allow(missing_docs)]
13888        setPermissionedProver(setPermissionedProverCall),
13889        #[allow(missing_docs)]
13890        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
13891        #[allow(missing_docs)]
13892        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
13893        #[allow(missing_docs)]
13894        stateHistoryCommitments(stateHistoryCommitmentsCall),
13895        #[allow(missing_docs)]
13896        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
13897        #[allow(missing_docs)]
13898        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
13899        #[allow(missing_docs)]
13900        transferOwnership(transferOwnershipCall),
13901        #[allow(missing_docs)]
13902        updateEpochStartBlock(updateEpochStartBlockCall),
13903        #[allow(missing_docs)]
13904        upgradeToAndCall(upgradeToAndCallCall),
13905        #[allow(missing_docs)]
13906        votingStakeTableState(votingStakeTableStateCall),
13907    }
13908    impl LightClientV2Calls {
13909        /// All the selectors of this enum.
13910        ///
13911        /// Note that the selectors might not be in the same order as the variants.
13912        /// No guarantees are made about the order of the selectors.
13913        ///
13914        /// Prefer using `SolInterface` methods instead.
13915        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13916            [1u8, 63u8, 165u8, 252u8],
13917            [2u8, 181u8, 146u8, 243u8],
13918            [6u8, 37u8, 225u8, 155u8],
13919            [13u8, 142u8, 110u8, 44u8],
13920            [18u8, 23u8, 60u8, 44u8],
13921            [22u8, 122u8, 198u8, 24u8],
13922            [32u8, 99u8, 212u8, 247u8],
13923            [37u8, 41u8, 116u8, 39u8],
13924            [47u8, 121u8, 136u8, 157u8],
13925            [48u8, 12u8, 137u8, 221u8],
13926            [49u8, 61u8, 247u8, 177u8],
13927            [55u8, 142u8, 194u8, 59u8],
13928            [62u8, 213u8, 91u8, 123u8],
13929            [66u8, 109u8, 49u8, 148u8],
13930            [67u8, 61u8, 186u8, 159u8],
13931            [79u8, 30u8, 242u8, 134u8],
13932            [82u8, 209u8, 144u8, 45u8],
13933            [105u8, 204u8, 106u8, 4u8],
13934            [113u8, 80u8, 24u8, 166u8],
13935            [117u8, 124u8, 55u8, 173u8],
13936            [118u8, 103u8, 24u8, 8u8],
13937            [130u8, 110u8, 65u8, 252u8],
13938            [133u8, 132u8, 210u8, 63u8],
13939            [141u8, 165u8, 203u8, 91u8],
13940            [144u8, 193u8, 67u8, 144u8],
13941            [150u8, 193u8, 202u8, 97u8],
13942            [155u8, 170u8, 60u8, 201u8],
13943            [159u8, 219u8, 84u8, 167u8],
13944            [173u8, 60u8, 177u8, 204u8],
13945            [179u8, 59u8, 196u8, 145u8],
13946            [194u8, 59u8, 158u8, 158u8],
13947            [210u8, 77u8, 147u8, 61u8],
13948            [224u8, 48u8, 51u8, 1u8],
13949            [240u8, 104u8, 32u8, 84u8],
13950            [242u8, 253u8, 227u8, 139u8],
13951            [249u8, 229u8, 13u8, 25u8],
13952        ];
13953        /// The names of the variants in the same order as `SELECTORS`.
13954        pub const VARIANT_NAMES: &'static [&'static str] = &[
13955            ::core::stringify!(setPermissionedProver),
13956            ::core::stringify!(stateHistoryCommitments),
13957            ::core::stringify!(votingStakeTableState),
13958            ::core::stringify!(getVersion),
13959            ::core::stringify!(_getVk),
13960            ::core::stringify!(updateEpochStartBlock),
13961            ::core::stringify!(newFinalizedState_0),
13962            ::core::stringify!(isEpochRoot),
13963            ::core::stringify!(stateHistoryFirstIndex),
13964            ::core::stringify!(isGtEpochRoot),
13965            ::core::stringify!(permissionedProver),
13966            ::core::stringify!(currentBlockNumber),
13967            ::core::stringify!(epochStartBlock),
13968            ::core::stringify!(genesisStakeTableState),
13969            ::core::stringify!(setStateHistoryRetentionPeriod),
13970            ::core::stringify!(upgradeToAndCall),
13971            ::core::stringify!(proxiableUUID),
13972            ::core::stringify!(disablePermissionedProverMode),
13973            ::core::stringify!(renounceOwnership),
13974            ::core::stringify!(newFinalizedState_1),
13975            ::core::stringify!(currentEpoch),
13976            ::core::stringify!(isPermissionedProverEnabled),
13977            ::core::stringify!(getHotShotCommitment),
13978            ::core::stringify!(owner),
13979            ::core::stringify!(epochFromBlockNumber),
13980            ::core::stringify!(setstateHistoryRetentionPeriod),
13981            ::core::stringify!(initialize),
13982            ::core::stringify!(finalizedState),
13983            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
13984            ::core::stringify!(initializeV2),
13985            ::core::stringify!(stateHistoryRetentionPeriod),
13986            ::core::stringify!(genesisState),
13987            ::core::stringify!(lagOverEscapeHatchThreshold),
13988            ::core::stringify!(blocksPerEpoch),
13989            ::core::stringify!(transferOwnership),
13990            ::core::stringify!(getStateHistoryCount),
13991        ];
13992        /// The signatures in the same order as `SELECTORS`.
13993        pub const SIGNATURES: &'static [&'static str] = &[
13994            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
13995            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
13996            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13997            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
13998            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
13999            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
14000            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
14001            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14002            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
14003            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14004            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
14005            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
14006            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
14007            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14008            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14009            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
14010            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
14011            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
14012            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
14013            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
14014            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
14015            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
14016            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
14017            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
14018            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
14019            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14020            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
14021            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14022            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
14023            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
14024            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14025            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14026            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
14027            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
14028            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
14029            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
14030        ];
14031        /// Returns the signature for the given selector, if known.
14032        #[inline]
14033        pub fn signature_by_selector(
14034            selector: [u8; 4usize],
14035        ) -> ::core::option::Option<&'static str> {
14036            match Self::SELECTORS.binary_search(&selector) {
14037                ::core::result::Result::Ok(idx) => {
14038                    ::core::option::Option::Some(Self::SIGNATURES[idx])
14039                }
14040                ::core::result::Result::Err(_) => ::core::option::Option::None,
14041            }
14042        }
14043        /// Returns the enum variant name for the given selector, if known.
14044        #[inline]
14045        pub fn name_by_selector(
14046            selector: [u8; 4usize],
14047        ) -> ::core::option::Option<&'static str> {
14048            let sig = Self::signature_by_selector(selector)?;
14049            sig.split_once('(').map(|(name, _)| name)
14050        }
14051    }
14052    #[automatically_derived]
14053    impl alloy_sol_types::SolInterface for LightClientV2Calls {
14054        const NAME: &'static str = "LightClientV2Calls";
14055        const MIN_DATA_LENGTH: usize = 0usize;
14056        const COUNT: usize = 36usize;
14057        #[inline]
14058        fn selector(&self) -> [u8; 4] {
14059            match self {
14060                Self::UPGRADE_INTERFACE_VERSION(_) => {
14061                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14062                }
14063                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14064                Self::blocksPerEpoch(_) => {
14065                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14066                }
14067                Self::currentBlockNumber(_) => {
14068                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14069                }
14070                Self::currentEpoch(_) => {
14071                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14072                }
14073                Self::disablePermissionedProverMode(_) => {
14074                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14075                }
14076                Self::epochFromBlockNumber(_) => {
14077                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14078                }
14079                Self::epochStartBlock(_) => {
14080                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14081                }
14082                Self::finalizedState(_) => {
14083                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14084                }
14085                Self::genesisStakeTableState(_) => {
14086                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14087                }
14088                Self::genesisState(_) => {
14089                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14090                }
14091                Self::getHotShotCommitment(_) => {
14092                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14093                }
14094                Self::getStateHistoryCount(_) => {
14095                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14096                }
14097                Self::getVersion(_) => {
14098                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14099                }
14100                Self::initialize(_) => {
14101                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14102                }
14103                Self::initializeV2(_) => {
14104                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14105                }
14106                Self::isEpochRoot(_) => {
14107                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14108                }
14109                Self::isGtEpochRoot(_) => {
14110                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14111                }
14112                Self::isPermissionedProverEnabled(_) => {
14113                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14114                }
14115                Self::lagOverEscapeHatchThreshold(_) => {
14116                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14117                }
14118                Self::newFinalizedState_0(_) => {
14119                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14120                }
14121                Self::newFinalizedState_1(_) => {
14122                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14123                }
14124                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14125                Self::permissionedProver(_) => {
14126                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14127                }
14128                Self::proxiableUUID(_) => {
14129                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14130                }
14131                Self::renounceOwnership(_) => {
14132                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14133                }
14134                Self::setPermissionedProver(_) => {
14135                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14136                }
14137                Self::setStateHistoryRetentionPeriod(_) => {
14138                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14139                }
14140                Self::setstateHistoryRetentionPeriod(_) => {
14141                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14142                }
14143                Self::stateHistoryCommitments(_) => {
14144                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
14145                }
14146                Self::stateHistoryFirstIndex(_) => {
14147                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
14148                }
14149                Self::stateHistoryRetentionPeriod(_) => {
14150                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14151                }
14152                Self::transferOwnership(_) => {
14153                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14154                }
14155                Self::updateEpochStartBlock(_) => {
14156                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14157                }
14158                Self::upgradeToAndCall(_) => {
14159                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
14160                }
14161                Self::votingStakeTableState(_) => {
14162                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14163                }
14164            }
14165        }
14166        #[inline]
14167        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14168            Self::SELECTORS.get(i).copied()
14169        }
14170        #[inline]
14171        fn valid_selector(selector: [u8; 4]) -> bool {
14172            Self::SELECTORS.binary_search(&selector).is_ok()
14173        }
14174        #[inline]
14175        #[allow(non_snake_case)]
14176        fn abi_decode_raw(
14177            selector: [u8; 4],
14178            data: &[u8],
14179        ) -> alloy_sol_types::Result<Self> {
14180            Self::abi_decode_raw_with_config(
14181                selector,
14182                data,
14183                alloy_sol_types::abi::AbiDecoderConfig::default(),
14184            )
14185        }
14186        #[inline]
14187        #[allow(non_snake_case)]
14188        fn abi_decode_raw_with_config(
14189            selector: [u8; 4],
14190            data: &[u8],
14191            config: alloy_sol_types::abi::AbiDecoderConfig,
14192        ) -> alloy_sol_types::Result<Self> {
14193            static DECODE_SHIMS: &[fn(
14194                &[u8],
14195                alloy_sol_types::abi::AbiDecoderConfig,
14196            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
14197                {
14198                    fn setPermissionedProver(
14199                        data: &[u8],
14200                        config: alloy_sol_types::abi::AbiDecoderConfig,
14201                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14202                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14203                                data,
14204                                config,
14205                            )
14206                            .map(LightClientV2Calls::setPermissionedProver)
14207                    }
14208                    setPermissionedProver
14209                },
14210                {
14211                    fn stateHistoryCommitments(
14212                        data: &[u8],
14213                        config: alloy_sol_types::abi::AbiDecoderConfig,
14214                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14215                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14216                                data,
14217                                config,
14218                            )
14219                            .map(LightClientV2Calls::stateHistoryCommitments)
14220                    }
14221                    stateHistoryCommitments
14222                },
14223                {
14224                    fn votingStakeTableState(
14225                        data: &[u8],
14226                        config: alloy_sol_types::abi::AbiDecoderConfig,
14227                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14228                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14229                                data,
14230                                config,
14231                            )
14232                            .map(LightClientV2Calls::votingStakeTableState)
14233                    }
14234                    votingStakeTableState
14235                },
14236                {
14237                    fn getVersion(
14238                        data: &[u8],
14239                        config: alloy_sol_types::abi::AbiDecoderConfig,
14240                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14241                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14242                                data,
14243                                config,
14244                            )
14245                            .map(LightClientV2Calls::getVersion)
14246                    }
14247                    getVersion
14248                },
14249                {
14250                    fn _getVk(
14251                        data: &[u8],
14252                        config: alloy_sol_types::abi::AbiDecoderConfig,
14253                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14254                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14255                                data,
14256                                config,
14257                            )
14258                            .map(LightClientV2Calls::_getVk)
14259                    }
14260                    _getVk
14261                },
14262                {
14263                    fn updateEpochStartBlock(
14264                        data: &[u8],
14265                        config: alloy_sol_types::abi::AbiDecoderConfig,
14266                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14267                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14268                                data,
14269                                config,
14270                            )
14271                            .map(LightClientV2Calls::updateEpochStartBlock)
14272                    }
14273                    updateEpochStartBlock
14274                },
14275                {
14276                    fn newFinalizedState_0(
14277                        data: &[u8],
14278                        config: alloy_sol_types::abi::AbiDecoderConfig,
14279                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14280                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14281                                data,
14282                                config,
14283                            )
14284                            .map(LightClientV2Calls::newFinalizedState_0)
14285                    }
14286                    newFinalizedState_0
14287                },
14288                {
14289                    fn isEpochRoot(
14290                        data: &[u8],
14291                        config: alloy_sol_types::abi::AbiDecoderConfig,
14292                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14293                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14294                                data,
14295                                config,
14296                            )
14297                            .map(LightClientV2Calls::isEpochRoot)
14298                    }
14299                    isEpochRoot
14300                },
14301                {
14302                    fn stateHistoryFirstIndex(
14303                        data: &[u8],
14304                        config: alloy_sol_types::abi::AbiDecoderConfig,
14305                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14306                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14307                                data,
14308                                config,
14309                            )
14310                            .map(LightClientV2Calls::stateHistoryFirstIndex)
14311                    }
14312                    stateHistoryFirstIndex
14313                },
14314                {
14315                    fn isGtEpochRoot(
14316                        data: &[u8],
14317                        config: alloy_sol_types::abi::AbiDecoderConfig,
14318                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14319                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14320                                data,
14321                                config,
14322                            )
14323                            .map(LightClientV2Calls::isGtEpochRoot)
14324                    }
14325                    isGtEpochRoot
14326                },
14327                {
14328                    fn permissionedProver(
14329                        data: &[u8],
14330                        config: alloy_sol_types::abi::AbiDecoderConfig,
14331                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14332                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14333                                data,
14334                                config,
14335                            )
14336                            .map(LightClientV2Calls::permissionedProver)
14337                    }
14338                    permissionedProver
14339                },
14340                {
14341                    fn currentBlockNumber(
14342                        data: &[u8],
14343                        config: alloy_sol_types::abi::AbiDecoderConfig,
14344                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14345                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14346                                data,
14347                                config,
14348                            )
14349                            .map(LightClientV2Calls::currentBlockNumber)
14350                    }
14351                    currentBlockNumber
14352                },
14353                {
14354                    fn epochStartBlock(
14355                        data: &[u8],
14356                        config: alloy_sol_types::abi::AbiDecoderConfig,
14357                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14358                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14359                                data,
14360                                config,
14361                            )
14362                            .map(LightClientV2Calls::epochStartBlock)
14363                    }
14364                    epochStartBlock
14365                },
14366                {
14367                    fn genesisStakeTableState(
14368                        data: &[u8],
14369                        config: alloy_sol_types::abi::AbiDecoderConfig,
14370                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14371                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14372                                data,
14373                                config,
14374                            )
14375                            .map(LightClientV2Calls::genesisStakeTableState)
14376                    }
14377                    genesisStakeTableState
14378                },
14379                {
14380                    fn setStateHistoryRetentionPeriod(
14381                        data: &[u8],
14382                        config: alloy_sol_types::abi::AbiDecoderConfig,
14383                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14384                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14385                                data,
14386                                config,
14387                            )
14388                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
14389                    }
14390                    setStateHistoryRetentionPeriod
14391                },
14392                {
14393                    fn upgradeToAndCall(
14394                        data: &[u8],
14395                        config: alloy_sol_types::abi::AbiDecoderConfig,
14396                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14397                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14398                                data,
14399                                config,
14400                            )
14401                            .map(LightClientV2Calls::upgradeToAndCall)
14402                    }
14403                    upgradeToAndCall
14404                },
14405                {
14406                    fn proxiableUUID(
14407                        data: &[u8],
14408                        config: alloy_sol_types::abi::AbiDecoderConfig,
14409                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14410                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14411                                data,
14412                                config,
14413                            )
14414                            .map(LightClientV2Calls::proxiableUUID)
14415                    }
14416                    proxiableUUID
14417                },
14418                {
14419                    fn disablePermissionedProverMode(
14420                        data: &[u8],
14421                        config: alloy_sol_types::abi::AbiDecoderConfig,
14422                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14423                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14424                                data,
14425                                config,
14426                            )
14427                            .map(LightClientV2Calls::disablePermissionedProverMode)
14428                    }
14429                    disablePermissionedProverMode
14430                },
14431                {
14432                    fn renounceOwnership(
14433                        data: &[u8],
14434                        config: alloy_sol_types::abi::AbiDecoderConfig,
14435                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14436                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14437                                data,
14438                                config,
14439                            )
14440                            .map(LightClientV2Calls::renounceOwnership)
14441                    }
14442                    renounceOwnership
14443                },
14444                {
14445                    fn newFinalizedState_1(
14446                        data: &[u8],
14447                        config: alloy_sol_types::abi::AbiDecoderConfig,
14448                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14449                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14450                                data,
14451                                config,
14452                            )
14453                            .map(LightClientV2Calls::newFinalizedState_1)
14454                    }
14455                    newFinalizedState_1
14456                },
14457                {
14458                    fn currentEpoch(
14459                        data: &[u8],
14460                        config: alloy_sol_types::abi::AbiDecoderConfig,
14461                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14462                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14463                                data,
14464                                config,
14465                            )
14466                            .map(LightClientV2Calls::currentEpoch)
14467                    }
14468                    currentEpoch
14469                },
14470                {
14471                    fn isPermissionedProverEnabled(
14472                        data: &[u8],
14473                        config: alloy_sol_types::abi::AbiDecoderConfig,
14474                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14475                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14476                                data,
14477                                config,
14478                            )
14479                            .map(LightClientV2Calls::isPermissionedProverEnabled)
14480                    }
14481                    isPermissionedProverEnabled
14482                },
14483                {
14484                    fn getHotShotCommitment(
14485                        data: &[u8],
14486                        config: alloy_sol_types::abi::AbiDecoderConfig,
14487                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14488                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14489                                data,
14490                                config,
14491                            )
14492                            .map(LightClientV2Calls::getHotShotCommitment)
14493                    }
14494                    getHotShotCommitment
14495                },
14496                {
14497                    fn owner(
14498                        data: &[u8],
14499                        config: alloy_sol_types::abi::AbiDecoderConfig,
14500                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14501                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14502                                data,
14503                                config,
14504                            )
14505                            .map(LightClientV2Calls::owner)
14506                    }
14507                    owner
14508                },
14509                {
14510                    fn epochFromBlockNumber(
14511                        data: &[u8],
14512                        config: alloy_sol_types::abi::AbiDecoderConfig,
14513                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14514                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14515                                data,
14516                                config,
14517                            )
14518                            .map(LightClientV2Calls::epochFromBlockNumber)
14519                    }
14520                    epochFromBlockNumber
14521                },
14522                {
14523                    fn setstateHistoryRetentionPeriod(
14524                        data: &[u8],
14525                        config: alloy_sol_types::abi::AbiDecoderConfig,
14526                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14527                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14528                                data,
14529                                config,
14530                            )
14531                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
14532                    }
14533                    setstateHistoryRetentionPeriod
14534                },
14535                {
14536                    fn initialize(
14537                        data: &[u8],
14538                        config: alloy_sol_types::abi::AbiDecoderConfig,
14539                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14540                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14541                                data,
14542                                config,
14543                            )
14544                            .map(LightClientV2Calls::initialize)
14545                    }
14546                    initialize
14547                },
14548                {
14549                    fn finalizedState(
14550                        data: &[u8],
14551                        config: alloy_sol_types::abi::AbiDecoderConfig,
14552                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14553                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14554                                data,
14555                                config,
14556                            )
14557                            .map(LightClientV2Calls::finalizedState)
14558                    }
14559                    finalizedState
14560                },
14561                {
14562                    fn UPGRADE_INTERFACE_VERSION(
14563                        data: &[u8],
14564                        config: alloy_sol_types::abi::AbiDecoderConfig,
14565                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14566                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14567                                data,
14568                                config,
14569                            )
14570                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
14571                    }
14572                    UPGRADE_INTERFACE_VERSION
14573                },
14574                {
14575                    fn initializeV2(
14576                        data: &[u8],
14577                        config: alloy_sol_types::abi::AbiDecoderConfig,
14578                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14579                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14580                                data,
14581                                config,
14582                            )
14583                            .map(LightClientV2Calls::initializeV2)
14584                    }
14585                    initializeV2
14586                },
14587                {
14588                    fn stateHistoryRetentionPeriod(
14589                        data: &[u8],
14590                        config: alloy_sol_types::abi::AbiDecoderConfig,
14591                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14592                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14593                                data,
14594                                config,
14595                            )
14596                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
14597                    }
14598                    stateHistoryRetentionPeriod
14599                },
14600                {
14601                    fn genesisState(
14602                        data: &[u8],
14603                        config: alloy_sol_types::abi::AbiDecoderConfig,
14604                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14605                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14606                                data,
14607                                config,
14608                            )
14609                            .map(LightClientV2Calls::genesisState)
14610                    }
14611                    genesisState
14612                },
14613                {
14614                    fn lagOverEscapeHatchThreshold(
14615                        data: &[u8],
14616                        config: alloy_sol_types::abi::AbiDecoderConfig,
14617                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14618                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14619                                data,
14620                                config,
14621                            )
14622                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
14623                    }
14624                    lagOverEscapeHatchThreshold
14625                },
14626                {
14627                    fn blocksPerEpoch(
14628                        data: &[u8],
14629                        config: alloy_sol_types::abi::AbiDecoderConfig,
14630                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14631                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14632                                data,
14633                                config,
14634                            )
14635                            .map(LightClientV2Calls::blocksPerEpoch)
14636                    }
14637                    blocksPerEpoch
14638                },
14639                {
14640                    fn transferOwnership(
14641                        data: &[u8],
14642                        config: alloy_sol_types::abi::AbiDecoderConfig,
14643                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14644                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14645                                data,
14646                                config,
14647                            )
14648                            .map(LightClientV2Calls::transferOwnership)
14649                    }
14650                    transferOwnership
14651                },
14652                {
14653                    fn getStateHistoryCount(
14654                        data: &[u8],
14655                        config: alloy_sol_types::abi::AbiDecoderConfig,
14656                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14657                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
14658                                data,
14659                                config,
14660                            )
14661                            .map(LightClientV2Calls::getStateHistoryCount)
14662                    }
14663                    getStateHistoryCount
14664                },
14665            ];
14666            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14667                return Err(
14668                    alloy_sol_types::Error::unknown_selector(
14669                        <Self as alloy_sol_types::SolInterface>::NAME,
14670                        selector,
14671                    ),
14672                );
14673            };
14674            DECODE_SHIMS[idx](data, config)
14675        }
14676        #[inline]
14677        #[allow(non_snake_case)]
14678        fn abi_decode_raw_validate(
14679            selector: [u8; 4],
14680            data: &[u8],
14681        ) -> alloy_sol_types::Result<Self> {
14682            Self::abi_decode_raw_with_config(
14683                selector,
14684                data,
14685                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14686            )
14687        }
14688        #[inline]
14689        fn abi_encoded_size(&self) -> usize {
14690            match self {
14691                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14692                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14693                        inner,
14694                    )
14695                }
14696                Self::_getVk(inner) => {
14697                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14698                }
14699                Self::blocksPerEpoch(inner) => {
14700                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14701                        inner,
14702                    )
14703                }
14704                Self::currentBlockNumber(inner) => {
14705                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14706                        inner,
14707                    )
14708                }
14709                Self::currentEpoch(inner) => {
14710                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14711                        inner,
14712                    )
14713                }
14714                Self::disablePermissionedProverMode(inner) => {
14715                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14716                        inner,
14717                    )
14718                }
14719                Self::epochFromBlockNumber(inner) => {
14720                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14721                        inner,
14722                    )
14723                }
14724                Self::epochStartBlock(inner) => {
14725                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14726                        inner,
14727                    )
14728                }
14729                Self::finalizedState(inner) => {
14730                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14731                        inner,
14732                    )
14733                }
14734                Self::genesisStakeTableState(inner) => {
14735                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14736                        inner,
14737                    )
14738                }
14739                Self::genesisState(inner) => {
14740                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14741                        inner,
14742                    )
14743                }
14744                Self::getHotShotCommitment(inner) => {
14745                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14746                        inner,
14747                    )
14748                }
14749                Self::getStateHistoryCount(inner) => {
14750                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14751                        inner,
14752                    )
14753                }
14754                Self::getVersion(inner) => {
14755                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14756                }
14757                Self::initialize(inner) => {
14758                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14759                }
14760                Self::initializeV2(inner) => {
14761                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14762                        inner,
14763                    )
14764                }
14765                Self::isEpochRoot(inner) => {
14766                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14767                        inner,
14768                    )
14769                }
14770                Self::isGtEpochRoot(inner) => {
14771                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14772                        inner,
14773                    )
14774                }
14775                Self::isPermissionedProverEnabled(inner) => {
14776                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14777                        inner,
14778                    )
14779                }
14780                Self::lagOverEscapeHatchThreshold(inner) => {
14781                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14782                        inner,
14783                    )
14784                }
14785                Self::newFinalizedState_0(inner) => {
14786                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14787                        inner,
14788                    )
14789                }
14790                Self::newFinalizedState_1(inner) => {
14791                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14792                        inner,
14793                    )
14794                }
14795                Self::owner(inner) => {
14796                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14797                }
14798                Self::permissionedProver(inner) => {
14799                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14800                        inner,
14801                    )
14802                }
14803                Self::proxiableUUID(inner) => {
14804                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14805                        inner,
14806                    )
14807                }
14808                Self::renounceOwnership(inner) => {
14809                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14810                        inner,
14811                    )
14812                }
14813                Self::setPermissionedProver(inner) => {
14814                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14815                        inner,
14816                    )
14817                }
14818                Self::setStateHistoryRetentionPeriod(inner) => {
14819                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14820                        inner,
14821                    )
14822                }
14823                Self::setstateHistoryRetentionPeriod(inner) => {
14824                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14825                        inner,
14826                    )
14827                }
14828                Self::stateHistoryCommitments(inner) => {
14829                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14830                        inner,
14831                    )
14832                }
14833                Self::stateHistoryFirstIndex(inner) => {
14834                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14835                        inner,
14836                    )
14837                }
14838                Self::stateHistoryRetentionPeriod(inner) => {
14839                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14840                        inner,
14841                    )
14842                }
14843                Self::transferOwnership(inner) => {
14844                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14845                        inner,
14846                    )
14847                }
14848                Self::updateEpochStartBlock(inner) => {
14849                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14850                        inner,
14851                    )
14852                }
14853                Self::upgradeToAndCall(inner) => {
14854                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14855                        inner,
14856                    )
14857                }
14858                Self::votingStakeTableState(inner) => {
14859                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14860                        inner,
14861                    )
14862                }
14863            }
14864        }
14865        #[inline]
14866        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14867            match self {
14868                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14869                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14870                        inner,
14871                        out,
14872                    )
14873                }
14874                Self::_getVk(inner) => {
14875                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14876                }
14877                Self::blocksPerEpoch(inner) => {
14878                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14879                        inner,
14880                        out,
14881                    )
14882                }
14883                Self::currentBlockNumber(inner) => {
14884                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14885                        inner,
14886                        out,
14887                    )
14888                }
14889                Self::currentEpoch(inner) => {
14890                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14891                        inner,
14892                        out,
14893                    )
14894                }
14895                Self::disablePermissionedProverMode(inner) => {
14896                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14897                        inner,
14898                        out,
14899                    )
14900                }
14901                Self::epochFromBlockNumber(inner) => {
14902                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14903                        inner,
14904                        out,
14905                    )
14906                }
14907                Self::epochStartBlock(inner) => {
14908                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14909                        inner,
14910                        out,
14911                    )
14912                }
14913                Self::finalizedState(inner) => {
14914                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14915                        inner,
14916                        out,
14917                    )
14918                }
14919                Self::genesisStakeTableState(inner) => {
14920                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14921                        inner,
14922                        out,
14923                    )
14924                }
14925                Self::genesisState(inner) => {
14926                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14927                        inner,
14928                        out,
14929                    )
14930                }
14931                Self::getHotShotCommitment(inner) => {
14932                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14933                        inner,
14934                        out,
14935                    )
14936                }
14937                Self::getStateHistoryCount(inner) => {
14938                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14939                        inner,
14940                        out,
14941                    )
14942                }
14943                Self::getVersion(inner) => {
14944                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14945                        inner,
14946                        out,
14947                    )
14948                }
14949                Self::initialize(inner) => {
14950                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14951                        inner,
14952                        out,
14953                    )
14954                }
14955                Self::initializeV2(inner) => {
14956                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14957                        inner,
14958                        out,
14959                    )
14960                }
14961                Self::isEpochRoot(inner) => {
14962                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14963                        inner,
14964                        out,
14965                    )
14966                }
14967                Self::isGtEpochRoot(inner) => {
14968                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14969                        inner,
14970                        out,
14971                    )
14972                }
14973                Self::isPermissionedProverEnabled(inner) => {
14974                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14975                        inner,
14976                        out,
14977                    )
14978                }
14979                Self::lagOverEscapeHatchThreshold(inner) => {
14980                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14981                        inner,
14982                        out,
14983                    )
14984                }
14985                Self::newFinalizedState_0(inner) => {
14986                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14987                        inner,
14988                        out,
14989                    )
14990                }
14991                Self::newFinalizedState_1(inner) => {
14992                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14993                        inner,
14994                        out,
14995                    )
14996                }
14997                Self::owner(inner) => {
14998                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14999                }
15000                Self::permissionedProver(inner) => {
15001                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15002                        inner,
15003                        out,
15004                    )
15005                }
15006                Self::proxiableUUID(inner) => {
15007                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15008                        inner,
15009                        out,
15010                    )
15011                }
15012                Self::renounceOwnership(inner) => {
15013                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15014                        inner,
15015                        out,
15016                    )
15017                }
15018                Self::setPermissionedProver(inner) => {
15019                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15020                        inner,
15021                        out,
15022                    )
15023                }
15024                Self::setStateHistoryRetentionPeriod(inner) => {
15025                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15026                        inner,
15027                        out,
15028                    )
15029                }
15030                Self::setstateHistoryRetentionPeriod(inner) => {
15031                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15032                        inner,
15033                        out,
15034                    )
15035                }
15036                Self::stateHistoryCommitments(inner) => {
15037                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15038                        inner,
15039                        out,
15040                    )
15041                }
15042                Self::stateHistoryFirstIndex(inner) => {
15043                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
15044                        inner,
15045                        out,
15046                    )
15047                }
15048                Self::stateHistoryRetentionPeriod(inner) => {
15049                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15050                        inner,
15051                        out,
15052                    )
15053                }
15054                Self::transferOwnership(inner) => {
15055                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15056                        inner,
15057                        out,
15058                    )
15059                }
15060                Self::updateEpochStartBlock(inner) => {
15061                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15062                        inner,
15063                        out,
15064                    )
15065                }
15066                Self::upgradeToAndCall(inner) => {
15067                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
15068                        inner,
15069                        out,
15070                    )
15071                }
15072                Self::votingStakeTableState(inner) => {
15073                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15074                        inner,
15075                        out,
15076                    )
15077                }
15078            }
15079        }
15080    }
15081    ///Container for all the [`LightClientV2`](self) custom errors.
15082    #[derive(Clone)]
15083    #[derive(serde::Serialize, serde::Deserialize)]
15084    #[derive(Debug, PartialEq, Eq, Hash)]
15085    pub enum LightClientV2Errors {
15086        #[allow(missing_docs)]
15087        AddressEmptyCode(AddressEmptyCode),
15088        #[allow(missing_docs)]
15089        DeprecatedApi(DeprecatedApi),
15090        #[allow(missing_docs)]
15091        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
15092        #[allow(missing_docs)]
15093        ERC1967NonPayable(ERC1967NonPayable),
15094        #[allow(missing_docs)]
15095        FailedInnerCall(FailedInnerCall),
15096        #[allow(missing_docs)]
15097        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
15098        #[allow(missing_docs)]
15099        InvalidAddress(InvalidAddress),
15100        #[allow(missing_docs)]
15101        InvalidArgs(InvalidArgs),
15102        #[allow(missing_docs)]
15103        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
15104        #[allow(missing_docs)]
15105        InvalidInitialization(InvalidInitialization),
15106        #[allow(missing_docs)]
15107        InvalidMaxStateHistory(InvalidMaxStateHistory),
15108        #[allow(missing_docs)]
15109        InvalidProof(InvalidProof),
15110        #[allow(missing_docs)]
15111        InvalidScalar(InvalidScalar),
15112        #[allow(missing_docs)]
15113        MissingEpochRootUpdate(MissingEpochRootUpdate),
15114        #[allow(missing_docs)]
15115        NoChangeRequired(NoChangeRequired),
15116        #[allow(missing_docs)]
15117        NotInitializing(NotInitializing),
15118        #[allow(missing_docs)]
15119        OutdatedState(OutdatedState),
15120        #[allow(missing_docs)]
15121        OwnableInvalidOwner(OwnableInvalidOwner),
15122        #[allow(missing_docs)]
15123        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
15124        #[allow(missing_docs)]
15125        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
15126        #[allow(missing_docs)]
15127        ProverNotPermissioned(ProverNotPermissioned),
15128        #[allow(missing_docs)]
15129        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
15130        #[allow(missing_docs)]
15131        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
15132        #[allow(missing_docs)]
15133        WrongStakeTableUsed(WrongStakeTableUsed),
15134    }
15135    impl LightClientV2Errors {
15136        /// All the selectors of this enum.
15137        ///
15138        /// Note that the selectors might not be in the same order as the variants.
15139        /// No guarantees are made about the order of the selectors.
15140        ///
15141        /// Prefer using `SolInterface` methods instead.
15142        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15143            [5u8, 28u8, 70u8, 239u8],
15144            [5u8, 176u8, 92u8, 204u8],
15145            [8u8, 10u8, 232u8, 217u8],
15146            [9u8, 189u8, 227u8, 57u8],
15147            [17u8, 140u8, 218u8, 167u8],
15148            [20u8, 37u8, 234u8, 66u8],
15149            [30u8, 79u8, 189u8, 247u8],
15150            [47u8, 171u8, 146u8, 202u8],
15151            [76u8, 156u8, 140u8, 227u8],
15152            [78u8, 64u8, 92u8, 141u8],
15153            [81u8, 97u8, 128u8, 137u8],
15154            [97u8, 90u8, 146u8, 100u8],
15155            [153u8, 150u8, 179u8, 21u8],
15156            [161u8, 186u8, 7u8, 238u8],
15157            [163u8, 166u8, 71u8, 128u8],
15158            [168u8, 99u8, 174u8, 201u8],
15159            [170u8, 29u8, 73u8, 164u8],
15160            [176u8, 180u8, 56u8, 119u8],
15161            [179u8, 152u8, 151u8, 159u8],
15162            [215u8, 230u8, 188u8, 248u8],
15163            [224u8, 124u8, 141u8, 186u8],
15164            [230u8, 196u8, 36u8, 123u8],
15165            [244u8, 160u8, 238u8, 224u8],
15166            [249u8, 46u8, 232u8, 169u8],
15167        ];
15168        /// The names of the variants in the same order as `SELECTORS`.
15169        pub const VARIANT_NAMES: &'static [&'static str] = &[
15170            ::core::stringify!(OutdatedState),
15171            ::core::stringify!(InvalidScalar),
15172            ::core::stringify!(MissingEpochRootUpdate),
15173            ::core::stringify!(InvalidProof),
15174            ::core::stringify!(OwnableUnauthorizedAccount),
15175            ::core::stringify!(FailedInnerCall),
15176            ::core::stringify!(OwnableInvalidOwner),
15177            ::core::stringify!(OwnershipCannotBeRenounced),
15178            ::core::stringify!(ERC1967InvalidImplementation),
15179            ::core::stringify!(DeprecatedApi),
15180            ::core::stringify!(WrongStakeTableUsed),
15181            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
15182            ::core::stringify!(AddressEmptyCode),
15183            ::core::stringify!(InvalidArgs),
15184            ::core::stringify!(ProverNotPermissioned),
15185            ::core::stringify!(NoChangeRequired),
15186            ::core::stringify!(UUPSUnsupportedProxiableUUID),
15187            ::core::stringify!(InsufficientSnapshotHistory),
15188            ::core::stringify!(ERC1967NonPayable),
15189            ::core::stringify!(NotInitializing),
15190            ::core::stringify!(UUPSUnauthorizedCallContext),
15191            ::core::stringify!(InvalidAddress),
15192            ::core::stringify!(InvalidMaxStateHistory),
15193            ::core::stringify!(InvalidInitialization),
15194        ];
15195        /// The signatures in the same order as `SELECTORS`.
15196        pub const SIGNATURES: &'static [&'static str] = &[
15197            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
15198            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
15199            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
15200            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
15201            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
15202            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
15203            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
15204            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
15205            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
15206            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
15207            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
15208            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
15209            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
15210            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
15211            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
15212            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
15213            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
15214            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
15215            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
15216            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
15217            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
15218            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
15219            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
15220            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
15221        ];
15222        /// Returns the signature for the given selector, if known.
15223        #[inline]
15224        pub fn signature_by_selector(
15225            selector: [u8; 4usize],
15226        ) -> ::core::option::Option<&'static str> {
15227            match Self::SELECTORS.binary_search(&selector) {
15228                ::core::result::Result::Ok(idx) => {
15229                    ::core::option::Option::Some(Self::SIGNATURES[idx])
15230                }
15231                ::core::result::Result::Err(_) => ::core::option::Option::None,
15232            }
15233        }
15234        /// Returns the enum variant name for the given selector, if known.
15235        #[inline]
15236        pub fn name_by_selector(
15237            selector: [u8; 4usize],
15238        ) -> ::core::option::Option<&'static str> {
15239            let sig = Self::signature_by_selector(selector)?;
15240            sig.split_once('(').map(|(name, _)| name)
15241        }
15242    }
15243    #[automatically_derived]
15244    impl alloy_sol_types::SolInterface for LightClientV2Errors {
15245        const NAME: &'static str = "LightClientV2Errors";
15246        const MIN_DATA_LENGTH: usize = 0usize;
15247        const COUNT: usize = 24usize;
15248        #[inline]
15249        fn selector(&self) -> [u8; 4] {
15250            match self {
15251                Self::AddressEmptyCode(_) => {
15252                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
15253                }
15254                Self::DeprecatedApi(_) => {
15255                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
15256                }
15257                Self::ERC1967InvalidImplementation(_) => {
15258                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
15259                }
15260                Self::ERC1967NonPayable(_) => {
15261                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
15262                }
15263                Self::FailedInnerCall(_) => {
15264                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
15265                }
15266                Self::InsufficientSnapshotHistory(_) => {
15267                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
15268                }
15269                Self::InvalidAddress(_) => {
15270                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
15271                }
15272                Self::InvalidArgs(_) => {
15273                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
15274                }
15275                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
15276                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
15277                }
15278                Self::InvalidInitialization(_) => {
15279                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
15280                }
15281                Self::InvalidMaxStateHistory(_) => {
15282                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
15283                }
15284                Self::InvalidProof(_) => {
15285                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
15286                }
15287                Self::InvalidScalar(_) => {
15288                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
15289                }
15290                Self::MissingEpochRootUpdate(_) => {
15291                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
15292                }
15293                Self::NoChangeRequired(_) => {
15294                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
15295                }
15296                Self::NotInitializing(_) => {
15297                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
15298                }
15299                Self::OutdatedState(_) => {
15300                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
15301                }
15302                Self::OwnableInvalidOwner(_) => {
15303                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
15304                }
15305                Self::OwnableUnauthorizedAccount(_) => {
15306                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
15307                }
15308                Self::OwnershipCannotBeRenounced(_) => {
15309                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
15310                }
15311                Self::ProverNotPermissioned(_) => {
15312                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
15313                }
15314                Self::UUPSUnauthorizedCallContext(_) => {
15315                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
15316                }
15317                Self::UUPSUnsupportedProxiableUUID(_) => {
15318                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
15319                }
15320                Self::WrongStakeTableUsed(_) => {
15321                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
15322                }
15323            }
15324        }
15325        #[inline]
15326        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15327            Self::SELECTORS.get(i).copied()
15328        }
15329        #[inline]
15330        fn valid_selector(selector: [u8; 4]) -> bool {
15331            Self::SELECTORS.binary_search(&selector).is_ok()
15332        }
15333        #[inline]
15334        #[allow(non_snake_case)]
15335        fn abi_decode_raw(
15336            selector: [u8; 4],
15337            data: &[u8],
15338        ) -> alloy_sol_types::Result<Self> {
15339            Self::abi_decode_raw_with_config(
15340                selector,
15341                data,
15342                alloy_sol_types::abi::AbiDecoderConfig::default(),
15343            )
15344        }
15345        #[inline]
15346        #[allow(non_snake_case)]
15347        fn abi_decode_raw_with_config(
15348            selector: [u8; 4],
15349            data: &[u8],
15350            config: alloy_sol_types::abi::AbiDecoderConfig,
15351        ) -> alloy_sol_types::Result<Self> {
15352            static DECODE_SHIMS: &[fn(
15353                &[u8],
15354                alloy_sol_types::abi::AbiDecoderConfig,
15355            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
15356                {
15357                    fn OutdatedState(
15358                        data: &[u8],
15359                        config: alloy_sol_types::abi::AbiDecoderConfig,
15360                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15361                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15362                                data,
15363                                config,
15364                            )
15365                            .map(LightClientV2Errors::OutdatedState)
15366                    }
15367                    OutdatedState
15368                },
15369                {
15370                    fn InvalidScalar(
15371                        data: &[u8],
15372                        config: alloy_sol_types::abi::AbiDecoderConfig,
15373                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15374                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15375                                data,
15376                                config,
15377                            )
15378                            .map(LightClientV2Errors::InvalidScalar)
15379                    }
15380                    InvalidScalar
15381                },
15382                {
15383                    fn MissingEpochRootUpdate(
15384                        data: &[u8],
15385                        config: alloy_sol_types::abi::AbiDecoderConfig,
15386                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15387                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15388                                data,
15389                                config,
15390                            )
15391                            .map(LightClientV2Errors::MissingEpochRootUpdate)
15392                    }
15393                    MissingEpochRootUpdate
15394                },
15395                {
15396                    fn InvalidProof(
15397                        data: &[u8],
15398                        config: alloy_sol_types::abi::AbiDecoderConfig,
15399                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15400                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15401                                data,
15402                                config,
15403                            )
15404                            .map(LightClientV2Errors::InvalidProof)
15405                    }
15406                    InvalidProof
15407                },
15408                {
15409                    fn OwnableUnauthorizedAccount(
15410                        data: &[u8],
15411                        config: alloy_sol_types::abi::AbiDecoderConfig,
15412                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15413                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15414                                data,
15415                                config,
15416                            )
15417                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
15418                    }
15419                    OwnableUnauthorizedAccount
15420                },
15421                {
15422                    fn FailedInnerCall(
15423                        data: &[u8],
15424                        config: alloy_sol_types::abi::AbiDecoderConfig,
15425                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15426                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15427                                data,
15428                                config,
15429                            )
15430                            .map(LightClientV2Errors::FailedInnerCall)
15431                    }
15432                    FailedInnerCall
15433                },
15434                {
15435                    fn OwnableInvalidOwner(
15436                        data: &[u8],
15437                        config: alloy_sol_types::abi::AbiDecoderConfig,
15438                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15439                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15440                                data,
15441                                config,
15442                            )
15443                            .map(LightClientV2Errors::OwnableInvalidOwner)
15444                    }
15445                    OwnableInvalidOwner
15446                },
15447                {
15448                    fn OwnershipCannotBeRenounced(
15449                        data: &[u8],
15450                        config: alloy_sol_types::abi::AbiDecoderConfig,
15451                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15452                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15453                                data,
15454                                config,
15455                            )
15456                            .map(LightClientV2Errors::OwnershipCannotBeRenounced)
15457                    }
15458                    OwnershipCannotBeRenounced
15459                },
15460                {
15461                    fn ERC1967InvalidImplementation(
15462                        data: &[u8],
15463                        config: alloy_sol_types::abi::AbiDecoderConfig,
15464                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15465                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15466                                data,
15467                                config,
15468                            )
15469                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15470                    }
15471                    ERC1967InvalidImplementation
15472                },
15473                {
15474                    fn DeprecatedApi(
15475                        data: &[u8],
15476                        config: alloy_sol_types::abi::AbiDecoderConfig,
15477                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15478                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15479                                data,
15480                                config,
15481                            )
15482                            .map(LightClientV2Errors::DeprecatedApi)
15483                    }
15484                    DeprecatedApi
15485                },
15486                {
15487                    fn WrongStakeTableUsed(
15488                        data: &[u8],
15489                        config: alloy_sol_types::abi::AbiDecoderConfig,
15490                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15491                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15492                                data,
15493                                config,
15494                            )
15495                            .map(LightClientV2Errors::WrongStakeTableUsed)
15496                    }
15497                    WrongStakeTableUsed
15498                },
15499                {
15500                    fn InvalidHotShotBlockForCommitmentCheck(
15501                        data: &[u8],
15502                        config: alloy_sol_types::abi::AbiDecoderConfig,
15503                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15504                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15505                                data,
15506                                config,
15507                            )
15508                            .map(
15509                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15510                            )
15511                    }
15512                    InvalidHotShotBlockForCommitmentCheck
15513                },
15514                {
15515                    fn AddressEmptyCode(
15516                        data: &[u8],
15517                        config: alloy_sol_types::abi::AbiDecoderConfig,
15518                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15519                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15520                                data,
15521                                config,
15522                            )
15523                            .map(LightClientV2Errors::AddressEmptyCode)
15524                    }
15525                    AddressEmptyCode
15526                },
15527                {
15528                    fn InvalidArgs(
15529                        data: &[u8],
15530                        config: alloy_sol_types::abi::AbiDecoderConfig,
15531                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15532                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15533                                data,
15534                                config,
15535                            )
15536                            .map(LightClientV2Errors::InvalidArgs)
15537                    }
15538                    InvalidArgs
15539                },
15540                {
15541                    fn ProverNotPermissioned(
15542                        data: &[u8],
15543                        config: alloy_sol_types::abi::AbiDecoderConfig,
15544                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15545                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15546                                data,
15547                                config,
15548                            )
15549                            .map(LightClientV2Errors::ProverNotPermissioned)
15550                    }
15551                    ProverNotPermissioned
15552                },
15553                {
15554                    fn NoChangeRequired(
15555                        data: &[u8],
15556                        config: alloy_sol_types::abi::AbiDecoderConfig,
15557                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15558                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15559                                data,
15560                                config,
15561                            )
15562                            .map(LightClientV2Errors::NoChangeRequired)
15563                    }
15564                    NoChangeRequired
15565                },
15566                {
15567                    fn UUPSUnsupportedProxiableUUID(
15568                        data: &[u8],
15569                        config: alloy_sol_types::abi::AbiDecoderConfig,
15570                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15571                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15572                                data,
15573                                config,
15574                            )
15575                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15576                    }
15577                    UUPSUnsupportedProxiableUUID
15578                },
15579                {
15580                    fn InsufficientSnapshotHistory(
15581                        data: &[u8],
15582                        config: alloy_sol_types::abi::AbiDecoderConfig,
15583                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15584                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15585                                data,
15586                                config,
15587                            )
15588                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15589                    }
15590                    InsufficientSnapshotHistory
15591                },
15592                {
15593                    fn ERC1967NonPayable(
15594                        data: &[u8],
15595                        config: alloy_sol_types::abi::AbiDecoderConfig,
15596                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15597                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15598                                data,
15599                                config,
15600                            )
15601                            .map(LightClientV2Errors::ERC1967NonPayable)
15602                    }
15603                    ERC1967NonPayable
15604                },
15605                {
15606                    fn NotInitializing(
15607                        data: &[u8],
15608                        config: alloy_sol_types::abi::AbiDecoderConfig,
15609                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15610                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15611                                data,
15612                                config,
15613                            )
15614                            .map(LightClientV2Errors::NotInitializing)
15615                    }
15616                    NotInitializing
15617                },
15618                {
15619                    fn UUPSUnauthorizedCallContext(
15620                        data: &[u8],
15621                        config: alloy_sol_types::abi::AbiDecoderConfig,
15622                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15623                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15624                                data,
15625                                config,
15626                            )
15627                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15628                    }
15629                    UUPSUnauthorizedCallContext
15630                },
15631                {
15632                    fn InvalidAddress(
15633                        data: &[u8],
15634                        config: alloy_sol_types::abi::AbiDecoderConfig,
15635                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15636                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15637                                data,
15638                                config,
15639                            )
15640                            .map(LightClientV2Errors::InvalidAddress)
15641                    }
15642                    InvalidAddress
15643                },
15644                {
15645                    fn InvalidMaxStateHistory(
15646                        data: &[u8],
15647                        config: alloy_sol_types::abi::AbiDecoderConfig,
15648                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15649                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15650                                data,
15651                                config,
15652                            )
15653                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15654                    }
15655                    InvalidMaxStateHistory
15656                },
15657                {
15658                    fn InvalidInitialization(
15659                        data: &[u8],
15660                        config: alloy_sol_types::abi::AbiDecoderConfig,
15661                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15662                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
15663                                data,
15664                                config,
15665                            )
15666                            .map(LightClientV2Errors::InvalidInitialization)
15667                    }
15668                    InvalidInitialization
15669                },
15670            ];
15671            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15672                return Err(
15673                    alloy_sol_types::Error::unknown_selector(
15674                        <Self as alloy_sol_types::SolInterface>::NAME,
15675                        selector,
15676                    ),
15677                );
15678            };
15679            DECODE_SHIMS[idx](data, config)
15680        }
15681        #[inline]
15682        #[allow(non_snake_case)]
15683        fn abi_decode_raw_validate(
15684            selector: [u8; 4],
15685            data: &[u8],
15686        ) -> alloy_sol_types::Result<Self> {
15687            Self::abi_decode_raw_with_config(
15688                selector,
15689                data,
15690                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15691            )
15692        }
15693        #[inline]
15694        fn abi_encoded_size(&self) -> usize {
15695            match self {
15696                Self::AddressEmptyCode(inner) => {
15697                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15698                        inner,
15699                    )
15700                }
15701                Self::DeprecatedApi(inner) => {
15702                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15703                }
15704                Self::ERC1967InvalidImplementation(inner) => {
15705                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15706                        inner,
15707                    )
15708                }
15709                Self::ERC1967NonPayable(inner) => {
15710                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15711                        inner,
15712                    )
15713                }
15714                Self::FailedInnerCall(inner) => {
15715                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15716                        inner,
15717                    )
15718                }
15719                Self::InsufficientSnapshotHistory(inner) => {
15720                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15721                        inner,
15722                    )
15723                }
15724                Self::InvalidAddress(inner) => {
15725                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15726                        inner,
15727                    )
15728                }
15729                Self::InvalidArgs(inner) => {
15730                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15731                }
15732                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15733                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15734                        inner,
15735                    )
15736                }
15737                Self::InvalidInitialization(inner) => {
15738                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15739                        inner,
15740                    )
15741                }
15742                Self::InvalidMaxStateHistory(inner) => {
15743                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15744                        inner,
15745                    )
15746                }
15747                Self::InvalidProof(inner) => {
15748                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15749                }
15750                Self::InvalidScalar(inner) => {
15751                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
15752                }
15753                Self::MissingEpochRootUpdate(inner) => {
15754                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15755                        inner,
15756                    )
15757                }
15758                Self::NoChangeRequired(inner) => {
15759                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15760                        inner,
15761                    )
15762                }
15763                Self::NotInitializing(inner) => {
15764                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15765                        inner,
15766                    )
15767                }
15768                Self::OutdatedState(inner) => {
15769                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15770                }
15771                Self::OwnableInvalidOwner(inner) => {
15772                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15773                        inner,
15774                    )
15775                }
15776                Self::OwnableUnauthorizedAccount(inner) => {
15777                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15778                        inner,
15779                    )
15780                }
15781                Self::OwnershipCannotBeRenounced(inner) => {
15782                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
15783                        inner,
15784                    )
15785                }
15786                Self::ProverNotPermissioned(inner) => {
15787                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15788                        inner,
15789                    )
15790                }
15791                Self::UUPSUnauthorizedCallContext(inner) => {
15792                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15793                        inner,
15794                    )
15795                }
15796                Self::UUPSUnsupportedProxiableUUID(inner) => {
15797                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15798                        inner,
15799                    )
15800                }
15801                Self::WrongStakeTableUsed(inner) => {
15802                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15803                        inner,
15804                    )
15805                }
15806            }
15807        }
15808        #[inline]
15809        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15810            match self {
15811                Self::AddressEmptyCode(inner) => {
15812                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15813                        inner,
15814                        out,
15815                    )
15816                }
15817                Self::DeprecatedApi(inner) => {
15818                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15819                        inner,
15820                        out,
15821                    )
15822                }
15823                Self::ERC1967InvalidImplementation(inner) => {
15824                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15825                        inner,
15826                        out,
15827                    )
15828                }
15829                Self::ERC1967NonPayable(inner) => {
15830                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15831                        inner,
15832                        out,
15833                    )
15834                }
15835                Self::FailedInnerCall(inner) => {
15836                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15837                        inner,
15838                        out,
15839                    )
15840                }
15841                Self::InsufficientSnapshotHistory(inner) => {
15842                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15843                        inner,
15844                        out,
15845                    )
15846                }
15847                Self::InvalidAddress(inner) => {
15848                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15849                        inner,
15850                        out,
15851                    )
15852                }
15853                Self::InvalidArgs(inner) => {
15854                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15855                        inner,
15856                        out,
15857                    )
15858                }
15859                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15860                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15861                        inner,
15862                        out,
15863                    )
15864                }
15865                Self::InvalidInitialization(inner) => {
15866                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15867                        inner,
15868                        out,
15869                    )
15870                }
15871                Self::InvalidMaxStateHistory(inner) => {
15872                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15873                        inner,
15874                        out,
15875                    )
15876                }
15877                Self::InvalidProof(inner) => {
15878                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15879                        inner,
15880                        out,
15881                    )
15882                }
15883                Self::InvalidScalar(inner) => {
15884                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
15885                        inner,
15886                        out,
15887                    )
15888                }
15889                Self::MissingEpochRootUpdate(inner) => {
15890                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15891                        inner,
15892                        out,
15893                    )
15894                }
15895                Self::NoChangeRequired(inner) => {
15896                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15897                        inner,
15898                        out,
15899                    )
15900                }
15901                Self::NotInitializing(inner) => {
15902                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15903                        inner,
15904                        out,
15905                    )
15906                }
15907                Self::OutdatedState(inner) => {
15908                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15909                        inner,
15910                        out,
15911                    )
15912                }
15913                Self::OwnableInvalidOwner(inner) => {
15914                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15915                        inner,
15916                        out,
15917                    )
15918                }
15919                Self::OwnableUnauthorizedAccount(inner) => {
15920                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15921                        inner,
15922                        out,
15923                    )
15924                }
15925                Self::OwnershipCannotBeRenounced(inner) => {
15926                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
15927                        inner,
15928                        out,
15929                    )
15930                }
15931                Self::ProverNotPermissioned(inner) => {
15932                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
15933                        inner,
15934                        out,
15935                    )
15936                }
15937                Self::UUPSUnauthorizedCallContext(inner) => {
15938                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15939                        inner,
15940                        out,
15941                    )
15942                }
15943                Self::UUPSUnsupportedProxiableUUID(inner) => {
15944                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15945                        inner,
15946                        out,
15947                    )
15948                }
15949                Self::WrongStakeTableUsed(inner) => {
15950                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
15951                        inner,
15952                        out,
15953                    )
15954                }
15955            }
15956        }
15957    }
15958    #[automatically_derived]
15959    impl LightClientV2Errors {
15960        /**Creates a [`AddressEmptyCode`] error.
15961
15962```solidity
15963error AddressEmptyCode(address)
15964```*/
15965        #[inline]
15966        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
15967            Self::AddressEmptyCode(AddressEmptyCode { target: target })
15968        }
15969        /**Creates a [`DeprecatedApi`] error.
15970
15971```solidity
15972error DeprecatedApi()
15973```*/
15974        #[inline]
15975        pub fn deprecated_api() -> Self {
15976            Self::DeprecatedApi(DeprecatedApi)
15977        }
15978        /**Creates a [`ERC1967InvalidImplementation`] error.
15979
15980```solidity
15981error ERC1967InvalidImplementation(address)
15982```*/
15983        #[inline]
15984        pub fn erc_1967_invalid_implementation(
15985            implementation: alloy::sol_types::private::Address,
15986        ) -> Self {
15987            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
15988                implementation: implementation,
15989            })
15990        }
15991        /**Creates a [`ERC1967NonPayable`] error.
15992
15993```solidity
15994error ERC1967NonPayable()
15995```*/
15996        #[inline]
15997        pub fn erc_1967_non_payable() -> Self {
15998            Self::ERC1967NonPayable(ERC1967NonPayable)
15999        }
16000        /**Creates a [`FailedInnerCall`] error.
16001
16002```solidity
16003error FailedInnerCall()
16004```*/
16005        #[inline]
16006        pub fn failed_inner_call() -> Self {
16007            Self::FailedInnerCall(FailedInnerCall)
16008        }
16009        /**Creates a [`InsufficientSnapshotHistory`] error.
16010
16011```solidity
16012error InsufficientSnapshotHistory()
16013```*/
16014        #[inline]
16015        pub fn insufficient_snapshot_history() -> Self {
16016            Self::InsufficientSnapshotHistory(InsufficientSnapshotHistory)
16017        }
16018        /**Creates a [`InvalidAddress`] error.
16019
16020```solidity
16021error InvalidAddress()
16022```*/
16023        #[inline]
16024        pub fn invalid_address() -> Self {
16025            Self::InvalidAddress(InvalidAddress)
16026        }
16027        /**Creates a [`InvalidArgs`] error.
16028
16029```solidity
16030error InvalidArgs()
16031```*/
16032        #[inline]
16033        pub fn invalid_args() -> Self {
16034            Self::InvalidArgs(InvalidArgs)
16035        }
16036        /**Creates a [`InvalidHotShotBlockForCommitmentCheck`] error.
16037
16038```solidity
16039error InvalidHotShotBlockForCommitmentCheck()
16040```*/
16041        #[inline]
16042        pub fn invalid_hot_shot_block_for_commitment_check() -> Self {
16043            Self::InvalidHotShotBlockForCommitmentCheck(
16044                InvalidHotShotBlockForCommitmentCheck,
16045            )
16046        }
16047        /**Creates a [`InvalidInitialization`] error.
16048
16049```solidity
16050error InvalidInitialization()
16051```*/
16052        #[inline]
16053        pub fn invalid_initialization() -> Self {
16054            Self::InvalidInitialization(InvalidInitialization)
16055        }
16056        /**Creates a [`InvalidMaxStateHistory`] error.
16057
16058```solidity
16059error InvalidMaxStateHistory()
16060```*/
16061        #[inline]
16062        pub fn invalid_max_state_history() -> Self {
16063            Self::InvalidMaxStateHistory(InvalidMaxStateHistory)
16064        }
16065        /**Creates a [`InvalidProof`] error.
16066
16067```solidity
16068error InvalidProof()
16069```*/
16070        #[inline]
16071        pub fn invalid_proof() -> Self {
16072            Self::InvalidProof(InvalidProof)
16073        }
16074        /**Creates a [`InvalidScalar`] error.
16075
16076```solidity
16077error InvalidScalar()
16078```*/
16079        #[inline]
16080        pub fn invalid_scalar() -> Self {
16081            Self::InvalidScalar(InvalidScalar)
16082        }
16083        /**Creates a [`MissingEpochRootUpdate`] error.
16084
16085```solidity
16086error MissingEpochRootUpdate()
16087```*/
16088        #[inline]
16089        pub fn missing_epoch_root_update() -> Self {
16090            Self::MissingEpochRootUpdate(MissingEpochRootUpdate)
16091        }
16092        /**Creates a [`NoChangeRequired`] error.
16093
16094```solidity
16095error NoChangeRequired()
16096```*/
16097        #[inline]
16098        pub fn no_change_required() -> Self {
16099            Self::NoChangeRequired(NoChangeRequired)
16100        }
16101        /**Creates a [`NotInitializing`] error.
16102
16103```solidity
16104error NotInitializing()
16105```*/
16106        #[inline]
16107        pub fn not_initializing() -> Self {
16108            Self::NotInitializing(NotInitializing)
16109        }
16110        /**Creates a [`OutdatedState`] error.
16111
16112```solidity
16113error OutdatedState()
16114```*/
16115        #[inline]
16116        pub fn outdated_state() -> Self {
16117            Self::OutdatedState(OutdatedState)
16118        }
16119        /**Creates a [`OwnableInvalidOwner`] error.
16120
16121```solidity
16122error OwnableInvalidOwner(address)
16123```*/
16124        #[inline]
16125        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
16126            Self::OwnableInvalidOwner(OwnableInvalidOwner {
16127                owner: owner,
16128            })
16129        }
16130        /**Creates a [`OwnableUnauthorizedAccount`] error.
16131
16132```solidity
16133error OwnableUnauthorizedAccount(address)
16134```*/
16135        #[inline]
16136        pub fn ownable_unauthorized_account(
16137            account: alloy::sol_types::private::Address,
16138        ) -> Self {
16139            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
16140                account: account,
16141            })
16142        }
16143        /**Creates a [`OwnershipCannotBeRenounced`] error.
16144
16145```solidity
16146error OwnershipCannotBeRenounced()
16147```*/
16148        #[inline]
16149        pub fn ownership_cannot_be_renounced() -> Self {
16150            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
16151        }
16152        /**Creates a [`ProverNotPermissioned`] error.
16153
16154```solidity
16155error ProverNotPermissioned()
16156```*/
16157        #[inline]
16158        pub fn prover_not_permissioned() -> Self {
16159            Self::ProverNotPermissioned(ProverNotPermissioned)
16160        }
16161        /**Creates a [`UUPSUnauthorizedCallContext`] error.
16162
16163```solidity
16164error UUPSUnauthorizedCallContext()
16165```*/
16166        #[inline]
16167        pub fn uups_unauthorized_call_context() -> Self {
16168            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
16169        }
16170        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
16171
16172```solidity
16173error UUPSUnsupportedProxiableUUID(bytes32)
16174```*/
16175        #[inline]
16176        pub fn uups_unsupported_proxiable_uuid(
16177            slot: alloy::sol_types::private::FixedBytes<32>,
16178        ) -> Self {
16179            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
16180                slot: slot,
16181            })
16182        }
16183        /**Creates a [`WrongStakeTableUsed`] error.
16184
16185```solidity
16186error WrongStakeTableUsed()
16187```*/
16188        #[inline]
16189        pub fn wrong_stake_table_used() -> Self {
16190            Self::WrongStakeTableUsed(WrongStakeTableUsed)
16191        }
16192    }
16193    ///Container for all the [`LightClientV2`](self) events.
16194    #[derive(Clone)]
16195    #[derive(serde::Serialize, serde::Deserialize)]
16196    #[derive(Debug, PartialEq, Eq, Hash)]
16197    pub enum LightClientV2Events {
16198        #[allow(missing_docs)]
16199        Initialized(Initialized),
16200        #[allow(missing_docs)]
16201        NewEpoch(NewEpoch),
16202        #[allow(missing_docs)]
16203        NewState(NewState),
16204        #[allow(missing_docs)]
16205        OwnershipTransferred(OwnershipTransferred),
16206        #[allow(missing_docs)]
16207        PermissionedProverNotRequired(PermissionedProverNotRequired),
16208        #[allow(missing_docs)]
16209        PermissionedProverRequired(PermissionedProverRequired),
16210        #[allow(missing_docs)]
16211        Upgrade(Upgrade),
16212        #[allow(missing_docs)]
16213        Upgraded(Upgraded),
16214    }
16215    impl LightClientV2Events {
16216        /// All the selectors of this enum.
16217        ///
16218        /// Note that the selectors might not be in the same order as the variants.
16219        /// No guarantees are made about the order of the selectors.
16220        ///
16221        /// Prefer using `SolInterface` methods instead.
16222        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16223            [
16224                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16225                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16226                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16227            ],
16228            [
16229                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
16230                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
16231                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
16232            ],
16233            [
16234                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16235                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16236                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16237            ],
16238            [
16239                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
16240                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
16241                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
16242            ],
16243            [
16244                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
16245                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
16246                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
16247            ],
16248            [
16249                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
16250                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
16251                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
16252            ],
16253            [
16254                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
16255                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
16256                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
16257            ],
16258            [
16259                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
16260                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
16261                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
16262            ],
16263        ];
16264        /// The names of the variants in the same order as `SELECTORS`.
16265        pub const VARIANT_NAMES: &'static [&'static str] = &[
16266            ::core::stringify!(NewEpoch),
16267            ::core::stringify!(PermissionedProverRequired),
16268            ::core::stringify!(OwnershipTransferred),
16269            ::core::stringify!(PermissionedProverNotRequired),
16270            ::core::stringify!(NewState),
16271            ::core::stringify!(Upgraded),
16272            ::core::stringify!(Initialized),
16273            ::core::stringify!(Upgrade),
16274        ];
16275        /// The signatures in the same order as `SELECTORS`.
16276        pub const SIGNATURES: &'static [&'static str] = &[
16277            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
16278            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
16279            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
16280            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
16281            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
16282            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
16283            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
16284            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
16285        ];
16286        /// Returns the signature for the given selector, if known.
16287        #[inline]
16288        pub fn signature_by_selector(
16289            selector: [u8; 32usize],
16290        ) -> ::core::option::Option<&'static str> {
16291            match Self::SELECTORS.binary_search(&selector) {
16292                ::core::result::Result::Ok(idx) => {
16293                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16294                }
16295                ::core::result::Result::Err(_) => ::core::option::Option::None,
16296            }
16297        }
16298        /// Returns the enum variant name for the given selector, if known.
16299        #[inline]
16300        pub fn name_by_selector(
16301            selector: [u8; 32usize],
16302        ) -> ::core::option::Option<&'static str> {
16303            let sig = Self::signature_by_selector(selector)?;
16304            sig.split_once('(').map(|(name, _)| name)
16305        }
16306    }
16307    #[automatically_derived]
16308    impl alloy_sol_types::SolEventInterface for LightClientV2Events {
16309        const NAME: &'static str = "LightClientV2Events";
16310        const COUNT: usize = 8usize;
16311        fn decode_raw_log(
16312            topics: &[alloy_sol_types::Word],
16313            data: &[u8],
16314        ) -> alloy_sol_types::Result<Self> {
16315            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
16316                topics,
16317                data,
16318                alloy_sol_types::abi::AbiDecoderConfig::default(),
16319            )
16320        }
16321        fn decode_raw_log_with_config(
16322            topics: &[alloy_sol_types::Word],
16323            data: &[u8],
16324            config: alloy_sol_types::abi::AbiDecoderConfig,
16325        ) -> alloy_sol_types::Result<Self> {
16326            match topics.first().copied() {
16327                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16328                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16329                            topics,
16330                            data,
16331                            config,
16332                        )
16333                        .map(Self::Initialized)
16334                }
16335                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16336                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16337                            topics,
16338                            data,
16339                            config,
16340                        )
16341                        .map(Self::NewEpoch)
16342                }
16343                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16344                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16345                            topics,
16346                            data,
16347                            config,
16348                        )
16349                        .map(Self::NewState)
16350                }
16351                Some(
16352                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16353                ) => {
16354                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16355                            topics,
16356                            data,
16357                            config,
16358                        )
16359                        .map(Self::OwnershipTransferred)
16360                }
16361                Some(
16362                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16363                ) => {
16364                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16365                            topics,
16366                            data,
16367                            config,
16368                        )
16369                        .map(Self::PermissionedProverNotRequired)
16370                }
16371                Some(
16372                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16373                ) => {
16374                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16375                            topics,
16376                            data,
16377                            config,
16378                        )
16379                        .map(Self::PermissionedProverRequired)
16380                }
16381                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16382                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16383                            topics,
16384                            data,
16385                            config,
16386                        )
16387                        .map(Self::Upgrade)
16388                }
16389                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16390                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
16391                            topics,
16392                            data,
16393                            config,
16394                        )
16395                        .map(Self::Upgraded)
16396                }
16397                _ => {
16398                    if topics
16399                        .len()
16400                        .checked_mul(alloy_sol_types::Word::len_bytes())
16401                        .and_then(|len| len.checked_add(data.len()))
16402                        .is_none_or(|len| len > config.get_memory_limit())
16403                    {
16404                        return alloy_sol_types::private::Err(
16405                            alloy_sol_types::Error::MemoryLimitExceeded(
16406                                config.get_memory_limit(),
16407                            ),
16408                        );
16409                    }
16410                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16411                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16412                        log: alloy_sol_types::private::Box::new(
16413                            alloy_sol_types::private::LogData::new_unchecked(
16414                                topics.to_vec(),
16415                                data.to_vec().into(),
16416                            ),
16417                        ),
16418                    })
16419                }
16420            }
16421        }
16422    }
16423    #[automatically_derived]
16424    impl alloy_sol_types::private::IntoLogData for LightClientV2Events {
16425        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16426            match self {
16427                Self::Initialized(inner) => {
16428                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16429                }
16430                Self::NewEpoch(inner) => {
16431                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16432                }
16433                Self::NewState(inner) => {
16434                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16435                }
16436                Self::OwnershipTransferred(inner) => {
16437                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16438                }
16439                Self::PermissionedProverNotRequired(inner) => {
16440                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16441                }
16442                Self::PermissionedProverRequired(inner) => {
16443                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16444                }
16445                Self::Upgrade(inner) => {
16446                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16447                }
16448                Self::Upgraded(inner) => {
16449                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16450                }
16451            }
16452        }
16453        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16454            match self {
16455                Self::Initialized(inner) => {
16456                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16457                }
16458                Self::NewEpoch(inner) => {
16459                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16460                }
16461                Self::NewState(inner) => {
16462                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16463                }
16464                Self::OwnershipTransferred(inner) => {
16465                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16466                }
16467                Self::PermissionedProverNotRequired(inner) => {
16468                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16469                }
16470                Self::PermissionedProverRequired(inner) => {
16471                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16472                }
16473                Self::Upgrade(inner) => {
16474                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16475                }
16476                Self::Upgraded(inner) => {
16477                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16478                }
16479            }
16480        }
16481    }
16482    #[automatically_derived]
16483    impl LightClientV2Events {
16484        /**Creates a [`Initialized`] event.
16485
16486```solidity
16487event Initialized(uint64)
16488```*/
16489        #[inline]
16490        pub fn initialized(version: u64) -> Self {
16491            Self::Initialized(Initialized { version: version })
16492        }
16493        /**Creates a [`NewEpoch`] event.
16494
16495```solidity
16496event NewEpoch(uint64)
16497```*/
16498        #[inline]
16499        pub fn new_epoch(epoch: u64) -> Self {
16500            Self::NewEpoch(NewEpoch { epoch: epoch })
16501        }
16502        /**Creates a [`NewState`] event.
16503
16504```solidity
16505event NewState(uint64,uint64,uint256)
16506```*/
16507        #[inline]
16508        pub fn new_state(
16509            view_num: u64,
16510            block_height: u64,
16511            block_comm_root: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16512        ) -> Self {
16513            Self::NewState(NewState {
16514                viewNum: view_num,
16515                blockHeight: block_height,
16516                blockCommRoot: block_comm_root,
16517            })
16518        }
16519        /**Creates a [`OwnershipTransferred`] event.
16520
16521```solidity
16522event OwnershipTransferred(address,address)
16523```*/
16524        #[inline]
16525        pub fn ownership_transferred(
16526            previous_owner: alloy::sol_types::private::Address,
16527            new_owner: alloy::sol_types::private::Address,
16528        ) -> Self {
16529            Self::OwnershipTransferred(OwnershipTransferred {
16530                previousOwner: previous_owner,
16531                newOwner: new_owner,
16532            })
16533        }
16534        /**Creates a [`PermissionedProverNotRequired`] event.
16535
16536```solidity
16537event PermissionedProverNotRequired()
16538```*/
16539        #[inline]
16540        pub fn permissioned_prover_not_required() -> Self {
16541            Self::PermissionedProverNotRequired(PermissionedProverNotRequired)
16542        }
16543        /**Creates a [`PermissionedProverRequired`] event.
16544
16545```solidity
16546event PermissionedProverRequired(address)
16547```*/
16548        #[inline]
16549        pub fn permissioned_prover_required(
16550            permissioned_prover: alloy::sol_types::private::Address,
16551        ) -> Self {
16552            Self::PermissionedProverRequired(PermissionedProverRequired {
16553                permissionedProver: permissioned_prover,
16554            })
16555        }
16556        /**Creates a [`Upgrade`] event.
16557
16558```solidity
16559event Upgrade(address)
16560```*/
16561        #[inline]
16562        pub fn upgrade(implementation: alloy::sol_types::private::Address) -> Self {
16563            Self::Upgrade(Upgrade {
16564                implementation: implementation,
16565            })
16566        }
16567        /**Creates a [`Upgraded`] event.
16568
16569```solidity
16570event Upgraded(address)
16571```*/
16572        #[inline]
16573        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
16574            Self::Upgraded(Upgraded {
16575                implementation: implementation,
16576            })
16577        }
16578    }
16579    use alloy::contract as alloy_contract;
16580    /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
16581
16582See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
16583    #[inline]
16584    pub const fn new<
16585        P: alloy_contract::private::Provider<N>,
16586        N: alloy_contract::private::Network,
16587    >(
16588        address: alloy_sol_types::private::Address,
16589        __provider: P,
16590    ) -> LightClientV2Instance<P, N> {
16591        LightClientV2Instance::<P, N>::new(address, __provider)
16592    }
16593    /**Deploys this contract using the given `provider` and constructor arguments, if any.
16594
16595Returns a new instance of the contract, if the deployment was successful.
16596
16597For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16598    #[inline]
16599    pub fn deploy<
16600        P: alloy_contract::private::Provider<N>,
16601        N: alloy_contract::private::Network,
16602    >(
16603        __provider: P,
16604    ) -> impl ::core::future::Future<
16605        Output = alloy_contract::Result<LightClientV2Instance<P, N>>,
16606    > {
16607        LightClientV2Instance::<P, N>::deploy(__provider)
16608    }
16609    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16610and constructor arguments, if any.
16611
16612This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16613the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16614    #[inline]
16615    pub fn deploy_builder<
16616        P: alloy_contract::private::Provider<N>,
16617        N: alloy_contract::private::Network,
16618    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16619        LightClientV2Instance::<P, N>::deploy_builder(__provider)
16620    }
16621    /**A [`LightClientV2`](self) instance.
16622
16623Contains type-safe methods for interacting with an on-chain instance of the
16624[`LightClientV2`](self) contract located at a given `address`, using a given
16625provider `P`.
16626
16627If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16628documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16629be used to deploy a new instance of the contract.
16630
16631See the [module-level documentation](self) for all the available methods.*/
16632    #[derive(Clone)]
16633    pub struct LightClientV2Instance<P, N = alloy_contract::private::Ethereum> {
16634        address: alloy_sol_types::private::Address,
16635        provider: P,
16636        _network: ::core::marker::PhantomData<N>,
16637    }
16638    #[automatically_derived]
16639    impl<P, N> ::core::fmt::Debug for LightClientV2Instance<P, N> {
16640        #[inline]
16641        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16642            f.debug_tuple("LightClientV2Instance").field(&self.address).finish()
16643        }
16644    }
16645    /// Instantiation and getters/setters.
16646    impl<
16647        P: alloy_contract::private::Provider<N>,
16648        N: alloy_contract::private::Network,
16649    > LightClientV2Instance<P, N> {
16650        /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
16651
16652See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
16653        #[inline]
16654        pub const fn new(
16655            address: alloy_sol_types::private::Address,
16656            __provider: P,
16657        ) -> Self {
16658            Self {
16659                address,
16660                provider: __provider,
16661                _network: ::core::marker::PhantomData,
16662            }
16663        }
16664        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16665
16666Returns a new instance of the contract, if the deployment was successful.
16667
16668For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16669        #[inline]
16670        pub async fn deploy(
16671            __provider: P,
16672        ) -> alloy_contract::Result<LightClientV2Instance<P, N>> {
16673            let call_builder = Self::deploy_builder(__provider);
16674            let contract_address = call_builder.deploy().await?;
16675            Ok(Self::new(contract_address, call_builder.provider))
16676        }
16677        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16678and constructor arguments, if any.
16679
16680This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16681the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16682        #[inline]
16683        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16684            alloy_contract::RawCallBuilder::new_raw_deploy(
16685                __provider,
16686                ::core::clone::Clone::clone(&BYTECODE),
16687            )
16688        }
16689        /// Returns a reference to the address.
16690        #[inline]
16691        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16692            &self.address
16693        }
16694        /// Sets the address.
16695        #[inline]
16696        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16697            self.address = address;
16698        }
16699        /// Sets the address and returns `self`.
16700        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16701            self.set_address(address);
16702            self
16703        }
16704        /// Returns a reference to the provider.
16705        #[inline]
16706        pub const fn provider(&self) -> &P {
16707            &self.provider
16708        }
16709    }
16710    impl<P: ::core::clone::Clone, N> LightClientV2Instance<&P, N> {
16711        /// Clones the provider and returns a new instance with the cloned provider.
16712        #[inline]
16713        pub fn with_cloned_provider(self) -> LightClientV2Instance<P, N> {
16714            LightClientV2Instance {
16715                address: self.address,
16716                provider: ::core::clone::Clone::clone(&self.provider),
16717                _network: ::core::marker::PhantomData,
16718            }
16719        }
16720    }
16721    /// Function calls.
16722    impl<
16723        P: alloy_contract::private::Provider<N>,
16724        N: alloy_contract::private::Network,
16725    > LightClientV2Instance<P, N> {
16726        /// Creates a new call builder using this contract instance's provider and address.
16727        ///
16728        /// Note that the call can be any function call, not just those defined in this
16729        /// contract. Prefer using the other methods for building type-safe contract calls.
16730        pub fn call_builder<C: alloy_sol_types::SolCall>(
16731            &self,
16732            call: &C,
16733        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
16734            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16735        }
16736        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16737        pub fn UPGRADE_INTERFACE_VERSION(
16738            &self,
16739        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
16740            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
16741        }
16742        ///Creates a new call builder for the [`_getVk`] function.
16743        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
16744            self.call_builder(&_getVkCall)
16745        }
16746        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16747        pub fn blocksPerEpoch(
16748            &self,
16749        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
16750            self.call_builder(&blocksPerEpochCall)
16751        }
16752        ///Creates a new call builder for the [`currentBlockNumber`] function.
16753        pub fn currentBlockNumber(
16754            &self,
16755        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
16756            self.call_builder(&currentBlockNumberCall)
16757        }
16758        ///Creates a new call builder for the [`currentEpoch`] function.
16759        pub fn currentEpoch(
16760            &self,
16761        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
16762            self.call_builder(&currentEpochCall)
16763        }
16764        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16765        pub fn disablePermissionedProverMode(
16766            &self,
16767        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
16768            self.call_builder(&disablePermissionedProverModeCall)
16769        }
16770        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16771        pub fn epochFromBlockNumber(
16772            &self,
16773            _blockNum: u64,
16774            _blocksPerEpoch: u64,
16775        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
16776            self.call_builder(
16777                &epochFromBlockNumberCall {
16778                    _blockNum,
16779                    _blocksPerEpoch,
16780                },
16781            )
16782        }
16783        ///Creates a new call builder for the [`epochStartBlock`] function.
16784        pub fn epochStartBlock(
16785            &self,
16786        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
16787            self.call_builder(&epochStartBlockCall)
16788        }
16789        ///Creates a new call builder for the [`finalizedState`] function.
16790        pub fn finalizedState(
16791            &self,
16792        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
16793            self.call_builder(&finalizedStateCall)
16794        }
16795        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16796        pub fn genesisStakeTableState(
16797            &self,
16798        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
16799            self.call_builder(&genesisStakeTableStateCall)
16800        }
16801        ///Creates a new call builder for the [`genesisState`] function.
16802        pub fn genesisState(
16803            &self,
16804        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
16805            self.call_builder(&genesisStateCall)
16806        }
16807        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16808        pub fn getHotShotCommitment(
16809            &self,
16810            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16811        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
16812            self.call_builder(
16813                &getHotShotCommitmentCall {
16814                    hotShotBlockHeight,
16815                },
16816            )
16817        }
16818        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16819        pub fn getStateHistoryCount(
16820            &self,
16821        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
16822            self.call_builder(&getStateHistoryCountCall)
16823        }
16824        ///Creates a new call builder for the [`getVersion`] function.
16825        pub fn getVersion(
16826            &self,
16827        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
16828            self.call_builder(&getVersionCall)
16829        }
16830        ///Creates a new call builder for the [`initialize`] function.
16831        pub fn initialize(
16832            &self,
16833            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16834            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16835            _stateHistoryRetentionPeriod: u32,
16836            owner: alloy::sol_types::private::Address,
16837        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
16838            self.call_builder(
16839                &initializeCall {
16840                    _genesis,
16841                    _genesisStakeTableState,
16842                    _stateHistoryRetentionPeriod,
16843                    owner,
16844                },
16845            )
16846        }
16847        ///Creates a new call builder for the [`initializeV2`] function.
16848        pub fn initializeV2(
16849            &self,
16850            _blocksPerEpoch: u64,
16851            _epochStartBlock: u64,
16852        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
16853            self.call_builder(
16854                &initializeV2Call {
16855                    _blocksPerEpoch,
16856                    _epochStartBlock,
16857                },
16858            )
16859        }
16860        ///Creates a new call builder for the [`isEpochRoot`] function.
16861        pub fn isEpochRoot(
16862            &self,
16863            blockHeight: u64,
16864        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
16865            self.call_builder(&isEpochRootCall { blockHeight })
16866        }
16867        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16868        pub fn isGtEpochRoot(
16869            &self,
16870            blockHeight: u64,
16871        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
16872            self.call_builder(&isGtEpochRootCall { blockHeight })
16873        }
16874        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16875        pub fn isPermissionedProverEnabled(
16876            &self,
16877        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
16878            self.call_builder(&isPermissionedProverEnabledCall)
16879        }
16880        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16881        pub fn lagOverEscapeHatchThreshold(
16882            &self,
16883            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16884            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
16885        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
16886            self.call_builder(
16887                &lagOverEscapeHatchThresholdCall {
16888                    blockNumber,
16889                    blockThreshold,
16890                },
16891            )
16892        }
16893        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16894        pub fn newFinalizedState_0(
16895            &self,
16896            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16897            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16898        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
16899            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16900        }
16901        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16902        pub fn newFinalizedState_1(
16903            &self,
16904            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16905            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16906            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16907        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
16908            self.call_builder(
16909                &newFinalizedState_1Call {
16910                    newState,
16911                    nextStakeTable,
16912                    proof,
16913                },
16914            )
16915        }
16916        ///Creates a new call builder for the [`owner`] function.
16917        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
16918            self.call_builder(&ownerCall)
16919        }
16920        ///Creates a new call builder for the [`permissionedProver`] function.
16921        pub fn permissionedProver(
16922            &self,
16923        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
16924            self.call_builder(&permissionedProverCall)
16925        }
16926        ///Creates a new call builder for the [`proxiableUUID`] function.
16927        pub fn proxiableUUID(
16928            &self,
16929        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
16930            self.call_builder(&proxiableUUIDCall)
16931        }
16932        ///Creates a new call builder for the [`renounceOwnership`] function.
16933        pub fn renounceOwnership(
16934            &self,
16935        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
16936            self.call_builder(&renounceOwnershipCall)
16937        }
16938        ///Creates a new call builder for the [`setPermissionedProver`] function.
16939        pub fn setPermissionedProver(
16940            &self,
16941            prover: alloy::sol_types::private::Address,
16942        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
16943            self.call_builder(
16944                &setPermissionedProverCall {
16945                    prover,
16946                },
16947            )
16948        }
16949        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16950        pub fn setStateHistoryRetentionPeriod(
16951            &self,
16952            historySeconds: u32,
16953        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
16954            self.call_builder(
16955                &setStateHistoryRetentionPeriodCall {
16956                    historySeconds,
16957                },
16958            )
16959        }
16960        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16961        pub fn setstateHistoryRetentionPeriod(
16962            &self,
16963            historySeconds: u32,
16964        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
16965            self.call_builder(
16966                &setstateHistoryRetentionPeriodCall {
16967                    historySeconds,
16968                },
16969            )
16970        }
16971        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16972        pub fn stateHistoryCommitments(
16973            &self,
16974            _0: alloy::sol_types::private::primitives::aliases::U256,
16975        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
16976            self.call_builder(&stateHistoryCommitmentsCall(_0))
16977        }
16978        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16979        pub fn stateHistoryFirstIndex(
16980            &self,
16981        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
16982            self.call_builder(&stateHistoryFirstIndexCall)
16983        }
16984        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16985        pub fn stateHistoryRetentionPeriod(
16986            &self,
16987        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
16988            self.call_builder(&stateHistoryRetentionPeriodCall)
16989        }
16990        ///Creates a new call builder for the [`transferOwnership`] function.
16991        pub fn transferOwnership(
16992            &self,
16993            newOwner: alloy::sol_types::private::Address,
16994        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
16995            self.call_builder(&transferOwnershipCall { newOwner })
16996        }
16997        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16998        pub fn updateEpochStartBlock(
16999            &self,
17000            newEpochStartBlock: u64,
17001        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
17002            self.call_builder(
17003                &updateEpochStartBlockCall {
17004                    newEpochStartBlock,
17005                },
17006            )
17007        }
17008        ///Creates a new call builder for the [`upgradeToAndCall`] function.
17009        pub fn upgradeToAndCall(
17010            &self,
17011            newImplementation: alloy::sol_types::private::Address,
17012            data: alloy::sol_types::private::Bytes,
17013        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
17014            self.call_builder(
17015                &upgradeToAndCallCall {
17016                    newImplementation,
17017                    data,
17018                },
17019            )
17020        }
17021        ///Creates a new call builder for the [`votingStakeTableState`] function.
17022        pub fn votingStakeTableState(
17023            &self,
17024        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
17025            self.call_builder(&votingStakeTableStateCall)
17026        }
17027    }
17028    /// Event filters.
17029    impl<
17030        P: alloy_contract::private::Provider<N>,
17031        N: alloy_contract::private::Network,
17032    > LightClientV2Instance<P, N> {
17033        /// Creates a new event filter using this contract instance's provider and address.
17034        ///
17035        /// Note that the type can be any event, not just those defined in this contract.
17036        /// Prefer using the other methods for building type-safe event filters.
17037        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17038            &self,
17039        ) -> alloy_contract::Event<&P, E, N> {
17040            alloy_contract::Event::new_sol(&self.provider, &self.address)
17041        }
17042        ///Creates a new event filter for the [`Initialized`] event.
17043        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
17044            self.event_filter::<Initialized>()
17045        }
17046        ///Creates a new event filter for the [`NewEpoch`] event.
17047        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
17048            self.event_filter::<NewEpoch>()
17049        }
17050        ///Creates a new event filter for the [`NewState`] event.
17051        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
17052            self.event_filter::<NewState>()
17053        }
17054        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17055        pub fn OwnershipTransferred_filter(
17056            &self,
17057        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
17058            self.event_filter::<OwnershipTransferred>()
17059        }
17060        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
17061        pub fn PermissionedProverNotRequired_filter(
17062            &self,
17063        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
17064            self.event_filter::<PermissionedProverNotRequired>()
17065        }
17066        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
17067        pub fn PermissionedProverRequired_filter(
17068            &self,
17069        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
17070            self.event_filter::<PermissionedProverRequired>()
17071        }
17072        ///Creates a new event filter for the [`Upgrade`] event.
17073        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
17074            self.event_filter::<Upgrade>()
17075        }
17076        ///Creates a new event filter for the [`Upgraded`] event.
17077        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
17078            self.event_filter::<Upgraded>()
17079        }
17080    }
17081}