hotshot_contract_adapter/bindings/
lightclientv2mock.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(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from(
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(
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 alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153    #[derive(Clone)]
154    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::private::SolTypeValue<ScalarField>
159        for alloy::sol_types::private::primitives::aliases::U256 {
160            #[inline]
161            fn stv_to_tokens(
162                &self,
163            ) -> <alloy::sol_types::sol_data::Uint<
164                256,
165            > as alloy_sol_types::SolType>::Token<'_> {
166                alloy_sol_types::private::SolTypeValue::<
167                    alloy::sol_types::sol_data::Uint<256>,
168                >::stv_to_tokens(self)
169            }
170            #[inline]
171            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172                <alloy::sol_types::sol_data::Uint<
173                    256,
174                > as alloy_sol_types::SolType>::tokenize(self)
175                    .0
176            }
177            #[inline]
178            fn stv_abi_encode_packed_to(
179                &self,
180                out: &mut alloy_sol_types::private::Vec<u8>,
181            ) {
182                <alloy::sol_types::sol_data::Uint<
183                    256,
184                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185            }
186            #[inline]
187            fn stv_abi_packed_encoded_size(&self) -> usize {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::abi_encoded_size(self)
191            }
192        }
193        #[automatically_derived]
194        impl ScalarField {
195            /// The Solidity type name.
196            pub const NAME: &'static str = stringify!(@ name);
197            /// Convert from the underlying value type.
198            #[inline]
199            pub const fn from(
200                value: alloy::sol_types::private::primitives::aliases::U256,
201            ) -> Self {
202                Self(value)
203            }
204            /// Return the underlying value.
205            #[inline]
206            pub const fn into(
207                self,
208            ) -> alloy::sol_types::private::primitives::aliases::U256 {
209                self.0
210            }
211            /// Return the single encoding of this value, delegating to the
212            /// underlying type.
213            #[inline]
214            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216            }
217            /// Return the packed encoding of this value, delegating to the
218            /// underlying type.
219            #[inline]
220            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222            }
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::SolType for ScalarField {
226            type RustType = alloy::sol_types::private::primitives::aliases::U256;
227            type Token<'a> = <alloy::sol_types::sol_data::Uint<
228                256,
229            > as alloy_sol_types::SolType>::Token<'a>;
230            const SOL_NAME: &'static str = Self::NAME;
231            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232                256,
233            > as alloy_sol_types::SolType>::ENCODED_SIZE;
234            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235                256,
236            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237            #[inline]
238            fn valid_token(token: &Self::Token<'_>) -> bool {
239                Self::type_check(token).is_ok()
240            }
241            #[inline]
242            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243                <alloy::sol_types::sol_data::Uint<
244                    256,
245                > as alloy_sol_types::SolType>::type_check(token)
246            }
247            #[inline]
248            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249                <alloy::sol_types::sol_data::Uint<
250                    256,
251                > as alloy_sol_types::SolType>::detokenize(token)
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::EventTopic for ScalarField {
256            #[inline]
257            fn topic_preimage_length(rust: &Self::RustType) -> usize {
258                <alloy::sol_types::sol_data::Uint<
259                    256,
260                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261            }
262            #[inline]
263            fn encode_topic_preimage(
264                rust: &Self::RustType,
265                out: &mut alloy_sol_types::private::Vec<u8>,
266            ) {
267                <alloy::sol_types::sol_data::Uint<
268                    256,
269                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270            }
271            #[inline]
272            fn encode_topic(
273                rust: &Self::RustType,
274            ) -> alloy_sol_types::abi::token::WordToken {
275                <alloy::sol_types::sol_data::Uint<
276                    256,
277                > as alloy_sol_types::EventTopic>::encode_topic(rust)
278            }
279        }
280    };
281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
282    /**```solidity
283struct G1Point { BaseField x; BaseField y; }
284```*/
285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286    #[derive(Clone)]
287    pub struct G1Point {
288        #[allow(missing_docs)]
289        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290        #[allow(missing_docs)]
291        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292    }
293    #[allow(
294        non_camel_case_types,
295        non_snake_case,
296        clippy::pub_underscore_fields,
297        clippy::style
298    )]
299    const _: () = {
300        use alloy::sol_types as alloy_sol_types;
301        #[doc(hidden)]
302        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303        #[doc(hidden)]
304        type UnderlyingRustTuple<'a> = (
305            <BaseField as alloy::sol_types::SolType>::RustType,
306            <BaseField as alloy::sol_types::SolType>::RustType,
307        );
308        #[cfg(test)]
309        #[allow(dead_code, unreachable_patterns)]
310        fn _type_assertion(
311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312        ) {
313            match _t {
314                alloy_sol_types::private::AssertTypeEq::<
315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316                >(_) => {}
317            }
318        }
319        #[automatically_derived]
320        #[doc(hidden)]
321        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322            fn from(value: G1Point) -> Self {
323                (value.x, value.y)
324            }
325        }
326        #[automatically_derived]
327        #[doc(hidden)]
328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330                Self { x: tuple.0, y: tuple.1 }
331            }
332        }
333        #[automatically_derived]
334        impl alloy_sol_types::SolValue for G1Point {
335            type SolType = Self;
336        }
337        #[automatically_derived]
338        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339            #[inline]
340            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341                (
342                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344                )
345            }
346            #[inline]
347            fn stv_abi_encoded_size(&self) -> usize {
348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349                    return size;
350                }
351                let tuple = <UnderlyingRustTuple<
352                    '_,
353                > as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<
355                    '_,
356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357            }
358            #[inline]
359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361            }
362            #[inline]
363            fn stv_abi_encode_packed_to(
364                &self,
365                out: &mut alloy_sol_types::private::Vec<u8>,
366            ) {
367                let tuple = <UnderlyingRustTuple<
368                    '_,
369                > as ::core::convert::From<Self>>::from(self.clone());
370                <UnderlyingSolTuple<
371                    '_,
372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373            }
374            #[inline]
375            fn stv_abi_packed_encoded_size(&self) -> usize {
376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377                    return size;
378                }
379                let tuple = <UnderlyingRustTuple<
380                    '_,
381                > as ::core::convert::From<Self>>::from(self.clone());
382                <UnderlyingSolTuple<
383                    '_,
384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385            }
386        }
387        #[automatically_derived]
388        impl alloy_sol_types::SolType for G1Point {
389            type RustType = Self;
390            type Token<'a> = <UnderlyingSolTuple<
391                'a,
392            > as alloy_sol_types::SolType>::Token<'a>;
393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395                '_,
396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398                '_,
399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400            #[inline]
401            fn valid_token(token: &Self::Token<'_>) -> bool {
402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403            }
404            #[inline]
405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406                let tuple = <UnderlyingSolTuple<
407                    '_,
408                > as alloy_sol_types::SolType>::detokenize(token);
409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410            }
411        }
412        #[automatically_derived]
413        impl alloy_sol_types::SolStruct for G1Point {
414            const NAME: &'static str = "G1Point";
415            #[inline]
416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418            }
419            #[inline]
420            fn eip712_components() -> alloy_sol_types::private::Vec<
421                alloy_sol_types::private::Cow<'static, str>,
422            > {
423                alloy_sol_types::private::Vec::new()
424            }
425            #[inline]
426            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428            }
429            #[inline]
430            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431                [
432                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434                ]
435                    .concat()
436            }
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::EventTopic for G1Point {
440            #[inline]
441            fn topic_preimage_length(rust: &Self::RustType) -> usize {
442                0usize
443                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444                        &rust.x,
445                    )
446                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.y,
448                    )
449            }
450            #[inline]
451            fn encode_topic_preimage(
452                rust: &Self::RustType,
453                out: &mut alloy_sol_types::private::Vec<u8>,
454            ) {
455                out.reserve(
456                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457                );
458                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459                    &rust.x,
460                    out,
461                );
462                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463                    &rust.y,
464                    out,
465                );
466            }
467            #[inline]
468            fn encode_topic(
469                rust: &Self::RustType,
470            ) -> alloy_sol_types::abi::token::WordToken {
471                let mut out = alloy_sol_types::private::Vec::new();
472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    rust,
474                    &mut out,
475                );
476                alloy_sol_types::abi::token::WordToken(
477                    alloy_sol_types::private::keccak256(out),
478                )
479            }
480        }
481    };
482    use alloy::contract as alloy_contract;
483    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
484
485See the [wrapper's documentation](`BN254Instance`) for more details.*/
486    #[inline]
487    pub const fn new<
488        T: alloy_contract::private::Transport + ::core::clone::Clone,
489        P: alloy_contract::private::Provider<T, N>,
490        N: alloy_contract::private::Network,
491    >(
492        address: alloy_sol_types::private::Address,
493        provider: P,
494    ) -> BN254Instance<T, P, N> {
495        BN254Instance::<T, P, N>::new(address, provider)
496    }
497    /**A [`BN254`](self) instance.
498
499Contains type-safe methods for interacting with an on-chain instance of the
500[`BN254`](self) contract located at a given `address`, using a given
501provider `P`.
502
503If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
504documentation on how to provide it), the `deploy` and `deploy_builder` methods can
505be used to deploy a new instance of the contract.
506
507See the [module-level documentation](self) for all the available methods.*/
508    #[derive(Clone)]
509    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510        address: alloy_sol_types::private::Address,
511        provider: P,
512        _network_transport: ::core::marker::PhantomData<(N, T)>,
513    }
514    #[automatically_derived]
515    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516        #[inline]
517        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518            f.debug_tuple("BN254Instance").field(&self.address).finish()
519        }
520    }
521    /// Instantiation and getters/setters.
522    #[automatically_derived]
523    impl<
524        T: alloy_contract::private::Transport + ::core::clone::Clone,
525        P: alloy_contract::private::Provider<T, N>,
526        N: alloy_contract::private::Network,
527    > BN254Instance<T, P, N> {
528        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
529
530See the [wrapper's documentation](`BN254Instance`) for more details.*/
531        #[inline]
532        pub const fn new(
533            address: alloy_sol_types::private::Address,
534            provider: P,
535        ) -> Self {
536            Self {
537                address,
538                provider,
539                _network_transport: ::core::marker::PhantomData,
540            }
541        }
542        /// Returns a reference to the address.
543        #[inline]
544        pub const fn address(&self) -> &alloy_sol_types::private::Address {
545            &self.address
546        }
547        /// Sets the address.
548        #[inline]
549        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550            self.address = address;
551        }
552        /// Sets the address and returns `self`.
553        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554            self.set_address(address);
555            self
556        }
557        /// Returns a reference to the provider.
558        #[inline]
559        pub const fn provider(&self) -> &P {
560            &self.provider
561        }
562    }
563    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564        /// Clones the provider and returns a new instance with the cloned provider.
565        #[inline]
566        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567            BN254Instance {
568                address: self.address,
569                provider: ::core::clone::Clone::clone(&self.provider),
570                _network_transport: ::core::marker::PhantomData,
571            }
572        }
573    }
574    /// Function calls.
575    #[automatically_derived]
576    impl<
577        T: alloy_contract::private::Transport + ::core::clone::Clone,
578        P: alloy_contract::private::Provider<T, N>,
579        N: alloy_contract::private::Network,
580    > BN254Instance<T, P, N> {
581        /// Creates a new call builder using this contract instance's provider and address.
582        ///
583        /// Note that the call can be any function call, not just those defined in this
584        /// contract. Prefer using the other methods for building type-safe contract calls.
585        pub fn call_builder<C: alloy_sol_types::SolCall>(
586            &self,
587            call: &C,
588        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590        }
591    }
592    /// Event filters.
593    #[automatically_derived]
594    impl<
595        T: alloy_contract::private::Transport + ::core::clone::Clone,
596        P: alloy_contract::private::Provider<T, N>,
597        N: alloy_contract::private::Network,
598    > BN254Instance<T, P, N> {
599        /// Creates a new event filter using this contract instance's provider and address.
600        ///
601        /// Note that the type can be any event, not just those defined in this contract.
602        /// Prefer using the other methods for building type-safe event filters.
603        pub fn event_filter<E: alloy_sol_types::SolEvent>(
604            &self,
605        ) -> alloy_contract::Event<T, &P, E, N> {
606            alloy_contract::Event::new_sol(&self.provider, &self.address)
607        }
608    }
609}
610///Module containing a contract's types and functions.
611/**
612
613```solidity
614library IPlonkVerifier {
615    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; }
616    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; }
617}
618```*/
619#[allow(
620    non_camel_case_types,
621    non_snake_case,
622    clippy::pub_underscore_fields,
623    clippy::style,
624    clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627    use super::*;
628    use alloy::sol_types as alloy_sol_types;
629    #[derive()]
630    /**```solidity
631struct 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; }
632```*/
633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634    #[derive(Clone)]
635    pub struct PlonkProof {
636        #[allow(missing_docs)]
637        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638        #[allow(missing_docs)]
639        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640        #[allow(missing_docs)]
641        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642        #[allow(missing_docs)]
643        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644        #[allow(missing_docs)]
645        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646        #[allow(missing_docs)]
647        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648        #[allow(missing_docs)]
649        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650        #[allow(missing_docs)]
651        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652        #[allow(missing_docs)]
653        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654        #[allow(missing_docs)]
655        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656        #[allow(missing_docs)]
657        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658        #[allow(missing_docs)]
659        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660        #[allow(missing_docs)]
661        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662        #[allow(missing_docs)]
663        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682    }
683    #[allow(
684        non_camel_case_types,
685        non_snake_case,
686        clippy::pub_underscore_fields,
687        clippy::style
688    )]
689    const _: () = {
690        use alloy::sol_types as alloy_sol_types;
691        #[doc(hidden)]
692        type UnderlyingSolTuple<'a> = (
693            BN254::G1Point,
694            BN254::G1Point,
695            BN254::G1Point,
696            BN254::G1Point,
697            BN254::G1Point,
698            BN254::G1Point,
699            BN254::G1Point,
700            BN254::G1Point,
701            BN254::G1Point,
702            BN254::G1Point,
703            BN254::G1Point,
704            BN254::G1Point,
705            BN254::G1Point,
706            BN254::ScalarField,
707            BN254::ScalarField,
708            BN254::ScalarField,
709            BN254::ScalarField,
710            BN254::ScalarField,
711            BN254::ScalarField,
712            BN254::ScalarField,
713            BN254::ScalarField,
714            BN254::ScalarField,
715            BN254::ScalarField,
716        );
717        #[doc(hidden)]
718        type UnderlyingRustTuple<'a> = (
719            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742        );
743        #[cfg(test)]
744        #[allow(dead_code, unreachable_patterns)]
745        fn _type_assertion(
746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747        ) {
748            match _t {
749                alloy_sol_types::private::AssertTypeEq::<
750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751                >(_) => {}
752            }
753        }
754        #[automatically_derived]
755        #[doc(hidden)]
756        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757            fn from(value: PlonkProof) -> Self {
758                (
759                    value.wire0,
760                    value.wire1,
761                    value.wire2,
762                    value.wire3,
763                    value.wire4,
764                    value.prodPerm,
765                    value.split0,
766                    value.split1,
767                    value.split2,
768                    value.split3,
769                    value.split4,
770                    value.zeta,
771                    value.zetaOmega,
772                    value.wireEval0,
773                    value.wireEval1,
774                    value.wireEval2,
775                    value.wireEval3,
776                    value.wireEval4,
777                    value.sigmaEval0,
778                    value.sigmaEval1,
779                    value.sigmaEval2,
780                    value.sigmaEval3,
781                    value.prodPermZetaOmegaEval,
782                )
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                Self {
790                    wire0: tuple.0,
791                    wire1: tuple.1,
792                    wire2: tuple.2,
793                    wire3: tuple.3,
794                    wire4: tuple.4,
795                    prodPerm: tuple.5,
796                    split0: tuple.6,
797                    split1: tuple.7,
798                    split2: tuple.8,
799                    split3: tuple.9,
800                    split4: tuple.10,
801                    zeta: tuple.11,
802                    zetaOmega: tuple.12,
803                    wireEval0: tuple.13,
804                    wireEval1: tuple.14,
805                    wireEval2: tuple.15,
806                    wireEval3: tuple.16,
807                    wireEval4: tuple.17,
808                    sigmaEval0: tuple.18,
809                    sigmaEval1: tuple.19,
810                    sigmaEval2: tuple.20,
811                    sigmaEval3: tuple.21,
812                    prodPermZetaOmegaEval: tuple.22,
813                }
814            }
815        }
816        #[automatically_derived]
817        impl alloy_sol_types::SolValue for PlonkProof {
818            type SolType = Self;
819        }
820        #[automatically_derived]
821        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822            #[inline]
823            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824                (
825                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831                        &self.prodPerm,
832                    ),
833                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840                        &self.zetaOmega,
841                    ),
842                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843                        &self.wireEval0,
844                    ),
845                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846                        &self.wireEval1,
847                    ),
848                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849                        &self.wireEval2,
850                    ),
851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852                        &self.wireEval3,
853                    ),
854                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855                        &self.wireEval4,
856                    ),
857                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858                        &self.sigmaEval0,
859                    ),
860                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861                        &self.sigmaEval1,
862                    ),
863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864                        &self.sigmaEval2,
865                    ),
866                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867                        &self.sigmaEval3,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.prodPermZetaOmegaEval,
871                    ),
872                )
873            }
874            #[inline]
875            fn stv_abi_encoded_size(&self) -> usize {
876                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877                    return size;
878                }
879                let tuple = <UnderlyingRustTuple<
880                    '_,
881                > as ::core::convert::From<Self>>::from(self.clone());
882                <UnderlyingSolTuple<
883                    '_,
884                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885            }
886            #[inline]
887            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889            }
890            #[inline]
891            fn stv_abi_encode_packed_to(
892                &self,
893                out: &mut alloy_sol_types::private::Vec<u8>,
894            ) {
895                let tuple = <UnderlyingRustTuple<
896                    '_,
897                > as ::core::convert::From<Self>>::from(self.clone());
898                <UnderlyingSolTuple<
899                    '_,
900                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901            }
902            #[inline]
903            fn stv_abi_packed_encoded_size(&self) -> usize {
904                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905                    return size;
906                }
907                let tuple = <UnderlyingRustTuple<
908                    '_,
909                > as ::core::convert::From<Self>>::from(self.clone());
910                <UnderlyingSolTuple<
911                    '_,
912                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::SolType for PlonkProof {
917            type RustType = Self;
918            type Token<'a> = <UnderlyingSolTuple<
919                'a,
920            > as alloy_sol_types::SolType>::Token<'a>;
921            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923                '_,
924            > as alloy_sol_types::SolType>::ENCODED_SIZE;
925            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926                '_,
927            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928            #[inline]
929            fn valid_token(token: &Self::Token<'_>) -> bool {
930                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931            }
932            #[inline]
933            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934                let tuple = <UnderlyingSolTuple<
935                    '_,
936                > as alloy_sol_types::SolType>::detokenize(token);
937                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolStruct for PlonkProof {
942            const NAME: &'static str = "PlonkProof";
943            #[inline]
944            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945                alloy_sol_types::private::Cow::Borrowed(
946                    "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,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947                )
948            }
949            #[inline]
950            fn eip712_components() -> alloy_sol_types::private::Vec<
951                alloy_sol_types::private::Cow<'static, str>,
952            > {
953                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954                components
955                    .push(
956                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957                    );
958                components
959                    .extend(
960                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961                    );
962                components
963                    .push(
964                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965                    );
966                components
967                    .extend(
968                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969                    );
970                components
971                    .push(
972                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973                    );
974                components
975                    .extend(
976                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977                    );
978                components
979                    .push(
980                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981                    );
982                components
983                    .extend(
984                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985                    );
986                components
987                    .push(
988                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989                    );
990                components
991                    .extend(
992                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993                    );
994                components
995                    .push(
996                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997                    );
998                components
999                    .extend(
1000                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001                    );
1002                components
1003                    .push(
1004                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005                    );
1006                components
1007                    .extend(
1008                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009                    );
1010                components
1011                    .push(
1012                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013                    );
1014                components
1015                    .extend(
1016                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017                    );
1018                components
1019                    .push(
1020                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021                    );
1022                components
1023                    .extend(
1024                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025                    );
1026                components
1027                    .push(
1028                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029                    );
1030                components
1031                    .extend(
1032                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033                    );
1034                components
1035                    .push(
1036                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037                    );
1038                components
1039                    .extend(
1040                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041                    );
1042                components
1043                    .push(
1044                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045                    );
1046                components
1047                    .extend(
1048                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049                    );
1050                components
1051                    .push(
1052                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053                    );
1054                components
1055                    .extend(
1056                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057                    );
1058                components
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.wire0,
1065                        )
1066                        .0,
1067                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068                            &self.wire1,
1069                        )
1070                        .0,
1071                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072                            &self.wire2,
1073                        )
1074                        .0,
1075                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076                            &self.wire3,
1077                        )
1078                        .0,
1079                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080                            &self.wire4,
1081                        )
1082                        .0,
1083                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084                            &self.prodPerm,
1085                        )
1086                        .0,
1087                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088                            &self.split0,
1089                        )
1090                        .0,
1091                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092                            &self.split1,
1093                        )
1094                        .0,
1095                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096                            &self.split2,
1097                        )
1098                        .0,
1099                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100                            &self.split3,
1101                        )
1102                        .0,
1103                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104                            &self.split4,
1105                        )
1106                        .0,
1107                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108                            &self.zeta,
1109                        )
1110                        .0,
1111                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112                            &self.zetaOmega,
1113                        )
1114                        .0,
1115                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116                            &self.wireEval0,
1117                        )
1118                        .0,
1119                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120                            &self.wireEval1,
1121                        )
1122                        .0,
1123                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124                            &self.wireEval2,
1125                        )
1126                        .0,
1127                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128                            &self.wireEval3,
1129                        )
1130                        .0,
1131                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132                            &self.wireEval4,
1133                        )
1134                        .0,
1135                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136                            &self.sigmaEval0,
1137                        )
1138                        .0,
1139                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140                            &self.sigmaEval1,
1141                        )
1142                        .0,
1143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144                            &self.sigmaEval2,
1145                        )
1146                        .0,
1147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148                            &self.sigmaEval3,
1149                        )
1150                        .0,
1151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152                            &self.prodPermZetaOmegaEval,
1153                        )
1154                        .0,
1155                ]
1156                    .concat()
1157            }
1158        }
1159        #[automatically_derived]
1160        impl alloy_sol_types::EventTopic for PlonkProof {
1161            #[inline]
1162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163                0usize
1164                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165                        &rust.wire0,
1166                    )
1167                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168                        &rust.wire1,
1169                    )
1170                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171                        &rust.wire2,
1172                    )
1173                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174                        &rust.wire3,
1175                    )
1176                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177                        &rust.wire4,
1178                    )
1179                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180                        &rust.prodPerm,
1181                    )
1182                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183                        &rust.split0,
1184                    )
1185                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186                        &rust.split1,
1187                    )
1188                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189                        &rust.split2,
1190                    )
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.split3,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.split4,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.zeta,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.zetaOmega,
1202                    )
1203                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wireEval0,
1205                    )
1206                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.wireEval1,
1208                    )
1209                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.wireEval2,
1211                    )
1212                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.wireEval3,
1214                    )
1215                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.wireEval4,
1217                    )
1218                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.sigmaEval0,
1220                    )
1221                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.sigmaEval1,
1223                    )
1224                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.sigmaEval2,
1226                    )
1227                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.sigmaEval3,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.prodPermZetaOmegaEval,
1232                    )
1233            }
1234            #[inline]
1235            fn encode_topic_preimage(
1236                rust: &Self::RustType,
1237                out: &mut alloy_sol_types::private::Vec<u8>,
1238            ) {
1239                out.reserve(
1240                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241                );
1242                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243                    &rust.wire0,
1244                    out,
1245                );
1246                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.wire1,
1248                    out,
1249                );
1250                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251                    &rust.wire2,
1252                    out,
1253                );
1254                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255                    &rust.wire3,
1256                    out,
1257                );
1258                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259                    &rust.wire4,
1260                    out,
1261                );
1262                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    &rust.prodPerm,
1264                    out,
1265                );
1266                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267                    &rust.split0,
1268                    out,
1269                );
1270                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271                    &rust.split1,
1272                    out,
1273                );
1274                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275                    &rust.split2,
1276                    out,
1277                );
1278                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279                    &rust.split3,
1280                    out,
1281                );
1282                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283                    &rust.split4,
1284                    out,
1285                );
1286                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287                    &rust.zeta,
1288                    out,
1289                );
1290                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291                    &rust.zetaOmega,
1292                    out,
1293                );
1294                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295                    &rust.wireEval0,
1296                    out,
1297                );
1298                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299                    &rust.wireEval1,
1300                    out,
1301                );
1302                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303                    &rust.wireEval2,
1304                    out,
1305                );
1306                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307                    &rust.wireEval3,
1308                    out,
1309                );
1310                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311                    &rust.wireEval4,
1312                    out,
1313                );
1314                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315                    &rust.sigmaEval0,
1316                    out,
1317                );
1318                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319                    &rust.sigmaEval1,
1320                    out,
1321                );
1322                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323                    &rust.sigmaEval2,
1324                    out,
1325                );
1326                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327                    &rust.sigmaEval3,
1328                    out,
1329                );
1330                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331                    &rust.prodPermZetaOmegaEval,
1332                    out,
1333                );
1334            }
1335            #[inline]
1336            fn encode_topic(
1337                rust: &Self::RustType,
1338            ) -> alloy_sol_types::abi::token::WordToken {
1339                let mut out = alloy_sol_types::private::Vec::new();
1340                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    rust,
1342                    &mut out,
1343                );
1344                alloy_sol_types::abi::token::WordToken(
1345                    alloy_sol_types::private::keccak256(out),
1346                )
1347            }
1348        }
1349    };
1350    #[derive()]
1351    /**```solidity
1352struct 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; }
1353```*/
1354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355    #[derive(Clone)]
1356    pub struct VerifyingKey {
1357        #[allow(missing_docs)]
1358        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359        #[allow(missing_docs)]
1360        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361        #[allow(missing_docs)]
1362        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363        #[allow(missing_docs)]
1364        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365        #[allow(missing_docs)]
1366        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367        #[allow(missing_docs)]
1368        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369        #[allow(missing_docs)]
1370        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371        #[allow(missing_docs)]
1372        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399        #[allow(missing_docs)]
1400        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401    }
1402    #[allow(
1403        non_camel_case_types,
1404        non_snake_case,
1405        clippy::pub_underscore_fields,
1406        clippy::style
1407    )]
1408    const _: () = {
1409        use alloy::sol_types as alloy_sol_types;
1410        #[doc(hidden)]
1411        type UnderlyingSolTuple<'a> = (
1412            alloy::sol_types::sol_data::Uint<256>,
1413            alloy::sol_types::sol_data::Uint<256>,
1414            BN254::G1Point,
1415            BN254::G1Point,
1416            BN254::G1Point,
1417            BN254::G1Point,
1418            BN254::G1Point,
1419            BN254::G1Point,
1420            BN254::G1Point,
1421            BN254::G1Point,
1422            BN254::G1Point,
1423            BN254::G1Point,
1424            BN254::G1Point,
1425            BN254::G1Point,
1426            BN254::G1Point,
1427            BN254::G1Point,
1428            BN254::G1Point,
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            alloy::sol_types::sol_data::FixedBytes<32>,
1433            alloy::sol_types::sol_data::FixedBytes<32>,
1434        );
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = (
1437            alloy::sol_types::private::primitives::aliases::U256,
1438            alloy::sol_types::private::primitives::aliases::U256,
1439            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            alloy::sol_types::private::FixedBytes<32>,
1458            alloy::sol_types::private::FixedBytes<32>,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474            fn from(value: VerifyingKey) -> Self {
1475                (
1476                    value.domainSize,
1477                    value.numInputs,
1478                    value.sigma0,
1479                    value.sigma1,
1480                    value.sigma2,
1481                    value.sigma3,
1482                    value.sigma4,
1483                    value.q1,
1484                    value.q2,
1485                    value.q3,
1486                    value.q4,
1487                    value.qM12,
1488                    value.qM34,
1489                    value.qO,
1490                    value.qC,
1491                    value.qH1,
1492                    value.qH2,
1493                    value.qH3,
1494                    value.qH4,
1495                    value.qEcc,
1496                    value.g2LSB,
1497                    value.g2MSB,
1498                )
1499            }
1500        }
1501        #[automatically_derived]
1502        #[doc(hidden)]
1503        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    domainSize: tuple.0,
1507                    numInputs: tuple.1,
1508                    sigma0: tuple.2,
1509                    sigma1: tuple.3,
1510                    sigma2: tuple.4,
1511                    sigma3: tuple.5,
1512                    sigma4: tuple.6,
1513                    q1: tuple.7,
1514                    q2: tuple.8,
1515                    q3: tuple.9,
1516                    q4: tuple.10,
1517                    qM12: tuple.11,
1518                    qM34: tuple.12,
1519                    qO: tuple.13,
1520                    qC: tuple.14,
1521                    qH1: tuple.15,
1522                    qH2: tuple.16,
1523                    qH3: tuple.17,
1524                    qH4: tuple.18,
1525                    qEcc: tuple.19,
1526                    g2LSB: tuple.20,
1527                    g2MSB: tuple.21,
1528                }
1529            }
1530        }
1531        #[automatically_derived]
1532        impl alloy_sol_types::SolValue for VerifyingKey {
1533            type SolType = Self;
1534        }
1535        #[automatically_derived]
1536        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537            #[inline]
1538            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539                (
1540                    <alloy::sol_types::sol_data::Uint<
1541                        256,
1542                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543                    <alloy::sol_types::sol_data::Uint<
1544                        256,
1545                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564                    <alloy::sol_types::sol_data::FixedBytes<
1565                        32,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567                    <alloy::sol_types::sol_data::FixedBytes<
1568                        32,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570                )
1571            }
1572            #[inline]
1573            fn stv_abi_encoded_size(&self) -> usize {
1574                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575                    return size;
1576                }
1577                let tuple = <UnderlyingRustTuple<
1578                    '_,
1579                > as ::core::convert::From<Self>>::from(self.clone());
1580                <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583            }
1584            #[inline]
1585            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587            }
1588            #[inline]
1589            fn stv_abi_encode_packed_to(
1590                &self,
1591                out: &mut alloy_sol_types::private::Vec<u8>,
1592            ) {
1593                let tuple = <UnderlyingRustTuple<
1594                    '_,
1595                > as ::core::convert::From<Self>>::from(self.clone());
1596                <UnderlyingSolTuple<
1597                    '_,
1598                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599            }
1600            #[inline]
1601            fn stv_abi_packed_encoded_size(&self) -> usize {
1602                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603                    return size;
1604                }
1605                let tuple = <UnderlyingRustTuple<
1606                    '_,
1607                > as ::core::convert::From<Self>>::from(self.clone());
1608                <UnderlyingSolTuple<
1609                    '_,
1610                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611            }
1612        }
1613        #[automatically_derived]
1614        impl alloy_sol_types::SolType for VerifyingKey {
1615            type RustType = Self;
1616            type Token<'a> = <UnderlyingSolTuple<
1617                'a,
1618            > as alloy_sol_types::SolType>::Token<'a>;
1619            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621                '_,
1622            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624                '_,
1625            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626            #[inline]
1627            fn valid_token(token: &Self::Token<'_>) -> bool {
1628                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629            }
1630            #[inline]
1631            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632                let tuple = <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::detokenize(token);
1635                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636            }
1637        }
1638        #[automatically_derived]
1639        impl alloy_sol_types::SolStruct for VerifyingKey {
1640            const NAME: &'static str = "VerifyingKey";
1641            #[inline]
1642            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643                alloy_sol_types::private::Cow::Borrowed(
1644                    "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)",
1645                )
1646            }
1647            #[inline]
1648            fn eip712_components() -> alloy_sol_types::private::Vec<
1649                alloy_sol_types::private::Cow<'static, str>,
1650            > {
1651                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652                components
1653                    .push(
1654                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655                    );
1656                components
1657                    .extend(
1658                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659                    );
1660                components
1661                    .push(
1662                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663                    );
1664                components
1665                    .extend(
1666                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667                    );
1668                components
1669                    .push(
1670                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671                    );
1672                components
1673                    .extend(
1674                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675                    );
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            }
1798            #[inline]
1799            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800                [
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804                        .0,
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808                        .0,
1809                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810                            &self.sigma0,
1811                        )
1812                        .0,
1813                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814                            &self.sigma1,
1815                        )
1816                        .0,
1817                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818                            &self.sigma2,
1819                        )
1820                        .0,
1821                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822                            &self.sigma3,
1823                        )
1824                        .0,
1825                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826                            &self.sigma4,
1827                        )
1828                        .0,
1829                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830                            &self.q1,
1831                        )
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.q2,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.q3,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.q4,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.qM12,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.qM34,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.qO,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.qC,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.qH1,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.qH2,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qH3,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qH4,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qEcc,
1879                        )
1880                        .0,
1881                    <alloy::sol_types::sol_data::FixedBytes<
1882                        32,
1883                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884                        .0,
1885                    <alloy::sol_types::sol_data::FixedBytes<
1886                        32,
1887                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888                        .0,
1889                ]
1890                    .concat()
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::EventTopic for VerifyingKey {
1895            #[inline]
1896            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897                0usize
1898                    + <alloy::sol_types::sol_data::Uint<
1899                        256,
1900                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.domainSize,
1902                    )
1903                    + <alloy::sol_types::sol_data::Uint<
1904                        256,
1905                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906                        &rust.numInputs,
1907                    )
1908                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909                        &rust.sigma0,
1910                    )
1911                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912                        &rust.sigma1,
1913                    )
1914                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915                        &rust.sigma2,
1916                    )
1917                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918                        &rust.sigma3,
1919                    )
1920                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921                        &rust.sigma4,
1922                    )
1923                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924                        &rust.q1,
1925                    )
1926                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.q2,
1928                    )
1929                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.q3,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.q4,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.qM12,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.qM34,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.qO,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.qC,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.qH1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.qH2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.qH3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.qH4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qEcc,
1961                    )
1962                    + <alloy::sol_types::sol_data::FixedBytes<
1963                        32,
1964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965                    + <alloy::sol_types::sol_data::FixedBytes<
1966                        32,
1967                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968            }
1969            #[inline]
1970            fn encode_topic_preimage(
1971                rust: &Self::RustType,
1972                out: &mut alloy_sol_types::private::Vec<u8>,
1973            ) {
1974                out.reserve(
1975                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976                );
1977                <alloy::sol_types::sol_data::Uint<
1978                    256,
1979                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980                    &rust.domainSize,
1981                    out,
1982                );
1983                <alloy::sol_types::sol_data::Uint<
1984                    256,
1985                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986                    &rust.numInputs,
1987                    out,
1988                );
1989                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990                    &rust.sigma0,
1991                    out,
1992                );
1993                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994                    &rust.sigma1,
1995                    out,
1996                );
1997                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998                    &rust.sigma2,
1999                    out,
2000                );
2001                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002                    &rust.sigma3,
2003                    out,
2004                );
2005                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.sigma4,
2007                    out,
2008                );
2009                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.q1,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.q2,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.q3,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.q4,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.qM12,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.qM34,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.qO,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.qC,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.qH1,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.qH2,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qH3,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qH4,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qEcc,
2059                    out,
2060                );
2061                <alloy::sol_types::sol_data::FixedBytes<
2062                    32,
2063                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.g2LSB,
2065                    out,
2066                );
2067                <alloy::sol_types::sol_data::FixedBytes<
2068                    32,
2069                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.g2MSB,
2071                    out,
2072                );
2073            }
2074            #[inline]
2075            fn encode_topic(
2076                rust: &Self::RustType,
2077            ) -> alloy_sol_types::abi::token::WordToken {
2078                let mut out = alloy_sol_types::private::Vec::new();
2079                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    rust,
2081                    &mut out,
2082                );
2083                alloy_sol_types::abi::token::WordToken(
2084                    alloy_sol_types::private::keccak256(out),
2085                )
2086            }
2087        }
2088    };
2089    use alloy::contract as alloy_contract;
2090    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2091
2092See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2093    #[inline]
2094    pub const fn new<
2095        T: alloy_contract::private::Transport + ::core::clone::Clone,
2096        P: alloy_contract::private::Provider<T, N>,
2097        N: alloy_contract::private::Network,
2098    >(
2099        address: alloy_sol_types::private::Address,
2100        provider: P,
2101    ) -> IPlonkVerifierInstance<T, P, N> {
2102        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103    }
2104    /**A [`IPlonkVerifier`](self) instance.
2105
2106Contains type-safe methods for interacting with an on-chain instance of the
2107[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2108provider `P`.
2109
2110If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2111documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2112be used to deploy a new instance of the contract.
2113
2114See the [module-level documentation](self) for all the available methods.*/
2115    #[derive(Clone)]
2116    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117        address: alloy_sol_types::private::Address,
2118        provider: P,
2119        _network_transport: ::core::marker::PhantomData<(N, T)>,
2120    }
2121    #[automatically_derived]
2122    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123        #[inline]
2124        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126        }
2127    }
2128    /// Instantiation and getters/setters.
2129    #[automatically_derived]
2130    impl<
2131        T: alloy_contract::private::Transport + ::core::clone::Clone,
2132        P: alloy_contract::private::Provider<T, N>,
2133        N: alloy_contract::private::Network,
2134    > IPlonkVerifierInstance<T, P, N> {
2135        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2136
2137See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2138        #[inline]
2139        pub const fn new(
2140            address: alloy_sol_types::private::Address,
2141            provider: P,
2142        ) -> Self {
2143            Self {
2144                address,
2145                provider,
2146                _network_transport: ::core::marker::PhantomData,
2147            }
2148        }
2149        /// Returns a reference to the address.
2150        #[inline]
2151        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152            &self.address
2153        }
2154        /// Sets the address.
2155        #[inline]
2156        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157            self.address = address;
2158        }
2159        /// Sets the address and returns `self`.
2160        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161            self.set_address(address);
2162            self
2163        }
2164        /// Returns a reference to the provider.
2165        #[inline]
2166        pub const fn provider(&self) -> &P {
2167            &self.provider
2168        }
2169    }
2170    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171        /// Clones the provider and returns a new instance with the cloned provider.
2172        #[inline]
2173        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174            IPlonkVerifierInstance {
2175                address: self.address,
2176                provider: ::core::clone::Clone::clone(&self.provider),
2177                _network_transport: ::core::marker::PhantomData,
2178            }
2179        }
2180    }
2181    /// Function calls.
2182    #[automatically_derived]
2183    impl<
2184        T: alloy_contract::private::Transport + ::core::clone::Clone,
2185        P: alloy_contract::private::Provider<T, N>,
2186        N: alloy_contract::private::Network,
2187    > IPlonkVerifierInstance<T, P, N> {
2188        /// Creates a new call builder using this contract instance's provider and address.
2189        ///
2190        /// Note that the call can be any function call, not just those defined in this
2191        /// contract. Prefer using the other methods for building type-safe contract calls.
2192        pub fn call_builder<C: alloy_sol_types::SolCall>(
2193            &self,
2194            call: &C,
2195        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197        }
2198    }
2199    /// Event filters.
2200    #[automatically_derived]
2201    impl<
2202        T: alloy_contract::private::Transport + ::core::clone::Clone,
2203        P: alloy_contract::private::Provider<T, N>,
2204        N: alloy_contract::private::Network,
2205    > IPlonkVerifierInstance<T, P, N> {
2206        /// Creates a new event filter using this contract instance's provider and address.
2207        ///
2208        /// Note that the type can be any event, not just those defined in this contract.
2209        /// Prefer using the other methods for building type-safe event filters.
2210        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211            &self,
2212        ) -> alloy_contract::Event<T, &P, E, N> {
2213            alloy_contract::Event::new_sol(&self.provider, &self.address)
2214        }
2215    }
2216}
2217///Module containing a contract's types and functions.
2218/**
2219
2220```solidity
2221library LightClient {
2222    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2223    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2224    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2225}
2226```*/
2227#[allow(
2228    non_camel_case_types,
2229    non_snake_case,
2230    clippy::pub_underscore_fields,
2231    clippy::style,
2232    clippy::empty_structs_with_brackets
2233)]
2234pub mod LightClient {
2235    use super::*;
2236    use alloy::sol_types as alloy_sol_types;
2237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2238    /**```solidity
2239struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240```*/
2241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2242    #[derive(Clone)]
2243    pub struct LightClientState {
2244        #[allow(missing_docs)]
2245        pub viewNum: u64,
2246        #[allow(missing_docs)]
2247        pub blockHeight: u64,
2248        #[allow(missing_docs)]
2249        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2250    }
2251    #[allow(
2252        non_camel_case_types,
2253        non_snake_case,
2254        clippy::pub_underscore_fields,
2255        clippy::style
2256    )]
2257    const _: () = {
2258        use alloy::sol_types as alloy_sol_types;
2259        #[doc(hidden)]
2260        type UnderlyingSolTuple<'a> = (
2261            alloy::sol_types::sol_data::Uint<64>,
2262            alloy::sol_types::sol_data::Uint<64>,
2263            BN254::ScalarField,
2264        );
2265        #[doc(hidden)]
2266        type UnderlyingRustTuple<'a> = (
2267            u64,
2268            u64,
2269            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2270        );
2271        #[cfg(test)]
2272        #[allow(dead_code, unreachable_patterns)]
2273        fn _type_assertion(
2274            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2275        ) {
2276            match _t {
2277                alloy_sol_types::private::AssertTypeEq::<
2278                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2279                >(_) => {}
2280            }
2281        }
2282        #[automatically_derived]
2283        #[doc(hidden)]
2284        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2285            fn from(value: LightClientState) -> Self {
2286                (value.viewNum, value.blockHeight, value.blockCommRoot)
2287            }
2288        }
2289        #[automatically_derived]
2290        #[doc(hidden)]
2291        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2293                Self {
2294                    viewNum: tuple.0,
2295                    blockHeight: tuple.1,
2296                    blockCommRoot: tuple.2,
2297                }
2298            }
2299        }
2300        #[automatically_derived]
2301        impl alloy_sol_types::SolValue for LightClientState {
2302            type SolType = Self;
2303        }
2304        #[automatically_derived]
2305        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2306            #[inline]
2307            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2308                (
2309                    <alloy::sol_types::sol_data::Uint<
2310                        64,
2311                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2312                    <alloy::sol_types::sol_data::Uint<
2313                        64,
2314                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2315                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2316                        &self.blockCommRoot,
2317                    ),
2318                )
2319            }
2320            #[inline]
2321            fn stv_abi_encoded_size(&self) -> usize {
2322                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2323                    return size;
2324                }
2325                let tuple = <UnderlyingRustTuple<
2326                    '_,
2327                > as ::core::convert::From<Self>>::from(self.clone());
2328                <UnderlyingSolTuple<
2329                    '_,
2330                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2331            }
2332            #[inline]
2333            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2334                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2335            }
2336            #[inline]
2337            fn stv_abi_encode_packed_to(
2338                &self,
2339                out: &mut alloy_sol_types::private::Vec<u8>,
2340            ) {
2341                let tuple = <UnderlyingRustTuple<
2342                    '_,
2343                > as ::core::convert::From<Self>>::from(self.clone());
2344                <UnderlyingSolTuple<
2345                    '_,
2346                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2347            }
2348            #[inline]
2349            fn stv_abi_packed_encoded_size(&self) -> usize {
2350                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2351                    return size;
2352                }
2353                let tuple = <UnderlyingRustTuple<
2354                    '_,
2355                > as ::core::convert::From<Self>>::from(self.clone());
2356                <UnderlyingSolTuple<
2357                    '_,
2358                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2359            }
2360        }
2361        #[automatically_derived]
2362        impl alloy_sol_types::SolType for LightClientState {
2363            type RustType = Self;
2364            type Token<'a> = <UnderlyingSolTuple<
2365                'a,
2366            > as alloy_sol_types::SolType>::Token<'a>;
2367            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2368            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2369                '_,
2370            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2371            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2372                '_,
2373            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2374            #[inline]
2375            fn valid_token(token: &Self::Token<'_>) -> bool {
2376                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2377            }
2378            #[inline]
2379            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2380                let tuple = <UnderlyingSolTuple<
2381                    '_,
2382                > as alloy_sol_types::SolType>::detokenize(token);
2383                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2384            }
2385        }
2386        #[automatically_derived]
2387        impl alloy_sol_types::SolStruct for LightClientState {
2388            const NAME: &'static str = "LightClientState";
2389            #[inline]
2390            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2391                alloy_sol_types::private::Cow::Borrowed(
2392                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2393                )
2394            }
2395            #[inline]
2396            fn eip712_components() -> alloy_sol_types::private::Vec<
2397                alloy_sol_types::private::Cow<'static, str>,
2398            > {
2399                alloy_sol_types::private::Vec::new()
2400            }
2401            #[inline]
2402            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2403                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2404            }
2405            #[inline]
2406            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2407                [
2408                    <alloy::sol_types::sol_data::Uint<
2409                        64,
2410                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2411                        .0,
2412                    <alloy::sol_types::sol_data::Uint<
2413                        64,
2414                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2415                        .0,
2416                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2417                            &self.blockCommRoot,
2418                        )
2419                        .0,
2420                ]
2421                    .concat()
2422            }
2423        }
2424        #[automatically_derived]
2425        impl alloy_sol_types::EventTopic for LightClientState {
2426            #[inline]
2427            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2428                0usize
2429                    + <alloy::sol_types::sol_data::Uint<
2430                        64,
2431                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2432                        &rust.viewNum,
2433                    )
2434                    + <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2437                        &rust.blockHeight,
2438                    )
2439                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2440                        &rust.blockCommRoot,
2441                    )
2442            }
2443            #[inline]
2444            fn encode_topic_preimage(
2445                rust: &Self::RustType,
2446                out: &mut alloy_sol_types::private::Vec<u8>,
2447            ) {
2448                out.reserve(
2449                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2450                );
2451                <alloy::sol_types::sol_data::Uint<
2452                    64,
2453                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2454                    &rust.viewNum,
2455                    out,
2456                );
2457                <alloy::sol_types::sol_data::Uint<
2458                    64,
2459                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2460                    &rust.blockHeight,
2461                    out,
2462                );
2463                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2464                    &rust.blockCommRoot,
2465                    out,
2466                );
2467            }
2468            #[inline]
2469            fn encode_topic(
2470                rust: &Self::RustType,
2471            ) -> alloy_sol_types::abi::token::WordToken {
2472                let mut out = alloy_sol_types::private::Vec::new();
2473                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2474                    rust,
2475                    &mut out,
2476                );
2477                alloy_sol_types::abi::token::WordToken(
2478                    alloy_sol_types::private::keccak256(out),
2479                )
2480            }
2481        }
2482    };
2483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2484    /**```solidity
2485struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2486```*/
2487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2488    #[derive(Clone)]
2489    pub struct StakeTableState {
2490        #[allow(missing_docs)]
2491        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2492        #[allow(missing_docs)]
2493        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2494        #[allow(missing_docs)]
2495        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2496        #[allow(missing_docs)]
2497        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2498    }
2499    #[allow(
2500        non_camel_case_types,
2501        non_snake_case,
2502        clippy::pub_underscore_fields,
2503        clippy::style
2504    )]
2505    const _: () = {
2506        use alloy::sol_types as alloy_sol_types;
2507        #[doc(hidden)]
2508        type UnderlyingSolTuple<'a> = (
2509            alloy::sol_types::sol_data::Uint<256>,
2510            BN254::ScalarField,
2511            BN254::ScalarField,
2512            BN254::ScalarField,
2513        );
2514        #[doc(hidden)]
2515        type UnderlyingRustTuple<'a> = (
2516            alloy::sol_types::private::primitives::aliases::U256,
2517            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2520        );
2521        #[cfg(test)]
2522        #[allow(dead_code, unreachable_patterns)]
2523        fn _type_assertion(
2524            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2525        ) {
2526            match _t {
2527                alloy_sol_types::private::AssertTypeEq::<
2528                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2529                >(_) => {}
2530            }
2531        }
2532        #[automatically_derived]
2533        #[doc(hidden)]
2534        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2535            fn from(value: StakeTableState) -> Self {
2536                (
2537                    value.threshold,
2538                    value.blsKeyComm,
2539                    value.schnorrKeyComm,
2540                    value.amountComm,
2541                )
2542            }
2543        }
2544        #[automatically_derived]
2545        #[doc(hidden)]
2546        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2547            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2548                Self {
2549                    threshold: tuple.0,
2550                    blsKeyComm: tuple.1,
2551                    schnorrKeyComm: tuple.2,
2552                    amountComm: tuple.3,
2553                }
2554            }
2555        }
2556        #[automatically_derived]
2557        impl alloy_sol_types::SolValue for StakeTableState {
2558            type SolType = Self;
2559        }
2560        #[automatically_derived]
2561        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2562            #[inline]
2563            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2564                (
2565                    <alloy::sol_types::sol_data::Uint<
2566                        256,
2567                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2568                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2569                        &self.blsKeyComm,
2570                    ),
2571                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2572                        &self.schnorrKeyComm,
2573                    ),
2574                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2575                        &self.amountComm,
2576                    ),
2577                )
2578            }
2579            #[inline]
2580            fn stv_abi_encoded_size(&self) -> usize {
2581                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2582                    return size;
2583                }
2584                let tuple = <UnderlyingRustTuple<
2585                    '_,
2586                > as ::core::convert::From<Self>>::from(self.clone());
2587                <UnderlyingSolTuple<
2588                    '_,
2589                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2590            }
2591            #[inline]
2592            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2593                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2594            }
2595            #[inline]
2596            fn stv_abi_encode_packed_to(
2597                &self,
2598                out: &mut alloy_sol_types::private::Vec<u8>,
2599            ) {
2600                let tuple = <UnderlyingRustTuple<
2601                    '_,
2602                > as ::core::convert::From<Self>>::from(self.clone());
2603                <UnderlyingSolTuple<
2604                    '_,
2605                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2606            }
2607            #[inline]
2608            fn stv_abi_packed_encoded_size(&self) -> usize {
2609                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2610                    return size;
2611                }
2612                let tuple = <UnderlyingRustTuple<
2613                    '_,
2614                > as ::core::convert::From<Self>>::from(self.clone());
2615                <UnderlyingSolTuple<
2616                    '_,
2617                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2618            }
2619        }
2620        #[automatically_derived]
2621        impl alloy_sol_types::SolType for StakeTableState {
2622            type RustType = Self;
2623            type Token<'a> = <UnderlyingSolTuple<
2624                'a,
2625            > as alloy_sol_types::SolType>::Token<'a>;
2626            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2627            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2628                '_,
2629            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2630            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2631                '_,
2632            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2633            #[inline]
2634            fn valid_token(token: &Self::Token<'_>) -> bool {
2635                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2636            }
2637            #[inline]
2638            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2639                let tuple = <UnderlyingSolTuple<
2640                    '_,
2641                > as alloy_sol_types::SolType>::detokenize(token);
2642                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2643            }
2644        }
2645        #[automatically_derived]
2646        impl alloy_sol_types::SolStruct for StakeTableState {
2647            const NAME: &'static str = "StakeTableState";
2648            #[inline]
2649            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2650                alloy_sol_types::private::Cow::Borrowed(
2651                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2652                )
2653            }
2654            #[inline]
2655            fn eip712_components() -> alloy_sol_types::private::Vec<
2656                alloy_sol_types::private::Cow<'static, str>,
2657            > {
2658                alloy_sol_types::private::Vec::new()
2659            }
2660            #[inline]
2661            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2662                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2663            }
2664            #[inline]
2665            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2666                [
2667                    <alloy::sol_types::sol_data::Uint<
2668                        256,
2669                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2670                        .0,
2671                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2672                            &self.blsKeyComm,
2673                        )
2674                        .0,
2675                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2676                            &self.schnorrKeyComm,
2677                        )
2678                        .0,
2679                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2680                            &self.amountComm,
2681                        )
2682                        .0,
2683                ]
2684                    .concat()
2685            }
2686        }
2687        #[automatically_derived]
2688        impl alloy_sol_types::EventTopic for StakeTableState {
2689            #[inline]
2690            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2691                0usize
2692                    + <alloy::sol_types::sol_data::Uint<
2693                        256,
2694                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2695                        &rust.threshold,
2696                    )
2697                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2698                        &rust.blsKeyComm,
2699                    )
2700                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2701                        &rust.schnorrKeyComm,
2702                    )
2703                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2704                        &rust.amountComm,
2705                    )
2706            }
2707            #[inline]
2708            fn encode_topic_preimage(
2709                rust: &Self::RustType,
2710                out: &mut alloy_sol_types::private::Vec<u8>,
2711            ) {
2712                out.reserve(
2713                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2714                );
2715                <alloy::sol_types::sol_data::Uint<
2716                    256,
2717                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2718                    &rust.threshold,
2719                    out,
2720                );
2721                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2722                    &rust.blsKeyComm,
2723                    out,
2724                );
2725                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2726                    &rust.schnorrKeyComm,
2727                    out,
2728                );
2729                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2730                    &rust.amountComm,
2731                    out,
2732                );
2733            }
2734            #[inline]
2735            fn encode_topic(
2736                rust: &Self::RustType,
2737            ) -> alloy_sol_types::abi::token::WordToken {
2738                let mut out = alloy_sol_types::private::Vec::new();
2739                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2740                    rust,
2741                    &mut out,
2742                );
2743                alloy_sol_types::abi::token::WordToken(
2744                    alloy_sol_types::private::keccak256(out),
2745                )
2746            }
2747        }
2748    };
2749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2750    /**```solidity
2751struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2752```*/
2753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2754    #[derive(Clone)]
2755    pub struct StateHistoryCommitment {
2756        #[allow(missing_docs)]
2757        pub l1BlockHeight: u64,
2758        #[allow(missing_docs)]
2759        pub l1BlockTimestamp: u64,
2760        #[allow(missing_docs)]
2761        pub hotShotBlockHeight: u64,
2762        #[allow(missing_docs)]
2763        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2764    }
2765    #[allow(
2766        non_camel_case_types,
2767        non_snake_case,
2768        clippy::pub_underscore_fields,
2769        clippy::style
2770    )]
2771    const _: () = {
2772        use alloy::sol_types as alloy_sol_types;
2773        #[doc(hidden)]
2774        type UnderlyingSolTuple<'a> = (
2775            alloy::sol_types::sol_data::Uint<64>,
2776            alloy::sol_types::sol_data::Uint<64>,
2777            alloy::sol_types::sol_data::Uint<64>,
2778            BN254::ScalarField,
2779        );
2780        #[doc(hidden)]
2781        type UnderlyingRustTuple<'a> = (
2782            u64,
2783            u64,
2784            u64,
2785            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2786        );
2787        #[cfg(test)]
2788        #[allow(dead_code, unreachable_patterns)]
2789        fn _type_assertion(
2790            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2791        ) {
2792            match _t {
2793                alloy_sol_types::private::AssertTypeEq::<
2794                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2795                >(_) => {}
2796            }
2797        }
2798        #[automatically_derived]
2799        #[doc(hidden)]
2800        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2801            fn from(value: StateHistoryCommitment) -> Self {
2802                (
2803                    value.l1BlockHeight,
2804                    value.l1BlockTimestamp,
2805                    value.hotShotBlockHeight,
2806                    value.hotShotBlockCommRoot,
2807                )
2808            }
2809        }
2810        #[automatically_derived]
2811        #[doc(hidden)]
2812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2814                Self {
2815                    l1BlockHeight: tuple.0,
2816                    l1BlockTimestamp: tuple.1,
2817                    hotShotBlockHeight: tuple.2,
2818                    hotShotBlockCommRoot: tuple.3,
2819                }
2820            }
2821        }
2822        #[automatically_derived]
2823        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2824            type SolType = Self;
2825        }
2826        #[automatically_derived]
2827        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2828            #[inline]
2829            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2830                (
2831                    <alloy::sol_types::sol_data::Uint<
2832                        64,
2833                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2834                    <alloy::sol_types::sol_data::Uint<
2835                        64,
2836                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2837                    <alloy::sol_types::sol_data::Uint<
2838                        64,
2839                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2840                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2841                        &self.hotShotBlockCommRoot,
2842                    ),
2843                )
2844            }
2845            #[inline]
2846            fn stv_abi_encoded_size(&self) -> usize {
2847                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2848                    return size;
2849                }
2850                let tuple = <UnderlyingRustTuple<
2851                    '_,
2852                > as ::core::convert::From<Self>>::from(self.clone());
2853                <UnderlyingSolTuple<
2854                    '_,
2855                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2856            }
2857            #[inline]
2858            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2859                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2860            }
2861            #[inline]
2862            fn stv_abi_encode_packed_to(
2863                &self,
2864                out: &mut alloy_sol_types::private::Vec<u8>,
2865            ) {
2866                let tuple = <UnderlyingRustTuple<
2867                    '_,
2868                > as ::core::convert::From<Self>>::from(self.clone());
2869                <UnderlyingSolTuple<
2870                    '_,
2871                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2872            }
2873            #[inline]
2874            fn stv_abi_packed_encoded_size(&self) -> usize {
2875                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2876                    return size;
2877                }
2878                let tuple = <UnderlyingRustTuple<
2879                    '_,
2880                > as ::core::convert::From<Self>>::from(self.clone());
2881                <UnderlyingSolTuple<
2882                    '_,
2883                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2884            }
2885        }
2886        #[automatically_derived]
2887        impl alloy_sol_types::SolType for StateHistoryCommitment {
2888            type RustType = Self;
2889            type Token<'a> = <UnderlyingSolTuple<
2890                'a,
2891            > as alloy_sol_types::SolType>::Token<'a>;
2892            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2893            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2894                '_,
2895            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2896            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2897                '_,
2898            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2899            #[inline]
2900            fn valid_token(token: &Self::Token<'_>) -> bool {
2901                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2902            }
2903            #[inline]
2904            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2905                let tuple = <UnderlyingSolTuple<
2906                    '_,
2907                > as alloy_sol_types::SolType>::detokenize(token);
2908                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2909            }
2910        }
2911        #[automatically_derived]
2912        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2913            const NAME: &'static str = "StateHistoryCommitment";
2914            #[inline]
2915            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2916                alloy_sol_types::private::Cow::Borrowed(
2917                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2918                )
2919            }
2920            #[inline]
2921            fn eip712_components() -> alloy_sol_types::private::Vec<
2922                alloy_sol_types::private::Cow<'static, str>,
2923            > {
2924                alloy_sol_types::private::Vec::new()
2925            }
2926            #[inline]
2927            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2928                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2929            }
2930            #[inline]
2931            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2932                [
2933                    <alloy::sol_types::sol_data::Uint<
2934                        64,
2935                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2936                        .0,
2937                    <alloy::sol_types::sol_data::Uint<
2938                        64,
2939                    > as alloy_sol_types::SolType>::eip712_data_word(
2940                            &self.l1BlockTimestamp,
2941                        )
2942                        .0,
2943                    <alloy::sol_types::sol_data::Uint<
2944                        64,
2945                    > as alloy_sol_types::SolType>::eip712_data_word(
2946                            &self.hotShotBlockHeight,
2947                        )
2948                        .0,
2949                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2950                            &self.hotShotBlockCommRoot,
2951                        )
2952                        .0,
2953                ]
2954                    .concat()
2955            }
2956        }
2957        #[automatically_derived]
2958        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2959            #[inline]
2960            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2961                0usize
2962                    + <alloy::sol_types::sol_data::Uint<
2963                        64,
2964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2965                        &rust.l1BlockHeight,
2966                    )
2967                    + <alloy::sol_types::sol_data::Uint<
2968                        64,
2969                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2970                        &rust.l1BlockTimestamp,
2971                    )
2972                    + <alloy::sol_types::sol_data::Uint<
2973                        64,
2974                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2975                        &rust.hotShotBlockHeight,
2976                    )
2977                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2978                        &rust.hotShotBlockCommRoot,
2979                    )
2980            }
2981            #[inline]
2982            fn encode_topic_preimage(
2983                rust: &Self::RustType,
2984                out: &mut alloy_sol_types::private::Vec<u8>,
2985            ) {
2986                out.reserve(
2987                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2988                );
2989                <alloy::sol_types::sol_data::Uint<
2990                    64,
2991                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2992                    &rust.l1BlockHeight,
2993                    out,
2994                );
2995                <alloy::sol_types::sol_data::Uint<
2996                    64,
2997                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2998                    &rust.l1BlockTimestamp,
2999                    out,
3000                );
3001                <alloy::sol_types::sol_data::Uint<
3002                    64,
3003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3004                    &rust.hotShotBlockHeight,
3005                    out,
3006                );
3007                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3008                    &rust.hotShotBlockCommRoot,
3009                    out,
3010                );
3011            }
3012            #[inline]
3013            fn encode_topic(
3014                rust: &Self::RustType,
3015            ) -> alloy_sol_types::abi::token::WordToken {
3016                let mut out = alloy_sol_types::private::Vec::new();
3017                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3018                    rust,
3019                    &mut out,
3020                );
3021                alloy_sol_types::abi::token::WordToken(
3022                    alloy_sol_types::private::keccak256(out),
3023                )
3024            }
3025        }
3026    };
3027    use alloy::contract as alloy_contract;
3028    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3029
3030See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3031    #[inline]
3032    pub const fn new<
3033        T: alloy_contract::private::Transport + ::core::clone::Clone,
3034        P: alloy_contract::private::Provider<T, N>,
3035        N: alloy_contract::private::Network,
3036    >(
3037        address: alloy_sol_types::private::Address,
3038        provider: P,
3039    ) -> LightClientInstance<T, P, N> {
3040        LightClientInstance::<T, P, N>::new(address, provider)
3041    }
3042    /**A [`LightClient`](self) instance.
3043
3044Contains type-safe methods for interacting with an on-chain instance of the
3045[`LightClient`](self) contract located at a given `address`, using a given
3046provider `P`.
3047
3048If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3049documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3050be used to deploy a new instance of the contract.
3051
3052See the [module-level documentation](self) for all the available methods.*/
3053    #[derive(Clone)]
3054    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
3055        address: alloy_sol_types::private::Address,
3056        provider: P,
3057        _network_transport: ::core::marker::PhantomData<(N, T)>,
3058    }
3059    #[automatically_derived]
3060    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
3061        #[inline]
3062        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3063            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3064        }
3065    }
3066    /// Instantiation and getters/setters.
3067    #[automatically_derived]
3068    impl<
3069        T: alloy_contract::private::Transport + ::core::clone::Clone,
3070        P: alloy_contract::private::Provider<T, N>,
3071        N: alloy_contract::private::Network,
3072    > LightClientInstance<T, P, N> {
3073        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3074
3075See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3076        #[inline]
3077        pub const fn new(
3078            address: alloy_sol_types::private::Address,
3079            provider: P,
3080        ) -> Self {
3081            Self {
3082                address,
3083                provider,
3084                _network_transport: ::core::marker::PhantomData,
3085            }
3086        }
3087        /// Returns a reference to the address.
3088        #[inline]
3089        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3090            &self.address
3091        }
3092        /// Sets the address.
3093        #[inline]
3094        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3095            self.address = address;
3096        }
3097        /// Sets the address and returns `self`.
3098        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3099            self.set_address(address);
3100            self
3101        }
3102        /// Returns a reference to the provider.
3103        #[inline]
3104        pub const fn provider(&self) -> &P {
3105            &self.provider
3106        }
3107    }
3108    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
3109        /// Clones the provider and returns a new instance with the cloned provider.
3110        #[inline]
3111        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
3112            LightClientInstance {
3113                address: self.address,
3114                provider: ::core::clone::Clone::clone(&self.provider),
3115                _network_transport: ::core::marker::PhantomData,
3116            }
3117        }
3118    }
3119    /// Function calls.
3120    #[automatically_derived]
3121    impl<
3122        T: alloy_contract::private::Transport + ::core::clone::Clone,
3123        P: alloy_contract::private::Provider<T, N>,
3124        N: alloy_contract::private::Network,
3125    > LightClientInstance<T, P, N> {
3126        /// Creates a new call builder using this contract instance's provider and address.
3127        ///
3128        /// Note that the call can be any function call, not just those defined in this
3129        /// contract. Prefer using the other methods for building type-safe contract calls.
3130        pub fn call_builder<C: alloy_sol_types::SolCall>(
3131            &self,
3132            call: &C,
3133        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
3134            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3135        }
3136    }
3137    /// Event filters.
3138    #[automatically_derived]
3139    impl<
3140        T: alloy_contract::private::Transport + ::core::clone::Clone,
3141        P: alloy_contract::private::Provider<T, N>,
3142        N: alloy_contract::private::Network,
3143    > LightClientInstance<T, P, N> {
3144        /// Creates a new event filter using this contract instance's provider and address.
3145        ///
3146        /// Note that the type can be any event, not just those defined in this contract.
3147        /// Prefer using the other methods for building type-safe event filters.
3148        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3149            &self,
3150        ) -> alloy_contract::Event<T, &P, E, N> {
3151            alloy_contract::Event::new_sol(&self.provider, &self.address)
3152        }
3153    }
3154}
3155/**
3156
3157Generated by the following Solidity interface...
3158```solidity
3159library BN254 {
3160    type BaseField is uint256;
3161    type ScalarField is uint256;
3162    struct G1Point {
3163        BaseField x;
3164        BaseField y;
3165    }
3166}
3167
3168library IPlonkVerifier {
3169    struct PlonkProof {
3170        BN254.G1Point wire0;
3171        BN254.G1Point wire1;
3172        BN254.G1Point wire2;
3173        BN254.G1Point wire3;
3174        BN254.G1Point wire4;
3175        BN254.G1Point prodPerm;
3176        BN254.G1Point split0;
3177        BN254.G1Point split1;
3178        BN254.G1Point split2;
3179        BN254.G1Point split3;
3180        BN254.G1Point split4;
3181        BN254.G1Point zeta;
3182        BN254.G1Point zetaOmega;
3183        BN254.ScalarField wireEval0;
3184        BN254.ScalarField wireEval1;
3185        BN254.ScalarField wireEval2;
3186        BN254.ScalarField wireEval3;
3187        BN254.ScalarField wireEval4;
3188        BN254.ScalarField sigmaEval0;
3189        BN254.ScalarField sigmaEval1;
3190        BN254.ScalarField sigmaEval2;
3191        BN254.ScalarField sigmaEval3;
3192        BN254.ScalarField prodPermZetaOmegaEval;
3193    }
3194    struct VerifyingKey {
3195        uint256 domainSize;
3196        uint256 numInputs;
3197        BN254.G1Point sigma0;
3198        BN254.G1Point sigma1;
3199        BN254.G1Point sigma2;
3200        BN254.G1Point sigma3;
3201        BN254.G1Point sigma4;
3202        BN254.G1Point q1;
3203        BN254.G1Point q2;
3204        BN254.G1Point q3;
3205        BN254.G1Point q4;
3206        BN254.G1Point qM12;
3207        BN254.G1Point qM34;
3208        BN254.G1Point qO;
3209        BN254.G1Point qC;
3210        BN254.G1Point qH1;
3211        BN254.G1Point qH2;
3212        BN254.G1Point qH3;
3213        BN254.G1Point qH4;
3214        BN254.G1Point qEcc;
3215        bytes32 g2LSB;
3216        bytes32 g2MSB;
3217    }
3218}
3219
3220library LightClient {
3221    struct LightClientState {
3222        uint64 viewNum;
3223        uint64 blockHeight;
3224        BN254.ScalarField blockCommRoot;
3225    }
3226    struct StakeTableState {
3227        uint256 threshold;
3228        BN254.ScalarField blsKeyComm;
3229        BN254.ScalarField schnorrKeyComm;
3230        BN254.ScalarField amountComm;
3231    }
3232    struct StateHistoryCommitment {
3233        uint64 l1BlockHeight;
3234        uint64 l1BlockTimestamp;
3235        uint64 hotShotBlockHeight;
3236        BN254.ScalarField hotShotBlockCommRoot;
3237    }
3238}
3239
3240interface LightClientV2Mock {
3241    error AddressEmptyCode(address target);
3242    error DeprecatedApi();
3243    error ERC1967InvalidImplementation(address implementation);
3244    error ERC1967NonPayable();
3245    error FailedInnerCall();
3246    error InsufficientSnapshotHistory();
3247    error InvalidAddress();
3248    error InvalidArgs();
3249    error InvalidHotShotBlockForCommitmentCheck();
3250    error InvalidInitialization();
3251    error InvalidMaxStateHistory();
3252    error InvalidProof();
3253    error MissingEpochRootUpdate();
3254    error NoChangeRequired();
3255    error NotInitializing();
3256    error OutdatedState();
3257    error OwnableInvalidOwner(address owner);
3258    error OwnableUnauthorizedAccount(address account);
3259    error ProverNotPermissioned();
3260    error UUPSUnauthorizedCallContext();
3261    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3262    error WrongStakeTableUsed();
3263
3264    event Initialized(uint64 version);
3265    event NewEpoch(uint64 epoch);
3266    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3267    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3268    event PermissionedProverNotRequired();
3269    event PermissionedProverRequired(address permissionedProver);
3270    event Upgrade(address implementation);
3271    event Upgraded(address indexed implementation);
3272
3273    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3274    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3275    function blocksPerEpoch() external view returns (uint64);
3276    function currentBlockNumber() external view returns (uint256);
3277    function currentEpoch() external view returns (uint64);
3278    function disablePermissionedProverMode() external;
3279    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3280    function epochStartBlock() external view returns (uint64);
3281    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3282    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3283    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3284    function getFirstEpoch() external view returns (uint64);
3285    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3286    function getStateHistoryCount() external view returns (uint256);
3287    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3288    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3289    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3290    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3291    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3292    function isPermissionedProverEnabled() external view returns (bool);
3293    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3294    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3295    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3296    function owner() external view returns (address);
3297    function permissionedProver() external view returns (address);
3298    function proxiableUUID() external view returns (bytes32);
3299    function renounceOwnership() external;
3300    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3301    function setFinalizedState(LightClient.LightClientState memory state) external;
3302    function setHotShotDownSince(uint256 l1Height) external;
3303    function setHotShotUp() external;
3304    function setPermissionedProver(address prover) external;
3305    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3306    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3307    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3308    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3309    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3310    function stateHistoryFirstIndex() external view returns (uint64);
3311    function stateHistoryRetentionPeriod() external view returns (uint32);
3312    function transferOwnership(address newOwner) external;
3313    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3314    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3315    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3316}
3317```
3318
3319...which was generated by the following JSON ABI:
3320```json
3321[
3322  {
3323    "type": "function",
3324    "name": "UPGRADE_INTERFACE_VERSION",
3325    "inputs": [],
3326    "outputs": [
3327      {
3328        "name": "",
3329        "type": "string",
3330        "internalType": "string"
3331      }
3332    ],
3333    "stateMutability": "view"
3334  },
3335  {
3336    "type": "function",
3337    "name": "_getVk",
3338    "inputs": [],
3339    "outputs": [
3340      {
3341        "name": "vk",
3342        "type": "tuple",
3343        "internalType": "struct IPlonkVerifier.VerifyingKey",
3344        "components": [
3345          {
3346            "name": "domainSize",
3347            "type": "uint256",
3348            "internalType": "uint256"
3349          },
3350          {
3351            "name": "numInputs",
3352            "type": "uint256",
3353            "internalType": "uint256"
3354          },
3355          {
3356            "name": "sigma0",
3357            "type": "tuple",
3358            "internalType": "struct BN254.G1Point",
3359            "components": [
3360              {
3361                "name": "x",
3362                "type": "uint256",
3363                "internalType": "BN254.BaseField"
3364              },
3365              {
3366                "name": "y",
3367                "type": "uint256",
3368                "internalType": "BN254.BaseField"
3369              }
3370            ]
3371          },
3372          {
3373            "name": "sigma1",
3374            "type": "tuple",
3375            "internalType": "struct BN254.G1Point",
3376            "components": [
3377              {
3378                "name": "x",
3379                "type": "uint256",
3380                "internalType": "BN254.BaseField"
3381              },
3382              {
3383                "name": "y",
3384                "type": "uint256",
3385                "internalType": "BN254.BaseField"
3386              }
3387            ]
3388          },
3389          {
3390            "name": "sigma2",
3391            "type": "tuple",
3392            "internalType": "struct BN254.G1Point",
3393            "components": [
3394              {
3395                "name": "x",
3396                "type": "uint256",
3397                "internalType": "BN254.BaseField"
3398              },
3399              {
3400                "name": "y",
3401                "type": "uint256",
3402                "internalType": "BN254.BaseField"
3403              }
3404            ]
3405          },
3406          {
3407            "name": "sigma3",
3408            "type": "tuple",
3409            "internalType": "struct BN254.G1Point",
3410            "components": [
3411              {
3412                "name": "x",
3413                "type": "uint256",
3414                "internalType": "BN254.BaseField"
3415              },
3416              {
3417                "name": "y",
3418                "type": "uint256",
3419                "internalType": "BN254.BaseField"
3420              }
3421            ]
3422          },
3423          {
3424            "name": "sigma4",
3425            "type": "tuple",
3426            "internalType": "struct BN254.G1Point",
3427            "components": [
3428              {
3429                "name": "x",
3430                "type": "uint256",
3431                "internalType": "BN254.BaseField"
3432              },
3433              {
3434                "name": "y",
3435                "type": "uint256",
3436                "internalType": "BN254.BaseField"
3437              }
3438            ]
3439          },
3440          {
3441            "name": "q1",
3442            "type": "tuple",
3443            "internalType": "struct BN254.G1Point",
3444            "components": [
3445              {
3446                "name": "x",
3447                "type": "uint256",
3448                "internalType": "BN254.BaseField"
3449              },
3450              {
3451                "name": "y",
3452                "type": "uint256",
3453                "internalType": "BN254.BaseField"
3454              }
3455            ]
3456          },
3457          {
3458            "name": "q2",
3459            "type": "tuple",
3460            "internalType": "struct BN254.G1Point",
3461            "components": [
3462              {
3463                "name": "x",
3464                "type": "uint256",
3465                "internalType": "BN254.BaseField"
3466              },
3467              {
3468                "name": "y",
3469                "type": "uint256",
3470                "internalType": "BN254.BaseField"
3471              }
3472            ]
3473          },
3474          {
3475            "name": "q3",
3476            "type": "tuple",
3477            "internalType": "struct BN254.G1Point",
3478            "components": [
3479              {
3480                "name": "x",
3481                "type": "uint256",
3482                "internalType": "BN254.BaseField"
3483              },
3484              {
3485                "name": "y",
3486                "type": "uint256",
3487                "internalType": "BN254.BaseField"
3488              }
3489            ]
3490          },
3491          {
3492            "name": "q4",
3493            "type": "tuple",
3494            "internalType": "struct BN254.G1Point",
3495            "components": [
3496              {
3497                "name": "x",
3498                "type": "uint256",
3499                "internalType": "BN254.BaseField"
3500              },
3501              {
3502                "name": "y",
3503                "type": "uint256",
3504                "internalType": "BN254.BaseField"
3505              }
3506            ]
3507          },
3508          {
3509            "name": "qM12",
3510            "type": "tuple",
3511            "internalType": "struct BN254.G1Point",
3512            "components": [
3513              {
3514                "name": "x",
3515                "type": "uint256",
3516                "internalType": "BN254.BaseField"
3517              },
3518              {
3519                "name": "y",
3520                "type": "uint256",
3521                "internalType": "BN254.BaseField"
3522              }
3523            ]
3524          },
3525          {
3526            "name": "qM34",
3527            "type": "tuple",
3528            "internalType": "struct BN254.G1Point",
3529            "components": [
3530              {
3531                "name": "x",
3532                "type": "uint256",
3533                "internalType": "BN254.BaseField"
3534              },
3535              {
3536                "name": "y",
3537                "type": "uint256",
3538                "internalType": "BN254.BaseField"
3539              }
3540            ]
3541          },
3542          {
3543            "name": "qO",
3544            "type": "tuple",
3545            "internalType": "struct BN254.G1Point",
3546            "components": [
3547              {
3548                "name": "x",
3549                "type": "uint256",
3550                "internalType": "BN254.BaseField"
3551              },
3552              {
3553                "name": "y",
3554                "type": "uint256",
3555                "internalType": "BN254.BaseField"
3556              }
3557            ]
3558          },
3559          {
3560            "name": "qC",
3561            "type": "tuple",
3562            "internalType": "struct BN254.G1Point",
3563            "components": [
3564              {
3565                "name": "x",
3566                "type": "uint256",
3567                "internalType": "BN254.BaseField"
3568              },
3569              {
3570                "name": "y",
3571                "type": "uint256",
3572                "internalType": "BN254.BaseField"
3573              }
3574            ]
3575          },
3576          {
3577            "name": "qH1",
3578            "type": "tuple",
3579            "internalType": "struct BN254.G1Point",
3580            "components": [
3581              {
3582                "name": "x",
3583                "type": "uint256",
3584                "internalType": "BN254.BaseField"
3585              },
3586              {
3587                "name": "y",
3588                "type": "uint256",
3589                "internalType": "BN254.BaseField"
3590              }
3591            ]
3592          },
3593          {
3594            "name": "qH2",
3595            "type": "tuple",
3596            "internalType": "struct BN254.G1Point",
3597            "components": [
3598              {
3599                "name": "x",
3600                "type": "uint256",
3601                "internalType": "BN254.BaseField"
3602              },
3603              {
3604                "name": "y",
3605                "type": "uint256",
3606                "internalType": "BN254.BaseField"
3607              }
3608            ]
3609          },
3610          {
3611            "name": "qH3",
3612            "type": "tuple",
3613            "internalType": "struct BN254.G1Point",
3614            "components": [
3615              {
3616                "name": "x",
3617                "type": "uint256",
3618                "internalType": "BN254.BaseField"
3619              },
3620              {
3621                "name": "y",
3622                "type": "uint256",
3623                "internalType": "BN254.BaseField"
3624              }
3625            ]
3626          },
3627          {
3628            "name": "qH4",
3629            "type": "tuple",
3630            "internalType": "struct BN254.G1Point",
3631            "components": [
3632              {
3633                "name": "x",
3634                "type": "uint256",
3635                "internalType": "BN254.BaseField"
3636              },
3637              {
3638                "name": "y",
3639                "type": "uint256",
3640                "internalType": "BN254.BaseField"
3641              }
3642            ]
3643          },
3644          {
3645            "name": "qEcc",
3646            "type": "tuple",
3647            "internalType": "struct BN254.G1Point",
3648            "components": [
3649              {
3650                "name": "x",
3651                "type": "uint256",
3652                "internalType": "BN254.BaseField"
3653              },
3654              {
3655                "name": "y",
3656                "type": "uint256",
3657                "internalType": "BN254.BaseField"
3658              }
3659            ]
3660          },
3661          {
3662            "name": "g2LSB",
3663            "type": "bytes32",
3664            "internalType": "bytes32"
3665          },
3666          {
3667            "name": "g2MSB",
3668            "type": "bytes32",
3669            "internalType": "bytes32"
3670          }
3671        ]
3672      }
3673    ],
3674    "stateMutability": "pure"
3675  },
3676  {
3677    "type": "function",
3678    "name": "blocksPerEpoch",
3679    "inputs": [],
3680    "outputs": [
3681      {
3682        "name": "",
3683        "type": "uint64",
3684        "internalType": "uint64"
3685      }
3686    ],
3687    "stateMutability": "view"
3688  },
3689  {
3690    "type": "function",
3691    "name": "currentBlockNumber",
3692    "inputs": [],
3693    "outputs": [
3694      {
3695        "name": "",
3696        "type": "uint256",
3697        "internalType": "uint256"
3698      }
3699    ],
3700    "stateMutability": "view"
3701  },
3702  {
3703    "type": "function",
3704    "name": "currentEpoch",
3705    "inputs": [],
3706    "outputs": [
3707      {
3708        "name": "",
3709        "type": "uint64",
3710        "internalType": "uint64"
3711      }
3712    ],
3713    "stateMutability": "view"
3714  },
3715  {
3716    "type": "function",
3717    "name": "disablePermissionedProverMode",
3718    "inputs": [],
3719    "outputs": [],
3720    "stateMutability": "nonpayable"
3721  },
3722  {
3723    "type": "function",
3724    "name": "epochFromBlockNumber",
3725    "inputs": [
3726      {
3727        "name": "_blockNum",
3728        "type": "uint64",
3729        "internalType": "uint64"
3730      },
3731      {
3732        "name": "_blocksPerEpoch",
3733        "type": "uint64",
3734        "internalType": "uint64"
3735      }
3736    ],
3737    "outputs": [
3738      {
3739        "name": "",
3740        "type": "uint64",
3741        "internalType": "uint64"
3742      }
3743    ],
3744    "stateMutability": "pure"
3745  },
3746  {
3747    "type": "function",
3748    "name": "epochStartBlock",
3749    "inputs": [],
3750    "outputs": [
3751      {
3752        "name": "",
3753        "type": "uint64",
3754        "internalType": "uint64"
3755      }
3756    ],
3757    "stateMutability": "view"
3758  },
3759  {
3760    "type": "function",
3761    "name": "finalizedState",
3762    "inputs": [],
3763    "outputs": [
3764      {
3765        "name": "viewNum",
3766        "type": "uint64",
3767        "internalType": "uint64"
3768      },
3769      {
3770        "name": "blockHeight",
3771        "type": "uint64",
3772        "internalType": "uint64"
3773      },
3774      {
3775        "name": "blockCommRoot",
3776        "type": "uint256",
3777        "internalType": "BN254.ScalarField"
3778      }
3779    ],
3780    "stateMutability": "view"
3781  },
3782  {
3783    "type": "function",
3784    "name": "genesisStakeTableState",
3785    "inputs": [],
3786    "outputs": [
3787      {
3788        "name": "threshold",
3789        "type": "uint256",
3790        "internalType": "uint256"
3791      },
3792      {
3793        "name": "blsKeyComm",
3794        "type": "uint256",
3795        "internalType": "BN254.ScalarField"
3796      },
3797      {
3798        "name": "schnorrKeyComm",
3799        "type": "uint256",
3800        "internalType": "BN254.ScalarField"
3801      },
3802      {
3803        "name": "amountComm",
3804        "type": "uint256",
3805        "internalType": "BN254.ScalarField"
3806      }
3807    ],
3808    "stateMutability": "view"
3809  },
3810  {
3811    "type": "function",
3812    "name": "genesisState",
3813    "inputs": [],
3814    "outputs": [
3815      {
3816        "name": "viewNum",
3817        "type": "uint64",
3818        "internalType": "uint64"
3819      },
3820      {
3821        "name": "blockHeight",
3822        "type": "uint64",
3823        "internalType": "uint64"
3824      },
3825      {
3826        "name": "blockCommRoot",
3827        "type": "uint256",
3828        "internalType": "BN254.ScalarField"
3829      }
3830    ],
3831    "stateMutability": "view"
3832  },
3833  {
3834    "type": "function",
3835    "name": "getFirstEpoch",
3836    "inputs": [],
3837    "outputs": [
3838      {
3839        "name": "",
3840        "type": "uint64",
3841        "internalType": "uint64"
3842      }
3843    ],
3844    "stateMutability": "view"
3845  },
3846  {
3847    "type": "function",
3848    "name": "getHotShotCommitment",
3849    "inputs": [
3850      {
3851        "name": "hotShotBlockHeight",
3852        "type": "uint256",
3853        "internalType": "uint256"
3854      }
3855    ],
3856    "outputs": [
3857      {
3858        "name": "hotShotBlockCommRoot",
3859        "type": "uint256",
3860        "internalType": "BN254.ScalarField"
3861      },
3862      {
3863        "name": "hotshotBlockHeight",
3864        "type": "uint64",
3865        "internalType": "uint64"
3866      }
3867    ],
3868    "stateMutability": "view"
3869  },
3870  {
3871    "type": "function",
3872    "name": "getStateHistoryCount",
3873    "inputs": [],
3874    "outputs": [
3875      {
3876        "name": "",
3877        "type": "uint256",
3878        "internalType": "uint256"
3879      }
3880    ],
3881    "stateMutability": "view"
3882  },
3883  {
3884    "type": "function",
3885    "name": "getVersion",
3886    "inputs": [],
3887    "outputs": [
3888      {
3889        "name": "majorVersion",
3890        "type": "uint8",
3891        "internalType": "uint8"
3892      },
3893      {
3894        "name": "minorVersion",
3895        "type": "uint8",
3896        "internalType": "uint8"
3897      },
3898      {
3899        "name": "patchVersion",
3900        "type": "uint8",
3901        "internalType": "uint8"
3902      }
3903    ],
3904    "stateMutability": "pure"
3905  },
3906  {
3907    "type": "function",
3908    "name": "initialize",
3909    "inputs": [
3910      {
3911        "name": "_genesis",
3912        "type": "tuple",
3913        "internalType": "struct LightClient.LightClientState",
3914        "components": [
3915          {
3916            "name": "viewNum",
3917            "type": "uint64",
3918            "internalType": "uint64"
3919          },
3920          {
3921            "name": "blockHeight",
3922            "type": "uint64",
3923            "internalType": "uint64"
3924          },
3925          {
3926            "name": "blockCommRoot",
3927            "type": "uint256",
3928            "internalType": "BN254.ScalarField"
3929          }
3930        ]
3931      },
3932      {
3933        "name": "_genesisStakeTableState",
3934        "type": "tuple",
3935        "internalType": "struct LightClient.StakeTableState",
3936        "components": [
3937          {
3938            "name": "threshold",
3939            "type": "uint256",
3940            "internalType": "uint256"
3941          },
3942          {
3943            "name": "blsKeyComm",
3944            "type": "uint256",
3945            "internalType": "BN254.ScalarField"
3946          },
3947          {
3948            "name": "schnorrKeyComm",
3949            "type": "uint256",
3950            "internalType": "BN254.ScalarField"
3951          },
3952          {
3953            "name": "amountComm",
3954            "type": "uint256",
3955            "internalType": "BN254.ScalarField"
3956          }
3957        ]
3958      },
3959      {
3960        "name": "_stateHistoryRetentionPeriod",
3961        "type": "uint32",
3962        "internalType": "uint32"
3963      },
3964      {
3965        "name": "owner",
3966        "type": "address",
3967        "internalType": "address"
3968      }
3969    ],
3970    "outputs": [],
3971    "stateMutability": "nonpayable"
3972  },
3973  {
3974    "type": "function",
3975    "name": "initializeV2",
3976    "inputs": [
3977      {
3978        "name": "_blocksPerEpoch",
3979        "type": "uint64",
3980        "internalType": "uint64"
3981      },
3982      {
3983        "name": "_epochStartBlock",
3984        "type": "uint64",
3985        "internalType": "uint64"
3986      }
3987    ],
3988    "outputs": [],
3989    "stateMutability": "nonpayable"
3990  },
3991  {
3992    "type": "function",
3993    "name": "isEpochRoot",
3994    "inputs": [
3995      {
3996        "name": "blockHeight",
3997        "type": "uint64",
3998        "internalType": "uint64"
3999      }
4000    ],
4001    "outputs": [
4002      {
4003        "name": "",
4004        "type": "bool",
4005        "internalType": "bool"
4006      }
4007    ],
4008    "stateMutability": "view"
4009  },
4010  {
4011    "type": "function",
4012    "name": "isGtEpochRoot",
4013    "inputs": [
4014      {
4015        "name": "blockHeight",
4016        "type": "uint64",
4017        "internalType": "uint64"
4018      }
4019    ],
4020    "outputs": [
4021      {
4022        "name": "",
4023        "type": "bool",
4024        "internalType": "bool"
4025      }
4026    ],
4027    "stateMutability": "view"
4028  },
4029  {
4030    "type": "function",
4031    "name": "isPermissionedProverEnabled",
4032    "inputs": [],
4033    "outputs": [
4034      {
4035        "name": "",
4036        "type": "bool",
4037        "internalType": "bool"
4038      }
4039    ],
4040    "stateMutability": "view"
4041  },
4042  {
4043    "type": "function",
4044    "name": "lagOverEscapeHatchThreshold",
4045    "inputs": [
4046      {
4047        "name": "blockNumber",
4048        "type": "uint256",
4049        "internalType": "uint256"
4050      },
4051      {
4052        "name": "threshold",
4053        "type": "uint256",
4054        "internalType": "uint256"
4055      }
4056    ],
4057    "outputs": [
4058      {
4059        "name": "",
4060        "type": "bool",
4061        "internalType": "bool"
4062      }
4063    ],
4064    "stateMutability": "view"
4065  },
4066  {
4067    "type": "function",
4068    "name": "newFinalizedState",
4069    "inputs": [
4070      {
4071        "name": "",
4072        "type": "tuple",
4073        "internalType": "struct LightClient.LightClientState",
4074        "components": [
4075          {
4076            "name": "viewNum",
4077            "type": "uint64",
4078            "internalType": "uint64"
4079          },
4080          {
4081            "name": "blockHeight",
4082            "type": "uint64",
4083            "internalType": "uint64"
4084          },
4085          {
4086            "name": "blockCommRoot",
4087            "type": "uint256",
4088            "internalType": "BN254.ScalarField"
4089          }
4090        ]
4091      },
4092      {
4093        "name": "",
4094        "type": "tuple",
4095        "internalType": "struct IPlonkVerifier.PlonkProof",
4096        "components": [
4097          {
4098            "name": "wire0",
4099            "type": "tuple",
4100            "internalType": "struct BN254.G1Point",
4101            "components": [
4102              {
4103                "name": "x",
4104                "type": "uint256",
4105                "internalType": "BN254.BaseField"
4106              },
4107              {
4108                "name": "y",
4109                "type": "uint256",
4110                "internalType": "BN254.BaseField"
4111              }
4112            ]
4113          },
4114          {
4115            "name": "wire1",
4116            "type": "tuple",
4117            "internalType": "struct BN254.G1Point",
4118            "components": [
4119              {
4120                "name": "x",
4121                "type": "uint256",
4122                "internalType": "BN254.BaseField"
4123              },
4124              {
4125                "name": "y",
4126                "type": "uint256",
4127                "internalType": "BN254.BaseField"
4128              }
4129            ]
4130          },
4131          {
4132            "name": "wire2",
4133            "type": "tuple",
4134            "internalType": "struct BN254.G1Point",
4135            "components": [
4136              {
4137                "name": "x",
4138                "type": "uint256",
4139                "internalType": "BN254.BaseField"
4140              },
4141              {
4142                "name": "y",
4143                "type": "uint256",
4144                "internalType": "BN254.BaseField"
4145              }
4146            ]
4147          },
4148          {
4149            "name": "wire3",
4150            "type": "tuple",
4151            "internalType": "struct BN254.G1Point",
4152            "components": [
4153              {
4154                "name": "x",
4155                "type": "uint256",
4156                "internalType": "BN254.BaseField"
4157              },
4158              {
4159                "name": "y",
4160                "type": "uint256",
4161                "internalType": "BN254.BaseField"
4162              }
4163            ]
4164          },
4165          {
4166            "name": "wire4",
4167            "type": "tuple",
4168            "internalType": "struct BN254.G1Point",
4169            "components": [
4170              {
4171                "name": "x",
4172                "type": "uint256",
4173                "internalType": "BN254.BaseField"
4174              },
4175              {
4176                "name": "y",
4177                "type": "uint256",
4178                "internalType": "BN254.BaseField"
4179              }
4180            ]
4181          },
4182          {
4183            "name": "prodPerm",
4184            "type": "tuple",
4185            "internalType": "struct BN254.G1Point",
4186            "components": [
4187              {
4188                "name": "x",
4189                "type": "uint256",
4190                "internalType": "BN254.BaseField"
4191              },
4192              {
4193                "name": "y",
4194                "type": "uint256",
4195                "internalType": "BN254.BaseField"
4196              }
4197            ]
4198          },
4199          {
4200            "name": "split0",
4201            "type": "tuple",
4202            "internalType": "struct BN254.G1Point",
4203            "components": [
4204              {
4205                "name": "x",
4206                "type": "uint256",
4207                "internalType": "BN254.BaseField"
4208              },
4209              {
4210                "name": "y",
4211                "type": "uint256",
4212                "internalType": "BN254.BaseField"
4213              }
4214            ]
4215          },
4216          {
4217            "name": "split1",
4218            "type": "tuple",
4219            "internalType": "struct BN254.G1Point",
4220            "components": [
4221              {
4222                "name": "x",
4223                "type": "uint256",
4224                "internalType": "BN254.BaseField"
4225              },
4226              {
4227                "name": "y",
4228                "type": "uint256",
4229                "internalType": "BN254.BaseField"
4230              }
4231            ]
4232          },
4233          {
4234            "name": "split2",
4235            "type": "tuple",
4236            "internalType": "struct BN254.G1Point",
4237            "components": [
4238              {
4239                "name": "x",
4240                "type": "uint256",
4241                "internalType": "BN254.BaseField"
4242              },
4243              {
4244                "name": "y",
4245                "type": "uint256",
4246                "internalType": "BN254.BaseField"
4247              }
4248            ]
4249          },
4250          {
4251            "name": "split3",
4252            "type": "tuple",
4253            "internalType": "struct BN254.G1Point",
4254            "components": [
4255              {
4256                "name": "x",
4257                "type": "uint256",
4258                "internalType": "BN254.BaseField"
4259              },
4260              {
4261                "name": "y",
4262                "type": "uint256",
4263                "internalType": "BN254.BaseField"
4264              }
4265            ]
4266          },
4267          {
4268            "name": "split4",
4269            "type": "tuple",
4270            "internalType": "struct BN254.G1Point",
4271            "components": [
4272              {
4273                "name": "x",
4274                "type": "uint256",
4275                "internalType": "BN254.BaseField"
4276              },
4277              {
4278                "name": "y",
4279                "type": "uint256",
4280                "internalType": "BN254.BaseField"
4281              }
4282            ]
4283          },
4284          {
4285            "name": "zeta",
4286            "type": "tuple",
4287            "internalType": "struct BN254.G1Point",
4288            "components": [
4289              {
4290                "name": "x",
4291                "type": "uint256",
4292                "internalType": "BN254.BaseField"
4293              },
4294              {
4295                "name": "y",
4296                "type": "uint256",
4297                "internalType": "BN254.BaseField"
4298              }
4299            ]
4300          },
4301          {
4302            "name": "zetaOmega",
4303            "type": "tuple",
4304            "internalType": "struct BN254.G1Point",
4305            "components": [
4306              {
4307                "name": "x",
4308                "type": "uint256",
4309                "internalType": "BN254.BaseField"
4310              },
4311              {
4312                "name": "y",
4313                "type": "uint256",
4314                "internalType": "BN254.BaseField"
4315              }
4316            ]
4317          },
4318          {
4319            "name": "wireEval0",
4320            "type": "uint256",
4321            "internalType": "BN254.ScalarField"
4322          },
4323          {
4324            "name": "wireEval1",
4325            "type": "uint256",
4326            "internalType": "BN254.ScalarField"
4327          },
4328          {
4329            "name": "wireEval2",
4330            "type": "uint256",
4331            "internalType": "BN254.ScalarField"
4332          },
4333          {
4334            "name": "wireEval3",
4335            "type": "uint256",
4336            "internalType": "BN254.ScalarField"
4337          },
4338          {
4339            "name": "wireEval4",
4340            "type": "uint256",
4341            "internalType": "BN254.ScalarField"
4342          },
4343          {
4344            "name": "sigmaEval0",
4345            "type": "uint256",
4346            "internalType": "BN254.ScalarField"
4347          },
4348          {
4349            "name": "sigmaEval1",
4350            "type": "uint256",
4351            "internalType": "BN254.ScalarField"
4352          },
4353          {
4354            "name": "sigmaEval2",
4355            "type": "uint256",
4356            "internalType": "BN254.ScalarField"
4357          },
4358          {
4359            "name": "sigmaEval3",
4360            "type": "uint256",
4361            "internalType": "BN254.ScalarField"
4362          },
4363          {
4364            "name": "prodPermZetaOmegaEval",
4365            "type": "uint256",
4366            "internalType": "BN254.ScalarField"
4367          }
4368        ]
4369      }
4370    ],
4371    "outputs": [],
4372    "stateMutability": "pure"
4373  },
4374  {
4375    "type": "function",
4376    "name": "newFinalizedState",
4377    "inputs": [
4378      {
4379        "name": "newState",
4380        "type": "tuple",
4381        "internalType": "struct LightClient.LightClientState",
4382        "components": [
4383          {
4384            "name": "viewNum",
4385            "type": "uint64",
4386            "internalType": "uint64"
4387          },
4388          {
4389            "name": "blockHeight",
4390            "type": "uint64",
4391            "internalType": "uint64"
4392          },
4393          {
4394            "name": "blockCommRoot",
4395            "type": "uint256",
4396            "internalType": "BN254.ScalarField"
4397          }
4398        ]
4399      },
4400      {
4401        "name": "nextStakeTable",
4402        "type": "tuple",
4403        "internalType": "struct LightClient.StakeTableState",
4404        "components": [
4405          {
4406            "name": "threshold",
4407            "type": "uint256",
4408            "internalType": "uint256"
4409          },
4410          {
4411            "name": "blsKeyComm",
4412            "type": "uint256",
4413            "internalType": "BN254.ScalarField"
4414          },
4415          {
4416            "name": "schnorrKeyComm",
4417            "type": "uint256",
4418            "internalType": "BN254.ScalarField"
4419          },
4420          {
4421            "name": "amountComm",
4422            "type": "uint256",
4423            "internalType": "BN254.ScalarField"
4424          }
4425        ]
4426      },
4427      {
4428        "name": "proof",
4429        "type": "tuple",
4430        "internalType": "struct IPlonkVerifier.PlonkProof",
4431        "components": [
4432          {
4433            "name": "wire0",
4434            "type": "tuple",
4435            "internalType": "struct BN254.G1Point",
4436            "components": [
4437              {
4438                "name": "x",
4439                "type": "uint256",
4440                "internalType": "BN254.BaseField"
4441              },
4442              {
4443                "name": "y",
4444                "type": "uint256",
4445                "internalType": "BN254.BaseField"
4446              }
4447            ]
4448          },
4449          {
4450            "name": "wire1",
4451            "type": "tuple",
4452            "internalType": "struct BN254.G1Point",
4453            "components": [
4454              {
4455                "name": "x",
4456                "type": "uint256",
4457                "internalType": "BN254.BaseField"
4458              },
4459              {
4460                "name": "y",
4461                "type": "uint256",
4462                "internalType": "BN254.BaseField"
4463              }
4464            ]
4465          },
4466          {
4467            "name": "wire2",
4468            "type": "tuple",
4469            "internalType": "struct BN254.G1Point",
4470            "components": [
4471              {
4472                "name": "x",
4473                "type": "uint256",
4474                "internalType": "BN254.BaseField"
4475              },
4476              {
4477                "name": "y",
4478                "type": "uint256",
4479                "internalType": "BN254.BaseField"
4480              }
4481            ]
4482          },
4483          {
4484            "name": "wire3",
4485            "type": "tuple",
4486            "internalType": "struct BN254.G1Point",
4487            "components": [
4488              {
4489                "name": "x",
4490                "type": "uint256",
4491                "internalType": "BN254.BaseField"
4492              },
4493              {
4494                "name": "y",
4495                "type": "uint256",
4496                "internalType": "BN254.BaseField"
4497              }
4498            ]
4499          },
4500          {
4501            "name": "wire4",
4502            "type": "tuple",
4503            "internalType": "struct BN254.G1Point",
4504            "components": [
4505              {
4506                "name": "x",
4507                "type": "uint256",
4508                "internalType": "BN254.BaseField"
4509              },
4510              {
4511                "name": "y",
4512                "type": "uint256",
4513                "internalType": "BN254.BaseField"
4514              }
4515            ]
4516          },
4517          {
4518            "name": "prodPerm",
4519            "type": "tuple",
4520            "internalType": "struct BN254.G1Point",
4521            "components": [
4522              {
4523                "name": "x",
4524                "type": "uint256",
4525                "internalType": "BN254.BaseField"
4526              },
4527              {
4528                "name": "y",
4529                "type": "uint256",
4530                "internalType": "BN254.BaseField"
4531              }
4532            ]
4533          },
4534          {
4535            "name": "split0",
4536            "type": "tuple",
4537            "internalType": "struct BN254.G1Point",
4538            "components": [
4539              {
4540                "name": "x",
4541                "type": "uint256",
4542                "internalType": "BN254.BaseField"
4543              },
4544              {
4545                "name": "y",
4546                "type": "uint256",
4547                "internalType": "BN254.BaseField"
4548              }
4549            ]
4550          },
4551          {
4552            "name": "split1",
4553            "type": "tuple",
4554            "internalType": "struct BN254.G1Point",
4555            "components": [
4556              {
4557                "name": "x",
4558                "type": "uint256",
4559                "internalType": "BN254.BaseField"
4560              },
4561              {
4562                "name": "y",
4563                "type": "uint256",
4564                "internalType": "BN254.BaseField"
4565              }
4566            ]
4567          },
4568          {
4569            "name": "split2",
4570            "type": "tuple",
4571            "internalType": "struct BN254.G1Point",
4572            "components": [
4573              {
4574                "name": "x",
4575                "type": "uint256",
4576                "internalType": "BN254.BaseField"
4577              },
4578              {
4579                "name": "y",
4580                "type": "uint256",
4581                "internalType": "BN254.BaseField"
4582              }
4583            ]
4584          },
4585          {
4586            "name": "split3",
4587            "type": "tuple",
4588            "internalType": "struct BN254.G1Point",
4589            "components": [
4590              {
4591                "name": "x",
4592                "type": "uint256",
4593                "internalType": "BN254.BaseField"
4594              },
4595              {
4596                "name": "y",
4597                "type": "uint256",
4598                "internalType": "BN254.BaseField"
4599              }
4600            ]
4601          },
4602          {
4603            "name": "split4",
4604            "type": "tuple",
4605            "internalType": "struct BN254.G1Point",
4606            "components": [
4607              {
4608                "name": "x",
4609                "type": "uint256",
4610                "internalType": "BN254.BaseField"
4611              },
4612              {
4613                "name": "y",
4614                "type": "uint256",
4615                "internalType": "BN254.BaseField"
4616              }
4617            ]
4618          },
4619          {
4620            "name": "zeta",
4621            "type": "tuple",
4622            "internalType": "struct BN254.G1Point",
4623            "components": [
4624              {
4625                "name": "x",
4626                "type": "uint256",
4627                "internalType": "BN254.BaseField"
4628              },
4629              {
4630                "name": "y",
4631                "type": "uint256",
4632                "internalType": "BN254.BaseField"
4633              }
4634            ]
4635          },
4636          {
4637            "name": "zetaOmega",
4638            "type": "tuple",
4639            "internalType": "struct BN254.G1Point",
4640            "components": [
4641              {
4642                "name": "x",
4643                "type": "uint256",
4644                "internalType": "BN254.BaseField"
4645              },
4646              {
4647                "name": "y",
4648                "type": "uint256",
4649                "internalType": "BN254.BaseField"
4650              }
4651            ]
4652          },
4653          {
4654            "name": "wireEval0",
4655            "type": "uint256",
4656            "internalType": "BN254.ScalarField"
4657          },
4658          {
4659            "name": "wireEval1",
4660            "type": "uint256",
4661            "internalType": "BN254.ScalarField"
4662          },
4663          {
4664            "name": "wireEval2",
4665            "type": "uint256",
4666            "internalType": "BN254.ScalarField"
4667          },
4668          {
4669            "name": "wireEval3",
4670            "type": "uint256",
4671            "internalType": "BN254.ScalarField"
4672          },
4673          {
4674            "name": "wireEval4",
4675            "type": "uint256",
4676            "internalType": "BN254.ScalarField"
4677          },
4678          {
4679            "name": "sigmaEval0",
4680            "type": "uint256",
4681            "internalType": "BN254.ScalarField"
4682          },
4683          {
4684            "name": "sigmaEval1",
4685            "type": "uint256",
4686            "internalType": "BN254.ScalarField"
4687          },
4688          {
4689            "name": "sigmaEval2",
4690            "type": "uint256",
4691            "internalType": "BN254.ScalarField"
4692          },
4693          {
4694            "name": "sigmaEval3",
4695            "type": "uint256",
4696            "internalType": "BN254.ScalarField"
4697          },
4698          {
4699            "name": "prodPermZetaOmegaEval",
4700            "type": "uint256",
4701            "internalType": "BN254.ScalarField"
4702          }
4703        ]
4704      }
4705    ],
4706    "outputs": [],
4707    "stateMutability": "nonpayable"
4708  },
4709  {
4710    "type": "function",
4711    "name": "owner",
4712    "inputs": [],
4713    "outputs": [
4714      {
4715        "name": "",
4716        "type": "address",
4717        "internalType": "address"
4718      }
4719    ],
4720    "stateMutability": "view"
4721  },
4722  {
4723    "type": "function",
4724    "name": "permissionedProver",
4725    "inputs": [],
4726    "outputs": [
4727      {
4728        "name": "",
4729        "type": "address",
4730        "internalType": "address"
4731      }
4732    ],
4733    "stateMutability": "view"
4734  },
4735  {
4736    "type": "function",
4737    "name": "proxiableUUID",
4738    "inputs": [],
4739    "outputs": [
4740      {
4741        "name": "",
4742        "type": "bytes32",
4743        "internalType": "bytes32"
4744      }
4745    ],
4746    "stateMutability": "view"
4747  },
4748  {
4749    "type": "function",
4750    "name": "renounceOwnership",
4751    "inputs": [],
4752    "outputs": [],
4753    "stateMutability": "nonpayable"
4754  },
4755  {
4756    "type": "function",
4757    "name": "setBlocksPerEpoch",
4758    "inputs": [
4759      {
4760        "name": "newBlocksPerEpoch",
4761        "type": "uint64",
4762        "internalType": "uint64"
4763      }
4764    ],
4765    "outputs": [],
4766    "stateMutability": "nonpayable"
4767  },
4768  {
4769    "type": "function",
4770    "name": "setFinalizedState",
4771    "inputs": [
4772      {
4773        "name": "state",
4774        "type": "tuple",
4775        "internalType": "struct LightClient.LightClientState",
4776        "components": [
4777          {
4778            "name": "viewNum",
4779            "type": "uint64",
4780            "internalType": "uint64"
4781          },
4782          {
4783            "name": "blockHeight",
4784            "type": "uint64",
4785            "internalType": "uint64"
4786          },
4787          {
4788            "name": "blockCommRoot",
4789            "type": "uint256",
4790            "internalType": "BN254.ScalarField"
4791          }
4792        ]
4793      }
4794    ],
4795    "outputs": [],
4796    "stateMutability": "nonpayable"
4797  },
4798  {
4799    "type": "function",
4800    "name": "setHotShotDownSince",
4801    "inputs": [
4802      {
4803        "name": "l1Height",
4804        "type": "uint256",
4805        "internalType": "uint256"
4806      }
4807    ],
4808    "outputs": [],
4809    "stateMutability": "nonpayable"
4810  },
4811  {
4812    "type": "function",
4813    "name": "setHotShotUp",
4814    "inputs": [],
4815    "outputs": [],
4816    "stateMutability": "nonpayable"
4817  },
4818  {
4819    "type": "function",
4820    "name": "setPermissionedProver",
4821    "inputs": [
4822      {
4823        "name": "prover",
4824        "type": "address",
4825        "internalType": "address"
4826      }
4827    ],
4828    "outputs": [],
4829    "stateMutability": "nonpayable"
4830  },
4831  {
4832    "type": "function",
4833    "name": "setStateHistory",
4834    "inputs": [
4835      {
4836        "name": "_stateHistoryCommitments",
4837        "type": "tuple[]",
4838        "internalType": "struct LightClient.StateHistoryCommitment[]",
4839        "components": [
4840          {
4841            "name": "l1BlockHeight",
4842            "type": "uint64",
4843            "internalType": "uint64"
4844          },
4845          {
4846            "name": "l1BlockTimestamp",
4847            "type": "uint64",
4848            "internalType": "uint64"
4849          },
4850          {
4851            "name": "hotShotBlockHeight",
4852            "type": "uint64",
4853            "internalType": "uint64"
4854          },
4855          {
4856            "name": "hotShotBlockCommRoot",
4857            "type": "uint256",
4858            "internalType": "BN254.ScalarField"
4859          }
4860        ]
4861      }
4862    ],
4863    "outputs": [],
4864    "stateMutability": "nonpayable"
4865  },
4866  {
4867    "type": "function",
4868    "name": "setStateHistoryRetentionPeriod",
4869    "inputs": [
4870      {
4871        "name": "historySeconds",
4872        "type": "uint32",
4873        "internalType": "uint32"
4874      }
4875    ],
4876    "outputs": [],
4877    "stateMutability": "nonpayable"
4878  },
4879  {
4880    "type": "function",
4881    "name": "setVotingStakeTableState",
4882    "inputs": [
4883      {
4884        "name": "stake",
4885        "type": "tuple",
4886        "internalType": "struct LightClient.StakeTableState",
4887        "components": [
4888          {
4889            "name": "threshold",
4890            "type": "uint256",
4891            "internalType": "uint256"
4892          },
4893          {
4894            "name": "blsKeyComm",
4895            "type": "uint256",
4896            "internalType": "BN254.ScalarField"
4897          },
4898          {
4899            "name": "schnorrKeyComm",
4900            "type": "uint256",
4901            "internalType": "BN254.ScalarField"
4902          },
4903          {
4904            "name": "amountComm",
4905            "type": "uint256",
4906            "internalType": "BN254.ScalarField"
4907          }
4908        ]
4909      }
4910    ],
4911    "outputs": [],
4912    "stateMutability": "nonpayable"
4913  },
4914  {
4915    "type": "function",
4916    "name": "setstateHistoryRetentionPeriod",
4917    "inputs": [
4918      {
4919        "name": "historySeconds",
4920        "type": "uint32",
4921        "internalType": "uint32"
4922      }
4923    ],
4924    "outputs": [],
4925    "stateMutability": "nonpayable"
4926  },
4927  {
4928    "type": "function",
4929    "name": "stateHistoryCommitments",
4930    "inputs": [
4931      {
4932        "name": "",
4933        "type": "uint256",
4934        "internalType": "uint256"
4935      }
4936    ],
4937    "outputs": [
4938      {
4939        "name": "l1BlockHeight",
4940        "type": "uint64",
4941        "internalType": "uint64"
4942      },
4943      {
4944        "name": "l1BlockTimestamp",
4945        "type": "uint64",
4946        "internalType": "uint64"
4947      },
4948      {
4949        "name": "hotShotBlockHeight",
4950        "type": "uint64",
4951        "internalType": "uint64"
4952      },
4953      {
4954        "name": "hotShotBlockCommRoot",
4955        "type": "uint256",
4956        "internalType": "BN254.ScalarField"
4957      }
4958    ],
4959    "stateMutability": "view"
4960  },
4961  {
4962    "type": "function",
4963    "name": "stateHistoryFirstIndex",
4964    "inputs": [],
4965    "outputs": [
4966      {
4967        "name": "",
4968        "type": "uint64",
4969        "internalType": "uint64"
4970      }
4971    ],
4972    "stateMutability": "view"
4973  },
4974  {
4975    "type": "function",
4976    "name": "stateHistoryRetentionPeriod",
4977    "inputs": [],
4978    "outputs": [
4979      {
4980        "name": "",
4981        "type": "uint32",
4982        "internalType": "uint32"
4983      }
4984    ],
4985    "stateMutability": "view"
4986  },
4987  {
4988    "type": "function",
4989    "name": "transferOwnership",
4990    "inputs": [
4991      {
4992        "name": "newOwner",
4993        "type": "address",
4994        "internalType": "address"
4995      }
4996    ],
4997    "outputs": [],
4998    "stateMutability": "nonpayable"
4999  },
5000  {
5001    "type": "function",
5002    "name": "updateEpochStartBlock",
5003    "inputs": [
5004      {
5005        "name": "newEpochStartBlock",
5006        "type": "uint64",
5007        "internalType": "uint64"
5008      }
5009    ],
5010    "outputs": [],
5011    "stateMutability": "nonpayable"
5012  },
5013  {
5014    "type": "function",
5015    "name": "upgradeToAndCall",
5016    "inputs": [
5017      {
5018        "name": "newImplementation",
5019        "type": "address",
5020        "internalType": "address"
5021      },
5022      {
5023        "name": "data",
5024        "type": "bytes",
5025        "internalType": "bytes"
5026      }
5027    ],
5028    "outputs": [],
5029    "stateMutability": "payable"
5030  },
5031  {
5032    "type": "function",
5033    "name": "votingStakeTableState",
5034    "inputs": [],
5035    "outputs": [
5036      {
5037        "name": "threshold",
5038        "type": "uint256",
5039        "internalType": "uint256"
5040      },
5041      {
5042        "name": "blsKeyComm",
5043        "type": "uint256",
5044        "internalType": "BN254.ScalarField"
5045      },
5046      {
5047        "name": "schnorrKeyComm",
5048        "type": "uint256",
5049        "internalType": "BN254.ScalarField"
5050      },
5051      {
5052        "name": "amountComm",
5053        "type": "uint256",
5054        "internalType": "BN254.ScalarField"
5055      }
5056    ],
5057    "stateMutability": "view"
5058  },
5059  {
5060    "type": "event",
5061    "name": "Initialized",
5062    "inputs": [
5063      {
5064        "name": "version",
5065        "type": "uint64",
5066        "indexed": false,
5067        "internalType": "uint64"
5068      }
5069    ],
5070    "anonymous": false
5071  },
5072  {
5073    "type": "event",
5074    "name": "NewEpoch",
5075    "inputs": [
5076      {
5077        "name": "epoch",
5078        "type": "uint64",
5079        "indexed": false,
5080        "internalType": "uint64"
5081      }
5082    ],
5083    "anonymous": false
5084  },
5085  {
5086    "type": "event",
5087    "name": "NewState",
5088    "inputs": [
5089      {
5090        "name": "viewNum",
5091        "type": "uint64",
5092        "indexed": true,
5093        "internalType": "uint64"
5094      },
5095      {
5096        "name": "blockHeight",
5097        "type": "uint64",
5098        "indexed": true,
5099        "internalType": "uint64"
5100      },
5101      {
5102        "name": "blockCommRoot",
5103        "type": "uint256",
5104        "indexed": false,
5105        "internalType": "BN254.ScalarField"
5106      }
5107    ],
5108    "anonymous": false
5109  },
5110  {
5111    "type": "event",
5112    "name": "OwnershipTransferred",
5113    "inputs": [
5114      {
5115        "name": "previousOwner",
5116        "type": "address",
5117        "indexed": true,
5118        "internalType": "address"
5119      },
5120      {
5121        "name": "newOwner",
5122        "type": "address",
5123        "indexed": true,
5124        "internalType": "address"
5125      }
5126    ],
5127    "anonymous": false
5128  },
5129  {
5130    "type": "event",
5131    "name": "PermissionedProverNotRequired",
5132    "inputs": [],
5133    "anonymous": false
5134  },
5135  {
5136    "type": "event",
5137    "name": "PermissionedProverRequired",
5138    "inputs": [
5139      {
5140        "name": "permissionedProver",
5141        "type": "address",
5142        "indexed": false,
5143        "internalType": "address"
5144      }
5145    ],
5146    "anonymous": false
5147  },
5148  {
5149    "type": "event",
5150    "name": "Upgrade",
5151    "inputs": [
5152      {
5153        "name": "implementation",
5154        "type": "address",
5155        "indexed": false,
5156        "internalType": "address"
5157      }
5158    ],
5159    "anonymous": false
5160  },
5161  {
5162    "type": "event",
5163    "name": "Upgraded",
5164    "inputs": [
5165      {
5166        "name": "implementation",
5167        "type": "address",
5168        "indexed": true,
5169        "internalType": "address"
5170      }
5171    ],
5172    "anonymous": false
5173  },
5174  {
5175    "type": "error",
5176    "name": "AddressEmptyCode",
5177    "inputs": [
5178      {
5179        "name": "target",
5180        "type": "address",
5181        "internalType": "address"
5182      }
5183    ]
5184  },
5185  {
5186    "type": "error",
5187    "name": "DeprecatedApi",
5188    "inputs": []
5189  },
5190  {
5191    "type": "error",
5192    "name": "ERC1967InvalidImplementation",
5193    "inputs": [
5194      {
5195        "name": "implementation",
5196        "type": "address",
5197        "internalType": "address"
5198      }
5199    ]
5200  },
5201  {
5202    "type": "error",
5203    "name": "ERC1967NonPayable",
5204    "inputs": []
5205  },
5206  {
5207    "type": "error",
5208    "name": "FailedInnerCall",
5209    "inputs": []
5210  },
5211  {
5212    "type": "error",
5213    "name": "InsufficientSnapshotHistory",
5214    "inputs": []
5215  },
5216  {
5217    "type": "error",
5218    "name": "InvalidAddress",
5219    "inputs": []
5220  },
5221  {
5222    "type": "error",
5223    "name": "InvalidArgs",
5224    "inputs": []
5225  },
5226  {
5227    "type": "error",
5228    "name": "InvalidHotShotBlockForCommitmentCheck",
5229    "inputs": []
5230  },
5231  {
5232    "type": "error",
5233    "name": "InvalidInitialization",
5234    "inputs": []
5235  },
5236  {
5237    "type": "error",
5238    "name": "InvalidMaxStateHistory",
5239    "inputs": []
5240  },
5241  {
5242    "type": "error",
5243    "name": "InvalidProof",
5244    "inputs": []
5245  },
5246  {
5247    "type": "error",
5248    "name": "MissingEpochRootUpdate",
5249    "inputs": []
5250  },
5251  {
5252    "type": "error",
5253    "name": "NoChangeRequired",
5254    "inputs": []
5255  },
5256  {
5257    "type": "error",
5258    "name": "NotInitializing",
5259    "inputs": []
5260  },
5261  {
5262    "type": "error",
5263    "name": "OutdatedState",
5264    "inputs": []
5265  },
5266  {
5267    "type": "error",
5268    "name": "OwnableInvalidOwner",
5269    "inputs": [
5270      {
5271        "name": "owner",
5272        "type": "address",
5273        "internalType": "address"
5274      }
5275    ]
5276  },
5277  {
5278    "type": "error",
5279    "name": "OwnableUnauthorizedAccount",
5280    "inputs": [
5281      {
5282        "name": "account",
5283        "type": "address",
5284        "internalType": "address"
5285      }
5286    ]
5287  },
5288  {
5289    "type": "error",
5290    "name": "ProverNotPermissioned",
5291    "inputs": []
5292  },
5293  {
5294    "type": "error",
5295    "name": "UUPSUnauthorizedCallContext",
5296    "inputs": []
5297  },
5298  {
5299    "type": "error",
5300    "name": "UUPSUnsupportedProxiableUUID",
5301    "inputs": [
5302      {
5303        "name": "slot",
5304        "type": "bytes32",
5305        "internalType": "bytes32"
5306      }
5307    ]
5308  },
5309  {
5310    "type": "error",
5311    "name": "WrongStakeTableUsed",
5312    "inputs": []
5313  }
5314]
5315```*/
5316#[allow(
5317    non_camel_case_types,
5318    non_snake_case,
5319    clippy::pub_underscore_fields,
5320    clippy::style,
5321    clippy::empty_structs_with_brackets
5322)]
5323pub mod LightClientV2Mock {
5324    use super::*;
5325    use alloy::sol_types as alloy_sol_types;
5326    /// The creation / init bytecode of the contract.
5327    ///
5328    /// ```text
5329    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516138746100f95f395f8181611c6401528181611c8d0152611e0a01526138745ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a20565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a39565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a50565b34801561036f575f5ffd5b5061027761037e366004612c67565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f4b565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c67565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a39565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c67565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c67565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f92565b6111a6565b61027761055e366004612fab565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b50610277610591366004613091565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f13660046130ab565b611273565b348015610601575f5ffd5b506104236115a6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a39565b6115d0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130ef565b6116fb565b3480156106cb575f5ffd5b506102776106da366004612f92565b61176a565b3480156106ea575f5ffd5b506102776106f9366004613117565b6117f3565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd919061316c565b34801561079b575f5ffd5b506102776107aa3660046130ef565b611915565b3480156107ba575f5ffd5b50610423611a79565b3480156107ce575f5ffd5b506102776107dd3660046131a1565b611a9a565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131bb565b611ae1565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a20565b611b14565b3480156108cc575f5ffd5b506102776108db3660046131db565b611b53565b3480156108eb575f5ffd5b5060095461049f565b6108fc611bfe565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f861273f565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611bfe565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d949190910481169281169116176116fb565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132e7565b6110fc919061331a565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b03168361331a565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613347565b600a546001600160401b039182169161119591168461331a565b6001600160401b0316115b92915050565b6111ae611bfe565b6111b78161176a565b50565b6111c2611c59565b6111cb82611cfd565b6111d58282611d3e565b5050565b5f6111e2611dff565b505f5160206138485f395f51905f5290565b6111fc611bfe565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611bfe565b6112605f611e48565b6008546001600160a01b03161515801561129857506008546001600160a01b03163314155b156112b6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ef575060065460208401516001600160401b03600160401b9092048216911611155b1561130d5760405163051c46ef60e01b815260040160405180910390fd5b61131a8360400151611eb8565b6113278260200151611eb8565b6113348260400151611eb8565b6113418260600151611eb8565b5f61134a6115a6565b6020850151600a549192505f9161136a91906001600160401b03166116fb565b600a549091506001600160401b03600160801b9091048116908216106113b5576113978560200151611111565b156113b55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114685760026113df8383613347565b6001600160401b0316106114065760405163080ae8d960e01b815260040160405180910390fd5b6114118260016132e7565b6001600160401b0316816001600160401b031614801561144a575060065461144890600160401b90046001600160401b03166110af565b155b156114685760405163080ae8d960e01b815260040160405180910390fd5b611473858585611f28565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114d257506114d285602001516110af565b1561153c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115208260016132e7565b6040516001600160401b03909116815260200160405180910390a15b61154743428761209f565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6876040015160405161159791815260200190565b60405180910390a35050505050565b600654600a545f916115cb916001600160401b03600160401b909204821691166116fb565b905090565b600980545f918291906115e4600183613366565b815481106115f4576115f4613379565b5f918252602090912060029091020154600160801b90046001600160401b0316841061163357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156116f457846009828154811061166357611663613379565b5f918252602090912060029091020154600160801b90046001600160401b031611156116ec576009818154811061169c5761169c613379565b905f5260205f20906002020160010154600982815481106116bf576116bf613379565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611647565b5050915091565b5f816001600160401b03165f0361171357505f6111a0565b826001600160401b03165f0361172b575060016111a0565b611735828461331a565b6001600160401b03165f036117555761174e828461338d565b90506111a0565b61175f828461338d565b61174e9060016132e7565b611772611bfe565b610e108163ffffffff16108061179157506301e133808163ffffffff16115b806117af575060085463ffffffff600160a01b909104811690821611155b156117cd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118375750825b90505f826001600160401b031660011480156118525750303b155b905081158015611860575080155b1561187e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118a857845460ff60401b1916600160401b1785555b6118b186612288565b6118b9612299565b6118c48989896122a1565b831561190a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061195e575080546001600160401b03808416911610155b1561197c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119c4576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a0d83856116fb565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115cb906001600160401b03600160401b8204811691166116fb565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b743428361209f565b600f545f9060ff16611afc57611af783836123cd565b611b0d565b8160105484611b0b9190613366565b115b9392505050565b611b1c611bfe565b6001600160a01b038116611b4a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b781611e48565b611b5e60095f6129a4565b5f5b81518110156111d5576009828281518110611b7d57611b7d613379565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b60565b33611c307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b41565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cdf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cd35f5160206138485f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d05611bfe565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d98575060408051601f3d908101601f19168201909252611d95918101906133ba565b60015b611dc057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b41565b5f5160206138485f395f51905f528114611df057604051632a87526960e21b815260048101829052602401611b41565b611dfa8383612525565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611b41565b5f611f316109f0565b9050611f3b6129c2565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611fab5750611fab85602001516110af565b15611fdd57602084015160e0820152604084015161010082015260608401516101208201528351610140820152612001565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c79061203c908590859088906004016135b3565b602060405180830381865af4158015612057573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207b91906137d3565b612098576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590612114575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106120df576120df613379565b5f91825260209091206002909102015461210990600160401b90046001600160401b031684613347565b6001600160401b0316115b156121a757600854600980549091600160c01b90046001600160401b031690811061214157612141613379565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612181836137f2565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b61229061257a565b6111b7816125c3565b61126061257a565b82516001600160401b03161515806122c5575060208301516001600160401b031615155b806122d257506020820151155b806122df57506040820151155b806122ec57506060820151155b806122f657508151155b806123085750610e108163ffffffff16105b8061231c57506301e133808163ffffffff16115b1561233a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f90438411806123de575080155b806124285750600854600980549091600160c01b90046001600160401b031690811061240c5761240c613379565b5f9182526020909120600290910201546001600160401b031684105b156124465760405163b0b4387760e01b815260040160405180910390fd5b5f8080612454600185613366565b90505b816124f057600854600160c01b90046001600160401b031681106124f057866009828154811061248957612489613379565b5f9182526020909120600290910201546001600160401b0316116124de5760019150600981815481106124be576124be613379565b5f9182526020909120600290910201546001600160401b031692506124f0565b806124e88161381c565b915050612457565b8161250e5760405163b0b4387760e01b815260040160405180910390fd5b856125198489613366565b11979650505050505050565b61252e826125cb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561257257611dfa828261262e565b6111d56126a0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b1c61257a565b806001600160a01b03163b5f0361260057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b41565b5f5160206138485f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161264a9190613831565b5f60405180830381855af49150503d805f8114612682576040519150601f19603f3d011682016040523d82523d5f602084013e612687565b606091505b50915091506126978583836126bf565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126cf57611af782612716565b81511580156126e657506001600160a01b0384163b155b1561270f57604051639996b31560e01b81526001600160a01b0385166004820152602401611b41565b5092915050565b8051156127265780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161277260405180604001604052805f81526020015f81525090565b815260200161279260405180604001604052805f81526020015f81525090565b81526020016127b260405180604001604052805f81526020015f81525090565b81526020016127d260405180604001604052805f81526020015f81525090565b81526020016127f260405180604001604052805f81526020015f81525090565b815260200161281260405180604001604052805f81526020015f81525090565b815260200161283260405180604001604052805f81526020015f81525090565b815260200161285260405180604001604052805f81526020015f81525090565b815260200161287260405180604001604052805f81526020015f81525090565b815260200161289260405180604001604052805f81526020015f81525090565b81526020016128b260405180604001604052805f81526020015f81525090565b81526020016128d260405180604001604052805f81526020015f81525090565b81526020016128f260405180604001604052805f81526020015f81525090565b815260200161291260405180604001604052805f81526020015f81525090565b815260200161293260405180604001604052805f81526020015f81525090565b815260200161295260405180604001604052805f81526020015f81525090565b815260200161297260405180604001604052805f81526020015f81525090565b815260200161299260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129e1565b604051806101600160405280600b906020820280368337509192915050565b5b80821115612a065780546001600160c01b03191681555f60018201556002016129e2565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a30575f5ffd5b611b0d82612a0a565b5f60208284031215612a49575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a82604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c77575f5ffd5b611b0d82612c51565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612cb757612cb7612c80565b60405290565b604051608081016001600160401b0381118282101715612cb757612cb7612c80565b604051601f8201601f191681016001600160401b0381118282101715612d0757612d07612c80565b604052919050565b5f60608284031215612d1f575f5ffd5b604051606081016001600160401b0381118282101715612d4157612d41612c80565b604052905080612d5083612c51565b8152612d5e60208401612c51565b6020820152604092830135920191909152919050565b5f60408284031215612d84575f5ffd5b604080519081016001600160401b0381118282101715612da657612da6612c80565b604052823581526020928301359281019290925250919050565b5f6104808284031215612dd1575f5ffd5b612dd9612c94565b9050612de58383612d74565b8152612df48360408401612d74565b6020820152612e068360808401612d74565b6040820152612e188360c08401612d74565b6060820152612e2b836101008401612d74565b6080820152612e3e836101408401612d74565b60a0820152612e51836101808401612d74565b60c0820152612e64836101c08401612d74565b60e0820152612e77836102008401612d74565b610100820152612e8b836102408401612d74565b610120820152612e9f836102808401612d74565b610140820152612eb3836102c08401612d74565b610160820152612ec7836103008401612d74565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f5d575f5ffd5b612f678484612d0f565b9150612f768460608501612dc0565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612fa2575f5ffd5b611b0d82612f7f565b5f5f60408385031215612fbc575f5ffd5b612fc583612a0a565b915060208301356001600160401b03811115612fdf575f5ffd5b8301601f81018513612fef575f5ffd5b80356001600160401b0381111561300857613008612c80565b61301b601f8201601f1916602001612cdf565b81815286602083850101111561302f575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561305e575f5ffd5b613066612cbd565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f608082840312156130a1575f5ffd5b611b0d838361304e565b5f5f5f61056084860312156130be575f5ffd5b6130c88585612d0f565b92506130d7856060860161304e565b91506130e68560e08601612dc0565b90509250925092565b5f5f60408385031215613100575f5ffd5b61310983612c51565b9150612f7660208401612c51565b5f5f5f5f610120858703121561312b575f5ffd5b6131358686612d0f565b9350613144866060870161304e565b925061315260e08601612f7f565b91506131616101008601612a0a565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156131b1575f5ffd5b611b0d8383612d0f565b5f5f604083850312156131cc575f5ffd5b50508035926020909101359150565b5f602082840312156131eb575f5ffd5b81356001600160401b03811115613200575f5ffd5b8201601f81018413613210575f5ffd5b80356001600160401b0381111561322957613229612c80565b61323860208260051b01612cdf565b8082825260208201915060208360071b850101925086831115613259575f5ffd5b6020840193505b828410156132c95760808488031215613277575f5ffd5b61327f612cbd565b61328885612c51565b815261329660208601612c51565b60208201526132a760408601612c51565b6040820152606085810135908201528252608090930192602090910190613260565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132d3565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061333257613332613306565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132d3565b818103818111156111a0576111a06132d3565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806133a5576133a5613306565b806001600160401b0384160491505092915050565b5f602082840312156133ca575f5ffd5b5051919050565b805f5b600b8110156133f35781518452602093840193909101906001016133d4565b50505050565b61340e82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135e5604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137bd6105008301856133d1565b6137cb6106608301846133f9565b949350505050565b5f602082840312156137e3575f5ffd5b81518015158114611b0d575f5ffd5b5f6001600160401b0382166001600160401b038103613813576138136132d3565b60010192915050565b5f8161382a5761382a6132d3565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5330    /// ```
5331    #[rustfmt::skip]
5332    #[allow(clippy::all)]
5333    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5334        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[`\x80Qa8ta\0\xF9_9_\x81\x81a\x1Cd\x01R\x81\x81a\x1C\x8D\x01Ra\x1E\n\x01Ra8t_\xF3\xFE`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a* V[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*9V[a\t\xA7V[`@Qa\x02\xCD\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\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*PV[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,gV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/KV[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,gV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*9V[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,gV[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,gV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/\x92V[a\x11\xA6V[a\x02wa\x05^6`\x04a/\xABV[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0\x91V[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\xABV[a\x12sV[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xA6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*9V[a\x15\xD0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xEFV[a\x16\xFBV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/\x92V[a\x17jV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a1\x17V[a\x17\xF3V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\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\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1lV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xEFV[a\x19\x15V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1AyV[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\xA1V[a\x1A\x9AV[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\xBBV[a\x1A\xE1V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a* V[a\x1B\x14V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xDBV[a\x1BSV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\tRW`@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\t\xB6W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\xF8a'?V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` 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[a\x10'a\x1B\xFEV[`\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\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x16\xFBV[`\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\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xE7V[a\x10\xFC\x91\x90a3\x1AV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a3\x1AV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3GV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x1AV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1B\xFEV[a\x11\xB7\x81a\x17jV[PV[a\x11\xC2a\x1CYV[a\x11\xCB\x82a\x1C\xFDV[a\x11\xD5\x82\x82a\x1D>V[PPV[_a\x11\xE2a\x1D\xFFV[P_Q` a8H_9_Q\x90_R\x90V[a\x11\xFCa\x1B\xFEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\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\x12ja\x1B\xFEV[a\x12`_a\x1EHV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\x98WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xB6W`@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\x12\xEFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\rW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\x1A\x83`@\x01Qa\x1E\xB8V[a\x13'\x82` \x01Qa\x1E\xB8V[a\x134\x82`@\x01Qa\x1E\xB8V[a\x13A\x82``\x01Qa\x1E\xB8V[_a\x13Ja\x15\xA6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13j\x91\x90`\x01`\x01`@\x1B\x03\x16a\x16\xFBV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xB5Wa\x13\x97\x85` \x01Qa\x11\x11V[\x15a\x13\xB5W`@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\x14hW`\x02a\x13\xDF\x83\x83a3GV[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x06W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x11\x82`\x01a2\xE7V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14JWP`\x06Ta\x14H\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14hW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14s\x85\x85\x85a\x1F(V[\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\x14\xD2WPa\x14\xD2\x85` \x01Qa\x10\xAFV[\x15a\x15<W\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\x15 \x82`\x01a2\xE7V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15GCB\x87a \x9FV[\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\x15\x97\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xCB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x16\xFBV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xE4`\x01\x83a3fV[\x81T\x81\x10a\x15\xF4Wa\x15\xF4a3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x163W`@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\x16\xF4W\x84`\t\x82\x81T\x81\x10a\x16cWa\x16ca3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xECW`\t\x81\x81T\x81\x10a\x16\x9CWa\x16\x9Ca3yV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xBFWa\x16\xBFa3yV[\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\x16GV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17\x13WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17+WP`\x01a\x11\xA0V[a\x175\x82\x84a3\x1AV[`\x01`\x01`@\x1B\x03\x16_\x03a\x17UWa\x17N\x82\x84a3\x8DV[\x90Pa\x11\xA0V[a\x17_\x82\x84a3\x8DV[a\x17N\x90`\x01a2\xE7V[a\x17ra\x1B\xFEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\x91WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xAFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xCDW`@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\x187WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18RWP0;\x15[\x90P\x81\x15\x80\x15a\x18`WP\x80\x15[\x15a\x18~W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x18\xA8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xB1\x86a\"\x88V[a\x18\xB9a\"\x99V[a\x18\xC4\x89\x89\x89a\"\xA1V[\x83\x15a\x19\nW\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[\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\x19^WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19|W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x19\xC4W`@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\x1A\r\x83\x85a\x16\xFBV[`\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[`\nT_\x90a\x15\xCB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x16\xFBV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a \x9FV[`\x0FT_\x90`\xFF\x16a\x1A\xFCWa\x1A\xF7\x83\x83a#\xCDV[a\x1B\rV[\x81`\x10T\x84a\x1B\x0B\x91\x90a3fV[\x11[\x93\x92PPPV[a\x1B\x1Ca\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BJW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a\x1EHV[a\x1B^`\t_a)\xA4V[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B}Wa\x1B}a3yV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1B`V[3a\x1C0\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BAV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xDFWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xD3_Q` a8H_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x05a\x1B\xFEV[`@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\t\x9CV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x95\x91\x81\x01\x90a3\xBAV[`\x01[a\x1D\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8H_9_Q\x90_R\x81\x14a\x1D\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BAV[a\x1D\xFA\x83\x83a%%V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x11\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x1BAV[_a\x1F1a\t\xF0V[\x90Pa\x1F;a)\xC2V[\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\x1F\xABWPa\x1F\xAB\x85` \x01Qa\x10\xAFV[\x15a\x1F\xDDW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra \x01V[`\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 <\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\xB3V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a WW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a {\x91\x90a7\xD3V[a \x98W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a!\x14WP`\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 \xDFWa \xDFa3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta!\t\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3GV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a!\xA7W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a!AWa!Aa3yV[_\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!\x81\x83a7\xF2V[\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\"\x90a%zV[a\x11\xB7\x81a%\xC3V[a\x12`a%zV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\"\xC5WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\xD2WP` \x82\x01Q\x15[\x80a\"\xDFWP`@\x82\x01Q\x15[\x80a\"\xECWP``\x82\x01Q\x15[\x80a\"\xF6WP\x81Q\x15[\x80a#\x08WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a#\x1CWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a#:W`@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[`\tT_\x90C\x84\x11\x80a#\xDEWP\x80\x15[\x80a$(WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a$\x0CWa$\x0Ca3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a$FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a$T`\x01\x85a3fV[\x90P[\x81a$\xF0W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$\xF0W\x86`\t\x82\x81T\x81\x10a$\x89Wa$\x89a3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$\xDEW`\x01\x91P`\t\x81\x81T\x81\x10a$\xBEWa$\xBEa3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$\xF0V[\x80a$\xE8\x81a8\x1CV[\x91PPa$WV[\x81a%\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a%\x19\x84\x89a3fV[\x11\x97\x96PPPPPPPV[a%.\x82a%\xCBV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a%rWa\x1D\xFA\x82\x82a&.V[a\x11\xD5a&\xA0V[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\x1Ca%zV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a&\0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8H_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa&J\x91\x90a81V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&\x82W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&\x87V[``\x91P[P\x91P\x91Pa&\x97\x85\x83\x83a&\xBFV[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xCFWa\x1A\xF7\x82a'\x16V[\x81Q\x15\x80\x15a&\xE6WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a'\x0FW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1BAV[P\x92\x91PPV[\x80Q\x15a'&W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a'r`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(R`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(r`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)R`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)r`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xE1V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a*\x06W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xE2V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*0W__\xFD[a\x1B\r\x82a*\nV[_` \x82\x84\x03\x12\x15a*IW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*\x82`@\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\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,wW__\xFD[a\x1B\r\x82a,QV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB7Wa,\xB7a,\x80V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB7Wa,\xB7a,\x80V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x07Wa-\x07a,\x80V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x1FW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-AWa-Aa,\x80V[`@R\x90P\x80a-P\x83a,QV[\x81Ra-^` \x84\x01a,QV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-\x84W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xA6Wa-\xA6a,\x80V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xD1W__\xFD[a-\xD9a,\x94V[\x90Pa-\xE5\x83\x83a-tV[\x81Ra-\xF4\x83`@\x84\x01a-tV[` \x82\x01Ra.\x06\x83`\x80\x84\x01a-tV[`@\x82\x01Ra.\x18\x83`\xC0\x84\x01a-tV[``\x82\x01Ra.+\x83a\x01\0\x84\x01a-tV[`\x80\x82\x01Ra.>\x83a\x01@\x84\x01a-tV[`\xA0\x82\x01Ra.Q\x83a\x01\x80\x84\x01a-tV[`\xC0\x82\x01Ra.d\x83a\x01\xC0\x84\x01a-tV[`\xE0\x82\x01Ra.w\x83a\x02\0\x84\x01a-tV[a\x01\0\x82\x01Ra.\x8B\x83a\x02@\x84\x01a-tV[a\x01 \x82\x01Ra.\x9F\x83a\x02\x80\x84\x01a-tV[a\x01@\x82\x01Ra.\xB3\x83a\x02\xC0\x84\x01a-tV[a\x01`\x82\x01Ra.\xC7\x83a\x03\0\x84\x01a-tV[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/]W__\xFD[a/g\x84\x84a-\x0FV[\x91Pa/v\x84``\x85\x01a-\xC0V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\xA2W__\xFD[a\x1B\r\x82a/\x7FV[__`@\x83\x85\x03\x12\x15a/\xBCW__\xFD[a/\xC5\x83a*\nV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xDFW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xEFW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x08Wa0\x08a,\x80V[a0\x1B`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xDFV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0/W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0^W__\xFD[a0fa,\xBDV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0\xA1W__\xFD[a\x1B\r\x83\x83a0NV[___a\x05`\x84\x86\x03\x12\x15a0\xBEW__\xFD[a0\xC8\x85\x85a-\x0FV[\x92Pa0\xD7\x85``\x86\x01a0NV[\x91Pa0\xE6\x85`\xE0\x86\x01a-\xC0V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a1\0W__\xFD[a1\t\x83a,QV[\x91Pa/v` \x84\x01a,QV[____a\x01 \x85\x87\x03\x12\x15a1+W__\xFD[a15\x86\x86a-\x0FV[\x93Pa1D\x86``\x87\x01a0NV[\x92Pa1R`\xE0\x86\x01a/\x7FV[\x91Pa1aa\x01\0\x86\x01a*\nV[\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[_``\x82\x84\x03\x12\x15a1\xB1W__\xFD[a\x1B\r\x83\x83a-\x0FV[__`@\x83\x85\x03\x12\x15a1\xCCW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xEBW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\0W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a2\x10W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2)Wa2)a,\x80V[a28` \x82`\x05\x1B\x01a,\xDFV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2YW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xC9W`\x80\x84\x88\x03\x12\x15a2wW__\xFD[a2\x7Fa,\xBDV[a2\x88\x85a,QV[\x81Ra2\x96` \x86\x01a,QV[` \x82\x01Ra2\xA7`@\x86\x01a,QV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2`V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xD3V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a32Wa32a3\x06V[\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\x11\xA0Wa\x11\xA0a2\xD3V[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xD3V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\xA5Wa3\xA5a3\x06V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xCAW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xF3W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xD4V[PPPPV[a4\x0E\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\x01Qa5\xE5`@\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\x01Ra7\xBDa\x05\0\x83\x01\x85a3\xD1V[a7\xCBa\x06`\x83\x01\x84a3\xF9V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xE3W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B\rW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a8\x13Wa8\x13a2\xD3V[`\x01\x01\x92\x91PPV[_\x81a8*Wa8*a2\xD3V[P_\x19\x01\x90V[_\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\x1C\0\n",
5335    );
5336    /// The runtime bytecode of the contract, as deployed on the network.
5337    ///
5338    /// ```text
5339    ///0x608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a20565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a39565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a50565b34801561036f575f5ffd5b5061027761037e366004612c67565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f4b565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c67565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a39565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c67565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c67565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f92565b6111a6565b61027761055e366004612fab565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b50610277610591366004613091565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f13660046130ab565b611273565b348015610601575f5ffd5b506104236115a6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a39565b6115d0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130ef565b6116fb565b3480156106cb575f5ffd5b506102776106da366004612f92565b61176a565b3480156106ea575f5ffd5b506102776106f9366004613117565b6117f3565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd919061316c565b34801561079b575f5ffd5b506102776107aa3660046130ef565b611915565b3480156107ba575f5ffd5b50610423611a79565b3480156107ce575f5ffd5b506102776107dd3660046131a1565b611a9a565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131bb565b611ae1565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a20565b611b14565b3480156108cc575f5ffd5b506102776108db3660046131db565b611b53565b3480156108eb575f5ffd5b5060095461049f565b6108fc611bfe565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f861273f565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611bfe565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d949190910481169281169116176116fb565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132e7565b6110fc919061331a565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b03168361331a565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613347565b600a546001600160401b039182169161119591168461331a565b6001600160401b0316115b92915050565b6111ae611bfe565b6111b78161176a565b50565b6111c2611c59565b6111cb82611cfd565b6111d58282611d3e565b5050565b5f6111e2611dff565b505f5160206138485f395f51905f5290565b6111fc611bfe565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611bfe565b6112605f611e48565b6008546001600160a01b03161515801561129857506008546001600160a01b03163314155b156112b6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ef575060065460208401516001600160401b03600160401b9092048216911611155b1561130d5760405163051c46ef60e01b815260040160405180910390fd5b61131a8360400151611eb8565b6113278260200151611eb8565b6113348260400151611eb8565b6113418260600151611eb8565b5f61134a6115a6565b6020850151600a549192505f9161136a91906001600160401b03166116fb565b600a549091506001600160401b03600160801b9091048116908216106113b5576113978560200151611111565b156113b55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114685760026113df8383613347565b6001600160401b0316106114065760405163080ae8d960e01b815260040160405180910390fd5b6114118260016132e7565b6001600160401b0316816001600160401b031614801561144a575060065461144890600160401b90046001600160401b03166110af565b155b156114685760405163080ae8d960e01b815260040160405180910390fd5b611473858585611f28565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114d257506114d285602001516110af565b1561153c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115208260016132e7565b6040516001600160401b03909116815260200160405180910390a15b61154743428761209f565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6876040015160405161159791815260200190565b60405180910390a35050505050565b600654600a545f916115cb916001600160401b03600160401b909204821691166116fb565b905090565b600980545f918291906115e4600183613366565b815481106115f4576115f4613379565b5f918252602090912060029091020154600160801b90046001600160401b0316841061163357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156116f457846009828154811061166357611663613379565b5f918252602090912060029091020154600160801b90046001600160401b031611156116ec576009818154811061169c5761169c613379565b905f5260205f20906002020160010154600982815481106116bf576116bf613379565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611647565b5050915091565b5f816001600160401b03165f0361171357505f6111a0565b826001600160401b03165f0361172b575060016111a0565b611735828461331a565b6001600160401b03165f036117555761174e828461338d565b90506111a0565b61175f828461338d565b61174e9060016132e7565b611772611bfe565b610e108163ffffffff16108061179157506301e133808163ffffffff16115b806117af575060085463ffffffff600160a01b909104811690821611155b156117cd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118375750825b90505f826001600160401b031660011480156118525750303b155b905081158015611860575080155b1561187e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118a857845460ff60401b1916600160401b1785555b6118b186612288565b6118b9612299565b6118c48989896122a1565b831561190a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061195e575080546001600160401b03808416911610155b1561197c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119c4576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a0d83856116fb565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115cb906001600160401b03600160401b8204811691166116fb565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b743428361209f565b600f545f9060ff16611afc57611af783836123cd565b611b0d565b8160105484611b0b9190613366565b115b9392505050565b611b1c611bfe565b6001600160a01b038116611b4a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b781611e48565b611b5e60095f6129a4565b5f5b81518110156111d5576009828281518110611b7d57611b7d613379565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b60565b33611c307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b41565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cdf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cd35f5160206138485f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d05611bfe565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d98575060408051601f3d908101601f19168201909252611d95918101906133ba565b60015b611dc057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b41565b5f5160206138485f395f51905f528114611df057604051632a87526960e21b815260048101829052602401611b41565b611dfa8383612525565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611b41565b5f611f316109f0565b9050611f3b6129c2565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611fab5750611fab85602001516110af565b15611fdd57602084015160e0820152604084015161010082015260608401516101208201528351610140820152612001565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c79061203c908590859088906004016135b3565b602060405180830381865af4158015612057573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207b91906137d3565b612098576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590612114575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106120df576120df613379565b5f91825260209091206002909102015461210990600160401b90046001600160401b031684613347565b6001600160401b0316115b156121a757600854600980549091600160c01b90046001600160401b031690811061214157612141613379565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612181836137f2565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b61229061257a565b6111b7816125c3565b61126061257a565b82516001600160401b03161515806122c5575060208301516001600160401b031615155b806122d257506020820151155b806122df57506040820151155b806122ec57506060820151155b806122f657508151155b806123085750610e108163ffffffff16105b8061231c57506301e133808163ffffffff16115b1561233a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f90438411806123de575080155b806124285750600854600980549091600160c01b90046001600160401b031690811061240c5761240c613379565b5f9182526020909120600290910201546001600160401b031684105b156124465760405163b0b4387760e01b815260040160405180910390fd5b5f8080612454600185613366565b90505b816124f057600854600160c01b90046001600160401b031681106124f057866009828154811061248957612489613379565b5f9182526020909120600290910201546001600160401b0316116124de5760019150600981815481106124be576124be613379565b5f9182526020909120600290910201546001600160401b031692506124f0565b806124e88161381c565b915050612457565b8161250e5760405163b0b4387760e01b815260040160405180910390fd5b856125198489613366565b11979650505050505050565b61252e826125cb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561257257611dfa828261262e565b6111d56126a0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b1c61257a565b806001600160a01b03163b5f0361260057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b41565b5f5160206138485f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161264a9190613831565b5f60405180830381855af49150503d805f8114612682576040519150601f19603f3d011682016040523d82523d5f602084013e612687565b606091505b50915091506126978583836126bf565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126cf57611af782612716565b81511580156126e657506001600160a01b0384163b155b1561270f57604051639996b31560e01b81526001600160a01b0385166004820152602401611b41565b5092915050565b8051156127265780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161277260405180604001604052805f81526020015f81525090565b815260200161279260405180604001604052805f81526020015f81525090565b81526020016127b260405180604001604052805f81526020015f81525090565b81526020016127d260405180604001604052805f81526020015f81525090565b81526020016127f260405180604001604052805f81526020015f81525090565b815260200161281260405180604001604052805f81526020015f81525090565b815260200161283260405180604001604052805f81526020015f81525090565b815260200161285260405180604001604052805f81526020015f81525090565b815260200161287260405180604001604052805f81526020015f81525090565b815260200161289260405180604001604052805f81526020015f81525090565b81526020016128b260405180604001604052805f81526020015f81525090565b81526020016128d260405180604001604052805f81526020015f81525090565b81526020016128f260405180604001604052805f81526020015f81525090565b815260200161291260405180604001604052805f81526020015f81525090565b815260200161293260405180604001604052805f81526020015f81525090565b815260200161295260405180604001604052805f81526020015f81525090565b815260200161297260405180604001604052805f81526020015f81525090565b815260200161299260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129e1565b604051806101600160405280600b906020820280368337509192915050565b5b80821115612a065780546001600160c01b03191681555f60018201556002016129e2565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a30575f5ffd5b611b0d82612a0a565b5f60208284031215612a49575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a82604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c77575f5ffd5b611b0d82612c51565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612cb757612cb7612c80565b60405290565b604051608081016001600160401b0381118282101715612cb757612cb7612c80565b604051601f8201601f191681016001600160401b0381118282101715612d0757612d07612c80565b604052919050565b5f60608284031215612d1f575f5ffd5b604051606081016001600160401b0381118282101715612d4157612d41612c80565b604052905080612d5083612c51565b8152612d5e60208401612c51565b6020820152604092830135920191909152919050565b5f60408284031215612d84575f5ffd5b604080519081016001600160401b0381118282101715612da657612da6612c80565b604052823581526020928301359281019290925250919050565b5f6104808284031215612dd1575f5ffd5b612dd9612c94565b9050612de58383612d74565b8152612df48360408401612d74565b6020820152612e068360808401612d74565b6040820152612e188360c08401612d74565b6060820152612e2b836101008401612d74565b6080820152612e3e836101408401612d74565b60a0820152612e51836101808401612d74565b60c0820152612e64836101c08401612d74565b60e0820152612e77836102008401612d74565b610100820152612e8b836102408401612d74565b610120820152612e9f836102808401612d74565b610140820152612eb3836102c08401612d74565b610160820152612ec7836103008401612d74565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f5d575f5ffd5b612f678484612d0f565b9150612f768460608501612dc0565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612fa2575f5ffd5b611b0d82612f7f565b5f5f60408385031215612fbc575f5ffd5b612fc583612a0a565b915060208301356001600160401b03811115612fdf575f5ffd5b8301601f81018513612fef575f5ffd5b80356001600160401b0381111561300857613008612c80565b61301b601f8201601f1916602001612cdf565b81815286602083850101111561302f575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561305e575f5ffd5b613066612cbd565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f608082840312156130a1575f5ffd5b611b0d838361304e565b5f5f5f61056084860312156130be575f5ffd5b6130c88585612d0f565b92506130d7856060860161304e565b91506130e68560e08601612dc0565b90509250925092565b5f5f60408385031215613100575f5ffd5b61310983612c51565b9150612f7660208401612c51565b5f5f5f5f610120858703121561312b575f5ffd5b6131358686612d0f565b9350613144866060870161304e565b925061315260e08601612f7f565b91506131616101008601612a0a565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156131b1575f5ffd5b611b0d8383612d0f565b5f5f604083850312156131cc575f5ffd5b50508035926020909101359150565b5f602082840312156131eb575f5ffd5b81356001600160401b03811115613200575f5ffd5b8201601f81018413613210575f5ffd5b80356001600160401b0381111561322957613229612c80565b61323860208260051b01612cdf565b8082825260208201915060208360071b850101925086831115613259575f5ffd5b6020840193505b828410156132c95760808488031215613277575f5ffd5b61327f612cbd565b61328885612c51565b815261329660208601612c51565b60208201526132a760408601612c51565b6040820152606085810135908201528252608090930192602090910190613260565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132d3565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061333257613332613306565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132d3565b818103818111156111a0576111a06132d3565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806133a5576133a5613306565b806001600160401b0384160491505092915050565b5f602082840312156133ca575f5ffd5b5051919050565b805f5b600b8110156133f35781518452602093840193909101906001016133d4565b50505050565b61340e82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135e5604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137bd6105008301856133d1565b6137cb6106608301846133f9565b949350505050565b5f602082840312156137e3575f5ffd5b81518015158114611b0d575f5ffd5b5f6001600160401b0382166001600160401b038103613813576138136132d3565b60010192915050565b5f8161382a5761382a6132d3565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5340    /// ```
5341    #[rustfmt::skip]
5342    #[allow(clippy::all)]
5343    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5344        b"`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a* V[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*9V[a\t\xA7V[`@Qa\x02\xCD\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\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*PV[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,gV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/KV[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,gV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*9V[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,gV[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,gV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/\x92V[a\x11\xA6V[a\x02wa\x05^6`\x04a/\xABV[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0\x91V[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\xABV[a\x12sV[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xA6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*9V[a\x15\xD0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xEFV[a\x16\xFBV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/\x92V[a\x17jV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a1\x17V[a\x17\xF3V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\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\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1lV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xEFV[a\x19\x15V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1AyV[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\xA1V[a\x1A\x9AV[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\xBBV[a\x1A\xE1V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a* V[a\x1B\x14V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xDBV[a\x1BSV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\tRW`@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\t\xB6W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\xF8a'?V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` 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[a\x10'a\x1B\xFEV[`\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\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x16\xFBV[`\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\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xE7V[a\x10\xFC\x91\x90a3\x1AV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a3\x1AV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3GV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x1AV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1B\xFEV[a\x11\xB7\x81a\x17jV[PV[a\x11\xC2a\x1CYV[a\x11\xCB\x82a\x1C\xFDV[a\x11\xD5\x82\x82a\x1D>V[PPV[_a\x11\xE2a\x1D\xFFV[P_Q` a8H_9_Q\x90_R\x90V[a\x11\xFCa\x1B\xFEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\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\x12ja\x1B\xFEV[a\x12`_a\x1EHV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\x98WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xB6W`@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\x12\xEFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\rW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\x1A\x83`@\x01Qa\x1E\xB8V[a\x13'\x82` \x01Qa\x1E\xB8V[a\x134\x82`@\x01Qa\x1E\xB8V[a\x13A\x82``\x01Qa\x1E\xB8V[_a\x13Ja\x15\xA6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13j\x91\x90`\x01`\x01`@\x1B\x03\x16a\x16\xFBV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xB5Wa\x13\x97\x85` \x01Qa\x11\x11V[\x15a\x13\xB5W`@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\x14hW`\x02a\x13\xDF\x83\x83a3GV[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x06W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x11\x82`\x01a2\xE7V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14JWP`\x06Ta\x14H\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14hW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14s\x85\x85\x85a\x1F(V[\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\x14\xD2WPa\x14\xD2\x85` \x01Qa\x10\xAFV[\x15a\x15<W\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\x15 \x82`\x01a2\xE7V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15GCB\x87a \x9FV[\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\x15\x97\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xCB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x16\xFBV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xE4`\x01\x83a3fV[\x81T\x81\x10a\x15\xF4Wa\x15\xF4a3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x163W`@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\x16\xF4W\x84`\t\x82\x81T\x81\x10a\x16cWa\x16ca3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xECW`\t\x81\x81T\x81\x10a\x16\x9CWa\x16\x9Ca3yV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xBFWa\x16\xBFa3yV[\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\x16GV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17\x13WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17+WP`\x01a\x11\xA0V[a\x175\x82\x84a3\x1AV[`\x01`\x01`@\x1B\x03\x16_\x03a\x17UWa\x17N\x82\x84a3\x8DV[\x90Pa\x11\xA0V[a\x17_\x82\x84a3\x8DV[a\x17N\x90`\x01a2\xE7V[a\x17ra\x1B\xFEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\x91WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xAFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xCDW`@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\x187WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18RWP0;\x15[\x90P\x81\x15\x80\x15a\x18`WP\x80\x15[\x15a\x18~W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x18\xA8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xB1\x86a\"\x88V[a\x18\xB9a\"\x99V[a\x18\xC4\x89\x89\x89a\"\xA1V[\x83\x15a\x19\nW\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[\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\x19^WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19|W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x19\xC4W`@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\x1A\r\x83\x85a\x16\xFBV[`\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[`\nT_\x90a\x15\xCB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x16\xFBV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a \x9FV[`\x0FT_\x90`\xFF\x16a\x1A\xFCWa\x1A\xF7\x83\x83a#\xCDV[a\x1B\rV[\x81`\x10T\x84a\x1B\x0B\x91\x90a3fV[\x11[\x93\x92PPPV[a\x1B\x1Ca\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BJW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a\x1EHV[a\x1B^`\t_a)\xA4V[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B}Wa\x1B}a3yV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1B`V[3a\x1C0\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BAV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xDFWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xD3_Q` a8H_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x05a\x1B\xFEV[`@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\t\x9CV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x95\x91\x81\x01\x90a3\xBAV[`\x01[a\x1D\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8H_9_Q\x90_R\x81\x14a\x1D\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BAV[a\x1D\xFA\x83\x83a%%V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x11\xD5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x1BAV[_a\x1F1a\t\xF0V[\x90Pa\x1F;a)\xC2V[\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\x1F\xABWPa\x1F\xAB\x85` \x01Qa\x10\xAFV[\x15a\x1F\xDDW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra \x01V[`\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 <\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\xB3V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a WW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a {\x91\x90a7\xD3V[a \x98W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a!\x14WP`\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 \xDFWa \xDFa3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta!\t\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3GV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a!\xA7W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a!AWa!Aa3yV[_\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!\x81\x83a7\xF2V[\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\"\x90a%zV[a\x11\xB7\x81a%\xC3V[a\x12`a%zV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\"\xC5WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\xD2WP` \x82\x01Q\x15[\x80a\"\xDFWP`@\x82\x01Q\x15[\x80a\"\xECWP``\x82\x01Q\x15[\x80a\"\xF6WP\x81Q\x15[\x80a#\x08WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a#\x1CWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a#:W`@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[`\tT_\x90C\x84\x11\x80a#\xDEWP\x80\x15[\x80a$(WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a$\x0CWa$\x0Ca3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a$FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a$T`\x01\x85a3fV[\x90P[\x81a$\xF0W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$\xF0W\x86`\t\x82\x81T\x81\x10a$\x89Wa$\x89a3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$\xDEW`\x01\x91P`\t\x81\x81T\x81\x10a$\xBEWa$\xBEa3yV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$\xF0V[\x80a$\xE8\x81a8\x1CV[\x91PPa$WV[\x81a%\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a%\x19\x84\x89a3fV[\x11\x97\x96PPPPPPPV[a%.\x82a%\xCBV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a%rWa\x1D\xFA\x82\x82a&.V[a\x11\xD5a&\xA0V[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\x1Ca%zV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a&\0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8H_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa&J\x91\x90a81V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&\x82W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&\x87V[``\x91P[P\x91P\x91Pa&\x97\x85\x83\x83a&\xBFV[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xCFWa\x1A\xF7\x82a'\x16V[\x81Q\x15\x80\x15a&\xE6WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a'\x0FW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1BAV[P\x92\x91PPV[\x80Q\x15a'&W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a'r`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(R`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(r`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)R`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)r`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xE1V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a*\x06W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xE2V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*0W__\xFD[a\x1B\r\x82a*\nV[_` \x82\x84\x03\x12\x15a*IW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*\x82`@\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\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,wW__\xFD[a\x1B\r\x82a,QV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB7Wa,\xB7a,\x80V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xB7Wa,\xB7a,\x80V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x07Wa-\x07a,\x80V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x1FW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-AWa-Aa,\x80V[`@R\x90P\x80a-P\x83a,QV[\x81Ra-^` \x84\x01a,QV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-\x84W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xA6Wa-\xA6a,\x80V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xD1W__\xFD[a-\xD9a,\x94V[\x90Pa-\xE5\x83\x83a-tV[\x81Ra-\xF4\x83`@\x84\x01a-tV[` \x82\x01Ra.\x06\x83`\x80\x84\x01a-tV[`@\x82\x01Ra.\x18\x83`\xC0\x84\x01a-tV[``\x82\x01Ra.+\x83a\x01\0\x84\x01a-tV[`\x80\x82\x01Ra.>\x83a\x01@\x84\x01a-tV[`\xA0\x82\x01Ra.Q\x83a\x01\x80\x84\x01a-tV[`\xC0\x82\x01Ra.d\x83a\x01\xC0\x84\x01a-tV[`\xE0\x82\x01Ra.w\x83a\x02\0\x84\x01a-tV[a\x01\0\x82\x01Ra.\x8B\x83a\x02@\x84\x01a-tV[a\x01 \x82\x01Ra.\x9F\x83a\x02\x80\x84\x01a-tV[a\x01@\x82\x01Ra.\xB3\x83a\x02\xC0\x84\x01a-tV[a\x01`\x82\x01Ra.\xC7\x83a\x03\0\x84\x01a-tV[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/]W__\xFD[a/g\x84\x84a-\x0FV[\x91Pa/v\x84``\x85\x01a-\xC0V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\xA2W__\xFD[a\x1B\r\x82a/\x7FV[__`@\x83\x85\x03\x12\x15a/\xBCW__\xFD[a/\xC5\x83a*\nV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xDFW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xEFW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x08Wa0\x08a,\x80V[a0\x1B`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xDFV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0/W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0^W__\xFD[a0fa,\xBDV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0\xA1W__\xFD[a\x1B\r\x83\x83a0NV[___a\x05`\x84\x86\x03\x12\x15a0\xBEW__\xFD[a0\xC8\x85\x85a-\x0FV[\x92Pa0\xD7\x85``\x86\x01a0NV[\x91Pa0\xE6\x85`\xE0\x86\x01a-\xC0V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a1\0W__\xFD[a1\t\x83a,QV[\x91Pa/v` \x84\x01a,QV[____a\x01 \x85\x87\x03\x12\x15a1+W__\xFD[a15\x86\x86a-\x0FV[\x93Pa1D\x86``\x87\x01a0NV[\x92Pa1R`\xE0\x86\x01a/\x7FV[\x91Pa1aa\x01\0\x86\x01a*\nV[\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[_``\x82\x84\x03\x12\x15a1\xB1W__\xFD[a\x1B\r\x83\x83a-\x0FV[__`@\x83\x85\x03\x12\x15a1\xCCW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xEBW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\0W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a2\x10W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2)Wa2)a,\x80V[a28` \x82`\x05\x1B\x01a,\xDFV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2YW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xC9W`\x80\x84\x88\x03\x12\x15a2wW__\xFD[a2\x7Fa,\xBDV[a2\x88\x85a,QV[\x81Ra2\x96` \x86\x01a,QV[` \x82\x01Ra2\xA7`@\x86\x01a,QV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2`V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xD3V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a32Wa32a3\x06V[\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\x11\xA0Wa\x11\xA0a2\xD3V[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xD3V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\xA5Wa3\xA5a3\x06V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xCAW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xF3W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xD4V[PPPPV[a4\x0E\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\x01Qa5\xE5`@\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\x01Ra7\xBDa\x05\0\x83\x01\x85a3\xD1V[a7\xCBa\x06`\x83\x01\x84a3\xF9V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xE3W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B\rW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a8\x13Wa8\x13a2\xD3V[`\x01\x01\x92\x91PPV[_\x81a8*Wa8*a2\xD3V[P_\x19\x01\x90V[_\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\x1C\0\n",
5345    );
5346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5347    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5348```solidity
5349error AddressEmptyCode(address target);
5350```*/
5351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5352    #[derive(Clone)]
5353    pub struct AddressEmptyCode {
5354        #[allow(missing_docs)]
5355        pub target: alloy::sol_types::private::Address,
5356    }
5357    #[allow(
5358        non_camel_case_types,
5359        non_snake_case,
5360        clippy::pub_underscore_fields,
5361        clippy::style
5362    )]
5363    const _: () = {
5364        use alloy::sol_types as alloy_sol_types;
5365        #[doc(hidden)]
5366        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5367        #[doc(hidden)]
5368        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5369        #[cfg(test)]
5370        #[allow(dead_code, unreachable_patterns)]
5371        fn _type_assertion(
5372            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5373        ) {
5374            match _t {
5375                alloy_sol_types::private::AssertTypeEq::<
5376                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5377                >(_) => {}
5378            }
5379        }
5380        #[automatically_derived]
5381        #[doc(hidden)]
5382        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5383            fn from(value: AddressEmptyCode) -> Self {
5384                (value.target,)
5385            }
5386        }
5387        #[automatically_derived]
5388        #[doc(hidden)]
5389        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5390            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5391                Self { target: tuple.0 }
5392            }
5393        }
5394        #[automatically_derived]
5395        impl alloy_sol_types::SolError for AddressEmptyCode {
5396            type Parameters<'a> = UnderlyingSolTuple<'a>;
5397            type Token<'a> = <Self::Parameters<
5398                'a,
5399            > as alloy_sol_types::SolType>::Token<'a>;
5400            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5401            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5402            #[inline]
5403            fn new<'a>(
5404                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5405            ) -> Self {
5406                tuple.into()
5407            }
5408            #[inline]
5409            fn tokenize(&self) -> Self::Token<'_> {
5410                (
5411                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5412                        &self.target,
5413                    ),
5414                )
5415            }
5416        }
5417    };
5418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5419    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5420```solidity
5421error DeprecatedApi();
5422```*/
5423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5424    #[derive(Clone)]
5425    pub struct DeprecatedApi {}
5426    #[allow(
5427        non_camel_case_types,
5428        non_snake_case,
5429        clippy::pub_underscore_fields,
5430        clippy::style
5431    )]
5432    const _: () = {
5433        use alloy::sol_types as alloy_sol_types;
5434        #[doc(hidden)]
5435        type UnderlyingSolTuple<'a> = ();
5436        #[doc(hidden)]
5437        type UnderlyingRustTuple<'a> = ();
5438        #[cfg(test)]
5439        #[allow(dead_code, unreachable_patterns)]
5440        fn _type_assertion(
5441            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5442        ) {
5443            match _t {
5444                alloy_sol_types::private::AssertTypeEq::<
5445                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5446                >(_) => {}
5447            }
5448        }
5449        #[automatically_derived]
5450        #[doc(hidden)]
5451        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5452            fn from(value: DeprecatedApi) -> Self {
5453                ()
5454            }
5455        }
5456        #[automatically_derived]
5457        #[doc(hidden)]
5458        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5459            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5460                Self {}
5461            }
5462        }
5463        #[automatically_derived]
5464        impl alloy_sol_types::SolError for DeprecatedApi {
5465            type Parameters<'a> = UnderlyingSolTuple<'a>;
5466            type Token<'a> = <Self::Parameters<
5467                'a,
5468            > as alloy_sol_types::SolType>::Token<'a>;
5469            const SIGNATURE: &'static str = "DeprecatedApi()";
5470            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5471            #[inline]
5472            fn new<'a>(
5473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5474            ) -> Self {
5475                tuple.into()
5476            }
5477            #[inline]
5478            fn tokenize(&self) -> Self::Token<'_> {
5479                ()
5480            }
5481        }
5482    };
5483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5484    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5485```solidity
5486error ERC1967InvalidImplementation(address implementation);
5487```*/
5488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5489    #[derive(Clone)]
5490    pub struct ERC1967InvalidImplementation {
5491        #[allow(missing_docs)]
5492        pub implementation: alloy::sol_types::private::Address,
5493    }
5494    #[allow(
5495        non_camel_case_types,
5496        non_snake_case,
5497        clippy::pub_underscore_fields,
5498        clippy::style
5499    )]
5500    const _: () = {
5501        use alloy::sol_types as alloy_sol_types;
5502        #[doc(hidden)]
5503        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5504        #[doc(hidden)]
5505        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5506        #[cfg(test)]
5507        #[allow(dead_code, unreachable_patterns)]
5508        fn _type_assertion(
5509            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5510        ) {
5511            match _t {
5512                alloy_sol_types::private::AssertTypeEq::<
5513                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5514                >(_) => {}
5515            }
5516        }
5517        #[automatically_derived]
5518        #[doc(hidden)]
5519        impl ::core::convert::From<ERC1967InvalidImplementation>
5520        for UnderlyingRustTuple<'_> {
5521            fn from(value: ERC1967InvalidImplementation) -> Self {
5522                (value.implementation,)
5523            }
5524        }
5525        #[automatically_derived]
5526        #[doc(hidden)]
5527        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5528        for ERC1967InvalidImplementation {
5529            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5530                Self { implementation: tuple.0 }
5531            }
5532        }
5533        #[automatically_derived]
5534        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5535            type Parameters<'a> = UnderlyingSolTuple<'a>;
5536            type Token<'a> = <Self::Parameters<
5537                'a,
5538            > as alloy_sol_types::SolType>::Token<'a>;
5539            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5540            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5541            #[inline]
5542            fn new<'a>(
5543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5544            ) -> Self {
5545                tuple.into()
5546            }
5547            #[inline]
5548            fn tokenize(&self) -> Self::Token<'_> {
5549                (
5550                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5551                        &self.implementation,
5552                    ),
5553                )
5554            }
5555        }
5556    };
5557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5558    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5559```solidity
5560error ERC1967NonPayable();
5561```*/
5562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5563    #[derive(Clone)]
5564    pub struct ERC1967NonPayable {}
5565    #[allow(
5566        non_camel_case_types,
5567        non_snake_case,
5568        clippy::pub_underscore_fields,
5569        clippy::style
5570    )]
5571    const _: () = {
5572        use alloy::sol_types as alloy_sol_types;
5573        #[doc(hidden)]
5574        type UnderlyingSolTuple<'a> = ();
5575        #[doc(hidden)]
5576        type UnderlyingRustTuple<'a> = ();
5577        #[cfg(test)]
5578        #[allow(dead_code, unreachable_patterns)]
5579        fn _type_assertion(
5580            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5581        ) {
5582            match _t {
5583                alloy_sol_types::private::AssertTypeEq::<
5584                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5585                >(_) => {}
5586            }
5587        }
5588        #[automatically_derived]
5589        #[doc(hidden)]
5590        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5591            fn from(value: ERC1967NonPayable) -> Self {
5592                ()
5593            }
5594        }
5595        #[automatically_derived]
5596        #[doc(hidden)]
5597        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5598            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5599                Self {}
5600            }
5601        }
5602        #[automatically_derived]
5603        impl alloy_sol_types::SolError for ERC1967NonPayable {
5604            type Parameters<'a> = UnderlyingSolTuple<'a>;
5605            type Token<'a> = <Self::Parameters<
5606                'a,
5607            > as alloy_sol_types::SolType>::Token<'a>;
5608            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5609            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5610            #[inline]
5611            fn new<'a>(
5612                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5613            ) -> Self {
5614                tuple.into()
5615            }
5616            #[inline]
5617            fn tokenize(&self) -> Self::Token<'_> {
5618                ()
5619            }
5620        }
5621    };
5622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5623    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5624```solidity
5625error FailedInnerCall();
5626```*/
5627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5628    #[derive(Clone)]
5629    pub struct FailedInnerCall {}
5630    #[allow(
5631        non_camel_case_types,
5632        non_snake_case,
5633        clippy::pub_underscore_fields,
5634        clippy::style
5635    )]
5636    const _: () = {
5637        use alloy::sol_types as alloy_sol_types;
5638        #[doc(hidden)]
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<FailedInnerCall> for UnderlyingRustTuple<'_> {
5656            fn from(value: FailedInnerCall) -> Self {
5657                ()
5658            }
5659        }
5660        #[automatically_derived]
5661        #[doc(hidden)]
5662        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5663            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5664                Self {}
5665            }
5666        }
5667        #[automatically_derived]
5668        impl alloy_sol_types::SolError for FailedInnerCall {
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 = "FailedInnerCall()";
5674            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
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        }
5686    };
5687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5688    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5689```solidity
5690error InsufficientSnapshotHistory();
5691```*/
5692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5693    #[derive(Clone)]
5694    pub struct InsufficientSnapshotHistory {}
5695    #[allow(
5696        non_camel_case_types,
5697        non_snake_case,
5698        clippy::pub_underscore_fields,
5699        clippy::style
5700    )]
5701    const _: () = {
5702        use alloy::sol_types as alloy_sol_types;
5703        #[doc(hidden)]
5704        type UnderlyingSolTuple<'a> = ();
5705        #[doc(hidden)]
5706        type UnderlyingRustTuple<'a> = ();
5707        #[cfg(test)]
5708        #[allow(dead_code, unreachable_patterns)]
5709        fn _type_assertion(
5710            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5711        ) {
5712            match _t {
5713                alloy_sol_types::private::AssertTypeEq::<
5714                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5715                >(_) => {}
5716            }
5717        }
5718        #[automatically_derived]
5719        #[doc(hidden)]
5720        impl ::core::convert::From<InsufficientSnapshotHistory>
5721        for UnderlyingRustTuple<'_> {
5722            fn from(value: InsufficientSnapshotHistory) -> Self {
5723                ()
5724            }
5725        }
5726        #[automatically_derived]
5727        #[doc(hidden)]
5728        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5729        for InsufficientSnapshotHistory {
5730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5731                Self {}
5732            }
5733        }
5734        #[automatically_derived]
5735        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5736            type Parameters<'a> = UnderlyingSolTuple<'a>;
5737            type Token<'a> = <Self::Parameters<
5738                'a,
5739            > as alloy_sol_types::SolType>::Token<'a>;
5740            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5741            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5742            #[inline]
5743            fn new<'a>(
5744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5745            ) -> Self {
5746                tuple.into()
5747            }
5748            #[inline]
5749            fn tokenize(&self) -> Self::Token<'_> {
5750                ()
5751            }
5752        }
5753    };
5754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5755    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5756```solidity
5757error InvalidAddress();
5758```*/
5759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5760    #[derive(Clone)]
5761    pub struct InvalidAddress {}
5762    #[allow(
5763        non_camel_case_types,
5764        non_snake_case,
5765        clippy::pub_underscore_fields,
5766        clippy::style
5767    )]
5768    const _: () = {
5769        use alloy::sol_types as alloy_sol_types;
5770        #[doc(hidden)]
5771        type UnderlyingSolTuple<'a> = ();
5772        #[doc(hidden)]
5773        type UnderlyingRustTuple<'a> = ();
5774        #[cfg(test)]
5775        #[allow(dead_code, unreachable_patterns)]
5776        fn _type_assertion(
5777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5778        ) {
5779            match _t {
5780                alloy_sol_types::private::AssertTypeEq::<
5781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5782                >(_) => {}
5783            }
5784        }
5785        #[automatically_derived]
5786        #[doc(hidden)]
5787        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5788            fn from(value: InvalidAddress) -> Self {
5789                ()
5790            }
5791        }
5792        #[automatically_derived]
5793        #[doc(hidden)]
5794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5796                Self {}
5797            }
5798        }
5799        #[automatically_derived]
5800        impl alloy_sol_types::SolError for InvalidAddress {
5801            type Parameters<'a> = UnderlyingSolTuple<'a>;
5802            type Token<'a> = <Self::Parameters<
5803                'a,
5804            > as alloy_sol_types::SolType>::Token<'a>;
5805            const SIGNATURE: &'static str = "InvalidAddress()";
5806            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5807            #[inline]
5808            fn new<'a>(
5809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5810            ) -> Self {
5811                tuple.into()
5812            }
5813            #[inline]
5814            fn tokenize(&self) -> Self::Token<'_> {
5815                ()
5816            }
5817        }
5818    };
5819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5820    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5821```solidity
5822error InvalidArgs();
5823```*/
5824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5825    #[derive(Clone)]
5826    pub struct InvalidArgs {}
5827    #[allow(
5828        non_camel_case_types,
5829        non_snake_case,
5830        clippy::pub_underscore_fields,
5831        clippy::style
5832    )]
5833    const _: () = {
5834        use alloy::sol_types as alloy_sol_types;
5835        #[doc(hidden)]
5836        type UnderlyingSolTuple<'a> = ();
5837        #[doc(hidden)]
5838        type UnderlyingRustTuple<'a> = ();
5839        #[cfg(test)]
5840        #[allow(dead_code, unreachable_patterns)]
5841        fn _type_assertion(
5842            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5843        ) {
5844            match _t {
5845                alloy_sol_types::private::AssertTypeEq::<
5846                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5847                >(_) => {}
5848            }
5849        }
5850        #[automatically_derived]
5851        #[doc(hidden)]
5852        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5853            fn from(value: InvalidArgs) -> Self {
5854                ()
5855            }
5856        }
5857        #[automatically_derived]
5858        #[doc(hidden)]
5859        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5860            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5861                Self {}
5862            }
5863        }
5864        #[automatically_derived]
5865        impl alloy_sol_types::SolError for InvalidArgs {
5866            type Parameters<'a> = UnderlyingSolTuple<'a>;
5867            type Token<'a> = <Self::Parameters<
5868                'a,
5869            > as alloy_sol_types::SolType>::Token<'a>;
5870            const SIGNATURE: &'static str = "InvalidArgs()";
5871            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5872            #[inline]
5873            fn new<'a>(
5874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5875            ) -> Self {
5876                tuple.into()
5877            }
5878            #[inline]
5879            fn tokenize(&self) -> Self::Token<'_> {
5880                ()
5881            }
5882        }
5883    };
5884    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5885    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5886```solidity
5887error InvalidHotShotBlockForCommitmentCheck();
5888```*/
5889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5890    #[derive(Clone)]
5891    pub struct InvalidHotShotBlockForCommitmentCheck {}
5892    #[allow(
5893        non_camel_case_types,
5894        non_snake_case,
5895        clippy::pub_underscore_fields,
5896        clippy::style
5897    )]
5898    const _: () = {
5899        use alloy::sol_types as alloy_sol_types;
5900        #[doc(hidden)]
5901        type UnderlyingSolTuple<'a> = ();
5902        #[doc(hidden)]
5903        type UnderlyingRustTuple<'a> = ();
5904        #[cfg(test)]
5905        #[allow(dead_code, unreachable_patterns)]
5906        fn _type_assertion(
5907            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5908        ) {
5909            match _t {
5910                alloy_sol_types::private::AssertTypeEq::<
5911                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5912                >(_) => {}
5913            }
5914        }
5915        #[automatically_derived]
5916        #[doc(hidden)]
5917        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5918        for UnderlyingRustTuple<'_> {
5919            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5920                ()
5921            }
5922        }
5923        #[automatically_derived]
5924        #[doc(hidden)]
5925        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5926        for InvalidHotShotBlockForCommitmentCheck {
5927            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5928                Self {}
5929            }
5930        }
5931        #[automatically_derived]
5932        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5933            type Parameters<'a> = UnderlyingSolTuple<'a>;
5934            type Token<'a> = <Self::Parameters<
5935                'a,
5936            > as alloy_sol_types::SolType>::Token<'a>;
5937            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5938            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5939            #[inline]
5940            fn new<'a>(
5941                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5942            ) -> Self {
5943                tuple.into()
5944            }
5945            #[inline]
5946            fn tokenize(&self) -> Self::Token<'_> {
5947                ()
5948            }
5949        }
5950    };
5951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5952    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5953```solidity
5954error InvalidInitialization();
5955```*/
5956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5957    #[derive(Clone)]
5958    pub struct InvalidInitialization {}
5959    #[allow(
5960        non_camel_case_types,
5961        non_snake_case,
5962        clippy::pub_underscore_fields,
5963        clippy::style
5964    )]
5965    const _: () = {
5966        use alloy::sol_types as alloy_sol_types;
5967        #[doc(hidden)]
5968        type UnderlyingSolTuple<'a> = ();
5969        #[doc(hidden)]
5970        type UnderlyingRustTuple<'a> = ();
5971        #[cfg(test)]
5972        #[allow(dead_code, unreachable_patterns)]
5973        fn _type_assertion(
5974            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5975        ) {
5976            match _t {
5977                alloy_sol_types::private::AssertTypeEq::<
5978                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5979                >(_) => {}
5980            }
5981        }
5982        #[automatically_derived]
5983        #[doc(hidden)]
5984        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5985            fn from(value: InvalidInitialization) -> Self {
5986                ()
5987            }
5988        }
5989        #[automatically_derived]
5990        #[doc(hidden)]
5991        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5992            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5993                Self {}
5994            }
5995        }
5996        #[automatically_derived]
5997        impl alloy_sol_types::SolError for InvalidInitialization {
5998            type Parameters<'a> = UnderlyingSolTuple<'a>;
5999            type Token<'a> = <Self::Parameters<
6000                'a,
6001            > as alloy_sol_types::SolType>::Token<'a>;
6002            const SIGNATURE: &'static str = "InvalidInitialization()";
6003            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6004            #[inline]
6005            fn new<'a>(
6006                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6007            ) -> Self {
6008                tuple.into()
6009            }
6010            #[inline]
6011            fn tokenize(&self) -> Self::Token<'_> {
6012                ()
6013            }
6014        }
6015    };
6016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6017    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6018```solidity
6019error InvalidMaxStateHistory();
6020```*/
6021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6022    #[derive(Clone)]
6023    pub struct InvalidMaxStateHistory {}
6024    #[allow(
6025        non_camel_case_types,
6026        non_snake_case,
6027        clippy::pub_underscore_fields,
6028        clippy::style
6029    )]
6030    const _: () = {
6031        use alloy::sol_types as alloy_sol_types;
6032        #[doc(hidden)]
6033        type UnderlyingSolTuple<'a> = ();
6034        #[doc(hidden)]
6035        type UnderlyingRustTuple<'a> = ();
6036        #[cfg(test)]
6037        #[allow(dead_code, unreachable_patterns)]
6038        fn _type_assertion(
6039            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6040        ) {
6041            match _t {
6042                alloy_sol_types::private::AssertTypeEq::<
6043                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6044                >(_) => {}
6045            }
6046        }
6047        #[automatically_derived]
6048        #[doc(hidden)]
6049        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6050            fn from(value: InvalidMaxStateHistory) -> Self {
6051                ()
6052            }
6053        }
6054        #[automatically_derived]
6055        #[doc(hidden)]
6056        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6057            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6058                Self {}
6059            }
6060        }
6061        #[automatically_derived]
6062        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6063            type Parameters<'a> = UnderlyingSolTuple<'a>;
6064            type Token<'a> = <Self::Parameters<
6065                'a,
6066            > as alloy_sol_types::SolType>::Token<'a>;
6067            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6068            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6069            #[inline]
6070            fn new<'a>(
6071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6072            ) -> Self {
6073                tuple.into()
6074            }
6075            #[inline]
6076            fn tokenize(&self) -> Self::Token<'_> {
6077                ()
6078            }
6079        }
6080    };
6081    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6082    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6083```solidity
6084error InvalidProof();
6085```*/
6086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6087    #[derive(Clone)]
6088    pub struct InvalidProof {}
6089    #[allow(
6090        non_camel_case_types,
6091        non_snake_case,
6092        clippy::pub_underscore_fields,
6093        clippy::style
6094    )]
6095    const _: () = {
6096        use alloy::sol_types as alloy_sol_types;
6097        #[doc(hidden)]
6098        type UnderlyingSolTuple<'a> = ();
6099        #[doc(hidden)]
6100        type UnderlyingRustTuple<'a> = ();
6101        #[cfg(test)]
6102        #[allow(dead_code, unreachable_patterns)]
6103        fn _type_assertion(
6104            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6105        ) {
6106            match _t {
6107                alloy_sol_types::private::AssertTypeEq::<
6108                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6109                >(_) => {}
6110            }
6111        }
6112        #[automatically_derived]
6113        #[doc(hidden)]
6114        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6115            fn from(value: InvalidProof) -> Self {
6116                ()
6117            }
6118        }
6119        #[automatically_derived]
6120        #[doc(hidden)]
6121        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6122            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6123                Self {}
6124            }
6125        }
6126        #[automatically_derived]
6127        impl alloy_sol_types::SolError for InvalidProof {
6128            type Parameters<'a> = UnderlyingSolTuple<'a>;
6129            type Token<'a> = <Self::Parameters<
6130                'a,
6131            > as alloy_sol_types::SolType>::Token<'a>;
6132            const SIGNATURE: &'static str = "InvalidProof()";
6133            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6134            #[inline]
6135            fn new<'a>(
6136                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6137            ) -> Self {
6138                tuple.into()
6139            }
6140            #[inline]
6141            fn tokenize(&self) -> Self::Token<'_> {
6142                ()
6143            }
6144        }
6145    };
6146    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6147    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6148```solidity
6149error MissingEpochRootUpdate();
6150```*/
6151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6152    #[derive(Clone)]
6153    pub struct MissingEpochRootUpdate {}
6154    #[allow(
6155        non_camel_case_types,
6156        non_snake_case,
6157        clippy::pub_underscore_fields,
6158        clippy::style
6159    )]
6160    const _: () = {
6161        use alloy::sol_types as alloy_sol_types;
6162        #[doc(hidden)]
6163        type UnderlyingSolTuple<'a> = ();
6164        #[doc(hidden)]
6165        type UnderlyingRustTuple<'a> = ();
6166        #[cfg(test)]
6167        #[allow(dead_code, unreachable_patterns)]
6168        fn _type_assertion(
6169            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6170        ) {
6171            match _t {
6172                alloy_sol_types::private::AssertTypeEq::<
6173                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6174                >(_) => {}
6175            }
6176        }
6177        #[automatically_derived]
6178        #[doc(hidden)]
6179        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6180            fn from(value: MissingEpochRootUpdate) -> Self {
6181                ()
6182            }
6183        }
6184        #[automatically_derived]
6185        #[doc(hidden)]
6186        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6187            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6188                Self {}
6189            }
6190        }
6191        #[automatically_derived]
6192        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6193            type Parameters<'a> = UnderlyingSolTuple<'a>;
6194            type Token<'a> = <Self::Parameters<
6195                'a,
6196            > as alloy_sol_types::SolType>::Token<'a>;
6197            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6198            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6199            #[inline]
6200            fn new<'a>(
6201                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6202            ) -> Self {
6203                tuple.into()
6204            }
6205            #[inline]
6206            fn tokenize(&self) -> Self::Token<'_> {
6207                ()
6208            }
6209        }
6210    };
6211    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6212    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6213```solidity
6214error NoChangeRequired();
6215```*/
6216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6217    #[derive(Clone)]
6218    pub struct NoChangeRequired {}
6219    #[allow(
6220        non_camel_case_types,
6221        non_snake_case,
6222        clippy::pub_underscore_fields,
6223        clippy::style
6224    )]
6225    const _: () = {
6226        use alloy::sol_types as alloy_sol_types;
6227        #[doc(hidden)]
6228        type UnderlyingSolTuple<'a> = ();
6229        #[doc(hidden)]
6230        type UnderlyingRustTuple<'a> = ();
6231        #[cfg(test)]
6232        #[allow(dead_code, unreachable_patterns)]
6233        fn _type_assertion(
6234            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6235        ) {
6236            match _t {
6237                alloy_sol_types::private::AssertTypeEq::<
6238                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6239                >(_) => {}
6240            }
6241        }
6242        #[automatically_derived]
6243        #[doc(hidden)]
6244        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6245            fn from(value: NoChangeRequired) -> Self {
6246                ()
6247            }
6248        }
6249        #[automatically_derived]
6250        #[doc(hidden)]
6251        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6252            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6253                Self {}
6254            }
6255        }
6256        #[automatically_derived]
6257        impl alloy_sol_types::SolError for NoChangeRequired {
6258            type Parameters<'a> = UnderlyingSolTuple<'a>;
6259            type Token<'a> = <Self::Parameters<
6260                'a,
6261            > as alloy_sol_types::SolType>::Token<'a>;
6262            const SIGNATURE: &'static str = "NoChangeRequired()";
6263            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6264            #[inline]
6265            fn new<'a>(
6266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6267            ) -> Self {
6268                tuple.into()
6269            }
6270            #[inline]
6271            fn tokenize(&self) -> Self::Token<'_> {
6272                ()
6273            }
6274        }
6275    };
6276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6277    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6278```solidity
6279error NotInitializing();
6280```*/
6281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6282    #[derive(Clone)]
6283    pub struct NotInitializing {}
6284    #[allow(
6285        non_camel_case_types,
6286        non_snake_case,
6287        clippy::pub_underscore_fields,
6288        clippy::style
6289    )]
6290    const _: () = {
6291        use alloy::sol_types as alloy_sol_types;
6292        #[doc(hidden)]
6293        type UnderlyingSolTuple<'a> = ();
6294        #[doc(hidden)]
6295        type UnderlyingRustTuple<'a> = ();
6296        #[cfg(test)]
6297        #[allow(dead_code, unreachable_patterns)]
6298        fn _type_assertion(
6299            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6300        ) {
6301            match _t {
6302                alloy_sol_types::private::AssertTypeEq::<
6303                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6304                >(_) => {}
6305            }
6306        }
6307        #[automatically_derived]
6308        #[doc(hidden)]
6309        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6310            fn from(value: NotInitializing) -> Self {
6311                ()
6312            }
6313        }
6314        #[automatically_derived]
6315        #[doc(hidden)]
6316        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6317            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6318                Self {}
6319            }
6320        }
6321        #[automatically_derived]
6322        impl alloy_sol_types::SolError for NotInitializing {
6323            type Parameters<'a> = UnderlyingSolTuple<'a>;
6324            type Token<'a> = <Self::Parameters<
6325                'a,
6326            > as alloy_sol_types::SolType>::Token<'a>;
6327            const SIGNATURE: &'static str = "NotInitializing()";
6328            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6329            #[inline]
6330            fn new<'a>(
6331                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6332            ) -> Self {
6333                tuple.into()
6334            }
6335            #[inline]
6336            fn tokenize(&self) -> Self::Token<'_> {
6337                ()
6338            }
6339        }
6340    };
6341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6342    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6343```solidity
6344error OutdatedState();
6345```*/
6346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6347    #[derive(Clone)]
6348    pub struct OutdatedState {}
6349    #[allow(
6350        non_camel_case_types,
6351        non_snake_case,
6352        clippy::pub_underscore_fields,
6353        clippy::style
6354    )]
6355    const _: () = {
6356        use alloy::sol_types as alloy_sol_types;
6357        #[doc(hidden)]
6358        type UnderlyingSolTuple<'a> = ();
6359        #[doc(hidden)]
6360        type UnderlyingRustTuple<'a> = ();
6361        #[cfg(test)]
6362        #[allow(dead_code, unreachable_patterns)]
6363        fn _type_assertion(
6364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6365        ) {
6366            match _t {
6367                alloy_sol_types::private::AssertTypeEq::<
6368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6369                >(_) => {}
6370            }
6371        }
6372        #[automatically_derived]
6373        #[doc(hidden)]
6374        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6375            fn from(value: OutdatedState) -> Self {
6376                ()
6377            }
6378        }
6379        #[automatically_derived]
6380        #[doc(hidden)]
6381        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6382            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6383                Self {}
6384            }
6385        }
6386        #[automatically_derived]
6387        impl alloy_sol_types::SolError for OutdatedState {
6388            type Parameters<'a> = UnderlyingSolTuple<'a>;
6389            type Token<'a> = <Self::Parameters<
6390                'a,
6391            > as alloy_sol_types::SolType>::Token<'a>;
6392            const SIGNATURE: &'static str = "OutdatedState()";
6393            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6394            #[inline]
6395            fn new<'a>(
6396                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6397            ) -> Self {
6398                tuple.into()
6399            }
6400            #[inline]
6401            fn tokenize(&self) -> Self::Token<'_> {
6402                ()
6403            }
6404        }
6405    };
6406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6407    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6408```solidity
6409error OwnableInvalidOwner(address owner);
6410```*/
6411    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6412    #[derive(Clone)]
6413    pub struct OwnableInvalidOwner {
6414        #[allow(missing_docs)]
6415        pub owner: alloy::sol_types::private::Address,
6416    }
6417    #[allow(
6418        non_camel_case_types,
6419        non_snake_case,
6420        clippy::pub_underscore_fields,
6421        clippy::style
6422    )]
6423    const _: () = {
6424        use alloy::sol_types as alloy_sol_types;
6425        #[doc(hidden)]
6426        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6427        #[doc(hidden)]
6428        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6429        #[cfg(test)]
6430        #[allow(dead_code, unreachable_patterns)]
6431        fn _type_assertion(
6432            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6433        ) {
6434            match _t {
6435                alloy_sol_types::private::AssertTypeEq::<
6436                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6437                >(_) => {}
6438            }
6439        }
6440        #[automatically_derived]
6441        #[doc(hidden)]
6442        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6443            fn from(value: OwnableInvalidOwner) -> Self {
6444                (value.owner,)
6445            }
6446        }
6447        #[automatically_derived]
6448        #[doc(hidden)]
6449        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6450            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6451                Self { owner: tuple.0 }
6452            }
6453        }
6454        #[automatically_derived]
6455        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6456            type Parameters<'a> = UnderlyingSolTuple<'a>;
6457            type Token<'a> = <Self::Parameters<
6458                'a,
6459            > as alloy_sol_types::SolType>::Token<'a>;
6460            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6461            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6462            #[inline]
6463            fn new<'a>(
6464                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6465            ) -> Self {
6466                tuple.into()
6467            }
6468            #[inline]
6469            fn tokenize(&self) -> Self::Token<'_> {
6470                (
6471                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6472                        &self.owner,
6473                    ),
6474                )
6475            }
6476        }
6477    };
6478    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6479    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6480```solidity
6481error OwnableUnauthorizedAccount(address account);
6482```*/
6483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6484    #[derive(Clone)]
6485    pub struct OwnableUnauthorizedAccount {
6486        #[allow(missing_docs)]
6487        pub account: alloy::sol_types::private::Address,
6488    }
6489    #[allow(
6490        non_camel_case_types,
6491        non_snake_case,
6492        clippy::pub_underscore_fields,
6493        clippy::style
6494    )]
6495    const _: () = {
6496        use alloy::sol_types as alloy_sol_types;
6497        #[doc(hidden)]
6498        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6499        #[doc(hidden)]
6500        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6501        #[cfg(test)]
6502        #[allow(dead_code, unreachable_patterns)]
6503        fn _type_assertion(
6504            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6505        ) {
6506            match _t {
6507                alloy_sol_types::private::AssertTypeEq::<
6508                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6509                >(_) => {}
6510            }
6511        }
6512        #[automatically_derived]
6513        #[doc(hidden)]
6514        impl ::core::convert::From<OwnableUnauthorizedAccount>
6515        for UnderlyingRustTuple<'_> {
6516            fn from(value: OwnableUnauthorizedAccount) -> Self {
6517                (value.account,)
6518            }
6519        }
6520        #[automatically_derived]
6521        #[doc(hidden)]
6522        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6523        for OwnableUnauthorizedAccount {
6524            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6525                Self { account: tuple.0 }
6526            }
6527        }
6528        #[automatically_derived]
6529        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6530            type Parameters<'a> = UnderlyingSolTuple<'a>;
6531            type Token<'a> = <Self::Parameters<
6532                'a,
6533            > as alloy_sol_types::SolType>::Token<'a>;
6534            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6535            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6536            #[inline]
6537            fn new<'a>(
6538                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6539            ) -> Self {
6540                tuple.into()
6541            }
6542            #[inline]
6543            fn tokenize(&self) -> Self::Token<'_> {
6544                (
6545                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6546                        &self.account,
6547                    ),
6548                )
6549            }
6550        }
6551    };
6552    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6553    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6554```solidity
6555error ProverNotPermissioned();
6556```*/
6557    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6558    #[derive(Clone)]
6559    pub struct ProverNotPermissioned {}
6560    #[allow(
6561        non_camel_case_types,
6562        non_snake_case,
6563        clippy::pub_underscore_fields,
6564        clippy::style
6565    )]
6566    const _: () = {
6567        use alloy::sol_types as alloy_sol_types;
6568        #[doc(hidden)]
6569        type UnderlyingSolTuple<'a> = ();
6570        #[doc(hidden)]
6571        type UnderlyingRustTuple<'a> = ();
6572        #[cfg(test)]
6573        #[allow(dead_code, unreachable_patterns)]
6574        fn _type_assertion(
6575            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6576        ) {
6577            match _t {
6578                alloy_sol_types::private::AssertTypeEq::<
6579                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6580                >(_) => {}
6581            }
6582        }
6583        #[automatically_derived]
6584        #[doc(hidden)]
6585        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6586            fn from(value: ProverNotPermissioned) -> Self {
6587                ()
6588            }
6589        }
6590        #[automatically_derived]
6591        #[doc(hidden)]
6592        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6593            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6594                Self {}
6595            }
6596        }
6597        #[automatically_derived]
6598        impl alloy_sol_types::SolError for ProverNotPermissioned {
6599            type Parameters<'a> = UnderlyingSolTuple<'a>;
6600            type Token<'a> = <Self::Parameters<
6601                'a,
6602            > as alloy_sol_types::SolType>::Token<'a>;
6603            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6604            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6605            #[inline]
6606            fn new<'a>(
6607                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6608            ) -> Self {
6609                tuple.into()
6610            }
6611            #[inline]
6612            fn tokenize(&self) -> Self::Token<'_> {
6613                ()
6614            }
6615        }
6616    };
6617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6618    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6619```solidity
6620error UUPSUnauthorizedCallContext();
6621```*/
6622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6623    #[derive(Clone)]
6624    pub struct UUPSUnauthorizedCallContext {}
6625    #[allow(
6626        non_camel_case_types,
6627        non_snake_case,
6628        clippy::pub_underscore_fields,
6629        clippy::style
6630    )]
6631    const _: () = {
6632        use alloy::sol_types as alloy_sol_types;
6633        #[doc(hidden)]
6634        type UnderlyingSolTuple<'a> = ();
6635        #[doc(hidden)]
6636        type UnderlyingRustTuple<'a> = ();
6637        #[cfg(test)]
6638        #[allow(dead_code, unreachable_patterns)]
6639        fn _type_assertion(
6640            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6641        ) {
6642            match _t {
6643                alloy_sol_types::private::AssertTypeEq::<
6644                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6645                >(_) => {}
6646            }
6647        }
6648        #[automatically_derived]
6649        #[doc(hidden)]
6650        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6651        for UnderlyingRustTuple<'_> {
6652            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6653                ()
6654            }
6655        }
6656        #[automatically_derived]
6657        #[doc(hidden)]
6658        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6659        for UUPSUnauthorizedCallContext {
6660            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6661                Self {}
6662            }
6663        }
6664        #[automatically_derived]
6665        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6666            type Parameters<'a> = UnderlyingSolTuple<'a>;
6667            type Token<'a> = <Self::Parameters<
6668                'a,
6669            > as alloy_sol_types::SolType>::Token<'a>;
6670            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6671            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6672            #[inline]
6673            fn new<'a>(
6674                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6675            ) -> Self {
6676                tuple.into()
6677            }
6678            #[inline]
6679            fn tokenize(&self) -> Self::Token<'_> {
6680                ()
6681            }
6682        }
6683    };
6684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6685    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6686```solidity
6687error UUPSUnsupportedProxiableUUID(bytes32 slot);
6688```*/
6689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6690    #[derive(Clone)]
6691    pub struct UUPSUnsupportedProxiableUUID {
6692        #[allow(missing_docs)]
6693        pub slot: alloy::sol_types::private::FixedBytes<32>,
6694    }
6695    #[allow(
6696        non_camel_case_types,
6697        non_snake_case,
6698        clippy::pub_underscore_fields,
6699        clippy::style
6700    )]
6701    const _: () = {
6702        use alloy::sol_types as alloy_sol_types;
6703        #[doc(hidden)]
6704        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6705        #[doc(hidden)]
6706        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
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<UUPSUnsupportedProxiableUUID>
6721        for UnderlyingRustTuple<'_> {
6722            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6723                (value.slot,)
6724            }
6725        }
6726        #[automatically_derived]
6727        #[doc(hidden)]
6728        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6729        for UUPSUnsupportedProxiableUUID {
6730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6731                Self { slot: tuple.0 }
6732            }
6733        }
6734        #[automatically_derived]
6735        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6736            type Parameters<'a> = UnderlyingSolTuple<'a>;
6737            type Token<'a> = <Self::Parameters<
6738                'a,
6739            > as alloy_sol_types::SolType>::Token<'a>;
6740            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6741            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6742            #[inline]
6743            fn new<'a>(
6744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6745            ) -> Self {
6746                tuple.into()
6747            }
6748            #[inline]
6749            fn tokenize(&self) -> Self::Token<'_> {
6750                (
6751                    <alloy::sol_types::sol_data::FixedBytes<
6752                        32,
6753                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6754                )
6755            }
6756        }
6757    };
6758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6759    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6760```solidity
6761error WrongStakeTableUsed();
6762```*/
6763    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6764    #[derive(Clone)]
6765    pub struct WrongStakeTableUsed {}
6766    #[allow(
6767        non_camel_case_types,
6768        non_snake_case,
6769        clippy::pub_underscore_fields,
6770        clippy::style
6771    )]
6772    const _: () = {
6773        use alloy::sol_types as alloy_sol_types;
6774        #[doc(hidden)]
6775        type UnderlyingSolTuple<'a> = ();
6776        #[doc(hidden)]
6777        type UnderlyingRustTuple<'a> = ();
6778        #[cfg(test)]
6779        #[allow(dead_code, unreachable_patterns)]
6780        fn _type_assertion(
6781            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6782        ) {
6783            match _t {
6784                alloy_sol_types::private::AssertTypeEq::<
6785                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6786                >(_) => {}
6787            }
6788        }
6789        #[automatically_derived]
6790        #[doc(hidden)]
6791        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6792            fn from(value: WrongStakeTableUsed) -> Self {
6793                ()
6794            }
6795        }
6796        #[automatically_derived]
6797        #[doc(hidden)]
6798        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6799            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6800                Self {}
6801            }
6802        }
6803        #[automatically_derived]
6804        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6805            type Parameters<'a> = UnderlyingSolTuple<'a>;
6806            type Token<'a> = <Self::Parameters<
6807                'a,
6808            > as alloy_sol_types::SolType>::Token<'a>;
6809            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6810            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6811            #[inline]
6812            fn new<'a>(
6813                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6814            ) -> Self {
6815                tuple.into()
6816            }
6817            #[inline]
6818            fn tokenize(&self) -> Self::Token<'_> {
6819                ()
6820            }
6821        }
6822    };
6823    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6824    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6825```solidity
6826event Initialized(uint64 version);
6827```*/
6828    #[allow(
6829        non_camel_case_types,
6830        non_snake_case,
6831        clippy::pub_underscore_fields,
6832        clippy::style
6833    )]
6834    #[derive(Clone)]
6835    pub struct Initialized {
6836        #[allow(missing_docs)]
6837        pub version: u64,
6838    }
6839    #[allow(
6840        non_camel_case_types,
6841        non_snake_case,
6842        clippy::pub_underscore_fields,
6843        clippy::style
6844    )]
6845    const _: () = {
6846        use alloy::sol_types as alloy_sol_types;
6847        #[automatically_derived]
6848        impl alloy_sol_types::SolEvent for Initialized {
6849            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6850            type DataToken<'a> = <Self::DataTuple<
6851                'a,
6852            > as alloy_sol_types::SolType>::Token<'a>;
6853            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6854            const SIGNATURE: &'static str = "Initialized(uint64)";
6855            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6856                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6857                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6858                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6859            ]);
6860            const ANONYMOUS: bool = false;
6861            #[allow(unused_variables)]
6862            #[inline]
6863            fn new(
6864                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6865                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6866            ) -> Self {
6867                Self { version: data.0 }
6868            }
6869            #[inline]
6870            fn check_signature(
6871                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6872            ) -> alloy_sol_types::Result<()> {
6873                if topics.0 != Self::SIGNATURE_HASH {
6874                    return Err(
6875                        alloy_sol_types::Error::invalid_event_signature_hash(
6876                            Self::SIGNATURE,
6877                            topics.0,
6878                            Self::SIGNATURE_HASH,
6879                        ),
6880                    );
6881                }
6882                Ok(())
6883            }
6884            #[inline]
6885            fn tokenize_body(&self) -> Self::DataToken<'_> {
6886                (
6887                    <alloy::sol_types::sol_data::Uint<
6888                        64,
6889                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6890                )
6891            }
6892            #[inline]
6893            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6894                (Self::SIGNATURE_HASH.into(),)
6895            }
6896            #[inline]
6897            fn encode_topics_raw(
6898                &self,
6899                out: &mut [alloy_sol_types::abi::token::WordToken],
6900            ) -> alloy_sol_types::Result<()> {
6901                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6902                    return Err(alloy_sol_types::Error::Overrun);
6903                }
6904                out[0usize] = alloy_sol_types::abi::token::WordToken(
6905                    Self::SIGNATURE_HASH,
6906                );
6907                Ok(())
6908            }
6909        }
6910        #[automatically_derived]
6911        impl alloy_sol_types::private::IntoLogData for Initialized {
6912            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6913                From::from(self)
6914            }
6915            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6916                From::from(&self)
6917            }
6918        }
6919        #[automatically_derived]
6920        impl From<&Initialized> for alloy_sol_types::private::LogData {
6921            #[inline]
6922            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6923                alloy_sol_types::SolEvent::encode_log_data(this)
6924            }
6925        }
6926    };
6927    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6928    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6929```solidity
6930event NewEpoch(uint64 epoch);
6931```*/
6932    #[allow(
6933        non_camel_case_types,
6934        non_snake_case,
6935        clippy::pub_underscore_fields,
6936        clippy::style
6937    )]
6938    #[derive(Clone)]
6939    pub struct NewEpoch {
6940        #[allow(missing_docs)]
6941        pub epoch: u64,
6942    }
6943    #[allow(
6944        non_camel_case_types,
6945        non_snake_case,
6946        clippy::pub_underscore_fields,
6947        clippy::style
6948    )]
6949    const _: () = {
6950        use alloy::sol_types as alloy_sol_types;
6951        #[automatically_derived]
6952        impl alloy_sol_types::SolEvent for NewEpoch {
6953            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6954            type DataToken<'a> = <Self::DataTuple<
6955                'a,
6956            > as alloy_sol_types::SolType>::Token<'a>;
6957            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6958            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6959            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6960                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6961                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6962                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6963            ]);
6964            const ANONYMOUS: bool = false;
6965            #[allow(unused_variables)]
6966            #[inline]
6967            fn new(
6968                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6969                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6970            ) -> Self {
6971                Self { epoch: data.0 }
6972            }
6973            #[inline]
6974            fn check_signature(
6975                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6976            ) -> alloy_sol_types::Result<()> {
6977                if topics.0 != Self::SIGNATURE_HASH {
6978                    return Err(
6979                        alloy_sol_types::Error::invalid_event_signature_hash(
6980                            Self::SIGNATURE,
6981                            topics.0,
6982                            Self::SIGNATURE_HASH,
6983                        ),
6984                    );
6985                }
6986                Ok(())
6987            }
6988            #[inline]
6989            fn tokenize_body(&self) -> Self::DataToken<'_> {
6990                (
6991                    <alloy::sol_types::sol_data::Uint<
6992                        64,
6993                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6994                )
6995            }
6996            #[inline]
6997            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6998                (Self::SIGNATURE_HASH.into(),)
6999            }
7000            #[inline]
7001            fn encode_topics_raw(
7002                &self,
7003                out: &mut [alloy_sol_types::abi::token::WordToken],
7004            ) -> alloy_sol_types::Result<()> {
7005                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7006                    return Err(alloy_sol_types::Error::Overrun);
7007                }
7008                out[0usize] = alloy_sol_types::abi::token::WordToken(
7009                    Self::SIGNATURE_HASH,
7010                );
7011                Ok(())
7012            }
7013        }
7014        #[automatically_derived]
7015        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7016            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7017                From::from(self)
7018            }
7019            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7020                From::from(&self)
7021            }
7022        }
7023        #[automatically_derived]
7024        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7025            #[inline]
7026            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7027                alloy_sol_types::SolEvent::encode_log_data(this)
7028            }
7029        }
7030    };
7031    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7032    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7033```solidity
7034event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7035```*/
7036    #[allow(
7037        non_camel_case_types,
7038        non_snake_case,
7039        clippy::pub_underscore_fields,
7040        clippy::style
7041    )]
7042    #[derive(Clone)]
7043    pub struct NewState {
7044        #[allow(missing_docs)]
7045        pub viewNum: u64,
7046        #[allow(missing_docs)]
7047        pub blockHeight: u64,
7048        #[allow(missing_docs)]
7049        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7050    }
7051    #[allow(
7052        non_camel_case_types,
7053        non_snake_case,
7054        clippy::pub_underscore_fields,
7055        clippy::style
7056    )]
7057    const _: () = {
7058        use alloy::sol_types as alloy_sol_types;
7059        #[automatically_derived]
7060        impl alloy_sol_types::SolEvent for NewState {
7061            type DataTuple<'a> = (BN254::ScalarField,);
7062            type DataToken<'a> = <Self::DataTuple<
7063                'a,
7064            > as alloy_sol_types::SolType>::Token<'a>;
7065            type TopicList = (
7066                alloy_sol_types::sol_data::FixedBytes<32>,
7067                alloy::sol_types::sol_data::Uint<64>,
7068                alloy::sol_types::sol_data::Uint<64>,
7069            );
7070            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7071            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7072                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7073                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7074                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7075            ]);
7076            const ANONYMOUS: bool = false;
7077            #[allow(unused_variables)]
7078            #[inline]
7079            fn new(
7080                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7081                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7082            ) -> Self {
7083                Self {
7084                    viewNum: topics.1,
7085                    blockHeight: topics.2,
7086                    blockCommRoot: data.0,
7087                }
7088            }
7089            #[inline]
7090            fn check_signature(
7091                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7092            ) -> alloy_sol_types::Result<()> {
7093                if topics.0 != Self::SIGNATURE_HASH {
7094                    return Err(
7095                        alloy_sol_types::Error::invalid_event_signature_hash(
7096                            Self::SIGNATURE,
7097                            topics.0,
7098                            Self::SIGNATURE_HASH,
7099                        ),
7100                    );
7101                }
7102                Ok(())
7103            }
7104            #[inline]
7105            fn tokenize_body(&self) -> Self::DataToken<'_> {
7106                (
7107                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7108                        &self.blockCommRoot,
7109                    ),
7110                )
7111            }
7112            #[inline]
7113            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7114                (
7115                    Self::SIGNATURE_HASH.into(),
7116                    self.viewNum.clone(),
7117                    self.blockHeight.clone(),
7118                )
7119            }
7120            #[inline]
7121            fn encode_topics_raw(
7122                &self,
7123                out: &mut [alloy_sol_types::abi::token::WordToken],
7124            ) -> alloy_sol_types::Result<()> {
7125                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7126                    return Err(alloy_sol_types::Error::Overrun);
7127                }
7128                out[0usize] = alloy_sol_types::abi::token::WordToken(
7129                    Self::SIGNATURE_HASH,
7130                );
7131                out[1usize] = <alloy::sol_types::sol_data::Uint<
7132                    64,
7133                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7134                out[2usize] = <alloy::sol_types::sol_data::Uint<
7135                    64,
7136                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7137                Ok(())
7138            }
7139        }
7140        #[automatically_derived]
7141        impl alloy_sol_types::private::IntoLogData for NewState {
7142            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7143                From::from(self)
7144            }
7145            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7146                From::from(&self)
7147            }
7148        }
7149        #[automatically_derived]
7150        impl From<&NewState> for alloy_sol_types::private::LogData {
7151            #[inline]
7152            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7153                alloy_sol_types::SolEvent::encode_log_data(this)
7154            }
7155        }
7156    };
7157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7158    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7159```solidity
7160event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7161```*/
7162    #[allow(
7163        non_camel_case_types,
7164        non_snake_case,
7165        clippy::pub_underscore_fields,
7166        clippy::style
7167    )]
7168    #[derive(Clone)]
7169    pub struct OwnershipTransferred {
7170        #[allow(missing_docs)]
7171        pub previousOwner: alloy::sol_types::private::Address,
7172        #[allow(missing_docs)]
7173        pub newOwner: alloy::sol_types::private::Address,
7174    }
7175    #[allow(
7176        non_camel_case_types,
7177        non_snake_case,
7178        clippy::pub_underscore_fields,
7179        clippy::style
7180    )]
7181    const _: () = {
7182        use alloy::sol_types as alloy_sol_types;
7183        #[automatically_derived]
7184        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7185            type DataTuple<'a> = ();
7186            type DataToken<'a> = <Self::DataTuple<
7187                'a,
7188            > as alloy_sol_types::SolType>::Token<'a>;
7189            type TopicList = (
7190                alloy_sol_types::sol_data::FixedBytes<32>,
7191                alloy::sol_types::sol_data::Address,
7192                alloy::sol_types::sol_data::Address,
7193            );
7194            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7195            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7196                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7197                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7198                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7199            ]);
7200            const ANONYMOUS: bool = false;
7201            #[allow(unused_variables)]
7202            #[inline]
7203            fn new(
7204                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7205                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7206            ) -> Self {
7207                Self {
7208                    previousOwner: topics.1,
7209                    newOwner: topics.2,
7210                }
7211            }
7212            #[inline]
7213            fn check_signature(
7214                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7215            ) -> alloy_sol_types::Result<()> {
7216                if topics.0 != Self::SIGNATURE_HASH {
7217                    return Err(
7218                        alloy_sol_types::Error::invalid_event_signature_hash(
7219                            Self::SIGNATURE,
7220                            topics.0,
7221                            Self::SIGNATURE_HASH,
7222                        ),
7223                    );
7224                }
7225                Ok(())
7226            }
7227            #[inline]
7228            fn tokenize_body(&self) -> Self::DataToken<'_> {
7229                ()
7230            }
7231            #[inline]
7232            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7233                (
7234                    Self::SIGNATURE_HASH.into(),
7235                    self.previousOwner.clone(),
7236                    self.newOwner.clone(),
7237                )
7238            }
7239            #[inline]
7240            fn encode_topics_raw(
7241                &self,
7242                out: &mut [alloy_sol_types::abi::token::WordToken],
7243            ) -> alloy_sol_types::Result<()> {
7244                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7245                    return Err(alloy_sol_types::Error::Overrun);
7246                }
7247                out[0usize] = alloy_sol_types::abi::token::WordToken(
7248                    Self::SIGNATURE_HASH,
7249                );
7250                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7251                    &self.previousOwner,
7252                );
7253                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7254                    &self.newOwner,
7255                );
7256                Ok(())
7257            }
7258        }
7259        #[automatically_derived]
7260        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7261            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7262                From::from(self)
7263            }
7264            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7265                From::from(&self)
7266            }
7267        }
7268        #[automatically_derived]
7269        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7270            #[inline]
7271            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7272                alloy_sol_types::SolEvent::encode_log_data(this)
7273            }
7274        }
7275    };
7276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7277    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7278```solidity
7279event PermissionedProverNotRequired();
7280```*/
7281    #[allow(
7282        non_camel_case_types,
7283        non_snake_case,
7284        clippy::pub_underscore_fields,
7285        clippy::style
7286    )]
7287    #[derive(Clone)]
7288    pub struct PermissionedProverNotRequired {}
7289    #[allow(
7290        non_camel_case_types,
7291        non_snake_case,
7292        clippy::pub_underscore_fields,
7293        clippy::style
7294    )]
7295    const _: () = {
7296        use alloy::sol_types as alloy_sol_types;
7297        #[automatically_derived]
7298        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7299            type DataTuple<'a> = ();
7300            type DataToken<'a> = <Self::DataTuple<
7301                'a,
7302            > as alloy_sol_types::SolType>::Token<'a>;
7303            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7304            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7305            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7306                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7307                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7308                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7309            ]);
7310            const ANONYMOUS: bool = false;
7311            #[allow(unused_variables)]
7312            #[inline]
7313            fn new(
7314                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7315                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7316            ) -> Self {
7317                Self {}
7318            }
7319            #[inline]
7320            fn check_signature(
7321                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7322            ) -> alloy_sol_types::Result<()> {
7323                if topics.0 != Self::SIGNATURE_HASH {
7324                    return Err(
7325                        alloy_sol_types::Error::invalid_event_signature_hash(
7326                            Self::SIGNATURE,
7327                            topics.0,
7328                            Self::SIGNATURE_HASH,
7329                        ),
7330                    );
7331                }
7332                Ok(())
7333            }
7334            #[inline]
7335            fn tokenize_body(&self) -> Self::DataToken<'_> {
7336                ()
7337            }
7338            #[inline]
7339            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7340                (Self::SIGNATURE_HASH.into(),)
7341            }
7342            #[inline]
7343            fn encode_topics_raw(
7344                &self,
7345                out: &mut [alloy_sol_types::abi::token::WordToken],
7346            ) -> alloy_sol_types::Result<()> {
7347                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7348                    return Err(alloy_sol_types::Error::Overrun);
7349                }
7350                out[0usize] = alloy_sol_types::abi::token::WordToken(
7351                    Self::SIGNATURE_HASH,
7352                );
7353                Ok(())
7354            }
7355        }
7356        #[automatically_derived]
7357        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7358            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7359                From::from(self)
7360            }
7361            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7362                From::from(&self)
7363            }
7364        }
7365        #[automatically_derived]
7366        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7367            #[inline]
7368            fn from(
7369                this: &PermissionedProverNotRequired,
7370            ) -> alloy_sol_types::private::LogData {
7371                alloy_sol_types::SolEvent::encode_log_data(this)
7372            }
7373        }
7374    };
7375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7376    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7377```solidity
7378event PermissionedProverRequired(address permissionedProver);
7379```*/
7380    #[allow(
7381        non_camel_case_types,
7382        non_snake_case,
7383        clippy::pub_underscore_fields,
7384        clippy::style
7385    )]
7386    #[derive(Clone)]
7387    pub struct PermissionedProverRequired {
7388        #[allow(missing_docs)]
7389        pub permissionedProver: alloy::sol_types::private::Address,
7390    }
7391    #[allow(
7392        non_camel_case_types,
7393        non_snake_case,
7394        clippy::pub_underscore_fields,
7395        clippy::style
7396    )]
7397    const _: () = {
7398        use alloy::sol_types as alloy_sol_types;
7399        #[automatically_derived]
7400        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7401            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7402            type DataToken<'a> = <Self::DataTuple<
7403                'a,
7404            > as alloy_sol_types::SolType>::Token<'a>;
7405            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7406            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7407            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7408                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7409                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7410                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7411            ]);
7412            const ANONYMOUS: bool = false;
7413            #[allow(unused_variables)]
7414            #[inline]
7415            fn new(
7416                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7417                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7418            ) -> Self {
7419                Self { permissionedProver: data.0 }
7420            }
7421            #[inline]
7422            fn check_signature(
7423                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7424            ) -> alloy_sol_types::Result<()> {
7425                if topics.0 != Self::SIGNATURE_HASH {
7426                    return Err(
7427                        alloy_sol_types::Error::invalid_event_signature_hash(
7428                            Self::SIGNATURE,
7429                            topics.0,
7430                            Self::SIGNATURE_HASH,
7431                        ),
7432                    );
7433                }
7434                Ok(())
7435            }
7436            #[inline]
7437            fn tokenize_body(&self) -> Self::DataToken<'_> {
7438                (
7439                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7440                        &self.permissionedProver,
7441                    ),
7442                )
7443            }
7444            #[inline]
7445            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7446                (Self::SIGNATURE_HASH.into(),)
7447            }
7448            #[inline]
7449            fn encode_topics_raw(
7450                &self,
7451                out: &mut [alloy_sol_types::abi::token::WordToken],
7452            ) -> alloy_sol_types::Result<()> {
7453                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7454                    return Err(alloy_sol_types::Error::Overrun);
7455                }
7456                out[0usize] = alloy_sol_types::abi::token::WordToken(
7457                    Self::SIGNATURE_HASH,
7458                );
7459                Ok(())
7460            }
7461        }
7462        #[automatically_derived]
7463        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7464            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7465                From::from(self)
7466            }
7467            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7468                From::from(&self)
7469            }
7470        }
7471        #[automatically_derived]
7472        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7473            #[inline]
7474            fn from(
7475                this: &PermissionedProverRequired,
7476            ) -> alloy_sol_types::private::LogData {
7477                alloy_sol_types::SolEvent::encode_log_data(this)
7478            }
7479        }
7480    };
7481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7482    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7483```solidity
7484event Upgrade(address implementation);
7485```*/
7486    #[allow(
7487        non_camel_case_types,
7488        non_snake_case,
7489        clippy::pub_underscore_fields,
7490        clippy::style
7491    )]
7492    #[derive(Clone)]
7493    pub struct Upgrade {
7494        #[allow(missing_docs)]
7495        pub implementation: alloy::sol_types::private::Address,
7496    }
7497    #[allow(
7498        non_camel_case_types,
7499        non_snake_case,
7500        clippy::pub_underscore_fields,
7501        clippy::style
7502    )]
7503    const _: () = {
7504        use alloy::sol_types as alloy_sol_types;
7505        #[automatically_derived]
7506        impl alloy_sol_types::SolEvent for Upgrade {
7507            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7508            type DataToken<'a> = <Self::DataTuple<
7509                'a,
7510            > as alloy_sol_types::SolType>::Token<'a>;
7511            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7512            const SIGNATURE: &'static str = "Upgrade(address)";
7513            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7514                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7515                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7516                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7517            ]);
7518            const ANONYMOUS: bool = false;
7519            #[allow(unused_variables)]
7520            #[inline]
7521            fn new(
7522                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7523                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7524            ) -> Self {
7525                Self { implementation: data.0 }
7526            }
7527            #[inline]
7528            fn check_signature(
7529                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7530            ) -> alloy_sol_types::Result<()> {
7531                if topics.0 != Self::SIGNATURE_HASH {
7532                    return Err(
7533                        alloy_sol_types::Error::invalid_event_signature_hash(
7534                            Self::SIGNATURE,
7535                            topics.0,
7536                            Self::SIGNATURE_HASH,
7537                        ),
7538                    );
7539                }
7540                Ok(())
7541            }
7542            #[inline]
7543            fn tokenize_body(&self) -> Self::DataToken<'_> {
7544                (
7545                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7546                        &self.implementation,
7547                    ),
7548                )
7549            }
7550            #[inline]
7551            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7552                (Self::SIGNATURE_HASH.into(),)
7553            }
7554            #[inline]
7555            fn encode_topics_raw(
7556                &self,
7557                out: &mut [alloy_sol_types::abi::token::WordToken],
7558            ) -> alloy_sol_types::Result<()> {
7559                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7560                    return Err(alloy_sol_types::Error::Overrun);
7561                }
7562                out[0usize] = alloy_sol_types::abi::token::WordToken(
7563                    Self::SIGNATURE_HASH,
7564                );
7565                Ok(())
7566            }
7567        }
7568        #[automatically_derived]
7569        impl alloy_sol_types::private::IntoLogData for Upgrade {
7570            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7571                From::from(self)
7572            }
7573            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7574                From::from(&self)
7575            }
7576        }
7577        #[automatically_derived]
7578        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7579            #[inline]
7580            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7581                alloy_sol_types::SolEvent::encode_log_data(this)
7582            }
7583        }
7584    };
7585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7586    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7587```solidity
7588event Upgraded(address indexed implementation);
7589```*/
7590    #[allow(
7591        non_camel_case_types,
7592        non_snake_case,
7593        clippy::pub_underscore_fields,
7594        clippy::style
7595    )]
7596    #[derive(Clone)]
7597    pub struct Upgraded {
7598        #[allow(missing_docs)]
7599        pub implementation: alloy::sol_types::private::Address,
7600    }
7601    #[allow(
7602        non_camel_case_types,
7603        non_snake_case,
7604        clippy::pub_underscore_fields,
7605        clippy::style
7606    )]
7607    const _: () = {
7608        use alloy::sol_types as alloy_sol_types;
7609        #[automatically_derived]
7610        impl alloy_sol_types::SolEvent for Upgraded {
7611            type DataTuple<'a> = ();
7612            type DataToken<'a> = <Self::DataTuple<
7613                'a,
7614            > as alloy_sol_types::SolType>::Token<'a>;
7615            type TopicList = (
7616                alloy_sol_types::sol_data::FixedBytes<32>,
7617                alloy::sol_types::sol_data::Address,
7618            );
7619            const SIGNATURE: &'static str = "Upgraded(address)";
7620            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7621                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7622                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7623                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7624            ]);
7625            const ANONYMOUS: bool = false;
7626            #[allow(unused_variables)]
7627            #[inline]
7628            fn new(
7629                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7630                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7631            ) -> Self {
7632                Self { implementation: topics.1 }
7633            }
7634            #[inline]
7635            fn check_signature(
7636                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7637            ) -> alloy_sol_types::Result<()> {
7638                if topics.0 != Self::SIGNATURE_HASH {
7639                    return Err(
7640                        alloy_sol_types::Error::invalid_event_signature_hash(
7641                            Self::SIGNATURE,
7642                            topics.0,
7643                            Self::SIGNATURE_HASH,
7644                        ),
7645                    );
7646                }
7647                Ok(())
7648            }
7649            #[inline]
7650            fn tokenize_body(&self) -> Self::DataToken<'_> {
7651                ()
7652            }
7653            #[inline]
7654            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7655                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7656            }
7657            #[inline]
7658            fn encode_topics_raw(
7659                &self,
7660                out: &mut [alloy_sol_types::abi::token::WordToken],
7661            ) -> alloy_sol_types::Result<()> {
7662                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7663                    return Err(alloy_sol_types::Error::Overrun);
7664                }
7665                out[0usize] = alloy_sol_types::abi::token::WordToken(
7666                    Self::SIGNATURE_HASH,
7667                );
7668                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7669                    &self.implementation,
7670                );
7671                Ok(())
7672            }
7673        }
7674        #[automatically_derived]
7675        impl alloy_sol_types::private::IntoLogData for Upgraded {
7676            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7677                From::from(self)
7678            }
7679            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7680                From::from(&self)
7681            }
7682        }
7683        #[automatically_derived]
7684        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7685            #[inline]
7686            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7687                alloy_sol_types::SolEvent::encode_log_data(this)
7688            }
7689        }
7690    };
7691    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7692    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7693```solidity
7694function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7695```*/
7696    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7697    #[derive(Clone)]
7698    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7700    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7702    #[derive(Clone)]
7703    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7704        #[allow(missing_docs)]
7705        pub _0: alloy::sol_types::private::String,
7706    }
7707    #[allow(
7708        non_camel_case_types,
7709        non_snake_case,
7710        clippy::pub_underscore_fields,
7711        clippy::style
7712    )]
7713    const _: () = {
7714        use alloy::sol_types as alloy_sol_types;
7715        {
7716            #[doc(hidden)]
7717            type UnderlyingSolTuple<'a> = ();
7718            #[doc(hidden)]
7719            type UnderlyingRustTuple<'a> = ();
7720            #[cfg(test)]
7721            #[allow(dead_code, unreachable_patterns)]
7722            fn _type_assertion(
7723                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7724            ) {
7725                match _t {
7726                    alloy_sol_types::private::AssertTypeEq::<
7727                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7728                    >(_) => {}
7729                }
7730            }
7731            #[automatically_derived]
7732            #[doc(hidden)]
7733            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7734            for UnderlyingRustTuple<'_> {
7735                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7736                    ()
7737                }
7738            }
7739            #[automatically_derived]
7740            #[doc(hidden)]
7741            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7742            for UPGRADE_INTERFACE_VERSIONCall {
7743                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7744                    Self {}
7745                }
7746            }
7747        }
7748        {
7749            #[doc(hidden)]
7750            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7751            #[doc(hidden)]
7752            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7753            #[cfg(test)]
7754            #[allow(dead_code, unreachable_patterns)]
7755            fn _type_assertion(
7756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7757            ) {
7758                match _t {
7759                    alloy_sol_types::private::AssertTypeEq::<
7760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7761                    >(_) => {}
7762                }
7763            }
7764            #[automatically_derived]
7765            #[doc(hidden)]
7766            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7767            for UnderlyingRustTuple<'_> {
7768                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7769                    (value._0,)
7770                }
7771            }
7772            #[automatically_derived]
7773            #[doc(hidden)]
7774            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7775            for UPGRADE_INTERFACE_VERSIONReturn {
7776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7777                    Self { _0: tuple.0 }
7778                }
7779            }
7780        }
7781        #[automatically_derived]
7782        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7783            type Parameters<'a> = ();
7784            type Token<'a> = <Self::Parameters<
7785                'a,
7786            > as alloy_sol_types::SolType>::Token<'a>;
7787            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7788            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7789            type ReturnToken<'a> = <Self::ReturnTuple<
7790                'a,
7791            > as alloy_sol_types::SolType>::Token<'a>;
7792            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7793            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7794            #[inline]
7795            fn new<'a>(
7796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7797            ) -> Self {
7798                tuple.into()
7799            }
7800            #[inline]
7801            fn tokenize(&self) -> Self::Token<'_> {
7802                ()
7803            }
7804            #[inline]
7805            fn abi_decode_returns(
7806                data: &[u8],
7807                validate: bool,
7808            ) -> alloy_sol_types::Result<Self::Return> {
7809                <Self::ReturnTuple<
7810                    '_,
7811                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7812                    .map(Into::into)
7813            }
7814        }
7815    };
7816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7817    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7818```solidity
7819function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7820```*/
7821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7822    #[derive(Clone)]
7823    pub struct _getVkCall {}
7824    #[derive()]
7825    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7827    #[derive(Clone)]
7828    pub struct _getVkReturn {
7829        #[allow(missing_docs)]
7830        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7831    }
7832    #[allow(
7833        non_camel_case_types,
7834        non_snake_case,
7835        clippy::pub_underscore_fields,
7836        clippy::style
7837    )]
7838    const _: () = {
7839        use alloy::sol_types as alloy_sol_types;
7840        {
7841            #[doc(hidden)]
7842            type UnderlyingSolTuple<'a> = ();
7843            #[doc(hidden)]
7844            type UnderlyingRustTuple<'a> = ();
7845            #[cfg(test)]
7846            #[allow(dead_code, unreachable_patterns)]
7847            fn _type_assertion(
7848                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7849            ) {
7850                match _t {
7851                    alloy_sol_types::private::AssertTypeEq::<
7852                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7853                    >(_) => {}
7854                }
7855            }
7856            #[automatically_derived]
7857            #[doc(hidden)]
7858            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7859                fn from(value: _getVkCall) -> Self {
7860                    ()
7861                }
7862            }
7863            #[automatically_derived]
7864            #[doc(hidden)]
7865            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7866                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7867                    Self {}
7868                }
7869            }
7870        }
7871        {
7872            #[doc(hidden)]
7873            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7874            #[doc(hidden)]
7875            type UnderlyingRustTuple<'a> = (
7876                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7877            );
7878            #[cfg(test)]
7879            #[allow(dead_code, unreachable_patterns)]
7880            fn _type_assertion(
7881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7882            ) {
7883                match _t {
7884                    alloy_sol_types::private::AssertTypeEq::<
7885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7886                    >(_) => {}
7887                }
7888            }
7889            #[automatically_derived]
7890            #[doc(hidden)]
7891            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7892                fn from(value: _getVkReturn) -> Self {
7893                    (value.vk,)
7894                }
7895            }
7896            #[automatically_derived]
7897            #[doc(hidden)]
7898            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7899                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7900                    Self { vk: tuple.0 }
7901                }
7902            }
7903        }
7904        #[automatically_derived]
7905        impl alloy_sol_types::SolCall for _getVkCall {
7906            type Parameters<'a> = ();
7907            type Token<'a> = <Self::Parameters<
7908                'a,
7909            > as alloy_sol_types::SolType>::Token<'a>;
7910            type Return = _getVkReturn;
7911            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7912            type ReturnToken<'a> = <Self::ReturnTuple<
7913                'a,
7914            > as alloy_sol_types::SolType>::Token<'a>;
7915            const SIGNATURE: &'static str = "_getVk()";
7916            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7917            #[inline]
7918            fn new<'a>(
7919                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7920            ) -> Self {
7921                tuple.into()
7922            }
7923            #[inline]
7924            fn tokenize(&self) -> Self::Token<'_> {
7925                ()
7926            }
7927            #[inline]
7928            fn abi_decode_returns(
7929                data: &[u8],
7930                validate: bool,
7931            ) -> alloy_sol_types::Result<Self::Return> {
7932                <Self::ReturnTuple<
7933                    '_,
7934                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7935                    .map(Into::into)
7936            }
7937        }
7938    };
7939    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7940    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7941```solidity
7942function blocksPerEpoch() external view returns (uint64);
7943```*/
7944    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7945    #[derive(Clone)]
7946    pub struct blocksPerEpochCall {}
7947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7948    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7950    #[derive(Clone)]
7951    pub struct blocksPerEpochReturn {
7952        #[allow(missing_docs)]
7953        pub _0: u64,
7954    }
7955    #[allow(
7956        non_camel_case_types,
7957        non_snake_case,
7958        clippy::pub_underscore_fields,
7959        clippy::style
7960    )]
7961    const _: () = {
7962        use alloy::sol_types as alloy_sol_types;
7963        {
7964            #[doc(hidden)]
7965            type UnderlyingSolTuple<'a> = ();
7966            #[doc(hidden)]
7967            type UnderlyingRustTuple<'a> = ();
7968            #[cfg(test)]
7969            #[allow(dead_code, unreachable_patterns)]
7970            fn _type_assertion(
7971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7972            ) {
7973                match _t {
7974                    alloy_sol_types::private::AssertTypeEq::<
7975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7976                    >(_) => {}
7977                }
7978            }
7979            #[automatically_derived]
7980            #[doc(hidden)]
7981            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7982                fn from(value: blocksPerEpochCall) -> Self {
7983                    ()
7984                }
7985            }
7986            #[automatically_derived]
7987            #[doc(hidden)]
7988            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7989                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7990                    Self {}
7991                }
7992            }
7993        }
7994        {
7995            #[doc(hidden)]
7996            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7997            #[doc(hidden)]
7998            type UnderlyingRustTuple<'a> = (u64,);
7999            #[cfg(test)]
8000            #[allow(dead_code, unreachable_patterns)]
8001            fn _type_assertion(
8002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8003            ) {
8004                match _t {
8005                    alloy_sol_types::private::AssertTypeEq::<
8006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8007                    >(_) => {}
8008                }
8009            }
8010            #[automatically_derived]
8011            #[doc(hidden)]
8012            impl ::core::convert::From<blocksPerEpochReturn>
8013            for UnderlyingRustTuple<'_> {
8014                fn from(value: blocksPerEpochReturn) -> Self {
8015                    (value._0,)
8016                }
8017            }
8018            #[automatically_derived]
8019            #[doc(hidden)]
8020            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8021            for blocksPerEpochReturn {
8022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8023                    Self { _0: tuple.0 }
8024                }
8025            }
8026        }
8027        #[automatically_derived]
8028        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8029            type Parameters<'a> = ();
8030            type Token<'a> = <Self::Parameters<
8031                'a,
8032            > as alloy_sol_types::SolType>::Token<'a>;
8033            type Return = blocksPerEpochReturn;
8034            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8035            type ReturnToken<'a> = <Self::ReturnTuple<
8036                'a,
8037            > as alloy_sol_types::SolType>::Token<'a>;
8038            const SIGNATURE: &'static str = "blocksPerEpoch()";
8039            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8040            #[inline]
8041            fn new<'a>(
8042                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8043            ) -> Self {
8044                tuple.into()
8045            }
8046            #[inline]
8047            fn tokenize(&self) -> Self::Token<'_> {
8048                ()
8049            }
8050            #[inline]
8051            fn abi_decode_returns(
8052                data: &[u8],
8053                validate: bool,
8054            ) -> alloy_sol_types::Result<Self::Return> {
8055                <Self::ReturnTuple<
8056                    '_,
8057                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8058                    .map(Into::into)
8059            }
8060        }
8061    };
8062    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8063    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8064```solidity
8065function currentBlockNumber() external view returns (uint256);
8066```*/
8067    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8068    #[derive(Clone)]
8069    pub struct currentBlockNumberCall {}
8070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8071    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8073    #[derive(Clone)]
8074    pub struct currentBlockNumberReturn {
8075        #[allow(missing_docs)]
8076        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8077    }
8078    #[allow(
8079        non_camel_case_types,
8080        non_snake_case,
8081        clippy::pub_underscore_fields,
8082        clippy::style
8083    )]
8084    const _: () = {
8085        use alloy::sol_types as alloy_sol_types;
8086        {
8087            #[doc(hidden)]
8088            type UnderlyingSolTuple<'a> = ();
8089            #[doc(hidden)]
8090            type UnderlyingRustTuple<'a> = ();
8091            #[cfg(test)]
8092            #[allow(dead_code, unreachable_patterns)]
8093            fn _type_assertion(
8094                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8095            ) {
8096                match _t {
8097                    alloy_sol_types::private::AssertTypeEq::<
8098                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8099                    >(_) => {}
8100                }
8101            }
8102            #[automatically_derived]
8103            #[doc(hidden)]
8104            impl ::core::convert::From<currentBlockNumberCall>
8105            for UnderlyingRustTuple<'_> {
8106                fn from(value: currentBlockNumberCall) -> Self {
8107                    ()
8108                }
8109            }
8110            #[automatically_derived]
8111            #[doc(hidden)]
8112            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8113            for currentBlockNumberCall {
8114                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8115                    Self {}
8116                }
8117            }
8118        }
8119        {
8120            #[doc(hidden)]
8121            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8122            #[doc(hidden)]
8123            type UnderlyingRustTuple<'a> = (
8124                alloy::sol_types::private::primitives::aliases::U256,
8125            );
8126            #[cfg(test)]
8127            #[allow(dead_code, unreachable_patterns)]
8128            fn _type_assertion(
8129                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8130            ) {
8131                match _t {
8132                    alloy_sol_types::private::AssertTypeEq::<
8133                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8134                    >(_) => {}
8135                }
8136            }
8137            #[automatically_derived]
8138            #[doc(hidden)]
8139            impl ::core::convert::From<currentBlockNumberReturn>
8140            for UnderlyingRustTuple<'_> {
8141                fn from(value: currentBlockNumberReturn) -> Self {
8142                    (value._0,)
8143                }
8144            }
8145            #[automatically_derived]
8146            #[doc(hidden)]
8147            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8148            for currentBlockNumberReturn {
8149                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8150                    Self { _0: tuple.0 }
8151                }
8152            }
8153        }
8154        #[automatically_derived]
8155        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8156            type Parameters<'a> = ();
8157            type Token<'a> = <Self::Parameters<
8158                'a,
8159            > as alloy_sol_types::SolType>::Token<'a>;
8160            type Return = currentBlockNumberReturn;
8161            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8162            type ReturnToken<'a> = <Self::ReturnTuple<
8163                'a,
8164            > as alloy_sol_types::SolType>::Token<'a>;
8165            const SIGNATURE: &'static str = "currentBlockNumber()";
8166            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8167            #[inline]
8168            fn new<'a>(
8169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8170            ) -> Self {
8171                tuple.into()
8172            }
8173            #[inline]
8174            fn tokenize(&self) -> Self::Token<'_> {
8175                ()
8176            }
8177            #[inline]
8178            fn abi_decode_returns(
8179                data: &[u8],
8180                validate: bool,
8181            ) -> alloy_sol_types::Result<Self::Return> {
8182                <Self::ReturnTuple<
8183                    '_,
8184                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8185                    .map(Into::into)
8186            }
8187        }
8188    };
8189    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8190    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8191```solidity
8192function currentEpoch() external view returns (uint64);
8193```*/
8194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8195    #[derive(Clone)]
8196    pub struct currentEpochCall {}
8197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8198    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8200    #[derive(Clone)]
8201    pub struct currentEpochReturn {
8202        #[allow(missing_docs)]
8203        pub _0: u64,
8204    }
8205    #[allow(
8206        non_camel_case_types,
8207        non_snake_case,
8208        clippy::pub_underscore_fields,
8209        clippy::style
8210    )]
8211    const _: () = {
8212        use alloy::sol_types as alloy_sol_types;
8213        {
8214            #[doc(hidden)]
8215            type UnderlyingSolTuple<'a> = ();
8216            #[doc(hidden)]
8217            type UnderlyingRustTuple<'a> = ();
8218            #[cfg(test)]
8219            #[allow(dead_code, unreachable_patterns)]
8220            fn _type_assertion(
8221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8222            ) {
8223                match _t {
8224                    alloy_sol_types::private::AssertTypeEq::<
8225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8226                    >(_) => {}
8227                }
8228            }
8229            #[automatically_derived]
8230            #[doc(hidden)]
8231            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8232                fn from(value: currentEpochCall) -> Self {
8233                    ()
8234                }
8235            }
8236            #[automatically_derived]
8237            #[doc(hidden)]
8238            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8240                    Self {}
8241                }
8242            }
8243        }
8244        {
8245            #[doc(hidden)]
8246            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8247            #[doc(hidden)]
8248            type UnderlyingRustTuple<'a> = (u64,);
8249            #[cfg(test)]
8250            #[allow(dead_code, unreachable_patterns)]
8251            fn _type_assertion(
8252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8253            ) {
8254                match _t {
8255                    alloy_sol_types::private::AssertTypeEq::<
8256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8257                    >(_) => {}
8258                }
8259            }
8260            #[automatically_derived]
8261            #[doc(hidden)]
8262            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8263                fn from(value: currentEpochReturn) -> Self {
8264                    (value._0,)
8265                }
8266            }
8267            #[automatically_derived]
8268            #[doc(hidden)]
8269            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8270                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8271                    Self { _0: tuple.0 }
8272                }
8273            }
8274        }
8275        #[automatically_derived]
8276        impl alloy_sol_types::SolCall for currentEpochCall {
8277            type Parameters<'a> = ();
8278            type Token<'a> = <Self::Parameters<
8279                'a,
8280            > as alloy_sol_types::SolType>::Token<'a>;
8281            type Return = currentEpochReturn;
8282            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8283            type ReturnToken<'a> = <Self::ReturnTuple<
8284                'a,
8285            > as alloy_sol_types::SolType>::Token<'a>;
8286            const SIGNATURE: &'static str = "currentEpoch()";
8287            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8288            #[inline]
8289            fn new<'a>(
8290                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8291            ) -> Self {
8292                tuple.into()
8293            }
8294            #[inline]
8295            fn tokenize(&self) -> Self::Token<'_> {
8296                ()
8297            }
8298            #[inline]
8299            fn abi_decode_returns(
8300                data: &[u8],
8301                validate: bool,
8302            ) -> alloy_sol_types::Result<Self::Return> {
8303                <Self::ReturnTuple<
8304                    '_,
8305                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8306                    .map(Into::into)
8307            }
8308        }
8309    };
8310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8311    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8312```solidity
8313function disablePermissionedProverMode() external;
8314```*/
8315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8316    #[derive(Clone)]
8317    pub struct disablePermissionedProverModeCall {}
8318    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8319    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8320    #[derive(Clone)]
8321    pub struct disablePermissionedProverModeReturn {}
8322    #[allow(
8323        non_camel_case_types,
8324        non_snake_case,
8325        clippy::pub_underscore_fields,
8326        clippy::style
8327    )]
8328    const _: () = {
8329        use alloy::sol_types as alloy_sol_types;
8330        {
8331            #[doc(hidden)]
8332            type UnderlyingSolTuple<'a> = ();
8333            #[doc(hidden)]
8334            type UnderlyingRustTuple<'a> = ();
8335            #[cfg(test)]
8336            #[allow(dead_code, unreachable_patterns)]
8337            fn _type_assertion(
8338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8339            ) {
8340                match _t {
8341                    alloy_sol_types::private::AssertTypeEq::<
8342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8343                    >(_) => {}
8344                }
8345            }
8346            #[automatically_derived]
8347            #[doc(hidden)]
8348            impl ::core::convert::From<disablePermissionedProverModeCall>
8349            for UnderlyingRustTuple<'_> {
8350                fn from(value: disablePermissionedProverModeCall) -> Self {
8351                    ()
8352                }
8353            }
8354            #[automatically_derived]
8355            #[doc(hidden)]
8356            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8357            for disablePermissionedProverModeCall {
8358                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8359                    Self {}
8360                }
8361            }
8362        }
8363        {
8364            #[doc(hidden)]
8365            type UnderlyingSolTuple<'a> = ();
8366            #[doc(hidden)]
8367            type UnderlyingRustTuple<'a> = ();
8368            #[cfg(test)]
8369            #[allow(dead_code, unreachable_patterns)]
8370            fn _type_assertion(
8371                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8372            ) {
8373                match _t {
8374                    alloy_sol_types::private::AssertTypeEq::<
8375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8376                    >(_) => {}
8377                }
8378            }
8379            #[automatically_derived]
8380            #[doc(hidden)]
8381            impl ::core::convert::From<disablePermissionedProverModeReturn>
8382            for UnderlyingRustTuple<'_> {
8383                fn from(value: disablePermissionedProverModeReturn) -> Self {
8384                    ()
8385                }
8386            }
8387            #[automatically_derived]
8388            #[doc(hidden)]
8389            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8390            for disablePermissionedProverModeReturn {
8391                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8392                    Self {}
8393                }
8394            }
8395        }
8396        #[automatically_derived]
8397        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8398            type Parameters<'a> = ();
8399            type Token<'a> = <Self::Parameters<
8400                'a,
8401            > as alloy_sol_types::SolType>::Token<'a>;
8402            type Return = disablePermissionedProverModeReturn;
8403            type ReturnTuple<'a> = ();
8404            type ReturnToken<'a> = <Self::ReturnTuple<
8405                'a,
8406            > as alloy_sol_types::SolType>::Token<'a>;
8407            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8408            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8409            #[inline]
8410            fn new<'a>(
8411                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8412            ) -> Self {
8413                tuple.into()
8414            }
8415            #[inline]
8416            fn tokenize(&self) -> Self::Token<'_> {
8417                ()
8418            }
8419            #[inline]
8420            fn abi_decode_returns(
8421                data: &[u8],
8422                validate: bool,
8423            ) -> alloy_sol_types::Result<Self::Return> {
8424                <Self::ReturnTuple<
8425                    '_,
8426                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8427                    .map(Into::into)
8428            }
8429        }
8430    };
8431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8432    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8433```solidity
8434function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8435```*/
8436    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8437    #[derive(Clone)]
8438    pub struct epochFromBlockNumberCall {
8439        #[allow(missing_docs)]
8440        pub _blockNum: u64,
8441        #[allow(missing_docs)]
8442        pub _blocksPerEpoch: u64,
8443    }
8444    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8445    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8447    #[derive(Clone)]
8448    pub struct epochFromBlockNumberReturn {
8449        #[allow(missing_docs)]
8450        pub _0: u64,
8451    }
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            type UnderlyingSolTuple<'a> = (
8463                alloy::sol_types::sol_data::Uint<64>,
8464                alloy::sol_types::sol_data::Uint<64>,
8465            );
8466            #[doc(hidden)]
8467            type UnderlyingRustTuple<'a> = (u64, u64);
8468            #[cfg(test)]
8469            #[allow(dead_code, unreachable_patterns)]
8470            fn _type_assertion(
8471                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8472            ) {
8473                match _t {
8474                    alloy_sol_types::private::AssertTypeEq::<
8475                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8476                    >(_) => {}
8477                }
8478            }
8479            #[automatically_derived]
8480            #[doc(hidden)]
8481            impl ::core::convert::From<epochFromBlockNumberCall>
8482            for UnderlyingRustTuple<'_> {
8483                fn from(value: epochFromBlockNumberCall) -> Self {
8484                    (value._blockNum, value._blocksPerEpoch)
8485                }
8486            }
8487            #[automatically_derived]
8488            #[doc(hidden)]
8489            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8490            for epochFromBlockNumberCall {
8491                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8492                    Self {
8493                        _blockNum: tuple.0,
8494                        _blocksPerEpoch: tuple.1,
8495                    }
8496                }
8497            }
8498        }
8499        {
8500            #[doc(hidden)]
8501            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8502            #[doc(hidden)]
8503            type UnderlyingRustTuple<'a> = (u64,);
8504            #[cfg(test)]
8505            #[allow(dead_code, unreachable_patterns)]
8506            fn _type_assertion(
8507                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8508            ) {
8509                match _t {
8510                    alloy_sol_types::private::AssertTypeEq::<
8511                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8512                    >(_) => {}
8513                }
8514            }
8515            #[automatically_derived]
8516            #[doc(hidden)]
8517            impl ::core::convert::From<epochFromBlockNumberReturn>
8518            for UnderlyingRustTuple<'_> {
8519                fn from(value: epochFromBlockNumberReturn) -> Self {
8520                    (value._0,)
8521                }
8522            }
8523            #[automatically_derived]
8524            #[doc(hidden)]
8525            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8526            for epochFromBlockNumberReturn {
8527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8528                    Self { _0: tuple.0 }
8529                }
8530            }
8531        }
8532        #[automatically_derived]
8533        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8534            type Parameters<'a> = (
8535                alloy::sol_types::sol_data::Uint<64>,
8536                alloy::sol_types::sol_data::Uint<64>,
8537            );
8538            type Token<'a> = <Self::Parameters<
8539                'a,
8540            > as alloy_sol_types::SolType>::Token<'a>;
8541            type Return = epochFromBlockNumberReturn;
8542            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8543            type ReturnToken<'a> = <Self::ReturnTuple<
8544                'a,
8545            > as alloy_sol_types::SolType>::Token<'a>;
8546            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8547            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8548            #[inline]
8549            fn new<'a>(
8550                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8551            ) -> Self {
8552                tuple.into()
8553            }
8554            #[inline]
8555            fn tokenize(&self) -> Self::Token<'_> {
8556                (
8557                    <alloy::sol_types::sol_data::Uint<
8558                        64,
8559                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8560                    <alloy::sol_types::sol_data::Uint<
8561                        64,
8562                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8563                )
8564            }
8565            #[inline]
8566            fn abi_decode_returns(
8567                data: &[u8],
8568                validate: bool,
8569            ) -> alloy_sol_types::Result<Self::Return> {
8570                <Self::ReturnTuple<
8571                    '_,
8572                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8573                    .map(Into::into)
8574            }
8575        }
8576    };
8577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8578    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8579```solidity
8580function epochStartBlock() external view returns (uint64);
8581```*/
8582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8583    #[derive(Clone)]
8584    pub struct epochStartBlockCall {}
8585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8586    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8588    #[derive(Clone)]
8589    pub struct epochStartBlockReturn {
8590        #[allow(missing_docs)]
8591        pub _0: u64,
8592    }
8593    #[allow(
8594        non_camel_case_types,
8595        non_snake_case,
8596        clippy::pub_underscore_fields,
8597        clippy::style
8598    )]
8599    const _: () = {
8600        use alloy::sol_types as alloy_sol_types;
8601        {
8602            #[doc(hidden)]
8603            type UnderlyingSolTuple<'a> = ();
8604            #[doc(hidden)]
8605            type UnderlyingRustTuple<'a> = ();
8606            #[cfg(test)]
8607            #[allow(dead_code, unreachable_patterns)]
8608            fn _type_assertion(
8609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8610            ) {
8611                match _t {
8612                    alloy_sol_types::private::AssertTypeEq::<
8613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8614                    >(_) => {}
8615                }
8616            }
8617            #[automatically_derived]
8618            #[doc(hidden)]
8619            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8620                fn from(value: epochStartBlockCall) -> Self {
8621                    ()
8622                }
8623            }
8624            #[automatically_derived]
8625            #[doc(hidden)]
8626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8628                    Self {}
8629                }
8630            }
8631        }
8632        {
8633            #[doc(hidden)]
8634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8635            #[doc(hidden)]
8636            type UnderlyingRustTuple<'a> = (u64,);
8637            #[cfg(test)]
8638            #[allow(dead_code, unreachable_patterns)]
8639            fn _type_assertion(
8640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8641            ) {
8642                match _t {
8643                    alloy_sol_types::private::AssertTypeEq::<
8644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8645                    >(_) => {}
8646                }
8647            }
8648            #[automatically_derived]
8649            #[doc(hidden)]
8650            impl ::core::convert::From<epochStartBlockReturn>
8651            for UnderlyingRustTuple<'_> {
8652                fn from(value: epochStartBlockReturn) -> Self {
8653                    (value._0,)
8654                }
8655            }
8656            #[automatically_derived]
8657            #[doc(hidden)]
8658            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8659            for epochStartBlockReturn {
8660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8661                    Self { _0: tuple.0 }
8662                }
8663            }
8664        }
8665        #[automatically_derived]
8666        impl alloy_sol_types::SolCall for epochStartBlockCall {
8667            type Parameters<'a> = ();
8668            type Token<'a> = <Self::Parameters<
8669                'a,
8670            > as alloy_sol_types::SolType>::Token<'a>;
8671            type Return = epochStartBlockReturn;
8672            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8673            type ReturnToken<'a> = <Self::ReturnTuple<
8674                'a,
8675            > as alloy_sol_types::SolType>::Token<'a>;
8676            const SIGNATURE: &'static str = "epochStartBlock()";
8677            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8678            #[inline]
8679            fn new<'a>(
8680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8681            ) -> Self {
8682                tuple.into()
8683            }
8684            #[inline]
8685            fn tokenize(&self) -> Self::Token<'_> {
8686                ()
8687            }
8688            #[inline]
8689            fn abi_decode_returns(
8690                data: &[u8],
8691                validate: bool,
8692            ) -> alloy_sol_types::Result<Self::Return> {
8693                <Self::ReturnTuple<
8694                    '_,
8695                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8696                    .map(Into::into)
8697            }
8698        }
8699    };
8700    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8701    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8702```solidity
8703function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8704```*/
8705    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8706    #[derive(Clone)]
8707    pub struct finalizedStateCall {}
8708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8709    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8711    #[derive(Clone)]
8712    pub struct finalizedStateReturn {
8713        #[allow(missing_docs)]
8714        pub viewNum: u64,
8715        #[allow(missing_docs)]
8716        pub blockHeight: u64,
8717        #[allow(missing_docs)]
8718        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8719    }
8720    #[allow(
8721        non_camel_case_types,
8722        non_snake_case,
8723        clippy::pub_underscore_fields,
8724        clippy::style
8725    )]
8726    const _: () = {
8727        use alloy::sol_types as alloy_sol_types;
8728        {
8729            #[doc(hidden)]
8730            type UnderlyingSolTuple<'a> = ();
8731            #[doc(hidden)]
8732            type UnderlyingRustTuple<'a> = ();
8733            #[cfg(test)]
8734            #[allow(dead_code, unreachable_patterns)]
8735            fn _type_assertion(
8736                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8737            ) {
8738                match _t {
8739                    alloy_sol_types::private::AssertTypeEq::<
8740                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8741                    >(_) => {}
8742                }
8743            }
8744            #[automatically_derived]
8745            #[doc(hidden)]
8746            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8747                fn from(value: finalizedStateCall) -> Self {
8748                    ()
8749                }
8750            }
8751            #[automatically_derived]
8752            #[doc(hidden)]
8753            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8755                    Self {}
8756                }
8757            }
8758        }
8759        {
8760            #[doc(hidden)]
8761            type UnderlyingSolTuple<'a> = (
8762                alloy::sol_types::sol_data::Uint<64>,
8763                alloy::sol_types::sol_data::Uint<64>,
8764                BN254::ScalarField,
8765            );
8766            #[doc(hidden)]
8767            type UnderlyingRustTuple<'a> = (
8768                u64,
8769                u64,
8770                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8771            );
8772            #[cfg(test)]
8773            #[allow(dead_code, unreachable_patterns)]
8774            fn _type_assertion(
8775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8776            ) {
8777                match _t {
8778                    alloy_sol_types::private::AssertTypeEq::<
8779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8780                    >(_) => {}
8781                }
8782            }
8783            #[automatically_derived]
8784            #[doc(hidden)]
8785            impl ::core::convert::From<finalizedStateReturn>
8786            for UnderlyingRustTuple<'_> {
8787                fn from(value: finalizedStateReturn) -> Self {
8788                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8789                }
8790            }
8791            #[automatically_derived]
8792            #[doc(hidden)]
8793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8794            for finalizedStateReturn {
8795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8796                    Self {
8797                        viewNum: tuple.0,
8798                        blockHeight: tuple.1,
8799                        blockCommRoot: tuple.2,
8800                    }
8801                }
8802            }
8803        }
8804        #[automatically_derived]
8805        impl alloy_sol_types::SolCall for finalizedStateCall {
8806            type Parameters<'a> = ();
8807            type Token<'a> = <Self::Parameters<
8808                'a,
8809            > as alloy_sol_types::SolType>::Token<'a>;
8810            type Return = finalizedStateReturn;
8811            type ReturnTuple<'a> = (
8812                alloy::sol_types::sol_data::Uint<64>,
8813                alloy::sol_types::sol_data::Uint<64>,
8814                BN254::ScalarField,
8815            );
8816            type ReturnToken<'a> = <Self::ReturnTuple<
8817                'a,
8818            > as alloy_sol_types::SolType>::Token<'a>;
8819            const SIGNATURE: &'static str = "finalizedState()";
8820            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8821            #[inline]
8822            fn new<'a>(
8823                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8824            ) -> Self {
8825                tuple.into()
8826            }
8827            #[inline]
8828            fn tokenize(&self) -> Self::Token<'_> {
8829                ()
8830            }
8831            #[inline]
8832            fn abi_decode_returns(
8833                data: &[u8],
8834                validate: bool,
8835            ) -> alloy_sol_types::Result<Self::Return> {
8836                <Self::ReturnTuple<
8837                    '_,
8838                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8839                    .map(Into::into)
8840            }
8841        }
8842    };
8843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8844    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8845```solidity
8846function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8847```*/
8848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8849    #[derive(Clone)]
8850    pub struct genesisStakeTableStateCall {}
8851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8852    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8854    #[derive(Clone)]
8855    pub struct genesisStakeTableStateReturn {
8856        #[allow(missing_docs)]
8857        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8858        #[allow(missing_docs)]
8859        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8860        #[allow(missing_docs)]
8861        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8862        #[allow(missing_docs)]
8863        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8864    }
8865    #[allow(
8866        non_camel_case_types,
8867        non_snake_case,
8868        clippy::pub_underscore_fields,
8869        clippy::style
8870    )]
8871    const _: () = {
8872        use alloy::sol_types as alloy_sol_types;
8873        {
8874            #[doc(hidden)]
8875            type UnderlyingSolTuple<'a> = ();
8876            #[doc(hidden)]
8877            type UnderlyingRustTuple<'a> = ();
8878            #[cfg(test)]
8879            #[allow(dead_code, unreachable_patterns)]
8880            fn _type_assertion(
8881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8882            ) {
8883                match _t {
8884                    alloy_sol_types::private::AssertTypeEq::<
8885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8886                    >(_) => {}
8887                }
8888            }
8889            #[automatically_derived]
8890            #[doc(hidden)]
8891            impl ::core::convert::From<genesisStakeTableStateCall>
8892            for UnderlyingRustTuple<'_> {
8893                fn from(value: genesisStakeTableStateCall) -> Self {
8894                    ()
8895                }
8896            }
8897            #[automatically_derived]
8898            #[doc(hidden)]
8899            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8900            for genesisStakeTableStateCall {
8901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8902                    Self {}
8903                }
8904            }
8905        }
8906        {
8907            #[doc(hidden)]
8908            type UnderlyingSolTuple<'a> = (
8909                alloy::sol_types::sol_data::Uint<256>,
8910                BN254::ScalarField,
8911                BN254::ScalarField,
8912                BN254::ScalarField,
8913            );
8914            #[doc(hidden)]
8915            type UnderlyingRustTuple<'a> = (
8916                alloy::sol_types::private::primitives::aliases::U256,
8917                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8918                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8919                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8920            );
8921            #[cfg(test)]
8922            #[allow(dead_code, unreachable_patterns)]
8923            fn _type_assertion(
8924                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8925            ) {
8926                match _t {
8927                    alloy_sol_types::private::AssertTypeEq::<
8928                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8929                    >(_) => {}
8930                }
8931            }
8932            #[automatically_derived]
8933            #[doc(hidden)]
8934            impl ::core::convert::From<genesisStakeTableStateReturn>
8935            for UnderlyingRustTuple<'_> {
8936                fn from(value: genesisStakeTableStateReturn) -> Self {
8937                    (
8938                        value.threshold,
8939                        value.blsKeyComm,
8940                        value.schnorrKeyComm,
8941                        value.amountComm,
8942                    )
8943                }
8944            }
8945            #[automatically_derived]
8946            #[doc(hidden)]
8947            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8948            for genesisStakeTableStateReturn {
8949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8950                    Self {
8951                        threshold: tuple.0,
8952                        blsKeyComm: tuple.1,
8953                        schnorrKeyComm: tuple.2,
8954                        amountComm: tuple.3,
8955                    }
8956                }
8957            }
8958        }
8959        #[automatically_derived]
8960        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8961            type Parameters<'a> = ();
8962            type Token<'a> = <Self::Parameters<
8963                'a,
8964            > as alloy_sol_types::SolType>::Token<'a>;
8965            type Return = genesisStakeTableStateReturn;
8966            type ReturnTuple<'a> = (
8967                alloy::sol_types::sol_data::Uint<256>,
8968                BN254::ScalarField,
8969                BN254::ScalarField,
8970                BN254::ScalarField,
8971            );
8972            type ReturnToken<'a> = <Self::ReturnTuple<
8973                'a,
8974            > as alloy_sol_types::SolType>::Token<'a>;
8975            const SIGNATURE: &'static str = "genesisStakeTableState()";
8976            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8977            #[inline]
8978            fn new<'a>(
8979                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8980            ) -> Self {
8981                tuple.into()
8982            }
8983            #[inline]
8984            fn tokenize(&self) -> Self::Token<'_> {
8985                ()
8986            }
8987            #[inline]
8988            fn abi_decode_returns(
8989                data: &[u8],
8990                validate: bool,
8991            ) -> alloy_sol_types::Result<Self::Return> {
8992                <Self::ReturnTuple<
8993                    '_,
8994                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8995                    .map(Into::into)
8996            }
8997        }
8998    };
8999    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9000    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9001```solidity
9002function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9003```*/
9004    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9005    #[derive(Clone)]
9006    pub struct genesisStateCall {}
9007    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9008    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9010    #[derive(Clone)]
9011    pub struct genesisStateReturn {
9012        #[allow(missing_docs)]
9013        pub viewNum: u64,
9014        #[allow(missing_docs)]
9015        pub blockHeight: u64,
9016        #[allow(missing_docs)]
9017        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9018    }
9019    #[allow(
9020        non_camel_case_types,
9021        non_snake_case,
9022        clippy::pub_underscore_fields,
9023        clippy::style
9024    )]
9025    const _: () = {
9026        use alloy::sol_types as alloy_sol_types;
9027        {
9028            #[doc(hidden)]
9029            type UnderlyingSolTuple<'a> = ();
9030            #[doc(hidden)]
9031            type UnderlyingRustTuple<'a> = ();
9032            #[cfg(test)]
9033            #[allow(dead_code, unreachable_patterns)]
9034            fn _type_assertion(
9035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9036            ) {
9037                match _t {
9038                    alloy_sol_types::private::AssertTypeEq::<
9039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9040                    >(_) => {}
9041                }
9042            }
9043            #[automatically_derived]
9044            #[doc(hidden)]
9045            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9046                fn from(value: genesisStateCall) -> Self {
9047                    ()
9048                }
9049            }
9050            #[automatically_derived]
9051            #[doc(hidden)]
9052            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9054                    Self {}
9055                }
9056            }
9057        }
9058        {
9059            #[doc(hidden)]
9060            type UnderlyingSolTuple<'a> = (
9061                alloy::sol_types::sol_data::Uint<64>,
9062                alloy::sol_types::sol_data::Uint<64>,
9063                BN254::ScalarField,
9064            );
9065            #[doc(hidden)]
9066            type UnderlyingRustTuple<'a> = (
9067                u64,
9068                u64,
9069                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9070            );
9071            #[cfg(test)]
9072            #[allow(dead_code, unreachable_patterns)]
9073            fn _type_assertion(
9074                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9075            ) {
9076                match _t {
9077                    alloy_sol_types::private::AssertTypeEq::<
9078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9079                    >(_) => {}
9080                }
9081            }
9082            #[automatically_derived]
9083            #[doc(hidden)]
9084            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9085                fn from(value: genesisStateReturn) -> Self {
9086                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9087                }
9088            }
9089            #[automatically_derived]
9090            #[doc(hidden)]
9091            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9092                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9093                    Self {
9094                        viewNum: tuple.0,
9095                        blockHeight: tuple.1,
9096                        blockCommRoot: tuple.2,
9097                    }
9098                }
9099            }
9100        }
9101        #[automatically_derived]
9102        impl alloy_sol_types::SolCall for genesisStateCall {
9103            type Parameters<'a> = ();
9104            type Token<'a> = <Self::Parameters<
9105                'a,
9106            > as alloy_sol_types::SolType>::Token<'a>;
9107            type Return = genesisStateReturn;
9108            type ReturnTuple<'a> = (
9109                alloy::sol_types::sol_data::Uint<64>,
9110                alloy::sol_types::sol_data::Uint<64>,
9111                BN254::ScalarField,
9112            );
9113            type ReturnToken<'a> = <Self::ReturnTuple<
9114                'a,
9115            > as alloy_sol_types::SolType>::Token<'a>;
9116            const SIGNATURE: &'static str = "genesisState()";
9117            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9118            #[inline]
9119            fn new<'a>(
9120                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9121            ) -> Self {
9122                tuple.into()
9123            }
9124            #[inline]
9125            fn tokenize(&self) -> Self::Token<'_> {
9126                ()
9127            }
9128            #[inline]
9129            fn abi_decode_returns(
9130                data: &[u8],
9131                validate: bool,
9132            ) -> alloy_sol_types::Result<Self::Return> {
9133                <Self::ReturnTuple<
9134                    '_,
9135                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9136                    .map(Into::into)
9137            }
9138        }
9139    };
9140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9141    /**Function with signature `getFirstEpoch()` and selector `0xb3daf254`.
9142```solidity
9143function getFirstEpoch() external view returns (uint64);
9144```*/
9145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9146    #[derive(Clone)]
9147    pub struct getFirstEpochCall {}
9148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9149    ///Container type for the return parameters of the [`getFirstEpoch()`](getFirstEpochCall) function.
9150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9151    #[derive(Clone)]
9152    pub struct getFirstEpochReturn {
9153        #[allow(missing_docs)]
9154        pub _0: u64,
9155    }
9156    #[allow(
9157        non_camel_case_types,
9158        non_snake_case,
9159        clippy::pub_underscore_fields,
9160        clippy::style
9161    )]
9162    const _: () = {
9163        use alloy::sol_types as alloy_sol_types;
9164        {
9165            #[doc(hidden)]
9166            type UnderlyingSolTuple<'a> = ();
9167            #[doc(hidden)]
9168            type UnderlyingRustTuple<'a> = ();
9169            #[cfg(test)]
9170            #[allow(dead_code, unreachable_patterns)]
9171            fn _type_assertion(
9172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9173            ) {
9174                match _t {
9175                    alloy_sol_types::private::AssertTypeEq::<
9176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9177                    >(_) => {}
9178                }
9179            }
9180            #[automatically_derived]
9181            #[doc(hidden)]
9182            impl ::core::convert::From<getFirstEpochCall> for UnderlyingRustTuple<'_> {
9183                fn from(value: getFirstEpochCall) -> Self {
9184                    ()
9185                }
9186            }
9187            #[automatically_derived]
9188            #[doc(hidden)]
9189            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochCall {
9190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9191                    Self {}
9192                }
9193            }
9194        }
9195        {
9196            #[doc(hidden)]
9197            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9198            #[doc(hidden)]
9199            type UnderlyingRustTuple<'a> = (u64,);
9200            #[cfg(test)]
9201            #[allow(dead_code, unreachable_patterns)]
9202            fn _type_assertion(
9203                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9204            ) {
9205                match _t {
9206                    alloy_sol_types::private::AssertTypeEq::<
9207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9208                    >(_) => {}
9209                }
9210            }
9211            #[automatically_derived]
9212            #[doc(hidden)]
9213            impl ::core::convert::From<getFirstEpochReturn> for UnderlyingRustTuple<'_> {
9214                fn from(value: getFirstEpochReturn) -> Self {
9215                    (value._0,)
9216                }
9217            }
9218            #[automatically_derived]
9219            #[doc(hidden)]
9220            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochReturn {
9221                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9222                    Self { _0: tuple.0 }
9223                }
9224            }
9225        }
9226        #[automatically_derived]
9227        impl alloy_sol_types::SolCall for getFirstEpochCall {
9228            type Parameters<'a> = ();
9229            type Token<'a> = <Self::Parameters<
9230                'a,
9231            > as alloy_sol_types::SolType>::Token<'a>;
9232            type Return = getFirstEpochReturn;
9233            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9234            type ReturnToken<'a> = <Self::ReturnTuple<
9235                'a,
9236            > as alloy_sol_types::SolType>::Token<'a>;
9237            const SIGNATURE: &'static str = "getFirstEpoch()";
9238            const SELECTOR: [u8; 4] = [179u8, 218u8, 242u8, 84u8];
9239            #[inline]
9240            fn new<'a>(
9241                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9242            ) -> Self {
9243                tuple.into()
9244            }
9245            #[inline]
9246            fn tokenize(&self) -> Self::Token<'_> {
9247                ()
9248            }
9249            #[inline]
9250            fn abi_decode_returns(
9251                data: &[u8],
9252                validate: bool,
9253            ) -> alloy_sol_types::Result<Self::Return> {
9254                <Self::ReturnTuple<
9255                    '_,
9256                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9257                    .map(Into::into)
9258            }
9259        }
9260    };
9261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9262    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9263```solidity
9264function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9265```*/
9266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9267    #[derive(Clone)]
9268    pub struct getHotShotCommitmentCall {
9269        #[allow(missing_docs)]
9270        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9271    }
9272    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9273    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9274    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9275    #[derive(Clone)]
9276    pub struct getHotShotCommitmentReturn {
9277        #[allow(missing_docs)]
9278        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9279        #[allow(missing_docs)]
9280        pub hotshotBlockHeight: u64,
9281    }
9282    #[allow(
9283        non_camel_case_types,
9284        non_snake_case,
9285        clippy::pub_underscore_fields,
9286        clippy::style
9287    )]
9288    const _: () = {
9289        use alloy::sol_types as alloy_sol_types;
9290        {
9291            #[doc(hidden)]
9292            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9293            #[doc(hidden)]
9294            type UnderlyingRustTuple<'a> = (
9295                alloy::sol_types::private::primitives::aliases::U256,
9296            );
9297            #[cfg(test)]
9298            #[allow(dead_code, unreachable_patterns)]
9299            fn _type_assertion(
9300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9301            ) {
9302                match _t {
9303                    alloy_sol_types::private::AssertTypeEq::<
9304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9305                    >(_) => {}
9306                }
9307            }
9308            #[automatically_derived]
9309            #[doc(hidden)]
9310            impl ::core::convert::From<getHotShotCommitmentCall>
9311            for UnderlyingRustTuple<'_> {
9312                fn from(value: getHotShotCommitmentCall) -> Self {
9313                    (value.hotShotBlockHeight,)
9314                }
9315            }
9316            #[automatically_derived]
9317            #[doc(hidden)]
9318            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9319            for getHotShotCommitmentCall {
9320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9321                    Self {
9322                        hotShotBlockHeight: tuple.0,
9323                    }
9324                }
9325            }
9326        }
9327        {
9328            #[doc(hidden)]
9329            type UnderlyingSolTuple<'a> = (
9330                BN254::ScalarField,
9331                alloy::sol_types::sol_data::Uint<64>,
9332            );
9333            #[doc(hidden)]
9334            type UnderlyingRustTuple<'a> = (
9335                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9336                u64,
9337            );
9338            #[cfg(test)]
9339            #[allow(dead_code, unreachable_patterns)]
9340            fn _type_assertion(
9341                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9342            ) {
9343                match _t {
9344                    alloy_sol_types::private::AssertTypeEq::<
9345                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9346                    >(_) => {}
9347                }
9348            }
9349            #[automatically_derived]
9350            #[doc(hidden)]
9351            impl ::core::convert::From<getHotShotCommitmentReturn>
9352            for UnderlyingRustTuple<'_> {
9353                fn from(value: getHotShotCommitmentReturn) -> Self {
9354                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9355                }
9356            }
9357            #[automatically_derived]
9358            #[doc(hidden)]
9359            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9360            for getHotShotCommitmentReturn {
9361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9362                    Self {
9363                        hotShotBlockCommRoot: tuple.0,
9364                        hotshotBlockHeight: tuple.1,
9365                    }
9366                }
9367            }
9368        }
9369        #[automatically_derived]
9370        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9371            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9372            type Token<'a> = <Self::Parameters<
9373                'a,
9374            > as alloy_sol_types::SolType>::Token<'a>;
9375            type Return = getHotShotCommitmentReturn;
9376            type ReturnTuple<'a> = (
9377                BN254::ScalarField,
9378                alloy::sol_types::sol_data::Uint<64>,
9379            );
9380            type ReturnToken<'a> = <Self::ReturnTuple<
9381                'a,
9382            > as alloy_sol_types::SolType>::Token<'a>;
9383            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9384            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9385            #[inline]
9386            fn new<'a>(
9387                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9388            ) -> Self {
9389                tuple.into()
9390            }
9391            #[inline]
9392            fn tokenize(&self) -> Self::Token<'_> {
9393                (
9394                    <alloy::sol_types::sol_data::Uint<
9395                        256,
9396                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9397                )
9398            }
9399            #[inline]
9400            fn abi_decode_returns(
9401                data: &[u8],
9402                validate: bool,
9403            ) -> alloy_sol_types::Result<Self::Return> {
9404                <Self::ReturnTuple<
9405                    '_,
9406                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9407                    .map(Into::into)
9408            }
9409        }
9410    };
9411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9412    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9413```solidity
9414function getStateHistoryCount() external view returns (uint256);
9415```*/
9416    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9417    #[derive(Clone)]
9418    pub struct getStateHistoryCountCall {}
9419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9420    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9422    #[derive(Clone)]
9423    pub struct getStateHistoryCountReturn {
9424        #[allow(missing_docs)]
9425        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9426    }
9427    #[allow(
9428        non_camel_case_types,
9429        non_snake_case,
9430        clippy::pub_underscore_fields,
9431        clippy::style
9432    )]
9433    const _: () = {
9434        use alloy::sol_types as alloy_sol_types;
9435        {
9436            #[doc(hidden)]
9437            type UnderlyingSolTuple<'a> = ();
9438            #[doc(hidden)]
9439            type UnderlyingRustTuple<'a> = ();
9440            #[cfg(test)]
9441            #[allow(dead_code, unreachable_patterns)]
9442            fn _type_assertion(
9443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9444            ) {
9445                match _t {
9446                    alloy_sol_types::private::AssertTypeEq::<
9447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9448                    >(_) => {}
9449                }
9450            }
9451            #[automatically_derived]
9452            #[doc(hidden)]
9453            impl ::core::convert::From<getStateHistoryCountCall>
9454            for UnderlyingRustTuple<'_> {
9455                fn from(value: getStateHistoryCountCall) -> Self {
9456                    ()
9457                }
9458            }
9459            #[automatically_derived]
9460            #[doc(hidden)]
9461            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9462            for getStateHistoryCountCall {
9463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9464                    Self {}
9465                }
9466            }
9467        }
9468        {
9469            #[doc(hidden)]
9470            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9471            #[doc(hidden)]
9472            type UnderlyingRustTuple<'a> = (
9473                alloy::sol_types::private::primitives::aliases::U256,
9474            );
9475            #[cfg(test)]
9476            #[allow(dead_code, unreachable_patterns)]
9477            fn _type_assertion(
9478                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9479            ) {
9480                match _t {
9481                    alloy_sol_types::private::AssertTypeEq::<
9482                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9483                    >(_) => {}
9484                }
9485            }
9486            #[automatically_derived]
9487            #[doc(hidden)]
9488            impl ::core::convert::From<getStateHistoryCountReturn>
9489            for UnderlyingRustTuple<'_> {
9490                fn from(value: getStateHistoryCountReturn) -> Self {
9491                    (value._0,)
9492                }
9493            }
9494            #[automatically_derived]
9495            #[doc(hidden)]
9496            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9497            for getStateHistoryCountReturn {
9498                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9499                    Self { _0: tuple.0 }
9500                }
9501            }
9502        }
9503        #[automatically_derived]
9504        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9505            type Parameters<'a> = ();
9506            type Token<'a> = <Self::Parameters<
9507                'a,
9508            > as alloy_sol_types::SolType>::Token<'a>;
9509            type Return = getStateHistoryCountReturn;
9510            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9511            type ReturnToken<'a> = <Self::ReturnTuple<
9512                'a,
9513            > as alloy_sol_types::SolType>::Token<'a>;
9514            const SIGNATURE: &'static str = "getStateHistoryCount()";
9515            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9516            #[inline]
9517            fn new<'a>(
9518                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9519            ) -> Self {
9520                tuple.into()
9521            }
9522            #[inline]
9523            fn tokenize(&self) -> Self::Token<'_> {
9524                ()
9525            }
9526            #[inline]
9527            fn abi_decode_returns(
9528                data: &[u8],
9529                validate: bool,
9530            ) -> alloy_sol_types::Result<Self::Return> {
9531                <Self::ReturnTuple<
9532                    '_,
9533                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9534                    .map(Into::into)
9535            }
9536        }
9537    };
9538    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9539    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9540```solidity
9541function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9542```*/
9543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9544    #[derive(Clone)]
9545    pub struct getVersionCall {}
9546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9547    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9549    #[derive(Clone)]
9550    pub struct getVersionReturn {
9551        #[allow(missing_docs)]
9552        pub majorVersion: u8,
9553        #[allow(missing_docs)]
9554        pub minorVersion: u8,
9555        #[allow(missing_docs)]
9556        pub patchVersion: u8,
9557    }
9558    #[allow(
9559        non_camel_case_types,
9560        non_snake_case,
9561        clippy::pub_underscore_fields,
9562        clippy::style
9563    )]
9564    const _: () = {
9565        use alloy::sol_types as alloy_sol_types;
9566        {
9567            #[doc(hidden)]
9568            type UnderlyingSolTuple<'a> = ();
9569            #[doc(hidden)]
9570            type UnderlyingRustTuple<'a> = ();
9571            #[cfg(test)]
9572            #[allow(dead_code, unreachable_patterns)]
9573            fn _type_assertion(
9574                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9575            ) {
9576                match _t {
9577                    alloy_sol_types::private::AssertTypeEq::<
9578                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9579                    >(_) => {}
9580                }
9581            }
9582            #[automatically_derived]
9583            #[doc(hidden)]
9584            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9585                fn from(value: getVersionCall) -> Self {
9586                    ()
9587                }
9588            }
9589            #[automatically_derived]
9590            #[doc(hidden)]
9591            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9592                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9593                    Self {}
9594                }
9595            }
9596        }
9597        {
9598            #[doc(hidden)]
9599            type UnderlyingSolTuple<'a> = (
9600                alloy::sol_types::sol_data::Uint<8>,
9601                alloy::sol_types::sol_data::Uint<8>,
9602                alloy::sol_types::sol_data::Uint<8>,
9603            );
9604            #[doc(hidden)]
9605            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9606            #[cfg(test)]
9607            #[allow(dead_code, unreachable_patterns)]
9608            fn _type_assertion(
9609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9610            ) {
9611                match _t {
9612                    alloy_sol_types::private::AssertTypeEq::<
9613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9614                    >(_) => {}
9615                }
9616            }
9617            #[automatically_derived]
9618            #[doc(hidden)]
9619            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9620                fn from(value: getVersionReturn) -> Self {
9621                    (value.majorVersion, value.minorVersion, value.patchVersion)
9622                }
9623            }
9624            #[automatically_derived]
9625            #[doc(hidden)]
9626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9628                    Self {
9629                        majorVersion: tuple.0,
9630                        minorVersion: tuple.1,
9631                        patchVersion: tuple.2,
9632                    }
9633                }
9634            }
9635        }
9636        #[automatically_derived]
9637        impl alloy_sol_types::SolCall for getVersionCall {
9638            type Parameters<'a> = ();
9639            type Token<'a> = <Self::Parameters<
9640                'a,
9641            > as alloy_sol_types::SolType>::Token<'a>;
9642            type Return = getVersionReturn;
9643            type ReturnTuple<'a> = (
9644                alloy::sol_types::sol_data::Uint<8>,
9645                alloy::sol_types::sol_data::Uint<8>,
9646                alloy::sol_types::sol_data::Uint<8>,
9647            );
9648            type ReturnToken<'a> = <Self::ReturnTuple<
9649                'a,
9650            > as alloy_sol_types::SolType>::Token<'a>;
9651            const SIGNATURE: &'static str = "getVersion()";
9652            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9653            #[inline]
9654            fn new<'a>(
9655                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9656            ) -> Self {
9657                tuple.into()
9658            }
9659            #[inline]
9660            fn tokenize(&self) -> Self::Token<'_> {
9661                ()
9662            }
9663            #[inline]
9664            fn abi_decode_returns(
9665                data: &[u8],
9666                validate: bool,
9667            ) -> alloy_sol_types::Result<Self::Return> {
9668                <Self::ReturnTuple<
9669                    '_,
9670                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9671                    .map(Into::into)
9672            }
9673        }
9674    };
9675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9676    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9677```solidity
9678function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9679```*/
9680    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9681    #[derive(Clone)]
9682    pub struct initializeCall {
9683        #[allow(missing_docs)]
9684        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9685        #[allow(missing_docs)]
9686        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9687        #[allow(missing_docs)]
9688        pub _stateHistoryRetentionPeriod: u32,
9689        #[allow(missing_docs)]
9690        pub owner: alloy::sol_types::private::Address,
9691    }
9692    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9694    #[derive(Clone)]
9695    pub struct initializeReturn {}
9696    #[allow(
9697        non_camel_case_types,
9698        non_snake_case,
9699        clippy::pub_underscore_fields,
9700        clippy::style
9701    )]
9702    const _: () = {
9703        use alloy::sol_types as alloy_sol_types;
9704        {
9705            #[doc(hidden)]
9706            type UnderlyingSolTuple<'a> = (
9707                LightClient::LightClientState,
9708                LightClient::StakeTableState,
9709                alloy::sol_types::sol_data::Uint<32>,
9710                alloy::sol_types::sol_data::Address,
9711            );
9712            #[doc(hidden)]
9713            type UnderlyingRustTuple<'a> = (
9714                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9715                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9716                u32,
9717                alloy::sol_types::private::Address,
9718            );
9719            #[cfg(test)]
9720            #[allow(dead_code, unreachable_patterns)]
9721            fn _type_assertion(
9722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9723            ) {
9724                match _t {
9725                    alloy_sol_types::private::AssertTypeEq::<
9726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9727                    >(_) => {}
9728                }
9729            }
9730            #[automatically_derived]
9731            #[doc(hidden)]
9732            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9733                fn from(value: initializeCall) -> Self {
9734                    (
9735                        value._genesis,
9736                        value._genesisStakeTableState,
9737                        value._stateHistoryRetentionPeriod,
9738                        value.owner,
9739                    )
9740                }
9741            }
9742            #[automatically_derived]
9743            #[doc(hidden)]
9744            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9745                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9746                    Self {
9747                        _genesis: tuple.0,
9748                        _genesisStakeTableState: tuple.1,
9749                        _stateHistoryRetentionPeriod: tuple.2,
9750                        owner: tuple.3,
9751                    }
9752                }
9753            }
9754        }
9755        {
9756            #[doc(hidden)]
9757            type UnderlyingSolTuple<'a> = ();
9758            #[doc(hidden)]
9759            type UnderlyingRustTuple<'a> = ();
9760            #[cfg(test)]
9761            #[allow(dead_code, unreachable_patterns)]
9762            fn _type_assertion(
9763                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9764            ) {
9765                match _t {
9766                    alloy_sol_types::private::AssertTypeEq::<
9767                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9768                    >(_) => {}
9769                }
9770            }
9771            #[automatically_derived]
9772            #[doc(hidden)]
9773            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9774                fn from(value: initializeReturn) -> Self {
9775                    ()
9776                }
9777            }
9778            #[automatically_derived]
9779            #[doc(hidden)]
9780            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9782                    Self {}
9783                }
9784            }
9785        }
9786        #[automatically_derived]
9787        impl alloy_sol_types::SolCall for initializeCall {
9788            type Parameters<'a> = (
9789                LightClient::LightClientState,
9790                LightClient::StakeTableState,
9791                alloy::sol_types::sol_data::Uint<32>,
9792                alloy::sol_types::sol_data::Address,
9793            );
9794            type Token<'a> = <Self::Parameters<
9795                'a,
9796            > as alloy_sol_types::SolType>::Token<'a>;
9797            type Return = initializeReturn;
9798            type ReturnTuple<'a> = ();
9799            type ReturnToken<'a> = <Self::ReturnTuple<
9800                'a,
9801            > as alloy_sol_types::SolType>::Token<'a>;
9802            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9803            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9804            #[inline]
9805            fn new<'a>(
9806                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9807            ) -> Self {
9808                tuple.into()
9809            }
9810            #[inline]
9811            fn tokenize(&self) -> Self::Token<'_> {
9812                (
9813                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9814                        &self._genesis,
9815                    ),
9816                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9817                        &self._genesisStakeTableState,
9818                    ),
9819                    <alloy::sol_types::sol_data::Uint<
9820                        32,
9821                    > as alloy_sol_types::SolType>::tokenize(
9822                        &self._stateHistoryRetentionPeriod,
9823                    ),
9824                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9825                        &self.owner,
9826                    ),
9827                )
9828            }
9829            #[inline]
9830            fn abi_decode_returns(
9831                data: &[u8],
9832                validate: bool,
9833            ) -> alloy_sol_types::Result<Self::Return> {
9834                <Self::ReturnTuple<
9835                    '_,
9836                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9837                    .map(Into::into)
9838            }
9839        }
9840    };
9841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9842    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
9843```solidity
9844function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
9845```*/
9846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9847    #[derive(Clone)]
9848    pub struct initializeV2Call {
9849        #[allow(missing_docs)]
9850        pub _blocksPerEpoch: u64,
9851        #[allow(missing_docs)]
9852        pub _epochStartBlock: u64,
9853    }
9854    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
9855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9856    #[derive(Clone)]
9857    pub struct initializeV2Return {}
9858    #[allow(
9859        non_camel_case_types,
9860        non_snake_case,
9861        clippy::pub_underscore_fields,
9862        clippy::style
9863    )]
9864    const _: () = {
9865        use alloy::sol_types as alloy_sol_types;
9866        {
9867            #[doc(hidden)]
9868            type UnderlyingSolTuple<'a> = (
9869                alloy::sol_types::sol_data::Uint<64>,
9870                alloy::sol_types::sol_data::Uint<64>,
9871            );
9872            #[doc(hidden)]
9873            type UnderlyingRustTuple<'a> = (u64, u64);
9874            #[cfg(test)]
9875            #[allow(dead_code, unreachable_patterns)]
9876            fn _type_assertion(
9877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9878            ) {
9879                match _t {
9880                    alloy_sol_types::private::AssertTypeEq::<
9881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9882                    >(_) => {}
9883                }
9884            }
9885            #[automatically_derived]
9886            #[doc(hidden)]
9887            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9888                fn from(value: initializeV2Call) -> Self {
9889                    (value._blocksPerEpoch, value._epochStartBlock)
9890                }
9891            }
9892            #[automatically_derived]
9893            #[doc(hidden)]
9894            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9895                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9896                    Self {
9897                        _blocksPerEpoch: tuple.0,
9898                        _epochStartBlock: tuple.1,
9899                    }
9900                }
9901            }
9902        }
9903        {
9904            #[doc(hidden)]
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<initializeV2Return> for UnderlyingRustTuple<'_> {
9922                fn from(value: initializeV2Return) -> Self {
9923                    ()
9924                }
9925            }
9926            #[automatically_derived]
9927            #[doc(hidden)]
9928            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9930                    Self {}
9931                }
9932            }
9933        }
9934        #[automatically_derived]
9935        impl alloy_sol_types::SolCall for initializeV2Call {
9936            type Parameters<'a> = (
9937                alloy::sol_types::sol_data::Uint<64>,
9938                alloy::sol_types::sol_data::Uint<64>,
9939            );
9940            type Token<'a> = <Self::Parameters<
9941                'a,
9942            > as alloy_sol_types::SolType>::Token<'a>;
9943            type Return = initializeV2Return;
9944            type ReturnTuple<'a> = ();
9945            type ReturnToken<'a> = <Self::ReturnTuple<
9946                'a,
9947            > as alloy_sol_types::SolType>::Token<'a>;
9948            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
9949            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
9950            #[inline]
9951            fn new<'a>(
9952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9953            ) -> Self {
9954                tuple.into()
9955            }
9956            #[inline]
9957            fn tokenize(&self) -> Self::Token<'_> {
9958                (
9959                    <alloy::sol_types::sol_data::Uint<
9960                        64,
9961                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9962                    <alloy::sol_types::sol_data::Uint<
9963                        64,
9964                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
9965                )
9966            }
9967            #[inline]
9968            fn abi_decode_returns(
9969                data: &[u8],
9970                validate: bool,
9971            ) -> alloy_sol_types::Result<Self::Return> {
9972                <Self::ReturnTuple<
9973                    '_,
9974                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9975                    .map(Into::into)
9976            }
9977        }
9978    };
9979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9980    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
9981```solidity
9982function isEpochRoot(uint64 blockHeight) external view returns (bool);
9983```*/
9984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9985    #[derive(Clone)]
9986    pub struct isEpochRootCall {
9987        #[allow(missing_docs)]
9988        pub blockHeight: u64,
9989    }
9990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9991    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
9992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9993    #[derive(Clone)]
9994    pub struct isEpochRootReturn {
9995        #[allow(missing_docs)]
9996        pub _0: bool,
9997    }
9998    #[allow(
9999        non_camel_case_types,
10000        non_snake_case,
10001        clippy::pub_underscore_fields,
10002        clippy::style
10003    )]
10004    const _: () = {
10005        use alloy::sol_types as alloy_sol_types;
10006        {
10007            #[doc(hidden)]
10008            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10009            #[doc(hidden)]
10010            type UnderlyingRustTuple<'a> = (u64,);
10011            #[cfg(test)]
10012            #[allow(dead_code, unreachable_patterns)]
10013            fn _type_assertion(
10014                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10015            ) {
10016                match _t {
10017                    alloy_sol_types::private::AssertTypeEq::<
10018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10019                    >(_) => {}
10020                }
10021            }
10022            #[automatically_derived]
10023            #[doc(hidden)]
10024            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10025                fn from(value: isEpochRootCall) -> Self {
10026                    (value.blockHeight,)
10027                }
10028            }
10029            #[automatically_derived]
10030            #[doc(hidden)]
10031            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10032                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10033                    Self { blockHeight: tuple.0 }
10034                }
10035            }
10036        }
10037        {
10038            #[doc(hidden)]
10039            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10040            #[doc(hidden)]
10041            type UnderlyingRustTuple<'a> = (bool,);
10042            #[cfg(test)]
10043            #[allow(dead_code, unreachable_patterns)]
10044            fn _type_assertion(
10045                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10046            ) {
10047                match _t {
10048                    alloy_sol_types::private::AssertTypeEq::<
10049                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10050                    >(_) => {}
10051                }
10052            }
10053            #[automatically_derived]
10054            #[doc(hidden)]
10055            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10056                fn from(value: isEpochRootReturn) -> Self {
10057                    (value._0,)
10058                }
10059            }
10060            #[automatically_derived]
10061            #[doc(hidden)]
10062            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10063                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10064                    Self { _0: tuple.0 }
10065                }
10066            }
10067        }
10068        #[automatically_derived]
10069        impl alloy_sol_types::SolCall for isEpochRootCall {
10070            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10071            type Token<'a> = <Self::Parameters<
10072                'a,
10073            > as alloy_sol_types::SolType>::Token<'a>;
10074            type Return = isEpochRootReturn;
10075            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10076            type ReturnToken<'a> = <Self::ReturnTuple<
10077                'a,
10078            > as alloy_sol_types::SolType>::Token<'a>;
10079            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10080            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10081            #[inline]
10082            fn new<'a>(
10083                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10084            ) -> Self {
10085                tuple.into()
10086            }
10087            #[inline]
10088            fn tokenize(&self) -> Self::Token<'_> {
10089                (
10090                    <alloy::sol_types::sol_data::Uint<
10091                        64,
10092                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10093                )
10094            }
10095            #[inline]
10096            fn abi_decode_returns(
10097                data: &[u8],
10098                validate: bool,
10099            ) -> alloy_sol_types::Result<Self::Return> {
10100                <Self::ReturnTuple<
10101                    '_,
10102                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10103                    .map(Into::into)
10104            }
10105        }
10106    };
10107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10108    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10109```solidity
10110function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10111```*/
10112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10113    #[derive(Clone)]
10114    pub struct isGtEpochRootCall {
10115        #[allow(missing_docs)]
10116        pub blockHeight: u64,
10117    }
10118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10119    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10121    #[derive(Clone)]
10122    pub struct isGtEpochRootReturn {
10123        #[allow(missing_docs)]
10124        pub _0: bool,
10125    }
10126    #[allow(
10127        non_camel_case_types,
10128        non_snake_case,
10129        clippy::pub_underscore_fields,
10130        clippy::style
10131    )]
10132    const _: () = {
10133        use alloy::sol_types as alloy_sol_types;
10134        {
10135            #[doc(hidden)]
10136            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10137            #[doc(hidden)]
10138            type UnderlyingRustTuple<'a> = (u64,);
10139            #[cfg(test)]
10140            #[allow(dead_code, unreachable_patterns)]
10141            fn _type_assertion(
10142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10143            ) {
10144                match _t {
10145                    alloy_sol_types::private::AssertTypeEq::<
10146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10147                    >(_) => {}
10148                }
10149            }
10150            #[automatically_derived]
10151            #[doc(hidden)]
10152            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10153                fn from(value: isGtEpochRootCall) -> Self {
10154                    (value.blockHeight,)
10155                }
10156            }
10157            #[automatically_derived]
10158            #[doc(hidden)]
10159            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10161                    Self { blockHeight: tuple.0 }
10162                }
10163            }
10164        }
10165        {
10166            #[doc(hidden)]
10167            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10168            #[doc(hidden)]
10169            type UnderlyingRustTuple<'a> = (bool,);
10170            #[cfg(test)]
10171            #[allow(dead_code, unreachable_patterns)]
10172            fn _type_assertion(
10173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10174            ) {
10175                match _t {
10176                    alloy_sol_types::private::AssertTypeEq::<
10177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10178                    >(_) => {}
10179                }
10180            }
10181            #[automatically_derived]
10182            #[doc(hidden)]
10183            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10184                fn from(value: isGtEpochRootReturn) -> Self {
10185                    (value._0,)
10186                }
10187            }
10188            #[automatically_derived]
10189            #[doc(hidden)]
10190            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10192                    Self { _0: tuple.0 }
10193                }
10194            }
10195        }
10196        #[automatically_derived]
10197        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10198            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10199            type Token<'a> = <Self::Parameters<
10200                'a,
10201            > as alloy_sol_types::SolType>::Token<'a>;
10202            type Return = isGtEpochRootReturn;
10203            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10204            type ReturnToken<'a> = <Self::ReturnTuple<
10205                'a,
10206            > as alloy_sol_types::SolType>::Token<'a>;
10207            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10208            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10209            #[inline]
10210            fn new<'a>(
10211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10212            ) -> Self {
10213                tuple.into()
10214            }
10215            #[inline]
10216            fn tokenize(&self) -> Self::Token<'_> {
10217                (
10218                    <alloy::sol_types::sol_data::Uint<
10219                        64,
10220                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10221                )
10222            }
10223            #[inline]
10224            fn abi_decode_returns(
10225                data: &[u8],
10226                validate: bool,
10227            ) -> alloy_sol_types::Result<Self::Return> {
10228                <Self::ReturnTuple<
10229                    '_,
10230                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10231                    .map(Into::into)
10232            }
10233        }
10234    };
10235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10236    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10237```solidity
10238function isPermissionedProverEnabled() external view returns (bool);
10239```*/
10240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10241    #[derive(Clone)]
10242    pub struct isPermissionedProverEnabledCall {}
10243    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10244    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10245    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10246    #[derive(Clone)]
10247    pub struct isPermissionedProverEnabledReturn {
10248        #[allow(missing_docs)]
10249        pub _0: bool,
10250    }
10251    #[allow(
10252        non_camel_case_types,
10253        non_snake_case,
10254        clippy::pub_underscore_fields,
10255        clippy::style
10256    )]
10257    const _: () = {
10258        use alloy::sol_types as alloy_sol_types;
10259        {
10260            #[doc(hidden)]
10261            type UnderlyingSolTuple<'a> = ();
10262            #[doc(hidden)]
10263            type UnderlyingRustTuple<'a> = ();
10264            #[cfg(test)]
10265            #[allow(dead_code, unreachable_patterns)]
10266            fn _type_assertion(
10267                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10268            ) {
10269                match _t {
10270                    alloy_sol_types::private::AssertTypeEq::<
10271                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10272                    >(_) => {}
10273                }
10274            }
10275            #[automatically_derived]
10276            #[doc(hidden)]
10277            impl ::core::convert::From<isPermissionedProverEnabledCall>
10278            for UnderlyingRustTuple<'_> {
10279                fn from(value: isPermissionedProverEnabledCall) -> Self {
10280                    ()
10281                }
10282            }
10283            #[automatically_derived]
10284            #[doc(hidden)]
10285            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10286            for isPermissionedProverEnabledCall {
10287                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10288                    Self {}
10289                }
10290            }
10291        }
10292        {
10293            #[doc(hidden)]
10294            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10295            #[doc(hidden)]
10296            type UnderlyingRustTuple<'a> = (bool,);
10297            #[cfg(test)]
10298            #[allow(dead_code, unreachable_patterns)]
10299            fn _type_assertion(
10300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10301            ) {
10302                match _t {
10303                    alloy_sol_types::private::AssertTypeEq::<
10304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10305                    >(_) => {}
10306                }
10307            }
10308            #[automatically_derived]
10309            #[doc(hidden)]
10310            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10311            for UnderlyingRustTuple<'_> {
10312                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10313                    (value._0,)
10314                }
10315            }
10316            #[automatically_derived]
10317            #[doc(hidden)]
10318            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10319            for isPermissionedProverEnabledReturn {
10320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10321                    Self { _0: tuple.0 }
10322                }
10323            }
10324        }
10325        #[automatically_derived]
10326        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10327            type Parameters<'a> = ();
10328            type Token<'a> = <Self::Parameters<
10329                'a,
10330            > as alloy_sol_types::SolType>::Token<'a>;
10331            type Return = isPermissionedProverEnabledReturn;
10332            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10333            type ReturnToken<'a> = <Self::ReturnTuple<
10334                'a,
10335            > as alloy_sol_types::SolType>::Token<'a>;
10336            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10337            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10338            #[inline]
10339            fn new<'a>(
10340                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10341            ) -> Self {
10342                tuple.into()
10343            }
10344            #[inline]
10345            fn tokenize(&self) -> Self::Token<'_> {
10346                ()
10347            }
10348            #[inline]
10349            fn abi_decode_returns(
10350                data: &[u8],
10351                validate: bool,
10352            ) -> alloy_sol_types::Result<Self::Return> {
10353                <Self::ReturnTuple<
10354                    '_,
10355                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10356                    .map(Into::into)
10357            }
10358        }
10359    };
10360    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10361    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10362```solidity
10363function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
10364```*/
10365    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10366    #[derive(Clone)]
10367    pub struct lagOverEscapeHatchThresholdCall {
10368        #[allow(missing_docs)]
10369        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10370        #[allow(missing_docs)]
10371        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
10372    }
10373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10374    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10375    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10376    #[derive(Clone)]
10377    pub struct lagOverEscapeHatchThresholdReturn {
10378        #[allow(missing_docs)]
10379        pub _0: bool,
10380    }
10381    #[allow(
10382        non_camel_case_types,
10383        non_snake_case,
10384        clippy::pub_underscore_fields,
10385        clippy::style
10386    )]
10387    const _: () = {
10388        use alloy::sol_types as alloy_sol_types;
10389        {
10390            #[doc(hidden)]
10391            type UnderlyingSolTuple<'a> = (
10392                alloy::sol_types::sol_data::Uint<256>,
10393                alloy::sol_types::sol_data::Uint<256>,
10394            );
10395            #[doc(hidden)]
10396            type UnderlyingRustTuple<'a> = (
10397                alloy::sol_types::private::primitives::aliases::U256,
10398                alloy::sol_types::private::primitives::aliases::U256,
10399            );
10400            #[cfg(test)]
10401            #[allow(dead_code, unreachable_patterns)]
10402            fn _type_assertion(
10403                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10404            ) {
10405                match _t {
10406                    alloy_sol_types::private::AssertTypeEq::<
10407                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10408                    >(_) => {}
10409                }
10410            }
10411            #[automatically_derived]
10412            #[doc(hidden)]
10413            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10414            for UnderlyingRustTuple<'_> {
10415                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10416                    (value.blockNumber, value.threshold)
10417                }
10418            }
10419            #[automatically_derived]
10420            #[doc(hidden)]
10421            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10422            for lagOverEscapeHatchThresholdCall {
10423                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10424                    Self {
10425                        blockNumber: tuple.0,
10426                        threshold: tuple.1,
10427                    }
10428                }
10429            }
10430        }
10431        {
10432            #[doc(hidden)]
10433            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10434            #[doc(hidden)]
10435            type UnderlyingRustTuple<'a> = (bool,);
10436            #[cfg(test)]
10437            #[allow(dead_code, unreachable_patterns)]
10438            fn _type_assertion(
10439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10440            ) {
10441                match _t {
10442                    alloy_sol_types::private::AssertTypeEq::<
10443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10444                    >(_) => {}
10445                }
10446            }
10447            #[automatically_derived]
10448            #[doc(hidden)]
10449            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
10450            for UnderlyingRustTuple<'_> {
10451                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
10452                    (value._0,)
10453                }
10454            }
10455            #[automatically_derived]
10456            #[doc(hidden)]
10457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10458            for lagOverEscapeHatchThresholdReturn {
10459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10460                    Self { _0: tuple.0 }
10461                }
10462            }
10463        }
10464        #[automatically_derived]
10465        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
10466            type Parameters<'a> = (
10467                alloy::sol_types::sol_data::Uint<256>,
10468                alloy::sol_types::sol_data::Uint<256>,
10469            );
10470            type Token<'a> = <Self::Parameters<
10471                'a,
10472            > as alloy_sol_types::SolType>::Token<'a>;
10473            type Return = lagOverEscapeHatchThresholdReturn;
10474            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10475            type ReturnToken<'a> = <Self::ReturnTuple<
10476                'a,
10477            > as alloy_sol_types::SolType>::Token<'a>;
10478            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
10479            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
10480            #[inline]
10481            fn new<'a>(
10482                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10483            ) -> Self {
10484                tuple.into()
10485            }
10486            #[inline]
10487            fn tokenize(&self) -> Self::Token<'_> {
10488                (
10489                    <alloy::sol_types::sol_data::Uint<
10490                        256,
10491                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
10492                    <alloy::sol_types::sol_data::Uint<
10493                        256,
10494                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
10495                )
10496            }
10497            #[inline]
10498            fn abi_decode_returns(
10499                data: &[u8],
10500                validate: bool,
10501            ) -> alloy_sol_types::Result<Self::Return> {
10502                <Self::ReturnTuple<
10503                    '_,
10504                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10505                    .map(Into::into)
10506            }
10507        }
10508    };
10509    #[derive()]
10510    /**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`.
10511```solidity
10512function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
10513```*/
10514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10515    #[derive(Clone)]
10516    pub struct newFinalizedState_0Call {
10517        #[allow(missing_docs)]
10518        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10519        #[allow(missing_docs)]
10520        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10521    }
10522    ///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.
10523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10524    #[derive(Clone)]
10525    pub struct newFinalizedState_0Return {}
10526    #[allow(
10527        non_camel_case_types,
10528        non_snake_case,
10529        clippy::pub_underscore_fields,
10530        clippy::style
10531    )]
10532    const _: () = {
10533        use alloy::sol_types as alloy_sol_types;
10534        {
10535            #[doc(hidden)]
10536            type UnderlyingSolTuple<'a> = (
10537                LightClient::LightClientState,
10538                IPlonkVerifier::PlonkProof,
10539            );
10540            #[doc(hidden)]
10541            type UnderlyingRustTuple<'a> = (
10542                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10543                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10544            );
10545            #[cfg(test)]
10546            #[allow(dead_code, unreachable_patterns)]
10547            fn _type_assertion(
10548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10549            ) {
10550                match _t {
10551                    alloy_sol_types::private::AssertTypeEq::<
10552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10553                    >(_) => {}
10554                }
10555            }
10556            #[automatically_derived]
10557            #[doc(hidden)]
10558            impl ::core::convert::From<newFinalizedState_0Call>
10559            for UnderlyingRustTuple<'_> {
10560                fn from(value: newFinalizedState_0Call) -> Self {
10561                    (value._0, value._1)
10562                }
10563            }
10564            #[automatically_derived]
10565            #[doc(hidden)]
10566            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10567            for newFinalizedState_0Call {
10568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10569                    Self { _0: tuple.0, _1: tuple.1 }
10570                }
10571            }
10572        }
10573        {
10574            #[doc(hidden)]
10575            type UnderlyingSolTuple<'a> = ();
10576            #[doc(hidden)]
10577            type UnderlyingRustTuple<'a> = ();
10578            #[cfg(test)]
10579            #[allow(dead_code, unreachable_patterns)]
10580            fn _type_assertion(
10581                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10582            ) {
10583                match _t {
10584                    alloy_sol_types::private::AssertTypeEq::<
10585                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10586                    >(_) => {}
10587                }
10588            }
10589            #[automatically_derived]
10590            #[doc(hidden)]
10591            impl ::core::convert::From<newFinalizedState_0Return>
10592            for UnderlyingRustTuple<'_> {
10593                fn from(value: newFinalizedState_0Return) -> Self {
10594                    ()
10595                }
10596            }
10597            #[automatically_derived]
10598            #[doc(hidden)]
10599            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10600            for newFinalizedState_0Return {
10601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10602                    Self {}
10603                }
10604            }
10605        }
10606        #[automatically_derived]
10607        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10608            type Parameters<'a> = (
10609                LightClient::LightClientState,
10610                IPlonkVerifier::PlonkProof,
10611            );
10612            type Token<'a> = <Self::Parameters<
10613                'a,
10614            > as alloy_sol_types::SolType>::Token<'a>;
10615            type Return = newFinalizedState_0Return;
10616            type ReturnTuple<'a> = ();
10617            type ReturnToken<'a> = <Self::ReturnTuple<
10618                'a,
10619            > as alloy_sol_types::SolType>::Token<'a>;
10620            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))";
10621            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10622            #[inline]
10623            fn new<'a>(
10624                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10625            ) -> Self {
10626                tuple.into()
10627            }
10628            #[inline]
10629            fn tokenize(&self) -> Self::Token<'_> {
10630                (
10631                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10632                        &self._0,
10633                    ),
10634                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10635                        &self._1,
10636                    ),
10637                )
10638            }
10639            #[inline]
10640            fn abi_decode_returns(
10641                data: &[u8],
10642                validate: bool,
10643            ) -> alloy_sol_types::Result<Self::Return> {
10644                <Self::ReturnTuple<
10645                    '_,
10646                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10647                    .map(Into::into)
10648            }
10649        }
10650    };
10651    #[derive()]
10652    /**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`.
10653```solidity
10654function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
10655```*/
10656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10657    #[derive(Clone)]
10658    pub struct newFinalizedState_1Call {
10659        #[allow(missing_docs)]
10660        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10661        #[allow(missing_docs)]
10662        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10663        #[allow(missing_docs)]
10664        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10665    }
10666    ///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.
10667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10668    #[derive(Clone)]
10669    pub struct newFinalizedState_1Return {}
10670    #[allow(
10671        non_camel_case_types,
10672        non_snake_case,
10673        clippy::pub_underscore_fields,
10674        clippy::style
10675    )]
10676    const _: () = {
10677        use alloy::sol_types as alloy_sol_types;
10678        {
10679            #[doc(hidden)]
10680            type UnderlyingSolTuple<'a> = (
10681                LightClient::LightClientState,
10682                LightClient::StakeTableState,
10683                IPlonkVerifier::PlonkProof,
10684            );
10685            #[doc(hidden)]
10686            type UnderlyingRustTuple<'a> = (
10687                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10688                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10689                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10690            );
10691            #[cfg(test)]
10692            #[allow(dead_code, unreachable_patterns)]
10693            fn _type_assertion(
10694                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10695            ) {
10696                match _t {
10697                    alloy_sol_types::private::AssertTypeEq::<
10698                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10699                    >(_) => {}
10700                }
10701            }
10702            #[automatically_derived]
10703            #[doc(hidden)]
10704            impl ::core::convert::From<newFinalizedState_1Call>
10705            for UnderlyingRustTuple<'_> {
10706                fn from(value: newFinalizedState_1Call) -> Self {
10707                    (value.newState, value.nextStakeTable, value.proof)
10708                }
10709            }
10710            #[automatically_derived]
10711            #[doc(hidden)]
10712            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10713            for newFinalizedState_1Call {
10714                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10715                    Self {
10716                        newState: tuple.0,
10717                        nextStakeTable: tuple.1,
10718                        proof: tuple.2,
10719                    }
10720                }
10721            }
10722        }
10723        {
10724            #[doc(hidden)]
10725            type UnderlyingSolTuple<'a> = ();
10726            #[doc(hidden)]
10727            type UnderlyingRustTuple<'a> = ();
10728            #[cfg(test)]
10729            #[allow(dead_code, unreachable_patterns)]
10730            fn _type_assertion(
10731                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10732            ) {
10733                match _t {
10734                    alloy_sol_types::private::AssertTypeEq::<
10735                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10736                    >(_) => {}
10737                }
10738            }
10739            #[automatically_derived]
10740            #[doc(hidden)]
10741            impl ::core::convert::From<newFinalizedState_1Return>
10742            for UnderlyingRustTuple<'_> {
10743                fn from(value: newFinalizedState_1Return) -> Self {
10744                    ()
10745                }
10746            }
10747            #[automatically_derived]
10748            #[doc(hidden)]
10749            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10750            for newFinalizedState_1Return {
10751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10752                    Self {}
10753                }
10754            }
10755        }
10756        #[automatically_derived]
10757        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
10758            type Parameters<'a> = (
10759                LightClient::LightClientState,
10760                LightClient::StakeTableState,
10761                IPlonkVerifier::PlonkProof,
10762            );
10763            type Token<'a> = <Self::Parameters<
10764                'a,
10765            > as alloy_sol_types::SolType>::Token<'a>;
10766            type Return = newFinalizedState_1Return;
10767            type ReturnTuple<'a> = ();
10768            type ReturnToken<'a> = <Self::ReturnTuple<
10769                'a,
10770            > as alloy_sol_types::SolType>::Token<'a>;
10771            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))";
10772            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
10773            #[inline]
10774            fn new<'a>(
10775                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10776            ) -> Self {
10777                tuple.into()
10778            }
10779            #[inline]
10780            fn tokenize(&self) -> Self::Token<'_> {
10781                (
10782                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10783                        &self.newState,
10784                    ),
10785                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10786                        &self.nextStakeTable,
10787                    ),
10788                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10789                        &self.proof,
10790                    ),
10791                )
10792            }
10793            #[inline]
10794            fn abi_decode_returns(
10795                data: &[u8],
10796                validate: bool,
10797            ) -> alloy_sol_types::Result<Self::Return> {
10798                <Self::ReturnTuple<
10799                    '_,
10800                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10801                    .map(Into::into)
10802            }
10803        }
10804    };
10805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10806    /**Function with signature `owner()` and selector `0x8da5cb5b`.
10807```solidity
10808function owner() external view returns (address);
10809```*/
10810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10811    #[derive(Clone)]
10812    pub struct ownerCall {}
10813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10814    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
10815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10816    #[derive(Clone)]
10817    pub struct ownerReturn {
10818        #[allow(missing_docs)]
10819        pub _0: alloy::sol_types::private::Address,
10820    }
10821    #[allow(
10822        non_camel_case_types,
10823        non_snake_case,
10824        clippy::pub_underscore_fields,
10825        clippy::style
10826    )]
10827    const _: () = {
10828        use alloy::sol_types as alloy_sol_types;
10829        {
10830            #[doc(hidden)]
10831            type UnderlyingSolTuple<'a> = ();
10832            #[doc(hidden)]
10833            type UnderlyingRustTuple<'a> = ();
10834            #[cfg(test)]
10835            #[allow(dead_code, unreachable_patterns)]
10836            fn _type_assertion(
10837                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10838            ) {
10839                match _t {
10840                    alloy_sol_types::private::AssertTypeEq::<
10841                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10842                    >(_) => {}
10843                }
10844            }
10845            #[automatically_derived]
10846            #[doc(hidden)]
10847            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
10848                fn from(value: ownerCall) -> Self {
10849                    ()
10850                }
10851            }
10852            #[automatically_derived]
10853            #[doc(hidden)]
10854            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
10855                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10856                    Self {}
10857                }
10858            }
10859        }
10860        {
10861            #[doc(hidden)]
10862            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10863            #[doc(hidden)]
10864            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10865            #[cfg(test)]
10866            #[allow(dead_code, unreachable_patterns)]
10867            fn _type_assertion(
10868                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10869            ) {
10870                match _t {
10871                    alloy_sol_types::private::AssertTypeEq::<
10872                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10873                    >(_) => {}
10874                }
10875            }
10876            #[automatically_derived]
10877            #[doc(hidden)]
10878            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
10879                fn from(value: ownerReturn) -> Self {
10880                    (value._0,)
10881                }
10882            }
10883            #[automatically_derived]
10884            #[doc(hidden)]
10885            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
10886                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10887                    Self { _0: tuple.0 }
10888                }
10889            }
10890        }
10891        #[automatically_derived]
10892        impl alloy_sol_types::SolCall for ownerCall {
10893            type Parameters<'a> = ();
10894            type Token<'a> = <Self::Parameters<
10895                'a,
10896            > as alloy_sol_types::SolType>::Token<'a>;
10897            type Return = ownerReturn;
10898            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10899            type ReturnToken<'a> = <Self::ReturnTuple<
10900                'a,
10901            > as alloy_sol_types::SolType>::Token<'a>;
10902            const SIGNATURE: &'static str = "owner()";
10903            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
10904            #[inline]
10905            fn new<'a>(
10906                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10907            ) -> Self {
10908                tuple.into()
10909            }
10910            #[inline]
10911            fn tokenize(&self) -> Self::Token<'_> {
10912                ()
10913            }
10914            #[inline]
10915            fn abi_decode_returns(
10916                data: &[u8],
10917                validate: bool,
10918            ) -> alloy_sol_types::Result<Self::Return> {
10919                <Self::ReturnTuple<
10920                    '_,
10921                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10922                    .map(Into::into)
10923            }
10924        }
10925    };
10926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10927    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
10928```solidity
10929function permissionedProver() external view returns (address);
10930```*/
10931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10932    #[derive(Clone)]
10933    pub struct permissionedProverCall {}
10934    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10935    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
10936    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10937    #[derive(Clone)]
10938    pub struct permissionedProverReturn {
10939        #[allow(missing_docs)]
10940        pub _0: alloy::sol_types::private::Address,
10941    }
10942    #[allow(
10943        non_camel_case_types,
10944        non_snake_case,
10945        clippy::pub_underscore_fields,
10946        clippy::style
10947    )]
10948    const _: () = {
10949        use alloy::sol_types as alloy_sol_types;
10950        {
10951            #[doc(hidden)]
10952            type UnderlyingSolTuple<'a> = ();
10953            #[doc(hidden)]
10954            type UnderlyingRustTuple<'a> = ();
10955            #[cfg(test)]
10956            #[allow(dead_code, unreachable_patterns)]
10957            fn _type_assertion(
10958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10959            ) {
10960                match _t {
10961                    alloy_sol_types::private::AssertTypeEq::<
10962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10963                    >(_) => {}
10964                }
10965            }
10966            #[automatically_derived]
10967            #[doc(hidden)]
10968            impl ::core::convert::From<permissionedProverCall>
10969            for UnderlyingRustTuple<'_> {
10970                fn from(value: permissionedProverCall) -> Self {
10971                    ()
10972                }
10973            }
10974            #[automatically_derived]
10975            #[doc(hidden)]
10976            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10977            for permissionedProverCall {
10978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10979                    Self {}
10980                }
10981            }
10982        }
10983        {
10984            #[doc(hidden)]
10985            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10986            #[doc(hidden)]
10987            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10988            #[cfg(test)]
10989            #[allow(dead_code, unreachable_patterns)]
10990            fn _type_assertion(
10991                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10992            ) {
10993                match _t {
10994                    alloy_sol_types::private::AssertTypeEq::<
10995                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10996                    >(_) => {}
10997                }
10998            }
10999            #[automatically_derived]
11000            #[doc(hidden)]
11001            impl ::core::convert::From<permissionedProverReturn>
11002            for UnderlyingRustTuple<'_> {
11003                fn from(value: permissionedProverReturn) -> Self {
11004                    (value._0,)
11005                }
11006            }
11007            #[automatically_derived]
11008            #[doc(hidden)]
11009            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11010            for permissionedProverReturn {
11011                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11012                    Self { _0: tuple.0 }
11013                }
11014            }
11015        }
11016        #[automatically_derived]
11017        impl alloy_sol_types::SolCall for permissionedProverCall {
11018            type Parameters<'a> = ();
11019            type Token<'a> = <Self::Parameters<
11020                'a,
11021            > as alloy_sol_types::SolType>::Token<'a>;
11022            type Return = permissionedProverReturn;
11023            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11024            type ReturnToken<'a> = <Self::ReturnTuple<
11025                'a,
11026            > as alloy_sol_types::SolType>::Token<'a>;
11027            const SIGNATURE: &'static str = "permissionedProver()";
11028            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11029            #[inline]
11030            fn new<'a>(
11031                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11032            ) -> Self {
11033                tuple.into()
11034            }
11035            #[inline]
11036            fn tokenize(&self) -> Self::Token<'_> {
11037                ()
11038            }
11039            #[inline]
11040            fn abi_decode_returns(
11041                data: &[u8],
11042                validate: bool,
11043            ) -> alloy_sol_types::Result<Self::Return> {
11044                <Self::ReturnTuple<
11045                    '_,
11046                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11047                    .map(Into::into)
11048            }
11049        }
11050    };
11051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11052    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11053```solidity
11054function proxiableUUID() external view returns (bytes32);
11055```*/
11056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11057    #[derive(Clone)]
11058    pub struct proxiableUUIDCall {}
11059    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11060    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11061    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11062    #[derive(Clone)]
11063    pub struct proxiableUUIDReturn {
11064        #[allow(missing_docs)]
11065        pub _0: alloy::sol_types::private::FixedBytes<32>,
11066    }
11067    #[allow(
11068        non_camel_case_types,
11069        non_snake_case,
11070        clippy::pub_underscore_fields,
11071        clippy::style
11072    )]
11073    const _: () = {
11074        use alloy::sol_types as alloy_sol_types;
11075        {
11076            #[doc(hidden)]
11077            type UnderlyingSolTuple<'a> = ();
11078            #[doc(hidden)]
11079            type UnderlyingRustTuple<'a> = ();
11080            #[cfg(test)]
11081            #[allow(dead_code, unreachable_patterns)]
11082            fn _type_assertion(
11083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11084            ) {
11085                match _t {
11086                    alloy_sol_types::private::AssertTypeEq::<
11087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11088                    >(_) => {}
11089                }
11090            }
11091            #[automatically_derived]
11092            #[doc(hidden)]
11093            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11094                fn from(value: proxiableUUIDCall) -> Self {
11095                    ()
11096                }
11097            }
11098            #[automatically_derived]
11099            #[doc(hidden)]
11100            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11102                    Self {}
11103                }
11104            }
11105        }
11106        {
11107            #[doc(hidden)]
11108            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11109            #[doc(hidden)]
11110            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11111            #[cfg(test)]
11112            #[allow(dead_code, unreachable_patterns)]
11113            fn _type_assertion(
11114                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11115            ) {
11116                match _t {
11117                    alloy_sol_types::private::AssertTypeEq::<
11118                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11119                    >(_) => {}
11120                }
11121            }
11122            #[automatically_derived]
11123            #[doc(hidden)]
11124            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11125                fn from(value: proxiableUUIDReturn) -> Self {
11126                    (value._0,)
11127                }
11128            }
11129            #[automatically_derived]
11130            #[doc(hidden)]
11131            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11132                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11133                    Self { _0: tuple.0 }
11134                }
11135            }
11136        }
11137        #[automatically_derived]
11138        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11139            type Parameters<'a> = ();
11140            type Token<'a> = <Self::Parameters<
11141                'a,
11142            > as alloy_sol_types::SolType>::Token<'a>;
11143            type Return = proxiableUUIDReturn;
11144            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11145            type ReturnToken<'a> = <Self::ReturnTuple<
11146                'a,
11147            > as alloy_sol_types::SolType>::Token<'a>;
11148            const SIGNATURE: &'static str = "proxiableUUID()";
11149            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11150            #[inline]
11151            fn new<'a>(
11152                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11153            ) -> Self {
11154                tuple.into()
11155            }
11156            #[inline]
11157            fn tokenize(&self) -> Self::Token<'_> {
11158                ()
11159            }
11160            #[inline]
11161            fn abi_decode_returns(
11162                data: &[u8],
11163                validate: bool,
11164            ) -> alloy_sol_types::Result<Self::Return> {
11165                <Self::ReturnTuple<
11166                    '_,
11167                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11168                    .map(Into::into)
11169            }
11170        }
11171    };
11172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11173    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11174```solidity
11175function renounceOwnership() external;
11176```*/
11177    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11178    #[derive(Clone)]
11179    pub struct renounceOwnershipCall {}
11180    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11182    #[derive(Clone)]
11183    pub struct renounceOwnershipReturn {}
11184    #[allow(
11185        non_camel_case_types,
11186        non_snake_case,
11187        clippy::pub_underscore_fields,
11188        clippy::style
11189    )]
11190    const _: () = {
11191        use alloy::sol_types as alloy_sol_types;
11192        {
11193            #[doc(hidden)]
11194            type UnderlyingSolTuple<'a> = ();
11195            #[doc(hidden)]
11196            type UnderlyingRustTuple<'a> = ();
11197            #[cfg(test)]
11198            #[allow(dead_code, unreachable_patterns)]
11199            fn _type_assertion(
11200                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11201            ) {
11202                match _t {
11203                    alloy_sol_types::private::AssertTypeEq::<
11204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11205                    >(_) => {}
11206                }
11207            }
11208            #[automatically_derived]
11209            #[doc(hidden)]
11210            impl ::core::convert::From<renounceOwnershipCall>
11211            for UnderlyingRustTuple<'_> {
11212                fn from(value: renounceOwnershipCall) -> Self {
11213                    ()
11214                }
11215            }
11216            #[automatically_derived]
11217            #[doc(hidden)]
11218            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11219            for renounceOwnershipCall {
11220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11221                    Self {}
11222                }
11223            }
11224        }
11225        {
11226            #[doc(hidden)]
11227            type UnderlyingSolTuple<'a> = ();
11228            #[doc(hidden)]
11229            type UnderlyingRustTuple<'a> = ();
11230            #[cfg(test)]
11231            #[allow(dead_code, unreachable_patterns)]
11232            fn _type_assertion(
11233                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11234            ) {
11235                match _t {
11236                    alloy_sol_types::private::AssertTypeEq::<
11237                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11238                    >(_) => {}
11239                }
11240            }
11241            #[automatically_derived]
11242            #[doc(hidden)]
11243            impl ::core::convert::From<renounceOwnershipReturn>
11244            for UnderlyingRustTuple<'_> {
11245                fn from(value: renounceOwnershipReturn) -> Self {
11246                    ()
11247                }
11248            }
11249            #[automatically_derived]
11250            #[doc(hidden)]
11251            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11252            for renounceOwnershipReturn {
11253                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11254                    Self {}
11255                }
11256            }
11257        }
11258        #[automatically_derived]
11259        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11260            type Parameters<'a> = ();
11261            type Token<'a> = <Self::Parameters<
11262                'a,
11263            > as alloy_sol_types::SolType>::Token<'a>;
11264            type Return = renounceOwnershipReturn;
11265            type ReturnTuple<'a> = ();
11266            type ReturnToken<'a> = <Self::ReturnTuple<
11267                'a,
11268            > as alloy_sol_types::SolType>::Token<'a>;
11269            const SIGNATURE: &'static str = "renounceOwnership()";
11270            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11271            #[inline]
11272            fn new<'a>(
11273                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11274            ) -> Self {
11275                tuple.into()
11276            }
11277            #[inline]
11278            fn tokenize(&self) -> Self::Token<'_> {
11279                ()
11280            }
11281            #[inline]
11282            fn abi_decode_returns(
11283                data: &[u8],
11284                validate: bool,
11285            ) -> alloy_sol_types::Result<Self::Return> {
11286                <Self::ReturnTuple<
11287                    '_,
11288                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11289                    .map(Into::into)
11290            }
11291        }
11292    };
11293    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11294    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
11295```solidity
11296function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
11297```*/
11298    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11299    #[derive(Clone)]
11300    pub struct setBlocksPerEpochCall {
11301        #[allow(missing_docs)]
11302        pub newBlocksPerEpoch: u64,
11303    }
11304    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
11305    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11306    #[derive(Clone)]
11307    pub struct setBlocksPerEpochReturn {}
11308    #[allow(
11309        non_camel_case_types,
11310        non_snake_case,
11311        clippy::pub_underscore_fields,
11312        clippy::style
11313    )]
11314    const _: () = {
11315        use alloy::sol_types as alloy_sol_types;
11316        {
11317            #[doc(hidden)]
11318            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11319            #[doc(hidden)]
11320            type UnderlyingRustTuple<'a> = (u64,);
11321            #[cfg(test)]
11322            #[allow(dead_code, unreachable_patterns)]
11323            fn _type_assertion(
11324                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11325            ) {
11326                match _t {
11327                    alloy_sol_types::private::AssertTypeEq::<
11328                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11329                    >(_) => {}
11330                }
11331            }
11332            #[automatically_derived]
11333            #[doc(hidden)]
11334            impl ::core::convert::From<setBlocksPerEpochCall>
11335            for UnderlyingRustTuple<'_> {
11336                fn from(value: setBlocksPerEpochCall) -> Self {
11337                    (value.newBlocksPerEpoch,)
11338                }
11339            }
11340            #[automatically_derived]
11341            #[doc(hidden)]
11342            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11343            for setBlocksPerEpochCall {
11344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11345                    Self { newBlocksPerEpoch: tuple.0 }
11346                }
11347            }
11348        }
11349        {
11350            #[doc(hidden)]
11351            type UnderlyingSolTuple<'a> = ();
11352            #[doc(hidden)]
11353            type UnderlyingRustTuple<'a> = ();
11354            #[cfg(test)]
11355            #[allow(dead_code, unreachable_patterns)]
11356            fn _type_assertion(
11357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11358            ) {
11359                match _t {
11360                    alloy_sol_types::private::AssertTypeEq::<
11361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11362                    >(_) => {}
11363                }
11364            }
11365            #[automatically_derived]
11366            #[doc(hidden)]
11367            impl ::core::convert::From<setBlocksPerEpochReturn>
11368            for UnderlyingRustTuple<'_> {
11369                fn from(value: setBlocksPerEpochReturn) -> Self {
11370                    ()
11371                }
11372            }
11373            #[automatically_derived]
11374            #[doc(hidden)]
11375            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11376            for setBlocksPerEpochReturn {
11377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11378                    Self {}
11379                }
11380            }
11381        }
11382        #[automatically_derived]
11383        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
11384            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11385            type Token<'a> = <Self::Parameters<
11386                'a,
11387            > as alloy_sol_types::SolType>::Token<'a>;
11388            type Return = setBlocksPerEpochReturn;
11389            type ReturnTuple<'a> = ();
11390            type ReturnToken<'a> = <Self::ReturnTuple<
11391                'a,
11392            > as alloy_sol_types::SolType>::Token<'a>;
11393            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
11394            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
11395            #[inline]
11396            fn new<'a>(
11397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11398            ) -> Self {
11399                tuple.into()
11400            }
11401            #[inline]
11402            fn tokenize(&self) -> Self::Token<'_> {
11403                (
11404                    <alloy::sol_types::sol_data::Uint<
11405                        64,
11406                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
11407                )
11408            }
11409            #[inline]
11410            fn abi_decode_returns(
11411                data: &[u8],
11412                validate: bool,
11413            ) -> alloy_sol_types::Result<Self::Return> {
11414                <Self::ReturnTuple<
11415                    '_,
11416                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11417                    .map(Into::into)
11418            }
11419        }
11420    };
11421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11422    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
11423```solidity
11424function setFinalizedState(LightClient.LightClientState memory state) external;
11425```*/
11426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11427    #[derive(Clone)]
11428    pub struct setFinalizedStateCall {
11429        #[allow(missing_docs)]
11430        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11431    }
11432    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
11433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11434    #[derive(Clone)]
11435    pub struct setFinalizedStateReturn {}
11436    #[allow(
11437        non_camel_case_types,
11438        non_snake_case,
11439        clippy::pub_underscore_fields,
11440        clippy::style
11441    )]
11442    const _: () = {
11443        use alloy::sol_types as alloy_sol_types;
11444        {
11445            #[doc(hidden)]
11446            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
11447            #[doc(hidden)]
11448            type UnderlyingRustTuple<'a> = (
11449                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11450            );
11451            #[cfg(test)]
11452            #[allow(dead_code, unreachable_patterns)]
11453            fn _type_assertion(
11454                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11455            ) {
11456                match _t {
11457                    alloy_sol_types::private::AssertTypeEq::<
11458                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11459                    >(_) => {}
11460                }
11461            }
11462            #[automatically_derived]
11463            #[doc(hidden)]
11464            impl ::core::convert::From<setFinalizedStateCall>
11465            for UnderlyingRustTuple<'_> {
11466                fn from(value: setFinalizedStateCall) -> Self {
11467                    (value.state,)
11468                }
11469            }
11470            #[automatically_derived]
11471            #[doc(hidden)]
11472            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11473            for setFinalizedStateCall {
11474                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11475                    Self { state: tuple.0 }
11476                }
11477            }
11478        }
11479        {
11480            #[doc(hidden)]
11481            type UnderlyingSolTuple<'a> = ();
11482            #[doc(hidden)]
11483            type UnderlyingRustTuple<'a> = ();
11484            #[cfg(test)]
11485            #[allow(dead_code, unreachable_patterns)]
11486            fn _type_assertion(
11487                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11488            ) {
11489                match _t {
11490                    alloy_sol_types::private::AssertTypeEq::<
11491                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11492                    >(_) => {}
11493                }
11494            }
11495            #[automatically_derived]
11496            #[doc(hidden)]
11497            impl ::core::convert::From<setFinalizedStateReturn>
11498            for UnderlyingRustTuple<'_> {
11499                fn from(value: setFinalizedStateReturn) -> Self {
11500                    ()
11501                }
11502            }
11503            #[automatically_derived]
11504            #[doc(hidden)]
11505            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11506            for setFinalizedStateReturn {
11507                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11508                    Self {}
11509                }
11510            }
11511        }
11512        #[automatically_derived]
11513        impl alloy_sol_types::SolCall for setFinalizedStateCall {
11514            type Parameters<'a> = (LightClient::LightClientState,);
11515            type Token<'a> = <Self::Parameters<
11516                'a,
11517            > as alloy_sol_types::SolType>::Token<'a>;
11518            type Return = setFinalizedStateReturn;
11519            type ReturnTuple<'a> = ();
11520            type ReturnToken<'a> = <Self::ReturnTuple<
11521                'a,
11522            > as alloy_sol_types::SolType>::Token<'a>;
11523            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
11524            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
11525            #[inline]
11526            fn new<'a>(
11527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11528            ) -> Self {
11529                tuple.into()
11530            }
11531            #[inline]
11532            fn tokenize(&self) -> Self::Token<'_> {
11533                (
11534                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11535                        &self.state,
11536                    ),
11537                )
11538            }
11539            #[inline]
11540            fn abi_decode_returns(
11541                data: &[u8],
11542                validate: bool,
11543            ) -> alloy_sol_types::Result<Self::Return> {
11544                <Self::ReturnTuple<
11545                    '_,
11546                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11547                    .map(Into::into)
11548            }
11549        }
11550    };
11551    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11552    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
11553```solidity
11554function setHotShotDownSince(uint256 l1Height) external;
11555```*/
11556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11557    #[derive(Clone)]
11558    pub struct setHotShotDownSinceCall {
11559        #[allow(missing_docs)]
11560        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
11561    }
11562    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
11563    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11564    #[derive(Clone)]
11565    pub struct setHotShotDownSinceReturn {}
11566    #[allow(
11567        non_camel_case_types,
11568        non_snake_case,
11569        clippy::pub_underscore_fields,
11570        clippy::style
11571    )]
11572    const _: () = {
11573        use alloy::sol_types as alloy_sol_types;
11574        {
11575            #[doc(hidden)]
11576            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11577            #[doc(hidden)]
11578            type UnderlyingRustTuple<'a> = (
11579                alloy::sol_types::private::primitives::aliases::U256,
11580            );
11581            #[cfg(test)]
11582            #[allow(dead_code, unreachable_patterns)]
11583            fn _type_assertion(
11584                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11585            ) {
11586                match _t {
11587                    alloy_sol_types::private::AssertTypeEq::<
11588                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11589                    >(_) => {}
11590                }
11591            }
11592            #[automatically_derived]
11593            #[doc(hidden)]
11594            impl ::core::convert::From<setHotShotDownSinceCall>
11595            for UnderlyingRustTuple<'_> {
11596                fn from(value: setHotShotDownSinceCall) -> Self {
11597                    (value.l1Height,)
11598                }
11599            }
11600            #[automatically_derived]
11601            #[doc(hidden)]
11602            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11603            for setHotShotDownSinceCall {
11604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11605                    Self { l1Height: tuple.0 }
11606                }
11607            }
11608        }
11609        {
11610            #[doc(hidden)]
11611            type UnderlyingSolTuple<'a> = ();
11612            #[doc(hidden)]
11613            type UnderlyingRustTuple<'a> = ();
11614            #[cfg(test)]
11615            #[allow(dead_code, unreachable_patterns)]
11616            fn _type_assertion(
11617                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11618            ) {
11619                match _t {
11620                    alloy_sol_types::private::AssertTypeEq::<
11621                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11622                    >(_) => {}
11623                }
11624            }
11625            #[automatically_derived]
11626            #[doc(hidden)]
11627            impl ::core::convert::From<setHotShotDownSinceReturn>
11628            for UnderlyingRustTuple<'_> {
11629                fn from(value: setHotShotDownSinceReturn) -> Self {
11630                    ()
11631                }
11632            }
11633            #[automatically_derived]
11634            #[doc(hidden)]
11635            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11636            for setHotShotDownSinceReturn {
11637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11638                    Self {}
11639                }
11640            }
11641        }
11642        #[automatically_derived]
11643        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
11644            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11645            type Token<'a> = <Self::Parameters<
11646                'a,
11647            > as alloy_sol_types::SolType>::Token<'a>;
11648            type Return = setHotShotDownSinceReturn;
11649            type ReturnTuple<'a> = ();
11650            type ReturnToken<'a> = <Self::ReturnTuple<
11651                'a,
11652            > as alloy_sol_types::SolType>::Token<'a>;
11653            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
11654            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
11655            #[inline]
11656            fn new<'a>(
11657                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11658            ) -> Self {
11659                tuple.into()
11660            }
11661            #[inline]
11662            fn tokenize(&self) -> Self::Token<'_> {
11663                (
11664                    <alloy::sol_types::sol_data::Uint<
11665                        256,
11666                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
11667                )
11668            }
11669            #[inline]
11670            fn abi_decode_returns(
11671                data: &[u8],
11672                validate: bool,
11673            ) -> alloy_sol_types::Result<Self::Return> {
11674                <Self::ReturnTuple<
11675                    '_,
11676                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11677                    .map(Into::into)
11678            }
11679        }
11680    };
11681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11682    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
11683```solidity
11684function setHotShotUp() external;
11685```*/
11686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11687    #[derive(Clone)]
11688    pub struct setHotShotUpCall {}
11689    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
11690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11691    #[derive(Clone)]
11692    pub struct setHotShotUpReturn {}
11693    #[allow(
11694        non_camel_case_types,
11695        non_snake_case,
11696        clippy::pub_underscore_fields,
11697        clippy::style
11698    )]
11699    const _: () = {
11700        use alloy::sol_types as alloy_sol_types;
11701        {
11702            #[doc(hidden)]
11703            type UnderlyingSolTuple<'a> = ();
11704            #[doc(hidden)]
11705            type UnderlyingRustTuple<'a> = ();
11706            #[cfg(test)]
11707            #[allow(dead_code, unreachable_patterns)]
11708            fn _type_assertion(
11709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11710            ) {
11711                match _t {
11712                    alloy_sol_types::private::AssertTypeEq::<
11713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11714                    >(_) => {}
11715                }
11716            }
11717            #[automatically_derived]
11718            #[doc(hidden)]
11719            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
11720                fn from(value: setHotShotUpCall) -> Self {
11721                    ()
11722                }
11723            }
11724            #[automatically_derived]
11725            #[doc(hidden)]
11726            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
11727                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11728                    Self {}
11729                }
11730            }
11731        }
11732        {
11733            #[doc(hidden)]
11734            type UnderlyingSolTuple<'a> = ();
11735            #[doc(hidden)]
11736            type UnderlyingRustTuple<'a> = ();
11737            #[cfg(test)]
11738            #[allow(dead_code, unreachable_patterns)]
11739            fn _type_assertion(
11740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11741            ) {
11742                match _t {
11743                    alloy_sol_types::private::AssertTypeEq::<
11744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11745                    >(_) => {}
11746                }
11747            }
11748            #[automatically_derived]
11749            #[doc(hidden)]
11750            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
11751                fn from(value: setHotShotUpReturn) -> Self {
11752                    ()
11753                }
11754            }
11755            #[automatically_derived]
11756            #[doc(hidden)]
11757            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
11758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11759                    Self {}
11760                }
11761            }
11762        }
11763        #[automatically_derived]
11764        impl alloy_sol_types::SolCall for setHotShotUpCall {
11765            type Parameters<'a> = ();
11766            type Token<'a> = <Self::Parameters<
11767                'a,
11768            > as alloy_sol_types::SolType>::Token<'a>;
11769            type Return = setHotShotUpReturn;
11770            type ReturnTuple<'a> = ();
11771            type ReturnToken<'a> = <Self::ReturnTuple<
11772                'a,
11773            > as alloy_sol_types::SolType>::Token<'a>;
11774            const SIGNATURE: &'static str = "setHotShotUp()";
11775            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
11776            #[inline]
11777            fn new<'a>(
11778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11779            ) -> Self {
11780                tuple.into()
11781            }
11782            #[inline]
11783            fn tokenize(&self) -> Self::Token<'_> {
11784                ()
11785            }
11786            #[inline]
11787            fn abi_decode_returns(
11788                data: &[u8],
11789                validate: bool,
11790            ) -> alloy_sol_types::Result<Self::Return> {
11791                <Self::ReturnTuple<
11792                    '_,
11793                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11794                    .map(Into::into)
11795            }
11796        }
11797    };
11798    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11799    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
11800```solidity
11801function setPermissionedProver(address prover) external;
11802```*/
11803    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11804    #[derive(Clone)]
11805    pub struct setPermissionedProverCall {
11806        #[allow(missing_docs)]
11807        pub prover: alloy::sol_types::private::Address,
11808    }
11809    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
11810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11811    #[derive(Clone)]
11812    pub struct setPermissionedProverReturn {}
11813    #[allow(
11814        non_camel_case_types,
11815        non_snake_case,
11816        clippy::pub_underscore_fields,
11817        clippy::style
11818    )]
11819    const _: () = {
11820        use alloy::sol_types as alloy_sol_types;
11821        {
11822            #[doc(hidden)]
11823            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11824            #[doc(hidden)]
11825            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11826            #[cfg(test)]
11827            #[allow(dead_code, unreachable_patterns)]
11828            fn _type_assertion(
11829                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11830            ) {
11831                match _t {
11832                    alloy_sol_types::private::AssertTypeEq::<
11833                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11834                    >(_) => {}
11835                }
11836            }
11837            #[automatically_derived]
11838            #[doc(hidden)]
11839            impl ::core::convert::From<setPermissionedProverCall>
11840            for UnderlyingRustTuple<'_> {
11841                fn from(value: setPermissionedProverCall) -> Self {
11842                    (value.prover,)
11843                }
11844            }
11845            #[automatically_derived]
11846            #[doc(hidden)]
11847            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11848            for setPermissionedProverCall {
11849                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11850                    Self { prover: tuple.0 }
11851                }
11852            }
11853        }
11854        {
11855            #[doc(hidden)]
11856            type UnderlyingSolTuple<'a> = ();
11857            #[doc(hidden)]
11858            type UnderlyingRustTuple<'a> = ();
11859            #[cfg(test)]
11860            #[allow(dead_code, unreachable_patterns)]
11861            fn _type_assertion(
11862                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11863            ) {
11864                match _t {
11865                    alloy_sol_types::private::AssertTypeEq::<
11866                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11867                    >(_) => {}
11868                }
11869            }
11870            #[automatically_derived]
11871            #[doc(hidden)]
11872            impl ::core::convert::From<setPermissionedProverReturn>
11873            for UnderlyingRustTuple<'_> {
11874                fn from(value: setPermissionedProverReturn) -> Self {
11875                    ()
11876                }
11877            }
11878            #[automatically_derived]
11879            #[doc(hidden)]
11880            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11881            for setPermissionedProverReturn {
11882                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11883                    Self {}
11884                }
11885            }
11886        }
11887        #[automatically_derived]
11888        impl alloy_sol_types::SolCall for setPermissionedProverCall {
11889            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11890            type Token<'a> = <Self::Parameters<
11891                'a,
11892            > as alloy_sol_types::SolType>::Token<'a>;
11893            type Return = setPermissionedProverReturn;
11894            type ReturnTuple<'a> = ();
11895            type ReturnToken<'a> = <Self::ReturnTuple<
11896                'a,
11897            > as alloy_sol_types::SolType>::Token<'a>;
11898            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11899            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11900            #[inline]
11901            fn new<'a>(
11902                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11903            ) -> Self {
11904                tuple.into()
11905            }
11906            #[inline]
11907            fn tokenize(&self) -> Self::Token<'_> {
11908                (
11909                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11910                        &self.prover,
11911                    ),
11912                )
11913            }
11914            #[inline]
11915            fn abi_decode_returns(
11916                data: &[u8],
11917                validate: bool,
11918            ) -> alloy_sol_types::Result<Self::Return> {
11919                <Self::ReturnTuple<
11920                    '_,
11921                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11922                    .map(Into::into)
11923            }
11924        }
11925    };
11926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11927    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
11928```solidity
11929function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
11930```*/
11931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11932    #[derive(Clone)]
11933    pub struct setStateHistoryCall {
11934        #[allow(missing_docs)]
11935        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
11936            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
11937        >,
11938    }
11939    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
11940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11941    #[derive(Clone)]
11942    pub struct setStateHistoryReturn {}
11943    #[allow(
11944        non_camel_case_types,
11945        non_snake_case,
11946        clippy::pub_underscore_fields,
11947        clippy::style
11948    )]
11949    const _: () = {
11950        use alloy::sol_types as alloy_sol_types;
11951        {
11952            #[doc(hidden)]
11953            type UnderlyingSolTuple<'a> = (
11954                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
11955            );
11956            #[doc(hidden)]
11957            type UnderlyingRustTuple<'a> = (
11958                alloy::sol_types::private::Vec<
11959                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
11960                >,
11961            );
11962            #[cfg(test)]
11963            #[allow(dead_code, unreachable_patterns)]
11964            fn _type_assertion(
11965                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11966            ) {
11967                match _t {
11968                    alloy_sol_types::private::AssertTypeEq::<
11969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11970                    >(_) => {}
11971                }
11972            }
11973            #[automatically_derived]
11974            #[doc(hidden)]
11975            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
11976                fn from(value: setStateHistoryCall) -> Self {
11977                    (value._stateHistoryCommitments,)
11978                }
11979            }
11980            #[automatically_derived]
11981            #[doc(hidden)]
11982            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
11983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11984                    Self {
11985                        _stateHistoryCommitments: tuple.0,
11986                    }
11987                }
11988            }
11989        }
11990        {
11991            #[doc(hidden)]
11992            type UnderlyingSolTuple<'a> = ();
11993            #[doc(hidden)]
11994            type UnderlyingRustTuple<'a> = ();
11995            #[cfg(test)]
11996            #[allow(dead_code, unreachable_patterns)]
11997            fn _type_assertion(
11998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11999            ) {
12000                match _t {
12001                    alloy_sol_types::private::AssertTypeEq::<
12002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12003                    >(_) => {}
12004                }
12005            }
12006            #[automatically_derived]
12007            #[doc(hidden)]
12008            impl ::core::convert::From<setStateHistoryReturn>
12009            for UnderlyingRustTuple<'_> {
12010                fn from(value: setStateHistoryReturn) -> Self {
12011                    ()
12012                }
12013            }
12014            #[automatically_derived]
12015            #[doc(hidden)]
12016            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12017            for setStateHistoryReturn {
12018                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12019                    Self {}
12020                }
12021            }
12022        }
12023        #[automatically_derived]
12024        impl alloy_sol_types::SolCall for setStateHistoryCall {
12025            type Parameters<'a> = (
12026                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
12027            );
12028            type Token<'a> = <Self::Parameters<
12029                'a,
12030            > as alloy_sol_types::SolType>::Token<'a>;
12031            type Return = setStateHistoryReturn;
12032            type ReturnTuple<'a> = ();
12033            type ReturnToken<'a> = <Self::ReturnTuple<
12034                'a,
12035            > as alloy_sol_types::SolType>::Token<'a>;
12036            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
12037            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
12038            #[inline]
12039            fn new<'a>(
12040                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12041            ) -> Self {
12042                tuple.into()
12043            }
12044            #[inline]
12045            fn tokenize(&self) -> Self::Token<'_> {
12046                (
12047                    <alloy::sol_types::sol_data::Array<
12048                        LightClient::StateHistoryCommitment,
12049                    > as alloy_sol_types::SolType>::tokenize(
12050                        &self._stateHistoryCommitments,
12051                    ),
12052                )
12053            }
12054            #[inline]
12055            fn abi_decode_returns(
12056                data: &[u8],
12057                validate: bool,
12058            ) -> alloy_sol_types::Result<Self::Return> {
12059                <Self::ReturnTuple<
12060                    '_,
12061                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12062                    .map(Into::into)
12063            }
12064        }
12065    };
12066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12067    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
12068```solidity
12069function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
12070```*/
12071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12072    #[derive(Clone)]
12073    pub struct setStateHistoryRetentionPeriodCall {
12074        #[allow(missing_docs)]
12075        pub historySeconds: u32,
12076    }
12077    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
12078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12079    #[derive(Clone)]
12080    pub struct setStateHistoryRetentionPeriodReturn {}
12081    #[allow(
12082        non_camel_case_types,
12083        non_snake_case,
12084        clippy::pub_underscore_fields,
12085        clippy::style
12086    )]
12087    const _: () = {
12088        use alloy::sol_types as alloy_sol_types;
12089        {
12090            #[doc(hidden)]
12091            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12092            #[doc(hidden)]
12093            type UnderlyingRustTuple<'a> = (u32,);
12094            #[cfg(test)]
12095            #[allow(dead_code, unreachable_patterns)]
12096            fn _type_assertion(
12097                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12098            ) {
12099                match _t {
12100                    alloy_sol_types::private::AssertTypeEq::<
12101                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12102                    >(_) => {}
12103                }
12104            }
12105            #[automatically_derived]
12106            #[doc(hidden)]
12107            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
12108            for UnderlyingRustTuple<'_> {
12109                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
12110                    (value.historySeconds,)
12111                }
12112            }
12113            #[automatically_derived]
12114            #[doc(hidden)]
12115            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12116            for setStateHistoryRetentionPeriodCall {
12117                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12118                    Self { historySeconds: tuple.0 }
12119                }
12120            }
12121        }
12122        {
12123            #[doc(hidden)]
12124            type UnderlyingSolTuple<'a> = ();
12125            #[doc(hidden)]
12126            type UnderlyingRustTuple<'a> = ();
12127            #[cfg(test)]
12128            #[allow(dead_code, unreachable_patterns)]
12129            fn _type_assertion(
12130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12131            ) {
12132                match _t {
12133                    alloy_sol_types::private::AssertTypeEq::<
12134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12135                    >(_) => {}
12136                }
12137            }
12138            #[automatically_derived]
12139            #[doc(hidden)]
12140            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
12141            for UnderlyingRustTuple<'_> {
12142                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
12143                    ()
12144                }
12145            }
12146            #[automatically_derived]
12147            #[doc(hidden)]
12148            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12149            for setStateHistoryRetentionPeriodReturn {
12150                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12151                    Self {}
12152                }
12153            }
12154        }
12155        #[automatically_derived]
12156        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12157            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12158            type Token<'a> = <Self::Parameters<
12159                'a,
12160            > as alloy_sol_types::SolType>::Token<'a>;
12161            type Return = setStateHistoryRetentionPeriodReturn;
12162            type ReturnTuple<'a> = ();
12163            type ReturnToken<'a> = <Self::ReturnTuple<
12164                'a,
12165            > as alloy_sol_types::SolType>::Token<'a>;
12166            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12167            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12168            #[inline]
12169            fn new<'a>(
12170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12171            ) -> Self {
12172                tuple.into()
12173            }
12174            #[inline]
12175            fn tokenize(&self) -> Self::Token<'_> {
12176                (
12177                    <alloy::sol_types::sol_data::Uint<
12178                        32,
12179                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12180                )
12181            }
12182            #[inline]
12183            fn abi_decode_returns(
12184                data: &[u8],
12185                validate: bool,
12186            ) -> alloy_sol_types::Result<Self::Return> {
12187                <Self::ReturnTuple<
12188                    '_,
12189                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12190                    .map(Into::into)
12191            }
12192        }
12193    };
12194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12195    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
12196```solidity
12197function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
12198```*/
12199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12200    #[derive(Clone)]
12201    pub struct setVotingStakeTableStateCall {
12202        #[allow(missing_docs)]
12203        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12204    }
12205    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
12206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12207    #[derive(Clone)]
12208    pub struct setVotingStakeTableStateReturn {}
12209    #[allow(
12210        non_camel_case_types,
12211        non_snake_case,
12212        clippy::pub_underscore_fields,
12213        clippy::style
12214    )]
12215    const _: () = {
12216        use alloy::sol_types as alloy_sol_types;
12217        {
12218            #[doc(hidden)]
12219            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
12220            #[doc(hidden)]
12221            type UnderlyingRustTuple<'a> = (
12222                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12223            );
12224            #[cfg(test)]
12225            #[allow(dead_code, unreachable_patterns)]
12226            fn _type_assertion(
12227                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12228            ) {
12229                match _t {
12230                    alloy_sol_types::private::AssertTypeEq::<
12231                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12232                    >(_) => {}
12233                }
12234            }
12235            #[automatically_derived]
12236            #[doc(hidden)]
12237            impl ::core::convert::From<setVotingStakeTableStateCall>
12238            for UnderlyingRustTuple<'_> {
12239                fn from(value: setVotingStakeTableStateCall) -> Self {
12240                    (value.stake,)
12241                }
12242            }
12243            #[automatically_derived]
12244            #[doc(hidden)]
12245            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12246            for setVotingStakeTableStateCall {
12247                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12248                    Self { stake: tuple.0 }
12249                }
12250            }
12251        }
12252        {
12253            #[doc(hidden)]
12254            type UnderlyingSolTuple<'a> = ();
12255            #[doc(hidden)]
12256            type UnderlyingRustTuple<'a> = ();
12257            #[cfg(test)]
12258            #[allow(dead_code, unreachable_patterns)]
12259            fn _type_assertion(
12260                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12261            ) {
12262                match _t {
12263                    alloy_sol_types::private::AssertTypeEq::<
12264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12265                    >(_) => {}
12266                }
12267            }
12268            #[automatically_derived]
12269            #[doc(hidden)]
12270            impl ::core::convert::From<setVotingStakeTableStateReturn>
12271            for UnderlyingRustTuple<'_> {
12272                fn from(value: setVotingStakeTableStateReturn) -> Self {
12273                    ()
12274                }
12275            }
12276            #[automatically_derived]
12277            #[doc(hidden)]
12278            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12279            for setVotingStakeTableStateReturn {
12280                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12281                    Self {}
12282                }
12283            }
12284        }
12285        #[automatically_derived]
12286        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
12287            type Parameters<'a> = (LightClient::StakeTableState,);
12288            type Token<'a> = <Self::Parameters<
12289                'a,
12290            > as alloy_sol_types::SolType>::Token<'a>;
12291            type Return = setVotingStakeTableStateReturn;
12292            type ReturnTuple<'a> = ();
12293            type ReturnToken<'a> = <Self::ReturnTuple<
12294                'a,
12295            > as alloy_sol_types::SolType>::Token<'a>;
12296            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
12297            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
12298            #[inline]
12299            fn new<'a>(
12300                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12301            ) -> Self {
12302                tuple.into()
12303            }
12304            #[inline]
12305            fn tokenize(&self) -> Self::Token<'_> {
12306                (
12307                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12308                        &self.stake,
12309                    ),
12310                )
12311            }
12312            #[inline]
12313            fn abi_decode_returns(
12314                data: &[u8],
12315                validate: bool,
12316            ) -> alloy_sol_types::Result<Self::Return> {
12317                <Self::ReturnTuple<
12318                    '_,
12319                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12320                    .map(Into::into)
12321            }
12322        }
12323    };
12324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12325    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12326```solidity
12327function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12328```*/
12329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12330    #[derive(Clone)]
12331    pub struct setstateHistoryRetentionPeriodCall {
12332        #[allow(missing_docs)]
12333        pub historySeconds: u32,
12334    }
12335    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12337    #[derive(Clone)]
12338    pub struct setstateHistoryRetentionPeriodReturn {}
12339    #[allow(
12340        non_camel_case_types,
12341        non_snake_case,
12342        clippy::pub_underscore_fields,
12343        clippy::style
12344    )]
12345    const _: () = {
12346        use alloy::sol_types as alloy_sol_types;
12347        {
12348            #[doc(hidden)]
12349            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12350            #[doc(hidden)]
12351            type UnderlyingRustTuple<'a> = (u32,);
12352            #[cfg(test)]
12353            #[allow(dead_code, unreachable_patterns)]
12354            fn _type_assertion(
12355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12356            ) {
12357                match _t {
12358                    alloy_sol_types::private::AssertTypeEq::<
12359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12360                    >(_) => {}
12361                }
12362            }
12363            #[automatically_derived]
12364            #[doc(hidden)]
12365            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12366            for UnderlyingRustTuple<'_> {
12367                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12368                    (value.historySeconds,)
12369                }
12370            }
12371            #[automatically_derived]
12372            #[doc(hidden)]
12373            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12374            for setstateHistoryRetentionPeriodCall {
12375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12376                    Self { historySeconds: tuple.0 }
12377                }
12378            }
12379        }
12380        {
12381            #[doc(hidden)]
12382            type UnderlyingSolTuple<'a> = ();
12383            #[doc(hidden)]
12384            type UnderlyingRustTuple<'a> = ();
12385            #[cfg(test)]
12386            #[allow(dead_code, unreachable_patterns)]
12387            fn _type_assertion(
12388                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12389            ) {
12390                match _t {
12391                    alloy_sol_types::private::AssertTypeEq::<
12392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12393                    >(_) => {}
12394                }
12395            }
12396            #[automatically_derived]
12397            #[doc(hidden)]
12398            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12399            for UnderlyingRustTuple<'_> {
12400                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12401                    ()
12402                }
12403            }
12404            #[automatically_derived]
12405            #[doc(hidden)]
12406            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12407            for setstateHistoryRetentionPeriodReturn {
12408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12409                    Self {}
12410                }
12411            }
12412        }
12413        #[automatically_derived]
12414        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12415            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12416            type Token<'a> = <Self::Parameters<
12417                'a,
12418            > as alloy_sol_types::SolType>::Token<'a>;
12419            type Return = setstateHistoryRetentionPeriodReturn;
12420            type ReturnTuple<'a> = ();
12421            type ReturnToken<'a> = <Self::ReturnTuple<
12422                'a,
12423            > as alloy_sol_types::SolType>::Token<'a>;
12424            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12425            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12426            #[inline]
12427            fn new<'a>(
12428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12429            ) -> Self {
12430                tuple.into()
12431            }
12432            #[inline]
12433            fn tokenize(&self) -> Self::Token<'_> {
12434                (
12435                    <alloy::sol_types::sol_data::Uint<
12436                        32,
12437                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12438                )
12439            }
12440            #[inline]
12441            fn abi_decode_returns(
12442                data: &[u8],
12443                validate: bool,
12444            ) -> alloy_sol_types::Result<Self::Return> {
12445                <Self::ReturnTuple<
12446                    '_,
12447                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12448                    .map(Into::into)
12449            }
12450        }
12451    };
12452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12453    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12454```solidity
12455function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12456```*/
12457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12458    #[derive(Clone)]
12459    pub struct stateHistoryCommitmentsCall {
12460        #[allow(missing_docs)]
12461        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12462    }
12463    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12464    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12466    #[derive(Clone)]
12467    pub struct stateHistoryCommitmentsReturn {
12468        #[allow(missing_docs)]
12469        pub l1BlockHeight: u64,
12470        #[allow(missing_docs)]
12471        pub l1BlockTimestamp: u64,
12472        #[allow(missing_docs)]
12473        pub hotShotBlockHeight: u64,
12474        #[allow(missing_docs)]
12475        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12476    }
12477    #[allow(
12478        non_camel_case_types,
12479        non_snake_case,
12480        clippy::pub_underscore_fields,
12481        clippy::style
12482    )]
12483    const _: () = {
12484        use alloy::sol_types as alloy_sol_types;
12485        {
12486            #[doc(hidden)]
12487            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12488            #[doc(hidden)]
12489            type UnderlyingRustTuple<'a> = (
12490                alloy::sol_types::private::primitives::aliases::U256,
12491            );
12492            #[cfg(test)]
12493            #[allow(dead_code, unreachable_patterns)]
12494            fn _type_assertion(
12495                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12496            ) {
12497                match _t {
12498                    alloy_sol_types::private::AssertTypeEq::<
12499                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12500                    >(_) => {}
12501                }
12502            }
12503            #[automatically_derived]
12504            #[doc(hidden)]
12505            impl ::core::convert::From<stateHistoryCommitmentsCall>
12506            for UnderlyingRustTuple<'_> {
12507                fn from(value: stateHistoryCommitmentsCall) -> Self {
12508                    (value._0,)
12509                }
12510            }
12511            #[automatically_derived]
12512            #[doc(hidden)]
12513            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12514            for stateHistoryCommitmentsCall {
12515                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12516                    Self { _0: tuple.0 }
12517                }
12518            }
12519        }
12520        {
12521            #[doc(hidden)]
12522            type UnderlyingSolTuple<'a> = (
12523                alloy::sol_types::sol_data::Uint<64>,
12524                alloy::sol_types::sol_data::Uint<64>,
12525                alloy::sol_types::sol_data::Uint<64>,
12526                BN254::ScalarField,
12527            );
12528            #[doc(hidden)]
12529            type UnderlyingRustTuple<'a> = (
12530                u64,
12531                u64,
12532                u64,
12533                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12534            );
12535            #[cfg(test)]
12536            #[allow(dead_code, unreachable_patterns)]
12537            fn _type_assertion(
12538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12539            ) {
12540                match _t {
12541                    alloy_sol_types::private::AssertTypeEq::<
12542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12543                    >(_) => {}
12544                }
12545            }
12546            #[automatically_derived]
12547            #[doc(hidden)]
12548            impl ::core::convert::From<stateHistoryCommitmentsReturn>
12549            for UnderlyingRustTuple<'_> {
12550                fn from(value: stateHistoryCommitmentsReturn) -> Self {
12551                    (
12552                        value.l1BlockHeight,
12553                        value.l1BlockTimestamp,
12554                        value.hotShotBlockHeight,
12555                        value.hotShotBlockCommRoot,
12556                    )
12557                }
12558            }
12559            #[automatically_derived]
12560            #[doc(hidden)]
12561            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12562            for stateHistoryCommitmentsReturn {
12563                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12564                    Self {
12565                        l1BlockHeight: tuple.0,
12566                        l1BlockTimestamp: tuple.1,
12567                        hotShotBlockHeight: tuple.2,
12568                        hotShotBlockCommRoot: tuple.3,
12569                    }
12570                }
12571            }
12572        }
12573        #[automatically_derived]
12574        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12575            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12576            type Token<'a> = <Self::Parameters<
12577                'a,
12578            > as alloy_sol_types::SolType>::Token<'a>;
12579            type Return = stateHistoryCommitmentsReturn;
12580            type ReturnTuple<'a> = (
12581                alloy::sol_types::sol_data::Uint<64>,
12582                alloy::sol_types::sol_data::Uint<64>,
12583                alloy::sol_types::sol_data::Uint<64>,
12584                BN254::ScalarField,
12585            );
12586            type ReturnToken<'a> = <Self::ReturnTuple<
12587                'a,
12588            > as alloy_sol_types::SolType>::Token<'a>;
12589            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12590            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12591            #[inline]
12592            fn new<'a>(
12593                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12594            ) -> Self {
12595                tuple.into()
12596            }
12597            #[inline]
12598            fn tokenize(&self) -> Self::Token<'_> {
12599                (
12600                    <alloy::sol_types::sol_data::Uint<
12601                        256,
12602                    > as alloy_sol_types::SolType>::tokenize(&self._0),
12603                )
12604            }
12605            #[inline]
12606            fn abi_decode_returns(
12607                data: &[u8],
12608                validate: bool,
12609            ) -> alloy_sol_types::Result<Self::Return> {
12610                <Self::ReturnTuple<
12611                    '_,
12612                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12613                    .map(Into::into)
12614            }
12615        }
12616    };
12617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12618    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12619```solidity
12620function stateHistoryFirstIndex() external view returns (uint64);
12621```*/
12622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12623    #[derive(Clone)]
12624    pub struct stateHistoryFirstIndexCall {}
12625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12626    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12628    #[derive(Clone)]
12629    pub struct stateHistoryFirstIndexReturn {
12630        #[allow(missing_docs)]
12631        pub _0: u64,
12632    }
12633    #[allow(
12634        non_camel_case_types,
12635        non_snake_case,
12636        clippy::pub_underscore_fields,
12637        clippy::style
12638    )]
12639    const _: () = {
12640        use alloy::sol_types as alloy_sol_types;
12641        {
12642            #[doc(hidden)]
12643            type UnderlyingSolTuple<'a> = ();
12644            #[doc(hidden)]
12645            type UnderlyingRustTuple<'a> = ();
12646            #[cfg(test)]
12647            #[allow(dead_code, unreachable_patterns)]
12648            fn _type_assertion(
12649                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12650            ) {
12651                match _t {
12652                    alloy_sol_types::private::AssertTypeEq::<
12653                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12654                    >(_) => {}
12655                }
12656            }
12657            #[automatically_derived]
12658            #[doc(hidden)]
12659            impl ::core::convert::From<stateHistoryFirstIndexCall>
12660            for UnderlyingRustTuple<'_> {
12661                fn from(value: stateHistoryFirstIndexCall) -> Self {
12662                    ()
12663                }
12664            }
12665            #[automatically_derived]
12666            #[doc(hidden)]
12667            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12668            for stateHistoryFirstIndexCall {
12669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12670                    Self {}
12671                }
12672            }
12673        }
12674        {
12675            #[doc(hidden)]
12676            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12677            #[doc(hidden)]
12678            type UnderlyingRustTuple<'a> = (u64,);
12679            #[cfg(test)]
12680            #[allow(dead_code, unreachable_patterns)]
12681            fn _type_assertion(
12682                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12683            ) {
12684                match _t {
12685                    alloy_sol_types::private::AssertTypeEq::<
12686                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12687                    >(_) => {}
12688                }
12689            }
12690            #[automatically_derived]
12691            #[doc(hidden)]
12692            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12693            for UnderlyingRustTuple<'_> {
12694                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12695                    (value._0,)
12696                }
12697            }
12698            #[automatically_derived]
12699            #[doc(hidden)]
12700            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12701            for stateHistoryFirstIndexReturn {
12702                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12703                    Self { _0: tuple.0 }
12704                }
12705            }
12706        }
12707        #[automatically_derived]
12708        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12709            type Parameters<'a> = ();
12710            type Token<'a> = <Self::Parameters<
12711                'a,
12712            > as alloy_sol_types::SolType>::Token<'a>;
12713            type Return = stateHistoryFirstIndexReturn;
12714            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12715            type ReturnToken<'a> = <Self::ReturnTuple<
12716                'a,
12717            > as alloy_sol_types::SolType>::Token<'a>;
12718            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12719            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12720            #[inline]
12721            fn new<'a>(
12722                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12723            ) -> Self {
12724                tuple.into()
12725            }
12726            #[inline]
12727            fn tokenize(&self) -> Self::Token<'_> {
12728                ()
12729            }
12730            #[inline]
12731            fn abi_decode_returns(
12732                data: &[u8],
12733                validate: bool,
12734            ) -> alloy_sol_types::Result<Self::Return> {
12735                <Self::ReturnTuple<
12736                    '_,
12737                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12738                    .map(Into::into)
12739            }
12740        }
12741    };
12742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12743    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12744```solidity
12745function stateHistoryRetentionPeriod() external view returns (uint32);
12746```*/
12747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12748    #[derive(Clone)]
12749    pub struct stateHistoryRetentionPeriodCall {}
12750    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12751    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12752    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12753    #[derive(Clone)]
12754    pub struct stateHistoryRetentionPeriodReturn {
12755        #[allow(missing_docs)]
12756        pub _0: u32,
12757    }
12758    #[allow(
12759        non_camel_case_types,
12760        non_snake_case,
12761        clippy::pub_underscore_fields,
12762        clippy::style
12763    )]
12764    const _: () = {
12765        use alloy::sol_types as alloy_sol_types;
12766        {
12767            #[doc(hidden)]
12768            type UnderlyingSolTuple<'a> = ();
12769            #[doc(hidden)]
12770            type UnderlyingRustTuple<'a> = ();
12771            #[cfg(test)]
12772            #[allow(dead_code, unreachable_patterns)]
12773            fn _type_assertion(
12774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12775            ) {
12776                match _t {
12777                    alloy_sol_types::private::AssertTypeEq::<
12778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12779                    >(_) => {}
12780                }
12781            }
12782            #[automatically_derived]
12783            #[doc(hidden)]
12784            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
12785            for UnderlyingRustTuple<'_> {
12786                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
12787                    ()
12788                }
12789            }
12790            #[automatically_derived]
12791            #[doc(hidden)]
12792            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12793            for stateHistoryRetentionPeriodCall {
12794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12795                    Self {}
12796                }
12797            }
12798        }
12799        {
12800            #[doc(hidden)]
12801            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12802            #[doc(hidden)]
12803            type UnderlyingRustTuple<'a> = (u32,);
12804            #[cfg(test)]
12805            #[allow(dead_code, unreachable_patterns)]
12806            fn _type_assertion(
12807                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12808            ) {
12809                match _t {
12810                    alloy_sol_types::private::AssertTypeEq::<
12811                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12812                    >(_) => {}
12813                }
12814            }
12815            #[automatically_derived]
12816            #[doc(hidden)]
12817            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
12818            for UnderlyingRustTuple<'_> {
12819                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
12820                    (value._0,)
12821                }
12822            }
12823            #[automatically_derived]
12824            #[doc(hidden)]
12825            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12826            for stateHistoryRetentionPeriodReturn {
12827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12828                    Self { _0: tuple.0 }
12829                }
12830            }
12831        }
12832        #[automatically_derived]
12833        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
12834            type Parameters<'a> = ();
12835            type Token<'a> = <Self::Parameters<
12836                'a,
12837            > as alloy_sol_types::SolType>::Token<'a>;
12838            type Return = stateHistoryRetentionPeriodReturn;
12839            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12840            type ReturnToken<'a> = <Self::ReturnTuple<
12841                'a,
12842            > as alloy_sol_types::SolType>::Token<'a>;
12843            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
12844            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
12845            #[inline]
12846            fn new<'a>(
12847                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12848            ) -> Self {
12849                tuple.into()
12850            }
12851            #[inline]
12852            fn tokenize(&self) -> Self::Token<'_> {
12853                ()
12854            }
12855            #[inline]
12856            fn abi_decode_returns(
12857                data: &[u8],
12858                validate: bool,
12859            ) -> alloy_sol_types::Result<Self::Return> {
12860                <Self::ReturnTuple<
12861                    '_,
12862                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12863                    .map(Into::into)
12864            }
12865        }
12866    };
12867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12868    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12869```solidity
12870function transferOwnership(address newOwner) external;
12871```*/
12872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12873    #[derive(Clone)]
12874    pub struct transferOwnershipCall {
12875        #[allow(missing_docs)]
12876        pub newOwner: alloy::sol_types::private::Address,
12877    }
12878    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12880    #[derive(Clone)]
12881    pub struct transferOwnershipReturn {}
12882    #[allow(
12883        non_camel_case_types,
12884        non_snake_case,
12885        clippy::pub_underscore_fields,
12886        clippy::style
12887    )]
12888    const _: () = {
12889        use alloy::sol_types as alloy_sol_types;
12890        {
12891            #[doc(hidden)]
12892            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12893            #[doc(hidden)]
12894            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12895            #[cfg(test)]
12896            #[allow(dead_code, unreachable_patterns)]
12897            fn _type_assertion(
12898                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12899            ) {
12900                match _t {
12901                    alloy_sol_types::private::AssertTypeEq::<
12902                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12903                    >(_) => {}
12904                }
12905            }
12906            #[automatically_derived]
12907            #[doc(hidden)]
12908            impl ::core::convert::From<transferOwnershipCall>
12909            for UnderlyingRustTuple<'_> {
12910                fn from(value: transferOwnershipCall) -> Self {
12911                    (value.newOwner,)
12912                }
12913            }
12914            #[automatically_derived]
12915            #[doc(hidden)]
12916            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12917            for transferOwnershipCall {
12918                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12919                    Self { newOwner: tuple.0 }
12920                }
12921            }
12922        }
12923        {
12924            #[doc(hidden)]
12925            type UnderlyingSolTuple<'a> = ();
12926            #[doc(hidden)]
12927            type UnderlyingRustTuple<'a> = ();
12928            #[cfg(test)]
12929            #[allow(dead_code, unreachable_patterns)]
12930            fn _type_assertion(
12931                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12932            ) {
12933                match _t {
12934                    alloy_sol_types::private::AssertTypeEq::<
12935                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12936                    >(_) => {}
12937                }
12938            }
12939            #[automatically_derived]
12940            #[doc(hidden)]
12941            impl ::core::convert::From<transferOwnershipReturn>
12942            for UnderlyingRustTuple<'_> {
12943                fn from(value: transferOwnershipReturn) -> Self {
12944                    ()
12945                }
12946            }
12947            #[automatically_derived]
12948            #[doc(hidden)]
12949            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12950            for transferOwnershipReturn {
12951                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12952                    Self {}
12953                }
12954            }
12955        }
12956        #[automatically_derived]
12957        impl alloy_sol_types::SolCall for transferOwnershipCall {
12958            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12959            type Token<'a> = <Self::Parameters<
12960                'a,
12961            > as alloy_sol_types::SolType>::Token<'a>;
12962            type Return = transferOwnershipReturn;
12963            type ReturnTuple<'a> = ();
12964            type ReturnToken<'a> = <Self::ReturnTuple<
12965                'a,
12966            > as alloy_sol_types::SolType>::Token<'a>;
12967            const SIGNATURE: &'static str = "transferOwnership(address)";
12968            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12969            #[inline]
12970            fn new<'a>(
12971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12972            ) -> Self {
12973                tuple.into()
12974            }
12975            #[inline]
12976            fn tokenize(&self) -> Self::Token<'_> {
12977                (
12978                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12979                        &self.newOwner,
12980                    ),
12981                )
12982            }
12983            #[inline]
12984            fn abi_decode_returns(
12985                data: &[u8],
12986                validate: bool,
12987            ) -> alloy_sol_types::Result<Self::Return> {
12988                <Self::ReturnTuple<
12989                    '_,
12990                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12991                    .map(Into::into)
12992            }
12993        }
12994    };
12995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12996    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12997```solidity
12998function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12999```*/
13000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13001    #[derive(Clone)]
13002    pub struct updateEpochStartBlockCall {
13003        #[allow(missing_docs)]
13004        pub newEpochStartBlock: u64,
13005    }
13006    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
13007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13008    #[derive(Clone)]
13009    pub struct updateEpochStartBlockReturn {}
13010    #[allow(
13011        non_camel_case_types,
13012        non_snake_case,
13013        clippy::pub_underscore_fields,
13014        clippy::style
13015    )]
13016    const _: () = {
13017        use alloy::sol_types as alloy_sol_types;
13018        {
13019            #[doc(hidden)]
13020            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13021            #[doc(hidden)]
13022            type UnderlyingRustTuple<'a> = (u64,);
13023            #[cfg(test)]
13024            #[allow(dead_code, unreachable_patterns)]
13025            fn _type_assertion(
13026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13027            ) {
13028                match _t {
13029                    alloy_sol_types::private::AssertTypeEq::<
13030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13031                    >(_) => {}
13032                }
13033            }
13034            #[automatically_derived]
13035            #[doc(hidden)]
13036            impl ::core::convert::From<updateEpochStartBlockCall>
13037            for UnderlyingRustTuple<'_> {
13038                fn from(value: updateEpochStartBlockCall) -> Self {
13039                    (value.newEpochStartBlock,)
13040                }
13041            }
13042            #[automatically_derived]
13043            #[doc(hidden)]
13044            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13045            for updateEpochStartBlockCall {
13046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13047                    Self {
13048                        newEpochStartBlock: tuple.0,
13049                    }
13050                }
13051            }
13052        }
13053        {
13054            #[doc(hidden)]
13055            type UnderlyingSolTuple<'a> = ();
13056            #[doc(hidden)]
13057            type UnderlyingRustTuple<'a> = ();
13058            #[cfg(test)]
13059            #[allow(dead_code, unreachable_patterns)]
13060            fn _type_assertion(
13061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13062            ) {
13063                match _t {
13064                    alloy_sol_types::private::AssertTypeEq::<
13065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13066                    >(_) => {}
13067                }
13068            }
13069            #[automatically_derived]
13070            #[doc(hidden)]
13071            impl ::core::convert::From<updateEpochStartBlockReturn>
13072            for UnderlyingRustTuple<'_> {
13073                fn from(value: updateEpochStartBlockReturn) -> Self {
13074                    ()
13075                }
13076            }
13077            #[automatically_derived]
13078            #[doc(hidden)]
13079            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13080            for updateEpochStartBlockReturn {
13081                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13082                    Self {}
13083                }
13084            }
13085        }
13086        #[automatically_derived]
13087        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
13088            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13089            type Token<'a> = <Self::Parameters<
13090                'a,
13091            > as alloy_sol_types::SolType>::Token<'a>;
13092            type Return = updateEpochStartBlockReturn;
13093            type ReturnTuple<'a> = ();
13094            type ReturnToken<'a> = <Self::ReturnTuple<
13095                'a,
13096            > as alloy_sol_types::SolType>::Token<'a>;
13097            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
13098            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
13099            #[inline]
13100            fn new<'a>(
13101                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13102            ) -> Self {
13103                tuple.into()
13104            }
13105            #[inline]
13106            fn tokenize(&self) -> Self::Token<'_> {
13107                (
13108                    <alloy::sol_types::sol_data::Uint<
13109                        64,
13110                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
13111                )
13112            }
13113            #[inline]
13114            fn abi_decode_returns(
13115                data: &[u8],
13116                validate: bool,
13117            ) -> alloy_sol_types::Result<Self::Return> {
13118                <Self::ReturnTuple<
13119                    '_,
13120                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13121                    .map(Into::into)
13122            }
13123        }
13124    };
13125    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13126    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13127```solidity
13128function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13129```*/
13130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13131    #[derive(Clone)]
13132    pub struct upgradeToAndCallCall {
13133        #[allow(missing_docs)]
13134        pub newImplementation: alloy::sol_types::private::Address,
13135        #[allow(missing_docs)]
13136        pub data: alloy::sol_types::private::Bytes,
13137    }
13138    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13140    #[derive(Clone)]
13141    pub struct upgradeToAndCallReturn {}
13142    #[allow(
13143        non_camel_case_types,
13144        non_snake_case,
13145        clippy::pub_underscore_fields,
13146        clippy::style
13147    )]
13148    const _: () = {
13149        use alloy::sol_types as alloy_sol_types;
13150        {
13151            #[doc(hidden)]
13152            type UnderlyingSolTuple<'a> = (
13153                alloy::sol_types::sol_data::Address,
13154                alloy::sol_types::sol_data::Bytes,
13155            );
13156            #[doc(hidden)]
13157            type UnderlyingRustTuple<'a> = (
13158                alloy::sol_types::private::Address,
13159                alloy::sol_types::private::Bytes,
13160            );
13161            #[cfg(test)]
13162            #[allow(dead_code, unreachable_patterns)]
13163            fn _type_assertion(
13164                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13165            ) {
13166                match _t {
13167                    alloy_sol_types::private::AssertTypeEq::<
13168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13169                    >(_) => {}
13170                }
13171            }
13172            #[automatically_derived]
13173            #[doc(hidden)]
13174            impl ::core::convert::From<upgradeToAndCallCall>
13175            for UnderlyingRustTuple<'_> {
13176                fn from(value: upgradeToAndCallCall) -> Self {
13177                    (value.newImplementation, value.data)
13178                }
13179            }
13180            #[automatically_derived]
13181            #[doc(hidden)]
13182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13183            for upgradeToAndCallCall {
13184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13185                    Self {
13186                        newImplementation: tuple.0,
13187                        data: tuple.1,
13188                    }
13189                }
13190            }
13191        }
13192        {
13193            #[doc(hidden)]
13194            type UnderlyingSolTuple<'a> = ();
13195            #[doc(hidden)]
13196            type UnderlyingRustTuple<'a> = ();
13197            #[cfg(test)]
13198            #[allow(dead_code, unreachable_patterns)]
13199            fn _type_assertion(
13200                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13201            ) {
13202                match _t {
13203                    alloy_sol_types::private::AssertTypeEq::<
13204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13205                    >(_) => {}
13206                }
13207            }
13208            #[automatically_derived]
13209            #[doc(hidden)]
13210            impl ::core::convert::From<upgradeToAndCallReturn>
13211            for UnderlyingRustTuple<'_> {
13212                fn from(value: upgradeToAndCallReturn) -> Self {
13213                    ()
13214                }
13215            }
13216            #[automatically_derived]
13217            #[doc(hidden)]
13218            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13219            for upgradeToAndCallReturn {
13220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13221                    Self {}
13222                }
13223            }
13224        }
13225        #[automatically_derived]
13226        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13227            type Parameters<'a> = (
13228                alloy::sol_types::sol_data::Address,
13229                alloy::sol_types::sol_data::Bytes,
13230            );
13231            type Token<'a> = <Self::Parameters<
13232                'a,
13233            > as alloy_sol_types::SolType>::Token<'a>;
13234            type Return = upgradeToAndCallReturn;
13235            type ReturnTuple<'a> = ();
13236            type ReturnToken<'a> = <Self::ReturnTuple<
13237                'a,
13238            > as alloy_sol_types::SolType>::Token<'a>;
13239            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13240            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13241            #[inline]
13242            fn new<'a>(
13243                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13244            ) -> Self {
13245                tuple.into()
13246            }
13247            #[inline]
13248            fn tokenize(&self) -> Self::Token<'_> {
13249                (
13250                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13251                        &self.newImplementation,
13252                    ),
13253                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13254                        &self.data,
13255                    ),
13256                )
13257            }
13258            #[inline]
13259            fn abi_decode_returns(
13260                data: &[u8],
13261                validate: bool,
13262            ) -> alloy_sol_types::Result<Self::Return> {
13263                <Self::ReturnTuple<
13264                    '_,
13265                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13266                    .map(Into::into)
13267            }
13268        }
13269    };
13270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13271    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13272```solidity
13273function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13274```*/
13275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13276    #[derive(Clone)]
13277    pub struct votingStakeTableStateCall {}
13278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13279    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13281    #[derive(Clone)]
13282    pub struct votingStakeTableStateReturn {
13283        #[allow(missing_docs)]
13284        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13285        #[allow(missing_docs)]
13286        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13287        #[allow(missing_docs)]
13288        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13289        #[allow(missing_docs)]
13290        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13291    }
13292    #[allow(
13293        non_camel_case_types,
13294        non_snake_case,
13295        clippy::pub_underscore_fields,
13296        clippy::style
13297    )]
13298    const _: () = {
13299        use alloy::sol_types as alloy_sol_types;
13300        {
13301            #[doc(hidden)]
13302            type UnderlyingSolTuple<'a> = ();
13303            #[doc(hidden)]
13304            type UnderlyingRustTuple<'a> = ();
13305            #[cfg(test)]
13306            #[allow(dead_code, unreachable_patterns)]
13307            fn _type_assertion(
13308                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13309            ) {
13310                match _t {
13311                    alloy_sol_types::private::AssertTypeEq::<
13312                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13313                    >(_) => {}
13314                }
13315            }
13316            #[automatically_derived]
13317            #[doc(hidden)]
13318            impl ::core::convert::From<votingStakeTableStateCall>
13319            for UnderlyingRustTuple<'_> {
13320                fn from(value: votingStakeTableStateCall) -> Self {
13321                    ()
13322                }
13323            }
13324            #[automatically_derived]
13325            #[doc(hidden)]
13326            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13327            for votingStakeTableStateCall {
13328                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13329                    Self {}
13330                }
13331            }
13332        }
13333        {
13334            #[doc(hidden)]
13335            type UnderlyingSolTuple<'a> = (
13336                alloy::sol_types::sol_data::Uint<256>,
13337                BN254::ScalarField,
13338                BN254::ScalarField,
13339                BN254::ScalarField,
13340            );
13341            #[doc(hidden)]
13342            type UnderlyingRustTuple<'a> = (
13343                alloy::sol_types::private::primitives::aliases::U256,
13344                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13345                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13346                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13347            );
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<votingStakeTableStateReturn>
13362            for UnderlyingRustTuple<'_> {
13363                fn from(value: votingStakeTableStateReturn) -> Self {
13364                    (
13365                        value.threshold,
13366                        value.blsKeyComm,
13367                        value.schnorrKeyComm,
13368                        value.amountComm,
13369                    )
13370                }
13371            }
13372            #[automatically_derived]
13373            #[doc(hidden)]
13374            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13375            for votingStakeTableStateReturn {
13376                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13377                    Self {
13378                        threshold: tuple.0,
13379                        blsKeyComm: tuple.1,
13380                        schnorrKeyComm: tuple.2,
13381                        amountComm: tuple.3,
13382                    }
13383                }
13384            }
13385        }
13386        #[automatically_derived]
13387        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
13388            type Parameters<'a> = ();
13389            type Token<'a> = <Self::Parameters<
13390                'a,
13391            > as alloy_sol_types::SolType>::Token<'a>;
13392            type Return = votingStakeTableStateReturn;
13393            type ReturnTuple<'a> = (
13394                alloy::sol_types::sol_data::Uint<256>,
13395                BN254::ScalarField,
13396                BN254::ScalarField,
13397                BN254::ScalarField,
13398            );
13399            type ReturnToken<'a> = <Self::ReturnTuple<
13400                'a,
13401            > as alloy_sol_types::SolType>::Token<'a>;
13402            const SIGNATURE: &'static str = "votingStakeTableState()";
13403            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
13404            #[inline]
13405            fn new<'a>(
13406                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13407            ) -> Self {
13408                tuple.into()
13409            }
13410            #[inline]
13411            fn tokenize(&self) -> Self::Token<'_> {
13412                ()
13413            }
13414            #[inline]
13415            fn abi_decode_returns(
13416                data: &[u8],
13417                validate: bool,
13418            ) -> alloy_sol_types::Result<Self::Return> {
13419                <Self::ReturnTuple<
13420                    '_,
13421                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13422                    .map(Into::into)
13423            }
13424        }
13425    };
13426    ///Container for all the [`LightClientV2Mock`](self) function calls.
13427    #[derive()]
13428    pub enum LightClientV2MockCalls {
13429        #[allow(missing_docs)]
13430        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
13431        #[allow(missing_docs)]
13432        _getVk(_getVkCall),
13433        #[allow(missing_docs)]
13434        blocksPerEpoch(blocksPerEpochCall),
13435        #[allow(missing_docs)]
13436        currentBlockNumber(currentBlockNumberCall),
13437        #[allow(missing_docs)]
13438        currentEpoch(currentEpochCall),
13439        #[allow(missing_docs)]
13440        disablePermissionedProverMode(disablePermissionedProverModeCall),
13441        #[allow(missing_docs)]
13442        epochFromBlockNumber(epochFromBlockNumberCall),
13443        #[allow(missing_docs)]
13444        epochStartBlock(epochStartBlockCall),
13445        #[allow(missing_docs)]
13446        finalizedState(finalizedStateCall),
13447        #[allow(missing_docs)]
13448        genesisStakeTableState(genesisStakeTableStateCall),
13449        #[allow(missing_docs)]
13450        genesisState(genesisStateCall),
13451        #[allow(missing_docs)]
13452        getFirstEpoch(getFirstEpochCall),
13453        #[allow(missing_docs)]
13454        getHotShotCommitment(getHotShotCommitmentCall),
13455        #[allow(missing_docs)]
13456        getStateHistoryCount(getStateHistoryCountCall),
13457        #[allow(missing_docs)]
13458        getVersion(getVersionCall),
13459        #[allow(missing_docs)]
13460        initialize(initializeCall),
13461        #[allow(missing_docs)]
13462        initializeV2(initializeV2Call),
13463        #[allow(missing_docs)]
13464        isEpochRoot(isEpochRootCall),
13465        #[allow(missing_docs)]
13466        isGtEpochRoot(isGtEpochRootCall),
13467        #[allow(missing_docs)]
13468        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
13469        #[allow(missing_docs)]
13470        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
13471        #[allow(missing_docs)]
13472        newFinalizedState_0(newFinalizedState_0Call),
13473        #[allow(missing_docs)]
13474        newFinalizedState_1(newFinalizedState_1Call),
13475        #[allow(missing_docs)]
13476        owner(ownerCall),
13477        #[allow(missing_docs)]
13478        permissionedProver(permissionedProverCall),
13479        #[allow(missing_docs)]
13480        proxiableUUID(proxiableUUIDCall),
13481        #[allow(missing_docs)]
13482        renounceOwnership(renounceOwnershipCall),
13483        #[allow(missing_docs)]
13484        setBlocksPerEpoch(setBlocksPerEpochCall),
13485        #[allow(missing_docs)]
13486        setFinalizedState(setFinalizedStateCall),
13487        #[allow(missing_docs)]
13488        setHotShotDownSince(setHotShotDownSinceCall),
13489        #[allow(missing_docs)]
13490        setHotShotUp(setHotShotUpCall),
13491        #[allow(missing_docs)]
13492        setPermissionedProver(setPermissionedProverCall),
13493        #[allow(missing_docs)]
13494        setStateHistory(setStateHistoryCall),
13495        #[allow(missing_docs)]
13496        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
13497        #[allow(missing_docs)]
13498        setVotingStakeTableState(setVotingStakeTableStateCall),
13499        #[allow(missing_docs)]
13500        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
13501        #[allow(missing_docs)]
13502        stateHistoryCommitments(stateHistoryCommitmentsCall),
13503        #[allow(missing_docs)]
13504        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
13505        #[allow(missing_docs)]
13506        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
13507        #[allow(missing_docs)]
13508        transferOwnership(transferOwnershipCall),
13509        #[allow(missing_docs)]
13510        updateEpochStartBlock(updateEpochStartBlockCall),
13511        #[allow(missing_docs)]
13512        upgradeToAndCall(upgradeToAndCallCall),
13513        #[allow(missing_docs)]
13514        votingStakeTableState(votingStakeTableStateCall),
13515    }
13516    #[automatically_derived]
13517    impl LightClientV2MockCalls {
13518        /// All the selectors of this enum.
13519        ///
13520        /// Note that the selectors might not be in the same order as the variants.
13521        /// No guarantees are made about the order of the selectors.
13522        ///
13523        /// Prefer using `SolInterface` methods instead.
13524        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13525            [1u8, 63u8, 165u8, 252u8],
13526            [2u8, 181u8, 146u8, 243u8],
13527            [6u8, 37u8, 225u8, 155u8],
13528            [13u8, 142u8, 110u8, 44u8],
13529            [18u8, 23u8, 60u8, 44u8],
13530            [22u8, 122u8, 198u8, 24u8],
13531            [32u8, 99u8, 212u8, 247u8],
13532            [37u8, 41u8, 116u8, 39u8],
13533            [45u8, 82u8, 170u8, 214u8],
13534            [47u8, 121u8, 136u8, 157u8],
13535            [48u8, 12u8, 137u8, 221u8],
13536            [49u8, 61u8, 247u8, 177u8],
13537            [55u8, 142u8, 194u8, 59u8],
13538            [60u8, 35u8, 182u8, 219u8],
13539            [62u8, 213u8, 91u8, 123u8],
13540            [66u8, 109u8, 49u8, 148u8],
13541            [67u8, 61u8, 186u8, 159u8],
13542            [79u8, 30u8, 242u8, 134u8],
13543            [82u8, 209u8, 144u8, 45u8],
13544            [98u8, 58u8, 19u8, 56u8],
13545            [105u8, 204u8, 106u8, 4u8],
13546            [113u8, 80u8, 24u8, 166u8],
13547            [117u8, 124u8, 55u8, 173u8],
13548            [118u8, 103u8, 24u8, 8u8],
13549            [130u8, 110u8, 65u8, 252u8],
13550            [133u8, 132u8, 210u8, 63u8],
13551            [141u8, 165u8, 203u8, 91u8],
13552            [144u8, 193u8, 67u8, 144u8],
13553            [150u8, 193u8, 202u8, 97u8],
13554            [155u8, 170u8, 60u8, 201u8],
13555            [159u8, 219u8, 84u8, 167u8],
13556            [173u8, 60u8, 177u8, 204u8],
13557            [179u8, 59u8, 196u8, 145u8],
13558            [179u8, 218u8, 242u8, 84u8],
13559            [181u8, 173u8, 234u8, 60u8],
13560            [194u8, 59u8, 158u8, 158u8],
13561            [200u8, 229u8, 228u8, 152u8],
13562            [210u8, 77u8, 147u8, 61u8],
13563            [224u8, 48u8, 51u8, 1u8],
13564            [240u8, 104u8, 32u8, 84u8],
13565            [242u8, 253u8, 227u8, 139u8],
13566            [245u8, 103u8, 97u8, 96u8],
13567            [249u8, 229u8, 13u8, 25u8],
13568        ];
13569    }
13570    #[automatically_derived]
13571    impl alloy_sol_types::SolInterface for LightClientV2MockCalls {
13572        const NAME: &'static str = "LightClientV2MockCalls";
13573        const MIN_DATA_LENGTH: usize = 0usize;
13574        const COUNT: usize = 43usize;
13575        #[inline]
13576        fn selector(&self) -> [u8; 4] {
13577            match self {
13578                Self::UPGRADE_INTERFACE_VERSION(_) => {
13579                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13580                }
13581                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
13582                Self::blocksPerEpoch(_) => {
13583                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13584                }
13585                Self::currentBlockNumber(_) => {
13586                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13587                }
13588                Self::currentEpoch(_) => {
13589                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
13590                }
13591                Self::disablePermissionedProverMode(_) => {
13592                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
13593                }
13594                Self::epochFromBlockNumber(_) => {
13595                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13596                }
13597                Self::epochStartBlock(_) => {
13598                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13599                }
13600                Self::finalizedState(_) => {
13601                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13602                }
13603                Self::genesisStakeTableState(_) => {
13604                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13605                }
13606                Self::genesisState(_) => {
13607                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
13608                }
13609                Self::getFirstEpoch(_) => {
13610                    <getFirstEpochCall as alloy_sol_types::SolCall>::SELECTOR
13611                }
13612                Self::getHotShotCommitment(_) => {
13613                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
13614                }
13615                Self::getStateHistoryCount(_) => {
13616                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
13617                }
13618                Self::getVersion(_) => {
13619                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13620                }
13621                Self::initialize(_) => {
13622                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13623                }
13624                Self::initializeV2(_) => {
13625                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13626                }
13627                Self::isEpochRoot(_) => {
13628                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13629                }
13630                Self::isGtEpochRoot(_) => {
13631                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13632                }
13633                Self::isPermissionedProverEnabled(_) => {
13634                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
13635                }
13636                Self::lagOverEscapeHatchThreshold(_) => {
13637                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
13638                }
13639                Self::newFinalizedState_0(_) => {
13640                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
13641                }
13642                Self::newFinalizedState_1(_) => {
13643                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
13644                }
13645                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13646                Self::permissionedProver(_) => {
13647                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13648                }
13649                Self::proxiableUUID(_) => {
13650                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13651                }
13652                Self::renounceOwnership(_) => {
13653                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13654                }
13655                Self::setBlocksPerEpoch(_) => {
13656                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13657                }
13658                Self::setFinalizedState(_) => {
13659                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13660                }
13661                Self::setHotShotDownSince(_) => {
13662                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
13663                }
13664                Self::setHotShotUp(_) => {
13665                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
13666                }
13667                Self::setPermissionedProver(_) => {
13668                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13669                }
13670                Self::setStateHistory(_) => {
13671                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
13672                }
13673                Self::setStateHistoryRetentionPeriod(_) => {
13674                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13675                }
13676                Self::setVotingStakeTableState(_) => {
13677                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13678                }
13679                Self::setstateHistoryRetentionPeriod(_) => {
13680                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13681                }
13682                Self::stateHistoryCommitments(_) => {
13683                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
13684                }
13685                Self::stateHistoryFirstIndex(_) => {
13686                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
13687                }
13688                Self::stateHistoryRetentionPeriod(_) => {
13689                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13690                }
13691                Self::transferOwnership(_) => {
13692                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13693                }
13694                Self::updateEpochStartBlock(_) => {
13695                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13696                }
13697                Self::upgradeToAndCall(_) => {
13698                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13699                }
13700                Self::votingStakeTableState(_) => {
13701                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13702                }
13703            }
13704        }
13705        #[inline]
13706        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13707            Self::SELECTORS.get(i).copied()
13708        }
13709        #[inline]
13710        fn valid_selector(selector: [u8; 4]) -> bool {
13711            Self::SELECTORS.binary_search(&selector).is_ok()
13712        }
13713        #[inline]
13714        #[allow(non_snake_case)]
13715        fn abi_decode_raw(
13716            selector: [u8; 4],
13717            data: &[u8],
13718            validate: bool,
13719        ) -> alloy_sol_types::Result<Self> {
13720            static DECODE_SHIMS: &[fn(
13721                &[u8],
13722                bool,
13723            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
13724                {
13725                    fn setPermissionedProver(
13726                        data: &[u8],
13727                        validate: bool,
13728                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13729                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13730                                data,
13731                                validate,
13732                            )
13733                            .map(LightClientV2MockCalls::setPermissionedProver)
13734                    }
13735                    setPermissionedProver
13736                },
13737                {
13738                    fn stateHistoryCommitments(
13739                        data: &[u8],
13740                        validate: bool,
13741                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13742                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13743                                data,
13744                                validate,
13745                            )
13746                            .map(LightClientV2MockCalls::stateHistoryCommitments)
13747                    }
13748                    stateHistoryCommitments
13749                },
13750                {
13751                    fn votingStakeTableState(
13752                        data: &[u8],
13753                        validate: bool,
13754                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13755                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13756                                data,
13757                                validate,
13758                            )
13759                            .map(LightClientV2MockCalls::votingStakeTableState)
13760                    }
13761                    votingStakeTableState
13762                },
13763                {
13764                    fn getVersion(
13765                        data: &[u8],
13766                        validate: bool,
13767                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13768                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13769                                data,
13770                                validate,
13771                            )
13772                            .map(LightClientV2MockCalls::getVersion)
13773                    }
13774                    getVersion
13775                },
13776                {
13777                    fn _getVk(
13778                        data: &[u8],
13779                        validate: bool,
13780                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13781                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
13782                                data,
13783                                validate,
13784                            )
13785                            .map(LightClientV2MockCalls::_getVk)
13786                    }
13787                    _getVk
13788                },
13789                {
13790                    fn updateEpochStartBlock(
13791                        data: &[u8],
13792                        validate: bool,
13793                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13794                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13795                                data,
13796                                validate,
13797                            )
13798                            .map(LightClientV2MockCalls::updateEpochStartBlock)
13799                    }
13800                    updateEpochStartBlock
13801                },
13802                {
13803                    fn newFinalizedState_0(
13804                        data: &[u8],
13805                        validate: bool,
13806                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13807                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13808                                data,
13809                                validate,
13810                            )
13811                            .map(LightClientV2MockCalls::newFinalizedState_0)
13812                    }
13813                    newFinalizedState_0
13814                },
13815                {
13816                    fn isEpochRoot(
13817                        data: &[u8],
13818                        validate: bool,
13819                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13820                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13821                                data,
13822                                validate,
13823                            )
13824                            .map(LightClientV2MockCalls::isEpochRoot)
13825                    }
13826                    isEpochRoot
13827                },
13828                {
13829                    fn setHotShotDownSince(
13830                        data: &[u8],
13831                        validate: bool,
13832                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13833                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
13834                                data,
13835                                validate,
13836                            )
13837                            .map(LightClientV2MockCalls::setHotShotDownSince)
13838                    }
13839                    setHotShotDownSince
13840                },
13841                {
13842                    fn stateHistoryFirstIndex(
13843                        data: &[u8],
13844                        validate: bool,
13845                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13846                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13847                                data,
13848                                validate,
13849                            )
13850                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
13851                    }
13852                    stateHistoryFirstIndex
13853                },
13854                {
13855                    fn isGtEpochRoot(
13856                        data: &[u8],
13857                        validate: bool,
13858                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13859                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13860                                data,
13861                                validate,
13862                            )
13863                            .map(LightClientV2MockCalls::isGtEpochRoot)
13864                    }
13865                    isGtEpochRoot
13866                },
13867                {
13868                    fn permissionedProver(
13869                        data: &[u8],
13870                        validate: bool,
13871                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13872                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13873                                data,
13874                                validate,
13875                            )
13876                            .map(LightClientV2MockCalls::permissionedProver)
13877                    }
13878                    permissionedProver
13879                },
13880                {
13881                    fn currentBlockNumber(
13882                        data: &[u8],
13883                        validate: bool,
13884                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13885                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13886                                data,
13887                                validate,
13888                            )
13889                            .map(LightClientV2MockCalls::currentBlockNumber)
13890                    }
13891                    currentBlockNumber
13892                },
13893                {
13894                    fn setBlocksPerEpoch(
13895                        data: &[u8],
13896                        validate: bool,
13897                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13898                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13899                                data,
13900                                validate,
13901                            )
13902                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
13903                    }
13904                    setBlocksPerEpoch
13905                },
13906                {
13907                    fn epochStartBlock(
13908                        data: &[u8],
13909                        validate: bool,
13910                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13911                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13912                                data,
13913                                validate,
13914                            )
13915                            .map(LightClientV2MockCalls::epochStartBlock)
13916                    }
13917                    epochStartBlock
13918                },
13919                {
13920                    fn genesisStakeTableState(
13921                        data: &[u8],
13922                        validate: bool,
13923                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13924                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13925                                data,
13926                                validate,
13927                            )
13928                            .map(LightClientV2MockCalls::genesisStakeTableState)
13929                    }
13930                    genesisStakeTableState
13931                },
13932                {
13933                    fn setStateHistoryRetentionPeriod(
13934                        data: &[u8],
13935                        validate: bool,
13936                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13937                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13938                                data,
13939                                validate,
13940                            )
13941                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
13942                    }
13943                    setStateHistoryRetentionPeriod
13944                },
13945                {
13946                    fn upgradeToAndCall(
13947                        data: &[u8],
13948                        validate: bool,
13949                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13950                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13951                                data,
13952                                validate,
13953                            )
13954                            .map(LightClientV2MockCalls::upgradeToAndCall)
13955                    }
13956                    upgradeToAndCall
13957                },
13958                {
13959                    fn proxiableUUID(
13960                        data: &[u8],
13961                        validate: bool,
13962                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13963                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13964                                data,
13965                                validate,
13966                            )
13967                            .map(LightClientV2MockCalls::proxiableUUID)
13968                    }
13969                    proxiableUUID
13970                },
13971                {
13972                    fn setVotingStakeTableState(
13973                        data: &[u8],
13974                        validate: bool,
13975                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13976                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13977                                data,
13978                                validate,
13979                            )
13980                            .map(LightClientV2MockCalls::setVotingStakeTableState)
13981                    }
13982                    setVotingStakeTableState
13983                },
13984                {
13985                    fn disablePermissionedProverMode(
13986                        data: &[u8],
13987                        validate: bool,
13988                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13989                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13990                                data,
13991                                validate,
13992                            )
13993                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
13994                    }
13995                    disablePermissionedProverMode
13996                },
13997                {
13998                    fn renounceOwnership(
13999                        data: &[u8],
14000                        validate: bool,
14001                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14002                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14003                                data,
14004                                validate,
14005                            )
14006                            .map(LightClientV2MockCalls::renounceOwnership)
14007                    }
14008                    renounceOwnership
14009                },
14010                {
14011                    fn newFinalizedState_1(
14012                        data: &[u8],
14013                        validate: bool,
14014                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14015                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14016                                data,
14017                                validate,
14018                            )
14019                            .map(LightClientV2MockCalls::newFinalizedState_1)
14020                    }
14021                    newFinalizedState_1
14022                },
14023                {
14024                    fn currentEpoch(
14025                        data: &[u8],
14026                        validate: bool,
14027                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14028                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14029                                data,
14030                                validate,
14031                            )
14032                            .map(LightClientV2MockCalls::currentEpoch)
14033                    }
14034                    currentEpoch
14035                },
14036                {
14037                    fn isPermissionedProverEnabled(
14038                        data: &[u8],
14039                        validate: bool,
14040                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14041                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
14042                                data,
14043                                validate,
14044                            )
14045                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
14046                    }
14047                    isPermissionedProverEnabled
14048                },
14049                {
14050                    fn getHotShotCommitment(
14051                        data: &[u8],
14052                        validate: bool,
14053                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14054                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
14055                                data,
14056                                validate,
14057                            )
14058                            .map(LightClientV2MockCalls::getHotShotCommitment)
14059                    }
14060                    getHotShotCommitment
14061                },
14062                {
14063                    fn owner(
14064                        data: &[u8],
14065                        validate: bool,
14066                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14067                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
14068                                data,
14069                                validate,
14070                            )
14071                            .map(LightClientV2MockCalls::owner)
14072                    }
14073                    owner
14074                },
14075                {
14076                    fn epochFromBlockNumber(
14077                        data: &[u8],
14078                        validate: bool,
14079                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14080                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14081                                data,
14082                                validate,
14083                            )
14084                            .map(LightClientV2MockCalls::epochFromBlockNumber)
14085                    }
14086                    epochFromBlockNumber
14087                },
14088                {
14089                    fn setstateHistoryRetentionPeriod(
14090                        data: &[u8],
14091                        validate: bool,
14092                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14093                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14094                                data,
14095                                validate,
14096                            )
14097                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
14098                    }
14099                    setstateHistoryRetentionPeriod
14100                },
14101                {
14102                    fn initialize(
14103                        data: &[u8],
14104                        validate: bool,
14105                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14106                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14107                                data,
14108                                validate,
14109                            )
14110                            .map(LightClientV2MockCalls::initialize)
14111                    }
14112                    initialize
14113                },
14114                {
14115                    fn finalizedState(
14116                        data: &[u8],
14117                        validate: bool,
14118                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14119                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14120                                data,
14121                                validate,
14122                            )
14123                            .map(LightClientV2MockCalls::finalizedState)
14124                    }
14125                    finalizedState
14126                },
14127                {
14128                    fn UPGRADE_INTERFACE_VERSION(
14129                        data: &[u8],
14130                        validate: bool,
14131                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14132                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14133                                data,
14134                                validate,
14135                            )
14136                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
14137                    }
14138                    UPGRADE_INTERFACE_VERSION
14139                },
14140                {
14141                    fn initializeV2(
14142                        data: &[u8],
14143                        validate: bool,
14144                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14145                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14146                                data,
14147                                validate,
14148                            )
14149                            .map(LightClientV2MockCalls::initializeV2)
14150                    }
14151                    initializeV2
14152                },
14153                {
14154                    fn getFirstEpoch(
14155                        data: &[u8],
14156                        validate: bool,
14157                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14158                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14159                                data,
14160                                validate,
14161                            )
14162                            .map(LightClientV2MockCalls::getFirstEpoch)
14163                    }
14164                    getFirstEpoch
14165                },
14166                {
14167                    fn setFinalizedState(
14168                        data: &[u8],
14169                        validate: bool,
14170                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14171                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14172                                data,
14173                                validate,
14174                            )
14175                            .map(LightClientV2MockCalls::setFinalizedState)
14176                    }
14177                    setFinalizedState
14178                },
14179                {
14180                    fn stateHistoryRetentionPeriod(
14181                        data: &[u8],
14182                        validate: bool,
14183                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14184                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14185                                data,
14186                                validate,
14187                            )
14188                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
14189                    }
14190                    stateHistoryRetentionPeriod
14191                },
14192                {
14193                    fn setHotShotUp(
14194                        data: &[u8],
14195                        validate: bool,
14196                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14197                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
14198                                data,
14199                                validate,
14200                            )
14201                            .map(LightClientV2MockCalls::setHotShotUp)
14202                    }
14203                    setHotShotUp
14204                },
14205                {
14206                    fn genesisState(
14207                        data: &[u8],
14208                        validate: bool,
14209                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14210                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14211                                data,
14212                                validate,
14213                            )
14214                            .map(LightClientV2MockCalls::genesisState)
14215                    }
14216                    genesisState
14217                },
14218                {
14219                    fn lagOverEscapeHatchThreshold(
14220                        data: &[u8],
14221                        validate: bool,
14222                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14223                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14224                                data,
14225                                validate,
14226                            )
14227                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
14228                    }
14229                    lagOverEscapeHatchThreshold
14230                },
14231                {
14232                    fn blocksPerEpoch(
14233                        data: &[u8],
14234                        validate: bool,
14235                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14236                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14237                                data,
14238                                validate,
14239                            )
14240                            .map(LightClientV2MockCalls::blocksPerEpoch)
14241                    }
14242                    blocksPerEpoch
14243                },
14244                {
14245                    fn transferOwnership(
14246                        data: &[u8],
14247                        validate: bool,
14248                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14249                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14250                                data,
14251                                validate,
14252                            )
14253                            .map(LightClientV2MockCalls::transferOwnership)
14254                    }
14255                    transferOwnership
14256                },
14257                {
14258                    fn setStateHistory(
14259                        data: &[u8],
14260                        validate: bool,
14261                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14262                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
14263                                data,
14264                                validate,
14265                            )
14266                            .map(LightClientV2MockCalls::setStateHistory)
14267                    }
14268                    setStateHistory
14269                },
14270                {
14271                    fn getStateHistoryCount(
14272                        data: &[u8],
14273                        validate: bool,
14274                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
14275                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14276                                data,
14277                                validate,
14278                            )
14279                            .map(LightClientV2MockCalls::getStateHistoryCount)
14280                    }
14281                    getStateHistoryCount
14282                },
14283            ];
14284            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14285                return Err(
14286                    alloy_sol_types::Error::unknown_selector(
14287                        <Self as alloy_sol_types::SolInterface>::NAME,
14288                        selector,
14289                    ),
14290                );
14291            };
14292            DECODE_SHIMS[idx](data, validate)
14293        }
14294        #[inline]
14295        fn abi_encoded_size(&self) -> usize {
14296            match self {
14297                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14298                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14299                        inner,
14300                    )
14301                }
14302                Self::_getVk(inner) => {
14303                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14304                }
14305                Self::blocksPerEpoch(inner) => {
14306                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14307                        inner,
14308                    )
14309                }
14310                Self::currentBlockNumber(inner) => {
14311                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14312                        inner,
14313                    )
14314                }
14315                Self::currentEpoch(inner) => {
14316                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14317                        inner,
14318                    )
14319                }
14320                Self::disablePermissionedProverMode(inner) => {
14321                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14322                        inner,
14323                    )
14324                }
14325                Self::epochFromBlockNumber(inner) => {
14326                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14327                        inner,
14328                    )
14329                }
14330                Self::epochStartBlock(inner) => {
14331                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14332                        inner,
14333                    )
14334                }
14335                Self::finalizedState(inner) => {
14336                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14337                        inner,
14338                    )
14339                }
14340                Self::genesisStakeTableState(inner) => {
14341                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14342                        inner,
14343                    )
14344                }
14345                Self::genesisState(inner) => {
14346                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14347                        inner,
14348                    )
14349                }
14350                Self::getFirstEpoch(inner) => {
14351                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14352                        inner,
14353                    )
14354                }
14355                Self::getHotShotCommitment(inner) => {
14356                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14357                        inner,
14358                    )
14359                }
14360                Self::getStateHistoryCount(inner) => {
14361                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14362                        inner,
14363                    )
14364                }
14365                Self::getVersion(inner) => {
14366                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14367                }
14368                Self::initialize(inner) => {
14369                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14370                }
14371                Self::initializeV2(inner) => {
14372                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14373                        inner,
14374                    )
14375                }
14376                Self::isEpochRoot(inner) => {
14377                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14378                        inner,
14379                    )
14380                }
14381                Self::isGtEpochRoot(inner) => {
14382                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14383                        inner,
14384                    )
14385                }
14386                Self::isPermissionedProverEnabled(inner) => {
14387                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14388                        inner,
14389                    )
14390                }
14391                Self::lagOverEscapeHatchThreshold(inner) => {
14392                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14393                        inner,
14394                    )
14395                }
14396                Self::newFinalizedState_0(inner) => {
14397                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14398                        inner,
14399                    )
14400                }
14401                Self::newFinalizedState_1(inner) => {
14402                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14403                        inner,
14404                    )
14405                }
14406                Self::owner(inner) => {
14407                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14408                }
14409                Self::permissionedProver(inner) => {
14410                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14411                        inner,
14412                    )
14413                }
14414                Self::proxiableUUID(inner) => {
14415                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14416                        inner,
14417                    )
14418                }
14419                Self::renounceOwnership(inner) => {
14420                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14421                        inner,
14422                    )
14423                }
14424                Self::setBlocksPerEpoch(inner) => {
14425                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14426                        inner,
14427                    )
14428                }
14429                Self::setFinalizedState(inner) => {
14430                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14431                        inner,
14432                    )
14433                }
14434                Self::setHotShotDownSince(inner) => {
14435                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
14436                        inner,
14437                    )
14438                }
14439                Self::setHotShotUp(inner) => {
14440                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
14441                        inner,
14442                    )
14443                }
14444                Self::setPermissionedProver(inner) => {
14445                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14446                        inner,
14447                    )
14448                }
14449                Self::setStateHistory(inner) => {
14450                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
14451                        inner,
14452                    )
14453                }
14454                Self::setStateHistoryRetentionPeriod(inner) => {
14455                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14456                        inner,
14457                    )
14458                }
14459                Self::setVotingStakeTableState(inner) => {
14460                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14461                        inner,
14462                    )
14463                }
14464                Self::setstateHistoryRetentionPeriod(inner) => {
14465                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14466                        inner,
14467                    )
14468                }
14469                Self::stateHistoryCommitments(inner) => {
14470                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14471                        inner,
14472                    )
14473                }
14474                Self::stateHistoryFirstIndex(inner) => {
14475                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14476                        inner,
14477                    )
14478                }
14479                Self::stateHistoryRetentionPeriod(inner) => {
14480                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14481                        inner,
14482                    )
14483                }
14484                Self::transferOwnership(inner) => {
14485                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14486                        inner,
14487                    )
14488                }
14489                Self::updateEpochStartBlock(inner) => {
14490                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14491                        inner,
14492                    )
14493                }
14494                Self::upgradeToAndCall(inner) => {
14495                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14496                        inner,
14497                    )
14498                }
14499                Self::votingStakeTableState(inner) => {
14500                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14501                        inner,
14502                    )
14503                }
14504            }
14505        }
14506        #[inline]
14507        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14508            match self {
14509                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14510                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14511                        inner,
14512                        out,
14513                    )
14514                }
14515                Self::_getVk(inner) => {
14516                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14517                }
14518                Self::blocksPerEpoch(inner) => {
14519                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14520                        inner,
14521                        out,
14522                    )
14523                }
14524                Self::currentBlockNumber(inner) => {
14525                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14526                        inner,
14527                        out,
14528                    )
14529                }
14530                Self::currentEpoch(inner) => {
14531                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14532                        inner,
14533                        out,
14534                    )
14535                }
14536                Self::disablePermissionedProverMode(inner) => {
14537                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14538                        inner,
14539                        out,
14540                    )
14541                }
14542                Self::epochFromBlockNumber(inner) => {
14543                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14544                        inner,
14545                        out,
14546                    )
14547                }
14548                Self::epochStartBlock(inner) => {
14549                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14550                        inner,
14551                        out,
14552                    )
14553                }
14554                Self::finalizedState(inner) => {
14555                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14556                        inner,
14557                        out,
14558                    )
14559                }
14560                Self::genesisStakeTableState(inner) => {
14561                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14562                        inner,
14563                        out,
14564                    )
14565                }
14566                Self::genesisState(inner) => {
14567                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14568                        inner,
14569                        out,
14570                    )
14571                }
14572                Self::getFirstEpoch(inner) => {
14573                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14574                        inner,
14575                        out,
14576                    )
14577                }
14578                Self::getHotShotCommitment(inner) => {
14579                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14580                        inner,
14581                        out,
14582                    )
14583                }
14584                Self::getStateHistoryCount(inner) => {
14585                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14586                        inner,
14587                        out,
14588                    )
14589                }
14590                Self::getVersion(inner) => {
14591                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14592                        inner,
14593                        out,
14594                    )
14595                }
14596                Self::initialize(inner) => {
14597                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14598                        inner,
14599                        out,
14600                    )
14601                }
14602                Self::initializeV2(inner) => {
14603                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14604                        inner,
14605                        out,
14606                    )
14607                }
14608                Self::isEpochRoot(inner) => {
14609                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14610                        inner,
14611                        out,
14612                    )
14613                }
14614                Self::isGtEpochRoot(inner) => {
14615                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14616                        inner,
14617                        out,
14618                    )
14619                }
14620                Self::isPermissionedProverEnabled(inner) => {
14621                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14622                        inner,
14623                        out,
14624                    )
14625                }
14626                Self::lagOverEscapeHatchThreshold(inner) => {
14627                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14628                        inner,
14629                        out,
14630                    )
14631                }
14632                Self::newFinalizedState_0(inner) => {
14633                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14634                        inner,
14635                        out,
14636                    )
14637                }
14638                Self::newFinalizedState_1(inner) => {
14639                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14640                        inner,
14641                        out,
14642                    )
14643                }
14644                Self::owner(inner) => {
14645                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14646                }
14647                Self::permissionedProver(inner) => {
14648                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14649                        inner,
14650                        out,
14651                    )
14652                }
14653                Self::proxiableUUID(inner) => {
14654                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14655                        inner,
14656                        out,
14657                    )
14658                }
14659                Self::renounceOwnership(inner) => {
14660                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14661                        inner,
14662                        out,
14663                    )
14664                }
14665                Self::setBlocksPerEpoch(inner) => {
14666                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14667                        inner,
14668                        out,
14669                    )
14670                }
14671                Self::setFinalizedState(inner) => {
14672                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14673                        inner,
14674                        out,
14675                    )
14676                }
14677                Self::setHotShotDownSince(inner) => {
14678                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
14679                        inner,
14680                        out,
14681                    )
14682                }
14683                Self::setHotShotUp(inner) => {
14684                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
14685                        inner,
14686                        out,
14687                    )
14688                }
14689                Self::setPermissionedProver(inner) => {
14690                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14691                        inner,
14692                        out,
14693                    )
14694                }
14695                Self::setStateHistory(inner) => {
14696                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
14697                        inner,
14698                        out,
14699                    )
14700                }
14701                Self::setStateHistoryRetentionPeriod(inner) => {
14702                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14703                        inner,
14704                        out,
14705                    )
14706                }
14707                Self::setVotingStakeTableState(inner) => {
14708                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14709                        inner,
14710                        out,
14711                    )
14712                }
14713                Self::setstateHistoryRetentionPeriod(inner) => {
14714                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14715                        inner,
14716                        out,
14717                    )
14718                }
14719                Self::stateHistoryCommitments(inner) => {
14720                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14721                        inner,
14722                        out,
14723                    )
14724                }
14725                Self::stateHistoryFirstIndex(inner) => {
14726                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14727                        inner,
14728                        out,
14729                    )
14730                }
14731                Self::stateHistoryRetentionPeriod(inner) => {
14732                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14733                        inner,
14734                        out,
14735                    )
14736                }
14737                Self::transferOwnership(inner) => {
14738                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14739                        inner,
14740                        out,
14741                    )
14742                }
14743                Self::updateEpochStartBlock(inner) => {
14744                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14745                        inner,
14746                        out,
14747                    )
14748                }
14749                Self::upgradeToAndCall(inner) => {
14750                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14751                        inner,
14752                        out,
14753                    )
14754                }
14755                Self::votingStakeTableState(inner) => {
14756                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14757                        inner,
14758                        out,
14759                    )
14760                }
14761            }
14762        }
14763    }
14764    ///Container for all the [`LightClientV2Mock`](self) custom errors.
14765    #[derive(Debug, PartialEq, Eq, Hash)]
14766    pub enum LightClientV2MockErrors {
14767        #[allow(missing_docs)]
14768        AddressEmptyCode(AddressEmptyCode),
14769        #[allow(missing_docs)]
14770        DeprecatedApi(DeprecatedApi),
14771        #[allow(missing_docs)]
14772        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14773        #[allow(missing_docs)]
14774        ERC1967NonPayable(ERC1967NonPayable),
14775        #[allow(missing_docs)]
14776        FailedInnerCall(FailedInnerCall),
14777        #[allow(missing_docs)]
14778        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14779        #[allow(missing_docs)]
14780        InvalidAddress(InvalidAddress),
14781        #[allow(missing_docs)]
14782        InvalidArgs(InvalidArgs),
14783        #[allow(missing_docs)]
14784        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14785        #[allow(missing_docs)]
14786        InvalidInitialization(InvalidInitialization),
14787        #[allow(missing_docs)]
14788        InvalidMaxStateHistory(InvalidMaxStateHistory),
14789        #[allow(missing_docs)]
14790        InvalidProof(InvalidProof),
14791        #[allow(missing_docs)]
14792        MissingEpochRootUpdate(MissingEpochRootUpdate),
14793        #[allow(missing_docs)]
14794        NoChangeRequired(NoChangeRequired),
14795        #[allow(missing_docs)]
14796        NotInitializing(NotInitializing),
14797        #[allow(missing_docs)]
14798        OutdatedState(OutdatedState),
14799        #[allow(missing_docs)]
14800        OwnableInvalidOwner(OwnableInvalidOwner),
14801        #[allow(missing_docs)]
14802        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14803        #[allow(missing_docs)]
14804        ProverNotPermissioned(ProverNotPermissioned),
14805        #[allow(missing_docs)]
14806        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14807        #[allow(missing_docs)]
14808        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14809        #[allow(missing_docs)]
14810        WrongStakeTableUsed(WrongStakeTableUsed),
14811    }
14812    #[automatically_derived]
14813    impl LightClientV2MockErrors {
14814        /// All the selectors of this enum.
14815        ///
14816        /// Note that the selectors might not be in the same order as the variants.
14817        /// No guarantees are made about the order of the selectors.
14818        ///
14819        /// Prefer using `SolInterface` methods instead.
14820        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14821            [5u8, 28u8, 70u8, 239u8],
14822            [8u8, 10u8, 232u8, 217u8],
14823            [9u8, 189u8, 227u8, 57u8],
14824            [17u8, 140u8, 218u8, 167u8],
14825            [20u8, 37u8, 234u8, 66u8],
14826            [30u8, 79u8, 189u8, 247u8],
14827            [76u8, 156u8, 140u8, 227u8],
14828            [78u8, 64u8, 92u8, 141u8],
14829            [81u8, 97u8, 128u8, 137u8],
14830            [97u8, 90u8, 146u8, 100u8],
14831            [153u8, 150u8, 179u8, 21u8],
14832            [161u8, 186u8, 7u8, 238u8],
14833            [163u8, 166u8, 71u8, 128u8],
14834            [168u8, 99u8, 174u8, 201u8],
14835            [170u8, 29u8, 73u8, 164u8],
14836            [176u8, 180u8, 56u8, 119u8],
14837            [179u8, 152u8, 151u8, 159u8],
14838            [215u8, 230u8, 188u8, 248u8],
14839            [224u8, 124u8, 141u8, 186u8],
14840            [230u8, 196u8, 36u8, 123u8],
14841            [244u8, 160u8, 238u8, 224u8],
14842            [249u8, 46u8, 232u8, 169u8],
14843        ];
14844    }
14845    #[automatically_derived]
14846    impl alloy_sol_types::SolInterface for LightClientV2MockErrors {
14847        const NAME: &'static str = "LightClientV2MockErrors";
14848        const MIN_DATA_LENGTH: usize = 0usize;
14849        const COUNT: usize = 22usize;
14850        #[inline]
14851        fn selector(&self) -> [u8; 4] {
14852            match self {
14853                Self::AddressEmptyCode(_) => {
14854                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
14855                }
14856                Self::DeprecatedApi(_) => {
14857                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
14858                }
14859                Self::ERC1967InvalidImplementation(_) => {
14860                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
14861                }
14862                Self::ERC1967NonPayable(_) => {
14863                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
14864                }
14865                Self::FailedInnerCall(_) => {
14866                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
14867                }
14868                Self::InsufficientSnapshotHistory(_) => {
14869                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
14870                }
14871                Self::InvalidAddress(_) => {
14872                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
14873                }
14874                Self::InvalidArgs(_) => {
14875                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
14876                }
14877                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
14878                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
14879                }
14880                Self::InvalidInitialization(_) => {
14881                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
14882                }
14883                Self::InvalidMaxStateHistory(_) => {
14884                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
14885                }
14886                Self::InvalidProof(_) => {
14887                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
14888                }
14889                Self::MissingEpochRootUpdate(_) => {
14890                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
14891                }
14892                Self::NoChangeRequired(_) => {
14893                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
14894                }
14895                Self::NotInitializing(_) => {
14896                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
14897                }
14898                Self::OutdatedState(_) => {
14899                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
14900                }
14901                Self::OwnableInvalidOwner(_) => {
14902                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
14903                }
14904                Self::OwnableUnauthorizedAccount(_) => {
14905                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14906                }
14907                Self::ProverNotPermissioned(_) => {
14908                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
14909                }
14910                Self::UUPSUnauthorizedCallContext(_) => {
14911                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
14912                }
14913                Self::UUPSUnsupportedProxiableUUID(_) => {
14914                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
14915                }
14916                Self::WrongStakeTableUsed(_) => {
14917                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
14918                }
14919            }
14920        }
14921        #[inline]
14922        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14923            Self::SELECTORS.get(i).copied()
14924        }
14925        #[inline]
14926        fn valid_selector(selector: [u8; 4]) -> bool {
14927            Self::SELECTORS.binary_search(&selector).is_ok()
14928        }
14929        #[inline]
14930        #[allow(non_snake_case)]
14931        fn abi_decode_raw(
14932            selector: [u8; 4],
14933            data: &[u8],
14934            validate: bool,
14935        ) -> alloy_sol_types::Result<Self> {
14936            static DECODE_SHIMS: &[fn(
14937                &[u8],
14938                bool,
14939            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
14940                {
14941                    fn OutdatedState(
14942                        data: &[u8],
14943                        validate: bool,
14944                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
14945                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
14946                                data,
14947                                validate,
14948                            )
14949                            .map(LightClientV2MockErrors::OutdatedState)
14950                    }
14951                    OutdatedState
14952                },
14953                {
14954                    fn MissingEpochRootUpdate(
14955                        data: &[u8],
14956                        validate: bool,
14957                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
14958                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
14959                                data,
14960                                validate,
14961                            )
14962                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
14963                    }
14964                    MissingEpochRootUpdate
14965                },
14966                {
14967                    fn InvalidProof(
14968                        data: &[u8],
14969                        validate: bool,
14970                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
14971                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
14972                                data,
14973                                validate,
14974                            )
14975                            .map(LightClientV2MockErrors::InvalidProof)
14976                    }
14977                    InvalidProof
14978                },
14979                {
14980                    fn OwnableUnauthorizedAccount(
14981                        data: &[u8],
14982                        validate: bool,
14983                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
14984                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14985                                data,
14986                                validate,
14987                            )
14988                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
14989                    }
14990                    OwnableUnauthorizedAccount
14991                },
14992                {
14993                    fn FailedInnerCall(
14994                        data: &[u8],
14995                        validate: bool,
14996                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
14997                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
14998                                data,
14999                                validate,
15000                            )
15001                            .map(LightClientV2MockErrors::FailedInnerCall)
15002                    }
15003                    FailedInnerCall
15004                },
15005                {
15006                    fn OwnableInvalidOwner(
15007                        data: &[u8],
15008                        validate: bool,
15009                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15010                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15011                                data,
15012                                validate,
15013                            )
15014                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
15015                    }
15016                    OwnableInvalidOwner
15017                },
15018                {
15019                    fn ERC1967InvalidImplementation(
15020                        data: &[u8],
15021                        validate: bool,
15022                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15023                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15024                                data,
15025                                validate,
15026                            )
15027                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
15028                    }
15029                    ERC1967InvalidImplementation
15030                },
15031                {
15032                    fn DeprecatedApi(
15033                        data: &[u8],
15034                        validate: bool,
15035                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15036                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15037                                data,
15038                                validate,
15039                            )
15040                            .map(LightClientV2MockErrors::DeprecatedApi)
15041                    }
15042                    DeprecatedApi
15043                },
15044                {
15045                    fn WrongStakeTableUsed(
15046                        data: &[u8],
15047                        validate: bool,
15048                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15049                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15050                                data,
15051                                validate,
15052                            )
15053                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
15054                    }
15055                    WrongStakeTableUsed
15056                },
15057                {
15058                    fn InvalidHotShotBlockForCommitmentCheck(
15059                        data: &[u8],
15060                        validate: bool,
15061                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15062                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15063                                data,
15064                                validate,
15065                            )
15066                            .map(
15067                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
15068                            )
15069                    }
15070                    InvalidHotShotBlockForCommitmentCheck
15071                },
15072                {
15073                    fn AddressEmptyCode(
15074                        data: &[u8],
15075                        validate: bool,
15076                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15077                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15078                                data,
15079                                validate,
15080                            )
15081                            .map(LightClientV2MockErrors::AddressEmptyCode)
15082                    }
15083                    AddressEmptyCode
15084                },
15085                {
15086                    fn InvalidArgs(
15087                        data: &[u8],
15088                        validate: bool,
15089                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15090                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
15091                                data,
15092                                validate,
15093                            )
15094                            .map(LightClientV2MockErrors::InvalidArgs)
15095                    }
15096                    InvalidArgs
15097                },
15098                {
15099                    fn ProverNotPermissioned(
15100                        data: &[u8],
15101                        validate: bool,
15102                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15103                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15104                                data,
15105                                validate,
15106                            )
15107                            .map(LightClientV2MockErrors::ProverNotPermissioned)
15108                    }
15109                    ProverNotPermissioned
15110                },
15111                {
15112                    fn NoChangeRequired(
15113                        data: &[u8],
15114                        validate: bool,
15115                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15116                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15117                                data,
15118                                validate,
15119                            )
15120                            .map(LightClientV2MockErrors::NoChangeRequired)
15121                    }
15122                    NoChangeRequired
15123                },
15124                {
15125                    fn UUPSUnsupportedProxiableUUID(
15126                        data: &[u8],
15127                        validate: bool,
15128                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15129                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15130                                data,
15131                                validate,
15132                            )
15133                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
15134                    }
15135                    UUPSUnsupportedProxiableUUID
15136                },
15137                {
15138                    fn InsufficientSnapshotHistory(
15139                        data: &[u8],
15140                        validate: bool,
15141                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15142                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15143                                data,
15144                                validate,
15145                            )
15146                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
15147                    }
15148                    InsufficientSnapshotHistory
15149                },
15150                {
15151                    fn ERC1967NonPayable(
15152                        data: &[u8],
15153                        validate: bool,
15154                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15155                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
15156                                data,
15157                                validate,
15158                            )
15159                            .map(LightClientV2MockErrors::ERC1967NonPayable)
15160                    }
15161                    ERC1967NonPayable
15162                },
15163                {
15164                    fn NotInitializing(
15165                        data: &[u8],
15166                        validate: bool,
15167                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15168                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
15169                                data,
15170                                validate,
15171                            )
15172                            .map(LightClientV2MockErrors::NotInitializing)
15173                    }
15174                    NotInitializing
15175                },
15176                {
15177                    fn UUPSUnauthorizedCallContext(
15178                        data: &[u8],
15179                        validate: bool,
15180                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15181                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
15182                                data,
15183                                validate,
15184                            )
15185                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
15186                    }
15187                    UUPSUnauthorizedCallContext
15188                },
15189                {
15190                    fn InvalidAddress(
15191                        data: &[u8],
15192                        validate: bool,
15193                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15194                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
15195                                data,
15196                                validate,
15197                            )
15198                            .map(LightClientV2MockErrors::InvalidAddress)
15199                    }
15200                    InvalidAddress
15201                },
15202                {
15203                    fn InvalidMaxStateHistory(
15204                        data: &[u8],
15205                        validate: bool,
15206                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15207                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
15208                                data,
15209                                validate,
15210                            )
15211                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
15212                    }
15213                    InvalidMaxStateHistory
15214                },
15215                {
15216                    fn InvalidInitialization(
15217                        data: &[u8],
15218                        validate: bool,
15219                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
15220                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
15221                                data,
15222                                validate,
15223                            )
15224                            .map(LightClientV2MockErrors::InvalidInitialization)
15225                    }
15226                    InvalidInitialization
15227                },
15228            ];
15229            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15230                return Err(
15231                    alloy_sol_types::Error::unknown_selector(
15232                        <Self as alloy_sol_types::SolInterface>::NAME,
15233                        selector,
15234                    ),
15235                );
15236            };
15237            DECODE_SHIMS[idx](data, validate)
15238        }
15239        #[inline]
15240        fn abi_encoded_size(&self) -> usize {
15241            match self {
15242                Self::AddressEmptyCode(inner) => {
15243                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15244                        inner,
15245                    )
15246                }
15247                Self::DeprecatedApi(inner) => {
15248                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15249                }
15250                Self::ERC1967InvalidImplementation(inner) => {
15251                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15252                        inner,
15253                    )
15254                }
15255                Self::ERC1967NonPayable(inner) => {
15256                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15257                        inner,
15258                    )
15259                }
15260                Self::FailedInnerCall(inner) => {
15261                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15262                        inner,
15263                    )
15264                }
15265                Self::InsufficientSnapshotHistory(inner) => {
15266                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15267                        inner,
15268                    )
15269                }
15270                Self::InvalidAddress(inner) => {
15271                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15272                        inner,
15273                    )
15274                }
15275                Self::InvalidArgs(inner) => {
15276                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15277                }
15278                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15279                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15280                        inner,
15281                    )
15282                }
15283                Self::InvalidInitialization(inner) => {
15284                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15285                        inner,
15286                    )
15287                }
15288                Self::InvalidMaxStateHistory(inner) => {
15289                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15290                        inner,
15291                    )
15292                }
15293                Self::InvalidProof(inner) => {
15294                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15295                }
15296                Self::MissingEpochRootUpdate(inner) => {
15297                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15298                        inner,
15299                    )
15300                }
15301                Self::NoChangeRequired(inner) => {
15302                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15303                        inner,
15304                    )
15305                }
15306                Self::NotInitializing(inner) => {
15307                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15308                        inner,
15309                    )
15310                }
15311                Self::OutdatedState(inner) => {
15312                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15313                }
15314                Self::OwnableInvalidOwner(inner) => {
15315                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15316                        inner,
15317                    )
15318                }
15319                Self::OwnableUnauthorizedAccount(inner) => {
15320                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15321                        inner,
15322                    )
15323                }
15324                Self::ProverNotPermissioned(inner) => {
15325                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15326                        inner,
15327                    )
15328                }
15329                Self::UUPSUnauthorizedCallContext(inner) => {
15330                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15331                        inner,
15332                    )
15333                }
15334                Self::UUPSUnsupportedProxiableUUID(inner) => {
15335                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15336                        inner,
15337                    )
15338                }
15339                Self::WrongStakeTableUsed(inner) => {
15340                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15341                        inner,
15342                    )
15343                }
15344            }
15345        }
15346        #[inline]
15347        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15348            match self {
15349                Self::AddressEmptyCode(inner) => {
15350                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15351                        inner,
15352                        out,
15353                    )
15354                }
15355                Self::DeprecatedApi(inner) => {
15356                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15357                        inner,
15358                        out,
15359                    )
15360                }
15361                Self::ERC1967InvalidImplementation(inner) => {
15362                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15363                        inner,
15364                        out,
15365                    )
15366                }
15367                Self::ERC1967NonPayable(inner) => {
15368                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15369                        inner,
15370                        out,
15371                    )
15372                }
15373                Self::FailedInnerCall(inner) => {
15374                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15375                        inner,
15376                        out,
15377                    )
15378                }
15379                Self::InsufficientSnapshotHistory(inner) => {
15380                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15381                        inner,
15382                        out,
15383                    )
15384                }
15385                Self::InvalidAddress(inner) => {
15386                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15387                        inner,
15388                        out,
15389                    )
15390                }
15391                Self::InvalidArgs(inner) => {
15392                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15393                        inner,
15394                        out,
15395                    )
15396                }
15397                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15398                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15399                        inner,
15400                        out,
15401                    )
15402                }
15403                Self::InvalidInitialization(inner) => {
15404                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15405                        inner,
15406                        out,
15407                    )
15408                }
15409                Self::InvalidMaxStateHistory(inner) => {
15410                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15411                        inner,
15412                        out,
15413                    )
15414                }
15415                Self::InvalidProof(inner) => {
15416                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15417                        inner,
15418                        out,
15419                    )
15420                }
15421                Self::MissingEpochRootUpdate(inner) => {
15422                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15423                        inner,
15424                        out,
15425                    )
15426                }
15427                Self::NoChangeRequired(inner) => {
15428                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15429                        inner,
15430                        out,
15431                    )
15432                }
15433                Self::NotInitializing(inner) => {
15434                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15435                        inner,
15436                        out,
15437                    )
15438                }
15439                Self::OutdatedState(inner) => {
15440                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15441                        inner,
15442                        out,
15443                    )
15444                }
15445                Self::OwnableInvalidOwner(inner) => {
15446                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15447                        inner,
15448                        out,
15449                    )
15450                }
15451                Self::OwnableUnauthorizedAccount(inner) => {
15452                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15453                        inner,
15454                        out,
15455                    )
15456                }
15457                Self::ProverNotPermissioned(inner) => {
15458                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
15459                        inner,
15460                        out,
15461                    )
15462                }
15463                Self::UUPSUnauthorizedCallContext(inner) => {
15464                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15465                        inner,
15466                        out,
15467                    )
15468                }
15469                Self::UUPSUnsupportedProxiableUUID(inner) => {
15470                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15471                        inner,
15472                        out,
15473                    )
15474                }
15475                Self::WrongStakeTableUsed(inner) => {
15476                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
15477                        inner,
15478                        out,
15479                    )
15480                }
15481            }
15482        }
15483    }
15484    ///Container for all the [`LightClientV2Mock`](self) events.
15485    #[derive(Debug, PartialEq, Eq, Hash)]
15486    pub enum LightClientV2MockEvents {
15487        #[allow(missing_docs)]
15488        Initialized(Initialized),
15489        #[allow(missing_docs)]
15490        NewEpoch(NewEpoch),
15491        #[allow(missing_docs)]
15492        NewState(NewState),
15493        #[allow(missing_docs)]
15494        OwnershipTransferred(OwnershipTransferred),
15495        #[allow(missing_docs)]
15496        PermissionedProverNotRequired(PermissionedProverNotRequired),
15497        #[allow(missing_docs)]
15498        PermissionedProverRequired(PermissionedProverRequired),
15499        #[allow(missing_docs)]
15500        Upgrade(Upgrade),
15501        #[allow(missing_docs)]
15502        Upgraded(Upgraded),
15503    }
15504    #[automatically_derived]
15505    impl LightClientV2MockEvents {
15506        /// All the selectors of this enum.
15507        ///
15508        /// Note that the selectors might not be in the same order as the variants.
15509        /// No guarantees are made about the order of the selectors.
15510        ///
15511        /// Prefer using `SolInterface` methods instead.
15512        pub const SELECTORS: &'static [[u8; 32usize]] = &[
15513            [
15514                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
15515                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
15516                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
15517            ],
15518            [
15519                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
15520                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
15521                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
15522            ],
15523            [
15524                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
15525                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
15526                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
15527            ],
15528            [
15529                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
15530                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
15531                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
15532            ],
15533            [
15534                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
15535                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
15536                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
15537            ],
15538            [
15539                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
15540                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
15541                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
15542            ],
15543            [
15544                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
15545                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
15546                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
15547            ],
15548            [
15549                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
15550                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
15551                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
15552            ],
15553        ];
15554    }
15555    #[automatically_derived]
15556    impl alloy_sol_types::SolEventInterface for LightClientV2MockEvents {
15557        const NAME: &'static str = "LightClientV2MockEvents";
15558        const COUNT: usize = 8usize;
15559        fn decode_raw_log(
15560            topics: &[alloy_sol_types::Word],
15561            data: &[u8],
15562            validate: bool,
15563        ) -> alloy_sol_types::Result<Self> {
15564            match topics.first().copied() {
15565                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15566                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
15567                            topics,
15568                            data,
15569                            validate,
15570                        )
15571                        .map(Self::Initialized)
15572                }
15573                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15574                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(
15575                            topics,
15576                            data,
15577                            validate,
15578                        )
15579                        .map(Self::NewEpoch)
15580                }
15581                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15582                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
15583                            topics,
15584                            data,
15585                            validate,
15586                        )
15587                        .map(Self::NewState)
15588                }
15589                Some(
15590                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15591                ) => {
15592                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
15593                            topics,
15594                            data,
15595                            validate,
15596                        )
15597                        .map(Self::OwnershipTransferred)
15598                }
15599                Some(
15600                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15601                ) => {
15602                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15603                            topics,
15604                            data,
15605                            validate,
15606                        )
15607                        .map(Self::PermissionedProverNotRequired)
15608                }
15609                Some(
15610                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15611                ) => {
15612                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15613                            topics,
15614                            data,
15615                            validate,
15616                        )
15617                        .map(Self::PermissionedProverRequired)
15618                }
15619                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15620                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
15621                            topics,
15622                            data,
15623                            validate,
15624                        )
15625                        .map(Self::Upgrade)
15626                }
15627                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15628                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
15629                            topics,
15630                            data,
15631                            validate,
15632                        )
15633                        .map(Self::Upgraded)
15634                }
15635                _ => {
15636                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
15637                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
15638                        log: alloy_sol_types::private::Box::new(
15639                            alloy_sol_types::private::LogData::new_unchecked(
15640                                topics.to_vec(),
15641                                data.to_vec().into(),
15642                            ),
15643                        ),
15644                    })
15645                }
15646            }
15647        }
15648    }
15649    #[automatically_derived]
15650    impl alloy_sol_types::private::IntoLogData for LightClientV2MockEvents {
15651        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
15652            match self {
15653                Self::Initialized(inner) => {
15654                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15655                }
15656                Self::NewEpoch(inner) => {
15657                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15658                }
15659                Self::NewState(inner) => {
15660                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15661                }
15662                Self::OwnershipTransferred(inner) => {
15663                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15664                }
15665                Self::PermissionedProverNotRequired(inner) => {
15666                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15667                }
15668                Self::PermissionedProverRequired(inner) => {
15669                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15670                }
15671                Self::Upgrade(inner) => {
15672                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15673                }
15674                Self::Upgraded(inner) => {
15675                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15676                }
15677            }
15678        }
15679        fn into_log_data(self) -> alloy_sol_types::private::LogData {
15680            match self {
15681                Self::Initialized(inner) => {
15682                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15683                }
15684                Self::NewEpoch(inner) => {
15685                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15686                }
15687                Self::NewState(inner) => {
15688                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15689                }
15690                Self::OwnershipTransferred(inner) => {
15691                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15692                }
15693                Self::PermissionedProverNotRequired(inner) => {
15694                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15695                }
15696                Self::PermissionedProverRequired(inner) => {
15697                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15698                }
15699                Self::Upgrade(inner) => {
15700                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15701                }
15702                Self::Upgraded(inner) => {
15703                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15704                }
15705            }
15706        }
15707    }
15708    use alloy::contract as alloy_contract;
15709    /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
15710
15711See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
15712    #[inline]
15713    pub const fn new<
15714        T: alloy_contract::private::Transport + ::core::clone::Clone,
15715        P: alloy_contract::private::Provider<T, N>,
15716        N: alloy_contract::private::Network,
15717    >(
15718        address: alloy_sol_types::private::Address,
15719        provider: P,
15720    ) -> LightClientV2MockInstance<T, P, N> {
15721        LightClientV2MockInstance::<T, P, N>::new(address, provider)
15722    }
15723    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15724
15725Returns a new instance of the contract, if the deployment was successful.
15726
15727For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15728    #[inline]
15729    pub fn deploy<
15730        T: alloy_contract::private::Transport + ::core::clone::Clone,
15731        P: alloy_contract::private::Provider<T, N>,
15732        N: alloy_contract::private::Network,
15733    >(
15734        provider: P,
15735    ) -> impl ::core::future::Future<
15736        Output = alloy_contract::Result<LightClientV2MockInstance<T, P, N>>,
15737    > {
15738        LightClientV2MockInstance::<T, P, N>::deploy(provider)
15739    }
15740    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15741and constructor arguments, if any.
15742
15743This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15744the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15745    #[inline]
15746    pub fn deploy_builder<
15747        T: alloy_contract::private::Transport + ::core::clone::Clone,
15748        P: alloy_contract::private::Provider<T, N>,
15749        N: alloy_contract::private::Network,
15750    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
15751        LightClientV2MockInstance::<T, P, N>::deploy_builder(provider)
15752    }
15753    /**A [`LightClientV2Mock`](self) instance.
15754
15755Contains type-safe methods for interacting with an on-chain instance of the
15756[`LightClientV2Mock`](self) contract located at a given `address`, using a given
15757provider `P`.
15758
15759If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
15760documentation on how to provide it), the `deploy` and `deploy_builder` methods can
15761be used to deploy a new instance of the contract.
15762
15763See the [module-level documentation](self) for all the available methods.*/
15764    #[derive(Clone)]
15765    pub struct LightClientV2MockInstance<T, P, N = alloy_contract::private::Ethereum> {
15766        address: alloy_sol_types::private::Address,
15767        provider: P,
15768        _network_transport: ::core::marker::PhantomData<(N, T)>,
15769    }
15770    #[automatically_derived]
15771    impl<T, P, N> ::core::fmt::Debug for LightClientV2MockInstance<T, P, N> {
15772        #[inline]
15773        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
15774            f.debug_tuple("LightClientV2MockInstance").field(&self.address).finish()
15775        }
15776    }
15777    /// Instantiation and getters/setters.
15778    #[automatically_derived]
15779    impl<
15780        T: alloy_contract::private::Transport + ::core::clone::Clone,
15781        P: alloy_contract::private::Provider<T, N>,
15782        N: alloy_contract::private::Network,
15783    > LightClientV2MockInstance<T, P, N> {
15784        /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
15785
15786See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
15787        #[inline]
15788        pub const fn new(
15789            address: alloy_sol_types::private::Address,
15790            provider: P,
15791        ) -> Self {
15792            Self {
15793                address,
15794                provider,
15795                _network_transport: ::core::marker::PhantomData,
15796            }
15797        }
15798        /**Deploys this contract using the given `provider` and constructor arguments, if any.
15799
15800Returns a new instance of the contract, if the deployment was successful.
15801
15802For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15803        #[inline]
15804        pub async fn deploy(
15805            provider: P,
15806        ) -> alloy_contract::Result<LightClientV2MockInstance<T, P, N>> {
15807            let call_builder = Self::deploy_builder(provider);
15808            let contract_address = call_builder.deploy().await?;
15809            Ok(Self::new(contract_address, call_builder.provider))
15810        }
15811        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15812and constructor arguments, if any.
15813
15814This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15815the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15816        #[inline]
15817        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
15818            alloy_contract::RawCallBuilder::new_raw_deploy(
15819                provider,
15820                ::core::clone::Clone::clone(&BYTECODE),
15821            )
15822        }
15823        /// Returns a reference to the address.
15824        #[inline]
15825        pub const fn address(&self) -> &alloy_sol_types::private::Address {
15826            &self.address
15827        }
15828        /// Sets the address.
15829        #[inline]
15830        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
15831            self.address = address;
15832        }
15833        /// Sets the address and returns `self`.
15834        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
15835            self.set_address(address);
15836            self
15837        }
15838        /// Returns a reference to the provider.
15839        #[inline]
15840        pub const fn provider(&self) -> &P {
15841            &self.provider
15842        }
15843    }
15844    impl<T, P: ::core::clone::Clone, N> LightClientV2MockInstance<T, &P, N> {
15845        /// Clones the provider and returns a new instance with the cloned provider.
15846        #[inline]
15847        pub fn with_cloned_provider(self) -> LightClientV2MockInstance<T, P, N> {
15848            LightClientV2MockInstance {
15849                address: self.address,
15850                provider: ::core::clone::Clone::clone(&self.provider),
15851                _network_transport: ::core::marker::PhantomData,
15852            }
15853        }
15854    }
15855    /// Function calls.
15856    #[automatically_derived]
15857    impl<
15858        T: alloy_contract::private::Transport + ::core::clone::Clone,
15859        P: alloy_contract::private::Provider<T, N>,
15860        N: alloy_contract::private::Network,
15861    > LightClientV2MockInstance<T, P, N> {
15862        /// Creates a new call builder using this contract instance's provider and address.
15863        ///
15864        /// Note that the call can be any function call, not just those defined in this
15865        /// contract. Prefer using the other methods for building type-safe contract calls.
15866        pub fn call_builder<C: alloy_sol_types::SolCall>(
15867            &self,
15868            call: &C,
15869        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
15870            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
15871        }
15872        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
15873        pub fn UPGRADE_INTERFACE_VERSION(
15874            &self,
15875        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
15876            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
15877        }
15878        ///Creates a new call builder for the [`_getVk`] function.
15879        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
15880            self.call_builder(&_getVkCall {})
15881        }
15882        ///Creates a new call builder for the [`blocksPerEpoch`] function.
15883        pub fn blocksPerEpoch(
15884            &self,
15885        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
15886            self.call_builder(&blocksPerEpochCall {})
15887        }
15888        ///Creates a new call builder for the [`currentBlockNumber`] function.
15889        pub fn currentBlockNumber(
15890            &self,
15891        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
15892            self.call_builder(&currentBlockNumberCall {})
15893        }
15894        ///Creates a new call builder for the [`currentEpoch`] function.
15895        pub fn currentEpoch(
15896            &self,
15897        ) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
15898            self.call_builder(&currentEpochCall {})
15899        }
15900        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
15901        pub fn disablePermissionedProverMode(
15902            &self,
15903        ) -> alloy_contract::SolCallBuilder<
15904            T,
15905            &P,
15906            disablePermissionedProverModeCall,
15907            N,
15908        > {
15909            self.call_builder(
15910                &disablePermissionedProverModeCall {
15911                },
15912            )
15913        }
15914        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
15915        pub fn epochFromBlockNumber(
15916            &self,
15917            _blockNum: u64,
15918            _blocksPerEpoch: u64,
15919        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
15920            self.call_builder(
15921                &epochFromBlockNumberCall {
15922                    _blockNum,
15923                    _blocksPerEpoch,
15924                },
15925            )
15926        }
15927        ///Creates a new call builder for the [`epochStartBlock`] function.
15928        pub fn epochStartBlock(
15929            &self,
15930        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
15931            self.call_builder(&epochStartBlockCall {})
15932        }
15933        ///Creates a new call builder for the [`finalizedState`] function.
15934        pub fn finalizedState(
15935            &self,
15936        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
15937            self.call_builder(&finalizedStateCall {})
15938        }
15939        ///Creates a new call builder for the [`genesisStakeTableState`] function.
15940        pub fn genesisStakeTableState(
15941            &self,
15942        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
15943            self.call_builder(&genesisStakeTableStateCall {})
15944        }
15945        ///Creates a new call builder for the [`genesisState`] function.
15946        pub fn genesisState(
15947            &self,
15948        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
15949            self.call_builder(&genesisStateCall {})
15950        }
15951        ///Creates a new call builder for the [`getFirstEpoch`] function.
15952        pub fn getFirstEpoch(
15953            &self,
15954        ) -> alloy_contract::SolCallBuilder<T, &P, getFirstEpochCall, N> {
15955            self.call_builder(&getFirstEpochCall {})
15956        }
15957        ///Creates a new call builder for the [`getHotShotCommitment`] function.
15958        pub fn getHotShotCommitment(
15959            &self,
15960            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
15961        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
15962            self.call_builder(
15963                &getHotShotCommitmentCall {
15964                    hotShotBlockHeight,
15965                },
15966            )
15967        }
15968        ///Creates a new call builder for the [`getStateHistoryCount`] function.
15969        pub fn getStateHistoryCount(
15970            &self,
15971        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
15972            self.call_builder(&getStateHistoryCountCall {})
15973        }
15974        ///Creates a new call builder for the [`getVersion`] function.
15975        pub fn getVersion(
15976            &self,
15977        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
15978            self.call_builder(&getVersionCall {})
15979        }
15980        ///Creates a new call builder for the [`initialize`] function.
15981        pub fn initialize(
15982            &self,
15983            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
15984            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
15985            _stateHistoryRetentionPeriod: u32,
15986            owner: alloy::sol_types::private::Address,
15987        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
15988            self.call_builder(
15989                &initializeCall {
15990                    _genesis,
15991                    _genesisStakeTableState,
15992                    _stateHistoryRetentionPeriod,
15993                    owner,
15994                },
15995            )
15996        }
15997        ///Creates a new call builder for the [`initializeV2`] function.
15998        pub fn initializeV2(
15999            &self,
16000            _blocksPerEpoch: u64,
16001            _epochStartBlock: u64,
16002        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
16003            self.call_builder(
16004                &initializeV2Call {
16005                    _blocksPerEpoch,
16006                    _epochStartBlock,
16007                },
16008            )
16009        }
16010        ///Creates a new call builder for the [`isEpochRoot`] function.
16011        pub fn isEpochRoot(
16012            &self,
16013            blockHeight: u64,
16014        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
16015            self.call_builder(&isEpochRootCall { blockHeight })
16016        }
16017        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16018        pub fn isGtEpochRoot(
16019            &self,
16020            blockHeight: u64,
16021        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
16022            self.call_builder(&isGtEpochRootCall { blockHeight })
16023        }
16024        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16025        pub fn isPermissionedProverEnabled(
16026            &self,
16027        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
16028            self.call_builder(&isPermissionedProverEnabledCall {})
16029        }
16030        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16031        pub fn lagOverEscapeHatchThreshold(
16032            &self,
16033            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16034            threshold: alloy::sol_types::private::primitives::aliases::U256,
16035        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
16036            self.call_builder(
16037                &lagOverEscapeHatchThresholdCall {
16038                    blockNumber,
16039                    threshold,
16040                },
16041            )
16042        }
16043        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16044        pub fn newFinalizedState_0(
16045            &self,
16046            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16047            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16048        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
16049            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16050        }
16051        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16052        pub fn newFinalizedState_1(
16053            &self,
16054            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16055            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16056            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16057        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
16058            self.call_builder(
16059                &newFinalizedState_1Call {
16060                    newState,
16061                    nextStakeTable,
16062                    proof,
16063                },
16064            )
16065        }
16066        ///Creates a new call builder for the [`owner`] function.
16067        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
16068            self.call_builder(&ownerCall {})
16069        }
16070        ///Creates a new call builder for the [`permissionedProver`] function.
16071        pub fn permissionedProver(
16072            &self,
16073        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
16074            self.call_builder(&permissionedProverCall {})
16075        }
16076        ///Creates a new call builder for the [`proxiableUUID`] function.
16077        pub fn proxiableUUID(
16078            &self,
16079        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
16080            self.call_builder(&proxiableUUIDCall {})
16081        }
16082        ///Creates a new call builder for the [`renounceOwnership`] function.
16083        pub fn renounceOwnership(
16084            &self,
16085        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
16086            self.call_builder(&renounceOwnershipCall {})
16087        }
16088        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
16089        pub fn setBlocksPerEpoch(
16090            &self,
16091            newBlocksPerEpoch: u64,
16092        ) -> alloy_contract::SolCallBuilder<T, &P, setBlocksPerEpochCall, N> {
16093            self.call_builder(
16094                &setBlocksPerEpochCall {
16095                    newBlocksPerEpoch,
16096                },
16097            )
16098        }
16099        ///Creates a new call builder for the [`setFinalizedState`] function.
16100        pub fn setFinalizedState(
16101            &self,
16102            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16103        ) -> alloy_contract::SolCallBuilder<T, &P, setFinalizedStateCall, N> {
16104            self.call_builder(&setFinalizedStateCall { state })
16105        }
16106        ///Creates a new call builder for the [`setHotShotDownSince`] function.
16107        pub fn setHotShotDownSince(
16108            &self,
16109            l1Height: alloy::sol_types::private::primitives::aliases::U256,
16110        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotDownSinceCall, N> {
16111            self.call_builder(
16112                &setHotShotDownSinceCall {
16113                    l1Height,
16114                },
16115            )
16116        }
16117        ///Creates a new call builder for the [`setHotShotUp`] function.
16118        pub fn setHotShotUp(
16119            &self,
16120        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotUpCall, N> {
16121            self.call_builder(&setHotShotUpCall {})
16122        }
16123        ///Creates a new call builder for the [`setPermissionedProver`] function.
16124        pub fn setPermissionedProver(
16125            &self,
16126            prover: alloy::sol_types::private::Address,
16127        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
16128            self.call_builder(
16129                &setPermissionedProverCall {
16130                    prover,
16131                },
16132            )
16133        }
16134        ///Creates a new call builder for the [`setStateHistory`] function.
16135        pub fn setStateHistory(
16136            &self,
16137            _stateHistoryCommitments: alloy::sol_types::private::Vec<
16138                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
16139            >,
16140        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryCall, N> {
16141            self.call_builder(
16142                &setStateHistoryCall {
16143                    _stateHistoryCommitments,
16144                },
16145            )
16146        }
16147        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16148        pub fn setStateHistoryRetentionPeriod(
16149            &self,
16150            historySeconds: u32,
16151        ) -> alloy_contract::SolCallBuilder<
16152            T,
16153            &P,
16154            setStateHistoryRetentionPeriodCall,
16155            N,
16156        > {
16157            self.call_builder(
16158                &setStateHistoryRetentionPeriodCall {
16159                    historySeconds,
16160                },
16161            )
16162        }
16163        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
16164        pub fn setVotingStakeTableState(
16165            &self,
16166            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16167        ) -> alloy_contract::SolCallBuilder<T, &P, setVotingStakeTableStateCall, N> {
16168            self.call_builder(
16169                &setVotingStakeTableStateCall {
16170                    stake,
16171                },
16172            )
16173        }
16174        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16175        pub fn setstateHistoryRetentionPeriod(
16176            &self,
16177            historySeconds: u32,
16178        ) -> alloy_contract::SolCallBuilder<
16179            T,
16180            &P,
16181            setstateHistoryRetentionPeriodCall,
16182            N,
16183        > {
16184            self.call_builder(
16185                &setstateHistoryRetentionPeriodCall {
16186                    historySeconds,
16187                },
16188            )
16189        }
16190        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16191        pub fn stateHistoryCommitments(
16192            &self,
16193            _0: alloy::sol_types::private::primitives::aliases::U256,
16194        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
16195            self.call_builder(&stateHistoryCommitmentsCall { _0 })
16196        }
16197        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16198        pub fn stateHistoryFirstIndex(
16199            &self,
16200        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
16201            self.call_builder(&stateHistoryFirstIndexCall {})
16202        }
16203        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16204        pub fn stateHistoryRetentionPeriod(
16205            &self,
16206        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
16207            self.call_builder(&stateHistoryRetentionPeriodCall {})
16208        }
16209        ///Creates a new call builder for the [`transferOwnership`] function.
16210        pub fn transferOwnership(
16211            &self,
16212            newOwner: alloy::sol_types::private::Address,
16213        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
16214            self.call_builder(&transferOwnershipCall { newOwner })
16215        }
16216        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16217        pub fn updateEpochStartBlock(
16218            &self,
16219            newEpochStartBlock: u64,
16220        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
16221            self.call_builder(
16222                &updateEpochStartBlockCall {
16223                    newEpochStartBlock,
16224                },
16225            )
16226        }
16227        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16228        pub fn upgradeToAndCall(
16229            &self,
16230            newImplementation: alloy::sol_types::private::Address,
16231            data: alloy::sol_types::private::Bytes,
16232        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
16233            self.call_builder(
16234                &upgradeToAndCallCall {
16235                    newImplementation,
16236                    data,
16237                },
16238            )
16239        }
16240        ///Creates a new call builder for the [`votingStakeTableState`] function.
16241        pub fn votingStakeTableState(
16242            &self,
16243        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
16244            self.call_builder(&votingStakeTableStateCall {})
16245        }
16246    }
16247    /// Event filters.
16248    #[automatically_derived]
16249    impl<
16250        T: alloy_contract::private::Transport + ::core::clone::Clone,
16251        P: alloy_contract::private::Provider<T, N>,
16252        N: alloy_contract::private::Network,
16253    > LightClientV2MockInstance<T, P, N> {
16254        /// Creates a new event filter using this contract instance's provider and address.
16255        ///
16256        /// Note that the type can be any event, not just those defined in this contract.
16257        /// Prefer using the other methods for building type-safe event filters.
16258        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16259            &self,
16260        ) -> alloy_contract::Event<T, &P, E, N> {
16261            alloy_contract::Event::new_sol(&self.provider, &self.address)
16262        }
16263        ///Creates a new event filter for the [`Initialized`] event.
16264        pub fn Initialized_filter(
16265            &self,
16266        ) -> alloy_contract::Event<T, &P, Initialized, N> {
16267            self.event_filter::<Initialized>()
16268        }
16269        ///Creates a new event filter for the [`NewEpoch`] event.
16270        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
16271            self.event_filter::<NewEpoch>()
16272        }
16273        ///Creates a new event filter for the [`NewState`] event.
16274        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
16275            self.event_filter::<NewState>()
16276        }
16277        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16278        pub fn OwnershipTransferred_filter(
16279            &self,
16280        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
16281            self.event_filter::<OwnershipTransferred>()
16282        }
16283        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
16284        pub fn PermissionedProverNotRequired_filter(
16285            &self,
16286        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
16287            self.event_filter::<PermissionedProverNotRequired>()
16288        }
16289        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
16290        pub fn PermissionedProverRequired_filter(
16291            &self,
16292        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
16293            self.event_filter::<PermissionedProverRequired>()
16294        }
16295        ///Creates a new event filter for the [`Upgrade`] event.
16296        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
16297            self.event_filter::<Upgrade>()
16298        }
16299        ///Creates a new event filter for the [`Upgraded`] event.
16300        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
16301            self.event_filter::<Upgraded>()
16302        }
16303    }
16304}