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 alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141    #[derive(Clone)]
142    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143    const _: () = {
144        use alloy::sol_types as alloy_sol_types;
145        #[automatically_derived]
146        impl alloy_sol_types::private::SolTypeValue<ScalarField>
147            for alloy::sol_types::private::primitives::aliases::U256
148        {
149            #[inline]
150            fn stv_to_tokens(
151                &self,
152            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153            {
154                alloy_sol_types::private::SolTypeValue::<
155                    alloy::sol_types::sol_data::Uint<256>,
156                >::stv_to_tokens(self)
157            }
158            #[inline]
159            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161                    .0
162            }
163            #[inline]
164            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165                <alloy::sol_types::sol_data::Uint<
166                    256,
167                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168            }
169            #[inline]
170            fn stv_abi_packed_encoded_size(&self) -> usize {
171                <alloy::sol_types::sol_data::Uint<
172                    256,
173                > as alloy_sol_types::SolType>::abi_encoded_size(self)
174            }
175        }
176        #[automatically_derived]
177        impl ScalarField {
178            /// The Solidity type name.
179            pub const NAME: &'static str = stringify!(@ name);
180            /// Convert from the underlying value type.
181            #[inline]
182            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183                Self(value)
184            }
185            /// Return the underlying value.
186            #[inline]
187            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188                self.0
189            }
190            /// Return the single encoding of this value, delegating to the
191            /// underlying type.
192            #[inline]
193            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195            }
196            /// Return the packed encoding of this value, delegating to the
197            /// underlying type.
198            #[inline]
199            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolType for ScalarField {
205            type RustType = alloy::sol_types::private::primitives::aliases::U256;
206            type Token<'a> =
207                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208            const SOL_NAME: &'static str = Self::NAME;
209            const ENCODED_SIZE: Option<usize> =
210                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212                256,
213            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214            #[inline]
215            fn valid_token(token: &Self::Token<'_>) -> bool {
216                Self::type_check(token).is_ok()
217            }
218            #[inline]
219            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221                    token,
222                )
223            }
224            #[inline]
225            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227                    token,
228                )
229            }
230        }
231        #[automatically_derived]
232        impl alloy_sol_types::EventTopic for ScalarField {
233            #[inline]
234            fn topic_preimage_length(rust: &Self::RustType) -> usize {
235                <alloy::sol_types::sol_data::Uint<
236                    256,
237                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238            }
239            #[inline]
240            fn encode_topic_preimage(
241                rust: &Self::RustType,
242                out: &mut alloy_sol_types::private::Vec<u8>,
243            ) {
244                <alloy::sol_types::sol_data::Uint<
245                    256,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247            }
248            #[inline]
249            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251                    rust,
252                )
253            }
254        }
255    };
256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
257    /**```solidity
258    struct G1Point { BaseField x; BaseField y; }
259    ```*/
260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261    #[derive(Clone)]
262    pub struct G1Point {
263        #[allow(missing_docs)]
264        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265        #[allow(missing_docs)]
266        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267    }
268    #[allow(
269        non_camel_case_types,
270        non_snake_case,
271        clippy::pub_underscore_fields,
272        clippy::style
273    )]
274    const _: () = {
275        use alloy::sol_types as alloy_sol_types;
276        #[doc(hidden)]
277        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            <BaseField as alloy::sol_types::SolType>::RustType,
281            <BaseField as alloy::sol_types::SolType>::RustType,
282        );
283        #[cfg(test)]
284        #[allow(dead_code, unreachable_patterns)]
285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286            match _t {
287                alloy_sol_types::private::AssertTypeEq::<
288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289                >(_) => {},
290            }
291        }
292        #[automatically_derived]
293        #[doc(hidden)]
294        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295            fn from(value: G1Point) -> Self {
296                (value.x, value.y)
297            }
298        }
299        #[automatically_derived]
300        #[doc(hidden)]
301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303                Self {
304                    x: tuple.0,
305                    y: tuple.1,
306                }
307            }
308        }
309        #[automatically_derived]
310        impl alloy_sol_types::SolValue for G1Point {
311            type SolType = Self;
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315            #[inline]
316            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317                (
318                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320                )
321            }
322            #[inline]
323            fn stv_abi_encoded_size(&self) -> usize {
324                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325                    return size;
326                }
327                let tuple =
328                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330            }
331            #[inline]
332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334            }
335            #[inline]
336            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337                let tuple =
338                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340                    &tuple, out,
341                )
342            }
343            #[inline]
344            fn stv_abi_packed_encoded_size(&self) -> usize {
345                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346                    return size;
347                }
348                let tuple =
349                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351                    &tuple,
352                )
353            }
354        }
355        #[automatically_derived]
356        impl alloy_sol_types::SolType for G1Point {
357            type RustType = Self;
358            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360            const ENCODED_SIZE: Option<usize> =
361                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362            const PACKED_ENCODED_SIZE: Option<usize> =
363                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364            #[inline]
365            fn valid_token(token: &Self::Token<'_>) -> bool {
366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367            }
368            #[inline]
369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolStruct for G1Point {
376            const NAME: &'static str = "G1Point";
377            #[inline]
378            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380            }
381            #[inline]
382            fn eip712_components(
383            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384            {
385                alloy_sol_types::private::Vec::new()
386            }
387            #[inline]
388            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390            }
391            #[inline]
392            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393                [
394                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396                ]
397                .concat()
398            }
399        }
400        #[automatically_derived]
401        impl alloy_sol_types::EventTopic for G1Point {
402            #[inline]
403            fn topic_preimage_length(rust: &Self::RustType) -> usize {
404                0usize
405                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407            }
408            #[inline]
409            fn encode_topic_preimage(
410                rust: &Self::RustType,
411                out: &mut alloy_sol_types::private::Vec<u8>,
412            ) {
413                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416            }
417            #[inline]
418            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419                let mut out = alloy_sol_types::private::Vec::new();
420                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422            }
423        }
424    };
425    use alloy::contract as alloy_contract;
426    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
427
428    See the [wrapper's documentation](`BN254Instance`) for more details.*/
429    #[inline]
430    pub const fn new<
431        T: alloy_contract::private::Transport + ::core::clone::Clone,
432        P: alloy_contract::private::Provider<T, N>,
433        N: alloy_contract::private::Network,
434    >(
435        address: alloy_sol_types::private::Address,
436        provider: P,
437    ) -> BN254Instance<T, P, N> {
438        BN254Instance::<T, P, N>::new(address, provider)
439    }
440    /**A [`BN254`](self) instance.
441
442    Contains type-safe methods for interacting with an on-chain instance of the
443    [`BN254`](self) contract located at a given `address`, using a given
444    provider `P`.
445
446    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
447    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
448    be used to deploy a new instance of the contract.
449
450    See the [module-level documentation](self) for all the available methods.*/
451    #[derive(Clone)]
452    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453        address: alloy_sol_types::private::Address,
454        provider: P,
455        _network_transport: ::core::marker::PhantomData<(N, T)>,
456    }
457    #[automatically_derived]
458    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459        #[inline]
460        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461            f.debug_tuple("BN254Instance").field(&self.address).finish()
462        }
463    }
464    /// Instantiation and getters/setters.
465    #[automatically_derived]
466    impl<
467            T: alloy_contract::private::Transport + ::core::clone::Clone,
468            P: alloy_contract::private::Provider<T, N>,
469            N: alloy_contract::private::Network,
470        > BN254Instance<T, P, N>
471    {
472        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
473
474        See the [wrapper's documentation](`BN254Instance`) for more details.*/
475        #[inline]
476        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477            Self {
478                address,
479                provider,
480                _network_transport: ::core::marker::PhantomData,
481            }
482        }
483        /// Returns a reference to the address.
484        #[inline]
485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
486            &self.address
487        }
488        /// Sets the address.
489        #[inline]
490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491            self.address = address;
492        }
493        /// Sets the address and returns `self`.
494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495            self.set_address(address);
496            self
497        }
498        /// Returns a reference to the provider.
499        #[inline]
500        pub const fn provider(&self) -> &P {
501            &self.provider
502        }
503    }
504    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505        /// Clones the provider and returns a new instance with the cloned provider.
506        #[inline]
507        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508            BN254Instance {
509                address: self.address,
510                provider: ::core::clone::Clone::clone(&self.provider),
511                _network_transport: ::core::marker::PhantomData,
512            }
513        }
514    }
515    /// Function calls.
516    #[automatically_derived]
517    impl<
518            T: alloy_contract::private::Transport + ::core::clone::Clone,
519            P: alloy_contract::private::Provider<T, N>,
520            N: alloy_contract::private::Network,
521        > BN254Instance<T, P, N>
522    {
523        /// Creates a new call builder using this contract instance's provider and address.
524        ///
525        /// Note that the call can be any function call, not just those defined in this
526        /// contract. Prefer using the other methods for building type-safe contract calls.
527        pub fn call_builder<C: alloy_sol_types::SolCall>(
528            &self,
529            call: &C,
530        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532        }
533    }
534    /// Event filters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /// Creates a new event filter using this contract instance's provider and address.
543        ///
544        /// Note that the type can be any event, not just those defined in this contract.
545        /// Prefer using the other methods for building type-safe event filters.
546        pub fn event_filter<E: alloy_sol_types::SolEvent>(
547            &self,
548        ) -> alloy_contract::Event<T, &P, E, N> {
549            alloy_contract::Event::new_sol(&self.provider, &self.address)
550        }
551    }
552}
553///Module containing a contract's types and functions.
554/**
555
556```solidity
557library IPlonkVerifier {
558    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; }
559    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; }
560}
561```*/
562#[allow(
563    non_camel_case_types,
564    non_snake_case,
565    clippy::pub_underscore_fields,
566    clippy::style,
567    clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570    use alloy::sol_types as alloy_sol_types;
571
572    use super::*;
573    #[derive()]
574    /**```solidity
575    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; }
576    ```*/
577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578    #[derive(Clone)]
579    pub struct PlonkProof {
580        #[allow(missing_docs)]
581        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582        #[allow(missing_docs)]
583        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584        #[allow(missing_docs)]
585        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586        #[allow(missing_docs)]
587        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588        #[allow(missing_docs)]
589        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590        #[allow(missing_docs)]
591        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592        #[allow(missing_docs)]
593        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594        #[allow(missing_docs)]
595        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596        #[allow(missing_docs)]
597        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598        #[allow(missing_docs)]
599        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600        #[allow(missing_docs)]
601        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602        #[allow(missing_docs)]
603        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604        #[allow(missing_docs)]
605        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606        #[allow(missing_docs)]
607        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608        #[allow(missing_docs)]
609        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610        #[allow(missing_docs)]
611        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612        #[allow(missing_docs)]
613        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614        #[allow(missing_docs)]
615        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616        #[allow(missing_docs)]
617        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618        #[allow(missing_docs)]
619        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620        #[allow(missing_docs)]
621        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622        #[allow(missing_docs)]
623        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624        #[allow(missing_docs)]
625        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626    }
627    #[allow(
628        non_camel_case_types,
629        non_snake_case,
630        clippy::pub_underscore_fields,
631        clippy::style
632    )]
633    const _: () = {
634        use alloy::sol_types as alloy_sol_types;
635        #[doc(hidden)]
636        type UnderlyingSolTuple<'a> = (
637            BN254::G1Point,
638            BN254::G1Point,
639            BN254::G1Point,
640            BN254::G1Point,
641            BN254::G1Point,
642            BN254::G1Point,
643            BN254::G1Point,
644            BN254::G1Point,
645            BN254::G1Point,
646            BN254::G1Point,
647            BN254::G1Point,
648            BN254::G1Point,
649            BN254::G1Point,
650            BN254::ScalarField,
651            BN254::ScalarField,
652            BN254::ScalarField,
653            BN254::ScalarField,
654            BN254::ScalarField,
655            BN254::ScalarField,
656            BN254::ScalarField,
657            BN254::ScalarField,
658            BN254::ScalarField,
659            BN254::ScalarField,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686        );
687        #[cfg(test)]
688        #[allow(dead_code, unreachable_patterns)]
689        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690            match _t {
691                alloy_sol_types::private::AssertTypeEq::<
692                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693                >(_) => {},
694            }
695        }
696        #[automatically_derived]
697        #[doc(hidden)]
698        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699            fn from(value: PlonkProof) -> Self {
700                (
701                    value.wire0,
702                    value.wire1,
703                    value.wire2,
704                    value.wire3,
705                    value.wire4,
706                    value.prodPerm,
707                    value.split0,
708                    value.split1,
709                    value.split2,
710                    value.split3,
711                    value.split4,
712                    value.zeta,
713                    value.zetaOmega,
714                    value.wireEval0,
715                    value.wireEval1,
716                    value.wireEval2,
717                    value.wireEval3,
718                    value.wireEval4,
719                    value.sigmaEval0,
720                    value.sigmaEval1,
721                    value.sigmaEval2,
722                    value.sigmaEval3,
723                    value.prodPermZetaOmegaEval,
724                )
725            }
726        }
727        #[automatically_derived]
728        #[doc(hidden)]
729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731                Self {
732                    wire0: tuple.0,
733                    wire1: tuple.1,
734                    wire2: tuple.2,
735                    wire3: tuple.3,
736                    wire4: tuple.4,
737                    prodPerm: tuple.5,
738                    split0: tuple.6,
739                    split1: tuple.7,
740                    split2: tuple.8,
741                    split3: tuple.9,
742                    split4: tuple.10,
743                    zeta: tuple.11,
744                    zetaOmega: tuple.12,
745                    wireEval0: tuple.13,
746                    wireEval1: tuple.14,
747                    wireEval2: tuple.15,
748                    wireEval3: tuple.16,
749                    wireEval4: tuple.17,
750                    sigmaEval0: tuple.18,
751                    sigmaEval1: tuple.19,
752                    sigmaEval2: tuple.20,
753                    sigmaEval3: tuple.21,
754                    prodPermZetaOmegaEval: tuple.22,
755                }
756            }
757        }
758        #[automatically_derived]
759        impl alloy_sol_types::SolValue for PlonkProof {
760            type SolType = Self;
761        }
762        #[automatically_derived]
763        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764            #[inline]
765            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766                (
767                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790                        &self.prodPermZetaOmegaEval,
791                    ),
792                )
793            }
794            #[inline]
795            fn stv_abi_encoded_size(&self) -> usize {
796                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797                    return size;
798                }
799                let tuple =
800                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802            }
803            #[inline]
804            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806            }
807            #[inline]
808            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809                let tuple =
810                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812                    &tuple, out,
813                )
814            }
815            #[inline]
816            fn stv_abi_packed_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818                    return size;
819                }
820                let tuple =
821                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823                    &tuple,
824                )
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolType for PlonkProof {
829            type RustType = Self;
830            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832            const ENCODED_SIZE: Option<usize> =
833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834            const PACKED_ENCODED_SIZE: Option<usize> =
835                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836            #[inline]
837            fn valid_token(token: &Self::Token<'_>) -> bool {
838                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839            }
840            #[inline]
841            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolStruct for PlonkProof {
848            const NAME: &'static str = "PlonkProof";
849            #[inline]
850            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851                alloy_sol_types::private::Cow::Borrowed(
852                    "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)",
853                )
854            }
855            #[inline]
856            fn eip712_components(
857            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858            {
859                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861                components
862                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864                components
865                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867                components
868                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870                components
871                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873                components
874                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876                components
877                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879                components
880                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882                components
883                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885                components
886                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888                components
889                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891                components
892                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894                components
895                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897                components
898                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899                components
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910                        .0,
911                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918                        .0,
919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920                        &self.wireEval0,
921                    )
922                    .0,
923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924                        &self.wireEval1,
925                    )
926                    .0,
927                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928                        &self.wireEval2,
929                    )
930                    .0,
931                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932                        &self.wireEval3,
933                    )
934                    .0,
935                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936                        &self.wireEval4,
937                    )
938                    .0,
939                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940                        &self.sigmaEval0,
941                    )
942                    .0,
943                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944                        &self.sigmaEval1,
945                    )
946                    .0,
947                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948                        &self.sigmaEval2,
949                    )
950                    .0,
951                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952                        &self.sigmaEval3,
953                    )
954                    .0,
955                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956                        &self.prodPermZetaOmegaEval,
957                    )
958                    .0,
959                ]
960                .concat()
961            }
962        }
963        #[automatically_derived]
964        impl alloy_sol_types::EventTopic for PlonkProof {
965            #[inline]
966            fn topic_preimage_length(rust: &Self::RustType) -> usize {
967                0usize
968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969                        &rust.wire0,
970                    )
971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972                        &rust.wire1,
973                    )
974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975                        &rust.wire2,
976                    )
977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978                        &rust.wire3,
979                    )
980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981                        &rust.wire4,
982                    )
983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984                        &rust.prodPerm,
985                    )
986                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987                        &rust.split0,
988                    )
989                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990                        &rust.split1,
991                    )
992                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993                        &rust.split2,
994                    )
995                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996                        &rust.split3,
997                    )
998                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999                        &rust.split4,
1000                    )
1001                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002                        &rust.zeta,
1003                    )
1004                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005                        &rust.zetaOmega,
1006                    )
1007                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008                        &rust.wireEval0,
1009                    )
1010                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011                        &rust.wireEval1,
1012                    )
1013                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014                        &rust.wireEval2,
1015                    )
1016                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017                        &rust.wireEval3,
1018                    )
1019                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020                        &rust.wireEval4,
1021                    )
1022                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023                        &rust.sigmaEval0,
1024                    )
1025                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026                        &rust.sigmaEval1,
1027                    )
1028                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029                        &rust.sigmaEval2,
1030                    )
1031                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032                        &rust.sigmaEval3,
1033                    )
1034                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035                        &rust.prodPermZetaOmegaEval,
1036                    )
1037            }
1038            #[inline]
1039            fn encode_topic_preimage(
1040                rust: &Self::RustType,
1041                out: &mut alloy_sol_types::private::Vec<u8>,
1042            ) {
1043                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045                    &rust.wire0,
1046                    out,
1047                );
1048                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049                    &rust.wire1,
1050                    out,
1051                );
1052                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053                    &rust.wire2,
1054                    out,
1055                );
1056                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057                    &rust.wire3,
1058                    out,
1059                );
1060                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061                    &rust.wire4,
1062                    out,
1063                );
1064                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065                    &rust.prodPerm,
1066                    out,
1067                );
1068                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069                    &rust.split0,
1070                    out,
1071                );
1072                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073                    &rust.split1,
1074                    out,
1075                );
1076                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077                    &rust.split2,
1078                    out,
1079                );
1080                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081                    &rust.split3,
1082                    out,
1083                );
1084                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085                    &rust.split4,
1086                    out,
1087                );
1088                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089                    &rust.zeta, out,
1090                );
1091                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092                    &rust.zetaOmega,
1093                    out,
1094                );
1095                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.wireEval0,
1097                    out,
1098                );
1099                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100                    &rust.wireEval1,
1101                    out,
1102                );
1103                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104                    &rust.wireEval2,
1105                    out,
1106                );
1107                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108                    &rust.wireEval3,
1109                    out,
1110                );
1111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112                    &rust.wireEval4,
1113                    out,
1114                );
1115                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116                    &rust.sigmaEval0,
1117                    out,
1118                );
1119                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120                    &rust.sigmaEval1,
1121                    out,
1122                );
1123                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124                    &rust.sigmaEval2,
1125                    out,
1126                );
1127                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128                    &rust.sigmaEval3,
1129                    out,
1130                );
1131                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132                    &rust.prodPermZetaOmegaEval,
1133                    out,
1134                );
1135            }
1136            #[inline]
1137            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138                let mut out = alloy_sol_types::private::Vec::new();
1139                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141            }
1142        }
1143    };
1144    #[derive()]
1145    /**```solidity
1146    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; }
1147    ```*/
1148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149    #[derive(Clone)]
1150    pub struct VerifyingKey {
1151        #[allow(missing_docs)]
1152        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153        #[allow(missing_docs)]
1154        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155        #[allow(missing_docs)]
1156        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157        #[allow(missing_docs)]
1158        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159        #[allow(missing_docs)]
1160        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161        #[allow(missing_docs)]
1162        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163        #[allow(missing_docs)]
1164        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165        #[allow(missing_docs)]
1166        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167        #[allow(missing_docs)]
1168        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169        #[allow(missing_docs)]
1170        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171        #[allow(missing_docs)]
1172        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173        #[allow(missing_docs)]
1174        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175        #[allow(missing_docs)]
1176        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177        #[allow(missing_docs)]
1178        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179        #[allow(missing_docs)]
1180        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181        #[allow(missing_docs)]
1182        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183        #[allow(missing_docs)]
1184        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185        #[allow(missing_docs)]
1186        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187        #[allow(missing_docs)]
1188        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189        #[allow(missing_docs)]
1190        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191        #[allow(missing_docs)]
1192        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193        #[allow(missing_docs)]
1194        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        #[doc(hidden)]
1205        type UnderlyingSolTuple<'a> = (
1206            alloy::sol_types::sol_data::Uint<256>,
1207            alloy::sol_types::sol_data::Uint<256>,
1208            BN254::G1Point,
1209            BN254::G1Point,
1210            BN254::G1Point,
1211            BN254::G1Point,
1212            BN254::G1Point,
1213            BN254::G1Point,
1214            BN254::G1Point,
1215            BN254::G1Point,
1216            BN254::G1Point,
1217            BN254::G1Point,
1218            BN254::G1Point,
1219            BN254::G1Point,
1220            BN254::G1Point,
1221            BN254::G1Point,
1222            BN254::G1Point,
1223            BN254::G1Point,
1224            BN254::G1Point,
1225            BN254::G1Point,
1226            alloy::sol_types::sol_data::FixedBytes<32>,
1227            alloy::sol_types::sol_data::FixedBytes<32>,
1228        );
1229        #[doc(hidden)]
1230        type UnderlyingRustTuple<'a> = (
1231            alloy::sol_types::private::primitives::aliases::U256,
1232            alloy::sol_types::private::primitives::aliases::U256,
1233            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251            alloy::sol_types::private::FixedBytes<32>,
1252            alloy::sol_types::private::FixedBytes<32>,
1253        );
1254        #[cfg(test)]
1255        #[allow(dead_code, unreachable_patterns)]
1256        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257            match _t {
1258                alloy_sol_types::private::AssertTypeEq::<
1259                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260                >(_) => {},
1261            }
1262        }
1263        #[automatically_derived]
1264        #[doc(hidden)]
1265        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266            fn from(value: VerifyingKey) -> Self {
1267                (
1268                    value.domainSize,
1269                    value.numInputs,
1270                    value.sigma0,
1271                    value.sigma1,
1272                    value.sigma2,
1273                    value.sigma3,
1274                    value.sigma4,
1275                    value.q1,
1276                    value.q2,
1277                    value.q3,
1278                    value.q4,
1279                    value.qM12,
1280                    value.qM34,
1281                    value.qO,
1282                    value.qC,
1283                    value.qH1,
1284                    value.qH2,
1285                    value.qH3,
1286                    value.qH4,
1287                    value.qEcc,
1288                    value.g2LSB,
1289                    value.g2MSB,
1290                )
1291            }
1292        }
1293        #[automatically_derived]
1294        #[doc(hidden)]
1295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297                Self {
1298                    domainSize: tuple.0,
1299                    numInputs: tuple.1,
1300                    sigma0: tuple.2,
1301                    sigma1: tuple.3,
1302                    sigma2: tuple.4,
1303                    sigma3: tuple.5,
1304                    sigma4: tuple.6,
1305                    q1: tuple.7,
1306                    q2: tuple.8,
1307                    q3: tuple.9,
1308                    q4: tuple.10,
1309                    qM12: tuple.11,
1310                    qM34: tuple.12,
1311                    qO: tuple.13,
1312                    qC: tuple.14,
1313                    qH1: tuple.15,
1314                    qH2: tuple.16,
1315                    qH3: tuple.17,
1316                    qH4: tuple.18,
1317                    qEcc: tuple.19,
1318                    g2LSB: tuple.20,
1319                    g2MSB: tuple.21,
1320                }
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolValue for VerifyingKey {
1325            type SolType = Self;
1326        }
1327        #[automatically_derived]
1328        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329            #[inline]
1330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331                (
1332                    <alloy::sol_types::sol_data::Uint<
1333                        256,
1334                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335                    <alloy::sol_types::sol_data::Uint<
1336                        256,
1337                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356                    <alloy::sol_types::sol_data::FixedBytes<
1357                        32,
1358                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359                    <alloy::sol_types::sol_data::FixedBytes<
1360                        32,
1361                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362                )
1363            }
1364            #[inline]
1365            fn stv_abi_encoded_size(&self) -> usize {
1366                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367                    return size;
1368                }
1369                let tuple =
1370                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372            }
1373            #[inline]
1374            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376            }
1377            #[inline]
1378            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379                let tuple =
1380                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382                    &tuple, out,
1383                )
1384            }
1385            #[inline]
1386            fn stv_abi_packed_encoded_size(&self) -> usize {
1387                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388                    return size;
1389                }
1390                let tuple =
1391                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393                    &tuple,
1394                )
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolType for VerifyingKey {
1399            type RustType = Self;
1400            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402            const ENCODED_SIZE: Option<usize> =
1403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404            const PACKED_ENCODED_SIZE: Option<usize> =
1405                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406            #[inline]
1407            fn valid_token(token: &Self::Token<'_>) -> bool {
1408                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409            }
1410            #[inline]
1411            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414            }
1415        }
1416        #[automatically_derived]
1417        impl alloy_sol_types::SolStruct for VerifyingKey {
1418            const NAME: &'static str = "VerifyingKey";
1419            #[inline]
1420            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421                alloy_sol_types::private::Cow::Borrowed(
1422                    "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)",
1423                )
1424            }
1425            #[inline]
1426            fn eip712_components(
1427            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428            {
1429                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431                components
1432                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434                components
1435                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437                components
1438                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440                components
1441                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443                components
1444                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446                components
1447                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449                components
1450                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452                components
1453                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455                components
1456                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458                components
1459                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461                components
1462                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464                components
1465                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467                components
1468                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470                components
1471                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473                components
1474                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476                components
1477                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479                components
1480                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482                components
1483                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484                components
1485            }
1486            #[inline]
1487            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488                [
1489                    <alloy::sol_types::sol_data::Uint<
1490                        256,
1491                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492                        .0,
1493                    <alloy::sol_types::sol_data::Uint<
1494                        256,
1495                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496                        .0,
1497                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498                            &self.sigma0,
1499                        )
1500                        .0,
1501                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502                            &self.sigma1,
1503                        )
1504                        .0,
1505                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506                            &self.sigma2,
1507                        )
1508                        .0,
1509                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510                            &self.sigma3,
1511                        )
1512                        .0,
1513                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514                            &self.sigma4,
1515                        )
1516                        .0,
1517                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518                            &self.q1,
1519                        )
1520                        .0,
1521                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522                            &self.q2,
1523                        )
1524                        .0,
1525                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526                            &self.q3,
1527                        )
1528                        .0,
1529                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530                            &self.q4,
1531                        )
1532                        .0,
1533                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534                            &self.qM12,
1535                        )
1536                        .0,
1537                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538                            &self.qM34,
1539                        )
1540                        .0,
1541                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542                            &self.qO,
1543                        )
1544                        .0,
1545                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546                            &self.qC,
1547                        )
1548                        .0,
1549                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550                            &self.qH1,
1551                        )
1552                        .0,
1553                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554                            &self.qH2,
1555                        )
1556                        .0,
1557                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558                            &self.qH3,
1559                        )
1560                        .0,
1561                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562                            &self.qH4,
1563                        )
1564                        .0,
1565                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566                            &self.qEcc,
1567                        )
1568                        .0,
1569                    <alloy::sol_types::sol_data::FixedBytes<
1570                        32,
1571                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572                        .0,
1573                    <alloy::sol_types::sol_data::FixedBytes<
1574                        32,
1575                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576                        .0,
1577                ]
1578                    .concat()
1579            }
1580        }
1581        #[automatically_derived]
1582        impl alloy_sol_types::EventTopic for VerifyingKey {
1583            #[inline]
1584            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585                0usize
1586                    + <alloy::sol_types::sol_data::Uint<
1587                        256,
1588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589                        &rust.domainSize,
1590                    )
1591                    + <alloy::sol_types::sol_data::Uint<
1592                        256,
1593                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594                        &rust.numInputs,
1595                    )
1596                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597                        &rust.sigma0,
1598                    )
1599                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600                        &rust.sigma1,
1601                    )
1602                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603                        &rust.sigma2,
1604                    )
1605                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606                        &rust.sigma3,
1607                    )
1608                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609                        &rust.sigma4,
1610                    )
1611                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612                        &rust.q1,
1613                    )
1614                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615                        &rust.q2,
1616                    )
1617                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618                        &rust.q3,
1619                    )
1620                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621                        &rust.q4,
1622                    )
1623                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624                        &rust.qM12,
1625                    )
1626                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627                        &rust.qM34,
1628                    )
1629                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630                        &rust.qO,
1631                    )
1632                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633                        &rust.qC,
1634                    )
1635                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636                        &rust.qH1,
1637                    )
1638                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639                        &rust.qH2,
1640                    )
1641                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642                        &rust.qH3,
1643                    )
1644                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.qH4,
1646                    )
1647                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.qEcc,
1649                    )
1650                    + <alloy::sol_types::sol_data::FixedBytes<
1651                        32,
1652                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653                    + <alloy::sol_types::sol_data::FixedBytes<
1654                        32,
1655                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656            }
1657            #[inline]
1658            fn encode_topic_preimage(
1659                rust: &Self::RustType,
1660                out: &mut alloy_sol_types::private::Vec<u8>,
1661            ) {
1662                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663                <alloy::sol_types::sol_data::Uint<
1664                    256,
1665                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666                    &rust.domainSize,
1667                    out,
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    256,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.numInputs,
1673                    out,
1674                );
1675                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676                    &rust.sigma0,
1677                    out,
1678                );
1679                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680                    &rust.sigma1,
1681                    out,
1682                );
1683                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684                    &rust.sigma2,
1685                    out,
1686                );
1687                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688                    &rust.sigma3,
1689                    out,
1690                );
1691                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692                    &rust.sigma4,
1693                    out,
1694                );
1695                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    &rust.q1, out,
1697                );
1698                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699                    &rust.q2, out,
1700                );
1701                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702                    &rust.q3, out,
1703                );
1704                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705                    &rust.q4, out,
1706                );
1707                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708                    &rust.qM12, out,
1709                );
1710                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711                    &rust.qM34, out,
1712                );
1713                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714                    &rust.qO, out,
1715                );
1716                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717                    &rust.qC, out,
1718                );
1719                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720                    &rust.qH1, out,
1721                );
1722                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723                    &rust.qH2, out,
1724                );
1725                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726                    &rust.qH3, out,
1727                );
1728                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729                    &rust.qH4, out,
1730                );
1731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732                    &rust.qEcc, out,
1733                );
1734                <alloy::sol_types::sol_data::FixedBytes<
1735                    32,
1736                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737                    &rust.g2LSB,
1738                    out,
1739                );
1740                <alloy::sol_types::sol_data::FixedBytes<
1741                    32,
1742                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743                    &rust.g2MSB,
1744                    out,
1745                );
1746            }
1747            #[inline]
1748            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749                let mut out = alloy_sol_types::private::Vec::new();
1750                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752            }
1753        }
1754    };
1755    use alloy::contract as alloy_contract;
1756    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1757
1758    See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1759    #[inline]
1760    pub const fn new<
1761        T: alloy_contract::private::Transport + ::core::clone::Clone,
1762        P: alloy_contract::private::Provider<T, N>,
1763        N: alloy_contract::private::Network,
1764    >(
1765        address: alloy_sol_types::private::Address,
1766        provider: P,
1767    ) -> IPlonkVerifierInstance<T, P, N> {
1768        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769    }
1770    /**A [`IPlonkVerifier`](self) instance.
1771
1772    Contains type-safe methods for interacting with an on-chain instance of the
1773    [`IPlonkVerifier`](self) contract located at a given `address`, using a given
1774    provider `P`.
1775
1776    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1777    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1778    be used to deploy a new instance of the contract.
1779
1780    See the [module-level documentation](self) for all the available methods.*/
1781    #[derive(Clone)]
1782    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783        address: alloy_sol_types::private::Address,
1784        provider: P,
1785        _network_transport: ::core::marker::PhantomData<(N, T)>,
1786    }
1787    #[automatically_derived]
1788    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789        #[inline]
1790        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791            f.debug_tuple("IPlonkVerifierInstance")
1792                .field(&self.address)
1793                .finish()
1794        }
1795    }
1796    /// Instantiation and getters/setters.
1797    #[automatically_derived]
1798    impl<
1799            T: alloy_contract::private::Transport + ::core::clone::Clone,
1800            P: alloy_contract::private::Provider<T, N>,
1801            N: alloy_contract::private::Network,
1802        > IPlonkVerifierInstance<T, P, N>
1803    {
1804        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1805
1806        See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1807        #[inline]
1808        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809            Self {
1810                address,
1811                provider,
1812                _network_transport: ::core::marker::PhantomData,
1813            }
1814        }
1815        /// Returns a reference to the address.
1816        #[inline]
1817        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818            &self.address
1819        }
1820        /// Sets the address.
1821        #[inline]
1822        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823            self.address = address;
1824        }
1825        /// Sets the address and returns `self`.
1826        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827            self.set_address(address);
1828            self
1829        }
1830        /// Returns a reference to the provider.
1831        #[inline]
1832        pub const fn provider(&self) -> &P {
1833            &self.provider
1834        }
1835    }
1836    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837        /// Clones the provider and returns a new instance with the cloned provider.
1838        #[inline]
1839        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840            IPlonkVerifierInstance {
1841                address: self.address,
1842                provider: ::core::clone::Clone::clone(&self.provider),
1843                _network_transport: ::core::marker::PhantomData,
1844            }
1845        }
1846    }
1847    /// Function calls.
1848    #[automatically_derived]
1849    impl<
1850            T: alloy_contract::private::Transport + ::core::clone::Clone,
1851            P: alloy_contract::private::Provider<T, N>,
1852            N: alloy_contract::private::Network,
1853        > IPlonkVerifierInstance<T, P, N>
1854    {
1855        /// Creates a new call builder using this contract instance's provider and address.
1856        ///
1857        /// Note that the call can be any function call, not just those defined in this
1858        /// contract. Prefer using the other methods for building type-safe contract calls.
1859        pub fn call_builder<C: alloy_sol_types::SolCall>(
1860            &self,
1861            call: &C,
1862        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864        }
1865    }
1866    /// Event filters.
1867    #[automatically_derived]
1868    impl<
1869            T: alloy_contract::private::Transport + ::core::clone::Clone,
1870            P: alloy_contract::private::Provider<T, N>,
1871            N: alloy_contract::private::Network,
1872        > IPlonkVerifierInstance<T, P, N>
1873    {
1874        /// Creates a new event filter using this contract instance's provider and address.
1875        ///
1876        /// Note that the type can be any event, not just those defined in this contract.
1877        /// Prefer using the other methods for building type-safe event filters.
1878        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879            &self,
1880        ) -> alloy_contract::Event<T, &P, E, N> {
1881            alloy_contract::Event::new_sol(&self.provider, &self.address)
1882        }
1883    }
1884}
1885///Module containing a contract's types and functions.
1886/**
1887
1888```solidity
1889library LightClient {
1890    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1891    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
1892    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
1893}
1894```*/
1895#[allow(
1896    non_camel_case_types,
1897    non_snake_case,
1898    clippy::pub_underscore_fields,
1899    clippy::style,
1900    clippy::empty_structs_with_brackets
1901)]
1902pub mod LightClient {
1903    use alloy::sol_types as alloy_sol_types;
1904
1905    use super::*;
1906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1907    /**```solidity
1908    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1909    ```*/
1910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1911    #[derive(Clone)]
1912    pub struct LightClientState {
1913        #[allow(missing_docs)]
1914        pub viewNum: u64,
1915        #[allow(missing_docs)]
1916        pub blockHeight: u64,
1917        #[allow(missing_docs)]
1918        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1919    }
1920    #[allow(
1921        non_camel_case_types,
1922        non_snake_case,
1923        clippy::pub_underscore_fields,
1924        clippy::style
1925    )]
1926    const _: () = {
1927        use alloy::sol_types as alloy_sol_types;
1928        #[doc(hidden)]
1929        type UnderlyingSolTuple<'a> = (
1930            alloy::sol_types::sol_data::Uint<64>,
1931            alloy::sol_types::sol_data::Uint<64>,
1932            BN254::ScalarField,
1933        );
1934        #[doc(hidden)]
1935        type UnderlyingRustTuple<'a> = (
1936            u64,
1937            u64,
1938            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1939        );
1940        #[cfg(test)]
1941        #[allow(dead_code, unreachable_patterns)]
1942        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1943            match _t {
1944                alloy_sol_types::private::AssertTypeEq::<
1945                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1946                >(_) => {},
1947            }
1948        }
1949        #[automatically_derived]
1950        #[doc(hidden)]
1951        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
1952            fn from(value: LightClientState) -> Self {
1953                (value.viewNum, value.blockHeight, value.blockCommRoot)
1954            }
1955        }
1956        #[automatically_derived]
1957        #[doc(hidden)]
1958        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
1959            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1960                Self {
1961                    viewNum: tuple.0,
1962                    blockHeight: tuple.1,
1963                    blockCommRoot: tuple.2,
1964                }
1965            }
1966        }
1967        #[automatically_derived]
1968        impl alloy_sol_types::SolValue for LightClientState {
1969            type SolType = Self;
1970        }
1971        #[automatically_derived]
1972        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
1973            #[inline]
1974            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1975                (
1976                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1977                        &self.viewNum,
1978                    ),
1979                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1980                        &self.blockHeight,
1981                    ),
1982                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blockCommRoot),
1983                )
1984            }
1985            #[inline]
1986            fn stv_abi_encoded_size(&self) -> usize {
1987                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1988                    return size;
1989                }
1990                let tuple =
1991                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1992                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1993            }
1994            #[inline]
1995            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1996                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1997            }
1998            #[inline]
1999            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2000                let tuple =
2001                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2002                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2003                    &tuple, out,
2004                )
2005            }
2006            #[inline]
2007            fn stv_abi_packed_encoded_size(&self) -> usize {
2008                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2009                    return size;
2010                }
2011                let tuple =
2012                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2013                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2014                    &tuple,
2015                )
2016            }
2017        }
2018        #[automatically_derived]
2019        impl alloy_sol_types::SolType for LightClientState {
2020            type RustType = Self;
2021            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2022            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2023            const ENCODED_SIZE: Option<usize> =
2024                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2025            const PACKED_ENCODED_SIZE: Option<usize> =
2026                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2027            #[inline]
2028            fn valid_token(token: &Self::Token<'_>) -> bool {
2029                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2030            }
2031            #[inline]
2032            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2033                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2034                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2035            }
2036        }
2037        #[automatically_derived]
2038        impl alloy_sol_types::SolStruct for LightClientState {
2039            const NAME: &'static str = "LightClientState";
2040            #[inline]
2041            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2042                alloy_sol_types::private::Cow::Borrowed(
2043                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2044                )
2045            }
2046            #[inline]
2047            fn eip712_components(
2048            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2049            {
2050                alloy_sol_types::private::Vec::new()
2051            }
2052            #[inline]
2053            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2054                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2055            }
2056            #[inline]
2057            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2058                [
2059                    <alloy::sol_types::sol_data::Uint<
2060                        64,
2061                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2062                        .0,
2063                    <alloy::sol_types::sol_data::Uint<
2064                        64,
2065                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2066                        .0,
2067                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2068                            &self.blockCommRoot,
2069                        )
2070                        .0,
2071                ]
2072                    .concat()
2073            }
2074        }
2075        #[automatically_derived]
2076        impl alloy_sol_types::EventTopic for LightClientState {
2077            #[inline]
2078            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2079                0usize
2080                    + <alloy::sol_types::sol_data::Uint<
2081                        64,
2082                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2083                        &rust.viewNum,
2084                    )
2085                    + <alloy::sol_types::sol_data::Uint<
2086                        64,
2087                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2088                        &rust.blockHeight,
2089                    )
2090                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2091                        &rust.blockCommRoot,
2092                    )
2093            }
2094            #[inline]
2095            fn encode_topic_preimage(
2096                rust: &Self::RustType,
2097                out: &mut alloy_sol_types::private::Vec<u8>,
2098            ) {
2099                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2100                <alloy::sol_types::sol_data::Uint<
2101                    64,
2102                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2103                    &rust.viewNum,
2104                    out,
2105                );
2106                <alloy::sol_types::sol_data::Uint<
2107                    64,
2108                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    &rust.blockHeight,
2110                    out,
2111                );
2112                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2113                    &rust.blockCommRoot,
2114                    out,
2115                );
2116            }
2117            #[inline]
2118            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2119                let mut out = alloy_sol_types::private::Vec::new();
2120                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2121                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2122            }
2123        }
2124    };
2125    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2126    /**```solidity
2127    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2128    ```*/
2129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2130    #[derive(Clone)]
2131    pub struct StakeTableState {
2132        #[allow(missing_docs)]
2133        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2134        #[allow(missing_docs)]
2135        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2136        #[allow(missing_docs)]
2137        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2138        #[allow(missing_docs)]
2139        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2140    }
2141    #[allow(
2142        non_camel_case_types,
2143        non_snake_case,
2144        clippy::pub_underscore_fields,
2145        clippy::style
2146    )]
2147    const _: () = {
2148        use alloy::sol_types as alloy_sol_types;
2149        #[doc(hidden)]
2150        type UnderlyingSolTuple<'a> = (
2151            alloy::sol_types::sol_data::Uint<256>,
2152            BN254::ScalarField,
2153            BN254::ScalarField,
2154            BN254::ScalarField,
2155        );
2156        #[doc(hidden)]
2157        type UnderlyingRustTuple<'a> = (
2158            alloy::sol_types::private::primitives::aliases::U256,
2159            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2160            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2161            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2162        );
2163        #[cfg(test)]
2164        #[allow(dead_code, unreachable_patterns)]
2165        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2166            match _t {
2167                alloy_sol_types::private::AssertTypeEq::<
2168                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2169                >(_) => {},
2170            }
2171        }
2172        #[automatically_derived]
2173        #[doc(hidden)]
2174        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2175            fn from(value: StakeTableState) -> Self {
2176                (
2177                    value.threshold,
2178                    value.blsKeyComm,
2179                    value.schnorrKeyComm,
2180                    value.amountComm,
2181                )
2182            }
2183        }
2184        #[automatically_derived]
2185        #[doc(hidden)]
2186        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2187            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2188                Self {
2189                    threshold: tuple.0,
2190                    blsKeyComm: tuple.1,
2191                    schnorrKeyComm: tuple.2,
2192                    amountComm: tuple.3,
2193                }
2194            }
2195        }
2196        #[automatically_derived]
2197        impl alloy_sol_types::SolValue for StakeTableState {
2198            type SolType = Self;
2199        }
2200        #[automatically_derived]
2201        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2202            #[inline]
2203            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2204                (
2205                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2206                        &self.threshold,
2207                    ),
2208                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blsKeyComm),
2209                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2210                        &self.schnorrKeyComm,
2211                    ),
2212                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.amountComm),
2213                )
2214            }
2215            #[inline]
2216            fn stv_abi_encoded_size(&self) -> usize {
2217                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2218                    return size;
2219                }
2220                let tuple =
2221                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2222                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2223            }
2224            #[inline]
2225            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2226                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2227            }
2228            #[inline]
2229            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2230                let tuple =
2231                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2232                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2233                    &tuple, out,
2234                )
2235            }
2236            #[inline]
2237            fn stv_abi_packed_encoded_size(&self) -> usize {
2238                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2239                    return size;
2240                }
2241                let tuple =
2242                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2243                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2244                    &tuple,
2245                )
2246            }
2247        }
2248        #[automatically_derived]
2249        impl alloy_sol_types::SolType for StakeTableState {
2250            type RustType = Self;
2251            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2252            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2253            const ENCODED_SIZE: Option<usize> =
2254                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2255            const PACKED_ENCODED_SIZE: Option<usize> =
2256                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2257            #[inline]
2258            fn valid_token(token: &Self::Token<'_>) -> bool {
2259                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2260            }
2261            #[inline]
2262            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2263                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2264                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2265            }
2266        }
2267        #[automatically_derived]
2268        impl alloy_sol_types::SolStruct for StakeTableState {
2269            const NAME: &'static str = "StakeTableState";
2270            #[inline]
2271            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2272                alloy_sol_types::private::Cow::Borrowed(
2273                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2274                )
2275            }
2276            #[inline]
2277            fn eip712_components(
2278            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2279            {
2280                alloy_sol_types::private::Vec::new()
2281            }
2282            #[inline]
2283            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2284                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2285            }
2286            #[inline]
2287            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2288                [
2289                    <alloy::sol_types::sol_data::Uint<
2290                        256,
2291                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2292                        .0,
2293                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2294                            &self.blsKeyComm,
2295                        )
2296                        .0,
2297                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2298                            &self.schnorrKeyComm,
2299                        )
2300                        .0,
2301                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2302                            &self.amountComm,
2303                        )
2304                        .0,
2305                ]
2306                    .concat()
2307            }
2308        }
2309        #[automatically_derived]
2310        impl alloy_sol_types::EventTopic for StakeTableState {
2311            #[inline]
2312            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2313                0usize
2314                    + <alloy::sol_types::sol_data::Uint<
2315                        256,
2316                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2317                        &rust.threshold,
2318                    )
2319                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2320                        &rust.blsKeyComm,
2321                    )
2322                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2323                        &rust.schnorrKeyComm,
2324                    )
2325                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2326                        &rust.amountComm,
2327                    )
2328            }
2329            #[inline]
2330            fn encode_topic_preimage(
2331                rust: &Self::RustType,
2332                out: &mut alloy_sol_types::private::Vec<u8>,
2333            ) {
2334                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2335                <alloy::sol_types::sol_data::Uint<
2336                    256,
2337                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2338                    &rust.threshold,
2339                    out,
2340                );
2341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2342                    &rust.blsKeyComm,
2343                    out,
2344                );
2345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2346                    &rust.schnorrKeyComm,
2347                    out,
2348                );
2349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2350                    &rust.amountComm,
2351                    out,
2352                );
2353            }
2354            #[inline]
2355            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2356                let mut out = alloy_sol_types::private::Vec::new();
2357                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2358                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2359            }
2360        }
2361    };
2362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2363    /**```solidity
2364    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2365    ```*/
2366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2367    #[derive(Clone)]
2368    pub struct StateHistoryCommitment {
2369        #[allow(missing_docs)]
2370        pub l1BlockHeight: u64,
2371        #[allow(missing_docs)]
2372        pub l1BlockTimestamp: u64,
2373        #[allow(missing_docs)]
2374        pub hotShotBlockHeight: u64,
2375        #[allow(missing_docs)]
2376        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2377    }
2378    #[allow(
2379        non_camel_case_types,
2380        non_snake_case,
2381        clippy::pub_underscore_fields,
2382        clippy::style
2383    )]
2384    const _: () = {
2385        use alloy::sol_types as alloy_sol_types;
2386        #[doc(hidden)]
2387        type UnderlyingSolTuple<'a> = (
2388            alloy::sol_types::sol_data::Uint<64>,
2389            alloy::sol_types::sol_data::Uint<64>,
2390            alloy::sol_types::sol_data::Uint<64>,
2391            BN254::ScalarField,
2392        );
2393        #[doc(hidden)]
2394        type UnderlyingRustTuple<'a> = (
2395            u64,
2396            u64,
2397            u64,
2398            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2399        );
2400        #[cfg(test)]
2401        #[allow(dead_code, unreachable_patterns)]
2402        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2403            match _t {
2404                alloy_sol_types::private::AssertTypeEq::<
2405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2406                >(_) => {},
2407            }
2408        }
2409        #[automatically_derived]
2410        #[doc(hidden)]
2411        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2412            fn from(value: StateHistoryCommitment) -> Self {
2413                (
2414                    value.l1BlockHeight,
2415                    value.l1BlockTimestamp,
2416                    value.hotShotBlockHeight,
2417                    value.hotShotBlockCommRoot,
2418                )
2419            }
2420        }
2421        #[automatically_derived]
2422        #[doc(hidden)]
2423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2425                Self {
2426                    l1BlockHeight: tuple.0,
2427                    l1BlockTimestamp: tuple.1,
2428                    hotShotBlockHeight: tuple.2,
2429                    hotShotBlockCommRoot: tuple.3,
2430                }
2431            }
2432        }
2433        #[automatically_derived]
2434        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2435            type SolType = Self;
2436        }
2437        #[automatically_derived]
2438        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2439            #[inline]
2440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2441                (
2442                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
2443                        &self.l1BlockHeight,
2444                    ),
2445                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
2446                        &self.l1BlockTimestamp,
2447                    ),
2448                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
2449                        &self.hotShotBlockHeight,
2450                    ),
2451                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2452                        &self.hotShotBlockCommRoot,
2453                    ),
2454                )
2455            }
2456            #[inline]
2457            fn stv_abi_encoded_size(&self) -> usize {
2458                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2459                    return size;
2460                }
2461                let tuple =
2462                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2463                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2464            }
2465            #[inline]
2466            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2467                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2468            }
2469            #[inline]
2470            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2471                let tuple =
2472                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2473                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2474                    &tuple, out,
2475                )
2476            }
2477            #[inline]
2478            fn stv_abi_packed_encoded_size(&self) -> usize {
2479                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2480                    return size;
2481                }
2482                let tuple =
2483                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2484                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2485                    &tuple,
2486                )
2487            }
2488        }
2489        #[automatically_derived]
2490        impl alloy_sol_types::SolType for StateHistoryCommitment {
2491            type RustType = Self;
2492            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2493            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2494            const ENCODED_SIZE: Option<usize> =
2495                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2496            const PACKED_ENCODED_SIZE: Option<usize> =
2497                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2498            #[inline]
2499            fn valid_token(token: &Self::Token<'_>) -> bool {
2500                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2501            }
2502            #[inline]
2503            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2504                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2505                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2506            }
2507        }
2508        #[automatically_derived]
2509        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2510            const NAME: &'static str = "StateHistoryCommitment";
2511            #[inline]
2512            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2513                alloy_sol_types::private::Cow::Borrowed(
2514                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2515                )
2516            }
2517            #[inline]
2518            fn eip712_components(
2519            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2520            {
2521                alloy_sol_types::private::Vec::new()
2522            }
2523            #[inline]
2524            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2525                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2526            }
2527            #[inline]
2528            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2529                [
2530                    <alloy::sol_types::sol_data::Uint<
2531                        64,
2532                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2533                        .0,
2534                    <alloy::sol_types::sol_data::Uint<
2535                        64,
2536                    > as alloy_sol_types::SolType>::eip712_data_word(
2537                            &self.l1BlockTimestamp,
2538                        )
2539                        .0,
2540                    <alloy::sol_types::sol_data::Uint<
2541                        64,
2542                    > as alloy_sol_types::SolType>::eip712_data_word(
2543                            &self.hotShotBlockHeight,
2544                        )
2545                        .0,
2546                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2547                            &self.hotShotBlockCommRoot,
2548                        )
2549                        .0,
2550                ]
2551                    .concat()
2552            }
2553        }
2554        #[automatically_derived]
2555        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2556            #[inline]
2557            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2558                0usize
2559                    + <alloy::sol_types::sol_data::Uint<
2560                        64,
2561                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2562                        &rust.l1BlockHeight,
2563                    )
2564                    + <alloy::sol_types::sol_data::Uint<
2565                        64,
2566                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2567                        &rust.l1BlockTimestamp,
2568                    )
2569                    + <alloy::sol_types::sol_data::Uint<
2570                        64,
2571                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2572                        &rust.hotShotBlockHeight,
2573                    )
2574                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2575                        &rust.hotShotBlockCommRoot,
2576                    )
2577            }
2578            #[inline]
2579            fn encode_topic_preimage(
2580                rust: &Self::RustType,
2581                out: &mut alloy_sol_types::private::Vec<u8>,
2582            ) {
2583                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2584                <alloy::sol_types::sol_data::Uint<
2585                    64,
2586                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2587                    &rust.l1BlockHeight,
2588                    out,
2589                );
2590                <alloy::sol_types::sol_data::Uint<
2591                    64,
2592                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2593                    &rust.l1BlockTimestamp,
2594                    out,
2595                );
2596                <alloy::sol_types::sol_data::Uint<
2597                    64,
2598                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2599                    &rust.hotShotBlockHeight,
2600                    out,
2601                );
2602                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2603                    &rust.hotShotBlockCommRoot,
2604                    out,
2605                );
2606            }
2607            #[inline]
2608            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2609                let mut out = alloy_sol_types::private::Vec::new();
2610                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2611                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2612            }
2613        }
2614    };
2615    use alloy::contract as alloy_contract;
2616    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2617
2618    See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2619    #[inline]
2620    pub const fn new<
2621        T: alloy_contract::private::Transport + ::core::clone::Clone,
2622        P: alloy_contract::private::Provider<T, N>,
2623        N: alloy_contract::private::Network,
2624    >(
2625        address: alloy_sol_types::private::Address,
2626        provider: P,
2627    ) -> LightClientInstance<T, P, N> {
2628        LightClientInstance::<T, P, N>::new(address, provider)
2629    }
2630    /**A [`LightClient`](self) instance.
2631
2632    Contains type-safe methods for interacting with an on-chain instance of the
2633    [`LightClient`](self) contract located at a given `address`, using a given
2634    provider `P`.
2635
2636    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2637    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2638    be used to deploy a new instance of the contract.
2639
2640    See the [module-level documentation](self) for all the available methods.*/
2641    #[derive(Clone)]
2642    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2643        address: alloy_sol_types::private::Address,
2644        provider: P,
2645        _network_transport: ::core::marker::PhantomData<(N, T)>,
2646    }
2647    #[automatically_derived]
2648    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2649        #[inline]
2650        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2651            f.debug_tuple("LightClientInstance")
2652                .field(&self.address)
2653                .finish()
2654        }
2655    }
2656    /// Instantiation and getters/setters.
2657    #[automatically_derived]
2658    impl<
2659            T: alloy_contract::private::Transport + ::core::clone::Clone,
2660            P: alloy_contract::private::Provider<T, N>,
2661            N: alloy_contract::private::Network,
2662        > LightClientInstance<T, P, N>
2663    {
2664        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2665
2666        See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2667        #[inline]
2668        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
2669            Self {
2670                address,
2671                provider,
2672                _network_transport: ::core::marker::PhantomData,
2673            }
2674        }
2675        /// Returns a reference to the address.
2676        #[inline]
2677        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2678            &self.address
2679        }
2680        /// Sets the address.
2681        #[inline]
2682        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2683            self.address = address;
2684        }
2685        /// Sets the address and returns `self`.
2686        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2687            self.set_address(address);
2688            self
2689        }
2690        /// Returns a reference to the provider.
2691        #[inline]
2692        pub const fn provider(&self) -> &P {
2693            &self.provider
2694        }
2695    }
2696    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2697        /// Clones the provider and returns a new instance with the cloned provider.
2698        #[inline]
2699        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2700            LightClientInstance {
2701                address: self.address,
2702                provider: ::core::clone::Clone::clone(&self.provider),
2703                _network_transport: ::core::marker::PhantomData,
2704            }
2705        }
2706    }
2707    /// Function calls.
2708    #[automatically_derived]
2709    impl<
2710            T: alloy_contract::private::Transport + ::core::clone::Clone,
2711            P: alloy_contract::private::Provider<T, N>,
2712            N: alloy_contract::private::Network,
2713        > LightClientInstance<T, P, N>
2714    {
2715        /// Creates a new call builder using this contract instance's provider and address.
2716        ///
2717        /// Note that the call can be any function call, not just those defined in this
2718        /// contract. Prefer using the other methods for building type-safe contract calls.
2719        pub fn call_builder<C: alloy_sol_types::SolCall>(
2720            &self,
2721            call: &C,
2722        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2723            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2724        }
2725    }
2726    /// Event filters.
2727    #[automatically_derived]
2728    impl<
2729            T: alloy_contract::private::Transport + ::core::clone::Clone,
2730            P: alloy_contract::private::Provider<T, N>,
2731            N: alloy_contract::private::Network,
2732        > LightClientInstance<T, P, N>
2733    {
2734        /// Creates a new event filter using this contract instance's provider and address.
2735        ///
2736        /// Note that the type can be any event, not just those defined in this contract.
2737        /// Prefer using the other methods for building type-safe event filters.
2738        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2739            &self,
2740        ) -> alloy_contract::Event<T, &P, E, N> {
2741            alloy_contract::Event::new_sol(&self.provider, &self.address)
2742        }
2743    }
2744}
2745/**
2746
2747Generated by the following Solidity interface...
2748```solidity
2749library BN254 {
2750    type BaseField is uint256;
2751    type ScalarField is uint256;
2752    struct G1Point {
2753        BaseField x;
2754        BaseField y;
2755    }
2756}
2757
2758library IPlonkVerifier {
2759    struct PlonkProof {
2760        BN254.G1Point wire0;
2761        BN254.G1Point wire1;
2762        BN254.G1Point wire2;
2763        BN254.G1Point wire3;
2764        BN254.G1Point wire4;
2765        BN254.G1Point prodPerm;
2766        BN254.G1Point split0;
2767        BN254.G1Point split1;
2768        BN254.G1Point split2;
2769        BN254.G1Point split3;
2770        BN254.G1Point split4;
2771        BN254.G1Point zeta;
2772        BN254.G1Point zetaOmega;
2773        BN254.ScalarField wireEval0;
2774        BN254.ScalarField wireEval1;
2775        BN254.ScalarField wireEval2;
2776        BN254.ScalarField wireEval3;
2777        BN254.ScalarField wireEval4;
2778        BN254.ScalarField sigmaEval0;
2779        BN254.ScalarField sigmaEval1;
2780        BN254.ScalarField sigmaEval2;
2781        BN254.ScalarField sigmaEval3;
2782        BN254.ScalarField prodPermZetaOmegaEval;
2783    }
2784    struct VerifyingKey {
2785        uint256 domainSize;
2786        uint256 numInputs;
2787        BN254.G1Point sigma0;
2788        BN254.G1Point sigma1;
2789        BN254.G1Point sigma2;
2790        BN254.G1Point sigma3;
2791        BN254.G1Point sigma4;
2792        BN254.G1Point q1;
2793        BN254.G1Point q2;
2794        BN254.G1Point q3;
2795        BN254.G1Point q4;
2796        BN254.G1Point qM12;
2797        BN254.G1Point qM34;
2798        BN254.G1Point qO;
2799        BN254.G1Point qC;
2800        BN254.G1Point qH1;
2801        BN254.G1Point qH2;
2802        BN254.G1Point qH3;
2803        BN254.G1Point qH4;
2804        BN254.G1Point qEcc;
2805        bytes32 g2LSB;
2806        bytes32 g2MSB;
2807    }
2808}
2809
2810library LightClient {
2811    struct LightClientState {
2812        uint64 viewNum;
2813        uint64 blockHeight;
2814        BN254.ScalarField blockCommRoot;
2815    }
2816    struct StakeTableState {
2817        uint256 threshold;
2818        BN254.ScalarField blsKeyComm;
2819        BN254.ScalarField schnorrKeyComm;
2820        BN254.ScalarField amountComm;
2821    }
2822    struct StateHistoryCommitment {
2823        uint64 l1BlockHeight;
2824        uint64 l1BlockTimestamp;
2825        uint64 hotShotBlockHeight;
2826        BN254.ScalarField hotShotBlockCommRoot;
2827    }
2828}
2829
2830interface LightClientV2Mock {
2831    error AddressEmptyCode(address target);
2832    error DeprecatedApi();
2833    error ERC1967InvalidImplementation(address implementation);
2834    error ERC1967NonPayable();
2835    error FailedInnerCall();
2836    error InsufficientSnapshotHistory();
2837    error InvalidAddress();
2838    error InvalidArgs();
2839    error InvalidHotShotBlockForCommitmentCheck();
2840    error InvalidInitialization();
2841    error InvalidMaxStateHistory();
2842    error InvalidProof();
2843    error MissingEpochRootUpdate();
2844    error NoChangeRequired();
2845    error NotInitializing();
2846    error OutdatedState();
2847    error OwnableInvalidOwner(address owner);
2848    error OwnableUnauthorizedAccount(address account);
2849    error ProverNotPermissioned();
2850    error UUPSUnauthorizedCallContext();
2851    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2852    error WrongStakeTableUsed();
2853
2854    event Initialized(uint64 version);
2855    event NewEpoch(uint64 epoch);
2856    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2857    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2858    event PermissionedProverNotRequired();
2859    event PermissionedProverRequired(address permissionedProver);
2860    event Upgrade(address implementation);
2861    event Upgraded(address indexed implementation);
2862
2863    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2864    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2865    function blocksPerEpoch() external view returns (uint64);
2866    function currentBlockNumber() external view returns (uint256);
2867    function currentEpoch() external view returns (uint64);
2868    function disablePermissionedProverMode() external;
2869    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
2870    function epochStartBlock() external view returns (uint64);
2871    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2872    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2873    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2874    function getFirstEpoch() external view returns (uint64);
2875    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2876    function getStateHistoryCount() external view returns (uint256);
2877    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2878    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2879    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
2880    function isEpochRoot(uint64 blockHeight) external view returns (bool);
2881    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
2882    function isPermissionedProverEnabled() external view returns (bool);
2883    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
2884    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
2885    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
2886    function owner() external view returns (address);
2887    function permissionedProver() external view returns (address);
2888    function proxiableUUID() external view returns (bytes32);
2889    function renounceOwnership() external;
2890    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
2891    function setFinalizedState(LightClient.LightClientState memory state) external;
2892    function setHotShotDownSince(uint256 l1Height) external;
2893    function setHotShotUp() external;
2894    function setPermissionedProver(address prover) external;
2895    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
2896    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
2897    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
2898    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2899    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2900    function stateHistoryFirstIndex() external view returns (uint64);
2901    function stateHistoryRetentionPeriod() external view returns (uint32);
2902    function transferOwnership(address newOwner) external;
2903    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
2904    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2905    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2906}
2907```
2908
2909...which was generated by the following JSON ABI:
2910```json
2911[
2912  {
2913    "type": "function",
2914    "name": "UPGRADE_INTERFACE_VERSION",
2915    "inputs": [],
2916    "outputs": [
2917      {
2918        "name": "",
2919        "type": "string",
2920        "internalType": "string"
2921      }
2922    ],
2923    "stateMutability": "view"
2924  },
2925  {
2926    "type": "function",
2927    "name": "_getVk",
2928    "inputs": [],
2929    "outputs": [
2930      {
2931        "name": "vk",
2932        "type": "tuple",
2933        "internalType": "struct IPlonkVerifier.VerifyingKey",
2934        "components": [
2935          {
2936            "name": "domainSize",
2937            "type": "uint256",
2938            "internalType": "uint256"
2939          },
2940          {
2941            "name": "numInputs",
2942            "type": "uint256",
2943            "internalType": "uint256"
2944          },
2945          {
2946            "name": "sigma0",
2947            "type": "tuple",
2948            "internalType": "struct BN254.G1Point",
2949            "components": [
2950              {
2951                "name": "x",
2952                "type": "uint256",
2953                "internalType": "BN254.BaseField"
2954              },
2955              {
2956                "name": "y",
2957                "type": "uint256",
2958                "internalType": "BN254.BaseField"
2959              }
2960            ]
2961          },
2962          {
2963            "name": "sigma1",
2964            "type": "tuple",
2965            "internalType": "struct BN254.G1Point",
2966            "components": [
2967              {
2968                "name": "x",
2969                "type": "uint256",
2970                "internalType": "BN254.BaseField"
2971              },
2972              {
2973                "name": "y",
2974                "type": "uint256",
2975                "internalType": "BN254.BaseField"
2976              }
2977            ]
2978          },
2979          {
2980            "name": "sigma2",
2981            "type": "tuple",
2982            "internalType": "struct BN254.G1Point",
2983            "components": [
2984              {
2985                "name": "x",
2986                "type": "uint256",
2987                "internalType": "BN254.BaseField"
2988              },
2989              {
2990                "name": "y",
2991                "type": "uint256",
2992                "internalType": "BN254.BaseField"
2993              }
2994            ]
2995          },
2996          {
2997            "name": "sigma3",
2998            "type": "tuple",
2999            "internalType": "struct BN254.G1Point",
3000            "components": [
3001              {
3002                "name": "x",
3003                "type": "uint256",
3004                "internalType": "BN254.BaseField"
3005              },
3006              {
3007                "name": "y",
3008                "type": "uint256",
3009                "internalType": "BN254.BaseField"
3010              }
3011            ]
3012          },
3013          {
3014            "name": "sigma4",
3015            "type": "tuple",
3016            "internalType": "struct BN254.G1Point",
3017            "components": [
3018              {
3019                "name": "x",
3020                "type": "uint256",
3021                "internalType": "BN254.BaseField"
3022              },
3023              {
3024                "name": "y",
3025                "type": "uint256",
3026                "internalType": "BN254.BaseField"
3027              }
3028            ]
3029          },
3030          {
3031            "name": "q1",
3032            "type": "tuple",
3033            "internalType": "struct BN254.G1Point",
3034            "components": [
3035              {
3036                "name": "x",
3037                "type": "uint256",
3038                "internalType": "BN254.BaseField"
3039              },
3040              {
3041                "name": "y",
3042                "type": "uint256",
3043                "internalType": "BN254.BaseField"
3044              }
3045            ]
3046          },
3047          {
3048            "name": "q2",
3049            "type": "tuple",
3050            "internalType": "struct BN254.G1Point",
3051            "components": [
3052              {
3053                "name": "x",
3054                "type": "uint256",
3055                "internalType": "BN254.BaseField"
3056              },
3057              {
3058                "name": "y",
3059                "type": "uint256",
3060                "internalType": "BN254.BaseField"
3061              }
3062            ]
3063          },
3064          {
3065            "name": "q3",
3066            "type": "tuple",
3067            "internalType": "struct BN254.G1Point",
3068            "components": [
3069              {
3070                "name": "x",
3071                "type": "uint256",
3072                "internalType": "BN254.BaseField"
3073              },
3074              {
3075                "name": "y",
3076                "type": "uint256",
3077                "internalType": "BN254.BaseField"
3078              }
3079            ]
3080          },
3081          {
3082            "name": "q4",
3083            "type": "tuple",
3084            "internalType": "struct BN254.G1Point",
3085            "components": [
3086              {
3087                "name": "x",
3088                "type": "uint256",
3089                "internalType": "BN254.BaseField"
3090              },
3091              {
3092                "name": "y",
3093                "type": "uint256",
3094                "internalType": "BN254.BaseField"
3095              }
3096            ]
3097          },
3098          {
3099            "name": "qM12",
3100            "type": "tuple",
3101            "internalType": "struct BN254.G1Point",
3102            "components": [
3103              {
3104                "name": "x",
3105                "type": "uint256",
3106                "internalType": "BN254.BaseField"
3107              },
3108              {
3109                "name": "y",
3110                "type": "uint256",
3111                "internalType": "BN254.BaseField"
3112              }
3113            ]
3114          },
3115          {
3116            "name": "qM34",
3117            "type": "tuple",
3118            "internalType": "struct BN254.G1Point",
3119            "components": [
3120              {
3121                "name": "x",
3122                "type": "uint256",
3123                "internalType": "BN254.BaseField"
3124              },
3125              {
3126                "name": "y",
3127                "type": "uint256",
3128                "internalType": "BN254.BaseField"
3129              }
3130            ]
3131          },
3132          {
3133            "name": "qO",
3134            "type": "tuple",
3135            "internalType": "struct BN254.G1Point",
3136            "components": [
3137              {
3138                "name": "x",
3139                "type": "uint256",
3140                "internalType": "BN254.BaseField"
3141              },
3142              {
3143                "name": "y",
3144                "type": "uint256",
3145                "internalType": "BN254.BaseField"
3146              }
3147            ]
3148          },
3149          {
3150            "name": "qC",
3151            "type": "tuple",
3152            "internalType": "struct BN254.G1Point",
3153            "components": [
3154              {
3155                "name": "x",
3156                "type": "uint256",
3157                "internalType": "BN254.BaseField"
3158              },
3159              {
3160                "name": "y",
3161                "type": "uint256",
3162                "internalType": "BN254.BaseField"
3163              }
3164            ]
3165          },
3166          {
3167            "name": "qH1",
3168            "type": "tuple",
3169            "internalType": "struct BN254.G1Point",
3170            "components": [
3171              {
3172                "name": "x",
3173                "type": "uint256",
3174                "internalType": "BN254.BaseField"
3175              },
3176              {
3177                "name": "y",
3178                "type": "uint256",
3179                "internalType": "BN254.BaseField"
3180              }
3181            ]
3182          },
3183          {
3184            "name": "qH2",
3185            "type": "tuple",
3186            "internalType": "struct BN254.G1Point",
3187            "components": [
3188              {
3189                "name": "x",
3190                "type": "uint256",
3191                "internalType": "BN254.BaseField"
3192              },
3193              {
3194                "name": "y",
3195                "type": "uint256",
3196                "internalType": "BN254.BaseField"
3197              }
3198            ]
3199          },
3200          {
3201            "name": "qH3",
3202            "type": "tuple",
3203            "internalType": "struct BN254.G1Point",
3204            "components": [
3205              {
3206                "name": "x",
3207                "type": "uint256",
3208                "internalType": "BN254.BaseField"
3209              },
3210              {
3211                "name": "y",
3212                "type": "uint256",
3213                "internalType": "BN254.BaseField"
3214              }
3215            ]
3216          },
3217          {
3218            "name": "qH4",
3219            "type": "tuple",
3220            "internalType": "struct BN254.G1Point",
3221            "components": [
3222              {
3223                "name": "x",
3224                "type": "uint256",
3225                "internalType": "BN254.BaseField"
3226              },
3227              {
3228                "name": "y",
3229                "type": "uint256",
3230                "internalType": "BN254.BaseField"
3231              }
3232            ]
3233          },
3234          {
3235            "name": "qEcc",
3236            "type": "tuple",
3237            "internalType": "struct BN254.G1Point",
3238            "components": [
3239              {
3240                "name": "x",
3241                "type": "uint256",
3242                "internalType": "BN254.BaseField"
3243              },
3244              {
3245                "name": "y",
3246                "type": "uint256",
3247                "internalType": "BN254.BaseField"
3248              }
3249            ]
3250          },
3251          {
3252            "name": "g2LSB",
3253            "type": "bytes32",
3254            "internalType": "bytes32"
3255          },
3256          {
3257            "name": "g2MSB",
3258            "type": "bytes32",
3259            "internalType": "bytes32"
3260          }
3261        ]
3262      }
3263    ],
3264    "stateMutability": "pure"
3265  },
3266  {
3267    "type": "function",
3268    "name": "blocksPerEpoch",
3269    "inputs": [],
3270    "outputs": [
3271      {
3272        "name": "",
3273        "type": "uint64",
3274        "internalType": "uint64"
3275      }
3276    ],
3277    "stateMutability": "view"
3278  },
3279  {
3280    "type": "function",
3281    "name": "currentBlockNumber",
3282    "inputs": [],
3283    "outputs": [
3284      {
3285        "name": "",
3286        "type": "uint256",
3287        "internalType": "uint256"
3288      }
3289    ],
3290    "stateMutability": "view"
3291  },
3292  {
3293    "type": "function",
3294    "name": "currentEpoch",
3295    "inputs": [],
3296    "outputs": [
3297      {
3298        "name": "",
3299        "type": "uint64",
3300        "internalType": "uint64"
3301      }
3302    ],
3303    "stateMutability": "view"
3304  },
3305  {
3306    "type": "function",
3307    "name": "disablePermissionedProverMode",
3308    "inputs": [],
3309    "outputs": [],
3310    "stateMutability": "nonpayable"
3311  },
3312  {
3313    "type": "function",
3314    "name": "epochFromBlockNumber",
3315    "inputs": [
3316      {
3317        "name": "_blockNum",
3318        "type": "uint64",
3319        "internalType": "uint64"
3320      },
3321      {
3322        "name": "_blocksPerEpoch",
3323        "type": "uint64",
3324        "internalType": "uint64"
3325      }
3326    ],
3327    "outputs": [
3328      {
3329        "name": "",
3330        "type": "uint64",
3331        "internalType": "uint64"
3332      }
3333    ],
3334    "stateMutability": "pure"
3335  },
3336  {
3337    "type": "function",
3338    "name": "epochStartBlock",
3339    "inputs": [],
3340    "outputs": [
3341      {
3342        "name": "",
3343        "type": "uint64",
3344        "internalType": "uint64"
3345      }
3346    ],
3347    "stateMutability": "view"
3348  },
3349  {
3350    "type": "function",
3351    "name": "finalizedState",
3352    "inputs": [],
3353    "outputs": [
3354      {
3355        "name": "viewNum",
3356        "type": "uint64",
3357        "internalType": "uint64"
3358      },
3359      {
3360        "name": "blockHeight",
3361        "type": "uint64",
3362        "internalType": "uint64"
3363      },
3364      {
3365        "name": "blockCommRoot",
3366        "type": "uint256",
3367        "internalType": "BN254.ScalarField"
3368      }
3369    ],
3370    "stateMutability": "view"
3371  },
3372  {
3373    "type": "function",
3374    "name": "genesisStakeTableState",
3375    "inputs": [],
3376    "outputs": [
3377      {
3378        "name": "threshold",
3379        "type": "uint256",
3380        "internalType": "uint256"
3381      },
3382      {
3383        "name": "blsKeyComm",
3384        "type": "uint256",
3385        "internalType": "BN254.ScalarField"
3386      },
3387      {
3388        "name": "schnorrKeyComm",
3389        "type": "uint256",
3390        "internalType": "BN254.ScalarField"
3391      },
3392      {
3393        "name": "amountComm",
3394        "type": "uint256",
3395        "internalType": "BN254.ScalarField"
3396      }
3397    ],
3398    "stateMutability": "view"
3399  },
3400  {
3401    "type": "function",
3402    "name": "genesisState",
3403    "inputs": [],
3404    "outputs": [
3405      {
3406        "name": "viewNum",
3407        "type": "uint64",
3408        "internalType": "uint64"
3409      },
3410      {
3411        "name": "blockHeight",
3412        "type": "uint64",
3413        "internalType": "uint64"
3414      },
3415      {
3416        "name": "blockCommRoot",
3417        "type": "uint256",
3418        "internalType": "BN254.ScalarField"
3419      }
3420    ],
3421    "stateMutability": "view"
3422  },
3423  {
3424    "type": "function",
3425    "name": "getFirstEpoch",
3426    "inputs": [],
3427    "outputs": [
3428      {
3429        "name": "",
3430        "type": "uint64",
3431        "internalType": "uint64"
3432      }
3433    ],
3434    "stateMutability": "view"
3435  },
3436  {
3437    "type": "function",
3438    "name": "getHotShotCommitment",
3439    "inputs": [
3440      {
3441        "name": "hotShotBlockHeight",
3442        "type": "uint256",
3443        "internalType": "uint256"
3444      }
3445    ],
3446    "outputs": [
3447      {
3448        "name": "hotShotBlockCommRoot",
3449        "type": "uint256",
3450        "internalType": "BN254.ScalarField"
3451      },
3452      {
3453        "name": "hotshotBlockHeight",
3454        "type": "uint64",
3455        "internalType": "uint64"
3456      }
3457    ],
3458    "stateMutability": "view"
3459  },
3460  {
3461    "type": "function",
3462    "name": "getStateHistoryCount",
3463    "inputs": [],
3464    "outputs": [
3465      {
3466        "name": "",
3467        "type": "uint256",
3468        "internalType": "uint256"
3469      }
3470    ],
3471    "stateMutability": "view"
3472  },
3473  {
3474    "type": "function",
3475    "name": "getVersion",
3476    "inputs": [],
3477    "outputs": [
3478      {
3479        "name": "majorVersion",
3480        "type": "uint8",
3481        "internalType": "uint8"
3482      },
3483      {
3484        "name": "minorVersion",
3485        "type": "uint8",
3486        "internalType": "uint8"
3487      },
3488      {
3489        "name": "patchVersion",
3490        "type": "uint8",
3491        "internalType": "uint8"
3492      }
3493    ],
3494    "stateMutability": "pure"
3495  },
3496  {
3497    "type": "function",
3498    "name": "initialize",
3499    "inputs": [
3500      {
3501        "name": "_genesis",
3502        "type": "tuple",
3503        "internalType": "struct LightClient.LightClientState",
3504        "components": [
3505          {
3506            "name": "viewNum",
3507            "type": "uint64",
3508            "internalType": "uint64"
3509          },
3510          {
3511            "name": "blockHeight",
3512            "type": "uint64",
3513            "internalType": "uint64"
3514          },
3515          {
3516            "name": "blockCommRoot",
3517            "type": "uint256",
3518            "internalType": "BN254.ScalarField"
3519          }
3520        ]
3521      },
3522      {
3523        "name": "_genesisStakeTableState",
3524        "type": "tuple",
3525        "internalType": "struct LightClient.StakeTableState",
3526        "components": [
3527          {
3528            "name": "threshold",
3529            "type": "uint256",
3530            "internalType": "uint256"
3531          },
3532          {
3533            "name": "blsKeyComm",
3534            "type": "uint256",
3535            "internalType": "BN254.ScalarField"
3536          },
3537          {
3538            "name": "schnorrKeyComm",
3539            "type": "uint256",
3540            "internalType": "BN254.ScalarField"
3541          },
3542          {
3543            "name": "amountComm",
3544            "type": "uint256",
3545            "internalType": "BN254.ScalarField"
3546          }
3547        ]
3548      },
3549      {
3550        "name": "_stateHistoryRetentionPeriod",
3551        "type": "uint32",
3552        "internalType": "uint32"
3553      },
3554      {
3555        "name": "owner",
3556        "type": "address",
3557        "internalType": "address"
3558      }
3559    ],
3560    "outputs": [],
3561    "stateMutability": "nonpayable"
3562  },
3563  {
3564    "type": "function",
3565    "name": "initializeV2",
3566    "inputs": [
3567      {
3568        "name": "_blocksPerEpoch",
3569        "type": "uint64",
3570        "internalType": "uint64"
3571      },
3572      {
3573        "name": "_epochStartBlock",
3574        "type": "uint64",
3575        "internalType": "uint64"
3576      }
3577    ],
3578    "outputs": [],
3579    "stateMutability": "nonpayable"
3580  },
3581  {
3582    "type": "function",
3583    "name": "isEpochRoot",
3584    "inputs": [
3585      {
3586        "name": "blockHeight",
3587        "type": "uint64",
3588        "internalType": "uint64"
3589      }
3590    ],
3591    "outputs": [
3592      {
3593        "name": "",
3594        "type": "bool",
3595        "internalType": "bool"
3596      }
3597    ],
3598    "stateMutability": "view"
3599  },
3600  {
3601    "type": "function",
3602    "name": "isGtEpochRoot",
3603    "inputs": [
3604      {
3605        "name": "blockHeight",
3606        "type": "uint64",
3607        "internalType": "uint64"
3608      }
3609    ],
3610    "outputs": [
3611      {
3612        "name": "",
3613        "type": "bool",
3614        "internalType": "bool"
3615      }
3616    ],
3617    "stateMutability": "view"
3618  },
3619  {
3620    "type": "function",
3621    "name": "isPermissionedProverEnabled",
3622    "inputs": [],
3623    "outputs": [
3624      {
3625        "name": "",
3626        "type": "bool",
3627        "internalType": "bool"
3628      }
3629    ],
3630    "stateMutability": "view"
3631  },
3632  {
3633    "type": "function",
3634    "name": "lagOverEscapeHatchThreshold",
3635    "inputs": [
3636      {
3637        "name": "blockNumber",
3638        "type": "uint256",
3639        "internalType": "uint256"
3640      },
3641      {
3642        "name": "threshold",
3643        "type": "uint256",
3644        "internalType": "uint256"
3645      }
3646    ],
3647    "outputs": [
3648      {
3649        "name": "",
3650        "type": "bool",
3651        "internalType": "bool"
3652      }
3653    ],
3654    "stateMutability": "view"
3655  },
3656  {
3657    "type": "function",
3658    "name": "newFinalizedState",
3659    "inputs": [
3660      {
3661        "name": "",
3662        "type": "tuple",
3663        "internalType": "struct LightClient.LightClientState",
3664        "components": [
3665          {
3666            "name": "viewNum",
3667            "type": "uint64",
3668            "internalType": "uint64"
3669          },
3670          {
3671            "name": "blockHeight",
3672            "type": "uint64",
3673            "internalType": "uint64"
3674          },
3675          {
3676            "name": "blockCommRoot",
3677            "type": "uint256",
3678            "internalType": "BN254.ScalarField"
3679          }
3680        ]
3681      },
3682      {
3683        "name": "",
3684        "type": "tuple",
3685        "internalType": "struct IPlonkVerifier.PlonkProof",
3686        "components": [
3687          {
3688            "name": "wire0",
3689            "type": "tuple",
3690            "internalType": "struct BN254.G1Point",
3691            "components": [
3692              {
3693                "name": "x",
3694                "type": "uint256",
3695                "internalType": "BN254.BaseField"
3696              },
3697              {
3698                "name": "y",
3699                "type": "uint256",
3700                "internalType": "BN254.BaseField"
3701              }
3702            ]
3703          },
3704          {
3705            "name": "wire1",
3706            "type": "tuple",
3707            "internalType": "struct BN254.G1Point",
3708            "components": [
3709              {
3710                "name": "x",
3711                "type": "uint256",
3712                "internalType": "BN254.BaseField"
3713              },
3714              {
3715                "name": "y",
3716                "type": "uint256",
3717                "internalType": "BN254.BaseField"
3718              }
3719            ]
3720          },
3721          {
3722            "name": "wire2",
3723            "type": "tuple",
3724            "internalType": "struct BN254.G1Point",
3725            "components": [
3726              {
3727                "name": "x",
3728                "type": "uint256",
3729                "internalType": "BN254.BaseField"
3730              },
3731              {
3732                "name": "y",
3733                "type": "uint256",
3734                "internalType": "BN254.BaseField"
3735              }
3736            ]
3737          },
3738          {
3739            "name": "wire3",
3740            "type": "tuple",
3741            "internalType": "struct BN254.G1Point",
3742            "components": [
3743              {
3744                "name": "x",
3745                "type": "uint256",
3746                "internalType": "BN254.BaseField"
3747              },
3748              {
3749                "name": "y",
3750                "type": "uint256",
3751                "internalType": "BN254.BaseField"
3752              }
3753            ]
3754          },
3755          {
3756            "name": "wire4",
3757            "type": "tuple",
3758            "internalType": "struct BN254.G1Point",
3759            "components": [
3760              {
3761                "name": "x",
3762                "type": "uint256",
3763                "internalType": "BN254.BaseField"
3764              },
3765              {
3766                "name": "y",
3767                "type": "uint256",
3768                "internalType": "BN254.BaseField"
3769              }
3770            ]
3771          },
3772          {
3773            "name": "prodPerm",
3774            "type": "tuple",
3775            "internalType": "struct BN254.G1Point",
3776            "components": [
3777              {
3778                "name": "x",
3779                "type": "uint256",
3780                "internalType": "BN254.BaseField"
3781              },
3782              {
3783                "name": "y",
3784                "type": "uint256",
3785                "internalType": "BN254.BaseField"
3786              }
3787            ]
3788          },
3789          {
3790            "name": "split0",
3791            "type": "tuple",
3792            "internalType": "struct BN254.G1Point",
3793            "components": [
3794              {
3795                "name": "x",
3796                "type": "uint256",
3797                "internalType": "BN254.BaseField"
3798              },
3799              {
3800                "name": "y",
3801                "type": "uint256",
3802                "internalType": "BN254.BaseField"
3803              }
3804            ]
3805          },
3806          {
3807            "name": "split1",
3808            "type": "tuple",
3809            "internalType": "struct BN254.G1Point",
3810            "components": [
3811              {
3812                "name": "x",
3813                "type": "uint256",
3814                "internalType": "BN254.BaseField"
3815              },
3816              {
3817                "name": "y",
3818                "type": "uint256",
3819                "internalType": "BN254.BaseField"
3820              }
3821            ]
3822          },
3823          {
3824            "name": "split2",
3825            "type": "tuple",
3826            "internalType": "struct BN254.G1Point",
3827            "components": [
3828              {
3829                "name": "x",
3830                "type": "uint256",
3831                "internalType": "BN254.BaseField"
3832              },
3833              {
3834                "name": "y",
3835                "type": "uint256",
3836                "internalType": "BN254.BaseField"
3837              }
3838            ]
3839          },
3840          {
3841            "name": "split3",
3842            "type": "tuple",
3843            "internalType": "struct BN254.G1Point",
3844            "components": [
3845              {
3846                "name": "x",
3847                "type": "uint256",
3848                "internalType": "BN254.BaseField"
3849              },
3850              {
3851                "name": "y",
3852                "type": "uint256",
3853                "internalType": "BN254.BaseField"
3854              }
3855            ]
3856          },
3857          {
3858            "name": "split4",
3859            "type": "tuple",
3860            "internalType": "struct BN254.G1Point",
3861            "components": [
3862              {
3863                "name": "x",
3864                "type": "uint256",
3865                "internalType": "BN254.BaseField"
3866              },
3867              {
3868                "name": "y",
3869                "type": "uint256",
3870                "internalType": "BN254.BaseField"
3871              }
3872            ]
3873          },
3874          {
3875            "name": "zeta",
3876            "type": "tuple",
3877            "internalType": "struct BN254.G1Point",
3878            "components": [
3879              {
3880                "name": "x",
3881                "type": "uint256",
3882                "internalType": "BN254.BaseField"
3883              },
3884              {
3885                "name": "y",
3886                "type": "uint256",
3887                "internalType": "BN254.BaseField"
3888              }
3889            ]
3890          },
3891          {
3892            "name": "zetaOmega",
3893            "type": "tuple",
3894            "internalType": "struct BN254.G1Point",
3895            "components": [
3896              {
3897                "name": "x",
3898                "type": "uint256",
3899                "internalType": "BN254.BaseField"
3900              },
3901              {
3902                "name": "y",
3903                "type": "uint256",
3904                "internalType": "BN254.BaseField"
3905              }
3906            ]
3907          },
3908          {
3909            "name": "wireEval0",
3910            "type": "uint256",
3911            "internalType": "BN254.ScalarField"
3912          },
3913          {
3914            "name": "wireEval1",
3915            "type": "uint256",
3916            "internalType": "BN254.ScalarField"
3917          },
3918          {
3919            "name": "wireEval2",
3920            "type": "uint256",
3921            "internalType": "BN254.ScalarField"
3922          },
3923          {
3924            "name": "wireEval3",
3925            "type": "uint256",
3926            "internalType": "BN254.ScalarField"
3927          },
3928          {
3929            "name": "wireEval4",
3930            "type": "uint256",
3931            "internalType": "BN254.ScalarField"
3932          },
3933          {
3934            "name": "sigmaEval0",
3935            "type": "uint256",
3936            "internalType": "BN254.ScalarField"
3937          },
3938          {
3939            "name": "sigmaEval1",
3940            "type": "uint256",
3941            "internalType": "BN254.ScalarField"
3942          },
3943          {
3944            "name": "sigmaEval2",
3945            "type": "uint256",
3946            "internalType": "BN254.ScalarField"
3947          },
3948          {
3949            "name": "sigmaEval3",
3950            "type": "uint256",
3951            "internalType": "BN254.ScalarField"
3952          },
3953          {
3954            "name": "prodPermZetaOmegaEval",
3955            "type": "uint256",
3956            "internalType": "BN254.ScalarField"
3957          }
3958        ]
3959      }
3960    ],
3961    "outputs": [],
3962    "stateMutability": "pure"
3963  },
3964  {
3965    "type": "function",
3966    "name": "newFinalizedState",
3967    "inputs": [
3968      {
3969        "name": "newState",
3970        "type": "tuple",
3971        "internalType": "struct LightClient.LightClientState",
3972        "components": [
3973          {
3974            "name": "viewNum",
3975            "type": "uint64",
3976            "internalType": "uint64"
3977          },
3978          {
3979            "name": "blockHeight",
3980            "type": "uint64",
3981            "internalType": "uint64"
3982          },
3983          {
3984            "name": "blockCommRoot",
3985            "type": "uint256",
3986            "internalType": "BN254.ScalarField"
3987          }
3988        ]
3989      },
3990      {
3991        "name": "nextStakeTable",
3992        "type": "tuple",
3993        "internalType": "struct LightClient.StakeTableState",
3994        "components": [
3995          {
3996            "name": "threshold",
3997            "type": "uint256",
3998            "internalType": "uint256"
3999          },
4000          {
4001            "name": "blsKeyComm",
4002            "type": "uint256",
4003            "internalType": "BN254.ScalarField"
4004          },
4005          {
4006            "name": "schnorrKeyComm",
4007            "type": "uint256",
4008            "internalType": "BN254.ScalarField"
4009          },
4010          {
4011            "name": "amountComm",
4012            "type": "uint256",
4013            "internalType": "BN254.ScalarField"
4014          }
4015        ]
4016      },
4017      {
4018        "name": "proof",
4019        "type": "tuple",
4020        "internalType": "struct IPlonkVerifier.PlonkProof",
4021        "components": [
4022          {
4023            "name": "wire0",
4024            "type": "tuple",
4025            "internalType": "struct BN254.G1Point",
4026            "components": [
4027              {
4028                "name": "x",
4029                "type": "uint256",
4030                "internalType": "BN254.BaseField"
4031              },
4032              {
4033                "name": "y",
4034                "type": "uint256",
4035                "internalType": "BN254.BaseField"
4036              }
4037            ]
4038          },
4039          {
4040            "name": "wire1",
4041            "type": "tuple",
4042            "internalType": "struct BN254.G1Point",
4043            "components": [
4044              {
4045                "name": "x",
4046                "type": "uint256",
4047                "internalType": "BN254.BaseField"
4048              },
4049              {
4050                "name": "y",
4051                "type": "uint256",
4052                "internalType": "BN254.BaseField"
4053              }
4054            ]
4055          },
4056          {
4057            "name": "wire2",
4058            "type": "tuple",
4059            "internalType": "struct BN254.G1Point",
4060            "components": [
4061              {
4062                "name": "x",
4063                "type": "uint256",
4064                "internalType": "BN254.BaseField"
4065              },
4066              {
4067                "name": "y",
4068                "type": "uint256",
4069                "internalType": "BN254.BaseField"
4070              }
4071            ]
4072          },
4073          {
4074            "name": "wire3",
4075            "type": "tuple",
4076            "internalType": "struct BN254.G1Point",
4077            "components": [
4078              {
4079                "name": "x",
4080                "type": "uint256",
4081                "internalType": "BN254.BaseField"
4082              },
4083              {
4084                "name": "y",
4085                "type": "uint256",
4086                "internalType": "BN254.BaseField"
4087              }
4088            ]
4089          },
4090          {
4091            "name": "wire4",
4092            "type": "tuple",
4093            "internalType": "struct BN254.G1Point",
4094            "components": [
4095              {
4096                "name": "x",
4097                "type": "uint256",
4098                "internalType": "BN254.BaseField"
4099              },
4100              {
4101                "name": "y",
4102                "type": "uint256",
4103                "internalType": "BN254.BaseField"
4104              }
4105            ]
4106          },
4107          {
4108            "name": "prodPerm",
4109            "type": "tuple",
4110            "internalType": "struct BN254.G1Point",
4111            "components": [
4112              {
4113                "name": "x",
4114                "type": "uint256",
4115                "internalType": "BN254.BaseField"
4116              },
4117              {
4118                "name": "y",
4119                "type": "uint256",
4120                "internalType": "BN254.BaseField"
4121              }
4122            ]
4123          },
4124          {
4125            "name": "split0",
4126            "type": "tuple",
4127            "internalType": "struct BN254.G1Point",
4128            "components": [
4129              {
4130                "name": "x",
4131                "type": "uint256",
4132                "internalType": "BN254.BaseField"
4133              },
4134              {
4135                "name": "y",
4136                "type": "uint256",
4137                "internalType": "BN254.BaseField"
4138              }
4139            ]
4140          },
4141          {
4142            "name": "split1",
4143            "type": "tuple",
4144            "internalType": "struct BN254.G1Point",
4145            "components": [
4146              {
4147                "name": "x",
4148                "type": "uint256",
4149                "internalType": "BN254.BaseField"
4150              },
4151              {
4152                "name": "y",
4153                "type": "uint256",
4154                "internalType": "BN254.BaseField"
4155              }
4156            ]
4157          },
4158          {
4159            "name": "split2",
4160            "type": "tuple",
4161            "internalType": "struct BN254.G1Point",
4162            "components": [
4163              {
4164                "name": "x",
4165                "type": "uint256",
4166                "internalType": "BN254.BaseField"
4167              },
4168              {
4169                "name": "y",
4170                "type": "uint256",
4171                "internalType": "BN254.BaseField"
4172              }
4173            ]
4174          },
4175          {
4176            "name": "split3",
4177            "type": "tuple",
4178            "internalType": "struct BN254.G1Point",
4179            "components": [
4180              {
4181                "name": "x",
4182                "type": "uint256",
4183                "internalType": "BN254.BaseField"
4184              },
4185              {
4186                "name": "y",
4187                "type": "uint256",
4188                "internalType": "BN254.BaseField"
4189              }
4190            ]
4191          },
4192          {
4193            "name": "split4",
4194            "type": "tuple",
4195            "internalType": "struct BN254.G1Point",
4196            "components": [
4197              {
4198                "name": "x",
4199                "type": "uint256",
4200                "internalType": "BN254.BaseField"
4201              },
4202              {
4203                "name": "y",
4204                "type": "uint256",
4205                "internalType": "BN254.BaseField"
4206              }
4207            ]
4208          },
4209          {
4210            "name": "zeta",
4211            "type": "tuple",
4212            "internalType": "struct BN254.G1Point",
4213            "components": [
4214              {
4215                "name": "x",
4216                "type": "uint256",
4217                "internalType": "BN254.BaseField"
4218              },
4219              {
4220                "name": "y",
4221                "type": "uint256",
4222                "internalType": "BN254.BaseField"
4223              }
4224            ]
4225          },
4226          {
4227            "name": "zetaOmega",
4228            "type": "tuple",
4229            "internalType": "struct BN254.G1Point",
4230            "components": [
4231              {
4232                "name": "x",
4233                "type": "uint256",
4234                "internalType": "BN254.BaseField"
4235              },
4236              {
4237                "name": "y",
4238                "type": "uint256",
4239                "internalType": "BN254.BaseField"
4240              }
4241            ]
4242          },
4243          {
4244            "name": "wireEval0",
4245            "type": "uint256",
4246            "internalType": "BN254.ScalarField"
4247          },
4248          {
4249            "name": "wireEval1",
4250            "type": "uint256",
4251            "internalType": "BN254.ScalarField"
4252          },
4253          {
4254            "name": "wireEval2",
4255            "type": "uint256",
4256            "internalType": "BN254.ScalarField"
4257          },
4258          {
4259            "name": "wireEval3",
4260            "type": "uint256",
4261            "internalType": "BN254.ScalarField"
4262          },
4263          {
4264            "name": "wireEval4",
4265            "type": "uint256",
4266            "internalType": "BN254.ScalarField"
4267          },
4268          {
4269            "name": "sigmaEval0",
4270            "type": "uint256",
4271            "internalType": "BN254.ScalarField"
4272          },
4273          {
4274            "name": "sigmaEval1",
4275            "type": "uint256",
4276            "internalType": "BN254.ScalarField"
4277          },
4278          {
4279            "name": "sigmaEval2",
4280            "type": "uint256",
4281            "internalType": "BN254.ScalarField"
4282          },
4283          {
4284            "name": "sigmaEval3",
4285            "type": "uint256",
4286            "internalType": "BN254.ScalarField"
4287          },
4288          {
4289            "name": "prodPermZetaOmegaEval",
4290            "type": "uint256",
4291            "internalType": "BN254.ScalarField"
4292          }
4293        ]
4294      }
4295    ],
4296    "outputs": [],
4297    "stateMutability": "nonpayable"
4298  },
4299  {
4300    "type": "function",
4301    "name": "owner",
4302    "inputs": [],
4303    "outputs": [
4304      {
4305        "name": "",
4306        "type": "address",
4307        "internalType": "address"
4308      }
4309    ],
4310    "stateMutability": "view"
4311  },
4312  {
4313    "type": "function",
4314    "name": "permissionedProver",
4315    "inputs": [],
4316    "outputs": [
4317      {
4318        "name": "",
4319        "type": "address",
4320        "internalType": "address"
4321      }
4322    ],
4323    "stateMutability": "view"
4324  },
4325  {
4326    "type": "function",
4327    "name": "proxiableUUID",
4328    "inputs": [],
4329    "outputs": [
4330      {
4331        "name": "",
4332        "type": "bytes32",
4333        "internalType": "bytes32"
4334      }
4335    ],
4336    "stateMutability": "view"
4337  },
4338  {
4339    "type": "function",
4340    "name": "renounceOwnership",
4341    "inputs": [],
4342    "outputs": [],
4343    "stateMutability": "nonpayable"
4344  },
4345  {
4346    "type": "function",
4347    "name": "setBlocksPerEpoch",
4348    "inputs": [
4349      {
4350        "name": "newBlocksPerEpoch",
4351        "type": "uint64",
4352        "internalType": "uint64"
4353      }
4354    ],
4355    "outputs": [],
4356    "stateMutability": "nonpayable"
4357  },
4358  {
4359    "type": "function",
4360    "name": "setFinalizedState",
4361    "inputs": [
4362      {
4363        "name": "state",
4364        "type": "tuple",
4365        "internalType": "struct LightClient.LightClientState",
4366        "components": [
4367          {
4368            "name": "viewNum",
4369            "type": "uint64",
4370            "internalType": "uint64"
4371          },
4372          {
4373            "name": "blockHeight",
4374            "type": "uint64",
4375            "internalType": "uint64"
4376          },
4377          {
4378            "name": "blockCommRoot",
4379            "type": "uint256",
4380            "internalType": "BN254.ScalarField"
4381          }
4382        ]
4383      }
4384    ],
4385    "outputs": [],
4386    "stateMutability": "nonpayable"
4387  },
4388  {
4389    "type": "function",
4390    "name": "setHotShotDownSince",
4391    "inputs": [
4392      {
4393        "name": "l1Height",
4394        "type": "uint256",
4395        "internalType": "uint256"
4396      }
4397    ],
4398    "outputs": [],
4399    "stateMutability": "nonpayable"
4400  },
4401  {
4402    "type": "function",
4403    "name": "setHotShotUp",
4404    "inputs": [],
4405    "outputs": [],
4406    "stateMutability": "nonpayable"
4407  },
4408  {
4409    "type": "function",
4410    "name": "setPermissionedProver",
4411    "inputs": [
4412      {
4413        "name": "prover",
4414        "type": "address",
4415        "internalType": "address"
4416      }
4417    ],
4418    "outputs": [],
4419    "stateMutability": "nonpayable"
4420  },
4421  {
4422    "type": "function",
4423    "name": "setStateHistory",
4424    "inputs": [
4425      {
4426        "name": "_stateHistoryCommitments",
4427        "type": "tuple[]",
4428        "internalType": "struct LightClient.StateHistoryCommitment[]",
4429        "components": [
4430          {
4431            "name": "l1BlockHeight",
4432            "type": "uint64",
4433            "internalType": "uint64"
4434          },
4435          {
4436            "name": "l1BlockTimestamp",
4437            "type": "uint64",
4438            "internalType": "uint64"
4439          },
4440          {
4441            "name": "hotShotBlockHeight",
4442            "type": "uint64",
4443            "internalType": "uint64"
4444          },
4445          {
4446            "name": "hotShotBlockCommRoot",
4447            "type": "uint256",
4448            "internalType": "BN254.ScalarField"
4449          }
4450        ]
4451      }
4452    ],
4453    "outputs": [],
4454    "stateMutability": "nonpayable"
4455  },
4456  {
4457    "type": "function",
4458    "name": "setStateHistoryRetentionPeriod",
4459    "inputs": [
4460      {
4461        "name": "historySeconds",
4462        "type": "uint32",
4463        "internalType": "uint32"
4464      }
4465    ],
4466    "outputs": [],
4467    "stateMutability": "nonpayable"
4468  },
4469  {
4470    "type": "function",
4471    "name": "setVotingStakeTableState",
4472    "inputs": [
4473      {
4474        "name": "stake",
4475        "type": "tuple",
4476        "internalType": "struct LightClient.StakeTableState",
4477        "components": [
4478          {
4479            "name": "threshold",
4480            "type": "uint256",
4481            "internalType": "uint256"
4482          },
4483          {
4484            "name": "blsKeyComm",
4485            "type": "uint256",
4486            "internalType": "BN254.ScalarField"
4487          },
4488          {
4489            "name": "schnorrKeyComm",
4490            "type": "uint256",
4491            "internalType": "BN254.ScalarField"
4492          },
4493          {
4494            "name": "amountComm",
4495            "type": "uint256",
4496            "internalType": "BN254.ScalarField"
4497          }
4498        ]
4499      }
4500    ],
4501    "outputs": [],
4502    "stateMutability": "nonpayable"
4503  },
4504  {
4505    "type": "function",
4506    "name": "setstateHistoryRetentionPeriod",
4507    "inputs": [
4508      {
4509        "name": "historySeconds",
4510        "type": "uint32",
4511        "internalType": "uint32"
4512      }
4513    ],
4514    "outputs": [],
4515    "stateMutability": "nonpayable"
4516  },
4517  {
4518    "type": "function",
4519    "name": "stateHistoryCommitments",
4520    "inputs": [
4521      {
4522        "name": "",
4523        "type": "uint256",
4524        "internalType": "uint256"
4525      }
4526    ],
4527    "outputs": [
4528      {
4529        "name": "l1BlockHeight",
4530        "type": "uint64",
4531        "internalType": "uint64"
4532      },
4533      {
4534        "name": "l1BlockTimestamp",
4535        "type": "uint64",
4536        "internalType": "uint64"
4537      },
4538      {
4539        "name": "hotShotBlockHeight",
4540        "type": "uint64",
4541        "internalType": "uint64"
4542      },
4543      {
4544        "name": "hotShotBlockCommRoot",
4545        "type": "uint256",
4546        "internalType": "BN254.ScalarField"
4547      }
4548    ],
4549    "stateMutability": "view"
4550  },
4551  {
4552    "type": "function",
4553    "name": "stateHistoryFirstIndex",
4554    "inputs": [],
4555    "outputs": [
4556      {
4557        "name": "",
4558        "type": "uint64",
4559        "internalType": "uint64"
4560      }
4561    ],
4562    "stateMutability": "view"
4563  },
4564  {
4565    "type": "function",
4566    "name": "stateHistoryRetentionPeriod",
4567    "inputs": [],
4568    "outputs": [
4569      {
4570        "name": "",
4571        "type": "uint32",
4572        "internalType": "uint32"
4573      }
4574    ],
4575    "stateMutability": "view"
4576  },
4577  {
4578    "type": "function",
4579    "name": "transferOwnership",
4580    "inputs": [
4581      {
4582        "name": "newOwner",
4583        "type": "address",
4584        "internalType": "address"
4585      }
4586    ],
4587    "outputs": [],
4588    "stateMutability": "nonpayable"
4589  },
4590  {
4591    "type": "function",
4592    "name": "updateEpochStartBlock",
4593    "inputs": [
4594      {
4595        "name": "newEpochStartBlock",
4596        "type": "uint64",
4597        "internalType": "uint64"
4598      }
4599    ],
4600    "outputs": [],
4601    "stateMutability": "nonpayable"
4602  },
4603  {
4604    "type": "function",
4605    "name": "upgradeToAndCall",
4606    "inputs": [
4607      {
4608        "name": "newImplementation",
4609        "type": "address",
4610        "internalType": "address"
4611      },
4612      {
4613        "name": "data",
4614        "type": "bytes",
4615        "internalType": "bytes"
4616      }
4617    ],
4618    "outputs": [],
4619    "stateMutability": "payable"
4620  },
4621  {
4622    "type": "function",
4623    "name": "votingStakeTableState",
4624    "inputs": [],
4625    "outputs": [
4626      {
4627        "name": "threshold",
4628        "type": "uint256",
4629        "internalType": "uint256"
4630      },
4631      {
4632        "name": "blsKeyComm",
4633        "type": "uint256",
4634        "internalType": "BN254.ScalarField"
4635      },
4636      {
4637        "name": "schnorrKeyComm",
4638        "type": "uint256",
4639        "internalType": "BN254.ScalarField"
4640      },
4641      {
4642        "name": "amountComm",
4643        "type": "uint256",
4644        "internalType": "BN254.ScalarField"
4645      }
4646    ],
4647    "stateMutability": "view"
4648  },
4649  {
4650    "type": "event",
4651    "name": "Initialized",
4652    "inputs": [
4653      {
4654        "name": "version",
4655        "type": "uint64",
4656        "indexed": false,
4657        "internalType": "uint64"
4658      }
4659    ],
4660    "anonymous": false
4661  },
4662  {
4663    "type": "event",
4664    "name": "NewEpoch",
4665    "inputs": [
4666      {
4667        "name": "epoch",
4668        "type": "uint64",
4669        "indexed": false,
4670        "internalType": "uint64"
4671      }
4672    ],
4673    "anonymous": false
4674  },
4675  {
4676    "type": "event",
4677    "name": "NewState",
4678    "inputs": [
4679      {
4680        "name": "viewNum",
4681        "type": "uint64",
4682        "indexed": true,
4683        "internalType": "uint64"
4684      },
4685      {
4686        "name": "blockHeight",
4687        "type": "uint64",
4688        "indexed": true,
4689        "internalType": "uint64"
4690      },
4691      {
4692        "name": "blockCommRoot",
4693        "type": "uint256",
4694        "indexed": false,
4695        "internalType": "BN254.ScalarField"
4696      }
4697    ],
4698    "anonymous": false
4699  },
4700  {
4701    "type": "event",
4702    "name": "OwnershipTransferred",
4703    "inputs": [
4704      {
4705        "name": "previousOwner",
4706        "type": "address",
4707        "indexed": true,
4708        "internalType": "address"
4709      },
4710      {
4711        "name": "newOwner",
4712        "type": "address",
4713        "indexed": true,
4714        "internalType": "address"
4715      }
4716    ],
4717    "anonymous": false
4718  },
4719  {
4720    "type": "event",
4721    "name": "PermissionedProverNotRequired",
4722    "inputs": [],
4723    "anonymous": false
4724  },
4725  {
4726    "type": "event",
4727    "name": "PermissionedProverRequired",
4728    "inputs": [
4729      {
4730        "name": "permissionedProver",
4731        "type": "address",
4732        "indexed": false,
4733        "internalType": "address"
4734      }
4735    ],
4736    "anonymous": false
4737  },
4738  {
4739    "type": "event",
4740    "name": "Upgrade",
4741    "inputs": [
4742      {
4743        "name": "implementation",
4744        "type": "address",
4745        "indexed": false,
4746        "internalType": "address"
4747      }
4748    ],
4749    "anonymous": false
4750  },
4751  {
4752    "type": "event",
4753    "name": "Upgraded",
4754    "inputs": [
4755      {
4756        "name": "implementation",
4757        "type": "address",
4758        "indexed": true,
4759        "internalType": "address"
4760      }
4761    ],
4762    "anonymous": false
4763  },
4764  {
4765    "type": "error",
4766    "name": "AddressEmptyCode",
4767    "inputs": [
4768      {
4769        "name": "target",
4770        "type": "address",
4771        "internalType": "address"
4772      }
4773    ]
4774  },
4775  {
4776    "type": "error",
4777    "name": "DeprecatedApi",
4778    "inputs": []
4779  },
4780  {
4781    "type": "error",
4782    "name": "ERC1967InvalidImplementation",
4783    "inputs": [
4784      {
4785        "name": "implementation",
4786        "type": "address",
4787        "internalType": "address"
4788      }
4789    ]
4790  },
4791  {
4792    "type": "error",
4793    "name": "ERC1967NonPayable",
4794    "inputs": []
4795  },
4796  {
4797    "type": "error",
4798    "name": "FailedInnerCall",
4799    "inputs": []
4800  },
4801  {
4802    "type": "error",
4803    "name": "InsufficientSnapshotHistory",
4804    "inputs": []
4805  },
4806  {
4807    "type": "error",
4808    "name": "InvalidAddress",
4809    "inputs": []
4810  },
4811  {
4812    "type": "error",
4813    "name": "InvalidArgs",
4814    "inputs": []
4815  },
4816  {
4817    "type": "error",
4818    "name": "InvalidHotShotBlockForCommitmentCheck",
4819    "inputs": []
4820  },
4821  {
4822    "type": "error",
4823    "name": "InvalidInitialization",
4824    "inputs": []
4825  },
4826  {
4827    "type": "error",
4828    "name": "InvalidMaxStateHistory",
4829    "inputs": []
4830  },
4831  {
4832    "type": "error",
4833    "name": "InvalidProof",
4834    "inputs": []
4835  },
4836  {
4837    "type": "error",
4838    "name": "MissingEpochRootUpdate",
4839    "inputs": []
4840  },
4841  {
4842    "type": "error",
4843    "name": "NoChangeRequired",
4844    "inputs": []
4845  },
4846  {
4847    "type": "error",
4848    "name": "NotInitializing",
4849    "inputs": []
4850  },
4851  {
4852    "type": "error",
4853    "name": "OutdatedState",
4854    "inputs": []
4855  },
4856  {
4857    "type": "error",
4858    "name": "OwnableInvalidOwner",
4859    "inputs": [
4860      {
4861        "name": "owner",
4862        "type": "address",
4863        "internalType": "address"
4864      }
4865    ]
4866  },
4867  {
4868    "type": "error",
4869    "name": "OwnableUnauthorizedAccount",
4870    "inputs": [
4871      {
4872        "name": "account",
4873        "type": "address",
4874        "internalType": "address"
4875      }
4876    ]
4877  },
4878  {
4879    "type": "error",
4880    "name": "ProverNotPermissioned",
4881    "inputs": []
4882  },
4883  {
4884    "type": "error",
4885    "name": "UUPSUnauthorizedCallContext",
4886    "inputs": []
4887  },
4888  {
4889    "type": "error",
4890    "name": "UUPSUnsupportedProxiableUUID",
4891    "inputs": [
4892      {
4893        "name": "slot",
4894        "type": "bytes32",
4895        "internalType": "bytes32"
4896      }
4897    ]
4898  },
4899  {
4900    "type": "error",
4901    "name": "WrongStakeTableUsed",
4902    "inputs": []
4903  }
4904]
4905```*/
4906#[allow(
4907    non_camel_case_types,
4908    non_snake_case,
4909    clippy::pub_underscore_fields,
4910    clippy::style,
4911    clippy::empty_structs_with_brackets
4912)]
4913pub mod LightClientV2Mock {
4914    use alloy::sol_types as alloy_sol_types;
4915
4916    use super::*;
4917    /// The creation / init bytecode of the contract.
4918    ///
4919    /// ```text
4920    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516138536100f95f395f8181611c4301528181611c6c0152611de901526138535ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b506102776102723660046129ff565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a18565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a2f565b34801561036f575f5ffd5b5061027761037e366004612c46565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f2a565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c46565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a18565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c46565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c46565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f71565b61117f565b61027761055e366004612f8a565b611193565b34801561056e575f5ffd5b5061049f6111b2565b348015610582575f5ffd5b50610277610591366004613070565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111cd565b3480156105ce575f5ffd5b5061027761123b565b3480156105e2575f5ffd5b506102776105f136600461308a565b61124c565b348015610601575f5ffd5b5061042361157f565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a18565b6115a9565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130ce565b6116d4565b3480156106cb575f5ffd5b506102776106da366004612f71565b611749565b3480156106ea575f5ffd5b506102776106f93660046130f6565b6117d2565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd919061314b565b34801561079b575f5ffd5b506102776107aa3660046130ce565b6118f4565b3480156107ba575f5ffd5b50610423611a58565b3480156107ce575f5ffd5b506102776107dd366004613180565b611a79565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e36600461319a565b611ac0565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc3660046129ff565b611af3565b3480156108cc575f5ffd5b506102776108db3660046131ba565b611b32565b3480156108eb575f5ffd5b5060095461049f565b6108fc611bdd565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f861271e565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611bdd565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d949190910481169281169116176116d4565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132c6565b6110fc91906132f9565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611155906005906001600160401b0316613326565b600a546001600160401b039182169161116f9116846132f9565b6001600160401b03161192915050565b611187611bdd565b61119081611749565b50565b61119b611c38565b6111a482611cdc565b6111ae8282611d1d565b5050565b5f6111bb611dde565b505f5160206138275f395f51905f5290565b6111d5611bdd565b6008546001600160a01b03161561122057600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611243611bdd565b6112395f611e27565b6008546001600160a01b03161515801561127157506008546001600160a01b03163314155b1561128f576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112c8575060065460208401516001600160401b03600160401b9092048216911611155b156112e65760405163051c46ef60e01b815260040160405180910390fd5b6112f38360400151611e97565b6113008260200151611e97565b61130d8260400151611e97565b61131a8260600151611e97565b5f61132361157f565b6020850151600a549192505f9161134391906001600160401b03166116d4565b600a549091506001600160401b03600160801b90910481169082161061138e576113708560200151611111565b1561138e5760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114415760026113b88383613326565b6001600160401b0316106113df5760405163080ae8d960e01b815260040160405180910390fd5b6113ea8260016132c6565b6001600160401b0316816001600160401b0316148015611423575060065461142190600160401b90046001600160401b03166110af565b155b156114415760405163080ae8d960e01b815260040160405180910390fd5b61144c858585611f07565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114ab57506114ab85602001516110af565b15611515578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6114f98260016132c6565b6040516001600160401b03909116815260200160405180910390a15b61152043428761207e565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6876040015160405161157091815260200190565b60405180910390a35050505050565b600654600a545f916115a4916001600160401b03600160401b909204821691166116d4565b905090565b600980545f918291906115bd600183613345565b815481106115cd576115cd613358565b5f918252602090912060029091020154600160801b90046001600160401b0316841061160c57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156116cd57846009828154811061163c5761163c613358565b5f918252602090912060029091020154600160801b90046001600160401b031611156116c5576009818154811061167557611675613358565b905f5260205f209060020201600101546009828154811061169857611698613358565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611620565b5050915091565b5f816001600160401b03165f036116ec57505f611743565b826001600160401b03165f0361170457506001611743565b61170e82846132f9565b6001600160401b03165f0361172e57611727828461336c565b9050611743565b611738828461336c565b6117279060016132c6565b92915050565b611751611bdd565b610e108163ffffffff16108061177057506301e133808163ffffffff16115b8061178e575060085463ffffffff600160a01b909104811690821611155b156117ac576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118165750825b90505f826001600160401b031660011480156118315750303b155b90508115801561183f575080155b1561185d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561188757845460ff60401b1916600160401b1785555b61189086612267565b611898612278565b6118a3898989612280565b83156118e957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061193d575080546001600160401b03808416911610155b1561195b5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119a3576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556119ec83856116d4565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115a4906001600160401b03600160401b8204811691166116d4565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561119043428361207e565b600f545f9060ff16611adb57611ad683836123ac565b611aec565b8160105484611aea9190613345565b115b9392505050565b611afb611bdd565b6001600160a01b038116611b2957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61119081611e27565b611b3d60095f612983565b5f5b81518110156111ae576009828281518110611b5c57611b5c613358565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b3f565b33611c0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112395760405163118cdaa760e01b8152336004820152602401611b20565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cbe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cb25f5160206138275f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112395760405163703e46dd60e11b815260040160405180910390fd5b611ce4611bdd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d77575060408051601f3d908101601f19168201909252611d7491810190613399565b60015b611d9f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b20565b5f5160206138275f395f51905f528114611dcf57604051632a87526960e21b815260048101829052602401611b20565b611dd98383612504565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112395760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111ae5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611b20565b5f611f106109f0565b9050611f1a6129a1565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f8a5750611f8a85602001516110af565b15611fbc57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611fe0565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c79061201b90859085908890600401613592565b602060405180830381865af4158015612036573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205a91906137b2565b612077576040516309bde33960e01b815260040160405180910390fd5b5050505050565b600954158015906120f3575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106120be576120be613358565b5f9182526020909120600290910201546120e890600160401b90046001600160401b031684613326565b6001600160401b0316115b1561218657600854600980549091600160c01b90046001600160401b031690811061212057612120613358565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612160836137d1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b61226f612559565b611190816125a2565b611239612559565b82516001600160401b03161515806122a4575060208301516001600160401b031615155b806122b157506020820151155b806122be57506040820151155b806122cb57506060820151155b806122d557508151155b806122e75750610e108163ffffffff16105b806122fb57506301e133808163ffffffff16115b15612319576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f90438411806123bd575080155b806124075750600854600980549091600160c01b90046001600160401b03169081106123eb576123eb613358565b5f9182526020909120600290910201546001600160401b031684105b156124255760405163b0b4387760e01b815260040160405180910390fd5b5f8080612433600185613345565b90505b816124cf57600854600160c01b90046001600160401b031681106124cf57866009828154811061246857612468613358565b5f9182526020909120600290910201546001600160401b0316116124bd57600191506009818154811061249d5761249d613358565b5f9182526020909120600290910201546001600160401b031692506124cf565b806124c7816137fb565b915050612436565b816124ed5760405163b0b4387760e01b815260040160405180910390fd5b856124f88489613345565b11979650505050505050565b61250d826125aa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255157611dd9828261260d565b6111ae61267f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661123957604051631afcd79f60e31b815260040160405180910390fd5b611afb612559565b806001600160a01b03163b5f036125df57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b20565b5f5160206138275f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516126299190613810565b5f60405180830381855af49150503d805f8114612661576040519150601f19603f3d011682016040523d82523d5f602084013e612666565b606091505b509150915061267685838361269e565b95945050505050565b34156112395760405163b398979f60e01b815260040160405180910390fd5b6060826126ae57611ad6826126f5565b81511580156126c557506001600160a01b0384163b155b156126ee57604051639996b31560e01b81526001600160a01b0385166004820152602401611b20565b5092915050565b8051156127055780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275160405180604001604052805f81526020015f81525090565b815260200161277160405180604001604052805f81526020015f81525090565b815260200161279160405180604001604052805f81526020015f81525090565b81526020016127b160405180604001604052805f81526020015f81525090565b81526020016127d160405180604001604052805f81526020015f81525090565b81526020016127f160405180604001604052805f81526020015f81525090565b815260200161281160405180604001604052805f81526020015f81525090565b815260200161283160405180604001604052805f81526020015f81525090565b815260200161285160405180604001604052805f81526020015f81525090565b815260200161287160405180604001604052805f81526020015f81525090565b815260200161289160405180604001604052805f81526020015f81525090565b81526020016128b160405180604001604052805f81526020015f81525090565b81526020016128d160405180604001604052805f81526020015f81525090565b81526020016128f160405180604001604052805f81526020015f81525090565b815260200161291160405180604001604052805f81526020015f81525090565b815260200161293160405180604001604052805f81526020015f81525090565b815260200161295160405180604001604052805f81526020015f81525090565b815260200161297160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061119091906129c0565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129e55780546001600160c01b03191681555f60018201556002016129c1565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a0f575f5ffd5b611aec826129e9565b5f60208284031215612a28575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a61604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c56575f5ffd5b611aec82612c30565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c9657612c96612c5f565b60405290565b604051608081016001600160401b0381118282101715612c9657612c96612c5f565b604051601f8201601f191681016001600160401b0381118282101715612ce657612ce6612c5f565b604052919050565b5f60608284031215612cfe575f5ffd5b604051606081016001600160401b0381118282101715612d2057612d20612c5f565b604052905080612d2f83612c30565b8152612d3d60208401612c30565b6020820152604092830135920191909152919050565b5f60408284031215612d63575f5ffd5b604080519081016001600160401b0381118282101715612d8557612d85612c5f565b604052823581526020928301359281019290925250919050565b5f6104808284031215612db0575f5ffd5b612db8612c73565b9050612dc48383612d53565b8152612dd38360408401612d53565b6020820152612de58360808401612d53565b6040820152612df78360c08401612d53565b6060820152612e0a836101008401612d53565b6080820152612e1d836101408401612d53565b60a0820152612e30836101808401612d53565b60c0820152612e43836101c08401612d53565b60e0820152612e56836102008401612d53565b610100820152612e6a836102408401612d53565b610120820152612e7e836102808401612d53565b610140820152612e92836102c08401612d53565b610160820152612ea6836103008401612d53565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f3c575f5ffd5b612f468484612cee565b9150612f558460608501612d9f565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f81575f5ffd5b611aec82612f5e565b5f5f60408385031215612f9b575f5ffd5b612fa4836129e9565b915060208301356001600160401b03811115612fbe575f5ffd5b8301601f81018513612fce575f5ffd5b80356001600160401b03811115612fe757612fe7612c5f565b612ffa601f8201601f1916602001612cbe565b81815286602083850101111561300e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561303d575f5ffd5b613045612c9c565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613080575f5ffd5b611aec838361302d565b5f5f5f610560848603121561309d575f5ffd5b6130a78585612cee565b92506130b6856060860161302d565b91506130c58560e08601612d9f565b90509250925092565b5f5f604083850312156130df575f5ffd5b6130e883612c30565b9150612f5560208401612c30565b5f5f5f5f610120858703121561310a575f5ffd5b6131148686612cee565b9350613123866060870161302d565b925061313160e08601612f5e565b915061314061010086016129e9565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60608284031215613190575f5ffd5b611aec8383612cee565b5f5f604083850312156131ab575f5ffd5b50508035926020909101359150565b5f602082840312156131ca575f5ffd5b81356001600160401b038111156131df575f5ffd5b8201601f810184136131ef575f5ffd5b80356001600160401b0381111561320857613208612c5f565b61321760208260051b01612cbe565b8082825260208201915060208360071b850101925086831115613238575f5ffd5b6020840193505b828410156132a85760808488031215613256575f5ffd5b61325e612c9c565b61326785612c30565b815261327560208601612c30565b602082015261328660408601612c30565b604082015260608581013590820152825260809093019260209091019061323f565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611743576117436132b2565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613311576133116132e5565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611743576117436132b2565b81810381811115611743576117436132b2565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613384576133846132e5565b806001600160401b0384160491505092915050565b5f602082840312156133a9575f5ffd5b5051919050565b805f5b600b8110156133d25781518452602093840193909101906001016133b3565b50505050565b6133ed82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135c4604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261379c6105008301856133b0565b6137aa6106608301846133d8565b949350505050565b5f602082840312156137c2575f5ffd5b81518015158114611aec575f5ffd5b5f6001600160401b0382166001600160401b0381036137f2576137f26132b2565b60010192915050565b5f81613809576138096132b2565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4921    /// ```
4922    #[rustfmt::skip]
4923    #[allow(clippy::all)]
4924    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4925        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[`\x80Qa8Sa\0\xF9_9_\x81\x81a\x1CC\x01R\x81\x81a\x1Cl\x01Ra\x1D\xE9\x01Ra8S_\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)\xFFV[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\x18V[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*/V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,FV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/*V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,FV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\x18V[`\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,FV[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,FV[`\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/qV[a\x11\x7FV[a\x02wa\x05^6`\x04a/\x8AV[a\x11\x93V[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xB2V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0pV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xCDV[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12;V[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\x8AV[a\x12LV[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\x7FV[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*\x18V[a\x15\xA9V[`@\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\xCEV[a\x16\xD4V[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/qV[a\x17IV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a0\xF6V[a\x17\xD2V[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\x90a1KV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xCEV[a\x18\xF4V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1AXV[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\x80V[a\x1AyV[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\x9AV[a\x1A\xC0V[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)\xFFV[a\x1A\xF3V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xBAV[a\x1B2V[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1B\xDDV[`\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'\x1EV[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\xDDV[`\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\xD4V[`\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\xC6V[a\x10\xFC\x91\x90a2\xF9V[`\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\x11U\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3&V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11o\x91\x16\x84a2\xF9V[`\x01`\x01`@\x1B\x03\x16\x11\x92\x91PPV[a\x11\x87a\x1B\xDDV[a\x11\x90\x81a\x17IV[PV[a\x11\x9Ba\x1C8V[a\x11\xA4\x82a\x1C\xDCV[a\x11\xAE\x82\x82a\x1D\x1DV[PPV[_a\x11\xBBa\x1D\xDEV[P_Q` a8'_9_Q\x90_R\x90V[a\x11\xD5a\x1B\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12 W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x12Ca\x1B\xDDV[a\x129_a\x1E'V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12qWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\x8FW`@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\xC8WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x12\xE6W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\xF3\x83`@\x01Qa\x1E\x97V[a\x13\0\x82` \x01Qa\x1E\x97V[a\x13\r\x82`@\x01Qa\x1E\x97V[a\x13\x1A\x82``\x01Qa\x1E\x97V[_a\x13#a\x15\x7FV[` \x85\x01Q`\nT\x91\x92P_\x91a\x13C\x91\x90`\x01`\x01`@\x1B\x03\x16a\x16\xD4V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\x8EWa\x13p\x85` \x01Qa\x11\x11V[\x15a\x13\x8EW`@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\x14AW`\x02a\x13\xB8\x83\x83a3&V[`\x01`\x01`@\x1B\x03\x16\x10a\x13\xDFW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\xEA\x82`\x01a2\xC6V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14#WP`\x06Ta\x14!\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14AW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14L\x85\x85\x85a\x1F\x07V[\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\xABWPa\x14\xAB\x85` \x01Qa\x10\xAFV[\x15a\x15\x15W\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\x14\xF9\x82`\x01a2\xC6V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15 CB\x87a ~V[\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\x15p\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xA4\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x16\xD4V[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xBD`\x01\x83a3EV[\x81T\x81\x10a\x15\xCDWa\x15\xCDa3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x16\x0CW`@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\xCDW\x84`\t\x82\x81T\x81\x10a\x16<Wa\x16<a3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xC5W`\t\x81\x81T\x81\x10a\x16uWa\x16ua3XV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\x98Wa\x16\x98a3XV[\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\x16 V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x16\xECWP_a\x17CV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17\x04WP`\x01a\x17CV[a\x17\x0E\x82\x84a2\xF9V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17.Wa\x17'\x82\x84a3lV[\x90Pa\x17CV[a\x178\x82\x84a3lV[a\x17'\x90`\x01a2\xC6V[\x92\x91PPV[a\x17Qa\x1B\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17pWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\x8EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xACW`@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\x18\x16WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x181WP0;\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\x87W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\x90\x86a\"gV[a\x18\x98a\"xV[a\x18\xA3\x89\x89\x89a\"\x80V[\x83\x15a\x18\xE9W\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\xA3W`@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\x19\xEC\x83\x85a\x16\xD4V[`\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\xA4\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x16\xD4V[\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\x90CB\x83a ~V[`\x0FT_\x90`\xFF\x16a\x1A\xDBWa\x1A\xD6\x83\x83a#\xACV[a\x1A\xECV[\x81`\x10T\x84a\x1A\xEA\x91\x90a3EV[\x11[\x93\x92PPPV[a\x1A\xFBa\x1B\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1B)W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\x90\x81a\x1E'V[a\x1B=`\t_a)\x83V[_[\x81Q\x81\x10\x15a\x11\xAEW`\t\x82\x82\x81Q\x81\x10a\x1B\\Wa\x1B\\a3XV[` \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\x1C\x0F\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\x129W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1B V[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\xBEWP\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\xB2_Q` a8'_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x129W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\xE4a\x1B\xDDV[`@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\x1DwWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Dt\x91\x81\x01\x90a3\x99V[`\x01[a\x1D\x9FW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1B V[_Q` a8'_9_Q\x90_R\x81\x14a\x1D\xCFW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1B V[a\x1D\xD9\x83\x83a%\x04V[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\x129W`@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\xAEW`@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\x1B V[_a\x1F\x10a\t\xF0V[\x90Pa\x1F\x1Aa)\xA1V[\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\x8AWPa\x1F\x8A\x85` \x01Qa\x10\xAFV[\x15a\x1F\xBCW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F\xE0V[`\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 \x1B\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x92V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a 6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a Z\x91\x90a7\xB2V[a wW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \xF3WP`\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 \xBEWa \xBEa3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \xE8\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3&V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a!\x86W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a! Wa! a3XV[_\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!`\x83a7\xD1V[\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\"oa%YV[a\x11\x90\x81a%\xA2V[a\x129a%YV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\"\xA4WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\xB1WP` \x82\x01Q\x15[\x80a\"\xBEWP`@\x82\x01Q\x15[\x80a\"\xCBWP``\x82\x01Q\x15[\x80a\"\xD5WP\x81Q\x15[\x80a\"\xE7WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\xFBWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a#\x19W`@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#\xBDWP\x80\x15[\x80a$\x07WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xEBWa#\xEBa3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a$%W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a$3`\x01\x85a3EV[\x90P[\x81a$\xCFW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$\xCFW\x86`\t\x82\x81T\x81\x10a$hWa$ha3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$\xBDW`\x01\x91P`\t\x81\x81T\x81\x10a$\x9DWa$\x9Da3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$\xCFV[\x80a$\xC7\x81a7\xFBV[\x91PPa$6V[\x81a$\xEDW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\xF8\x84\x89a3EV[\x11\x97\x96PPPPPPPV[a%\r\x82a%\xAAV[`@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%QWa\x1D\xD9\x82\x82a&\rV[a\x11\xAEa&\x7FV[\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\x129W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xFBa%YV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xDFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1B V[_Q` a8'_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&)\x91\x90a8\x10V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&aW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&fV[``\x91P[P\x91P\x91Pa&v\x85\x83\x83a&\x9EV[\x95\x94PPPPPV[4\x15a\x129W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xAEWa\x1A\xD6\x82a&\xF5V[\x81Q\x15\x80\x15a&\xC5WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xEEW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1B V[P\x92\x91PPV[\x80Q\x15a'\x05W\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'Q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)Q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)q`@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\x90\x91\x90a)\xC0V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xE5W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xC1V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x0FW__\xFD[a\x1A\xEC\x82a)\xE9V[_` \x82\x84\x03\x12\x15a*(W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*a`@\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,VW__\xFD[a\x1A\xEC\x82a,0V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x96Wa,\x96a,_V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x96Wa,\x96a,_V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xE6Wa,\xE6a,_V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a,\xFEW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a- Wa- a,_V[`@R\x90P\x80a-/\x83a,0V[\x81Ra-=` \x84\x01a,0V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-cW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x85Wa-\x85a,_V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xB0W__\xFD[a-\xB8a,sV[\x90Pa-\xC4\x83\x83a-SV[\x81Ra-\xD3\x83`@\x84\x01a-SV[` \x82\x01Ra-\xE5\x83`\x80\x84\x01a-SV[`@\x82\x01Ra-\xF7\x83`\xC0\x84\x01a-SV[``\x82\x01Ra.\n\x83a\x01\0\x84\x01a-SV[`\x80\x82\x01Ra.\x1D\x83a\x01@\x84\x01a-SV[`\xA0\x82\x01Ra.0\x83a\x01\x80\x84\x01a-SV[`\xC0\x82\x01Ra.C\x83a\x01\xC0\x84\x01a-SV[`\xE0\x82\x01Ra.V\x83a\x02\0\x84\x01a-SV[a\x01\0\x82\x01Ra.j\x83a\x02@\x84\x01a-SV[a\x01 \x82\x01Ra.~\x83a\x02\x80\x84\x01a-SV[a\x01@\x82\x01Ra.\x92\x83a\x02\xC0\x84\x01a-SV[a\x01`\x82\x01Ra.\xA6\x83a\x03\0\x84\x01a-SV[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/F\x84\x84a,\xEEV[\x91Pa/U\x84``\x85\x01a-\x9FV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x81W__\xFD[a\x1A\xEC\x82a/^V[__`@\x83\x85\x03\x12\x15a/\x9BW__\xFD[a/\xA4\x83a)\xE9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xBEW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xCEW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE7Wa/\xE7a,_V[a/\xFA`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xBEV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x0EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0=W__\xFD[a0Ea,\x9CV[\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\x80W__\xFD[a\x1A\xEC\x83\x83a0-V[___a\x05`\x84\x86\x03\x12\x15a0\x9DW__\xFD[a0\xA7\x85\x85a,\xEEV[\x92Pa0\xB6\x85``\x86\x01a0-V[\x91Pa0\xC5\x85`\xE0\x86\x01a-\x9FV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xDFW__\xFD[a0\xE8\x83a,0V[\x91Pa/U` \x84\x01a,0V[____a\x01 \x85\x87\x03\x12\x15a1\nW__\xFD[a1\x14\x86\x86a,\xEEV[\x93Pa1#\x86``\x87\x01a0-V[\x92Pa11`\xE0\x86\x01a/^V[\x91Pa1@a\x01\0\x86\x01a)\xE9V[\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\x90W__\xFD[a\x1A\xEC\x83\x83a,\xEEV[__`@\x83\x85\x03\x12\x15a1\xABW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xCAW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDFW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xEFW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x08Wa2\x08a,_V[a2\x17` \x82`\x05\x1B\x01a,\xBEV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a28W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xA8W`\x80\x84\x88\x03\x12\x15a2VW__\xFD[a2^a,\x9CV[a2g\x85a,0V[\x81Ra2u` \x86\x01a,0V[` \x82\x01Ra2\x86`@\x86\x01a,0V[`@\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\x17CWa\x17Ca2\xB2V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x11Wa3\x11a2\xE5V[\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\x17CWa\x17Ca2\xB2V[\x81\x81\x03\x81\x81\x11\x15a\x17CWa\x17Ca2\xB2V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x84Wa3\x84a2\xE5V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xA9W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xD2W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xB3V[PPPPV[a3\xED\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\xC4`@\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\x9Ca\x05\0\x83\x01\x85a3\xB0V[a7\xAAa\x06`\x83\x01\x84a3\xD8V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xC2W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1A\xECW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xF2Wa7\xF2a2\xB2V[`\x01\x01\x92\x91PPV[_\x81a8\tWa8\ta2\xB2V[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",
4926    );
4927    /// The runtime bytecode of the contract, as deployed on the network.
4928    ///
4929    /// ```text
4930    ///0x608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b506102776102723660046129ff565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a18565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a2f565b34801561036f575f5ffd5b5061027761037e366004612c46565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f2a565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c46565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a18565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c46565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c46565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f71565b61117f565b61027761055e366004612f8a565b611193565b34801561056e575f5ffd5b5061049f6111b2565b348015610582575f5ffd5b50610277610591366004613070565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111cd565b3480156105ce575f5ffd5b5061027761123b565b3480156105e2575f5ffd5b506102776105f136600461308a565b61124c565b348015610601575f5ffd5b5061042361157f565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a18565b6115a9565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130ce565b6116d4565b3480156106cb575f5ffd5b506102776106da366004612f71565b611749565b3480156106ea575f5ffd5b506102776106f93660046130f6565b6117d2565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd919061314b565b34801561079b575f5ffd5b506102776107aa3660046130ce565b6118f4565b3480156107ba575f5ffd5b50610423611a58565b3480156107ce575f5ffd5b506102776107dd366004613180565b611a79565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e36600461319a565b611ac0565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc3660046129ff565b611af3565b3480156108cc575f5ffd5b506102776108db3660046131ba565b611b32565b3480156108eb575f5ffd5b5060095461049f565b6108fc611bdd565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f861271e565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611bdd565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d949190910481169281169116176116d4565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132c6565b6110fc91906132f9565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611155906005906001600160401b0316613326565b600a546001600160401b039182169161116f9116846132f9565b6001600160401b03161192915050565b611187611bdd565b61119081611749565b50565b61119b611c38565b6111a482611cdc565b6111ae8282611d1d565b5050565b5f6111bb611dde565b505f5160206138275f395f51905f5290565b6111d5611bdd565b6008546001600160a01b03161561122057600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611243611bdd565b6112395f611e27565b6008546001600160a01b03161515801561127157506008546001600160a01b03163314155b1561128f576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112c8575060065460208401516001600160401b03600160401b9092048216911611155b156112e65760405163051c46ef60e01b815260040160405180910390fd5b6112f38360400151611e97565b6113008260200151611e97565b61130d8260400151611e97565b61131a8260600151611e97565b5f61132361157f565b6020850151600a549192505f9161134391906001600160401b03166116d4565b600a549091506001600160401b03600160801b90910481169082161061138e576113708560200151611111565b1561138e5760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114415760026113b88383613326565b6001600160401b0316106113df5760405163080ae8d960e01b815260040160405180910390fd5b6113ea8260016132c6565b6001600160401b0316816001600160401b0316148015611423575060065461142190600160401b90046001600160401b03166110af565b155b156114415760405163080ae8d960e01b815260040160405180910390fd5b61144c858585611f07565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114ab57506114ab85602001516110af565b15611515578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6114f98260016132c6565b6040516001600160401b03909116815260200160405180910390a15b61152043428761207e565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6876040015160405161157091815260200190565b60405180910390a35050505050565b600654600a545f916115a4916001600160401b03600160401b909204821691166116d4565b905090565b600980545f918291906115bd600183613345565b815481106115cd576115cd613358565b5f918252602090912060029091020154600160801b90046001600160401b0316841061160c57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156116cd57846009828154811061163c5761163c613358565b5f918252602090912060029091020154600160801b90046001600160401b031611156116c5576009818154811061167557611675613358565b905f5260205f209060020201600101546009828154811061169857611698613358565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611620565b5050915091565b5f816001600160401b03165f036116ec57505f611743565b826001600160401b03165f0361170457506001611743565b61170e82846132f9565b6001600160401b03165f0361172e57611727828461336c565b9050611743565b611738828461336c565b6117279060016132c6565b92915050565b611751611bdd565b610e108163ffffffff16108061177057506301e133808163ffffffff16115b8061178e575060085463ffffffff600160a01b909104811690821611155b156117ac576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118165750825b90505f826001600160401b031660011480156118315750303b155b90508115801561183f575080155b1561185d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561188757845460ff60401b1916600160401b1785555b61189086612267565b611898612278565b6118a3898989612280565b83156118e957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061193d575080546001600160401b03808416911610155b1561195b5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119a3576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556119ec83856116d4565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115a4906001600160401b03600160401b8204811691166116d4565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561119043428361207e565b600f545f9060ff16611adb57611ad683836123ac565b611aec565b8160105484611aea9190613345565b115b9392505050565b611afb611bdd565b6001600160a01b038116611b2957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61119081611e27565b611b3d60095f612983565b5f5b81518110156111ae576009828281518110611b5c57611b5c613358565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b3f565b33611c0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112395760405163118cdaa760e01b8152336004820152602401611b20565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cbe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cb25f5160206138275f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112395760405163703e46dd60e11b815260040160405180910390fd5b611ce4611bdd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d77575060408051601f3d908101601f19168201909252611d7491810190613399565b60015b611d9f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b20565b5f5160206138275f395f51905f528114611dcf57604051632a87526960e21b815260048101829052602401611b20565b611dd98383612504565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112395760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111ae5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611b20565b5f611f106109f0565b9050611f1a6129a1565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f8a5750611f8a85602001516110af565b15611fbc57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611fe0565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c79061201b90859085908890600401613592565b602060405180830381865af4158015612036573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205a91906137b2565b612077576040516309bde33960e01b815260040160405180910390fd5b5050505050565b600954158015906120f3575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106120be576120be613358565b5f9182526020909120600290910201546120e890600160401b90046001600160401b031684613326565b6001600160401b0316115b1561218657600854600980549091600160c01b90046001600160401b031690811061212057612120613358565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612160836137d1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b61226f612559565b611190816125a2565b611239612559565b82516001600160401b03161515806122a4575060208301516001600160401b031615155b806122b157506020820151155b806122be57506040820151155b806122cb57506060820151155b806122d557508151155b806122e75750610e108163ffffffff16105b806122fb57506301e133808163ffffffff16115b15612319576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f90438411806123bd575080155b806124075750600854600980549091600160c01b90046001600160401b03169081106123eb576123eb613358565b5f9182526020909120600290910201546001600160401b031684105b156124255760405163b0b4387760e01b815260040160405180910390fd5b5f8080612433600185613345565b90505b816124cf57600854600160c01b90046001600160401b031681106124cf57866009828154811061246857612468613358565b5f9182526020909120600290910201546001600160401b0316116124bd57600191506009818154811061249d5761249d613358565b5f9182526020909120600290910201546001600160401b031692506124cf565b806124c7816137fb565b915050612436565b816124ed5760405163b0b4387760e01b815260040160405180910390fd5b856124f88489613345565b11979650505050505050565b61250d826125aa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255157611dd9828261260d565b6111ae61267f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661123957604051631afcd79f60e31b815260040160405180910390fd5b611afb612559565b806001600160a01b03163b5f036125df57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b20565b5f5160206138275f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516126299190613810565b5f60405180830381855af49150503d805f8114612661576040519150601f19603f3d011682016040523d82523d5f602084013e612666565b606091505b509150915061267685838361269e565b95945050505050565b34156112395760405163b398979f60e01b815260040160405180910390fd5b6060826126ae57611ad6826126f5565b81511580156126c557506001600160a01b0384163b155b156126ee57604051639996b31560e01b81526001600160a01b0385166004820152602401611b20565b5092915050565b8051156127055780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275160405180604001604052805f81526020015f81525090565b815260200161277160405180604001604052805f81526020015f81525090565b815260200161279160405180604001604052805f81526020015f81525090565b81526020016127b160405180604001604052805f81526020015f81525090565b81526020016127d160405180604001604052805f81526020015f81525090565b81526020016127f160405180604001604052805f81526020015f81525090565b815260200161281160405180604001604052805f81526020015f81525090565b815260200161283160405180604001604052805f81526020015f81525090565b815260200161285160405180604001604052805f81526020015f81525090565b815260200161287160405180604001604052805f81526020015f81525090565b815260200161289160405180604001604052805f81526020015f81525090565b81526020016128b160405180604001604052805f81526020015f81525090565b81526020016128d160405180604001604052805f81526020015f81525090565b81526020016128f160405180604001604052805f81526020015f81525090565b815260200161291160405180604001604052805f81526020015f81525090565b815260200161293160405180604001604052805f81526020015f81525090565b815260200161295160405180604001604052805f81526020015f81525090565b815260200161297160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061119091906129c0565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129e55780546001600160c01b03191681555f60018201556002016129c1565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a0f575f5ffd5b611aec826129e9565b5f60208284031215612a28575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a61604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c56575f5ffd5b611aec82612c30565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c9657612c96612c5f565b60405290565b604051608081016001600160401b0381118282101715612c9657612c96612c5f565b604051601f8201601f191681016001600160401b0381118282101715612ce657612ce6612c5f565b604052919050565b5f60608284031215612cfe575f5ffd5b604051606081016001600160401b0381118282101715612d2057612d20612c5f565b604052905080612d2f83612c30565b8152612d3d60208401612c30565b6020820152604092830135920191909152919050565b5f60408284031215612d63575f5ffd5b604080519081016001600160401b0381118282101715612d8557612d85612c5f565b604052823581526020928301359281019290925250919050565b5f6104808284031215612db0575f5ffd5b612db8612c73565b9050612dc48383612d53565b8152612dd38360408401612d53565b6020820152612de58360808401612d53565b6040820152612df78360c08401612d53565b6060820152612e0a836101008401612d53565b6080820152612e1d836101408401612d53565b60a0820152612e30836101808401612d53565b60c0820152612e43836101c08401612d53565b60e0820152612e56836102008401612d53565b610100820152612e6a836102408401612d53565b610120820152612e7e836102808401612d53565b610140820152612e92836102c08401612d53565b610160820152612ea6836103008401612d53565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f3c575f5ffd5b612f468484612cee565b9150612f558460608501612d9f565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f81575f5ffd5b611aec82612f5e565b5f5f60408385031215612f9b575f5ffd5b612fa4836129e9565b915060208301356001600160401b03811115612fbe575f5ffd5b8301601f81018513612fce575f5ffd5b80356001600160401b03811115612fe757612fe7612c5f565b612ffa601f8201601f1916602001612cbe565b81815286602083850101111561300e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561303d575f5ffd5b613045612c9c565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613080575f5ffd5b611aec838361302d565b5f5f5f610560848603121561309d575f5ffd5b6130a78585612cee565b92506130b6856060860161302d565b91506130c58560e08601612d9f565b90509250925092565b5f5f604083850312156130df575f5ffd5b6130e883612c30565b9150612f5560208401612c30565b5f5f5f5f610120858703121561310a575f5ffd5b6131148686612cee565b9350613123866060870161302d565b925061313160e08601612f5e565b915061314061010086016129e9565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60608284031215613190575f5ffd5b611aec8383612cee565b5f5f604083850312156131ab575f5ffd5b50508035926020909101359150565b5f602082840312156131ca575f5ffd5b81356001600160401b038111156131df575f5ffd5b8201601f810184136131ef575f5ffd5b80356001600160401b0381111561320857613208612c5f565b61321760208260051b01612cbe565b8082825260208201915060208360071b850101925086831115613238575f5ffd5b6020840193505b828410156132a85760808488031215613256575f5ffd5b61325e612c9c565b61326785612c30565b815261327560208601612c30565b602082015261328660408601612c30565b604082015260608581013590820152825260809093019260209091019061323f565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611743576117436132b2565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613311576133116132e5565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611743576117436132b2565b81810381811115611743576117436132b2565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613384576133846132e5565b806001600160401b0384160491505092915050565b5f602082840312156133a9575f5ffd5b5051919050565b805f5b600b8110156133d25781518452602093840193909101906001016133b3565b50505050565b6133ed82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135c4604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261379c6105008301856133b0565b6137aa6106608301846133d8565b949350505050565b5f602082840312156137c2575f5ffd5b81518015158114611aec575f5ffd5b5f6001600160401b0382166001600160401b0381036137f2576137f26132b2565b60010192915050565b5f81613809576138096132b2565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4931    /// ```
4932    #[rustfmt::skip]
4933    #[allow(clippy::all)]
4934    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4935        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)\xFFV[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\x18V[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*/V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,FV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/*V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,FV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\x18V[`\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,FV[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,FV[`\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/qV[a\x11\x7FV[a\x02wa\x05^6`\x04a/\x8AV[a\x11\x93V[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xB2V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0pV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xCDV[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12;V[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\x8AV[a\x12LV[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\x7FV[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*\x18V[a\x15\xA9V[`@\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\xCEV[a\x16\xD4V[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/qV[a\x17IV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a0\xF6V[a\x17\xD2V[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\x90a1KV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xCEV[a\x18\xF4V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1AXV[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\x80V[a\x1AyV[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\x9AV[a\x1A\xC0V[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)\xFFV[a\x1A\xF3V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xBAV[a\x1B2V[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1B\xDDV[`\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'\x1EV[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\xDDV[`\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\xD4V[`\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\xC6V[a\x10\xFC\x91\x90a2\xF9V[`\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\x11U\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3&V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11o\x91\x16\x84a2\xF9V[`\x01`\x01`@\x1B\x03\x16\x11\x92\x91PPV[a\x11\x87a\x1B\xDDV[a\x11\x90\x81a\x17IV[PV[a\x11\x9Ba\x1C8V[a\x11\xA4\x82a\x1C\xDCV[a\x11\xAE\x82\x82a\x1D\x1DV[PPV[_a\x11\xBBa\x1D\xDEV[P_Q` a8'_9_Q\x90_R\x90V[a\x11\xD5a\x1B\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12 W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x12Ca\x1B\xDDV[a\x129_a\x1E'V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12qWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\x8FW`@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\xC8WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x12\xE6W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\xF3\x83`@\x01Qa\x1E\x97V[a\x13\0\x82` \x01Qa\x1E\x97V[a\x13\r\x82`@\x01Qa\x1E\x97V[a\x13\x1A\x82``\x01Qa\x1E\x97V[_a\x13#a\x15\x7FV[` \x85\x01Q`\nT\x91\x92P_\x91a\x13C\x91\x90`\x01`\x01`@\x1B\x03\x16a\x16\xD4V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\x8EWa\x13p\x85` \x01Qa\x11\x11V[\x15a\x13\x8EW`@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\x14AW`\x02a\x13\xB8\x83\x83a3&V[`\x01`\x01`@\x1B\x03\x16\x10a\x13\xDFW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\xEA\x82`\x01a2\xC6V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14#WP`\x06Ta\x14!\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14AW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14L\x85\x85\x85a\x1F\x07V[\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\xABWPa\x14\xAB\x85` \x01Qa\x10\xAFV[\x15a\x15\x15W\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\x14\xF9\x82`\x01a2\xC6V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15 CB\x87a ~V[\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\x15p\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xA4\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x16\xD4V[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xBD`\x01\x83a3EV[\x81T\x81\x10a\x15\xCDWa\x15\xCDa3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x16\x0CW`@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\xCDW\x84`\t\x82\x81T\x81\x10a\x16<Wa\x16<a3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xC5W`\t\x81\x81T\x81\x10a\x16uWa\x16ua3XV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\x98Wa\x16\x98a3XV[\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\x16 V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x16\xECWP_a\x17CV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17\x04WP`\x01a\x17CV[a\x17\x0E\x82\x84a2\xF9V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17.Wa\x17'\x82\x84a3lV[\x90Pa\x17CV[a\x178\x82\x84a3lV[a\x17'\x90`\x01a2\xC6V[\x92\x91PPV[a\x17Qa\x1B\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17pWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\x8EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xACW`@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\x18\x16WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x181WP0;\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\x87W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\x90\x86a\"gV[a\x18\x98a\"xV[a\x18\xA3\x89\x89\x89a\"\x80V[\x83\x15a\x18\xE9W\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\xA3W`@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\x19\xEC\x83\x85a\x16\xD4V[`\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\xA4\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x16\xD4V[\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\x90CB\x83a ~V[`\x0FT_\x90`\xFF\x16a\x1A\xDBWa\x1A\xD6\x83\x83a#\xACV[a\x1A\xECV[\x81`\x10T\x84a\x1A\xEA\x91\x90a3EV[\x11[\x93\x92PPPV[a\x1A\xFBa\x1B\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1B)W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\x90\x81a\x1E'V[a\x1B=`\t_a)\x83V[_[\x81Q\x81\x10\x15a\x11\xAEW`\t\x82\x82\x81Q\x81\x10a\x1B\\Wa\x1B\\a3XV[` \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\x1C\x0F\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\x129W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1B V[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\xBEWP\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\xB2_Q` a8'_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x129W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\xE4a\x1B\xDDV[`@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\x1DwWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Dt\x91\x81\x01\x90a3\x99V[`\x01[a\x1D\x9FW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1B V[_Q` a8'_9_Q\x90_R\x81\x14a\x1D\xCFW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1B V[a\x1D\xD9\x83\x83a%\x04V[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\x129W`@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\xAEW`@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\x1B V[_a\x1F\x10a\t\xF0V[\x90Pa\x1F\x1Aa)\xA1V[\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\x8AWPa\x1F\x8A\x85` \x01Qa\x10\xAFV[\x15a\x1F\xBCW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F\xE0V[`\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 \x1B\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x92V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a 6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a Z\x91\x90a7\xB2V[a wW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \xF3WP`\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 \xBEWa \xBEa3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \xE8\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3&V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a!\x86W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a! Wa! a3XV[_\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!`\x83a7\xD1V[\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\"oa%YV[a\x11\x90\x81a%\xA2V[a\x129a%YV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\"\xA4WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\xB1WP` \x82\x01Q\x15[\x80a\"\xBEWP`@\x82\x01Q\x15[\x80a\"\xCBWP``\x82\x01Q\x15[\x80a\"\xD5WP\x81Q\x15[\x80a\"\xE7WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\xFBWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a#\x19W`@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#\xBDWP\x80\x15[\x80a$\x07WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xEBWa#\xEBa3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a$%W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a$3`\x01\x85a3EV[\x90P[\x81a$\xCFW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$\xCFW\x86`\t\x82\x81T\x81\x10a$hWa$ha3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$\xBDW`\x01\x91P`\t\x81\x81T\x81\x10a$\x9DWa$\x9Da3XV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$\xCFV[\x80a$\xC7\x81a7\xFBV[\x91PPa$6V[\x81a$\xEDW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\xF8\x84\x89a3EV[\x11\x97\x96PPPPPPPV[a%\r\x82a%\xAAV[`@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%QWa\x1D\xD9\x82\x82a&\rV[a\x11\xAEa&\x7FV[\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\x129W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xFBa%YV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xDFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1B V[_Q` a8'_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&)\x91\x90a8\x10V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&aW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&fV[``\x91P[P\x91P\x91Pa&v\x85\x83\x83a&\x9EV[\x95\x94PPPPPV[4\x15a\x129W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xAEWa\x1A\xD6\x82a&\xF5V[\x81Q\x15\x80\x15a&\xC5WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xEEW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1B V[P\x92\x91PPV[\x80Q\x15a'\x05W\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'Q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)Q`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)q`@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\x90\x91\x90a)\xC0V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xE5W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xC1V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x0FW__\xFD[a\x1A\xEC\x82a)\xE9V[_` \x82\x84\x03\x12\x15a*(W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*a`@\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,VW__\xFD[a\x1A\xEC\x82a,0V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x96Wa,\x96a,_V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x96Wa,\x96a,_V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xE6Wa,\xE6a,_V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a,\xFEW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a- Wa- a,_V[`@R\x90P\x80a-/\x83a,0V[\x81Ra-=` \x84\x01a,0V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-cW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x85Wa-\x85a,_V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xB0W__\xFD[a-\xB8a,sV[\x90Pa-\xC4\x83\x83a-SV[\x81Ra-\xD3\x83`@\x84\x01a-SV[` \x82\x01Ra-\xE5\x83`\x80\x84\x01a-SV[`@\x82\x01Ra-\xF7\x83`\xC0\x84\x01a-SV[``\x82\x01Ra.\n\x83a\x01\0\x84\x01a-SV[`\x80\x82\x01Ra.\x1D\x83a\x01@\x84\x01a-SV[`\xA0\x82\x01Ra.0\x83a\x01\x80\x84\x01a-SV[`\xC0\x82\x01Ra.C\x83a\x01\xC0\x84\x01a-SV[`\xE0\x82\x01Ra.V\x83a\x02\0\x84\x01a-SV[a\x01\0\x82\x01Ra.j\x83a\x02@\x84\x01a-SV[a\x01 \x82\x01Ra.~\x83a\x02\x80\x84\x01a-SV[a\x01@\x82\x01Ra.\x92\x83a\x02\xC0\x84\x01a-SV[a\x01`\x82\x01Ra.\xA6\x83a\x03\0\x84\x01a-SV[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/F\x84\x84a,\xEEV[\x91Pa/U\x84``\x85\x01a-\x9FV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x81W__\xFD[a\x1A\xEC\x82a/^V[__`@\x83\x85\x03\x12\x15a/\x9BW__\xFD[a/\xA4\x83a)\xE9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xBEW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xCEW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE7Wa/\xE7a,_V[a/\xFA`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xBEV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x0EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0=W__\xFD[a0Ea,\x9CV[\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\x80W__\xFD[a\x1A\xEC\x83\x83a0-V[___a\x05`\x84\x86\x03\x12\x15a0\x9DW__\xFD[a0\xA7\x85\x85a,\xEEV[\x92Pa0\xB6\x85``\x86\x01a0-V[\x91Pa0\xC5\x85`\xE0\x86\x01a-\x9FV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xDFW__\xFD[a0\xE8\x83a,0V[\x91Pa/U` \x84\x01a,0V[____a\x01 \x85\x87\x03\x12\x15a1\nW__\xFD[a1\x14\x86\x86a,\xEEV[\x93Pa1#\x86``\x87\x01a0-V[\x92Pa11`\xE0\x86\x01a/^V[\x91Pa1@a\x01\0\x86\x01a)\xE9V[\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\x90W__\xFD[a\x1A\xEC\x83\x83a,\xEEV[__`@\x83\x85\x03\x12\x15a1\xABW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xCAW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDFW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xEFW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x08Wa2\x08a,_V[a2\x17` \x82`\x05\x1B\x01a,\xBEV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a28W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xA8W`\x80\x84\x88\x03\x12\x15a2VW__\xFD[a2^a,\x9CV[a2g\x85a,0V[\x81Ra2u` \x86\x01a,0V[` \x82\x01Ra2\x86`@\x86\x01a,0V[`@\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\x17CWa\x17Ca2\xB2V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x11Wa3\x11a2\xE5V[\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\x17CWa\x17Ca2\xB2V[\x81\x81\x03\x81\x81\x11\x15a\x17CWa\x17Ca2\xB2V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x84Wa3\x84a2\xE5V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xA9W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xD2W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xB3V[PPPPV[a3\xED\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\xC4`@\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\x9Ca\x05\0\x83\x01\x85a3\xB0V[a7\xAAa\x06`\x83\x01\x84a3\xD8V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xC2W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1A\xECW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xF2Wa7\xF2a2\xB2V[`\x01\x01\x92\x91PPV[_\x81a8\tWa8\ta2\xB2V[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",
4936    );
4937    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4938    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4939    ```solidity
4940    error AddressEmptyCode(address target);
4941    ```*/
4942    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4943    #[derive(Clone)]
4944    pub struct AddressEmptyCode {
4945        #[allow(missing_docs)]
4946        pub target: alloy::sol_types::private::Address,
4947    }
4948    #[allow(
4949        non_camel_case_types,
4950        non_snake_case,
4951        clippy::pub_underscore_fields,
4952        clippy::style
4953    )]
4954    const _: () = {
4955        use alloy::sol_types as alloy_sol_types;
4956        #[doc(hidden)]
4957        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4958        #[doc(hidden)]
4959        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4960        #[cfg(test)]
4961        #[allow(dead_code, unreachable_patterns)]
4962        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4963            match _t {
4964                alloy_sol_types::private::AssertTypeEq::<
4965                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4966                >(_) => {},
4967            }
4968        }
4969        #[automatically_derived]
4970        #[doc(hidden)]
4971        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4972            fn from(value: AddressEmptyCode) -> Self {
4973                (value.target,)
4974            }
4975        }
4976        #[automatically_derived]
4977        #[doc(hidden)]
4978        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4979            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4980                Self { target: tuple.0 }
4981            }
4982        }
4983        #[automatically_derived]
4984        impl alloy_sol_types::SolError for AddressEmptyCode {
4985            type Parameters<'a> = UnderlyingSolTuple<'a>;
4986            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4987            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4988            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4989            #[inline]
4990            fn new<'a>(
4991                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4992            ) -> Self {
4993                tuple.into()
4994            }
4995            #[inline]
4996            fn tokenize(&self) -> Self::Token<'_> {
4997                (
4998                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4999                        &self.target,
5000                    ),
5001                )
5002            }
5003        }
5004    };
5005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5006    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5007    ```solidity
5008    error DeprecatedApi();
5009    ```*/
5010    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5011    #[derive(Clone)]
5012    pub struct DeprecatedApi {}
5013    #[allow(
5014        non_camel_case_types,
5015        non_snake_case,
5016        clippy::pub_underscore_fields,
5017        clippy::style
5018    )]
5019    const _: () = {
5020        use alloy::sol_types as alloy_sol_types;
5021        #[doc(hidden)]
5022        type UnderlyingSolTuple<'a> = ();
5023        #[doc(hidden)]
5024        type UnderlyingRustTuple<'a> = ();
5025        #[cfg(test)]
5026        #[allow(dead_code, unreachable_patterns)]
5027        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5028            match _t {
5029                alloy_sol_types::private::AssertTypeEq::<
5030                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5031                >(_) => {},
5032            }
5033        }
5034        #[automatically_derived]
5035        #[doc(hidden)]
5036        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5037            fn from(value: DeprecatedApi) -> Self {
5038                ()
5039            }
5040        }
5041        #[automatically_derived]
5042        #[doc(hidden)]
5043        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5044            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5045                Self {}
5046            }
5047        }
5048        #[automatically_derived]
5049        impl alloy_sol_types::SolError for DeprecatedApi {
5050            type Parameters<'a> = UnderlyingSolTuple<'a>;
5051            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5052            const SIGNATURE: &'static str = "DeprecatedApi()";
5053            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5054            #[inline]
5055            fn new<'a>(
5056                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5057            ) -> Self {
5058                tuple.into()
5059            }
5060            #[inline]
5061            fn tokenize(&self) -> Self::Token<'_> {
5062                ()
5063            }
5064        }
5065    };
5066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5067    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5068    ```solidity
5069    error ERC1967InvalidImplementation(address implementation);
5070    ```*/
5071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5072    #[derive(Clone)]
5073    pub struct ERC1967InvalidImplementation {
5074        #[allow(missing_docs)]
5075        pub implementation: alloy::sol_types::private::Address,
5076    }
5077    #[allow(
5078        non_camel_case_types,
5079        non_snake_case,
5080        clippy::pub_underscore_fields,
5081        clippy::style
5082    )]
5083    const _: () = {
5084        use alloy::sol_types as alloy_sol_types;
5085        #[doc(hidden)]
5086        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5087        #[doc(hidden)]
5088        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5089        #[cfg(test)]
5090        #[allow(dead_code, unreachable_patterns)]
5091        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5092            match _t {
5093                alloy_sol_types::private::AssertTypeEq::<
5094                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5095                >(_) => {},
5096            }
5097        }
5098        #[automatically_derived]
5099        #[doc(hidden)]
5100        impl ::core::convert::From<ERC1967InvalidImplementation> for UnderlyingRustTuple<'_> {
5101            fn from(value: ERC1967InvalidImplementation) -> Self {
5102                (value.implementation,)
5103            }
5104        }
5105        #[automatically_derived]
5106        #[doc(hidden)]
5107        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967InvalidImplementation {
5108            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5109                Self {
5110                    implementation: tuple.0,
5111                }
5112            }
5113        }
5114        #[automatically_derived]
5115        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5116            type Parameters<'a> = UnderlyingSolTuple<'a>;
5117            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5118            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5119            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5120            #[inline]
5121            fn new<'a>(
5122                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5123            ) -> Self {
5124                tuple.into()
5125            }
5126            #[inline]
5127            fn tokenize(&self) -> Self::Token<'_> {
5128                (
5129                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5130                        &self.implementation,
5131                    ),
5132                )
5133            }
5134        }
5135    };
5136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5137    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5138    ```solidity
5139    error ERC1967NonPayable();
5140    ```*/
5141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5142    #[derive(Clone)]
5143    pub struct ERC1967NonPayable {}
5144    #[allow(
5145        non_camel_case_types,
5146        non_snake_case,
5147        clippy::pub_underscore_fields,
5148        clippy::style
5149    )]
5150    const _: () = {
5151        use alloy::sol_types as alloy_sol_types;
5152        #[doc(hidden)]
5153        type UnderlyingSolTuple<'a> = ();
5154        #[doc(hidden)]
5155        type UnderlyingRustTuple<'a> = ();
5156        #[cfg(test)]
5157        #[allow(dead_code, unreachable_patterns)]
5158        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5159            match _t {
5160                alloy_sol_types::private::AssertTypeEq::<
5161                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5162                >(_) => {},
5163            }
5164        }
5165        #[automatically_derived]
5166        #[doc(hidden)]
5167        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5168            fn from(value: ERC1967NonPayable) -> Self {
5169                ()
5170            }
5171        }
5172        #[automatically_derived]
5173        #[doc(hidden)]
5174        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5175            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5176                Self {}
5177            }
5178        }
5179        #[automatically_derived]
5180        impl alloy_sol_types::SolError for ERC1967NonPayable {
5181            type Parameters<'a> = UnderlyingSolTuple<'a>;
5182            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5183            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5184            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5185            #[inline]
5186            fn new<'a>(
5187                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5188            ) -> Self {
5189                tuple.into()
5190            }
5191            #[inline]
5192            fn tokenize(&self) -> Self::Token<'_> {
5193                ()
5194            }
5195        }
5196    };
5197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5198    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5199    ```solidity
5200    error FailedInnerCall();
5201    ```*/
5202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5203    #[derive(Clone)]
5204    pub struct FailedInnerCall {}
5205    #[allow(
5206        non_camel_case_types,
5207        non_snake_case,
5208        clippy::pub_underscore_fields,
5209        clippy::style
5210    )]
5211    const _: () = {
5212        use alloy::sol_types as alloy_sol_types;
5213        #[doc(hidden)]
5214        type UnderlyingSolTuple<'a> = ();
5215        #[doc(hidden)]
5216        type UnderlyingRustTuple<'a> = ();
5217        #[cfg(test)]
5218        #[allow(dead_code, unreachable_patterns)]
5219        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5220            match _t {
5221                alloy_sol_types::private::AssertTypeEq::<
5222                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5223                >(_) => {},
5224            }
5225        }
5226        #[automatically_derived]
5227        #[doc(hidden)]
5228        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5229            fn from(value: FailedInnerCall) -> Self {
5230                ()
5231            }
5232        }
5233        #[automatically_derived]
5234        #[doc(hidden)]
5235        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5236            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5237                Self {}
5238            }
5239        }
5240        #[automatically_derived]
5241        impl alloy_sol_types::SolError for FailedInnerCall {
5242            type Parameters<'a> = UnderlyingSolTuple<'a>;
5243            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5244            const SIGNATURE: &'static str = "FailedInnerCall()";
5245            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5246            #[inline]
5247            fn new<'a>(
5248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5249            ) -> Self {
5250                tuple.into()
5251            }
5252            #[inline]
5253            fn tokenize(&self) -> Self::Token<'_> {
5254                ()
5255            }
5256        }
5257    };
5258    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5259    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5260    ```solidity
5261    error InsufficientSnapshotHistory();
5262    ```*/
5263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5264    #[derive(Clone)]
5265    pub struct InsufficientSnapshotHistory {}
5266    #[allow(
5267        non_camel_case_types,
5268        non_snake_case,
5269        clippy::pub_underscore_fields,
5270        clippy::style
5271    )]
5272    const _: () = {
5273        use alloy::sol_types as alloy_sol_types;
5274        #[doc(hidden)]
5275        type UnderlyingSolTuple<'a> = ();
5276        #[doc(hidden)]
5277        type UnderlyingRustTuple<'a> = ();
5278        #[cfg(test)]
5279        #[allow(dead_code, unreachable_patterns)]
5280        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5281            match _t {
5282                alloy_sol_types::private::AssertTypeEq::<
5283                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5284                >(_) => {},
5285            }
5286        }
5287        #[automatically_derived]
5288        #[doc(hidden)]
5289        impl ::core::convert::From<InsufficientSnapshotHistory> for UnderlyingRustTuple<'_> {
5290            fn from(value: InsufficientSnapshotHistory) -> Self {
5291                ()
5292            }
5293        }
5294        #[automatically_derived]
5295        #[doc(hidden)]
5296        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientSnapshotHistory {
5297            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5298                Self {}
5299            }
5300        }
5301        #[automatically_derived]
5302        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5303            type Parameters<'a> = UnderlyingSolTuple<'a>;
5304            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5305            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5306            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5307            #[inline]
5308            fn new<'a>(
5309                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5310            ) -> Self {
5311                tuple.into()
5312            }
5313            #[inline]
5314            fn tokenize(&self) -> Self::Token<'_> {
5315                ()
5316            }
5317        }
5318    };
5319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5320    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5321    ```solidity
5322    error InvalidAddress();
5323    ```*/
5324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5325    #[derive(Clone)]
5326    pub struct InvalidAddress {}
5327    #[allow(
5328        non_camel_case_types,
5329        non_snake_case,
5330        clippy::pub_underscore_fields,
5331        clippy::style
5332    )]
5333    const _: () = {
5334        use alloy::sol_types as alloy_sol_types;
5335        #[doc(hidden)]
5336        type UnderlyingSolTuple<'a> = ();
5337        #[doc(hidden)]
5338        type UnderlyingRustTuple<'a> = ();
5339        #[cfg(test)]
5340        #[allow(dead_code, unreachable_patterns)]
5341        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5342            match _t {
5343                alloy_sol_types::private::AssertTypeEq::<
5344                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5345                >(_) => {},
5346            }
5347        }
5348        #[automatically_derived]
5349        #[doc(hidden)]
5350        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5351            fn from(value: InvalidAddress) -> Self {
5352                ()
5353            }
5354        }
5355        #[automatically_derived]
5356        #[doc(hidden)]
5357        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5358            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5359                Self {}
5360            }
5361        }
5362        #[automatically_derived]
5363        impl alloy_sol_types::SolError for InvalidAddress {
5364            type Parameters<'a> = UnderlyingSolTuple<'a>;
5365            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5366            const SIGNATURE: &'static str = "InvalidAddress()";
5367            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5368            #[inline]
5369            fn new<'a>(
5370                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5371            ) -> Self {
5372                tuple.into()
5373            }
5374            #[inline]
5375            fn tokenize(&self) -> Self::Token<'_> {
5376                ()
5377            }
5378        }
5379    };
5380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5381    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5382    ```solidity
5383    error InvalidArgs();
5384    ```*/
5385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5386    #[derive(Clone)]
5387    pub struct InvalidArgs {}
5388    #[allow(
5389        non_camel_case_types,
5390        non_snake_case,
5391        clippy::pub_underscore_fields,
5392        clippy::style
5393    )]
5394    const _: () = {
5395        use alloy::sol_types as alloy_sol_types;
5396        #[doc(hidden)]
5397        type UnderlyingSolTuple<'a> = ();
5398        #[doc(hidden)]
5399        type UnderlyingRustTuple<'a> = ();
5400        #[cfg(test)]
5401        #[allow(dead_code, unreachable_patterns)]
5402        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5403            match _t {
5404                alloy_sol_types::private::AssertTypeEq::<
5405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5406                >(_) => {},
5407            }
5408        }
5409        #[automatically_derived]
5410        #[doc(hidden)]
5411        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5412            fn from(value: InvalidArgs) -> Self {
5413                ()
5414            }
5415        }
5416        #[automatically_derived]
5417        #[doc(hidden)]
5418        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5419            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5420                Self {}
5421            }
5422        }
5423        #[automatically_derived]
5424        impl alloy_sol_types::SolError for InvalidArgs {
5425            type Parameters<'a> = UnderlyingSolTuple<'a>;
5426            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5427            const SIGNATURE: &'static str = "InvalidArgs()";
5428            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5429            #[inline]
5430            fn new<'a>(
5431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5432            ) -> Self {
5433                tuple.into()
5434            }
5435            #[inline]
5436            fn tokenize(&self) -> Self::Token<'_> {
5437                ()
5438            }
5439        }
5440    };
5441    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5442    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5443    ```solidity
5444    error InvalidHotShotBlockForCommitmentCheck();
5445    ```*/
5446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5447    #[derive(Clone)]
5448    pub struct InvalidHotShotBlockForCommitmentCheck {}
5449    #[allow(
5450        non_camel_case_types,
5451        non_snake_case,
5452        clippy::pub_underscore_fields,
5453        clippy::style
5454    )]
5455    const _: () = {
5456        use alloy::sol_types as alloy_sol_types;
5457        #[doc(hidden)]
5458        type UnderlyingSolTuple<'a> = ();
5459        #[doc(hidden)]
5460        type UnderlyingRustTuple<'a> = ();
5461        #[cfg(test)]
5462        #[allow(dead_code, unreachable_patterns)]
5463        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5464            match _t {
5465                alloy_sol_types::private::AssertTypeEq::<
5466                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5467                >(_) => {},
5468            }
5469        }
5470        #[automatically_derived]
5471        #[doc(hidden)]
5472        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck> for UnderlyingRustTuple<'_> {
5473            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5474                ()
5475            }
5476        }
5477        #[automatically_derived]
5478        #[doc(hidden)]
5479        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidHotShotBlockForCommitmentCheck {
5480            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5481                Self {}
5482            }
5483        }
5484        #[automatically_derived]
5485        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5486            type Parameters<'a> = UnderlyingSolTuple<'a>;
5487            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5488            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5489            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5490            #[inline]
5491            fn new<'a>(
5492                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5493            ) -> Self {
5494                tuple.into()
5495            }
5496            #[inline]
5497            fn tokenize(&self) -> Self::Token<'_> {
5498                ()
5499            }
5500        }
5501    };
5502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5503    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5504    ```solidity
5505    error InvalidInitialization();
5506    ```*/
5507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5508    #[derive(Clone)]
5509    pub struct InvalidInitialization {}
5510    #[allow(
5511        non_camel_case_types,
5512        non_snake_case,
5513        clippy::pub_underscore_fields,
5514        clippy::style
5515    )]
5516    const _: () = {
5517        use alloy::sol_types as alloy_sol_types;
5518        #[doc(hidden)]
5519        type UnderlyingSolTuple<'a> = ();
5520        #[doc(hidden)]
5521        type UnderlyingRustTuple<'a> = ();
5522        #[cfg(test)]
5523        #[allow(dead_code, unreachable_patterns)]
5524        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5525            match _t {
5526                alloy_sol_types::private::AssertTypeEq::<
5527                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5528                >(_) => {},
5529            }
5530        }
5531        #[automatically_derived]
5532        #[doc(hidden)]
5533        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5534            fn from(value: InvalidInitialization) -> Self {
5535                ()
5536            }
5537        }
5538        #[automatically_derived]
5539        #[doc(hidden)]
5540        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5541            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5542                Self {}
5543            }
5544        }
5545        #[automatically_derived]
5546        impl alloy_sol_types::SolError for InvalidInitialization {
5547            type Parameters<'a> = UnderlyingSolTuple<'a>;
5548            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5549            const SIGNATURE: &'static str = "InvalidInitialization()";
5550            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5551            #[inline]
5552            fn new<'a>(
5553                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5554            ) -> Self {
5555                tuple.into()
5556            }
5557            #[inline]
5558            fn tokenize(&self) -> Self::Token<'_> {
5559                ()
5560            }
5561        }
5562    };
5563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5564    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5565    ```solidity
5566    error InvalidMaxStateHistory();
5567    ```*/
5568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5569    #[derive(Clone)]
5570    pub struct InvalidMaxStateHistory {}
5571    #[allow(
5572        non_camel_case_types,
5573        non_snake_case,
5574        clippy::pub_underscore_fields,
5575        clippy::style
5576    )]
5577    const _: () = {
5578        use alloy::sol_types as alloy_sol_types;
5579        #[doc(hidden)]
5580        type UnderlyingSolTuple<'a> = ();
5581        #[doc(hidden)]
5582        type UnderlyingRustTuple<'a> = ();
5583        #[cfg(test)]
5584        #[allow(dead_code, unreachable_patterns)]
5585        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5586            match _t {
5587                alloy_sol_types::private::AssertTypeEq::<
5588                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5589                >(_) => {},
5590            }
5591        }
5592        #[automatically_derived]
5593        #[doc(hidden)]
5594        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5595            fn from(value: InvalidMaxStateHistory) -> Self {
5596                ()
5597            }
5598        }
5599        #[automatically_derived]
5600        #[doc(hidden)]
5601        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5602            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5603                Self {}
5604            }
5605        }
5606        #[automatically_derived]
5607        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5608            type Parameters<'a> = UnderlyingSolTuple<'a>;
5609            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5610            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5611            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5612            #[inline]
5613            fn new<'a>(
5614                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5615            ) -> Self {
5616                tuple.into()
5617            }
5618            #[inline]
5619            fn tokenize(&self) -> Self::Token<'_> {
5620                ()
5621            }
5622        }
5623    };
5624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5625    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5626    ```solidity
5627    error InvalidProof();
5628    ```*/
5629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5630    #[derive(Clone)]
5631    pub struct InvalidProof {}
5632    #[allow(
5633        non_camel_case_types,
5634        non_snake_case,
5635        clippy::pub_underscore_fields,
5636        clippy::style
5637    )]
5638    const _: () = {
5639        use alloy::sol_types as alloy_sol_types;
5640        #[doc(hidden)]
5641        type UnderlyingSolTuple<'a> = ();
5642        #[doc(hidden)]
5643        type UnderlyingRustTuple<'a> = ();
5644        #[cfg(test)]
5645        #[allow(dead_code, unreachable_patterns)]
5646        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
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<InvalidProof> for UnderlyingRustTuple<'_> {
5656            fn from(value: InvalidProof) -> Self {
5657                ()
5658            }
5659        }
5660        #[automatically_derived]
5661        #[doc(hidden)]
5662        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5663            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5664                Self {}
5665            }
5666        }
5667        #[automatically_derived]
5668        impl alloy_sol_types::SolError for InvalidProof {
5669            type Parameters<'a> = UnderlyingSolTuple<'a>;
5670            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5671            const SIGNATURE: &'static str = "InvalidProof()";
5672            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5673            #[inline]
5674            fn new<'a>(
5675                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5676            ) -> Self {
5677                tuple.into()
5678            }
5679            #[inline]
5680            fn tokenize(&self) -> Self::Token<'_> {
5681                ()
5682            }
5683        }
5684    };
5685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5686    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5687    ```solidity
5688    error MissingEpochRootUpdate();
5689    ```*/
5690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5691    #[derive(Clone)]
5692    pub struct MissingEpochRootUpdate {}
5693    #[allow(
5694        non_camel_case_types,
5695        non_snake_case,
5696        clippy::pub_underscore_fields,
5697        clippy::style
5698    )]
5699    const _: () = {
5700        use alloy::sol_types as alloy_sol_types;
5701        #[doc(hidden)]
5702        type UnderlyingSolTuple<'a> = ();
5703        #[doc(hidden)]
5704        type UnderlyingRustTuple<'a> = ();
5705        #[cfg(test)]
5706        #[allow(dead_code, unreachable_patterns)]
5707        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5708            match _t {
5709                alloy_sol_types::private::AssertTypeEq::<
5710                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5711                >(_) => {},
5712            }
5713        }
5714        #[automatically_derived]
5715        #[doc(hidden)]
5716        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5717            fn from(value: MissingEpochRootUpdate) -> Self {
5718                ()
5719            }
5720        }
5721        #[automatically_derived]
5722        #[doc(hidden)]
5723        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5724            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5725                Self {}
5726            }
5727        }
5728        #[automatically_derived]
5729        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5730            type Parameters<'a> = UnderlyingSolTuple<'a>;
5731            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5732            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5733            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5734            #[inline]
5735            fn new<'a>(
5736                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5737            ) -> Self {
5738                tuple.into()
5739            }
5740            #[inline]
5741            fn tokenize(&self) -> Self::Token<'_> {
5742                ()
5743            }
5744        }
5745    };
5746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5747    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5748    ```solidity
5749    error NoChangeRequired();
5750    ```*/
5751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5752    #[derive(Clone)]
5753    pub struct NoChangeRequired {}
5754    #[allow(
5755        non_camel_case_types,
5756        non_snake_case,
5757        clippy::pub_underscore_fields,
5758        clippy::style
5759    )]
5760    const _: () = {
5761        use alloy::sol_types as alloy_sol_types;
5762        #[doc(hidden)]
5763        type UnderlyingSolTuple<'a> = ();
5764        #[doc(hidden)]
5765        type UnderlyingRustTuple<'a> = ();
5766        #[cfg(test)]
5767        #[allow(dead_code, unreachable_patterns)]
5768        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5769            match _t {
5770                alloy_sol_types::private::AssertTypeEq::<
5771                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5772                >(_) => {},
5773            }
5774        }
5775        #[automatically_derived]
5776        #[doc(hidden)]
5777        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5778            fn from(value: NoChangeRequired) -> Self {
5779                ()
5780            }
5781        }
5782        #[automatically_derived]
5783        #[doc(hidden)]
5784        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5785            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5786                Self {}
5787            }
5788        }
5789        #[automatically_derived]
5790        impl alloy_sol_types::SolError for NoChangeRequired {
5791            type Parameters<'a> = UnderlyingSolTuple<'a>;
5792            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5793            const SIGNATURE: &'static str = "NoChangeRequired()";
5794            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5795            #[inline]
5796            fn new<'a>(
5797                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5798            ) -> Self {
5799                tuple.into()
5800            }
5801            #[inline]
5802            fn tokenize(&self) -> Self::Token<'_> {
5803                ()
5804            }
5805        }
5806    };
5807    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5808    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5809    ```solidity
5810    error NotInitializing();
5811    ```*/
5812    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5813    #[derive(Clone)]
5814    pub struct NotInitializing {}
5815    #[allow(
5816        non_camel_case_types,
5817        non_snake_case,
5818        clippy::pub_underscore_fields,
5819        clippy::style
5820    )]
5821    const _: () = {
5822        use alloy::sol_types as alloy_sol_types;
5823        #[doc(hidden)]
5824        type UnderlyingSolTuple<'a> = ();
5825        #[doc(hidden)]
5826        type UnderlyingRustTuple<'a> = ();
5827        #[cfg(test)]
5828        #[allow(dead_code, unreachable_patterns)]
5829        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5830            match _t {
5831                alloy_sol_types::private::AssertTypeEq::<
5832                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5833                >(_) => {},
5834            }
5835        }
5836        #[automatically_derived]
5837        #[doc(hidden)]
5838        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5839            fn from(value: NotInitializing) -> Self {
5840                ()
5841            }
5842        }
5843        #[automatically_derived]
5844        #[doc(hidden)]
5845        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5846            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5847                Self {}
5848            }
5849        }
5850        #[automatically_derived]
5851        impl alloy_sol_types::SolError for NotInitializing {
5852            type Parameters<'a> = UnderlyingSolTuple<'a>;
5853            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5854            const SIGNATURE: &'static str = "NotInitializing()";
5855            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5856            #[inline]
5857            fn new<'a>(
5858                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5859            ) -> Self {
5860                tuple.into()
5861            }
5862            #[inline]
5863            fn tokenize(&self) -> Self::Token<'_> {
5864                ()
5865            }
5866        }
5867    };
5868    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5869    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5870    ```solidity
5871    error OutdatedState();
5872    ```*/
5873    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5874    #[derive(Clone)]
5875    pub struct OutdatedState {}
5876    #[allow(
5877        non_camel_case_types,
5878        non_snake_case,
5879        clippy::pub_underscore_fields,
5880        clippy::style
5881    )]
5882    const _: () = {
5883        use alloy::sol_types as alloy_sol_types;
5884        #[doc(hidden)]
5885        type UnderlyingSolTuple<'a> = ();
5886        #[doc(hidden)]
5887        type UnderlyingRustTuple<'a> = ();
5888        #[cfg(test)]
5889        #[allow(dead_code, unreachable_patterns)]
5890        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5891            match _t {
5892                alloy_sol_types::private::AssertTypeEq::<
5893                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5894                >(_) => {},
5895            }
5896        }
5897        #[automatically_derived]
5898        #[doc(hidden)]
5899        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5900            fn from(value: OutdatedState) -> Self {
5901                ()
5902            }
5903        }
5904        #[automatically_derived]
5905        #[doc(hidden)]
5906        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5907            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5908                Self {}
5909            }
5910        }
5911        #[automatically_derived]
5912        impl alloy_sol_types::SolError for OutdatedState {
5913            type Parameters<'a> = UnderlyingSolTuple<'a>;
5914            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5915            const SIGNATURE: &'static str = "OutdatedState()";
5916            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5917            #[inline]
5918            fn new<'a>(
5919                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5920            ) -> Self {
5921                tuple.into()
5922            }
5923            #[inline]
5924            fn tokenize(&self) -> Self::Token<'_> {
5925                ()
5926            }
5927        }
5928    };
5929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5930    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5931    ```solidity
5932    error OwnableInvalidOwner(address owner);
5933    ```*/
5934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5935    #[derive(Clone)]
5936    pub struct OwnableInvalidOwner {
5937        #[allow(missing_docs)]
5938        pub owner: alloy::sol_types::private::Address,
5939    }
5940    #[allow(
5941        non_camel_case_types,
5942        non_snake_case,
5943        clippy::pub_underscore_fields,
5944        clippy::style
5945    )]
5946    const _: () = {
5947        use alloy::sol_types as alloy_sol_types;
5948        #[doc(hidden)]
5949        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5950        #[doc(hidden)]
5951        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5952        #[cfg(test)]
5953        #[allow(dead_code, unreachable_patterns)]
5954        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5955            match _t {
5956                alloy_sol_types::private::AssertTypeEq::<
5957                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5958                >(_) => {},
5959            }
5960        }
5961        #[automatically_derived]
5962        #[doc(hidden)]
5963        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5964            fn from(value: OwnableInvalidOwner) -> Self {
5965                (value.owner,)
5966            }
5967        }
5968        #[automatically_derived]
5969        #[doc(hidden)]
5970        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5971            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5972                Self { owner: tuple.0 }
5973            }
5974        }
5975        #[automatically_derived]
5976        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5977            type Parameters<'a> = UnderlyingSolTuple<'a>;
5978            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5979            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5980            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5981            #[inline]
5982            fn new<'a>(
5983                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5984            ) -> Self {
5985                tuple.into()
5986            }
5987            #[inline]
5988            fn tokenize(&self) -> Self::Token<'_> {
5989                (
5990                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5991                        &self.owner,
5992                    ),
5993                )
5994            }
5995        }
5996    };
5997    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5998    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5999    ```solidity
6000    error OwnableUnauthorizedAccount(address account);
6001    ```*/
6002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6003    #[derive(Clone)]
6004    pub struct OwnableUnauthorizedAccount {
6005        #[allow(missing_docs)]
6006        pub account: alloy::sol_types::private::Address,
6007    }
6008    #[allow(
6009        non_camel_case_types,
6010        non_snake_case,
6011        clippy::pub_underscore_fields,
6012        clippy::style
6013    )]
6014    const _: () = {
6015        use alloy::sol_types as alloy_sol_types;
6016        #[doc(hidden)]
6017        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6018        #[doc(hidden)]
6019        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6020        #[cfg(test)]
6021        #[allow(dead_code, unreachable_patterns)]
6022        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6023            match _t {
6024                alloy_sol_types::private::AssertTypeEq::<
6025                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6026                >(_) => {},
6027            }
6028        }
6029        #[automatically_derived]
6030        #[doc(hidden)]
6031        impl ::core::convert::From<OwnableUnauthorizedAccount> for UnderlyingRustTuple<'_> {
6032            fn from(value: OwnableUnauthorizedAccount) -> Self {
6033                (value.account,)
6034            }
6035        }
6036        #[automatically_derived]
6037        #[doc(hidden)]
6038        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableUnauthorizedAccount {
6039            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6040                Self { account: tuple.0 }
6041            }
6042        }
6043        #[automatically_derived]
6044        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6045            type Parameters<'a> = UnderlyingSolTuple<'a>;
6046            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6047            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6048            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6049            #[inline]
6050            fn new<'a>(
6051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6052            ) -> Self {
6053                tuple.into()
6054            }
6055            #[inline]
6056            fn tokenize(&self) -> Self::Token<'_> {
6057                (
6058                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6059                        &self.account,
6060                    ),
6061                )
6062            }
6063        }
6064    };
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6067    ```solidity
6068    error ProverNotPermissioned();
6069    ```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct ProverNotPermissioned {}
6073    #[allow(
6074        non_camel_case_types,
6075        non_snake_case,
6076        clippy::pub_underscore_fields,
6077        clippy::style
6078    )]
6079    const _: () = {
6080        use alloy::sol_types as alloy_sol_types;
6081        #[doc(hidden)]
6082        type UnderlyingSolTuple<'a> = ();
6083        #[doc(hidden)]
6084        type UnderlyingRustTuple<'a> = ();
6085        #[cfg(test)]
6086        #[allow(dead_code, unreachable_patterns)]
6087        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6088            match _t {
6089                alloy_sol_types::private::AssertTypeEq::<
6090                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6091                >(_) => {},
6092            }
6093        }
6094        #[automatically_derived]
6095        #[doc(hidden)]
6096        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6097            fn from(value: ProverNotPermissioned) -> Self {
6098                ()
6099            }
6100        }
6101        #[automatically_derived]
6102        #[doc(hidden)]
6103        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6104            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6105                Self {}
6106            }
6107        }
6108        #[automatically_derived]
6109        impl alloy_sol_types::SolError for ProverNotPermissioned {
6110            type Parameters<'a> = UnderlyingSolTuple<'a>;
6111            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6112            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6113            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6114            #[inline]
6115            fn new<'a>(
6116                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6117            ) -> Self {
6118                tuple.into()
6119            }
6120            #[inline]
6121            fn tokenize(&self) -> Self::Token<'_> {
6122                ()
6123            }
6124        }
6125    };
6126    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6127    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6128    ```solidity
6129    error UUPSUnauthorizedCallContext();
6130    ```*/
6131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6132    #[derive(Clone)]
6133    pub struct UUPSUnauthorizedCallContext {}
6134    #[allow(
6135        non_camel_case_types,
6136        non_snake_case,
6137        clippy::pub_underscore_fields,
6138        clippy::style
6139    )]
6140    const _: () = {
6141        use alloy::sol_types as alloy_sol_types;
6142        #[doc(hidden)]
6143        type UnderlyingSolTuple<'a> = ();
6144        #[doc(hidden)]
6145        type UnderlyingRustTuple<'a> = ();
6146        #[cfg(test)]
6147        #[allow(dead_code, unreachable_patterns)]
6148        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6149            match _t {
6150                alloy_sol_types::private::AssertTypeEq::<
6151                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6152                >(_) => {},
6153            }
6154        }
6155        #[automatically_derived]
6156        #[doc(hidden)]
6157        impl ::core::convert::From<UUPSUnauthorizedCallContext> for UnderlyingRustTuple<'_> {
6158            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6159                ()
6160            }
6161        }
6162        #[automatically_derived]
6163        #[doc(hidden)]
6164        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnauthorizedCallContext {
6165            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6166                Self {}
6167            }
6168        }
6169        #[automatically_derived]
6170        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6171            type Parameters<'a> = UnderlyingSolTuple<'a>;
6172            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6173            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6174            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6175            #[inline]
6176            fn new<'a>(
6177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6178            ) -> Self {
6179                tuple.into()
6180            }
6181            #[inline]
6182            fn tokenize(&self) -> Self::Token<'_> {
6183                ()
6184            }
6185        }
6186    };
6187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6188    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6189    ```solidity
6190    error UUPSUnsupportedProxiableUUID(bytes32 slot);
6191    ```*/
6192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6193    #[derive(Clone)]
6194    pub struct UUPSUnsupportedProxiableUUID {
6195        #[allow(missing_docs)]
6196        pub slot: alloy::sol_types::private::FixedBytes<32>,
6197    }
6198    #[allow(
6199        non_camel_case_types,
6200        non_snake_case,
6201        clippy::pub_underscore_fields,
6202        clippy::style
6203    )]
6204    const _: () = {
6205        use alloy::sol_types as alloy_sol_types;
6206        #[doc(hidden)]
6207        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6208        #[doc(hidden)]
6209        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6210        #[cfg(test)]
6211        #[allow(dead_code, unreachable_patterns)]
6212        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6213            match _t {
6214                alloy_sol_types::private::AssertTypeEq::<
6215                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6216                >(_) => {},
6217            }
6218        }
6219        #[automatically_derived]
6220        #[doc(hidden)]
6221        impl ::core::convert::From<UUPSUnsupportedProxiableUUID> for UnderlyingRustTuple<'_> {
6222            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6223                (value.slot,)
6224            }
6225        }
6226        #[automatically_derived]
6227        #[doc(hidden)]
6228        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnsupportedProxiableUUID {
6229            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6230                Self { slot: tuple.0 }
6231            }
6232        }
6233        #[automatically_derived]
6234        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6235            type Parameters<'a> = UnderlyingSolTuple<'a>;
6236            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6237            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6238            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6239            #[inline]
6240            fn new<'a>(
6241                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6242            ) -> Self {
6243                tuple.into()
6244            }
6245            #[inline]
6246            fn tokenize(&self) -> Self::Token<'_> {
6247                (
6248                    <alloy::sol_types::sol_data::FixedBytes<
6249                        32,
6250                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6251                )
6252            }
6253        }
6254    };
6255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6256    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6257    ```solidity
6258    error WrongStakeTableUsed();
6259    ```*/
6260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6261    #[derive(Clone)]
6262    pub struct WrongStakeTableUsed {}
6263    #[allow(
6264        non_camel_case_types,
6265        non_snake_case,
6266        clippy::pub_underscore_fields,
6267        clippy::style
6268    )]
6269    const _: () = {
6270        use alloy::sol_types as alloy_sol_types;
6271        #[doc(hidden)]
6272        type UnderlyingSolTuple<'a> = ();
6273        #[doc(hidden)]
6274        type UnderlyingRustTuple<'a> = ();
6275        #[cfg(test)]
6276        #[allow(dead_code, unreachable_patterns)]
6277        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6278            match _t {
6279                alloy_sol_types::private::AssertTypeEq::<
6280                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6281                >(_) => {},
6282            }
6283        }
6284        #[automatically_derived]
6285        #[doc(hidden)]
6286        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6287            fn from(value: WrongStakeTableUsed) -> Self {
6288                ()
6289            }
6290        }
6291        #[automatically_derived]
6292        #[doc(hidden)]
6293        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6294            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6295                Self {}
6296            }
6297        }
6298        #[automatically_derived]
6299        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6300            type Parameters<'a> = UnderlyingSolTuple<'a>;
6301            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6302            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6303            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6304            #[inline]
6305            fn new<'a>(
6306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6307            ) -> Self {
6308                tuple.into()
6309            }
6310            #[inline]
6311            fn tokenize(&self) -> Self::Token<'_> {
6312                ()
6313            }
6314        }
6315    };
6316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6317    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6318    ```solidity
6319    event Initialized(uint64 version);
6320    ```*/
6321    #[allow(
6322        non_camel_case_types,
6323        non_snake_case,
6324        clippy::pub_underscore_fields,
6325        clippy::style
6326    )]
6327    #[derive(Clone)]
6328    pub struct Initialized {
6329        #[allow(missing_docs)]
6330        pub version: u64,
6331    }
6332    #[allow(
6333        non_camel_case_types,
6334        non_snake_case,
6335        clippy::pub_underscore_fields,
6336        clippy::style
6337    )]
6338    const _: () = {
6339        use alloy::sol_types as alloy_sol_types;
6340        #[automatically_derived]
6341        impl alloy_sol_types::SolEvent for Initialized {
6342            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6343            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6344            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6345            const SIGNATURE: &'static str = "Initialized(uint64)";
6346            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6347                alloy_sol_types::private::B256::new([
6348                    199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
6349                    244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
6350                    209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6351                ]);
6352            const ANONYMOUS: bool = false;
6353            #[allow(unused_variables)]
6354            #[inline]
6355            fn new(
6356                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6357                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6358            ) -> Self {
6359                Self { version: data.0 }
6360            }
6361            #[inline]
6362            fn check_signature(
6363                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6364            ) -> alloy_sol_types::Result<()> {
6365                if topics.0 != Self::SIGNATURE_HASH {
6366                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6367                        Self::SIGNATURE,
6368                        topics.0,
6369                        Self::SIGNATURE_HASH,
6370                    ));
6371                }
6372                Ok(())
6373            }
6374            #[inline]
6375            fn tokenize_body(&self) -> Self::DataToken<'_> {
6376                (
6377                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
6378                        &self.version,
6379                    ),
6380                )
6381            }
6382            #[inline]
6383            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6384                (Self::SIGNATURE_HASH.into(),)
6385            }
6386            #[inline]
6387            fn encode_topics_raw(
6388                &self,
6389                out: &mut [alloy_sol_types::abi::token::WordToken],
6390            ) -> alloy_sol_types::Result<()> {
6391                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6392                    return Err(alloy_sol_types::Error::Overrun);
6393                }
6394                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6395                Ok(())
6396            }
6397        }
6398        #[automatically_derived]
6399        impl alloy_sol_types::private::IntoLogData for Initialized {
6400            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6401                From::from(self)
6402            }
6403            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6404                From::from(&self)
6405            }
6406        }
6407        #[automatically_derived]
6408        impl From<&Initialized> for alloy_sol_types::private::LogData {
6409            #[inline]
6410            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6411                alloy_sol_types::SolEvent::encode_log_data(this)
6412            }
6413        }
6414    };
6415    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6416    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6417    ```solidity
6418    event NewEpoch(uint64 epoch);
6419    ```*/
6420    #[allow(
6421        non_camel_case_types,
6422        non_snake_case,
6423        clippy::pub_underscore_fields,
6424        clippy::style
6425    )]
6426    #[derive(Clone)]
6427    pub struct NewEpoch {
6428        #[allow(missing_docs)]
6429        pub epoch: u64,
6430    }
6431    #[allow(
6432        non_camel_case_types,
6433        non_snake_case,
6434        clippy::pub_underscore_fields,
6435        clippy::style
6436    )]
6437    const _: () = {
6438        use alloy::sol_types as alloy_sol_types;
6439        #[automatically_derived]
6440        impl alloy_sol_types::SolEvent for NewEpoch {
6441            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6442            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6443            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6444            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6445            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6446                alloy_sol_types::private::B256::new([
6447                    49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8, 210u8, 6u8,
6448                    171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8, 157u8, 15u8, 205u8,
6449                    239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6450                ]);
6451            const ANONYMOUS: bool = false;
6452            #[allow(unused_variables)]
6453            #[inline]
6454            fn new(
6455                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6456                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6457            ) -> Self {
6458                Self { epoch: data.0 }
6459            }
6460            #[inline]
6461            fn check_signature(
6462                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6463            ) -> alloy_sol_types::Result<()> {
6464                if topics.0 != Self::SIGNATURE_HASH {
6465                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6466                        Self::SIGNATURE,
6467                        topics.0,
6468                        Self::SIGNATURE_HASH,
6469                    ));
6470                }
6471                Ok(())
6472            }
6473            #[inline]
6474            fn tokenize_body(&self) -> Self::DataToken<'_> {
6475                (
6476                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
6477                        &self.epoch,
6478                    ),
6479                )
6480            }
6481            #[inline]
6482            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6483                (Self::SIGNATURE_HASH.into(),)
6484            }
6485            #[inline]
6486            fn encode_topics_raw(
6487                &self,
6488                out: &mut [alloy_sol_types::abi::token::WordToken],
6489            ) -> alloy_sol_types::Result<()> {
6490                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6491                    return Err(alloy_sol_types::Error::Overrun);
6492                }
6493                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6494                Ok(())
6495            }
6496        }
6497        #[automatically_derived]
6498        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6499            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6500                From::from(self)
6501            }
6502            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6503                From::from(&self)
6504            }
6505        }
6506        #[automatically_derived]
6507        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6508            #[inline]
6509            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6510                alloy_sol_types::SolEvent::encode_log_data(this)
6511            }
6512        }
6513    };
6514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6515    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6516    ```solidity
6517    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6518    ```*/
6519    #[allow(
6520        non_camel_case_types,
6521        non_snake_case,
6522        clippy::pub_underscore_fields,
6523        clippy::style
6524    )]
6525    #[derive(Clone)]
6526    pub struct NewState {
6527        #[allow(missing_docs)]
6528        pub viewNum: u64,
6529        #[allow(missing_docs)]
6530        pub blockHeight: u64,
6531        #[allow(missing_docs)]
6532        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6533    }
6534    #[allow(
6535        non_camel_case_types,
6536        non_snake_case,
6537        clippy::pub_underscore_fields,
6538        clippy::style
6539    )]
6540    const _: () = {
6541        use alloy::sol_types as alloy_sol_types;
6542        #[automatically_derived]
6543        impl alloy_sol_types::SolEvent for NewState {
6544            type DataTuple<'a> = (BN254::ScalarField,);
6545            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6546            type TopicList = (
6547                alloy_sol_types::sol_data::FixedBytes<32>,
6548                alloy::sol_types::sol_data::Uint<64>,
6549                alloy::sol_types::sol_data::Uint<64>,
6550            );
6551            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6552            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6553                alloy_sol_types::private::B256::new([
6554                    160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8,
6555                    37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8,
6556                    252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6557                ]);
6558            const ANONYMOUS: bool = false;
6559            #[allow(unused_variables)]
6560            #[inline]
6561            fn new(
6562                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6563                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6564            ) -> Self {
6565                Self {
6566                    viewNum: topics.1,
6567                    blockHeight: topics.2,
6568                    blockCommRoot: data.0,
6569                }
6570            }
6571            #[inline]
6572            fn check_signature(
6573                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6574            ) -> alloy_sol_types::Result<()> {
6575                if topics.0 != Self::SIGNATURE_HASH {
6576                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6577                        Self::SIGNATURE,
6578                        topics.0,
6579                        Self::SIGNATURE_HASH,
6580                    ));
6581                }
6582                Ok(())
6583            }
6584            #[inline]
6585            fn tokenize_body(&self) -> Self::DataToken<'_> {
6586                (<BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6587                    &self.blockCommRoot,
6588                ),)
6589            }
6590            #[inline]
6591            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6592                (
6593                    Self::SIGNATURE_HASH.into(),
6594                    self.viewNum.clone(),
6595                    self.blockHeight.clone(),
6596                )
6597            }
6598            #[inline]
6599            fn encode_topics_raw(
6600                &self,
6601                out: &mut [alloy_sol_types::abi::token::WordToken],
6602            ) -> alloy_sol_types::Result<()> {
6603                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6604                    return Err(alloy_sol_types::Error::Overrun);
6605                }
6606                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6607                out[1usize] = <alloy::sol_types::sol_data::Uint<
6608                    64,
6609                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6610                out[2usize] = <alloy::sol_types::sol_data::Uint<
6611                    64,
6612                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6613                Ok(())
6614            }
6615        }
6616        #[automatically_derived]
6617        impl alloy_sol_types::private::IntoLogData for NewState {
6618            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6619                From::from(self)
6620            }
6621            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6622                From::from(&self)
6623            }
6624        }
6625        #[automatically_derived]
6626        impl From<&NewState> for alloy_sol_types::private::LogData {
6627            #[inline]
6628            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6629                alloy_sol_types::SolEvent::encode_log_data(this)
6630            }
6631        }
6632    };
6633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6634    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6635    ```solidity
6636    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6637    ```*/
6638    #[allow(
6639        non_camel_case_types,
6640        non_snake_case,
6641        clippy::pub_underscore_fields,
6642        clippy::style
6643    )]
6644    #[derive(Clone)]
6645    pub struct OwnershipTransferred {
6646        #[allow(missing_docs)]
6647        pub previousOwner: alloy::sol_types::private::Address,
6648        #[allow(missing_docs)]
6649        pub newOwner: alloy::sol_types::private::Address,
6650    }
6651    #[allow(
6652        non_camel_case_types,
6653        non_snake_case,
6654        clippy::pub_underscore_fields,
6655        clippy::style
6656    )]
6657    const _: () = {
6658        use alloy::sol_types as alloy_sol_types;
6659        #[automatically_derived]
6660        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6661            type DataTuple<'a> = ();
6662            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6663            type TopicList = (
6664                alloy_sol_types::sol_data::FixedBytes<32>,
6665                alloy::sol_types::sol_data::Address,
6666                alloy::sol_types::sol_data::Address,
6667            );
6668            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6669            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6670                alloy_sol_types::private::B256::new([
6671                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
6672                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
6673                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6674                ]);
6675            const ANONYMOUS: bool = false;
6676            #[allow(unused_variables)]
6677            #[inline]
6678            fn new(
6679                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6680                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6681            ) -> Self {
6682                Self {
6683                    previousOwner: topics.1,
6684                    newOwner: topics.2,
6685                }
6686            }
6687            #[inline]
6688            fn check_signature(
6689                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6690            ) -> alloy_sol_types::Result<()> {
6691                if topics.0 != Self::SIGNATURE_HASH {
6692                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6693                        Self::SIGNATURE,
6694                        topics.0,
6695                        Self::SIGNATURE_HASH,
6696                    ));
6697                }
6698                Ok(())
6699            }
6700            #[inline]
6701            fn tokenize_body(&self) -> Self::DataToken<'_> {
6702                ()
6703            }
6704            #[inline]
6705            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6706                (
6707                    Self::SIGNATURE_HASH.into(),
6708                    self.previousOwner.clone(),
6709                    self.newOwner.clone(),
6710                )
6711            }
6712            #[inline]
6713            fn encode_topics_raw(
6714                &self,
6715                out: &mut [alloy_sol_types::abi::token::WordToken],
6716            ) -> alloy_sol_types::Result<()> {
6717                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6718                    return Err(alloy_sol_types::Error::Overrun);
6719                }
6720                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6721                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6722                    &self.previousOwner,
6723                );
6724                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6725                    &self.newOwner,
6726                );
6727                Ok(())
6728            }
6729        }
6730        #[automatically_derived]
6731        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6732            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6733                From::from(self)
6734            }
6735            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6736                From::from(&self)
6737            }
6738        }
6739        #[automatically_derived]
6740        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6741            #[inline]
6742            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6743                alloy_sol_types::SolEvent::encode_log_data(this)
6744            }
6745        }
6746    };
6747    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6748    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6749    ```solidity
6750    event PermissionedProverNotRequired();
6751    ```*/
6752    #[allow(
6753        non_camel_case_types,
6754        non_snake_case,
6755        clippy::pub_underscore_fields,
6756        clippy::style
6757    )]
6758    #[derive(Clone)]
6759    pub struct PermissionedProverNotRequired {}
6760    #[allow(
6761        non_camel_case_types,
6762        non_snake_case,
6763        clippy::pub_underscore_fields,
6764        clippy::style
6765    )]
6766    const _: () = {
6767        use alloy::sol_types as alloy_sol_types;
6768        #[automatically_derived]
6769        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6770            type DataTuple<'a> = ();
6771            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6772            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6773            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6774            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6775                alloy_sol_types::private::B256::new([
6776                    154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
6777                    92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
6778                    109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6779                ]);
6780            const ANONYMOUS: bool = false;
6781            #[allow(unused_variables)]
6782            #[inline]
6783            fn new(
6784                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6785                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6786            ) -> Self {
6787                Self {}
6788            }
6789            #[inline]
6790            fn check_signature(
6791                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6792            ) -> alloy_sol_types::Result<()> {
6793                if topics.0 != Self::SIGNATURE_HASH {
6794                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6795                        Self::SIGNATURE,
6796                        topics.0,
6797                        Self::SIGNATURE_HASH,
6798                    ));
6799                }
6800                Ok(())
6801            }
6802            #[inline]
6803            fn tokenize_body(&self) -> Self::DataToken<'_> {
6804                ()
6805            }
6806            #[inline]
6807            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6808                (Self::SIGNATURE_HASH.into(),)
6809            }
6810            #[inline]
6811            fn encode_topics_raw(
6812                &self,
6813                out: &mut [alloy_sol_types::abi::token::WordToken],
6814            ) -> alloy_sol_types::Result<()> {
6815                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6816                    return Err(alloy_sol_types::Error::Overrun);
6817                }
6818                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6819                Ok(())
6820            }
6821        }
6822        #[automatically_derived]
6823        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6824            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6825                From::from(self)
6826            }
6827            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6828                From::from(&self)
6829            }
6830        }
6831        #[automatically_derived]
6832        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6833            #[inline]
6834            fn from(this: &PermissionedProverNotRequired) -> alloy_sol_types::private::LogData {
6835                alloy_sol_types::SolEvent::encode_log_data(this)
6836            }
6837        }
6838    };
6839    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6840    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6841    ```solidity
6842    event PermissionedProverRequired(address permissionedProver);
6843    ```*/
6844    #[allow(
6845        non_camel_case_types,
6846        non_snake_case,
6847        clippy::pub_underscore_fields,
6848        clippy::style
6849    )]
6850    #[derive(Clone)]
6851    pub struct PermissionedProverRequired {
6852        #[allow(missing_docs)]
6853        pub permissionedProver: alloy::sol_types::private::Address,
6854    }
6855    #[allow(
6856        non_camel_case_types,
6857        non_snake_case,
6858        clippy::pub_underscore_fields,
6859        clippy::style
6860    )]
6861    const _: () = {
6862        use alloy::sol_types as alloy_sol_types;
6863        #[automatically_derived]
6864        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6865            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6866            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6867            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6868            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6869            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6870                alloy_sol_types::private::B256::new([
6871                    128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6872                    212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8,
6873                    133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6874                ]);
6875            const ANONYMOUS: bool = false;
6876            #[allow(unused_variables)]
6877            #[inline]
6878            fn new(
6879                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6880                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6881            ) -> Self {
6882                Self {
6883                    permissionedProver: data.0,
6884                }
6885            }
6886            #[inline]
6887            fn check_signature(
6888                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6889            ) -> alloy_sol_types::Result<()> {
6890                if topics.0 != Self::SIGNATURE_HASH {
6891                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6892                        Self::SIGNATURE,
6893                        topics.0,
6894                        Self::SIGNATURE_HASH,
6895                    ));
6896                }
6897                Ok(())
6898            }
6899            #[inline]
6900            fn tokenize_body(&self) -> Self::DataToken<'_> {
6901                (
6902                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6903                        &self.permissionedProver,
6904                    ),
6905                )
6906            }
6907            #[inline]
6908            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6909                (Self::SIGNATURE_HASH.into(),)
6910            }
6911            #[inline]
6912            fn encode_topics_raw(
6913                &self,
6914                out: &mut [alloy_sol_types::abi::token::WordToken],
6915            ) -> alloy_sol_types::Result<()> {
6916                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6917                    return Err(alloy_sol_types::Error::Overrun);
6918                }
6919                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6920                Ok(())
6921            }
6922        }
6923        #[automatically_derived]
6924        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6925            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6926                From::from(self)
6927            }
6928            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6929                From::from(&self)
6930            }
6931        }
6932        #[automatically_derived]
6933        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6934            #[inline]
6935            fn from(this: &PermissionedProverRequired) -> alloy_sol_types::private::LogData {
6936                alloy_sol_types::SolEvent::encode_log_data(this)
6937            }
6938        }
6939    };
6940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6941    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6942    ```solidity
6943    event Upgrade(address implementation);
6944    ```*/
6945    #[allow(
6946        non_camel_case_types,
6947        non_snake_case,
6948        clippy::pub_underscore_fields,
6949        clippy::style
6950    )]
6951    #[derive(Clone)]
6952    pub struct Upgrade {
6953        #[allow(missing_docs)]
6954        pub implementation: alloy::sol_types::private::Address,
6955    }
6956    #[allow(
6957        non_camel_case_types,
6958        non_snake_case,
6959        clippy::pub_underscore_fields,
6960        clippy::style
6961    )]
6962    const _: () = {
6963        use alloy::sol_types as alloy_sol_types;
6964        #[automatically_derived]
6965        impl alloy_sol_types::SolEvent for Upgrade {
6966            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6967            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6968            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6969            const SIGNATURE: &'static str = "Upgrade(address)";
6970            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6971                alloy_sol_types::private::B256::new([
6972                    247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
6973                    22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8,
6974                    237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6975                ]);
6976            const ANONYMOUS: bool = false;
6977            #[allow(unused_variables)]
6978            #[inline]
6979            fn new(
6980                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6981                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6982            ) -> Self {
6983                Self {
6984                    implementation: data.0,
6985                }
6986            }
6987            #[inline]
6988            fn check_signature(
6989                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6990            ) -> alloy_sol_types::Result<()> {
6991                if topics.0 != Self::SIGNATURE_HASH {
6992                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6993                        Self::SIGNATURE,
6994                        topics.0,
6995                        Self::SIGNATURE_HASH,
6996                    ));
6997                }
6998                Ok(())
6999            }
7000            #[inline]
7001            fn tokenize_body(&self) -> Self::DataToken<'_> {
7002                (
7003                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7004                        &self.implementation,
7005                    ),
7006                )
7007            }
7008            #[inline]
7009            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7010                (Self::SIGNATURE_HASH.into(),)
7011            }
7012            #[inline]
7013            fn encode_topics_raw(
7014                &self,
7015                out: &mut [alloy_sol_types::abi::token::WordToken],
7016            ) -> alloy_sol_types::Result<()> {
7017                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7018                    return Err(alloy_sol_types::Error::Overrun);
7019                }
7020                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
7021                Ok(())
7022            }
7023        }
7024        #[automatically_derived]
7025        impl alloy_sol_types::private::IntoLogData for Upgrade {
7026            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7027                From::from(self)
7028            }
7029            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7030                From::from(&self)
7031            }
7032        }
7033        #[automatically_derived]
7034        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7035            #[inline]
7036            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7037                alloy_sol_types::SolEvent::encode_log_data(this)
7038            }
7039        }
7040    };
7041    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7042    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7043    ```solidity
7044    event Upgraded(address indexed implementation);
7045    ```*/
7046    #[allow(
7047        non_camel_case_types,
7048        non_snake_case,
7049        clippy::pub_underscore_fields,
7050        clippy::style
7051    )]
7052    #[derive(Clone)]
7053    pub struct Upgraded {
7054        #[allow(missing_docs)]
7055        pub implementation: alloy::sol_types::private::Address,
7056    }
7057    #[allow(
7058        non_camel_case_types,
7059        non_snake_case,
7060        clippy::pub_underscore_fields,
7061        clippy::style
7062    )]
7063    const _: () = {
7064        use alloy::sol_types as alloy_sol_types;
7065        #[automatically_derived]
7066        impl alloy_sol_types::SolEvent for Upgraded {
7067            type DataTuple<'a> = ();
7068            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7069            type TopicList = (
7070                alloy_sol_types::sol_data::FixedBytes<32>,
7071                alloy::sol_types::sol_data::Address,
7072            );
7073            const SIGNATURE: &'static str = "Upgraded(address)";
7074            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
7075                alloy_sol_types::private::B256::new([
7076                    188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7077                    179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8,
7078                    192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7079                ]);
7080            const ANONYMOUS: bool = false;
7081            #[allow(unused_variables)]
7082            #[inline]
7083            fn new(
7084                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7085                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7086            ) -> Self {
7087                Self {
7088                    implementation: topics.1,
7089                }
7090            }
7091            #[inline]
7092            fn check_signature(
7093                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7094            ) -> alloy_sol_types::Result<()> {
7095                if topics.0 != Self::SIGNATURE_HASH {
7096                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
7097                        Self::SIGNATURE,
7098                        topics.0,
7099                        Self::SIGNATURE_HASH,
7100                    ));
7101                }
7102                Ok(())
7103            }
7104            #[inline]
7105            fn tokenize_body(&self) -> Self::DataToken<'_> {
7106                ()
7107            }
7108            #[inline]
7109            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7110                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7111            }
7112            #[inline]
7113            fn encode_topics_raw(
7114                &self,
7115                out: &mut [alloy_sol_types::abi::token::WordToken],
7116            ) -> alloy_sol_types::Result<()> {
7117                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7118                    return Err(alloy_sol_types::Error::Overrun);
7119                }
7120                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
7121                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7122                    &self.implementation,
7123                );
7124                Ok(())
7125            }
7126        }
7127        #[automatically_derived]
7128        impl alloy_sol_types::private::IntoLogData for Upgraded {
7129            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7130                From::from(self)
7131            }
7132            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7133                From::from(&self)
7134            }
7135        }
7136        #[automatically_derived]
7137        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7138            #[inline]
7139            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7140                alloy_sol_types::SolEvent::encode_log_data(this)
7141            }
7142        }
7143    };
7144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7145    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7146    ```solidity
7147    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7148    ```*/
7149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7150    #[derive(Clone)]
7151    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7153    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7155    #[derive(Clone)]
7156    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7157        #[allow(missing_docs)]
7158        pub _0: alloy::sol_types::private::String,
7159    }
7160    #[allow(
7161        non_camel_case_types,
7162        non_snake_case,
7163        clippy::pub_underscore_fields,
7164        clippy::style
7165    )]
7166    const _: () = {
7167        use alloy::sol_types as alloy_sol_types;
7168        {
7169            #[doc(hidden)]
7170            type UnderlyingSolTuple<'a> = ();
7171            #[doc(hidden)]
7172            type UnderlyingRustTuple<'a> = ();
7173            #[cfg(test)]
7174            #[allow(dead_code, unreachable_patterns)]
7175            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7176                match _t {
7177                    alloy_sol_types::private::AssertTypeEq::<
7178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7179                    >(_) => {},
7180                }
7181            }
7182            #[automatically_derived]
7183            #[doc(hidden)]
7184            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall> for UnderlyingRustTuple<'_> {
7185                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7186                    ()
7187                }
7188            }
7189            #[automatically_derived]
7190            #[doc(hidden)]
7191            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONCall {
7192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7193                    Self {}
7194                }
7195            }
7196        }
7197        {
7198            #[doc(hidden)]
7199            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7200            #[doc(hidden)]
7201            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7202            #[cfg(test)]
7203            #[allow(dead_code, unreachable_patterns)]
7204            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7205                match _t {
7206                    alloy_sol_types::private::AssertTypeEq::<
7207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7208                    >(_) => {},
7209                }
7210            }
7211            #[automatically_derived]
7212            #[doc(hidden)]
7213            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn> for UnderlyingRustTuple<'_> {
7214                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7215                    (value._0,)
7216                }
7217            }
7218            #[automatically_derived]
7219            #[doc(hidden)]
7220            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONReturn {
7221                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7222                    Self { _0: tuple.0 }
7223                }
7224            }
7225        }
7226        #[automatically_derived]
7227        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7228            type Parameters<'a> = ();
7229            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7230            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7231            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7232            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7233            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7234            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7235            #[inline]
7236            fn new<'a>(
7237                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7238            ) -> Self {
7239                tuple.into()
7240            }
7241            #[inline]
7242            fn tokenize(&self) -> Self::Token<'_> {
7243                ()
7244            }
7245            #[inline]
7246            fn abi_decode_returns(
7247                data: &[u8],
7248                validate: bool,
7249            ) -> alloy_sol_types::Result<Self::Return> {
7250                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7251                    data, validate,
7252                )
7253                .map(Into::into)
7254            }
7255        }
7256    };
7257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7258    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7259    ```solidity
7260    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7261    ```*/
7262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7263    #[derive(Clone)]
7264    pub struct _getVkCall {}
7265    #[derive()]
7266    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7268    #[derive(Clone)]
7269    pub struct _getVkReturn {
7270        #[allow(missing_docs)]
7271        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7272    }
7273    #[allow(
7274        non_camel_case_types,
7275        non_snake_case,
7276        clippy::pub_underscore_fields,
7277        clippy::style
7278    )]
7279    const _: () = {
7280        use alloy::sol_types as alloy_sol_types;
7281        {
7282            #[doc(hidden)]
7283            type UnderlyingSolTuple<'a> = ();
7284            #[doc(hidden)]
7285            type UnderlyingRustTuple<'a> = ();
7286            #[cfg(test)]
7287            #[allow(dead_code, unreachable_patterns)]
7288            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7289                match _t {
7290                    alloy_sol_types::private::AssertTypeEq::<
7291                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7292                    >(_) => {},
7293                }
7294            }
7295            #[automatically_derived]
7296            #[doc(hidden)]
7297            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7298                fn from(value: _getVkCall) -> Self {
7299                    ()
7300                }
7301            }
7302            #[automatically_derived]
7303            #[doc(hidden)]
7304            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7306                    Self {}
7307                }
7308            }
7309        }
7310        {
7311            #[doc(hidden)]
7312            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7313            #[doc(hidden)]
7314            type UnderlyingRustTuple<'a> =
7315                (<IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,);
7316            #[cfg(test)]
7317            #[allow(dead_code, unreachable_patterns)]
7318            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7319                match _t {
7320                    alloy_sol_types::private::AssertTypeEq::<
7321                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7322                    >(_) => {},
7323                }
7324            }
7325            #[automatically_derived]
7326            #[doc(hidden)]
7327            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7328                fn from(value: _getVkReturn) -> Self {
7329                    (value.vk,)
7330                }
7331            }
7332            #[automatically_derived]
7333            #[doc(hidden)]
7334            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7336                    Self { vk: tuple.0 }
7337                }
7338            }
7339        }
7340        #[automatically_derived]
7341        impl alloy_sol_types::SolCall for _getVkCall {
7342            type Parameters<'a> = ();
7343            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7344            type Return = _getVkReturn;
7345            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7346            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7347            const SIGNATURE: &'static str = "_getVk()";
7348            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7349            #[inline]
7350            fn new<'a>(
7351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7352            ) -> Self {
7353                tuple.into()
7354            }
7355            #[inline]
7356            fn tokenize(&self) -> Self::Token<'_> {
7357                ()
7358            }
7359            #[inline]
7360            fn abi_decode_returns(
7361                data: &[u8],
7362                validate: bool,
7363            ) -> alloy_sol_types::Result<Self::Return> {
7364                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7365                    data, validate,
7366                )
7367                .map(Into::into)
7368            }
7369        }
7370    };
7371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7372    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7373    ```solidity
7374    function blocksPerEpoch() external view returns (uint64);
7375    ```*/
7376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7377    #[derive(Clone)]
7378    pub struct blocksPerEpochCall {}
7379    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7380    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7381    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7382    #[derive(Clone)]
7383    pub struct blocksPerEpochReturn {
7384        #[allow(missing_docs)]
7385        pub _0: u64,
7386    }
7387    #[allow(
7388        non_camel_case_types,
7389        non_snake_case,
7390        clippy::pub_underscore_fields,
7391        clippy::style
7392    )]
7393    const _: () = {
7394        use alloy::sol_types as alloy_sol_types;
7395        {
7396            #[doc(hidden)]
7397            type UnderlyingSolTuple<'a> = ();
7398            #[doc(hidden)]
7399            type UnderlyingRustTuple<'a> = ();
7400            #[cfg(test)]
7401            #[allow(dead_code, unreachable_patterns)]
7402            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7403                match _t {
7404                    alloy_sol_types::private::AssertTypeEq::<
7405                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7406                    >(_) => {},
7407                }
7408            }
7409            #[automatically_derived]
7410            #[doc(hidden)]
7411            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7412                fn from(value: blocksPerEpochCall) -> Self {
7413                    ()
7414                }
7415            }
7416            #[automatically_derived]
7417            #[doc(hidden)]
7418            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7420                    Self {}
7421                }
7422            }
7423        }
7424        {
7425            #[doc(hidden)]
7426            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7427            #[doc(hidden)]
7428            type UnderlyingRustTuple<'a> = (u64,);
7429            #[cfg(test)]
7430            #[allow(dead_code, unreachable_patterns)]
7431            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7432                match _t {
7433                    alloy_sol_types::private::AssertTypeEq::<
7434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7435                    >(_) => {},
7436                }
7437            }
7438            #[automatically_derived]
7439            #[doc(hidden)]
7440            impl ::core::convert::From<blocksPerEpochReturn> for UnderlyingRustTuple<'_> {
7441                fn from(value: blocksPerEpochReturn) -> Self {
7442                    (value._0,)
7443                }
7444            }
7445            #[automatically_derived]
7446            #[doc(hidden)]
7447            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochReturn {
7448                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7449                    Self { _0: tuple.0 }
7450                }
7451            }
7452        }
7453        #[automatically_derived]
7454        impl alloy_sol_types::SolCall for blocksPerEpochCall {
7455            type Parameters<'a> = ();
7456            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7457            type Return = blocksPerEpochReturn;
7458            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7459            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7460            const SIGNATURE: &'static str = "blocksPerEpoch()";
7461            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
7462            #[inline]
7463            fn new<'a>(
7464                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7465            ) -> Self {
7466                tuple.into()
7467            }
7468            #[inline]
7469            fn tokenize(&self) -> Self::Token<'_> {
7470                ()
7471            }
7472            #[inline]
7473            fn abi_decode_returns(
7474                data: &[u8],
7475                validate: bool,
7476            ) -> alloy_sol_types::Result<Self::Return> {
7477                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7478                    data, validate,
7479                )
7480                .map(Into::into)
7481            }
7482        }
7483    };
7484    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7485    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7486    ```solidity
7487    function currentBlockNumber() external view returns (uint256);
7488    ```*/
7489    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7490    #[derive(Clone)]
7491    pub struct currentBlockNumberCall {}
7492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7493    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7495    #[derive(Clone)]
7496    pub struct currentBlockNumberReturn {
7497        #[allow(missing_docs)]
7498        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7499    }
7500    #[allow(
7501        non_camel_case_types,
7502        non_snake_case,
7503        clippy::pub_underscore_fields,
7504        clippy::style
7505    )]
7506    const _: () = {
7507        use alloy::sol_types as alloy_sol_types;
7508        {
7509            #[doc(hidden)]
7510            type UnderlyingSolTuple<'a> = ();
7511            #[doc(hidden)]
7512            type UnderlyingRustTuple<'a> = ();
7513            #[cfg(test)]
7514            #[allow(dead_code, unreachable_patterns)]
7515            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7516                match _t {
7517                    alloy_sol_types::private::AssertTypeEq::<
7518                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7519                    >(_) => {},
7520                }
7521            }
7522            #[automatically_derived]
7523            #[doc(hidden)]
7524            impl ::core::convert::From<currentBlockNumberCall> for UnderlyingRustTuple<'_> {
7525                fn from(value: currentBlockNumberCall) -> Self {
7526                    ()
7527                }
7528            }
7529            #[automatically_derived]
7530            #[doc(hidden)]
7531            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberCall {
7532                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7533                    Self {}
7534                }
7535            }
7536        }
7537        {
7538            #[doc(hidden)]
7539            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7540            #[doc(hidden)]
7541            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7542            #[cfg(test)]
7543            #[allow(dead_code, unreachable_patterns)]
7544            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7545                match _t {
7546                    alloy_sol_types::private::AssertTypeEq::<
7547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7548                    >(_) => {},
7549                }
7550            }
7551            #[automatically_derived]
7552            #[doc(hidden)]
7553            impl ::core::convert::From<currentBlockNumberReturn> for UnderlyingRustTuple<'_> {
7554                fn from(value: currentBlockNumberReturn) -> Self {
7555                    (value._0,)
7556                }
7557            }
7558            #[automatically_derived]
7559            #[doc(hidden)]
7560            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberReturn {
7561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7562                    Self { _0: tuple.0 }
7563                }
7564            }
7565        }
7566        #[automatically_derived]
7567        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7568            type Parameters<'a> = ();
7569            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7570            type Return = currentBlockNumberReturn;
7571            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7572            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7573            const SIGNATURE: &'static str = "currentBlockNumber()";
7574            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7575            #[inline]
7576            fn new<'a>(
7577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7578            ) -> Self {
7579                tuple.into()
7580            }
7581            #[inline]
7582            fn tokenize(&self) -> Self::Token<'_> {
7583                ()
7584            }
7585            #[inline]
7586            fn abi_decode_returns(
7587                data: &[u8],
7588                validate: bool,
7589            ) -> alloy_sol_types::Result<Self::Return> {
7590                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7591                    data, validate,
7592                )
7593                .map(Into::into)
7594            }
7595        }
7596    };
7597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7598    /**Function with signature `currentEpoch()` and selector `0x76671808`.
7599    ```solidity
7600    function currentEpoch() external view returns (uint64);
7601    ```*/
7602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7603    #[derive(Clone)]
7604    pub struct currentEpochCall {}
7605    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7606    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
7607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7608    #[derive(Clone)]
7609    pub struct currentEpochReturn {
7610        #[allow(missing_docs)]
7611        pub _0: u64,
7612    }
7613    #[allow(
7614        non_camel_case_types,
7615        non_snake_case,
7616        clippy::pub_underscore_fields,
7617        clippy::style
7618    )]
7619    const _: () = {
7620        use alloy::sol_types as alloy_sol_types;
7621        {
7622            #[doc(hidden)]
7623            type UnderlyingSolTuple<'a> = ();
7624            #[doc(hidden)]
7625            type UnderlyingRustTuple<'a> = ();
7626            #[cfg(test)]
7627            #[allow(dead_code, unreachable_patterns)]
7628            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7629                match _t {
7630                    alloy_sol_types::private::AssertTypeEq::<
7631                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7632                    >(_) => {},
7633                }
7634            }
7635            #[automatically_derived]
7636            #[doc(hidden)]
7637            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
7638                fn from(value: currentEpochCall) -> Self {
7639                    ()
7640                }
7641            }
7642            #[automatically_derived]
7643            #[doc(hidden)]
7644            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
7645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7646                    Self {}
7647                }
7648            }
7649        }
7650        {
7651            #[doc(hidden)]
7652            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7653            #[doc(hidden)]
7654            type UnderlyingRustTuple<'a> = (u64,);
7655            #[cfg(test)]
7656            #[allow(dead_code, unreachable_patterns)]
7657            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7658                match _t {
7659                    alloy_sol_types::private::AssertTypeEq::<
7660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7661                    >(_) => {},
7662                }
7663            }
7664            #[automatically_derived]
7665            #[doc(hidden)]
7666            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
7667                fn from(value: currentEpochReturn) -> Self {
7668                    (value._0,)
7669                }
7670            }
7671            #[automatically_derived]
7672            #[doc(hidden)]
7673            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
7674                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7675                    Self { _0: tuple.0 }
7676                }
7677            }
7678        }
7679        #[automatically_derived]
7680        impl alloy_sol_types::SolCall for currentEpochCall {
7681            type Parameters<'a> = ();
7682            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7683            type Return = currentEpochReturn;
7684            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7685            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7686            const SIGNATURE: &'static str = "currentEpoch()";
7687            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
7688            #[inline]
7689            fn new<'a>(
7690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7691            ) -> Self {
7692                tuple.into()
7693            }
7694            #[inline]
7695            fn tokenize(&self) -> Self::Token<'_> {
7696                ()
7697            }
7698            #[inline]
7699            fn abi_decode_returns(
7700                data: &[u8],
7701                validate: bool,
7702            ) -> alloy_sol_types::Result<Self::Return> {
7703                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7704                    data, validate,
7705                )
7706                .map(Into::into)
7707            }
7708        }
7709    };
7710    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7711    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7712    ```solidity
7713    function disablePermissionedProverMode() external;
7714    ```*/
7715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7716    #[derive(Clone)]
7717    pub struct disablePermissionedProverModeCall {}
7718    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7720    #[derive(Clone)]
7721    pub struct disablePermissionedProverModeReturn {}
7722    #[allow(
7723        non_camel_case_types,
7724        non_snake_case,
7725        clippy::pub_underscore_fields,
7726        clippy::style
7727    )]
7728    const _: () = {
7729        use alloy::sol_types as alloy_sol_types;
7730        {
7731            #[doc(hidden)]
7732            type UnderlyingSolTuple<'a> = ();
7733            #[doc(hidden)]
7734            type UnderlyingRustTuple<'a> = ();
7735            #[cfg(test)]
7736            #[allow(dead_code, unreachable_patterns)]
7737            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7738                match _t {
7739                    alloy_sol_types::private::AssertTypeEq::<
7740                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7741                    >(_) => {},
7742                }
7743            }
7744            #[automatically_derived]
7745            #[doc(hidden)]
7746            impl ::core::convert::From<disablePermissionedProverModeCall> for UnderlyingRustTuple<'_> {
7747                fn from(value: disablePermissionedProverModeCall) -> Self {
7748                    ()
7749                }
7750            }
7751            #[automatically_derived]
7752            #[doc(hidden)]
7753            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeCall {
7754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7755                    Self {}
7756                }
7757            }
7758        }
7759        {
7760            #[doc(hidden)]
7761            type UnderlyingSolTuple<'a> = ();
7762            #[doc(hidden)]
7763            type UnderlyingRustTuple<'a> = ();
7764            #[cfg(test)]
7765            #[allow(dead_code, unreachable_patterns)]
7766            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7767                match _t {
7768                    alloy_sol_types::private::AssertTypeEq::<
7769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7770                    >(_) => {},
7771                }
7772            }
7773            #[automatically_derived]
7774            #[doc(hidden)]
7775            impl ::core::convert::From<disablePermissionedProverModeReturn> for UnderlyingRustTuple<'_> {
7776                fn from(value: disablePermissionedProverModeReturn) -> Self {
7777                    ()
7778                }
7779            }
7780            #[automatically_derived]
7781            #[doc(hidden)]
7782            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeReturn {
7783                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7784                    Self {}
7785                }
7786            }
7787        }
7788        #[automatically_derived]
7789        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7790            type Parameters<'a> = ();
7791            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7792            type Return = disablePermissionedProverModeReturn;
7793            type ReturnTuple<'a> = ();
7794            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7795            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7796            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7797            #[inline]
7798            fn new<'a>(
7799                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7800            ) -> Self {
7801                tuple.into()
7802            }
7803            #[inline]
7804            fn tokenize(&self) -> Self::Token<'_> {
7805                ()
7806            }
7807            #[inline]
7808            fn abi_decode_returns(
7809                data: &[u8],
7810                validate: bool,
7811            ) -> alloy_sol_types::Result<Self::Return> {
7812                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7813                    data, validate,
7814                )
7815                .map(Into::into)
7816            }
7817        }
7818    };
7819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7820    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
7821    ```solidity
7822    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
7823    ```*/
7824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7825    #[derive(Clone)]
7826    pub struct epochFromBlockNumberCall {
7827        #[allow(missing_docs)]
7828        pub _blockNum: u64,
7829        #[allow(missing_docs)]
7830        pub _blocksPerEpoch: u64,
7831    }
7832    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7833    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
7834    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7835    #[derive(Clone)]
7836    pub struct epochFromBlockNumberReturn {
7837        #[allow(missing_docs)]
7838        pub _0: u64,
7839    }
7840    #[allow(
7841        non_camel_case_types,
7842        non_snake_case,
7843        clippy::pub_underscore_fields,
7844        clippy::style
7845    )]
7846    const _: () = {
7847        use alloy::sol_types as alloy_sol_types;
7848        {
7849            #[doc(hidden)]
7850            type UnderlyingSolTuple<'a> = (
7851                alloy::sol_types::sol_data::Uint<64>,
7852                alloy::sol_types::sol_data::Uint<64>,
7853            );
7854            #[doc(hidden)]
7855            type UnderlyingRustTuple<'a> = (u64, u64);
7856            #[cfg(test)]
7857            #[allow(dead_code, unreachable_patterns)]
7858            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7859                match _t {
7860                    alloy_sol_types::private::AssertTypeEq::<
7861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7862                    >(_) => {},
7863                }
7864            }
7865            #[automatically_derived]
7866            #[doc(hidden)]
7867            impl ::core::convert::From<epochFromBlockNumberCall> for UnderlyingRustTuple<'_> {
7868                fn from(value: epochFromBlockNumberCall) -> Self {
7869                    (value._blockNum, value._blocksPerEpoch)
7870                }
7871            }
7872            #[automatically_derived]
7873            #[doc(hidden)]
7874            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochFromBlockNumberCall {
7875                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7876                    Self {
7877                        _blockNum: tuple.0,
7878                        _blocksPerEpoch: tuple.1,
7879                    }
7880                }
7881            }
7882        }
7883        {
7884            #[doc(hidden)]
7885            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7886            #[doc(hidden)]
7887            type UnderlyingRustTuple<'a> = (u64,);
7888            #[cfg(test)]
7889            #[allow(dead_code, unreachable_patterns)]
7890            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7891                match _t {
7892                    alloy_sol_types::private::AssertTypeEq::<
7893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7894                    >(_) => {},
7895                }
7896            }
7897            #[automatically_derived]
7898            #[doc(hidden)]
7899            impl ::core::convert::From<epochFromBlockNumberReturn> for UnderlyingRustTuple<'_> {
7900                fn from(value: epochFromBlockNumberReturn) -> Self {
7901                    (value._0,)
7902                }
7903            }
7904            #[automatically_derived]
7905            #[doc(hidden)]
7906            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochFromBlockNumberReturn {
7907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7908                    Self { _0: tuple.0 }
7909                }
7910            }
7911        }
7912        #[automatically_derived]
7913        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
7914            type Parameters<'a> = (
7915                alloy::sol_types::sol_data::Uint<64>,
7916                alloy::sol_types::sol_data::Uint<64>,
7917            );
7918            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7919            type Return = epochFromBlockNumberReturn;
7920            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7921            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7922            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
7923            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
7924            #[inline]
7925            fn new<'a>(
7926                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7927            ) -> Self {
7928                tuple.into()
7929            }
7930            #[inline]
7931            fn tokenize(&self) -> Self::Token<'_> {
7932                (
7933                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
7934                        &self._blockNum,
7935                    ),
7936                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
7937                        &self._blocksPerEpoch,
7938                    ),
7939                )
7940            }
7941            #[inline]
7942            fn abi_decode_returns(
7943                data: &[u8],
7944                validate: bool,
7945            ) -> alloy_sol_types::Result<Self::Return> {
7946                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7947                    data, validate,
7948                )
7949                .map(Into::into)
7950            }
7951        }
7952    };
7953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7954    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
7955    ```solidity
7956    function epochStartBlock() external view returns (uint64);
7957    ```*/
7958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7959    #[derive(Clone)]
7960    pub struct epochStartBlockCall {}
7961    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7962    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
7963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7964    #[derive(Clone)]
7965    pub struct epochStartBlockReturn {
7966        #[allow(missing_docs)]
7967        pub _0: u64,
7968    }
7969    #[allow(
7970        non_camel_case_types,
7971        non_snake_case,
7972        clippy::pub_underscore_fields,
7973        clippy::style
7974    )]
7975    const _: () = {
7976        use alloy::sol_types as alloy_sol_types;
7977        {
7978            #[doc(hidden)]
7979            type UnderlyingSolTuple<'a> = ();
7980            #[doc(hidden)]
7981            type UnderlyingRustTuple<'a> = ();
7982            #[cfg(test)]
7983            #[allow(dead_code, unreachable_patterns)]
7984            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7985                match _t {
7986                    alloy_sol_types::private::AssertTypeEq::<
7987                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7988                    >(_) => {},
7989                }
7990            }
7991            #[automatically_derived]
7992            #[doc(hidden)]
7993            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
7994                fn from(value: epochStartBlockCall) -> Self {
7995                    ()
7996                }
7997            }
7998            #[automatically_derived]
7999            #[doc(hidden)]
8000            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8001                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8002                    Self {}
8003                }
8004            }
8005        }
8006        {
8007            #[doc(hidden)]
8008            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8009            #[doc(hidden)]
8010            type UnderlyingRustTuple<'a> = (u64,);
8011            #[cfg(test)]
8012            #[allow(dead_code, unreachable_patterns)]
8013            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8014                match _t {
8015                    alloy_sol_types::private::AssertTypeEq::<
8016                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8017                    >(_) => {},
8018                }
8019            }
8020            #[automatically_derived]
8021            #[doc(hidden)]
8022            impl ::core::convert::From<epochStartBlockReturn> for UnderlyingRustTuple<'_> {
8023                fn from(value: epochStartBlockReturn) -> Self {
8024                    (value._0,)
8025                }
8026            }
8027            #[automatically_derived]
8028            #[doc(hidden)]
8029            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockReturn {
8030                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8031                    Self { _0: tuple.0 }
8032                }
8033            }
8034        }
8035        #[automatically_derived]
8036        impl alloy_sol_types::SolCall for epochStartBlockCall {
8037            type Parameters<'a> = ();
8038            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8039            type Return = epochStartBlockReturn;
8040            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8041            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8042            const SIGNATURE: &'static str = "epochStartBlock()";
8043            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8044            #[inline]
8045            fn new<'a>(
8046                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8047            ) -> Self {
8048                tuple.into()
8049            }
8050            #[inline]
8051            fn tokenize(&self) -> Self::Token<'_> {
8052                ()
8053            }
8054            #[inline]
8055            fn abi_decode_returns(
8056                data: &[u8],
8057                validate: bool,
8058            ) -> alloy_sol_types::Result<Self::Return> {
8059                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8060                    data, validate,
8061                )
8062                .map(Into::into)
8063            }
8064        }
8065    };
8066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8067    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8068    ```solidity
8069    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8070    ```*/
8071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8072    #[derive(Clone)]
8073    pub struct finalizedStateCall {}
8074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8075    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8077    #[derive(Clone)]
8078    pub struct finalizedStateReturn {
8079        #[allow(missing_docs)]
8080        pub viewNum: u64,
8081        #[allow(missing_docs)]
8082        pub blockHeight: u64,
8083        #[allow(missing_docs)]
8084        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8085    }
8086    #[allow(
8087        non_camel_case_types,
8088        non_snake_case,
8089        clippy::pub_underscore_fields,
8090        clippy::style
8091    )]
8092    const _: () = {
8093        use alloy::sol_types as alloy_sol_types;
8094        {
8095            #[doc(hidden)]
8096            type UnderlyingSolTuple<'a> = ();
8097            #[doc(hidden)]
8098            type UnderlyingRustTuple<'a> = ();
8099            #[cfg(test)]
8100            #[allow(dead_code, unreachable_patterns)]
8101            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8102                match _t {
8103                    alloy_sol_types::private::AssertTypeEq::<
8104                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8105                    >(_) => {},
8106                }
8107            }
8108            #[automatically_derived]
8109            #[doc(hidden)]
8110            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8111                fn from(value: finalizedStateCall) -> Self {
8112                    ()
8113                }
8114            }
8115            #[automatically_derived]
8116            #[doc(hidden)]
8117            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8119                    Self {}
8120                }
8121            }
8122        }
8123        {
8124            #[doc(hidden)]
8125            type UnderlyingSolTuple<'a> = (
8126                alloy::sol_types::sol_data::Uint<64>,
8127                alloy::sol_types::sol_data::Uint<64>,
8128                BN254::ScalarField,
8129            );
8130            #[doc(hidden)]
8131            type UnderlyingRustTuple<'a> = (
8132                u64,
8133                u64,
8134                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8135            );
8136            #[cfg(test)]
8137            #[allow(dead_code, unreachable_patterns)]
8138            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8139                match _t {
8140                    alloy_sol_types::private::AssertTypeEq::<
8141                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8142                    >(_) => {},
8143                }
8144            }
8145            #[automatically_derived]
8146            #[doc(hidden)]
8147            impl ::core::convert::From<finalizedStateReturn> for UnderlyingRustTuple<'_> {
8148                fn from(value: finalizedStateReturn) -> Self {
8149                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8150                }
8151            }
8152            #[automatically_derived]
8153            #[doc(hidden)]
8154            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateReturn {
8155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8156                    Self {
8157                        viewNum: tuple.0,
8158                        blockHeight: tuple.1,
8159                        blockCommRoot: tuple.2,
8160                    }
8161                }
8162            }
8163        }
8164        #[automatically_derived]
8165        impl alloy_sol_types::SolCall for finalizedStateCall {
8166            type Parameters<'a> = ();
8167            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8168            type Return = finalizedStateReturn;
8169            type ReturnTuple<'a> = (
8170                alloy::sol_types::sol_data::Uint<64>,
8171                alloy::sol_types::sol_data::Uint<64>,
8172                BN254::ScalarField,
8173            );
8174            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8175            const SIGNATURE: &'static str = "finalizedState()";
8176            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8177            #[inline]
8178            fn new<'a>(
8179                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8180            ) -> Self {
8181                tuple.into()
8182            }
8183            #[inline]
8184            fn tokenize(&self) -> Self::Token<'_> {
8185                ()
8186            }
8187            #[inline]
8188            fn abi_decode_returns(
8189                data: &[u8],
8190                validate: bool,
8191            ) -> alloy_sol_types::Result<Self::Return> {
8192                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8193                    data, validate,
8194                )
8195                .map(Into::into)
8196            }
8197        }
8198    };
8199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8200    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8201    ```solidity
8202    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8203    ```*/
8204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8205    #[derive(Clone)]
8206    pub struct genesisStakeTableStateCall {}
8207    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8208    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8210    #[derive(Clone)]
8211    pub struct genesisStakeTableStateReturn {
8212        #[allow(missing_docs)]
8213        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8214        #[allow(missing_docs)]
8215        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8216        #[allow(missing_docs)]
8217        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8218        #[allow(missing_docs)]
8219        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8220    }
8221    #[allow(
8222        non_camel_case_types,
8223        non_snake_case,
8224        clippy::pub_underscore_fields,
8225        clippy::style
8226    )]
8227    const _: () = {
8228        use alloy::sol_types as alloy_sol_types;
8229        {
8230            #[doc(hidden)]
8231            type UnderlyingSolTuple<'a> = ();
8232            #[doc(hidden)]
8233            type UnderlyingRustTuple<'a> = ();
8234            #[cfg(test)]
8235            #[allow(dead_code, unreachable_patterns)]
8236            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8237                match _t {
8238                    alloy_sol_types::private::AssertTypeEq::<
8239                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8240                    >(_) => {},
8241                }
8242            }
8243            #[automatically_derived]
8244            #[doc(hidden)]
8245            impl ::core::convert::From<genesisStakeTableStateCall> for UnderlyingRustTuple<'_> {
8246                fn from(value: genesisStakeTableStateCall) -> Self {
8247                    ()
8248                }
8249            }
8250            #[automatically_derived]
8251            #[doc(hidden)]
8252            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateCall {
8253                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8254                    Self {}
8255                }
8256            }
8257        }
8258        {
8259            #[doc(hidden)]
8260            type UnderlyingSolTuple<'a> = (
8261                alloy::sol_types::sol_data::Uint<256>,
8262                BN254::ScalarField,
8263                BN254::ScalarField,
8264                BN254::ScalarField,
8265            );
8266            #[doc(hidden)]
8267            type UnderlyingRustTuple<'a> = (
8268                alloy::sol_types::private::primitives::aliases::U256,
8269                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8270                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8271                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8272            );
8273            #[cfg(test)]
8274            #[allow(dead_code, unreachable_patterns)]
8275            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8276                match _t {
8277                    alloy_sol_types::private::AssertTypeEq::<
8278                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8279                    >(_) => {},
8280                }
8281            }
8282            #[automatically_derived]
8283            #[doc(hidden)]
8284            impl ::core::convert::From<genesisStakeTableStateReturn> for UnderlyingRustTuple<'_> {
8285                fn from(value: genesisStakeTableStateReturn) -> Self {
8286                    (
8287                        value.threshold,
8288                        value.blsKeyComm,
8289                        value.schnorrKeyComm,
8290                        value.amountComm,
8291                    )
8292                }
8293            }
8294            #[automatically_derived]
8295            #[doc(hidden)]
8296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateReturn {
8297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8298                    Self {
8299                        threshold: tuple.0,
8300                        blsKeyComm: tuple.1,
8301                        schnorrKeyComm: tuple.2,
8302                        amountComm: tuple.3,
8303                    }
8304                }
8305            }
8306        }
8307        #[automatically_derived]
8308        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8309            type Parameters<'a> = ();
8310            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8311            type Return = genesisStakeTableStateReturn;
8312            type ReturnTuple<'a> = (
8313                alloy::sol_types::sol_data::Uint<256>,
8314                BN254::ScalarField,
8315                BN254::ScalarField,
8316                BN254::ScalarField,
8317            );
8318            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8319            const SIGNATURE: &'static str = "genesisStakeTableState()";
8320            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8321            #[inline]
8322            fn new<'a>(
8323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8324            ) -> Self {
8325                tuple.into()
8326            }
8327            #[inline]
8328            fn tokenize(&self) -> Self::Token<'_> {
8329                ()
8330            }
8331            #[inline]
8332            fn abi_decode_returns(
8333                data: &[u8],
8334                validate: bool,
8335            ) -> alloy_sol_types::Result<Self::Return> {
8336                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8337                    data, validate,
8338                )
8339                .map(Into::into)
8340            }
8341        }
8342    };
8343    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8344    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8345    ```solidity
8346    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8347    ```*/
8348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8349    #[derive(Clone)]
8350    pub struct genesisStateCall {}
8351    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8352    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8353    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8354    #[derive(Clone)]
8355    pub struct genesisStateReturn {
8356        #[allow(missing_docs)]
8357        pub viewNum: u64,
8358        #[allow(missing_docs)]
8359        pub blockHeight: u64,
8360        #[allow(missing_docs)]
8361        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8362    }
8363    #[allow(
8364        non_camel_case_types,
8365        non_snake_case,
8366        clippy::pub_underscore_fields,
8367        clippy::style
8368    )]
8369    const _: () = {
8370        use alloy::sol_types as alloy_sol_types;
8371        {
8372            #[doc(hidden)]
8373            type UnderlyingSolTuple<'a> = ();
8374            #[doc(hidden)]
8375            type UnderlyingRustTuple<'a> = ();
8376            #[cfg(test)]
8377            #[allow(dead_code, unreachable_patterns)]
8378            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8379                match _t {
8380                    alloy_sol_types::private::AssertTypeEq::<
8381                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8382                    >(_) => {},
8383                }
8384            }
8385            #[automatically_derived]
8386            #[doc(hidden)]
8387            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8388                fn from(value: genesisStateCall) -> Self {
8389                    ()
8390                }
8391            }
8392            #[automatically_derived]
8393            #[doc(hidden)]
8394            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8395                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8396                    Self {}
8397                }
8398            }
8399        }
8400        {
8401            #[doc(hidden)]
8402            type UnderlyingSolTuple<'a> = (
8403                alloy::sol_types::sol_data::Uint<64>,
8404                alloy::sol_types::sol_data::Uint<64>,
8405                BN254::ScalarField,
8406            );
8407            #[doc(hidden)]
8408            type UnderlyingRustTuple<'a> = (
8409                u64,
8410                u64,
8411                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8412            );
8413            #[cfg(test)]
8414            #[allow(dead_code, unreachable_patterns)]
8415            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8416                match _t {
8417                    alloy_sol_types::private::AssertTypeEq::<
8418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8419                    >(_) => {},
8420                }
8421            }
8422            #[automatically_derived]
8423            #[doc(hidden)]
8424            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8425                fn from(value: genesisStateReturn) -> Self {
8426                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8427                }
8428            }
8429            #[automatically_derived]
8430            #[doc(hidden)]
8431            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8432                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8433                    Self {
8434                        viewNum: tuple.0,
8435                        blockHeight: tuple.1,
8436                        blockCommRoot: tuple.2,
8437                    }
8438                }
8439            }
8440        }
8441        #[automatically_derived]
8442        impl alloy_sol_types::SolCall for genesisStateCall {
8443            type Parameters<'a> = ();
8444            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8445            type Return = genesisStateReturn;
8446            type ReturnTuple<'a> = (
8447                alloy::sol_types::sol_data::Uint<64>,
8448                alloy::sol_types::sol_data::Uint<64>,
8449                BN254::ScalarField,
8450            );
8451            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8452            const SIGNATURE: &'static str = "genesisState()";
8453            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8454            #[inline]
8455            fn new<'a>(
8456                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8457            ) -> Self {
8458                tuple.into()
8459            }
8460            #[inline]
8461            fn tokenize(&self) -> Self::Token<'_> {
8462                ()
8463            }
8464            #[inline]
8465            fn abi_decode_returns(
8466                data: &[u8],
8467                validate: bool,
8468            ) -> alloy_sol_types::Result<Self::Return> {
8469                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8470                    data, validate,
8471                )
8472                .map(Into::into)
8473            }
8474        }
8475    };
8476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8477    /**Function with signature `getFirstEpoch()` and selector `0xb3daf254`.
8478    ```solidity
8479    function getFirstEpoch() external view returns (uint64);
8480    ```*/
8481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8482    #[derive(Clone)]
8483    pub struct getFirstEpochCall {}
8484    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8485    ///Container type for the return parameters of the [`getFirstEpoch()`](getFirstEpochCall) function.
8486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8487    #[derive(Clone)]
8488    pub struct getFirstEpochReturn {
8489        #[allow(missing_docs)]
8490        pub _0: u64,
8491    }
8492    #[allow(
8493        non_camel_case_types,
8494        non_snake_case,
8495        clippy::pub_underscore_fields,
8496        clippy::style
8497    )]
8498    const _: () = {
8499        use alloy::sol_types as alloy_sol_types;
8500        {
8501            #[doc(hidden)]
8502            type UnderlyingSolTuple<'a> = ();
8503            #[doc(hidden)]
8504            type UnderlyingRustTuple<'a> = ();
8505            #[cfg(test)]
8506            #[allow(dead_code, unreachable_patterns)]
8507            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8508                match _t {
8509                    alloy_sol_types::private::AssertTypeEq::<
8510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8511                    >(_) => {},
8512                }
8513            }
8514            #[automatically_derived]
8515            #[doc(hidden)]
8516            impl ::core::convert::From<getFirstEpochCall> for UnderlyingRustTuple<'_> {
8517                fn from(value: getFirstEpochCall) -> Self {
8518                    ()
8519                }
8520            }
8521            #[automatically_derived]
8522            #[doc(hidden)]
8523            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochCall {
8524                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8525                    Self {}
8526                }
8527            }
8528        }
8529        {
8530            #[doc(hidden)]
8531            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8532            #[doc(hidden)]
8533            type UnderlyingRustTuple<'a> = (u64,);
8534            #[cfg(test)]
8535            #[allow(dead_code, unreachable_patterns)]
8536            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8537                match _t {
8538                    alloy_sol_types::private::AssertTypeEq::<
8539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8540                    >(_) => {},
8541                }
8542            }
8543            #[automatically_derived]
8544            #[doc(hidden)]
8545            impl ::core::convert::From<getFirstEpochReturn> for UnderlyingRustTuple<'_> {
8546                fn from(value: getFirstEpochReturn) -> Self {
8547                    (value._0,)
8548                }
8549            }
8550            #[automatically_derived]
8551            #[doc(hidden)]
8552            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochReturn {
8553                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8554                    Self { _0: tuple.0 }
8555                }
8556            }
8557        }
8558        #[automatically_derived]
8559        impl alloy_sol_types::SolCall for getFirstEpochCall {
8560            type Parameters<'a> = ();
8561            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8562            type Return = getFirstEpochReturn;
8563            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8564            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8565            const SIGNATURE: &'static str = "getFirstEpoch()";
8566            const SELECTOR: [u8; 4] = [179u8, 218u8, 242u8, 84u8];
8567            #[inline]
8568            fn new<'a>(
8569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8570            ) -> Self {
8571                tuple.into()
8572            }
8573            #[inline]
8574            fn tokenize(&self) -> Self::Token<'_> {
8575                ()
8576            }
8577            #[inline]
8578            fn abi_decode_returns(
8579                data: &[u8],
8580                validate: bool,
8581            ) -> alloy_sol_types::Result<Self::Return> {
8582                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8583                    data, validate,
8584                )
8585                .map(Into::into)
8586            }
8587        }
8588    };
8589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8590    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8591    ```solidity
8592    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8593    ```*/
8594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8595    #[derive(Clone)]
8596    pub struct getHotShotCommitmentCall {
8597        #[allow(missing_docs)]
8598        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8599    }
8600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8601    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8603    #[derive(Clone)]
8604    pub struct getHotShotCommitmentReturn {
8605        #[allow(missing_docs)]
8606        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8607        #[allow(missing_docs)]
8608        pub hotshotBlockHeight: u64,
8609    }
8610    #[allow(
8611        non_camel_case_types,
8612        non_snake_case,
8613        clippy::pub_underscore_fields,
8614        clippy::style
8615    )]
8616    const _: () = {
8617        use alloy::sol_types as alloy_sol_types;
8618        {
8619            #[doc(hidden)]
8620            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8621            #[doc(hidden)]
8622            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8623            #[cfg(test)]
8624            #[allow(dead_code, unreachable_patterns)]
8625            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8626                match _t {
8627                    alloy_sol_types::private::AssertTypeEq::<
8628                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8629                    >(_) => {},
8630                }
8631            }
8632            #[automatically_derived]
8633            #[doc(hidden)]
8634            impl ::core::convert::From<getHotShotCommitmentCall> for UnderlyingRustTuple<'_> {
8635                fn from(value: getHotShotCommitmentCall) -> Self {
8636                    (value.hotShotBlockHeight,)
8637                }
8638            }
8639            #[automatically_derived]
8640            #[doc(hidden)]
8641            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentCall {
8642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8643                    Self {
8644                        hotShotBlockHeight: tuple.0,
8645                    }
8646                }
8647            }
8648        }
8649        {
8650            #[doc(hidden)]
8651            type UnderlyingSolTuple<'a> =
8652                (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
8653            #[doc(hidden)]
8654            type UnderlyingRustTuple<'a> = (
8655                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8656                u64,
8657            );
8658            #[cfg(test)]
8659            #[allow(dead_code, unreachable_patterns)]
8660            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8661                match _t {
8662                    alloy_sol_types::private::AssertTypeEq::<
8663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8664                    >(_) => {},
8665                }
8666            }
8667            #[automatically_derived]
8668            #[doc(hidden)]
8669            impl ::core::convert::From<getHotShotCommitmentReturn> for UnderlyingRustTuple<'_> {
8670                fn from(value: getHotShotCommitmentReturn) -> Self {
8671                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8672                }
8673            }
8674            #[automatically_derived]
8675            #[doc(hidden)]
8676            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentReturn {
8677                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8678                    Self {
8679                        hotShotBlockCommRoot: tuple.0,
8680                        hotshotBlockHeight: tuple.1,
8681                    }
8682                }
8683            }
8684        }
8685        #[automatically_derived]
8686        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8687            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8688            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8689            type Return = getHotShotCommitmentReturn;
8690            type ReturnTuple<'a> = (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
8691            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8692            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8693            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8694            #[inline]
8695            fn new<'a>(
8696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8697            ) -> Self {
8698                tuple.into()
8699            }
8700            #[inline]
8701            fn tokenize(&self) -> Self::Token<'_> {
8702                (
8703                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8704                        &self.hotShotBlockHeight,
8705                    ),
8706                )
8707            }
8708            #[inline]
8709            fn abi_decode_returns(
8710                data: &[u8],
8711                validate: bool,
8712            ) -> alloy_sol_types::Result<Self::Return> {
8713                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8714                    data, validate,
8715                )
8716                .map(Into::into)
8717            }
8718        }
8719    };
8720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8721    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8722    ```solidity
8723    function getStateHistoryCount() external view returns (uint256);
8724    ```*/
8725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8726    #[derive(Clone)]
8727    pub struct getStateHistoryCountCall {}
8728    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8729    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8731    #[derive(Clone)]
8732    pub struct getStateHistoryCountReturn {
8733        #[allow(missing_docs)]
8734        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8735    }
8736    #[allow(
8737        non_camel_case_types,
8738        non_snake_case,
8739        clippy::pub_underscore_fields,
8740        clippy::style
8741    )]
8742    const _: () = {
8743        use alloy::sol_types as alloy_sol_types;
8744        {
8745            #[doc(hidden)]
8746            type UnderlyingSolTuple<'a> = ();
8747            #[doc(hidden)]
8748            type UnderlyingRustTuple<'a> = ();
8749            #[cfg(test)]
8750            #[allow(dead_code, unreachable_patterns)]
8751            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8752                match _t {
8753                    alloy_sol_types::private::AssertTypeEq::<
8754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8755                    >(_) => {},
8756                }
8757            }
8758            #[automatically_derived]
8759            #[doc(hidden)]
8760            impl ::core::convert::From<getStateHistoryCountCall> for UnderlyingRustTuple<'_> {
8761                fn from(value: getStateHistoryCountCall) -> Self {
8762                    ()
8763                }
8764            }
8765            #[automatically_derived]
8766            #[doc(hidden)]
8767            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountCall {
8768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8769                    Self {}
8770                }
8771            }
8772        }
8773        {
8774            #[doc(hidden)]
8775            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8776            #[doc(hidden)]
8777            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8778            #[cfg(test)]
8779            #[allow(dead_code, unreachable_patterns)]
8780            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8781                match _t {
8782                    alloy_sol_types::private::AssertTypeEq::<
8783                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8784                    >(_) => {},
8785                }
8786            }
8787            #[automatically_derived]
8788            #[doc(hidden)]
8789            impl ::core::convert::From<getStateHistoryCountReturn> for UnderlyingRustTuple<'_> {
8790                fn from(value: getStateHistoryCountReturn) -> Self {
8791                    (value._0,)
8792                }
8793            }
8794            #[automatically_derived]
8795            #[doc(hidden)]
8796            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountReturn {
8797                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8798                    Self { _0: tuple.0 }
8799                }
8800            }
8801        }
8802        #[automatically_derived]
8803        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8804            type Parameters<'a> = ();
8805            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8806            type Return = getStateHistoryCountReturn;
8807            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8808            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8809            const SIGNATURE: &'static str = "getStateHistoryCount()";
8810            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8811            #[inline]
8812            fn new<'a>(
8813                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8814            ) -> Self {
8815                tuple.into()
8816            }
8817            #[inline]
8818            fn tokenize(&self) -> Self::Token<'_> {
8819                ()
8820            }
8821            #[inline]
8822            fn abi_decode_returns(
8823                data: &[u8],
8824                validate: bool,
8825            ) -> alloy_sol_types::Result<Self::Return> {
8826                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8827                    data, validate,
8828                )
8829                .map(Into::into)
8830            }
8831        }
8832    };
8833    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8834    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8835    ```solidity
8836    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8837    ```*/
8838    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8839    #[derive(Clone)]
8840    pub struct getVersionCall {}
8841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8842    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8844    #[derive(Clone)]
8845    pub struct getVersionReturn {
8846        #[allow(missing_docs)]
8847        pub majorVersion: u8,
8848        #[allow(missing_docs)]
8849        pub minorVersion: u8,
8850        #[allow(missing_docs)]
8851        pub patchVersion: u8,
8852    }
8853    #[allow(
8854        non_camel_case_types,
8855        non_snake_case,
8856        clippy::pub_underscore_fields,
8857        clippy::style
8858    )]
8859    const _: () = {
8860        use alloy::sol_types as alloy_sol_types;
8861        {
8862            #[doc(hidden)]
8863            type UnderlyingSolTuple<'a> = ();
8864            #[doc(hidden)]
8865            type UnderlyingRustTuple<'a> = ();
8866            #[cfg(test)]
8867            #[allow(dead_code, unreachable_patterns)]
8868            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8869                match _t {
8870                    alloy_sol_types::private::AssertTypeEq::<
8871                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8872                    >(_) => {},
8873                }
8874            }
8875            #[automatically_derived]
8876            #[doc(hidden)]
8877            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8878                fn from(value: getVersionCall) -> Self {
8879                    ()
8880                }
8881            }
8882            #[automatically_derived]
8883            #[doc(hidden)]
8884            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8885                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8886                    Self {}
8887                }
8888            }
8889        }
8890        {
8891            #[doc(hidden)]
8892            type UnderlyingSolTuple<'a> = (
8893                alloy::sol_types::sol_data::Uint<8>,
8894                alloy::sol_types::sol_data::Uint<8>,
8895                alloy::sol_types::sol_data::Uint<8>,
8896            );
8897            #[doc(hidden)]
8898            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8899            #[cfg(test)]
8900            #[allow(dead_code, unreachable_patterns)]
8901            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8902                match _t {
8903                    alloy_sol_types::private::AssertTypeEq::<
8904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8905                    >(_) => {},
8906                }
8907            }
8908            #[automatically_derived]
8909            #[doc(hidden)]
8910            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8911                fn from(value: getVersionReturn) -> Self {
8912                    (value.majorVersion, value.minorVersion, value.patchVersion)
8913                }
8914            }
8915            #[automatically_derived]
8916            #[doc(hidden)]
8917            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8918                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8919                    Self {
8920                        majorVersion: tuple.0,
8921                        minorVersion: tuple.1,
8922                        patchVersion: tuple.2,
8923                    }
8924                }
8925            }
8926        }
8927        #[automatically_derived]
8928        impl alloy_sol_types::SolCall for getVersionCall {
8929            type Parameters<'a> = ();
8930            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8931            type Return = getVersionReturn;
8932            type ReturnTuple<'a> = (
8933                alloy::sol_types::sol_data::Uint<8>,
8934                alloy::sol_types::sol_data::Uint<8>,
8935                alloy::sol_types::sol_data::Uint<8>,
8936            );
8937            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8938            const SIGNATURE: &'static str = "getVersion()";
8939            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8940            #[inline]
8941            fn new<'a>(
8942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8943            ) -> Self {
8944                tuple.into()
8945            }
8946            #[inline]
8947            fn tokenize(&self) -> Self::Token<'_> {
8948                ()
8949            }
8950            #[inline]
8951            fn abi_decode_returns(
8952                data: &[u8],
8953                validate: bool,
8954            ) -> alloy_sol_types::Result<Self::Return> {
8955                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8956                    data, validate,
8957                )
8958                .map(Into::into)
8959            }
8960        }
8961    };
8962    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8963    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8964    ```solidity
8965    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8966    ```*/
8967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8968    #[derive(Clone)]
8969    pub struct initializeCall {
8970        #[allow(missing_docs)]
8971        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8972        #[allow(missing_docs)]
8973        pub _genesisStakeTableState:
8974            <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8975        #[allow(missing_docs)]
8976        pub _stateHistoryRetentionPeriod: u32,
8977        #[allow(missing_docs)]
8978        pub owner: alloy::sol_types::private::Address,
8979    }
8980    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8981    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8982    #[derive(Clone)]
8983    pub struct initializeReturn {}
8984    #[allow(
8985        non_camel_case_types,
8986        non_snake_case,
8987        clippy::pub_underscore_fields,
8988        clippy::style
8989    )]
8990    const _: () = {
8991        use alloy::sol_types as alloy_sol_types;
8992        {
8993            #[doc(hidden)]
8994            type UnderlyingSolTuple<'a> = (
8995                LightClient::LightClientState,
8996                LightClient::StakeTableState,
8997                alloy::sol_types::sol_data::Uint<32>,
8998                alloy::sol_types::sol_data::Address,
8999            );
9000            #[doc(hidden)]
9001            type UnderlyingRustTuple<'a> = (
9002                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9003                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9004                u32,
9005                alloy::sol_types::private::Address,
9006            );
9007            #[cfg(test)]
9008            #[allow(dead_code, unreachable_patterns)]
9009            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9010                match _t {
9011                    alloy_sol_types::private::AssertTypeEq::<
9012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9013                    >(_) => {},
9014                }
9015            }
9016            #[automatically_derived]
9017            #[doc(hidden)]
9018            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9019                fn from(value: initializeCall) -> Self {
9020                    (
9021                        value._genesis,
9022                        value._genesisStakeTableState,
9023                        value._stateHistoryRetentionPeriod,
9024                        value.owner,
9025                    )
9026                }
9027            }
9028            #[automatically_derived]
9029            #[doc(hidden)]
9030            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9032                    Self {
9033                        _genesis: tuple.0,
9034                        _genesisStakeTableState: tuple.1,
9035                        _stateHistoryRetentionPeriod: tuple.2,
9036                        owner: tuple.3,
9037                    }
9038                }
9039            }
9040        }
9041        {
9042            #[doc(hidden)]
9043            type UnderlyingSolTuple<'a> = ();
9044            #[doc(hidden)]
9045            type UnderlyingRustTuple<'a> = ();
9046            #[cfg(test)]
9047            #[allow(dead_code, unreachable_patterns)]
9048            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9049                match _t {
9050                    alloy_sol_types::private::AssertTypeEq::<
9051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9052                    >(_) => {},
9053                }
9054            }
9055            #[automatically_derived]
9056            #[doc(hidden)]
9057            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9058                fn from(value: initializeReturn) -> Self {
9059                    ()
9060                }
9061            }
9062            #[automatically_derived]
9063            #[doc(hidden)]
9064            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9066                    Self {}
9067                }
9068            }
9069        }
9070        #[automatically_derived]
9071        impl alloy_sol_types::SolCall for initializeCall {
9072            type Parameters<'a> = (
9073                LightClient::LightClientState,
9074                LightClient::StakeTableState,
9075                alloy::sol_types::sol_data::Uint<32>,
9076                alloy::sol_types::sol_data::Address,
9077            );
9078            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9079            type Return = initializeReturn;
9080            type ReturnTuple<'a> = ();
9081            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9082            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9083            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9084            #[inline]
9085            fn new<'a>(
9086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9087            ) -> Self {
9088                tuple.into()
9089            }
9090            #[inline]
9091            fn tokenize(&self) -> Self::Token<'_> {
9092                (
9093                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9094                        &self._genesis,
9095                    ),
9096                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9097                        &self._genesisStakeTableState,
9098                    ),
9099                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
9100                        &self._stateHistoryRetentionPeriod,
9101                    ),
9102                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9103                        &self.owner,
9104                    ),
9105                )
9106            }
9107            #[inline]
9108            fn abi_decode_returns(
9109                data: &[u8],
9110                validate: bool,
9111            ) -> alloy_sol_types::Result<Self::Return> {
9112                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9113                    data, validate,
9114                )
9115                .map(Into::into)
9116            }
9117        }
9118    };
9119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9120    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
9121    ```solidity
9122    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
9123    ```*/
9124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9125    #[derive(Clone)]
9126    pub struct initializeV2Call {
9127        #[allow(missing_docs)]
9128        pub _blocksPerEpoch: u64,
9129        #[allow(missing_docs)]
9130        pub _epochStartBlock: u64,
9131    }
9132    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
9133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9134    #[derive(Clone)]
9135    pub struct initializeV2Return {}
9136    #[allow(
9137        non_camel_case_types,
9138        non_snake_case,
9139        clippy::pub_underscore_fields,
9140        clippy::style
9141    )]
9142    const _: () = {
9143        use alloy::sol_types as alloy_sol_types;
9144        {
9145            #[doc(hidden)]
9146            type UnderlyingSolTuple<'a> = (
9147                alloy::sol_types::sol_data::Uint<64>,
9148                alloy::sol_types::sol_data::Uint<64>,
9149            );
9150            #[doc(hidden)]
9151            type UnderlyingRustTuple<'a> = (u64, u64);
9152            #[cfg(test)]
9153            #[allow(dead_code, unreachable_patterns)]
9154            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9155                match _t {
9156                    alloy_sol_types::private::AssertTypeEq::<
9157                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9158                    >(_) => {},
9159                }
9160            }
9161            #[automatically_derived]
9162            #[doc(hidden)]
9163            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9164                fn from(value: initializeV2Call) -> Self {
9165                    (value._blocksPerEpoch, value._epochStartBlock)
9166                }
9167            }
9168            #[automatically_derived]
9169            #[doc(hidden)]
9170            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9171                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9172                    Self {
9173                        _blocksPerEpoch: tuple.0,
9174                        _epochStartBlock: tuple.1,
9175                    }
9176                }
9177            }
9178        }
9179        {
9180            #[doc(hidden)]
9181            type UnderlyingSolTuple<'a> = ();
9182            #[doc(hidden)]
9183            type UnderlyingRustTuple<'a> = ();
9184            #[cfg(test)]
9185            #[allow(dead_code, unreachable_patterns)]
9186            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9187                match _t {
9188                    alloy_sol_types::private::AssertTypeEq::<
9189                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9190                    >(_) => {},
9191                }
9192            }
9193            #[automatically_derived]
9194            #[doc(hidden)]
9195            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
9196                fn from(value: initializeV2Return) -> Self {
9197                    ()
9198                }
9199            }
9200            #[automatically_derived]
9201            #[doc(hidden)]
9202            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9203                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9204                    Self {}
9205                }
9206            }
9207        }
9208        #[automatically_derived]
9209        impl alloy_sol_types::SolCall for initializeV2Call {
9210            type Parameters<'a> = (
9211                alloy::sol_types::sol_data::Uint<64>,
9212                alloy::sol_types::sol_data::Uint<64>,
9213            );
9214            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9215            type Return = initializeV2Return;
9216            type ReturnTuple<'a> = ();
9217            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9218            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
9219            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
9220            #[inline]
9221            fn new<'a>(
9222                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9223            ) -> Self {
9224                tuple.into()
9225            }
9226            #[inline]
9227            fn tokenize(&self) -> Self::Token<'_> {
9228                (
9229                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
9230                        &self._blocksPerEpoch,
9231                    ),
9232                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
9233                        &self._epochStartBlock,
9234                    ),
9235                )
9236            }
9237            #[inline]
9238            fn abi_decode_returns(
9239                data: &[u8],
9240                validate: bool,
9241            ) -> alloy_sol_types::Result<Self::Return> {
9242                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9243                    data, validate,
9244                )
9245                .map(Into::into)
9246            }
9247        }
9248    };
9249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9250    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
9251    ```solidity
9252    function isEpochRoot(uint64 blockHeight) external view returns (bool);
9253    ```*/
9254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9255    #[derive(Clone)]
9256    pub struct isEpochRootCall {
9257        #[allow(missing_docs)]
9258        pub blockHeight: u64,
9259    }
9260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9261    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
9262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9263    #[derive(Clone)]
9264    pub struct isEpochRootReturn {
9265        #[allow(missing_docs)]
9266        pub _0: bool,
9267    }
9268    #[allow(
9269        non_camel_case_types,
9270        non_snake_case,
9271        clippy::pub_underscore_fields,
9272        clippy::style
9273    )]
9274    const _: () = {
9275        use alloy::sol_types as alloy_sol_types;
9276        {
9277            #[doc(hidden)]
9278            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9279            #[doc(hidden)]
9280            type UnderlyingRustTuple<'a> = (u64,);
9281            #[cfg(test)]
9282            #[allow(dead_code, unreachable_patterns)]
9283            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9284                match _t {
9285                    alloy_sol_types::private::AssertTypeEq::<
9286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9287                    >(_) => {},
9288                }
9289            }
9290            #[automatically_derived]
9291            #[doc(hidden)]
9292            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
9293                fn from(value: isEpochRootCall) -> Self {
9294                    (value.blockHeight,)
9295                }
9296            }
9297            #[automatically_derived]
9298            #[doc(hidden)]
9299            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
9300                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9301                    Self {
9302                        blockHeight: tuple.0,
9303                    }
9304                }
9305            }
9306        }
9307        {
9308            #[doc(hidden)]
9309            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9310            #[doc(hidden)]
9311            type UnderlyingRustTuple<'a> = (bool,);
9312            #[cfg(test)]
9313            #[allow(dead_code, unreachable_patterns)]
9314            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9315                match _t {
9316                    alloy_sol_types::private::AssertTypeEq::<
9317                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9318                    >(_) => {},
9319                }
9320            }
9321            #[automatically_derived]
9322            #[doc(hidden)]
9323            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
9324                fn from(value: isEpochRootReturn) -> Self {
9325                    (value._0,)
9326                }
9327            }
9328            #[automatically_derived]
9329            #[doc(hidden)]
9330            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
9331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9332                    Self { _0: tuple.0 }
9333                }
9334            }
9335        }
9336        #[automatically_derived]
9337        impl alloy_sol_types::SolCall for isEpochRootCall {
9338            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9339            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9340            type Return = isEpochRootReturn;
9341            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9342            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9343            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
9344            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
9345            #[inline]
9346            fn new<'a>(
9347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9348            ) -> Self {
9349                tuple.into()
9350            }
9351            #[inline]
9352            fn tokenize(&self) -> Self::Token<'_> {
9353                (
9354                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
9355                        &self.blockHeight,
9356                    ),
9357                )
9358            }
9359            #[inline]
9360            fn abi_decode_returns(
9361                data: &[u8],
9362                validate: bool,
9363            ) -> alloy_sol_types::Result<Self::Return> {
9364                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9365                    data, validate,
9366                )
9367                .map(Into::into)
9368            }
9369        }
9370    };
9371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9372    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
9373    ```solidity
9374    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
9375    ```*/
9376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9377    #[derive(Clone)]
9378    pub struct isGtEpochRootCall {
9379        #[allow(missing_docs)]
9380        pub blockHeight: u64,
9381    }
9382    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9383    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
9384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9385    #[derive(Clone)]
9386    pub struct isGtEpochRootReturn {
9387        #[allow(missing_docs)]
9388        pub _0: bool,
9389    }
9390    #[allow(
9391        non_camel_case_types,
9392        non_snake_case,
9393        clippy::pub_underscore_fields,
9394        clippy::style
9395    )]
9396    const _: () = {
9397        use alloy::sol_types as alloy_sol_types;
9398        {
9399            #[doc(hidden)]
9400            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9401            #[doc(hidden)]
9402            type UnderlyingRustTuple<'a> = (u64,);
9403            #[cfg(test)]
9404            #[allow(dead_code, unreachable_patterns)]
9405            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9406                match _t {
9407                    alloy_sol_types::private::AssertTypeEq::<
9408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9409                    >(_) => {},
9410                }
9411            }
9412            #[automatically_derived]
9413            #[doc(hidden)]
9414            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
9415                fn from(value: isGtEpochRootCall) -> Self {
9416                    (value.blockHeight,)
9417                }
9418            }
9419            #[automatically_derived]
9420            #[doc(hidden)]
9421            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
9422                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9423                    Self {
9424                        blockHeight: tuple.0,
9425                    }
9426                }
9427            }
9428        }
9429        {
9430            #[doc(hidden)]
9431            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9432            #[doc(hidden)]
9433            type UnderlyingRustTuple<'a> = (bool,);
9434            #[cfg(test)]
9435            #[allow(dead_code, unreachable_patterns)]
9436            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9437                match _t {
9438                    alloy_sol_types::private::AssertTypeEq::<
9439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9440                    >(_) => {},
9441                }
9442            }
9443            #[automatically_derived]
9444            #[doc(hidden)]
9445            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
9446                fn from(value: isGtEpochRootReturn) -> Self {
9447                    (value._0,)
9448                }
9449            }
9450            #[automatically_derived]
9451            #[doc(hidden)]
9452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
9453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9454                    Self { _0: tuple.0 }
9455                }
9456            }
9457        }
9458        #[automatically_derived]
9459        impl alloy_sol_types::SolCall for isGtEpochRootCall {
9460            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9461            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9462            type Return = isGtEpochRootReturn;
9463            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9464            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9465            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
9466            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
9467            #[inline]
9468            fn new<'a>(
9469                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9470            ) -> Self {
9471                tuple.into()
9472            }
9473            #[inline]
9474            fn tokenize(&self) -> Self::Token<'_> {
9475                (
9476                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
9477                        &self.blockHeight,
9478                    ),
9479                )
9480            }
9481            #[inline]
9482            fn abi_decode_returns(
9483                data: &[u8],
9484                validate: bool,
9485            ) -> alloy_sol_types::Result<Self::Return> {
9486                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9487                    data, validate,
9488                )
9489                .map(Into::into)
9490            }
9491        }
9492    };
9493    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9494    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
9495    ```solidity
9496    function isPermissionedProverEnabled() external view returns (bool);
9497    ```*/
9498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9499    #[derive(Clone)]
9500    pub struct isPermissionedProverEnabledCall {}
9501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9502    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
9503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9504    #[derive(Clone)]
9505    pub struct isPermissionedProverEnabledReturn {
9506        #[allow(missing_docs)]
9507        pub _0: bool,
9508    }
9509    #[allow(
9510        non_camel_case_types,
9511        non_snake_case,
9512        clippy::pub_underscore_fields,
9513        clippy::style
9514    )]
9515    const _: () = {
9516        use alloy::sol_types as alloy_sol_types;
9517        {
9518            #[doc(hidden)]
9519            type UnderlyingSolTuple<'a> = ();
9520            #[doc(hidden)]
9521            type UnderlyingRustTuple<'a> = ();
9522            #[cfg(test)]
9523            #[allow(dead_code, unreachable_patterns)]
9524            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9525                match _t {
9526                    alloy_sol_types::private::AssertTypeEq::<
9527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9528                    >(_) => {},
9529                }
9530            }
9531            #[automatically_derived]
9532            #[doc(hidden)]
9533            impl ::core::convert::From<isPermissionedProverEnabledCall> for UnderlyingRustTuple<'_> {
9534                fn from(value: isPermissionedProverEnabledCall) -> Self {
9535                    ()
9536                }
9537            }
9538            #[automatically_derived]
9539            #[doc(hidden)]
9540            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledCall {
9541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9542                    Self {}
9543                }
9544            }
9545        }
9546        {
9547            #[doc(hidden)]
9548            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9549            #[doc(hidden)]
9550            type UnderlyingRustTuple<'a> = (bool,);
9551            #[cfg(test)]
9552            #[allow(dead_code, unreachable_patterns)]
9553            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9554                match _t {
9555                    alloy_sol_types::private::AssertTypeEq::<
9556                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9557                    >(_) => {},
9558                }
9559            }
9560            #[automatically_derived]
9561            #[doc(hidden)]
9562            impl ::core::convert::From<isPermissionedProverEnabledReturn> for UnderlyingRustTuple<'_> {
9563                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9564                    (value._0,)
9565                }
9566            }
9567            #[automatically_derived]
9568            #[doc(hidden)]
9569            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledReturn {
9570                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9571                    Self { _0: tuple.0 }
9572                }
9573            }
9574        }
9575        #[automatically_derived]
9576        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9577            type Parameters<'a> = ();
9578            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9579            type Return = isPermissionedProverEnabledReturn;
9580            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9581            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9582            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9583            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9584            #[inline]
9585            fn new<'a>(
9586                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9587            ) -> Self {
9588                tuple.into()
9589            }
9590            #[inline]
9591            fn tokenize(&self) -> Self::Token<'_> {
9592                ()
9593            }
9594            #[inline]
9595            fn abi_decode_returns(
9596                data: &[u8],
9597                validate: bool,
9598            ) -> alloy_sol_types::Result<Self::Return> {
9599                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9600                    data, validate,
9601                )
9602                .map(Into::into)
9603            }
9604        }
9605    };
9606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9607    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9608    ```solidity
9609    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
9610    ```*/
9611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9612    #[derive(Clone)]
9613    pub struct lagOverEscapeHatchThresholdCall {
9614        #[allow(missing_docs)]
9615        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9616        #[allow(missing_docs)]
9617        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9618    }
9619    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9620    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9621    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9622    #[derive(Clone)]
9623    pub struct lagOverEscapeHatchThresholdReturn {
9624        #[allow(missing_docs)]
9625        pub _0: bool,
9626    }
9627    #[allow(
9628        non_camel_case_types,
9629        non_snake_case,
9630        clippy::pub_underscore_fields,
9631        clippy::style
9632    )]
9633    const _: () = {
9634        use alloy::sol_types as alloy_sol_types;
9635        {
9636            #[doc(hidden)]
9637            type UnderlyingSolTuple<'a> = (
9638                alloy::sol_types::sol_data::Uint<256>,
9639                alloy::sol_types::sol_data::Uint<256>,
9640            );
9641            #[doc(hidden)]
9642            type UnderlyingRustTuple<'a> = (
9643                alloy::sol_types::private::primitives::aliases::U256,
9644                alloy::sol_types::private::primitives::aliases::U256,
9645            );
9646            #[cfg(test)]
9647            #[allow(dead_code, unreachable_patterns)]
9648            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9649                match _t {
9650                    alloy_sol_types::private::AssertTypeEq::<
9651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9652                    >(_) => {},
9653                }
9654            }
9655            #[automatically_derived]
9656            #[doc(hidden)]
9657            impl ::core::convert::From<lagOverEscapeHatchThresholdCall> for UnderlyingRustTuple<'_> {
9658                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9659                    (value.blockNumber, value.threshold)
9660                }
9661            }
9662            #[automatically_derived]
9663            #[doc(hidden)]
9664            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdCall {
9665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9666                    Self {
9667                        blockNumber: tuple.0,
9668                        threshold: tuple.1,
9669                    }
9670                }
9671            }
9672        }
9673        {
9674            #[doc(hidden)]
9675            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9676            #[doc(hidden)]
9677            type UnderlyingRustTuple<'a> = (bool,);
9678            #[cfg(test)]
9679            #[allow(dead_code, unreachable_patterns)]
9680            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9681                match _t {
9682                    alloy_sol_types::private::AssertTypeEq::<
9683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9684                    >(_) => {},
9685                }
9686            }
9687            #[automatically_derived]
9688            #[doc(hidden)]
9689            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn> for UnderlyingRustTuple<'_> {
9690                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9691                    (value._0,)
9692                }
9693            }
9694            #[automatically_derived]
9695            #[doc(hidden)]
9696            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdReturn {
9697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9698                    Self { _0: tuple.0 }
9699                }
9700            }
9701        }
9702        #[automatically_derived]
9703        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9704            type Parameters<'a> = (
9705                alloy::sol_types::sol_data::Uint<256>,
9706                alloy::sol_types::sol_data::Uint<256>,
9707            );
9708            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9709            type Return = lagOverEscapeHatchThresholdReturn;
9710            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9711            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9712            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9713            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9714            #[inline]
9715            fn new<'a>(
9716                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9717            ) -> Self {
9718                tuple.into()
9719            }
9720            #[inline]
9721            fn tokenize(&self) -> Self::Token<'_> {
9722                (
9723                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9724                        &self.blockNumber,
9725                    ),
9726                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9727                        &self.threshold,
9728                    ),
9729                )
9730            }
9731            #[inline]
9732            fn abi_decode_returns(
9733                data: &[u8],
9734                validate: bool,
9735            ) -> alloy_sol_types::Result<Self::Return> {
9736                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9737                    data, validate,
9738                )
9739                .map(Into::into)
9740            }
9741        }
9742    };
9743    #[derive()]
9744    /**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`.
9745    ```solidity
9746    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
9747    ```*/
9748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9749    #[derive(Clone)]
9750    pub struct newFinalizedState_0Call {
9751        #[allow(missing_docs)]
9752        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9753        #[allow(missing_docs)]
9754        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9755    }
9756    ///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.
9757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9758    #[derive(Clone)]
9759    pub struct newFinalizedState_0Return {}
9760    #[allow(
9761        non_camel_case_types,
9762        non_snake_case,
9763        clippy::pub_underscore_fields,
9764        clippy::style
9765    )]
9766    const _: () = {
9767        use alloy::sol_types as alloy_sol_types;
9768        {
9769            #[doc(hidden)]
9770            type UnderlyingSolTuple<'a> =
9771                (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
9772            #[doc(hidden)]
9773            type UnderlyingRustTuple<'a> = (
9774                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9775                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9776            );
9777            #[cfg(test)]
9778            #[allow(dead_code, unreachable_patterns)]
9779            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9780                match _t {
9781                    alloy_sol_types::private::AssertTypeEq::<
9782                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9783                    >(_) => {},
9784                }
9785            }
9786            #[automatically_derived]
9787            #[doc(hidden)]
9788            impl ::core::convert::From<newFinalizedState_0Call> for UnderlyingRustTuple<'_> {
9789                fn from(value: newFinalizedState_0Call) -> Self {
9790                    (value._0, value._1)
9791                }
9792            }
9793            #[automatically_derived]
9794            #[doc(hidden)]
9795            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_0Call {
9796                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9797                    Self {
9798                        _0: tuple.0,
9799                        _1: tuple.1,
9800                    }
9801                }
9802            }
9803        }
9804        {
9805            #[doc(hidden)]
9806            type UnderlyingSolTuple<'a> = ();
9807            #[doc(hidden)]
9808            type UnderlyingRustTuple<'a> = ();
9809            #[cfg(test)]
9810            #[allow(dead_code, unreachable_patterns)]
9811            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9812                match _t {
9813                    alloy_sol_types::private::AssertTypeEq::<
9814                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9815                    >(_) => {},
9816                }
9817            }
9818            #[automatically_derived]
9819            #[doc(hidden)]
9820            impl ::core::convert::From<newFinalizedState_0Return> for UnderlyingRustTuple<'_> {
9821                fn from(value: newFinalizedState_0Return) -> Self {
9822                    ()
9823                }
9824            }
9825            #[automatically_derived]
9826            #[doc(hidden)]
9827            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_0Return {
9828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9829                    Self {}
9830                }
9831            }
9832        }
9833        #[automatically_derived]
9834        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
9835            type Parameters<'a> = (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
9836            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9837            type Return = newFinalizedState_0Return;
9838            type ReturnTuple<'a> = ();
9839            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9840            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))";
9841            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9842            #[inline]
9843            fn new<'a>(
9844                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9845            ) -> Self {
9846                tuple.into()
9847            }
9848            #[inline]
9849            fn tokenize(&self) -> Self::Token<'_> {
9850                (
9851                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(&self._0),
9852                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self._1),
9853                )
9854            }
9855            #[inline]
9856            fn abi_decode_returns(
9857                data: &[u8],
9858                validate: bool,
9859            ) -> alloy_sol_types::Result<Self::Return> {
9860                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9861                    data, validate,
9862                )
9863                .map(Into::into)
9864            }
9865        }
9866    };
9867    #[derive()]
9868    /**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`.
9869    ```solidity
9870    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
9871    ```*/
9872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9873    #[derive(Clone)]
9874    pub struct newFinalizedState_1Call {
9875        #[allow(missing_docs)]
9876        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9877        #[allow(missing_docs)]
9878        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9879        #[allow(missing_docs)]
9880        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9881    }
9882    ///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.
9883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9884    #[derive(Clone)]
9885    pub struct newFinalizedState_1Return {}
9886    #[allow(
9887        non_camel_case_types,
9888        non_snake_case,
9889        clippy::pub_underscore_fields,
9890        clippy::style
9891    )]
9892    const _: () = {
9893        use alloy::sol_types as alloy_sol_types;
9894        {
9895            #[doc(hidden)]
9896            type UnderlyingSolTuple<'a> = (
9897                LightClient::LightClientState,
9898                LightClient::StakeTableState,
9899                IPlonkVerifier::PlonkProof,
9900            );
9901            #[doc(hidden)]
9902            type UnderlyingRustTuple<'a> = (
9903                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9904                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9905                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9906            );
9907            #[cfg(test)]
9908            #[allow(dead_code, unreachable_patterns)]
9909            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9910                match _t {
9911                    alloy_sol_types::private::AssertTypeEq::<
9912                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9913                    >(_) => {},
9914                }
9915            }
9916            #[automatically_derived]
9917            #[doc(hidden)]
9918            impl ::core::convert::From<newFinalizedState_1Call> for UnderlyingRustTuple<'_> {
9919                fn from(value: newFinalizedState_1Call) -> Self {
9920                    (value.newState, value.nextStakeTable, value.proof)
9921                }
9922            }
9923            #[automatically_derived]
9924            #[doc(hidden)]
9925            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_1Call {
9926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9927                    Self {
9928                        newState: tuple.0,
9929                        nextStakeTable: tuple.1,
9930                        proof: tuple.2,
9931                    }
9932                }
9933            }
9934        }
9935        {
9936            #[doc(hidden)]
9937            type UnderlyingSolTuple<'a> = ();
9938            #[doc(hidden)]
9939            type UnderlyingRustTuple<'a> = ();
9940            #[cfg(test)]
9941            #[allow(dead_code, unreachable_patterns)]
9942            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9943                match _t {
9944                    alloy_sol_types::private::AssertTypeEq::<
9945                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9946                    >(_) => {},
9947                }
9948            }
9949            #[automatically_derived]
9950            #[doc(hidden)]
9951            impl ::core::convert::From<newFinalizedState_1Return> for UnderlyingRustTuple<'_> {
9952                fn from(value: newFinalizedState_1Return) -> Self {
9953                    ()
9954                }
9955            }
9956            #[automatically_derived]
9957            #[doc(hidden)]
9958            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_1Return {
9959                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9960                    Self {}
9961                }
9962            }
9963        }
9964        #[automatically_derived]
9965        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
9966            type Parameters<'a> = (
9967                LightClient::LightClientState,
9968                LightClient::StakeTableState,
9969                IPlonkVerifier::PlonkProof,
9970            );
9971            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9972            type Return = newFinalizedState_1Return;
9973            type ReturnTuple<'a> = ();
9974            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9975            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))";
9976            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
9977            #[inline]
9978            fn new<'a>(
9979                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9980            ) -> Self {
9981                tuple.into()
9982            }
9983            #[inline]
9984            fn tokenize(&self) -> Self::Token<'_> {
9985                (
9986                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9987                        &self.newState,
9988                    ),
9989                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9990                        &self.nextStakeTable,
9991                    ),
9992                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
9993                )
9994            }
9995            #[inline]
9996            fn abi_decode_returns(
9997                data: &[u8],
9998                validate: bool,
9999            ) -> alloy_sol_types::Result<Self::Return> {
10000                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10001                    data, validate,
10002                )
10003                .map(Into::into)
10004            }
10005        }
10006    };
10007    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10008    /**Function with signature `owner()` and selector `0x8da5cb5b`.
10009    ```solidity
10010    function owner() external view returns (address);
10011    ```*/
10012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10013    #[derive(Clone)]
10014    pub struct ownerCall {}
10015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10016    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
10017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10018    #[derive(Clone)]
10019    pub struct ownerReturn {
10020        #[allow(missing_docs)]
10021        pub _0: alloy::sol_types::private::Address,
10022    }
10023    #[allow(
10024        non_camel_case_types,
10025        non_snake_case,
10026        clippy::pub_underscore_fields,
10027        clippy::style
10028    )]
10029    const _: () = {
10030        use alloy::sol_types as alloy_sol_types;
10031        {
10032            #[doc(hidden)]
10033            type UnderlyingSolTuple<'a> = ();
10034            #[doc(hidden)]
10035            type UnderlyingRustTuple<'a> = ();
10036            #[cfg(test)]
10037            #[allow(dead_code, unreachable_patterns)]
10038            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10039                match _t {
10040                    alloy_sol_types::private::AssertTypeEq::<
10041                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10042                    >(_) => {},
10043                }
10044            }
10045            #[automatically_derived]
10046            #[doc(hidden)]
10047            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
10048                fn from(value: ownerCall) -> Self {
10049                    ()
10050                }
10051            }
10052            #[automatically_derived]
10053            #[doc(hidden)]
10054            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
10055                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10056                    Self {}
10057                }
10058            }
10059        }
10060        {
10061            #[doc(hidden)]
10062            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10063            #[doc(hidden)]
10064            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10065            #[cfg(test)]
10066            #[allow(dead_code, unreachable_patterns)]
10067            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10068                match _t {
10069                    alloy_sol_types::private::AssertTypeEq::<
10070                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10071                    >(_) => {},
10072                }
10073            }
10074            #[automatically_derived]
10075            #[doc(hidden)]
10076            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
10077                fn from(value: ownerReturn) -> Self {
10078                    (value._0,)
10079                }
10080            }
10081            #[automatically_derived]
10082            #[doc(hidden)]
10083            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
10084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10085                    Self { _0: tuple.0 }
10086                }
10087            }
10088        }
10089        #[automatically_derived]
10090        impl alloy_sol_types::SolCall for ownerCall {
10091            type Parameters<'a> = ();
10092            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10093            type Return = ownerReturn;
10094            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10095            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10096            const SIGNATURE: &'static str = "owner()";
10097            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
10098            #[inline]
10099            fn new<'a>(
10100                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10101            ) -> Self {
10102                tuple.into()
10103            }
10104            #[inline]
10105            fn tokenize(&self) -> Self::Token<'_> {
10106                ()
10107            }
10108            #[inline]
10109            fn abi_decode_returns(
10110                data: &[u8],
10111                validate: bool,
10112            ) -> alloy_sol_types::Result<Self::Return> {
10113                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10114                    data, validate,
10115                )
10116                .map(Into::into)
10117            }
10118        }
10119    };
10120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10121    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
10122    ```solidity
10123    function permissionedProver() external view returns (address);
10124    ```*/
10125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10126    #[derive(Clone)]
10127    pub struct permissionedProverCall {}
10128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10129    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
10130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10131    #[derive(Clone)]
10132    pub struct permissionedProverReturn {
10133        #[allow(missing_docs)]
10134        pub _0: alloy::sol_types::private::Address,
10135    }
10136    #[allow(
10137        non_camel_case_types,
10138        non_snake_case,
10139        clippy::pub_underscore_fields,
10140        clippy::style
10141    )]
10142    const _: () = {
10143        use alloy::sol_types as alloy_sol_types;
10144        {
10145            #[doc(hidden)]
10146            type UnderlyingSolTuple<'a> = ();
10147            #[doc(hidden)]
10148            type UnderlyingRustTuple<'a> = ();
10149            #[cfg(test)]
10150            #[allow(dead_code, unreachable_patterns)]
10151            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10152                match _t {
10153                    alloy_sol_types::private::AssertTypeEq::<
10154                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10155                    >(_) => {},
10156                }
10157            }
10158            #[automatically_derived]
10159            #[doc(hidden)]
10160            impl ::core::convert::From<permissionedProverCall> for UnderlyingRustTuple<'_> {
10161                fn from(value: permissionedProverCall) -> Self {
10162                    ()
10163                }
10164            }
10165            #[automatically_derived]
10166            #[doc(hidden)]
10167            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverCall {
10168                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10169                    Self {}
10170                }
10171            }
10172        }
10173        {
10174            #[doc(hidden)]
10175            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10176            #[doc(hidden)]
10177            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10178            #[cfg(test)]
10179            #[allow(dead_code, unreachable_patterns)]
10180            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10181                match _t {
10182                    alloy_sol_types::private::AssertTypeEq::<
10183                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10184                    >(_) => {},
10185                }
10186            }
10187            #[automatically_derived]
10188            #[doc(hidden)]
10189            impl ::core::convert::From<permissionedProverReturn> for UnderlyingRustTuple<'_> {
10190                fn from(value: permissionedProverReturn) -> Self {
10191                    (value._0,)
10192                }
10193            }
10194            #[automatically_derived]
10195            #[doc(hidden)]
10196            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverReturn {
10197                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10198                    Self { _0: tuple.0 }
10199                }
10200            }
10201        }
10202        #[automatically_derived]
10203        impl alloy_sol_types::SolCall for permissionedProverCall {
10204            type Parameters<'a> = ();
10205            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10206            type Return = permissionedProverReturn;
10207            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10208            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10209            const SIGNATURE: &'static str = "permissionedProver()";
10210            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
10211            #[inline]
10212            fn new<'a>(
10213                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10214            ) -> Self {
10215                tuple.into()
10216            }
10217            #[inline]
10218            fn tokenize(&self) -> Self::Token<'_> {
10219                ()
10220            }
10221            #[inline]
10222            fn abi_decode_returns(
10223                data: &[u8],
10224                validate: bool,
10225            ) -> alloy_sol_types::Result<Self::Return> {
10226                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10227                    data, validate,
10228                )
10229                .map(Into::into)
10230            }
10231        }
10232    };
10233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10234    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
10235    ```solidity
10236    function proxiableUUID() external view returns (bytes32);
10237    ```*/
10238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10239    #[derive(Clone)]
10240    pub struct proxiableUUIDCall {}
10241    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10242    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
10243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10244    #[derive(Clone)]
10245    pub struct proxiableUUIDReturn {
10246        #[allow(missing_docs)]
10247        pub _0: alloy::sol_types::private::FixedBytes<32>,
10248    }
10249    #[allow(
10250        non_camel_case_types,
10251        non_snake_case,
10252        clippy::pub_underscore_fields,
10253        clippy::style
10254    )]
10255    const _: () = {
10256        use alloy::sol_types as alloy_sol_types;
10257        {
10258            #[doc(hidden)]
10259            type UnderlyingSolTuple<'a> = ();
10260            #[doc(hidden)]
10261            type UnderlyingRustTuple<'a> = ();
10262            #[cfg(test)]
10263            #[allow(dead_code, unreachable_patterns)]
10264            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10265                match _t {
10266                    alloy_sol_types::private::AssertTypeEq::<
10267                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10268                    >(_) => {},
10269                }
10270            }
10271            #[automatically_derived]
10272            #[doc(hidden)]
10273            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
10274                fn from(value: proxiableUUIDCall) -> Self {
10275                    ()
10276                }
10277            }
10278            #[automatically_derived]
10279            #[doc(hidden)]
10280            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
10281                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10282                    Self {}
10283                }
10284            }
10285        }
10286        {
10287            #[doc(hidden)]
10288            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10289            #[doc(hidden)]
10290            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10291            #[cfg(test)]
10292            #[allow(dead_code, unreachable_patterns)]
10293            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10294                match _t {
10295                    alloy_sol_types::private::AssertTypeEq::<
10296                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10297                    >(_) => {},
10298                }
10299            }
10300            #[automatically_derived]
10301            #[doc(hidden)]
10302            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
10303                fn from(value: proxiableUUIDReturn) -> Self {
10304                    (value._0,)
10305                }
10306            }
10307            #[automatically_derived]
10308            #[doc(hidden)]
10309            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
10310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10311                    Self { _0: tuple.0 }
10312                }
10313            }
10314        }
10315        #[automatically_derived]
10316        impl alloy_sol_types::SolCall for proxiableUUIDCall {
10317            type Parameters<'a> = ();
10318            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10319            type Return = proxiableUUIDReturn;
10320            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10321            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10322            const SIGNATURE: &'static str = "proxiableUUID()";
10323            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
10324            #[inline]
10325            fn new<'a>(
10326                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10327            ) -> Self {
10328                tuple.into()
10329            }
10330            #[inline]
10331            fn tokenize(&self) -> Self::Token<'_> {
10332                ()
10333            }
10334            #[inline]
10335            fn abi_decode_returns(
10336                data: &[u8],
10337                validate: bool,
10338            ) -> alloy_sol_types::Result<Self::Return> {
10339                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10340                    data, validate,
10341                )
10342                .map(Into::into)
10343            }
10344        }
10345    };
10346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10347    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10348    ```solidity
10349    function renounceOwnership() external;
10350    ```*/
10351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10352    #[derive(Clone)]
10353    pub struct renounceOwnershipCall {}
10354    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
10355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10356    #[derive(Clone)]
10357    pub struct renounceOwnershipReturn {}
10358    #[allow(
10359        non_camel_case_types,
10360        non_snake_case,
10361        clippy::pub_underscore_fields,
10362        clippy::style
10363    )]
10364    const _: () = {
10365        use alloy::sol_types as alloy_sol_types;
10366        {
10367            #[doc(hidden)]
10368            type UnderlyingSolTuple<'a> = ();
10369            #[doc(hidden)]
10370            type UnderlyingRustTuple<'a> = ();
10371            #[cfg(test)]
10372            #[allow(dead_code, unreachable_patterns)]
10373            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10374                match _t {
10375                    alloy_sol_types::private::AssertTypeEq::<
10376                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10377                    >(_) => {},
10378                }
10379            }
10380            #[automatically_derived]
10381            #[doc(hidden)]
10382            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
10383                fn from(value: renounceOwnershipCall) -> Self {
10384                    ()
10385                }
10386            }
10387            #[automatically_derived]
10388            #[doc(hidden)]
10389            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
10390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10391                    Self {}
10392                }
10393            }
10394        }
10395        {
10396            #[doc(hidden)]
10397            type UnderlyingSolTuple<'a> = ();
10398            #[doc(hidden)]
10399            type UnderlyingRustTuple<'a> = ();
10400            #[cfg(test)]
10401            #[allow(dead_code, unreachable_patterns)]
10402            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10403                match _t {
10404                    alloy_sol_types::private::AssertTypeEq::<
10405                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10406                    >(_) => {},
10407                }
10408            }
10409            #[automatically_derived]
10410            #[doc(hidden)]
10411            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
10412                fn from(value: renounceOwnershipReturn) -> Self {
10413                    ()
10414                }
10415            }
10416            #[automatically_derived]
10417            #[doc(hidden)]
10418            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
10419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10420                    Self {}
10421                }
10422            }
10423        }
10424        #[automatically_derived]
10425        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10426            type Parameters<'a> = ();
10427            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10428            type Return = renounceOwnershipReturn;
10429            type ReturnTuple<'a> = ();
10430            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10431            const SIGNATURE: &'static str = "renounceOwnership()";
10432            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10433            #[inline]
10434            fn new<'a>(
10435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10436            ) -> Self {
10437                tuple.into()
10438            }
10439            #[inline]
10440            fn tokenize(&self) -> Self::Token<'_> {
10441                ()
10442            }
10443            #[inline]
10444            fn abi_decode_returns(
10445                data: &[u8],
10446                validate: bool,
10447            ) -> alloy_sol_types::Result<Self::Return> {
10448                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10449                    data, validate,
10450                )
10451                .map(Into::into)
10452            }
10453        }
10454    };
10455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10456    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
10457    ```solidity
10458    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
10459    ```*/
10460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10461    #[derive(Clone)]
10462    pub struct setBlocksPerEpochCall {
10463        #[allow(missing_docs)]
10464        pub newBlocksPerEpoch: u64,
10465    }
10466    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
10467    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10468    #[derive(Clone)]
10469    pub struct setBlocksPerEpochReturn {}
10470    #[allow(
10471        non_camel_case_types,
10472        non_snake_case,
10473        clippy::pub_underscore_fields,
10474        clippy::style
10475    )]
10476    const _: () = {
10477        use alloy::sol_types as alloy_sol_types;
10478        {
10479            #[doc(hidden)]
10480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10481            #[doc(hidden)]
10482            type UnderlyingRustTuple<'a> = (u64,);
10483            #[cfg(test)]
10484            #[allow(dead_code, unreachable_patterns)]
10485            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10486                match _t {
10487                    alloy_sol_types::private::AssertTypeEq::<
10488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10489                    >(_) => {},
10490                }
10491            }
10492            #[automatically_derived]
10493            #[doc(hidden)]
10494            impl ::core::convert::From<setBlocksPerEpochCall> for UnderlyingRustTuple<'_> {
10495                fn from(value: setBlocksPerEpochCall) -> Self {
10496                    (value.newBlocksPerEpoch,)
10497                }
10498            }
10499            #[automatically_derived]
10500            #[doc(hidden)]
10501            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setBlocksPerEpochCall {
10502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10503                    Self {
10504                        newBlocksPerEpoch: tuple.0,
10505                    }
10506                }
10507            }
10508        }
10509        {
10510            #[doc(hidden)]
10511            type UnderlyingSolTuple<'a> = ();
10512            #[doc(hidden)]
10513            type UnderlyingRustTuple<'a> = ();
10514            #[cfg(test)]
10515            #[allow(dead_code, unreachable_patterns)]
10516            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10517                match _t {
10518                    alloy_sol_types::private::AssertTypeEq::<
10519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10520                    >(_) => {},
10521                }
10522            }
10523            #[automatically_derived]
10524            #[doc(hidden)]
10525            impl ::core::convert::From<setBlocksPerEpochReturn> for UnderlyingRustTuple<'_> {
10526                fn from(value: setBlocksPerEpochReturn) -> Self {
10527                    ()
10528                }
10529            }
10530            #[automatically_derived]
10531            #[doc(hidden)]
10532            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setBlocksPerEpochReturn {
10533                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10534                    Self {}
10535                }
10536            }
10537        }
10538        #[automatically_derived]
10539        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
10540            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10541            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10542            type Return = setBlocksPerEpochReturn;
10543            type ReturnTuple<'a> = ();
10544            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10545            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
10546            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
10547            #[inline]
10548            fn new<'a>(
10549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10550            ) -> Self {
10551                tuple.into()
10552            }
10553            #[inline]
10554            fn tokenize(&self) -> Self::Token<'_> {
10555                (
10556                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
10557                        &self.newBlocksPerEpoch,
10558                    ),
10559                )
10560            }
10561            #[inline]
10562            fn abi_decode_returns(
10563                data: &[u8],
10564                validate: bool,
10565            ) -> alloy_sol_types::Result<Self::Return> {
10566                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10567                    data, validate,
10568                )
10569                .map(Into::into)
10570            }
10571        }
10572    };
10573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10574    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
10575    ```solidity
10576    function setFinalizedState(LightClient.LightClientState memory state) external;
10577    ```*/
10578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10579    #[derive(Clone)]
10580    pub struct setFinalizedStateCall {
10581        #[allow(missing_docs)]
10582        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10583    }
10584    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
10585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10586    #[derive(Clone)]
10587    pub struct setFinalizedStateReturn {}
10588    #[allow(
10589        non_camel_case_types,
10590        non_snake_case,
10591        clippy::pub_underscore_fields,
10592        clippy::style
10593    )]
10594    const _: () = {
10595        use alloy::sol_types as alloy_sol_types;
10596        {
10597            #[doc(hidden)]
10598            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
10599            #[doc(hidden)]
10600            type UnderlyingRustTuple<'a> =
10601                (<LightClient::LightClientState as alloy::sol_types::SolType>::RustType,);
10602            #[cfg(test)]
10603            #[allow(dead_code, unreachable_patterns)]
10604            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10605                match _t {
10606                    alloy_sol_types::private::AssertTypeEq::<
10607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10608                    >(_) => {},
10609                }
10610            }
10611            #[automatically_derived]
10612            #[doc(hidden)]
10613            impl ::core::convert::From<setFinalizedStateCall> for UnderlyingRustTuple<'_> {
10614                fn from(value: setFinalizedStateCall) -> Self {
10615                    (value.state,)
10616                }
10617            }
10618            #[automatically_derived]
10619            #[doc(hidden)]
10620            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setFinalizedStateCall {
10621                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10622                    Self { state: tuple.0 }
10623                }
10624            }
10625        }
10626        {
10627            #[doc(hidden)]
10628            type UnderlyingSolTuple<'a> = ();
10629            #[doc(hidden)]
10630            type UnderlyingRustTuple<'a> = ();
10631            #[cfg(test)]
10632            #[allow(dead_code, unreachable_patterns)]
10633            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10634                match _t {
10635                    alloy_sol_types::private::AssertTypeEq::<
10636                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10637                    >(_) => {},
10638                }
10639            }
10640            #[automatically_derived]
10641            #[doc(hidden)]
10642            impl ::core::convert::From<setFinalizedStateReturn> for UnderlyingRustTuple<'_> {
10643                fn from(value: setFinalizedStateReturn) -> Self {
10644                    ()
10645                }
10646            }
10647            #[automatically_derived]
10648            #[doc(hidden)]
10649            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setFinalizedStateReturn {
10650                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10651                    Self {}
10652                }
10653            }
10654        }
10655        #[automatically_derived]
10656        impl alloy_sol_types::SolCall for setFinalizedStateCall {
10657            type Parameters<'a> = (LightClient::LightClientState,);
10658            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10659            type Return = setFinalizedStateReturn;
10660            type ReturnTuple<'a> = ();
10661            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10662            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
10663            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
10664            #[inline]
10665            fn new<'a>(
10666                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10667            ) -> Self {
10668                tuple.into()
10669            }
10670            #[inline]
10671            fn tokenize(&self) -> Self::Token<'_> {
10672                (
10673                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10674                        &self.state,
10675                    ),
10676                )
10677            }
10678            #[inline]
10679            fn abi_decode_returns(
10680                data: &[u8],
10681                validate: bool,
10682            ) -> alloy_sol_types::Result<Self::Return> {
10683                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10684                    data, validate,
10685                )
10686                .map(Into::into)
10687            }
10688        }
10689    };
10690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10691    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
10692    ```solidity
10693    function setHotShotDownSince(uint256 l1Height) external;
10694    ```*/
10695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10696    #[derive(Clone)]
10697    pub struct setHotShotDownSinceCall {
10698        #[allow(missing_docs)]
10699        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
10700    }
10701    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
10702    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10703    #[derive(Clone)]
10704    pub struct setHotShotDownSinceReturn {}
10705    #[allow(
10706        non_camel_case_types,
10707        non_snake_case,
10708        clippy::pub_underscore_fields,
10709        clippy::style
10710    )]
10711    const _: () = {
10712        use alloy::sol_types as alloy_sol_types;
10713        {
10714            #[doc(hidden)]
10715            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10716            #[doc(hidden)]
10717            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
10718            #[cfg(test)]
10719            #[allow(dead_code, unreachable_patterns)]
10720            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10721                match _t {
10722                    alloy_sol_types::private::AssertTypeEq::<
10723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10724                    >(_) => {},
10725                }
10726            }
10727            #[automatically_derived]
10728            #[doc(hidden)]
10729            impl ::core::convert::From<setHotShotDownSinceCall> for UnderlyingRustTuple<'_> {
10730                fn from(value: setHotShotDownSinceCall) -> Self {
10731                    (value.l1Height,)
10732                }
10733            }
10734            #[automatically_derived]
10735            #[doc(hidden)]
10736            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotDownSinceCall {
10737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10738                    Self { l1Height: tuple.0 }
10739                }
10740            }
10741        }
10742        {
10743            #[doc(hidden)]
10744            type UnderlyingSolTuple<'a> = ();
10745            #[doc(hidden)]
10746            type UnderlyingRustTuple<'a> = ();
10747            #[cfg(test)]
10748            #[allow(dead_code, unreachable_patterns)]
10749            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10750                match _t {
10751                    alloy_sol_types::private::AssertTypeEq::<
10752                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10753                    >(_) => {},
10754                }
10755            }
10756            #[automatically_derived]
10757            #[doc(hidden)]
10758            impl ::core::convert::From<setHotShotDownSinceReturn> for UnderlyingRustTuple<'_> {
10759                fn from(value: setHotShotDownSinceReturn) -> Self {
10760                    ()
10761                }
10762            }
10763            #[automatically_derived]
10764            #[doc(hidden)]
10765            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotDownSinceReturn {
10766                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10767                    Self {}
10768                }
10769            }
10770        }
10771        #[automatically_derived]
10772        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
10773            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10774            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10775            type Return = setHotShotDownSinceReturn;
10776            type ReturnTuple<'a> = ();
10777            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10778            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
10779            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
10780            #[inline]
10781            fn new<'a>(
10782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10783            ) -> Self {
10784                tuple.into()
10785            }
10786            #[inline]
10787            fn tokenize(&self) -> Self::Token<'_> {
10788                (
10789                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
10790                        &self.l1Height,
10791                    ),
10792                )
10793            }
10794            #[inline]
10795            fn abi_decode_returns(
10796                data: &[u8],
10797                validate: bool,
10798            ) -> alloy_sol_types::Result<Self::Return> {
10799                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10800                    data, validate,
10801                )
10802                .map(Into::into)
10803            }
10804        }
10805    };
10806    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10807    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
10808    ```solidity
10809    function setHotShotUp() external;
10810    ```*/
10811    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10812    #[derive(Clone)]
10813    pub struct setHotShotUpCall {}
10814    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
10815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10816    #[derive(Clone)]
10817    pub struct setHotShotUpReturn {}
10818    #[allow(
10819        non_camel_case_types,
10820        non_snake_case,
10821        clippy::pub_underscore_fields,
10822        clippy::style
10823    )]
10824    const _: () = {
10825        use alloy::sol_types as alloy_sol_types;
10826        {
10827            #[doc(hidden)]
10828            type UnderlyingSolTuple<'a> = ();
10829            #[doc(hidden)]
10830            type UnderlyingRustTuple<'a> = ();
10831            #[cfg(test)]
10832            #[allow(dead_code, unreachable_patterns)]
10833            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10834                match _t {
10835                    alloy_sol_types::private::AssertTypeEq::<
10836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10837                    >(_) => {},
10838                }
10839            }
10840            #[automatically_derived]
10841            #[doc(hidden)]
10842            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
10843                fn from(value: setHotShotUpCall) -> Self {
10844                    ()
10845                }
10846            }
10847            #[automatically_derived]
10848            #[doc(hidden)]
10849            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
10850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10851                    Self {}
10852                }
10853            }
10854        }
10855        {
10856            #[doc(hidden)]
10857            type UnderlyingSolTuple<'a> = ();
10858            #[doc(hidden)]
10859            type UnderlyingRustTuple<'a> = ();
10860            #[cfg(test)]
10861            #[allow(dead_code, unreachable_patterns)]
10862            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10863                match _t {
10864                    alloy_sol_types::private::AssertTypeEq::<
10865                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10866                    >(_) => {},
10867                }
10868            }
10869            #[automatically_derived]
10870            #[doc(hidden)]
10871            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
10872                fn from(value: setHotShotUpReturn) -> Self {
10873                    ()
10874                }
10875            }
10876            #[automatically_derived]
10877            #[doc(hidden)]
10878            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
10879                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10880                    Self {}
10881                }
10882            }
10883        }
10884        #[automatically_derived]
10885        impl alloy_sol_types::SolCall for setHotShotUpCall {
10886            type Parameters<'a> = ();
10887            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10888            type Return = setHotShotUpReturn;
10889            type ReturnTuple<'a> = ();
10890            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10891            const SIGNATURE: &'static str = "setHotShotUp()";
10892            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
10893            #[inline]
10894            fn new<'a>(
10895                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10896            ) -> Self {
10897                tuple.into()
10898            }
10899            #[inline]
10900            fn tokenize(&self) -> Self::Token<'_> {
10901                ()
10902            }
10903            #[inline]
10904            fn abi_decode_returns(
10905                data: &[u8],
10906                validate: bool,
10907            ) -> alloy_sol_types::Result<Self::Return> {
10908                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10909                    data, validate,
10910                )
10911                .map(Into::into)
10912            }
10913        }
10914    };
10915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10916    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10917    ```solidity
10918    function setPermissionedProver(address prover) external;
10919    ```*/
10920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10921    #[derive(Clone)]
10922    pub struct setPermissionedProverCall {
10923        #[allow(missing_docs)]
10924        pub prover: alloy::sol_types::private::Address,
10925    }
10926    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10928    #[derive(Clone)]
10929    pub struct setPermissionedProverReturn {}
10930    #[allow(
10931        non_camel_case_types,
10932        non_snake_case,
10933        clippy::pub_underscore_fields,
10934        clippy::style
10935    )]
10936    const _: () = {
10937        use alloy::sol_types as alloy_sol_types;
10938        {
10939            #[doc(hidden)]
10940            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10941            #[doc(hidden)]
10942            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10943            #[cfg(test)]
10944            #[allow(dead_code, unreachable_patterns)]
10945            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10946                match _t {
10947                    alloy_sol_types::private::AssertTypeEq::<
10948                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10949                    >(_) => {},
10950                }
10951            }
10952            #[automatically_derived]
10953            #[doc(hidden)]
10954            impl ::core::convert::From<setPermissionedProverCall> for UnderlyingRustTuple<'_> {
10955                fn from(value: setPermissionedProverCall) -> Self {
10956                    (value.prover,)
10957                }
10958            }
10959            #[automatically_derived]
10960            #[doc(hidden)]
10961            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverCall {
10962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10963                    Self { prover: tuple.0 }
10964                }
10965            }
10966        }
10967        {
10968            #[doc(hidden)]
10969            type UnderlyingSolTuple<'a> = ();
10970            #[doc(hidden)]
10971            type UnderlyingRustTuple<'a> = ();
10972            #[cfg(test)]
10973            #[allow(dead_code, unreachable_patterns)]
10974            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10975                match _t {
10976                    alloy_sol_types::private::AssertTypeEq::<
10977                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10978                    >(_) => {},
10979                }
10980            }
10981            #[automatically_derived]
10982            #[doc(hidden)]
10983            impl ::core::convert::From<setPermissionedProverReturn> for UnderlyingRustTuple<'_> {
10984                fn from(value: setPermissionedProverReturn) -> Self {
10985                    ()
10986                }
10987            }
10988            #[automatically_derived]
10989            #[doc(hidden)]
10990            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverReturn {
10991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10992                    Self {}
10993                }
10994            }
10995        }
10996        #[automatically_derived]
10997        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10998            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10999            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11000            type Return = setPermissionedProverReturn;
11001            type ReturnTuple<'a> = ();
11002            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11003            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11004            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11005            #[inline]
11006            fn new<'a>(
11007                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11008            ) -> Self {
11009                tuple.into()
11010            }
11011            #[inline]
11012            fn tokenize(&self) -> Self::Token<'_> {
11013                (
11014                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11015                        &self.prover,
11016                    ),
11017                )
11018            }
11019            #[inline]
11020            fn abi_decode_returns(
11021                data: &[u8],
11022                validate: bool,
11023            ) -> alloy_sol_types::Result<Self::Return> {
11024                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11025                    data, validate,
11026                )
11027                .map(Into::into)
11028            }
11029        }
11030    };
11031    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11032    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
11033    ```solidity
11034    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
11035    ```*/
11036    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11037    #[derive(Clone)]
11038    pub struct setStateHistoryCall {
11039        #[allow(missing_docs)]
11040        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
11041            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
11042        >,
11043    }
11044    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
11045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11046    #[derive(Clone)]
11047    pub struct setStateHistoryReturn {}
11048    #[allow(
11049        non_camel_case_types,
11050        non_snake_case,
11051        clippy::pub_underscore_fields,
11052        clippy::style
11053    )]
11054    const _: () = {
11055        use alloy::sol_types as alloy_sol_types;
11056        {
11057            #[doc(hidden)]
11058            type UnderlyingSolTuple<'a> =
11059                (alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,);
11060            #[doc(hidden)]
11061            type UnderlyingRustTuple<'a> = (
11062                alloy::sol_types::private::Vec<
11063                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
11064                >,
11065            );
11066            #[cfg(test)]
11067            #[allow(dead_code, unreachable_patterns)]
11068            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11069                match _t {
11070                    alloy_sol_types::private::AssertTypeEq::<
11071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11072                    >(_) => {},
11073                }
11074            }
11075            #[automatically_derived]
11076            #[doc(hidden)]
11077            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
11078                fn from(value: setStateHistoryCall) -> Self {
11079                    (value._stateHistoryCommitments,)
11080                }
11081            }
11082            #[automatically_derived]
11083            #[doc(hidden)]
11084            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
11085                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11086                    Self {
11087                        _stateHistoryCommitments: tuple.0,
11088                    }
11089                }
11090            }
11091        }
11092        {
11093            #[doc(hidden)]
11094            type UnderlyingSolTuple<'a> = ();
11095            #[doc(hidden)]
11096            type UnderlyingRustTuple<'a> = ();
11097            #[cfg(test)]
11098            #[allow(dead_code, unreachable_patterns)]
11099            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11100                match _t {
11101                    alloy_sol_types::private::AssertTypeEq::<
11102                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11103                    >(_) => {},
11104                }
11105            }
11106            #[automatically_derived]
11107            #[doc(hidden)]
11108            impl ::core::convert::From<setStateHistoryReturn> for UnderlyingRustTuple<'_> {
11109                fn from(value: setStateHistoryReturn) -> Self {
11110                    ()
11111                }
11112            }
11113            #[automatically_derived]
11114            #[doc(hidden)]
11115            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryReturn {
11116                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11117                    Self {}
11118                }
11119            }
11120        }
11121        #[automatically_derived]
11122        impl alloy_sol_types::SolCall for setStateHistoryCall {
11123            type Parameters<'a> =
11124                (alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,);
11125            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11126            type Return = setStateHistoryReturn;
11127            type ReturnTuple<'a> = ();
11128            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11129            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
11130            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
11131            #[inline]
11132            fn new<'a>(
11133                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11134            ) -> Self {
11135                tuple.into()
11136            }
11137            #[inline]
11138            fn tokenize(&self) -> Self::Token<'_> {
11139                (<alloy::sol_types::sol_data::Array<
11140                    LightClient::StateHistoryCommitment,
11141                > as alloy_sol_types::SolType>::tokenize(
11142                    &self._stateHistoryCommitments,
11143                ),)
11144            }
11145            #[inline]
11146            fn abi_decode_returns(
11147                data: &[u8],
11148                validate: bool,
11149            ) -> alloy_sol_types::Result<Self::Return> {
11150                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11151                    data, validate,
11152                )
11153                .map(Into::into)
11154            }
11155        }
11156    };
11157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11158    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
11159    ```solidity
11160    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
11161    ```*/
11162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11163    #[derive(Clone)]
11164    pub struct setStateHistoryRetentionPeriodCall {
11165        #[allow(missing_docs)]
11166        pub historySeconds: u32,
11167    }
11168    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
11169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11170    #[derive(Clone)]
11171    pub struct setStateHistoryRetentionPeriodReturn {}
11172    #[allow(
11173        non_camel_case_types,
11174        non_snake_case,
11175        clippy::pub_underscore_fields,
11176        clippy::style
11177    )]
11178    const _: () = {
11179        use alloy::sol_types as alloy_sol_types;
11180        {
11181            #[doc(hidden)]
11182            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11183            #[doc(hidden)]
11184            type UnderlyingRustTuple<'a> = (u32,);
11185            #[cfg(test)]
11186            #[allow(dead_code, unreachable_patterns)]
11187            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11188                match _t {
11189                    alloy_sol_types::private::AssertTypeEq::<
11190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11191                    >(_) => {},
11192                }
11193            }
11194            #[automatically_derived]
11195            #[doc(hidden)]
11196            impl ::core::convert::From<setStateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
11197                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
11198                    (value.historySeconds,)
11199                }
11200            }
11201            #[automatically_derived]
11202            #[doc(hidden)]
11203            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryRetentionPeriodCall {
11204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11205                    Self {
11206                        historySeconds: tuple.0,
11207                    }
11208                }
11209            }
11210        }
11211        {
11212            #[doc(hidden)]
11213            type UnderlyingSolTuple<'a> = ();
11214            #[doc(hidden)]
11215            type UnderlyingRustTuple<'a> = ();
11216            #[cfg(test)]
11217            #[allow(dead_code, unreachable_patterns)]
11218            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11219                match _t {
11220                    alloy_sol_types::private::AssertTypeEq::<
11221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11222                    >(_) => {},
11223                }
11224            }
11225            #[automatically_derived]
11226            #[doc(hidden)]
11227            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
11228                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
11229                    ()
11230                }
11231            }
11232            #[automatically_derived]
11233            #[doc(hidden)]
11234            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryRetentionPeriodReturn {
11235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11236                    Self {}
11237                }
11238            }
11239        }
11240        #[automatically_derived]
11241        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
11242            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11243            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11244            type Return = setStateHistoryRetentionPeriodReturn;
11245            type ReturnTuple<'a> = ();
11246            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11247            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
11248            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
11249            #[inline]
11250            fn new<'a>(
11251                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11252            ) -> Self {
11253                tuple.into()
11254            }
11255            #[inline]
11256            fn tokenize(&self) -> Self::Token<'_> {
11257                (
11258                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
11259                        &self.historySeconds,
11260                    ),
11261                )
11262            }
11263            #[inline]
11264            fn abi_decode_returns(
11265                data: &[u8],
11266                validate: bool,
11267            ) -> alloy_sol_types::Result<Self::Return> {
11268                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11269                    data, validate,
11270                )
11271                .map(Into::into)
11272            }
11273        }
11274    };
11275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11276    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
11277    ```solidity
11278    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
11279    ```*/
11280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11281    #[derive(Clone)]
11282    pub struct setVotingStakeTableStateCall {
11283        #[allow(missing_docs)]
11284        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11285    }
11286    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
11287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11288    #[derive(Clone)]
11289    pub struct setVotingStakeTableStateReturn {}
11290    #[allow(
11291        non_camel_case_types,
11292        non_snake_case,
11293        clippy::pub_underscore_fields,
11294        clippy::style
11295    )]
11296    const _: () = {
11297        use alloy::sol_types as alloy_sol_types;
11298        {
11299            #[doc(hidden)]
11300            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
11301            #[doc(hidden)]
11302            type UnderlyingRustTuple<'a> =
11303                (<LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,);
11304            #[cfg(test)]
11305            #[allow(dead_code, unreachable_patterns)]
11306            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11307                match _t {
11308                    alloy_sol_types::private::AssertTypeEq::<
11309                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11310                    >(_) => {},
11311                }
11312            }
11313            #[automatically_derived]
11314            #[doc(hidden)]
11315            impl ::core::convert::From<setVotingStakeTableStateCall> for UnderlyingRustTuple<'_> {
11316                fn from(value: setVotingStakeTableStateCall) -> Self {
11317                    (value.stake,)
11318                }
11319            }
11320            #[automatically_derived]
11321            #[doc(hidden)]
11322            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setVotingStakeTableStateCall {
11323                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11324                    Self { stake: tuple.0 }
11325                }
11326            }
11327        }
11328        {
11329            #[doc(hidden)]
11330            type UnderlyingSolTuple<'a> = ();
11331            #[doc(hidden)]
11332            type UnderlyingRustTuple<'a> = ();
11333            #[cfg(test)]
11334            #[allow(dead_code, unreachable_patterns)]
11335            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11336                match _t {
11337                    alloy_sol_types::private::AssertTypeEq::<
11338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11339                    >(_) => {},
11340                }
11341            }
11342            #[automatically_derived]
11343            #[doc(hidden)]
11344            impl ::core::convert::From<setVotingStakeTableStateReturn> for UnderlyingRustTuple<'_> {
11345                fn from(value: setVotingStakeTableStateReturn) -> Self {
11346                    ()
11347                }
11348            }
11349            #[automatically_derived]
11350            #[doc(hidden)]
11351            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setVotingStakeTableStateReturn {
11352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11353                    Self {}
11354                }
11355            }
11356        }
11357        #[automatically_derived]
11358        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
11359            type Parameters<'a> = (LightClient::StakeTableState,);
11360            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11361            type Return = setVotingStakeTableStateReturn;
11362            type ReturnTuple<'a> = ();
11363            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11364            const SIGNATURE: &'static str =
11365                "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
11366            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
11367            #[inline]
11368            fn new<'a>(
11369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11370            ) -> Self {
11371                tuple.into()
11372            }
11373            #[inline]
11374            fn tokenize(&self) -> Self::Token<'_> {
11375                (
11376                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11377                        &self.stake,
11378                    ),
11379                )
11380            }
11381            #[inline]
11382            fn abi_decode_returns(
11383                data: &[u8],
11384                validate: bool,
11385            ) -> alloy_sol_types::Result<Self::Return> {
11386                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11387                    data, validate,
11388                )
11389                .map(Into::into)
11390            }
11391        }
11392    };
11393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11394    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
11395    ```solidity
11396    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
11397    ```*/
11398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11399    #[derive(Clone)]
11400    pub struct setstateHistoryRetentionPeriodCall {
11401        #[allow(missing_docs)]
11402        pub historySeconds: u32,
11403    }
11404    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11405    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11406    #[derive(Clone)]
11407    pub struct setstateHistoryRetentionPeriodReturn {}
11408    #[allow(
11409        non_camel_case_types,
11410        non_snake_case,
11411        clippy::pub_underscore_fields,
11412        clippy::style
11413    )]
11414    const _: () = {
11415        use alloy::sol_types as alloy_sol_types;
11416        {
11417            #[doc(hidden)]
11418            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11419            #[doc(hidden)]
11420            type UnderlyingRustTuple<'a> = (u32,);
11421            #[cfg(test)]
11422            #[allow(dead_code, unreachable_patterns)]
11423            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11424                match _t {
11425                    alloy_sol_types::private::AssertTypeEq::<
11426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11427                    >(_) => {},
11428                }
11429            }
11430            #[automatically_derived]
11431            #[doc(hidden)]
11432            impl ::core::convert::From<setstateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
11433                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
11434                    (value.historySeconds,)
11435                }
11436            }
11437            #[automatically_derived]
11438            #[doc(hidden)]
11439            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodCall {
11440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11441                    Self {
11442                        historySeconds: tuple.0,
11443                    }
11444                }
11445            }
11446        }
11447        {
11448            #[doc(hidden)]
11449            type UnderlyingSolTuple<'a> = ();
11450            #[doc(hidden)]
11451            type UnderlyingRustTuple<'a> = ();
11452            #[cfg(test)]
11453            #[allow(dead_code, unreachable_patterns)]
11454            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11455                match _t {
11456                    alloy_sol_types::private::AssertTypeEq::<
11457                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11458                    >(_) => {},
11459                }
11460            }
11461            #[automatically_derived]
11462            #[doc(hidden)]
11463            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
11464                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
11465                    ()
11466                }
11467            }
11468            #[automatically_derived]
11469            #[doc(hidden)]
11470            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodReturn {
11471                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11472                    Self {}
11473                }
11474            }
11475        }
11476        #[automatically_derived]
11477        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
11478            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11479            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11480            type Return = setstateHistoryRetentionPeriodReturn;
11481            type ReturnTuple<'a> = ();
11482            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11483            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
11484            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
11485            #[inline]
11486            fn new<'a>(
11487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11488            ) -> Self {
11489                tuple.into()
11490            }
11491            #[inline]
11492            fn tokenize(&self) -> Self::Token<'_> {
11493                (
11494                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
11495                        &self.historySeconds,
11496                    ),
11497                )
11498            }
11499            #[inline]
11500            fn abi_decode_returns(
11501                data: &[u8],
11502                validate: bool,
11503            ) -> alloy_sol_types::Result<Self::Return> {
11504                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11505                    data, validate,
11506                )
11507                .map(Into::into)
11508            }
11509        }
11510    };
11511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11512    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
11513    ```solidity
11514    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
11515    ```*/
11516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11517    #[derive(Clone)]
11518    pub struct stateHistoryCommitmentsCall {
11519        #[allow(missing_docs)]
11520        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11521    }
11522    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11523    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
11524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11525    #[derive(Clone)]
11526    pub struct stateHistoryCommitmentsReturn {
11527        #[allow(missing_docs)]
11528        pub l1BlockHeight: u64,
11529        #[allow(missing_docs)]
11530        pub l1BlockTimestamp: u64,
11531        #[allow(missing_docs)]
11532        pub hotShotBlockHeight: u64,
11533        #[allow(missing_docs)]
11534        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11535    }
11536    #[allow(
11537        non_camel_case_types,
11538        non_snake_case,
11539        clippy::pub_underscore_fields,
11540        clippy::style
11541    )]
11542    const _: () = {
11543        use alloy::sol_types as alloy_sol_types;
11544        {
11545            #[doc(hidden)]
11546            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11547            #[doc(hidden)]
11548            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
11549            #[cfg(test)]
11550            #[allow(dead_code, unreachable_patterns)]
11551            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11552                match _t {
11553                    alloy_sol_types::private::AssertTypeEq::<
11554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11555                    >(_) => {},
11556                }
11557            }
11558            #[automatically_derived]
11559            #[doc(hidden)]
11560            impl ::core::convert::From<stateHistoryCommitmentsCall> for UnderlyingRustTuple<'_> {
11561                fn from(value: stateHistoryCommitmentsCall) -> Self {
11562                    (value._0,)
11563                }
11564            }
11565            #[automatically_derived]
11566            #[doc(hidden)]
11567            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsCall {
11568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11569                    Self { _0: tuple.0 }
11570                }
11571            }
11572        }
11573        {
11574            #[doc(hidden)]
11575            type UnderlyingSolTuple<'a> = (
11576                alloy::sol_types::sol_data::Uint<64>,
11577                alloy::sol_types::sol_data::Uint<64>,
11578                alloy::sol_types::sol_data::Uint<64>,
11579                BN254::ScalarField,
11580            );
11581            #[doc(hidden)]
11582            type UnderlyingRustTuple<'a> = (
11583                u64,
11584                u64,
11585                u64,
11586                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11587            );
11588            #[cfg(test)]
11589            #[allow(dead_code, unreachable_patterns)]
11590            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11591                match _t {
11592                    alloy_sol_types::private::AssertTypeEq::<
11593                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11594                    >(_) => {},
11595                }
11596            }
11597            #[automatically_derived]
11598            #[doc(hidden)]
11599            impl ::core::convert::From<stateHistoryCommitmentsReturn> for UnderlyingRustTuple<'_> {
11600                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11601                    (
11602                        value.l1BlockHeight,
11603                        value.l1BlockTimestamp,
11604                        value.hotShotBlockHeight,
11605                        value.hotShotBlockCommRoot,
11606                    )
11607                }
11608            }
11609            #[automatically_derived]
11610            #[doc(hidden)]
11611            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsReturn {
11612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11613                    Self {
11614                        l1BlockHeight: tuple.0,
11615                        l1BlockTimestamp: tuple.1,
11616                        hotShotBlockHeight: tuple.2,
11617                        hotShotBlockCommRoot: tuple.3,
11618                    }
11619                }
11620            }
11621        }
11622        #[automatically_derived]
11623        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11624            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11625            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11626            type Return = stateHistoryCommitmentsReturn;
11627            type ReturnTuple<'a> = (
11628                alloy::sol_types::sol_data::Uint<64>,
11629                alloy::sol_types::sol_data::Uint<64>,
11630                alloy::sol_types::sol_data::Uint<64>,
11631                BN254::ScalarField,
11632            );
11633            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11634            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11635            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11636            #[inline]
11637            fn new<'a>(
11638                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11639            ) -> Self {
11640                tuple.into()
11641            }
11642            #[inline]
11643            fn tokenize(&self) -> Self::Token<'_> {
11644                (
11645                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
11646                        &self._0,
11647                    ),
11648                )
11649            }
11650            #[inline]
11651            fn abi_decode_returns(
11652                data: &[u8],
11653                validate: bool,
11654            ) -> alloy_sol_types::Result<Self::Return> {
11655                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11656                    data, validate,
11657                )
11658                .map(Into::into)
11659            }
11660        }
11661    };
11662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11663    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11664    ```solidity
11665    function stateHistoryFirstIndex() external view returns (uint64);
11666    ```*/
11667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11668    #[derive(Clone)]
11669    pub struct stateHistoryFirstIndexCall {}
11670    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11671    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11673    #[derive(Clone)]
11674    pub struct stateHistoryFirstIndexReturn {
11675        #[allow(missing_docs)]
11676        pub _0: u64,
11677    }
11678    #[allow(
11679        non_camel_case_types,
11680        non_snake_case,
11681        clippy::pub_underscore_fields,
11682        clippy::style
11683    )]
11684    const _: () = {
11685        use alloy::sol_types as alloy_sol_types;
11686        {
11687            #[doc(hidden)]
11688            type UnderlyingSolTuple<'a> = ();
11689            #[doc(hidden)]
11690            type UnderlyingRustTuple<'a> = ();
11691            #[cfg(test)]
11692            #[allow(dead_code, unreachable_patterns)]
11693            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11694                match _t {
11695                    alloy_sol_types::private::AssertTypeEq::<
11696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11697                    >(_) => {},
11698                }
11699            }
11700            #[automatically_derived]
11701            #[doc(hidden)]
11702            impl ::core::convert::From<stateHistoryFirstIndexCall> for UnderlyingRustTuple<'_> {
11703                fn from(value: stateHistoryFirstIndexCall) -> Self {
11704                    ()
11705                }
11706            }
11707            #[automatically_derived]
11708            #[doc(hidden)]
11709            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexCall {
11710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11711                    Self {}
11712                }
11713            }
11714        }
11715        {
11716            #[doc(hidden)]
11717            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11718            #[doc(hidden)]
11719            type UnderlyingRustTuple<'a> = (u64,);
11720            #[cfg(test)]
11721            #[allow(dead_code, unreachable_patterns)]
11722            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11723                match _t {
11724                    alloy_sol_types::private::AssertTypeEq::<
11725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11726                    >(_) => {},
11727                }
11728            }
11729            #[automatically_derived]
11730            #[doc(hidden)]
11731            impl ::core::convert::From<stateHistoryFirstIndexReturn> for UnderlyingRustTuple<'_> {
11732                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11733                    (value._0,)
11734                }
11735            }
11736            #[automatically_derived]
11737            #[doc(hidden)]
11738            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexReturn {
11739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11740                    Self { _0: tuple.0 }
11741                }
11742            }
11743        }
11744        #[automatically_derived]
11745        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11746            type Parameters<'a> = ();
11747            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11748            type Return = stateHistoryFirstIndexReturn;
11749            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11750            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11751            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11752            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11753            #[inline]
11754            fn new<'a>(
11755                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11756            ) -> Self {
11757                tuple.into()
11758            }
11759            #[inline]
11760            fn tokenize(&self) -> Self::Token<'_> {
11761                ()
11762            }
11763            #[inline]
11764            fn abi_decode_returns(
11765                data: &[u8],
11766                validate: bool,
11767            ) -> alloy_sol_types::Result<Self::Return> {
11768                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11769                    data, validate,
11770                )
11771                .map(Into::into)
11772            }
11773        }
11774    };
11775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11776    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11777    ```solidity
11778    function stateHistoryRetentionPeriod() external view returns (uint32);
11779    ```*/
11780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11781    #[derive(Clone)]
11782    pub struct stateHistoryRetentionPeriodCall {}
11783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11784    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11786    #[derive(Clone)]
11787    pub struct stateHistoryRetentionPeriodReturn {
11788        #[allow(missing_docs)]
11789        pub _0: u32,
11790    }
11791    #[allow(
11792        non_camel_case_types,
11793        non_snake_case,
11794        clippy::pub_underscore_fields,
11795        clippy::style
11796    )]
11797    const _: () = {
11798        use alloy::sol_types as alloy_sol_types;
11799        {
11800            #[doc(hidden)]
11801            type UnderlyingSolTuple<'a> = ();
11802            #[doc(hidden)]
11803            type UnderlyingRustTuple<'a> = ();
11804            #[cfg(test)]
11805            #[allow(dead_code, unreachable_patterns)]
11806            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11807                match _t {
11808                    alloy_sol_types::private::AssertTypeEq::<
11809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11810                    >(_) => {},
11811                }
11812            }
11813            #[automatically_derived]
11814            #[doc(hidden)]
11815            impl ::core::convert::From<stateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
11816                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11817                    ()
11818                }
11819            }
11820            #[automatically_derived]
11821            #[doc(hidden)]
11822            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodCall {
11823                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11824                    Self {}
11825                }
11826            }
11827        }
11828        {
11829            #[doc(hidden)]
11830            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11831            #[doc(hidden)]
11832            type UnderlyingRustTuple<'a> = (u32,);
11833            #[cfg(test)]
11834            #[allow(dead_code, unreachable_patterns)]
11835            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11836                match _t {
11837                    alloy_sol_types::private::AssertTypeEq::<
11838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11839                    >(_) => {},
11840                }
11841            }
11842            #[automatically_derived]
11843            #[doc(hidden)]
11844            impl ::core::convert::From<stateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
11845                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11846                    (value._0,)
11847                }
11848            }
11849            #[automatically_derived]
11850            #[doc(hidden)]
11851            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodReturn {
11852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11853                    Self { _0: tuple.0 }
11854                }
11855            }
11856        }
11857        #[automatically_derived]
11858        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11859            type Parameters<'a> = ();
11860            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11861            type Return = stateHistoryRetentionPeriodReturn;
11862            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11863            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11864            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11865            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11866            #[inline]
11867            fn new<'a>(
11868                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11869            ) -> Self {
11870                tuple.into()
11871            }
11872            #[inline]
11873            fn tokenize(&self) -> Self::Token<'_> {
11874                ()
11875            }
11876            #[inline]
11877            fn abi_decode_returns(
11878                data: &[u8],
11879                validate: bool,
11880            ) -> alloy_sol_types::Result<Self::Return> {
11881                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11882                    data, validate,
11883                )
11884                .map(Into::into)
11885            }
11886        }
11887    };
11888    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11889    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11890    ```solidity
11891    function transferOwnership(address newOwner) external;
11892    ```*/
11893    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11894    #[derive(Clone)]
11895    pub struct transferOwnershipCall {
11896        #[allow(missing_docs)]
11897        pub newOwner: alloy::sol_types::private::Address,
11898    }
11899    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11900    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11901    #[derive(Clone)]
11902    pub struct transferOwnershipReturn {}
11903    #[allow(
11904        non_camel_case_types,
11905        non_snake_case,
11906        clippy::pub_underscore_fields,
11907        clippy::style
11908    )]
11909    const _: () = {
11910        use alloy::sol_types as alloy_sol_types;
11911        {
11912            #[doc(hidden)]
11913            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11914            #[doc(hidden)]
11915            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11916            #[cfg(test)]
11917            #[allow(dead_code, unreachable_patterns)]
11918            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11919                match _t {
11920                    alloy_sol_types::private::AssertTypeEq::<
11921                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11922                    >(_) => {},
11923                }
11924            }
11925            #[automatically_derived]
11926            #[doc(hidden)]
11927            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
11928                fn from(value: transferOwnershipCall) -> Self {
11929                    (value.newOwner,)
11930                }
11931            }
11932            #[automatically_derived]
11933            #[doc(hidden)]
11934            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
11935                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11936                    Self { newOwner: tuple.0 }
11937                }
11938            }
11939        }
11940        {
11941            #[doc(hidden)]
11942            type UnderlyingSolTuple<'a> = ();
11943            #[doc(hidden)]
11944            type UnderlyingRustTuple<'a> = ();
11945            #[cfg(test)]
11946            #[allow(dead_code, unreachable_patterns)]
11947            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11948                match _t {
11949                    alloy_sol_types::private::AssertTypeEq::<
11950                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11951                    >(_) => {},
11952                }
11953            }
11954            #[automatically_derived]
11955            #[doc(hidden)]
11956            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
11957                fn from(value: transferOwnershipReturn) -> Self {
11958                    ()
11959                }
11960            }
11961            #[automatically_derived]
11962            #[doc(hidden)]
11963            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
11964                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11965                    Self {}
11966                }
11967            }
11968        }
11969        #[automatically_derived]
11970        impl alloy_sol_types::SolCall for transferOwnershipCall {
11971            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11972            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11973            type Return = transferOwnershipReturn;
11974            type ReturnTuple<'a> = ();
11975            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11976            const SIGNATURE: &'static str = "transferOwnership(address)";
11977            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11978            #[inline]
11979            fn new<'a>(
11980                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11981            ) -> Self {
11982                tuple.into()
11983            }
11984            #[inline]
11985            fn tokenize(&self) -> Self::Token<'_> {
11986                (
11987                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11988                        &self.newOwner,
11989                    ),
11990                )
11991            }
11992            #[inline]
11993            fn abi_decode_returns(
11994                data: &[u8],
11995                validate: bool,
11996            ) -> alloy_sol_types::Result<Self::Return> {
11997                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11998                    data, validate,
11999                )
12000                .map(Into::into)
12001            }
12002        }
12003    };
12004    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12005    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12006    ```solidity
12007    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12008    ```*/
12009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12010    #[derive(Clone)]
12011    pub struct updateEpochStartBlockCall {
12012        #[allow(missing_docs)]
12013        pub newEpochStartBlock: u64,
12014    }
12015    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
12016    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12017    #[derive(Clone)]
12018    pub struct updateEpochStartBlockReturn {}
12019    #[allow(
12020        non_camel_case_types,
12021        non_snake_case,
12022        clippy::pub_underscore_fields,
12023        clippy::style
12024    )]
12025    const _: () = {
12026        use alloy::sol_types as alloy_sol_types;
12027        {
12028            #[doc(hidden)]
12029            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12030            #[doc(hidden)]
12031            type UnderlyingRustTuple<'a> = (u64,);
12032            #[cfg(test)]
12033            #[allow(dead_code, unreachable_patterns)]
12034            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12035                match _t {
12036                    alloy_sol_types::private::AssertTypeEq::<
12037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12038                    >(_) => {},
12039                }
12040            }
12041            #[automatically_derived]
12042            #[doc(hidden)]
12043            impl ::core::convert::From<updateEpochStartBlockCall> for UnderlyingRustTuple<'_> {
12044                fn from(value: updateEpochStartBlockCall) -> Self {
12045                    (value.newEpochStartBlock,)
12046                }
12047            }
12048            #[automatically_derived]
12049            #[doc(hidden)]
12050            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateEpochStartBlockCall {
12051                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12052                    Self {
12053                        newEpochStartBlock: tuple.0,
12054                    }
12055                }
12056            }
12057        }
12058        {
12059            #[doc(hidden)]
12060            type UnderlyingSolTuple<'a> = ();
12061            #[doc(hidden)]
12062            type UnderlyingRustTuple<'a> = ();
12063            #[cfg(test)]
12064            #[allow(dead_code, unreachable_patterns)]
12065            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12066                match _t {
12067                    alloy_sol_types::private::AssertTypeEq::<
12068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12069                    >(_) => {},
12070                }
12071            }
12072            #[automatically_derived]
12073            #[doc(hidden)]
12074            impl ::core::convert::From<updateEpochStartBlockReturn> for UnderlyingRustTuple<'_> {
12075                fn from(value: updateEpochStartBlockReturn) -> Self {
12076                    ()
12077                }
12078            }
12079            #[automatically_derived]
12080            #[doc(hidden)]
12081            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateEpochStartBlockReturn {
12082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12083                    Self {}
12084                }
12085            }
12086        }
12087        #[automatically_derived]
12088        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
12089            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12090            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12091            type Return = updateEpochStartBlockReturn;
12092            type ReturnTuple<'a> = ();
12093            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12094            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
12095            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
12096            #[inline]
12097            fn new<'a>(
12098                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12099            ) -> Self {
12100                tuple.into()
12101            }
12102            #[inline]
12103            fn tokenize(&self) -> Self::Token<'_> {
12104                (
12105                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
12106                        &self.newEpochStartBlock,
12107                    ),
12108                )
12109            }
12110            #[inline]
12111            fn abi_decode_returns(
12112                data: &[u8],
12113                validate: bool,
12114            ) -> alloy_sol_types::Result<Self::Return> {
12115                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
12116                    data, validate,
12117                )
12118                .map(Into::into)
12119            }
12120        }
12121    };
12122    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12123    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
12124    ```solidity
12125    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
12126    ```*/
12127    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12128    #[derive(Clone)]
12129    pub struct upgradeToAndCallCall {
12130        #[allow(missing_docs)]
12131        pub newImplementation: alloy::sol_types::private::Address,
12132        #[allow(missing_docs)]
12133        pub data: alloy::sol_types::private::Bytes,
12134    }
12135    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
12136    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12137    #[derive(Clone)]
12138    pub struct upgradeToAndCallReturn {}
12139    #[allow(
12140        non_camel_case_types,
12141        non_snake_case,
12142        clippy::pub_underscore_fields,
12143        clippy::style
12144    )]
12145    const _: () = {
12146        use alloy::sol_types as alloy_sol_types;
12147        {
12148            #[doc(hidden)]
12149            type UnderlyingSolTuple<'a> = (
12150                alloy::sol_types::sol_data::Address,
12151                alloy::sol_types::sol_data::Bytes,
12152            );
12153            #[doc(hidden)]
12154            type UnderlyingRustTuple<'a> = (
12155                alloy::sol_types::private::Address,
12156                alloy::sol_types::private::Bytes,
12157            );
12158            #[cfg(test)]
12159            #[allow(dead_code, unreachable_patterns)]
12160            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12161                match _t {
12162                    alloy_sol_types::private::AssertTypeEq::<
12163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12164                    >(_) => {},
12165                }
12166            }
12167            #[automatically_derived]
12168            #[doc(hidden)]
12169            impl ::core::convert::From<upgradeToAndCallCall> for UnderlyingRustTuple<'_> {
12170                fn from(value: upgradeToAndCallCall) -> Self {
12171                    (value.newImplementation, value.data)
12172                }
12173            }
12174            #[automatically_derived]
12175            #[doc(hidden)]
12176            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallCall {
12177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12178                    Self {
12179                        newImplementation: tuple.0,
12180                        data: tuple.1,
12181                    }
12182                }
12183            }
12184        }
12185        {
12186            #[doc(hidden)]
12187            type UnderlyingSolTuple<'a> = ();
12188            #[doc(hidden)]
12189            type UnderlyingRustTuple<'a> = ();
12190            #[cfg(test)]
12191            #[allow(dead_code, unreachable_patterns)]
12192            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12193                match _t {
12194                    alloy_sol_types::private::AssertTypeEq::<
12195                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12196                    >(_) => {},
12197                }
12198            }
12199            #[automatically_derived]
12200            #[doc(hidden)]
12201            impl ::core::convert::From<upgradeToAndCallReturn> for UnderlyingRustTuple<'_> {
12202                fn from(value: upgradeToAndCallReturn) -> Self {
12203                    ()
12204                }
12205            }
12206            #[automatically_derived]
12207            #[doc(hidden)]
12208            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallReturn {
12209                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12210                    Self {}
12211                }
12212            }
12213        }
12214        #[automatically_derived]
12215        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
12216            type Parameters<'a> = (
12217                alloy::sol_types::sol_data::Address,
12218                alloy::sol_types::sol_data::Bytes,
12219            );
12220            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12221            type Return = upgradeToAndCallReturn;
12222            type ReturnTuple<'a> = ();
12223            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12224            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
12225            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
12226            #[inline]
12227            fn new<'a>(
12228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12229            ) -> Self {
12230                tuple.into()
12231            }
12232            #[inline]
12233            fn tokenize(&self) -> Self::Token<'_> {
12234                (
12235                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12236                        &self.newImplementation,
12237                    ),
12238                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
12239                        &self.data,
12240                    ),
12241                )
12242            }
12243            #[inline]
12244            fn abi_decode_returns(
12245                data: &[u8],
12246                validate: bool,
12247            ) -> alloy_sol_types::Result<Self::Return> {
12248                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
12249                    data, validate,
12250                )
12251                .map(Into::into)
12252            }
12253        }
12254    };
12255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12256    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
12257    ```solidity
12258    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
12259    ```*/
12260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12261    #[derive(Clone)]
12262    pub struct votingStakeTableStateCall {}
12263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12264    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
12265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12266    #[derive(Clone)]
12267    pub struct votingStakeTableStateReturn {
12268        #[allow(missing_docs)]
12269        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
12270        #[allow(missing_docs)]
12271        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12272        #[allow(missing_docs)]
12273        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12274        #[allow(missing_docs)]
12275        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12276    }
12277    #[allow(
12278        non_camel_case_types,
12279        non_snake_case,
12280        clippy::pub_underscore_fields,
12281        clippy::style
12282    )]
12283    const _: () = {
12284        use alloy::sol_types as alloy_sol_types;
12285        {
12286            #[doc(hidden)]
12287            type UnderlyingSolTuple<'a> = ();
12288            #[doc(hidden)]
12289            type UnderlyingRustTuple<'a> = ();
12290            #[cfg(test)]
12291            #[allow(dead_code, unreachable_patterns)]
12292            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12293                match _t {
12294                    alloy_sol_types::private::AssertTypeEq::<
12295                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12296                    >(_) => {},
12297                }
12298            }
12299            #[automatically_derived]
12300            #[doc(hidden)]
12301            impl ::core::convert::From<votingStakeTableStateCall> for UnderlyingRustTuple<'_> {
12302                fn from(value: votingStakeTableStateCall) -> Self {
12303                    ()
12304                }
12305            }
12306            #[automatically_derived]
12307            #[doc(hidden)]
12308            impl ::core::convert::From<UnderlyingRustTuple<'_>> for votingStakeTableStateCall {
12309                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12310                    Self {}
12311                }
12312            }
12313        }
12314        {
12315            #[doc(hidden)]
12316            type UnderlyingSolTuple<'a> = (
12317                alloy::sol_types::sol_data::Uint<256>,
12318                BN254::ScalarField,
12319                BN254::ScalarField,
12320                BN254::ScalarField,
12321            );
12322            #[doc(hidden)]
12323            type UnderlyingRustTuple<'a> = (
12324                alloy::sol_types::private::primitives::aliases::U256,
12325                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12326                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12327                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12328            );
12329            #[cfg(test)]
12330            #[allow(dead_code, unreachable_patterns)]
12331            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12332                match _t {
12333                    alloy_sol_types::private::AssertTypeEq::<
12334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12335                    >(_) => {},
12336                }
12337            }
12338            #[automatically_derived]
12339            #[doc(hidden)]
12340            impl ::core::convert::From<votingStakeTableStateReturn> for UnderlyingRustTuple<'_> {
12341                fn from(value: votingStakeTableStateReturn) -> Self {
12342                    (
12343                        value.threshold,
12344                        value.blsKeyComm,
12345                        value.schnorrKeyComm,
12346                        value.amountComm,
12347                    )
12348                }
12349            }
12350            #[automatically_derived]
12351            #[doc(hidden)]
12352            impl ::core::convert::From<UnderlyingRustTuple<'_>> for votingStakeTableStateReturn {
12353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12354                    Self {
12355                        threshold: tuple.0,
12356                        blsKeyComm: tuple.1,
12357                        schnorrKeyComm: tuple.2,
12358                        amountComm: tuple.3,
12359                    }
12360                }
12361            }
12362        }
12363        #[automatically_derived]
12364        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
12365            type Parameters<'a> = ();
12366            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12367            type Return = votingStakeTableStateReturn;
12368            type ReturnTuple<'a> = (
12369                alloy::sol_types::sol_data::Uint<256>,
12370                BN254::ScalarField,
12371                BN254::ScalarField,
12372                BN254::ScalarField,
12373            );
12374            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12375            const SIGNATURE: &'static str = "votingStakeTableState()";
12376            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
12377            #[inline]
12378            fn new<'a>(
12379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12380            ) -> Self {
12381                tuple.into()
12382            }
12383            #[inline]
12384            fn tokenize(&self) -> Self::Token<'_> {
12385                ()
12386            }
12387            #[inline]
12388            fn abi_decode_returns(
12389                data: &[u8],
12390                validate: bool,
12391            ) -> alloy_sol_types::Result<Self::Return> {
12392                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
12393                    data, validate,
12394                )
12395                .map(Into::into)
12396            }
12397        }
12398    };
12399    ///Container for all the [`LightClientV2Mock`](self) function calls.
12400    #[derive()]
12401    pub enum LightClientV2MockCalls {
12402        #[allow(missing_docs)]
12403        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12404        #[allow(missing_docs)]
12405        _getVk(_getVkCall),
12406        #[allow(missing_docs)]
12407        blocksPerEpoch(blocksPerEpochCall),
12408        #[allow(missing_docs)]
12409        currentBlockNumber(currentBlockNumberCall),
12410        #[allow(missing_docs)]
12411        currentEpoch(currentEpochCall),
12412        #[allow(missing_docs)]
12413        disablePermissionedProverMode(disablePermissionedProverModeCall),
12414        #[allow(missing_docs)]
12415        epochFromBlockNumber(epochFromBlockNumberCall),
12416        #[allow(missing_docs)]
12417        epochStartBlock(epochStartBlockCall),
12418        #[allow(missing_docs)]
12419        finalizedState(finalizedStateCall),
12420        #[allow(missing_docs)]
12421        genesisStakeTableState(genesisStakeTableStateCall),
12422        #[allow(missing_docs)]
12423        genesisState(genesisStateCall),
12424        #[allow(missing_docs)]
12425        getFirstEpoch(getFirstEpochCall),
12426        #[allow(missing_docs)]
12427        getHotShotCommitment(getHotShotCommitmentCall),
12428        #[allow(missing_docs)]
12429        getStateHistoryCount(getStateHistoryCountCall),
12430        #[allow(missing_docs)]
12431        getVersion(getVersionCall),
12432        #[allow(missing_docs)]
12433        initialize(initializeCall),
12434        #[allow(missing_docs)]
12435        initializeV2(initializeV2Call),
12436        #[allow(missing_docs)]
12437        isEpochRoot(isEpochRootCall),
12438        #[allow(missing_docs)]
12439        isGtEpochRoot(isGtEpochRootCall),
12440        #[allow(missing_docs)]
12441        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
12442        #[allow(missing_docs)]
12443        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
12444        #[allow(missing_docs)]
12445        newFinalizedState_0(newFinalizedState_0Call),
12446        #[allow(missing_docs)]
12447        newFinalizedState_1(newFinalizedState_1Call),
12448        #[allow(missing_docs)]
12449        owner(ownerCall),
12450        #[allow(missing_docs)]
12451        permissionedProver(permissionedProverCall),
12452        #[allow(missing_docs)]
12453        proxiableUUID(proxiableUUIDCall),
12454        #[allow(missing_docs)]
12455        renounceOwnership(renounceOwnershipCall),
12456        #[allow(missing_docs)]
12457        setBlocksPerEpoch(setBlocksPerEpochCall),
12458        #[allow(missing_docs)]
12459        setFinalizedState(setFinalizedStateCall),
12460        #[allow(missing_docs)]
12461        setHotShotDownSince(setHotShotDownSinceCall),
12462        #[allow(missing_docs)]
12463        setHotShotUp(setHotShotUpCall),
12464        #[allow(missing_docs)]
12465        setPermissionedProver(setPermissionedProverCall),
12466        #[allow(missing_docs)]
12467        setStateHistory(setStateHistoryCall),
12468        #[allow(missing_docs)]
12469        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
12470        #[allow(missing_docs)]
12471        setVotingStakeTableState(setVotingStakeTableStateCall),
12472        #[allow(missing_docs)]
12473        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
12474        #[allow(missing_docs)]
12475        stateHistoryCommitments(stateHistoryCommitmentsCall),
12476        #[allow(missing_docs)]
12477        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
12478        #[allow(missing_docs)]
12479        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
12480        #[allow(missing_docs)]
12481        transferOwnership(transferOwnershipCall),
12482        #[allow(missing_docs)]
12483        updateEpochStartBlock(updateEpochStartBlockCall),
12484        #[allow(missing_docs)]
12485        upgradeToAndCall(upgradeToAndCallCall),
12486        #[allow(missing_docs)]
12487        votingStakeTableState(votingStakeTableStateCall),
12488    }
12489    #[automatically_derived]
12490    impl LightClientV2MockCalls {
12491        /// All the selectors of this enum.
12492        ///
12493        /// Note that the selectors might not be in the same order as the variants.
12494        /// No guarantees are made about the order of the selectors.
12495        ///
12496        /// Prefer using `SolInterface` methods instead.
12497        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12498            [1u8, 63u8, 165u8, 252u8],
12499            [2u8, 181u8, 146u8, 243u8],
12500            [6u8, 37u8, 225u8, 155u8],
12501            [13u8, 142u8, 110u8, 44u8],
12502            [18u8, 23u8, 60u8, 44u8],
12503            [22u8, 122u8, 198u8, 24u8],
12504            [32u8, 99u8, 212u8, 247u8],
12505            [37u8, 41u8, 116u8, 39u8],
12506            [45u8, 82u8, 170u8, 214u8],
12507            [47u8, 121u8, 136u8, 157u8],
12508            [48u8, 12u8, 137u8, 221u8],
12509            [49u8, 61u8, 247u8, 177u8],
12510            [55u8, 142u8, 194u8, 59u8],
12511            [60u8, 35u8, 182u8, 219u8],
12512            [62u8, 213u8, 91u8, 123u8],
12513            [66u8, 109u8, 49u8, 148u8],
12514            [67u8, 61u8, 186u8, 159u8],
12515            [79u8, 30u8, 242u8, 134u8],
12516            [82u8, 209u8, 144u8, 45u8],
12517            [98u8, 58u8, 19u8, 56u8],
12518            [105u8, 204u8, 106u8, 4u8],
12519            [113u8, 80u8, 24u8, 166u8],
12520            [117u8, 124u8, 55u8, 173u8],
12521            [118u8, 103u8, 24u8, 8u8],
12522            [130u8, 110u8, 65u8, 252u8],
12523            [133u8, 132u8, 210u8, 63u8],
12524            [141u8, 165u8, 203u8, 91u8],
12525            [144u8, 193u8, 67u8, 144u8],
12526            [150u8, 193u8, 202u8, 97u8],
12527            [155u8, 170u8, 60u8, 201u8],
12528            [159u8, 219u8, 84u8, 167u8],
12529            [173u8, 60u8, 177u8, 204u8],
12530            [179u8, 59u8, 196u8, 145u8],
12531            [179u8, 218u8, 242u8, 84u8],
12532            [181u8, 173u8, 234u8, 60u8],
12533            [194u8, 59u8, 158u8, 158u8],
12534            [200u8, 229u8, 228u8, 152u8],
12535            [210u8, 77u8, 147u8, 61u8],
12536            [224u8, 48u8, 51u8, 1u8],
12537            [240u8, 104u8, 32u8, 84u8],
12538            [242u8, 253u8, 227u8, 139u8],
12539            [245u8, 103u8, 97u8, 96u8],
12540            [249u8, 229u8, 13u8, 25u8],
12541        ];
12542    }
12543    #[automatically_derived]
12544    impl alloy_sol_types::SolInterface for LightClientV2MockCalls {
12545        const NAME: &'static str = "LightClientV2MockCalls";
12546        const MIN_DATA_LENGTH: usize = 0usize;
12547        const COUNT: usize = 43usize;
12548        #[inline]
12549        fn selector(&self) -> [u8; 4] {
12550            match self {
12551                Self::UPGRADE_INTERFACE_VERSION(_) => {
12552                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
12553                },
12554                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
12555                Self::blocksPerEpoch(_) => {
12556                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
12557                },
12558                Self::currentBlockNumber(_) => {
12559                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12560                },
12561                Self::currentEpoch(_) => <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR,
12562                Self::disablePermissionedProverMode(_) => {
12563                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
12564                },
12565                Self::epochFromBlockNumber(_) => {
12566                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12567                },
12568                Self::epochStartBlock(_) => {
12569                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
12570                },
12571                Self::finalizedState(_) => {
12572                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12573                },
12574                Self::genesisStakeTableState(_) => {
12575                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12576                },
12577                Self::genesisState(_) => <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR,
12578                Self::getFirstEpoch(_) => <getFirstEpochCall as alloy_sol_types::SolCall>::SELECTOR,
12579                Self::getHotShotCommitment(_) => {
12580                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
12581                },
12582                Self::getStateHistoryCount(_) => {
12583                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
12584                },
12585                Self::getVersion(_) => <getVersionCall as alloy_sol_types::SolCall>::SELECTOR,
12586                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
12587                Self::initializeV2(_) => <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR,
12588                Self::isEpochRoot(_) => <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR,
12589                Self::isGtEpochRoot(_) => <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR,
12590                Self::isPermissionedProverEnabled(_) => {
12591                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
12592                },
12593                Self::lagOverEscapeHatchThreshold(_) => {
12594                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
12595                },
12596                Self::newFinalizedState_0(_) => {
12597                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
12598                },
12599                Self::newFinalizedState_1(_) => {
12600                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
12601                },
12602                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
12603                Self::permissionedProver(_) => {
12604                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12605                },
12606                Self::proxiableUUID(_) => <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR,
12607                Self::renounceOwnership(_) => {
12608                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12609                },
12610                Self::setBlocksPerEpoch(_) => {
12611                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
12612                },
12613                Self::setFinalizedState(_) => {
12614                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12615                },
12616                Self::setHotShotDownSince(_) => {
12617                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
12618                },
12619                Self::setHotShotUp(_) => <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR,
12620                Self::setPermissionedProver(_) => {
12621                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12622                },
12623                Self::setStateHistory(_) => {
12624                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
12625                },
12626                Self::setStateHistoryRetentionPeriod(_) => {
12627                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12628                },
12629                Self::setVotingStakeTableState(_) => {
12630                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12631                },
12632                Self::setstateHistoryRetentionPeriod(_) => {
12633                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12634                },
12635                Self::stateHistoryCommitments(_) => {
12636                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
12637                },
12638                Self::stateHistoryFirstIndex(_) => {
12639                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
12640                },
12641                Self::stateHistoryRetentionPeriod(_) => {
12642                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12643                },
12644                Self::transferOwnership(_) => {
12645                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12646                },
12647                Self::updateEpochStartBlock(_) => {
12648                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
12649                },
12650                Self::upgradeToAndCall(_) => {
12651                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
12652                },
12653                Self::votingStakeTableState(_) => {
12654                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12655                },
12656            }
12657        }
12658        #[inline]
12659        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12660            Self::SELECTORS.get(i).copied()
12661        }
12662        #[inline]
12663        fn valid_selector(selector: [u8; 4]) -> bool {
12664            Self::SELECTORS.binary_search(&selector).is_ok()
12665        }
12666        #[inline]
12667        #[allow(non_snake_case)]
12668        fn abi_decode_raw(
12669            selector: [u8; 4],
12670            data: &[u8],
12671            validate: bool,
12672        ) -> alloy_sol_types::Result<Self> {
12673            static DECODE_SHIMS: &[fn(
12674                &[u8],
12675                bool,
12676            )
12677                -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
12678                {
12679                    fn setPermissionedProver(
12680                        data: &[u8],
12681                        validate: bool,
12682                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12683                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12684                            data, validate,
12685                        )
12686                        .map(LightClientV2MockCalls::setPermissionedProver)
12687                    }
12688                    setPermissionedProver
12689                },
12690                {
12691                    fn stateHistoryCommitments(
12692                        data: &[u8],
12693                        validate: bool,
12694                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12695                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12696                            data, validate,
12697                        )
12698                        .map(LightClientV2MockCalls::stateHistoryCommitments)
12699                    }
12700                    stateHistoryCommitments
12701                },
12702                {
12703                    fn votingStakeTableState(
12704                        data: &[u8],
12705                        validate: bool,
12706                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12707                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12708                            data, validate,
12709                        )
12710                        .map(LightClientV2MockCalls::votingStakeTableState)
12711                    }
12712                    votingStakeTableState
12713                },
12714                {
12715                    fn getVersion(
12716                        data: &[u8],
12717                        validate: bool,
12718                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12719                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12720                            .map(LightClientV2MockCalls::getVersion)
12721                    }
12722                    getVersion
12723                },
12724                {
12725                    fn _getVk(
12726                        data: &[u8],
12727                        validate: bool,
12728                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12729                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12730                            .map(LightClientV2MockCalls::_getVk)
12731                    }
12732                    _getVk
12733                },
12734                {
12735                    fn updateEpochStartBlock(
12736                        data: &[u8],
12737                        validate: bool,
12738                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12739                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12740                            data, validate,
12741                        )
12742                        .map(LightClientV2MockCalls::updateEpochStartBlock)
12743                    }
12744                    updateEpochStartBlock
12745                },
12746                {
12747                    fn newFinalizedState_0(
12748                        data: &[u8],
12749                        validate: bool,
12750                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12751                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
12752                            data, validate,
12753                        )
12754                        .map(LightClientV2MockCalls::newFinalizedState_0)
12755                    }
12756                    newFinalizedState_0
12757                },
12758                {
12759                    fn isEpochRoot(
12760                        data: &[u8],
12761                        validate: bool,
12762                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12763                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
12764                            data, validate,
12765                        )
12766                        .map(LightClientV2MockCalls::isEpochRoot)
12767                    }
12768                    isEpochRoot
12769                },
12770                {
12771                    fn setHotShotDownSince(
12772                        data: &[u8],
12773                        validate: bool,
12774                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12775                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
12776                            data, validate,
12777                        )
12778                        .map(LightClientV2MockCalls::setHotShotDownSince)
12779                    }
12780                    setHotShotDownSince
12781                },
12782                {
12783                    fn stateHistoryFirstIndex(
12784                        data: &[u8],
12785                        validate: bool,
12786                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12787                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
12788                            data, validate,
12789                        )
12790                        .map(LightClientV2MockCalls::stateHistoryFirstIndex)
12791                    }
12792                    stateHistoryFirstIndex
12793                },
12794                {
12795                    fn isGtEpochRoot(
12796                        data: &[u8],
12797                        validate: bool,
12798                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12799                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
12800                            data, validate,
12801                        )
12802                        .map(LightClientV2MockCalls::isGtEpochRoot)
12803                    }
12804                    isGtEpochRoot
12805                },
12806                {
12807                    fn permissionedProver(
12808                        data: &[u8],
12809                        validate: bool,
12810                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12811                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12812                            data, validate,
12813                        )
12814                        .map(LightClientV2MockCalls::permissionedProver)
12815                    }
12816                    permissionedProver
12817                },
12818                {
12819                    fn currentBlockNumber(
12820                        data: &[u8],
12821                        validate: bool,
12822                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12823                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12824                            data, validate,
12825                        )
12826                        .map(LightClientV2MockCalls::currentBlockNumber)
12827                    }
12828                    currentBlockNumber
12829                },
12830                {
12831                    fn setBlocksPerEpoch(
12832                        data: &[u8],
12833                        validate: bool,
12834                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12835                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
12836                            data, validate,
12837                        )
12838                        .map(LightClientV2MockCalls::setBlocksPerEpoch)
12839                    }
12840                    setBlocksPerEpoch
12841                },
12842                {
12843                    fn epochStartBlock(
12844                        data: &[u8],
12845                        validate: bool,
12846                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12847                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12848                            data, validate,
12849                        )
12850                        .map(LightClientV2MockCalls::epochStartBlock)
12851                    }
12852                    epochStartBlock
12853                },
12854                {
12855                    fn genesisStakeTableState(
12856                        data: &[u8],
12857                        validate: bool,
12858                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12859                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12860                            data, validate,
12861                        )
12862                        .map(LightClientV2MockCalls::genesisStakeTableState)
12863                    }
12864                    genesisStakeTableState
12865                },
12866                {
12867                    fn setStateHistoryRetentionPeriod(
12868                        data: &[u8],
12869                        validate: bool,
12870                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12871                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12872                                data,
12873                                validate,
12874                            )
12875                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
12876                    }
12877                    setStateHistoryRetentionPeriod
12878                },
12879                {
12880                    fn upgradeToAndCall(
12881                        data: &[u8],
12882                        validate: bool,
12883                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12884                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12885                            data, validate,
12886                        )
12887                        .map(LightClientV2MockCalls::upgradeToAndCall)
12888                    }
12889                    upgradeToAndCall
12890                },
12891                {
12892                    fn proxiableUUID(
12893                        data: &[u8],
12894                        validate: bool,
12895                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12896                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12897                            data, validate,
12898                        )
12899                        .map(LightClientV2MockCalls::proxiableUUID)
12900                    }
12901                    proxiableUUID
12902                },
12903                {
12904                    fn setVotingStakeTableState(
12905                        data: &[u8],
12906                        validate: bool,
12907                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12908                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12909                            data, validate,
12910                        )
12911                        .map(LightClientV2MockCalls::setVotingStakeTableState)
12912                    }
12913                    setVotingStakeTableState
12914                },
12915                {
12916                    fn disablePermissionedProverMode(
12917                        data: &[u8],
12918                        validate: bool,
12919                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12920                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12921                                data,
12922                                validate,
12923                            )
12924                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
12925                    }
12926                    disablePermissionedProverMode
12927                },
12928                {
12929                    fn renounceOwnership(
12930                        data: &[u8],
12931                        validate: bool,
12932                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12933                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12934                            data, validate,
12935                        )
12936                        .map(LightClientV2MockCalls::renounceOwnership)
12937                    }
12938                    renounceOwnership
12939                },
12940                {
12941                    fn newFinalizedState_1(
12942                        data: &[u8],
12943                        validate: bool,
12944                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12945                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
12946                            data, validate,
12947                        )
12948                        .map(LightClientV2MockCalls::newFinalizedState_1)
12949                    }
12950                    newFinalizedState_1
12951                },
12952                {
12953                    fn currentEpoch(
12954                        data: &[u8],
12955                        validate: bool,
12956                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12957                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
12958                            data, validate,
12959                        )
12960                        .map(LightClientV2MockCalls::currentEpoch)
12961                    }
12962                    currentEpoch
12963                },
12964                {
12965                    fn isPermissionedProverEnabled(
12966                        data: &[u8],
12967                        validate: bool,
12968                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12969                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
12970                                data,
12971                                validate,
12972                            )
12973                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
12974                    }
12975                    isPermissionedProverEnabled
12976                },
12977                {
12978                    fn getHotShotCommitment(
12979                        data: &[u8],
12980                        validate: bool,
12981                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12982                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
12983                            data, validate,
12984                        )
12985                        .map(LightClientV2MockCalls::getHotShotCommitment)
12986                    }
12987                    getHotShotCommitment
12988                },
12989                {
12990                    fn owner(
12991                        data: &[u8],
12992                        validate: bool,
12993                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
12994                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
12995                            .map(LightClientV2MockCalls::owner)
12996                    }
12997                    owner
12998                },
12999                {
13000                    fn epochFromBlockNumber(
13001                        data: &[u8],
13002                        validate: bool,
13003                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13004                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13005                            data, validate,
13006                        )
13007                        .map(LightClientV2MockCalls::epochFromBlockNumber)
13008                    }
13009                    epochFromBlockNumber
13010                },
13011                {
13012                    fn setstateHistoryRetentionPeriod(
13013                        data: &[u8],
13014                        validate: bool,
13015                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13016                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13017                                data,
13018                                validate,
13019                            )
13020                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
13021                    }
13022                    setstateHistoryRetentionPeriod
13023                },
13024                {
13025                    fn initialize(
13026                        data: &[u8],
13027                        validate: bool,
13028                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13029                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
13030                            .map(LightClientV2MockCalls::initialize)
13031                    }
13032                    initialize
13033                },
13034                {
13035                    fn finalizedState(
13036                        data: &[u8],
13037                        validate: bool,
13038                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13039                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13040                            data, validate,
13041                        )
13042                        .map(LightClientV2MockCalls::finalizedState)
13043                    }
13044                    finalizedState
13045                },
13046                {
13047                    fn UPGRADE_INTERFACE_VERSION(
13048                        data: &[u8],
13049                        validate: bool,
13050                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13051                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
13052                            data, validate,
13053                        )
13054                        .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
13055                    }
13056                    UPGRADE_INTERFACE_VERSION
13057                },
13058                {
13059                    fn initializeV2(
13060                        data: &[u8],
13061                        validate: bool,
13062                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13063                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13064                            data, validate,
13065                        )
13066                        .map(LightClientV2MockCalls::initializeV2)
13067                    }
13068                    initializeV2
13069                },
13070                {
13071                    fn getFirstEpoch(
13072                        data: &[u8],
13073                        validate: bool,
13074                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13075                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13076                            data, validate,
13077                        )
13078                        .map(LightClientV2MockCalls::getFirstEpoch)
13079                    }
13080                    getFirstEpoch
13081                },
13082                {
13083                    fn setFinalizedState(
13084                        data: &[u8],
13085                        validate: bool,
13086                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13087                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13088                            data, validate,
13089                        )
13090                        .map(LightClientV2MockCalls::setFinalizedState)
13091                    }
13092                    setFinalizedState
13093                },
13094                {
13095                    fn stateHistoryRetentionPeriod(
13096                        data: &[u8],
13097                        validate: bool,
13098                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13099                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13100                                data,
13101                                validate,
13102                            )
13103                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
13104                    }
13105                    stateHistoryRetentionPeriod
13106                },
13107                {
13108                    fn setHotShotUp(
13109                        data: &[u8],
13110                        validate: bool,
13111                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13112                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
13113                            data, validate,
13114                        )
13115                        .map(LightClientV2MockCalls::setHotShotUp)
13116                    }
13117                    setHotShotUp
13118                },
13119                {
13120                    fn genesisState(
13121                        data: &[u8],
13122                        validate: bool,
13123                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13124                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13125                            data, validate,
13126                        )
13127                        .map(LightClientV2MockCalls::genesisState)
13128                    }
13129                    genesisState
13130                },
13131                {
13132                    fn lagOverEscapeHatchThreshold(
13133                        data: &[u8],
13134                        validate: bool,
13135                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13136                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
13137                                data,
13138                                validate,
13139                            )
13140                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
13141                    }
13142                    lagOverEscapeHatchThreshold
13143                },
13144                {
13145                    fn blocksPerEpoch(
13146                        data: &[u8],
13147                        validate: bool,
13148                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13149                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13150                            data, validate,
13151                        )
13152                        .map(LightClientV2MockCalls::blocksPerEpoch)
13153                    }
13154                    blocksPerEpoch
13155                },
13156                {
13157                    fn transferOwnership(
13158                        data: &[u8],
13159                        validate: bool,
13160                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13161                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13162                            data, validate,
13163                        )
13164                        .map(LightClientV2MockCalls::transferOwnership)
13165                    }
13166                    transferOwnership
13167                },
13168                {
13169                    fn setStateHistory(
13170                        data: &[u8],
13171                        validate: bool,
13172                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13173                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
13174                            data, validate,
13175                        )
13176                        .map(LightClientV2MockCalls::setStateHistory)
13177                    }
13178                    setStateHistory
13179                },
13180                {
13181                    fn getStateHistoryCount(
13182                        data: &[u8],
13183                        validate: bool,
13184                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
13185                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
13186                            data, validate,
13187                        )
13188                        .map(LightClientV2MockCalls::getStateHistoryCount)
13189                    }
13190                    getStateHistoryCount
13191                },
13192            ];
13193            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13194                return Err(alloy_sol_types::Error::unknown_selector(
13195                    <Self as alloy_sol_types::SolInterface>::NAME,
13196                    selector,
13197                ));
13198            };
13199            DECODE_SHIMS[idx](data, validate)
13200        }
13201        #[inline]
13202        fn abi_encoded_size(&self) -> usize {
13203            match self {
13204                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13205                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
13206                        inner,
13207                    )
13208                }
13209                Self::_getVk(inner) => {
13210                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13211                }
13212                Self::blocksPerEpoch(inner) => {
13213                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
13214                        inner,
13215                    )
13216                }
13217                Self::currentBlockNumber(inner) => {
13218                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
13219                        inner,
13220                    )
13221                }
13222                Self::currentEpoch(inner) => {
13223                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
13224                        inner,
13225                    )
13226                }
13227                Self::disablePermissionedProverMode(inner) => {
13228                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
13229                        inner,
13230                    )
13231                }
13232                Self::epochFromBlockNumber(inner) => {
13233                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
13234                        inner,
13235                    )
13236                }
13237                Self::epochStartBlock(inner) => {
13238                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
13239                        inner,
13240                    )
13241                }
13242                Self::finalizedState(inner) => {
13243                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13244                        inner,
13245                    )
13246                }
13247                Self::genesisStakeTableState(inner) => {
13248                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13249                        inner,
13250                    )
13251                }
13252                Self::genesisState(inner) => {
13253                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13254                        inner,
13255                    )
13256                }
13257                Self::getFirstEpoch(inner) => {
13258                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
13259                        inner,
13260                    )
13261                }
13262                Self::getHotShotCommitment(inner) => {
13263                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
13264                        inner,
13265                    )
13266                }
13267                Self::getStateHistoryCount(inner) => {
13268                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
13269                        inner,
13270                    )
13271                }
13272                Self::getVersion(inner) => {
13273                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13274                }
13275                Self::initialize(inner) => {
13276                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13277                }
13278                Self::initializeV2(inner) => {
13279                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
13280                        inner,
13281                    )
13282                }
13283                Self::isEpochRoot(inner) => {
13284                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
13285                        inner,
13286                    )
13287                }
13288                Self::isGtEpochRoot(inner) => {
13289                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
13290                        inner,
13291                    )
13292                }
13293                Self::isPermissionedProverEnabled(inner) => {
13294                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
13295                        inner,
13296                    )
13297                }
13298                Self::lagOverEscapeHatchThreshold(inner) => {
13299                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
13300                        inner,
13301                    )
13302                }
13303                Self::newFinalizedState_0(inner) => {
13304                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
13305                        inner,
13306                    )
13307                }
13308                Self::newFinalizedState_1(inner) => {
13309                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
13310                        inner,
13311                    )
13312                }
13313                Self::owner(inner) => {
13314                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13315                }
13316                Self::permissionedProver(inner) => {
13317                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
13318                        inner,
13319                    )
13320                }
13321                Self::proxiableUUID(inner) => {
13322                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
13323                        inner,
13324                    )
13325                }
13326                Self::renounceOwnership(inner) => {
13327                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13328                        inner,
13329                    )
13330                }
13331                Self::setBlocksPerEpoch(inner) => {
13332                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
13333                        inner,
13334                    )
13335                }
13336                Self::setFinalizedState(inner) => {
13337                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13338                        inner,
13339                    )
13340                }
13341                Self::setHotShotDownSince(inner) => {
13342                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
13343                        inner,
13344                    )
13345                }
13346                Self::setHotShotUp(inner) => {
13347                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
13348                        inner,
13349                    )
13350                }
13351                Self::setPermissionedProver(inner) => {
13352                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
13353                        inner,
13354                    )
13355                }
13356                Self::setStateHistory(inner) => {
13357                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
13358                        inner,
13359                    )
13360                }
13361                Self::setStateHistoryRetentionPeriod(inner) => {
13362                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13363                        inner,
13364                    )
13365                }
13366                Self::setVotingStakeTableState(inner) => {
13367                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13368                        inner,
13369                    )
13370                }
13371                Self::setstateHistoryRetentionPeriod(inner) => {
13372                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13373                        inner,
13374                    )
13375                }
13376                Self::stateHistoryCommitments(inner) => {
13377                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
13378                        inner,
13379                    )
13380                }
13381                Self::stateHistoryFirstIndex(inner) => {
13382                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
13383                        inner,
13384                    )
13385                }
13386                Self::stateHistoryRetentionPeriod(inner) => {
13387                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13388                        inner,
13389                    )
13390                }
13391                Self::transferOwnership(inner) => {
13392                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13393                        inner,
13394                    )
13395                }
13396                Self::updateEpochStartBlock(inner) => {
13397                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
13398                        inner,
13399                    )
13400                }
13401                Self::upgradeToAndCall(inner) => {
13402                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
13403                        inner,
13404                    )
13405                }
13406                Self::votingStakeTableState(inner) => {
13407                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13408                        inner,
13409                    )
13410                }
13411            }
13412        }
13413        #[inline]
13414        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13415            match self {
13416                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13417                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
13418                        inner, out,
13419                    )
13420                },
13421                Self::_getVk(inner) => {
13422                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13423                },
13424                Self::blocksPerEpoch(inner) => {
13425                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13426                },
13427                Self::currentBlockNumber(inner) => {
13428                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13429                },
13430                Self::currentEpoch(inner) => {
13431                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13432                },
13433                Self::disablePermissionedProverMode(inner) => {
13434                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13435                        inner, out,
13436                    )
13437                },
13438                Self::epochFromBlockNumber(inner) => {
13439                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13440                        inner, out,
13441                    )
13442                },
13443                Self::epochStartBlock(inner) => {
13444                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13445                },
13446                Self::finalizedState(inner) => {
13447                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13448                },
13449                Self::genesisStakeTableState(inner) => {
13450                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13451                        inner, out,
13452                    )
13453                },
13454                Self::genesisState(inner) => {
13455                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13456                },
13457                Self::getFirstEpoch(inner) => {
13458                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13459                },
13460                Self::getHotShotCommitment(inner) => {
13461                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
13462                        inner, out,
13463                    )
13464                },
13465                Self::getStateHistoryCount(inner) => {
13466                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
13467                        inner, out,
13468                    )
13469                },
13470                Self::getVersion(inner) => {
13471                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13472                },
13473                Self::initialize(inner) => {
13474                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13475                },
13476                Self::initializeV2(inner) => {
13477                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13478                },
13479                Self::isEpochRoot(inner) => {
13480                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13481                },
13482                Self::isGtEpochRoot(inner) => {
13483                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13484                },
13485                Self::isPermissionedProverEnabled(inner) => {
13486                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
13487                        inner, out,
13488                    )
13489                },
13490                Self::lagOverEscapeHatchThreshold(inner) => {
13491                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
13492                        inner, out,
13493                    )
13494                },
13495                Self::newFinalizedState_0(inner) => {
13496                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
13497                        inner, out,
13498                    )
13499                },
13500                Self::newFinalizedState_1(inner) => {
13501                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
13502                        inner, out,
13503                    )
13504                },
13505                Self::owner(inner) => {
13506                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13507                },
13508                Self::permissionedProver(inner) => {
13509                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13510                },
13511                Self::proxiableUUID(inner) => {
13512                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13513                },
13514                Self::renounceOwnership(inner) => {
13515                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13516                },
13517                Self::setBlocksPerEpoch(inner) => {
13518                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13519                },
13520                Self::setFinalizedState(inner) => {
13521                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13522                },
13523                Self::setHotShotDownSince(inner) => {
13524                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
13525                        inner, out,
13526                    )
13527                },
13528                Self::setHotShotUp(inner) => {
13529                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13530                },
13531                Self::setPermissionedProver(inner) => {
13532                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13533                        inner, out,
13534                    )
13535                },
13536                Self::setStateHistory(inner) => {
13537                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13538                },
13539                Self::setStateHistoryRetentionPeriod(inner) => {
13540                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13541                        inner, out,
13542                    )
13543                },
13544                Self::setVotingStakeTableState(inner) => {
13545                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13546                        inner, out,
13547                    )
13548                },
13549                Self::setstateHistoryRetentionPeriod(inner) => {
13550                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13551                        inner, out,
13552                    )
13553                },
13554                Self::stateHistoryCommitments(inner) => {
13555                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
13556                        inner, out,
13557                    )
13558                },
13559                Self::stateHistoryFirstIndex(inner) => {
13560                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
13561                        inner, out,
13562                    )
13563                },
13564                Self::stateHistoryRetentionPeriod(inner) => {
13565                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13566                        inner, out,
13567                    )
13568                },
13569                Self::transferOwnership(inner) => {
13570                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13571                },
13572                Self::updateEpochStartBlock(inner) => {
13573                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
13574                        inner, out,
13575                    )
13576                },
13577                Self::upgradeToAndCall(inner) => {
13578                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13579                },
13580                Self::votingStakeTableState(inner) => {
13581                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13582                        inner, out,
13583                    )
13584                },
13585            }
13586        }
13587    }
13588    ///Container for all the [`LightClientV2Mock`](self) custom errors.
13589    #[derive(Debug, PartialEq, Eq, Hash)]
13590    pub enum LightClientV2MockErrors {
13591        #[allow(missing_docs)]
13592        AddressEmptyCode(AddressEmptyCode),
13593        #[allow(missing_docs)]
13594        DeprecatedApi(DeprecatedApi),
13595        #[allow(missing_docs)]
13596        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
13597        #[allow(missing_docs)]
13598        ERC1967NonPayable(ERC1967NonPayable),
13599        #[allow(missing_docs)]
13600        FailedInnerCall(FailedInnerCall),
13601        #[allow(missing_docs)]
13602        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
13603        #[allow(missing_docs)]
13604        InvalidAddress(InvalidAddress),
13605        #[allow(missing_docs)]
13606        InvalidArgs(InvalidArgs),
13607        #[allow(missing_docs)]
13608        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
13609        #[allow(missing_docs)]
13610        InvalidInitialization(InvalidInitialization),
13611        #[allow(missing_docs)]
13612        InvalidMaxStateHistory(InvalidMaxStateHistory),
13613        #[allow(missing_docs)]
13614        InvalidProof(InvalidProof),
13615        #[allow(missing_docs)]
13616        MissingEpochRootUpdate(MissingEpochRootUpdate),
13617        #[allow(missing_docs)]
13618        NoChangeRequired(NoChangeRequired),
13619        #[allow(missing_docs)]
13620        NotInitializing(NotInitializing),
13621        #[allow(missing_docs)]
13622        OutdatedState(OutdatedState),
13623        #[allow(missing_docs)]
13624        OwnableInvalidOwner(OwnableInvalidOwner),
13625        #[allow(missing_docs)]
13626        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
13627        #[allow(missing_docs)]
13628        ProverNotPermissioned(ProverNotPermissioned),
13629        #[allow(missing_docs)]
13630        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
13631        #[allow(missing_docs)]
13632        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
13633        #[allow(missing_docs)]
13634        WrongStakeTableUsed(WrongStakeTableUsed),
13635    }
13636    #[automatically_derived]
13637    impl LightClientV2MockErrors {
13638        /// All the selectors of this enum.
13639        ///
13640        /// Note that the selectors might not be in the same order as the variants.
13641        /// No guarantees are made about the order of the selectors.
13642        ///
13643        /// Prefer using `SolInterface` methods instead.
13644        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13645            [5u8, 28u8, 70u8, 239u8],
13646            [8u8, 10u8, 232u8, 217u8],
13647            [9u8, 189u8, 227u8, 57u8],
13648            [17u8, 140u8, 218u8, 167u8],
13649            [20u8, 37u8, 234u8, 66u8],
13650            [30u8, 79u8, 189u8, 247u8],
13651            [76u8, 156u8, 140u8, 227u8],
13652            [78u8, 64u8, 92u8, 141u8],
13653            [81u8, 97u8, 128u8, 137u8],
13654            [97u8, 90u8, 146u8, 100u8],
13655            [153u8, 150u8, 179u8, 21u8],
13656            [161u8, 186u8, 7u8, 238u8],
13657            [163u8, 166u8, 71u8, 128u8],
13658            [168u8, 99u8, 174u8, 201u8],
13659            [170u8, 29u8, 73u8, 164u8],
13660            [176u8, 180u8, 56u8, 119u8],
13661            [179u8, 152u8, 151u8, 159u8],
13662            [215u8, 230u8, 188u8, 248u8],
13663            [224u8, 124u8, 141u8, 186u8],
13664            [230u8, 196u8, 36u8, 123u8],
13665            [244u8, 160u8, 238u8, 224u8],
13666            [249u8, 46u8, 232u8, 169u8],
13667        ];
13668    }
13669    #[automatically_derived]
13670    impl alloy_sol_types::SolInterface for LightClientV2MockErrors {
13671        const NAME: &'static str = "LightClientV2MockErrors";
13672        const MIN_DATA_LENGTH: usize = 0usize;
13673        const COUNT: usize = 22usize;
13674        #[inline]
13675        fn selector(&self) -> [u8; 4] {
13676            match self {
13677                Self::AddressEmptyCode(_) => {
13678                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13679                },
13680                Self::DeprecatedApi(_) => <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR,
13681                Self::ERC1967InvalidImplementation(_) => {
13682                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13683                },
13684                Self::ERC1967NonPayable(_) => {
13685                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13686                },
13687                Self::FailedInnerCall(_) => {
13688                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13689                },
13690                Self::InsufficientSnapshotHistory(_) => {
13691                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13692                },
13693                Self::InvalidAddress(_) => <InvalidAddress as alloy_sol_types::SolError>::SELECTOR,
13694                Self::InvalidArgs(_) => <InvalidArgs as alloy_sol_types::SolError>::SELECTOR,
13695                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13696                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13697                },
13698                Self::InvalidInitialization(_) => {
13699                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13700                },
13701                Self::InvalidMaxStateHistory(_) => {
13702                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13703                },
13704                Self::InvalidProof(_) => <InvalidProof as alloy_sol_types::SolError>::SELECTOR,
13705                Self::MissingEpochRootUpdate(_) => {
13706                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
13707                },
13708                Self::NoChangeRequired(_) => {
13709                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13710                },
13711                Self::NotInitializing(_) => {
13712                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13713                },
13714                Self::OutdatedState(_) => <OutdatedState as alloy_sol_types::SolError>::SELECTOR,
13715                Self::OwnableInvalidOwner(_) => {
13716                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13717                },
13718                Self::OwnableUnauthorizedAccount(_) => {
13719                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13720                },
13721                Self::ProverNotPermissioned(_) => {
13722                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13723                },
13724                Self::UUPSUnauthorizedCallContext(_) => {
13725                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13726                },
13727                Self::UUPSUnsupportedProxiableUUID(_) => {
13728                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13729                },
13730                Self::WrongStakeTableUsed(_) => {
13731                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13732                },
13733            }
13734        }
13735        #[inline]
13736        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13737            Self::SELECTORS.get(i).copied()
13738        }
13739        #[inline]
13740        fn valid_selector(selector: [u8; 4]) -> bool {
13741            Self::SELECTORS.binary_search(&selector).is_ok()
13742        }
13743        #[inline]
13744        #[allow(non_snake_case)]
13745        fn abi_decode_raw(
13746            selector: [u8; 4],
13747            data: &[u8],
13748            validate: bool,
13749        ) -> alloy_sol_types::Result<Self> {
13750            static DECODE_SHIMS: &[fn(
13751                &[u8],
13752                bool,
13753            )
13754                -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
13755                {
13756                    fn OutdatedState(
13757                        data: &[u8],
13758                        validate: bool,
13759                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13760                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13761                            .map(LightClientV2MockErrors::OutdatedState)
13762                    }
13763                    OutdatedState
13764                },
13765                {
13766                    fn MissingEpochRootUpdate(
13767                        data: &[u8],
13768                        validate: bool,
13769                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13770                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
13771                            data, validate,
13772                        )
13773                        .map(LightClientV2MockErrors::MissingEpochRootUpdate)
13774                    }
13775                    MissingEpochRootUpdate
13776                },
13777                {
13778                    fn InvalidProof(
13779                        data: &[u8],
13780                        validate: bool,
13781                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13782                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13783                            .map(LightClientV2MockErrors::InvalidProof)
13784                    }
13785                    InvalidProof
13786                },
13787                {
13788                    fn OwnableUnauthorizedAccount(
13789                        data: &[u8],
13790                        validate: bool,
13791                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13792                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13793                            data, validate,
13794                        )
13795                        .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
13796                    }
13797                    OwnableUnauthorizedAccount
13798                },
13799                {
13800                    fn FailedInnerCall(
13801                        data: &[u8],
13802                        validate: bool,
13803                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13804                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13805                            data, validate,
13806                        )
13807                        .map(LightClientV2MockErrors::FailedInnerCall)
13808                    }
13809                    FailedInnerCall
13810                },
13811                {
13812                    fn OwnableInvalidOwner(
13813                        data: &[u8],
13814                        validate: bool,
13815                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13816                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13817                            data, validate,
13818                        )
13819                        .map(LightClientV2MockErrors::OwnableInvalidOwner)
13820                    }
13821                    OwnableInvalidOwner
13822                },
13823                {
13824                    fn ERC1967InvalidImplementation(
13825                        data: &[u8],
13826                        validate: bool,
13827                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13828                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13829                            data, validate,
13830                        )
13831                        .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
13832                    }
13833                    ERC1967InvalidImplementation
13834                },
13835                {
13836                    fn DeprecatedApi(
13837                        data: &[u8],
13838                        validate: bool,
13839                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13840                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13841                            .map(LightClientV2MockErrors::DeprecatedApi)
13842                    }
13843                    DeprecatedApi
13844                },
13845                {
13846                    fn WrongStakeTableUsed(
13847                        data: &[u8],
13848                        validate: bool,
13849                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13850                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
13851                            data, validate,
13852                        )
13853                        .map(LightClientV2MockErrors::WrongStakeTableUsed)
13854                    }
13855                    WrongStakeTableUsed
13856                },
13857                {
13858                    fn InvalidHotShotBlockForCommitmentCheck(
13859                        data: &[u8],
13860                        validate: bool,
13861                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13862                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
13863                                data,
13864                                validate,
13865                            )
13866                            .map(
13867                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
13868                            )
13869                    }
13870                    InvalidHotShotBlockForCommitmentCheck
13871                },
13872                {
13873                    fn AddressEmptyCode(
13874                        data: &[u8],
13875                        validate: bool,
13876                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13877                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13878                            data, validate,
13879                        )
13880                        .map(LightClientV2MockErrors::AddressEmptyCode)
13881                    }
13882                    AddressEmptyCode
13883                },
13884                {
13885                    fn InvalidArgs(
13886                        data: &[u8],
13887                        validate: bool,
13888                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13889                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
13890                            .map(LightClientV2MockErrors::InvalidArgs)
13891                    }
13892                    InvalidArgs
13893                },
13894                {
13895                    fn ProverNotPermissioned(
13896                        data: &[u8],
13897                        validate: bool,
13898                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13899                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
13900                            data, validate,
13901                        )
13902                        .map(LightClientV2MockErrors::ProverNotPermissioned)
13903                    }
13904                    ProverNotPermissioned
13905                },
13906                {
13907                    fn NoChangeRequired(
13908                        data: &[u8],
13909                        validate: bool,
13910                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13911                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
13912                            data, validate,
13913                        )
13914                        .map(LightClientV2MockErrors::NoChangeRequired)
13915                    }
13916                    NoChangeRequired
13917                },
13918                {
13919                    fn UUPSUnsupportedProxiableUUID(
13920                        data: &[u8],
13921                        validate: bool,
13922                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13923                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13924                            data, validate,
13925                        )
13926                        .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
13927                    }
13928                    UUPSUnsupportedProxiableUUID
13929                },
13930                {
13931                    fn InsufficientSnapshotHistory(
13932                        data: &[u8],
13933                        validate: bool,
13934                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13935                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
13936                            data, validate,
13937                        )
13938                        .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
13939                    }
13940                    InsufficientSnapshotHistory
13941                },
13942                {
13943                    fn ERC1967NonPayable(
13944                        data: &[u8],
13945                        validate: bool,
13946                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13947                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13948                            data, validate,
13949                        )
13950                        .map(LightClientV2MockErrors::ERC1967NonPayable)
13951                    }
13952                    ERC1967NonPayable
13953                },
13954                {
13955                    fn NotInitializing(
13956                        data: &[u8],
13957                        validate: bool,
13958                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13959                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13960                            data, validate,
13961                        )
13962                        .map(LightClientV2MockErrors::NotInitializing)
13963                    }
13964                    NotInitializing
13965                },
13966                {
13967                    fn UUPSUnauthorizedCallContext(
13968                        data: &[u8],
13969                        validate: bool,
13970                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13971                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13972                            data, validate,
13973                        )
13974                        .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
13975                    }
13976                    UUPSUnauthorizedCallContext
13977                },
13978                {
13979                    fn InvalidAddress(
13980                        data: &[u8],
13981                        validate: bool,
13982                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13983                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
13984                            data, validate,
13985                        )
13986                        .map(LightClientV2MockErrors::InvalidAddress)
13987                    }
13988                    InvalidAddress
13989                },
13990                {
13991                    fn InvalidMaxStateHistory(
13992                        data: &[u8],
13993                        validate: bool,
13994                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
13995                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
13996                            data, validate,
13997                        )
13998                        .map(LightClientV2MockErrors::InvalidMaxStateHistory)
13999                    }
14000                    InvalidMaxStateHistory
14001                },
14002                {
14003                    fn InvalidInitialization(
14004                        data: &[u8],
14005                        validate: bool,
14006                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
14007                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
14008                            data, validate,
14009                        )
14010                        .map(LightClientV2MockErrors::InvalidInitialization)
14011                    }
14012                    InvalidInitialization
14013                },
14014            ];
14015            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14016                return Err(alloy_sol_types::Error::unknown_selector(
14017                    <Self as alloy_sol_types::SolInterface>::NAME,
14018                    selector,
14019                ));
14020            };
14021            DECODE_SHIMS[idx](data, validate)
14022        }
14023        #[inline]
14024        fn abi_encoded_size(&self) -> usize {
14025            match self {
14026                Self::AddressEmptyCode(inner) => {
14027                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
14028                        inner,
14029                    )
14030                }
14031                Self::DeprecatedApi(inner) => {
14032                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
14033                }
14034                Self::ERC1967InvalidImplementation(inner) => {
14035                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
14036                        inner,
14037                    )
14038                }
14039                Self::ERC1967NonPayable(inner) => {
14040                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
14041                        inner,
14042                    )
14043                }
14044                Self::FailedInnerCall(inner) => {
14045                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
14046                        inner,
14047                    )
14048                }
14049                Self::InsufficientSnapshotHistory(inner) => {
14050                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
14051                        inner,
14052                    )
14053                }
14054                Self::InvalidAddress(inner) => {
14055                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
14056                        inner,
14057                    )
14058                }
14059                Self::InvalidArgs(inner) => {
14060                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
14061                }
14062                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
14063                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
14064                        inner,
14065                    )
14066                }
14067                Self::InvalidInitialization(inner) => {
14068                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
14069                        inner,
14070                    )
14071                }
14072                Self::InvalidMaxStateHistory(inner) => {
14073                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
14074                        inner,
14075                    )
14076                }
14077                Self::InvalidProof(inner) => {
14078                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
14079                }
14080                Self::MissingEpochRootUpdate(inner) => {
14081                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
14082                        inner,
14083                    )
14084                }
14085                Self::NoChangeRequired(inner) => {
14086                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
14087                        inner,
14088                    )
14089                }
14090                Self::NotInitializing(inner) => {
14091                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
14092                        inner,
14093                    )
14094                }
14095                Self::OutdatedState(inner) => {
14096                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
14097                }
14098                Self::OwnableInvalidOwner(inner) => {
14099                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
14100                        inner,
14101                    )
14102                }
14103                Self::OwnableUnauthorizedAccount(inner) => {
14104                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
14105                        inner,
14106                    )
14107                }
14108                Self::ProverNotPermissioned(inner) => {
14109                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
14110                        inner,
14111                    )
14112                }
14113                Self::UUPSUnauthorizedCallContext(inner) => {
14114                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
14115                        inner,
14116                    )
14117                }
14118                Self::UUPSUnsupportedProxiableUUID(inner) => {
14119                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
14120                        inner,
14121                    )
14122                }
14123                Self::WrongStakeTableUsed(inner) => {
14124                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
14125                        inner,
14126                    )
14127                }
14128            }
14129        }
14130        #[inline]
14131        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14132            match self {
14133                Self::AddressEmptyCode(inner) => {
14134                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
14135                        inner,
14136                        out,
14137                    )
14138                }
14139                Self::DeprecatedApi(inner) => {
14140                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
14141                        inner,
14142                        out,
14143                    )
14144                }
14145                Self::ERC1967InvalidImplementation(inner) => {
14146                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
14147                        inner,
14148                        out,
14149                    )
14150                }
14151                Self::ERC1967NonPayable(inner) => {
14152                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
14153                        inner,
14154                        out,
14155                    )
14156                }
14157                Self::FailedInnerCall(inner) => {
14158                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
14159                        inner,
14160                        out,
14161                    )
14162                }
14163                Self::InsufficientSnapshotHistory(inner) => {
14164                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
14165                        inner,
14166                        out,
14167                    )
14168                }
14169                Self::InvalidAddress(inner) => {
14170                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
14171                        inner,
14172                        out,
14173                    )
14174                }
14175                Self::InvalidArgs(inner) => {
14176                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
14177                        inner,
14178                        out,
14179                    )
14180                }
14181                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
14182                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
14183                        inner,
14184                        out,
14185                    )
14186                }
14187                Self::InvalidInitialization(inner) => {
14188                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
14189                        inner,
14190                        out,
14191                    )
14192                }
14193                Self::InvalidMaxStateHistory(inner) => {
14194                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
14195                        inner,
14196                        out,
14197                    )
14198                }
14199                Self::InvalidProof(inner) => {
14200                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
14201                        inner,
14202                        out,
14203                    )
14204                }
14205                Self::MissingEpochRootUpdate(inner) => {
14206                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
14207                        inner,
14208                        out,
14209                    )
14210                }
14211                Self::NoChangeRequired(inner) => {
14212                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
14213                        inner,
14214                        out,
14215                    )
14216                }
14217                Self::NotInitializing(inner) => {
14218                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
14219                        inner,
14220                        out,
14221                    )
14222                }
14223                Self::OutdatedState(inner) => {
14224                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
14225                        inner,
14226                        out,
14227                    )
14228                }
14229                Self::OwnableInvalidOwner(inner) => {
14230                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
14231                        inner,
14232                        out,
14233                    )
14234                }
14235                Self::OwnableUnauthorizedAccount(inner) => {
14236                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
14237                        inner,
14238                        out,
14239                    )
14240                }
14241                Self::ProverNotPermissioned(inner) => {
14242                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
14243                        inner,
14244                        out,
14245                    )
14246                }
14247                Self::UUPSUnauthorizedCallContext(inner) => {
14248                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
14249                        inner,
14250                        out,
14251                    )
14252                }
14253                Self::UUPSUnsupportedProxiableUUID(inner) => {
14254                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
14255                        inner,
14256                        out,
14257                    )
14258                }
14259                Self::WrongStakeTableUsed(inner) => {
14260                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
14261                        inner,
14262                        out,
14263                    )
14264                }
14265            }
14266        }
14267    }
14268    ///Container for all the [`LightClientV2Mock`](self) events.
14269    #[derive(Debug, PartialEq, Eq, Hash)]
14270    pub enum LightClientV2MockEvents {
14271        #[allow(missing_docs)]
14272        Initialized(Initialized),
14273        #[allow(missing_docs)]
14274        NewEpoch(NewEpoch),
14275        #[allow(missing_docs)]
14276        NewState(NewState),
14277        #[allow(missing_docs)]
14278        OwnershipTransferred(OwnershipTransferred),
14279        #[allow(missing_docs)]
14280        PermissionedProverNotRequired(PermissionedProverNotRequired),
14281        #[allow(missing_docs)]
14282        PermissionedProverRequired(PermissionedProverRequired),
14283        #[allow(missing_docs)]
14284        Upgrade(Upgrade),
14285        #[allow(missing_docs)]
14286        Upgraded(Upgraded),
14287    }
14288    #[automatically_derived]
14289    impl LightClientV2MockEvents {
14290        /// All the selectors of this enum.
14291        ///
14292        /// Note that the selectors might not be in the same order as the variants.
14293        /// No guarantees are made about the order of the selectors.
14294        ///
14295        /// Prefer using `SolInterface` methods instead.
14296        pub const SELECTORS: &'static [[u8; 32usize]] = &[
14297            [
14298                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8, 210u8, 6u8,
14299                171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8, 157u8, 15u8, 205u8,
14300                239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
14301            ],
14302            [
14303                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8, 212u8,
14304                15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8, 133u8,
14305                216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
14306            ],
14307            [
14308                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
14309                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
14310                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
14311            ],
14312            [
14313                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
14314                92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
14315                109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
14316            ],
14317            [
14318                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8, 37u8,
14319                245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8, 252u8,
14320                231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
14321            ],
14322            [
14323                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8,
14324                32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8,
14325                91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
14326            ],
14327            [
14328                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
14329                244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
14330                209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14331            ],
14332            [
14333                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
14334                22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8, 237u8,
14335                168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14336            ],
14337        ];
14338    }
14339    #[automatically_derived]
14340    impl alloy_sol_types::SolEventInterface for LightClientV2MockEvents {
14341        const NAME: &'static str = "LightClientV2MockEvents";
14342        const COUNT: usize = 8usize;
14343        fn decode_raw_log(
14344            topics: &[alloy_sol_types::Word],
14345            data: &[u8],
14346            validate: bool,
14347        ) -> alloy_sol_types::Result<Self> {
14348            match topics.first().copied() {
14349                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14350                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
14351                        topics, data, validate,
14352                    )
14353                    .map(Self::Initialized)
14354                },
14355                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14356                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14357                        .map(Self::NewEpoch)
14358                },
14359                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14360                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14361                        .map(Self::NewState)
14362                },
14363                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14364                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
14365                        topics, data, validate,
14366                    )
14367                    .map(Self::OwnershipTransferred)
14368                },
14369                Some(
14370                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14371                ) => <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14372                    topics, data, validate,
14373                )
14374                .map(Self::PermissionedProverNotRequired),
14375                Some(<PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14376                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14377                        topics, data, validate,
14378                    )
14379                    .map(Self::PermissionedProverRequired)
14380                },
14381                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14382                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14383                        .map(Self::Upgrade)
14384                },
14385                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14386                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
14387                        .map(Self::Upgraded)
14388                },
14389                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14390                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14391                    log: alloy_sol_types::private::Box::new(
14392                        alloy_sol_types::private::LogData::new_unchecked(
14393                            topics.to_vec(),
14394                            data.to_vec().into(),
14395                        ),
14396                    ),
14397                }),
14398            }
14399        }
14400    }
14401    #[automatically_derived]
14402    impl alloy_sol_types::private::IntoLogData for LightClientV2MockEvents {
14403        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14404            match self {
14405                Self::Initialized(inner) => {
14406                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14407                },
14408                Self::NewEpoch(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14409                Self::NewState(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14410                Self::OwnershipTransferred(inner) => {
14411                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14412                },
14413                Self::PermissionedProverNotRequired(inner) => {
14414                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14415                },
14416                Self::PermissionedProverRequired(inner) => {
14417                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14418                },
14419                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14420                Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
14421            }
14422        }
14423        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14424            match self {
14425                Self::Initialized(inner) => {
14426                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14427                },
14428                Self::NewEpoch(inner) => {
14429                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14430                },
14431                Self::NewState(inner) => {
14432                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14433                },
14434                Self::OwnershipTransferred(inner) => {
14435                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14436                },
14437                Self::PermissionedProverNotRequired(inner) => {
14438                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14439                },
14440                Self::PermissionedProverRequired(inner) => {
14441                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14442                },
14443                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
14444                Self::Upgraded(inner) => {
14445                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14446                },
14447            }
14448        }
14449    }
14450    use alloy::contract as alloy_contract;
14451    /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
14452
14453    See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
14454    #[inline]
14455    pub const fn new<
14456        T: alloy_contract::private::Transport + ::core::clone::Clone,
14457        P: alloy_contract::private::Provider<T, N>,
14458        N: alloy_contract::private::Network,
14459    >(
14460        address: alloy_sol_types::private::Address,
14461        provider: P,
14462    ) -> LightClientV2MockInstance<T, P, N> {
14463        LightClientV2MockInstance::<T, P, N>::new(address, provider)
14464    }
14465    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14466
14467    Returns a new instance of the contract, if the deployment was successful.
14468
14469    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14470    #[inline]
14471    pub fn deploy<
14472        T: alloy_contract::private::Transport + ::core::clone::Clone,
14473        P: alloy_contract::private::Provider<T, N>,
14474        N: alloy_contract::private::Network,
14475    >(
14476        provider: P,
14477    ) -> impl ::core::future::Future<Output = alloy_contract::Result<LightClientV2MockInstance<T, P, N>>>
14478    {
14479        LightClientV2MockInstance::<T, P, N>::deploy(provider)
14480    }
14481    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14482    and constructor arguments, if any.
14483
14484    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14485    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14486    #[inline]
14487    pub fn deploy_builder<
14488        T: alloy_contract::private::Transport + ::core::clone::Clone,
14489        P: alloy_contract::private::Provider<T, N>,
14490        N: alloy_contract::private::Network,
14491    >(
14492        provider: P,
14493    ) -> alloy_contract::RawCallBuilder<T, P, N> {
14494        LightClientV2MockInstance::<T, P, N>::deploy_builder(provider)
14495    }
14496    /**A [`LightClientV2Mock`](self) instance.
14497
14498    Contains type-safe methods for interacting with an on-chain instance of the
14499    [`LightClientV2Mock`](self) contract located at a given `address`, using a given
14500    provider `P`.
14501
14502    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14503    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14504    be used to deploy a new instance of the contract.
14505
14506    See the [module-level documentation](self) for all the available methods.*/
14507    #[derive(Clone)]
14508    pub struct LightClientV2MockInstance<T, P, N = alloy_contract::private::Ethereum> {
14509        address: alloy_sol_types::private::Address,
14510        provider: P,
14511        _network_transport: ::core::marker::PhantomData<(N, T)>,
14512    }
14513    #[automatically_derived]
14514    impl<T, P, N> ::core::fmt::Debug for LightClientV2MockInstance<T, P, N> {
14515        #[inline]
14516        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14517            f.debug_tuple("LightClientV2MockInstance")
14518                .field(&self.address)
14519                .finish()
14520        }
14521    }
14522    /// Instantiation and getters/setters.
14523    #[automatically_derived]
14524    impl<
14525            T: alloy_contract::private::Transport + ::core::clone::Clone,
14526            P: alloy_contract::private::Provider<T, N>,
14527            N: alloy_contract::private::Network,
14528        > LightClientV2MockInstance<T, P, N>
14529    {
14530        /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
14531
14532        See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
14533        #[inline]
14534        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
14535            Self {
14536                address,
14537                provider,
14538                _network_transport: ::core::marker::PhantomData,
14539            }
14540        }
14541        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14542
14543        Returns a new instance of the contract, if the deployment was successful.
14544
14545        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14546        #[inline]
14547        pub async fn deploy(
14548            provider: P,
14549        ) -> alloy_contract::Result<LightClientV2MockInstance<T, P, N>> {
14550            let call_builder = Self::deploy_builder(provider);
14551            let contract_address = call_builder.deploy().await?;
14552            Ok(Self::new(contract_address, call_builder.provider))
14553        }
14554        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14555        and constructor arguments, if any.
14556
14557        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14558        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14559        #[inline]
14560        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
14561            alloy_contract::RawCallBuilder::new_raw_deploy(
14562                provider,
14563                ::core::clone::Clone::clone(&BYTECODE),
14564            )
14565        }
14566        /// Returns a reference to the address.
14567        #[inline]
14568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14569            &self.address
14570        }
14571        /// Sets the address.
14572        #[inline]
14573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14574            self.address = address;
14575        }
14576        /// Sets the address and returns `self`.
14577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14578            self.set_address(address);
14579            self
14580        }
14581        /// Returns a reference to the provider.
14582        #[inline]
14583        pub const fn provider(&self) -> &P {
14584            &self.provider
14585        }
14586    }
14587    impl<T, P: ::core::clone::Clone, N> LightClientV2MockInstance<T, &P, N> {
14588        /// Clones the provider and returns a new instance with the cloned provider.
14589        #[inline]
14590        pub fn with_cloned_provider(self) -> LightClientV2MockInstance<T, P, N> {
14591            LightClientV2MockInstance {
14592                address: self.address,
14593                provider: ::core::clone::Clone::clone(&self.provider),
14594                _network_transport: ::core::marker::PhantomData,
14595            }
14596        }
14597    }
14598    /// Function calls.
14599    #[automatically_derived]
14600    impl<
14601            T: alloy_contract::private::Transport + ::core::clone::Clone,
14602            P: alloy_contract::private::Provider<T, N>,
14603            N: alloy_contract::private::Network,
14604        > LightClientV2MockInstance<T, P, N>
14605    {
14606        /// Creates a new call builder using this contract instance's provider and address.
14607        ///
14608        /// Note that the call can be any function call, not just those defined in this
14609        /// contract. Prefer using the other methods for building type-safe contract calls.
14610        pub fn call_builder<C: alloy_sol_types::SolCall>(
14611            &self,
14612            call: &C,
14613        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
14614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14615        }
14616        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14617        pub fn UPGRADE_INTERFACE_VERSION(
14618            &self,
14619        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
14620            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
14621        }
14622        ///Creates a new call builder for the [`_getVk`] function.
14623        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
14624            self.call_builder(&_getVkCall {})
14625        }
14626        ///Creates a new call builder for the [`blocksPerEpoch`] function.
14627        pub fn blocksPerEpoch(
14628            &self,
14629        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
14630            self.call_builder(&blocksPerEpochCall {})
14631        }
14632        ///Creates a new call builder for the [`currentBlockNumber`] function.
14633        pub fn currentBlockNumber(
14634            &self,
14635        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
14636            self.call_builder(&currentBlockNumberCall {})
14637        }
14638        ///Creates a new call builder for the [`currentEpoch`] function.
14639        pub fn currentEpoch(&self) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
14640            self.call_builder(&currentEpochCall {})
14641        }
14642        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14643        pub fn disablePermissionedProverMode(
14644            &self,
14645        ) -> alloy_contract::SolCallBuilder<T, &P, disablePermissionedProverModeCall, N> {
14646            self.call_builder(&disablePermissionedProverModeCall {})
14647        }
14648        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
14649        pub fn epochFromBlockNumber(
14650            &self,
14651            _blockNum: u64,
14652            _blocksPerEpoch: u64,
14653        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
14654            self.call_builder(&epochFromBlockNumberCall {
14655                _blockNum,
14656                _blocksPerEpoch,
14657            })
14658        }
14659        ///Creates a new call builder for the [`epochStartBlock`] function.
14660        pub fn epochStartBlock(
14661            &self,
14662        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
14663            self.call_builder(&epochStartBlockCall {})
14664        }
14665        ///Creates a new call builder for the [`finalizedState`] function.
14666        pub fn finalizedState(
14667            &self,
14668        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
14669            self.call_builder(&finalizedStateCall {})
14670        }
14671        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14672        pub fn genesisStakeTableState(
14673            &self,
14674        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
14675            self.call_builder(&genesisStakeTableStateCall {})
14676        }
14677        ///Creates a new call builder for the [`genesisState`] function.
14678        pub fn genesisState(&self) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
14679            self.call_builder(&genesisStateCall {})
14680        }
14681        ///Creates a new call builder for the [`getFirstEpoch`] function.
14682        pub fn getFirstEpoch(&self) -> alloy_contract::SolCallBuilder<T, &P, getFirstEpochCall, N> {
14683            self.call_builder(&getFirstEpochCall {})
14684        }
14685        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14686        pub fn getHotShotCommitment(
14687            &self,
14688            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14689        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
14690            self.call_builder(&getHotShotCommitmentCall { hotShotBlockHeight })
14691        }
14692        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14693        pub fn getStateHistoryCount(
14694            &self,
14695        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
14696            self.call_builder(&getStateHistoryCountCall {})
14697        }
14698        ///Creates a new call builder for the [`getVersion`] function.
14699        pub fn getVersion(&self) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
14700            self.call_builder(&getVersionCall {})
14701        }
14702        ///Creates a new call builder for the [`initialize`] function.
14703        pub fn initialize(
14704            &self,
14705            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14706            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14707            _stateHistoryRetentionPeriod: u32,
14708            owner: alloy::sol_types::private::Address,
14709        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
14710            self.call_builder(&initializeCall {
14711                _genesis,
14712                _genesisStakeTableState,
14713                _stateHistoryRetentionPeriod,
14714                owner,
14715            })
14716        }
14717        ///Creates a new call builder for the [`initializeV2`] function.
14718        pub fn initializeV2(
14719            &self,
14720            _blocksPerEpoch: u64,
14721            _epochStartBlock: u64,
14722        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
14723            self.call_builder(&initializeV2Call {
14724                _blocksPerEpoch,
14725                _epochStartBlock,
14726            })
14727        }
14728        ///Creates a new call builder for the [`isEpochRoot`] function.
14729        pub fn isEpochRoot(
14730            &self,
14731            blockHeight: u64,
14732        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
14733            self.call_builder(&isEpochRootCall { blockHeight })
14734        }
14735        ///Creates a new call builder for the [`isGtEpochRoot`] function.
14736        pub fn isGtEpochRoot(
14737            &self,
14738            blockHeight: u64,
14739        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
14740            self.call_builder(&isGtEpochRootCall { blockHeight })
14741        }
14742        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14743        pub fn isPermissionedProverEnabled(
14744            &self,
14745        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
14746            self.call_builder(&isPermissionedProverEnabledCall {})
14747        }
14748        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14749        pub fn lagOverEscapeHatchThreshold(
14750            &self,
14751            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14752            threshold: alloy::sol_types::private::primitives::aliases::U256,
14753        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
14754            self.call_builder(&lagOverEscapeHatchThresholdCall {
14755                blockNumber,
14756                threshold,
14757            })
14758        }
14759        ///Creates a new call builder for the [`newFinalizedState_0`] function.
14760        pub fn newFinalizedState_0(
14761            &self,
14762            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14763            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14764        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
14765            self.call_builder(&newFinalizedState_0Call { _0, _1 })
14766        }
14767        ///Creates a new call builder for the [`newFinalizedState_1`] function.
14768        pub fn newFinalizedState_1(
14769            &self,
14770            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14771            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14772            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14773        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
14774            self.call_builder(&newFinalizedState_1Call {
14775                newState,
14776                nextStakeTable,
14777                proof,
14778            })
14779        }
14780        ///Creates a new call builder for the [`owner`] function.
14781        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
14782            self.call_builder(&ownerCall {})
14783        }
14784        ///Creates a new call builder for the [`permissionedProver`] function.
14785        pub fn permissionedProver(
14786            &self,
14787        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
14788            self.call_builder(&permissionedProverCall {})
14789        }
14790        ///Creates a new call builder for the [`proxiableUUID`] function.
14791        pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
14792            self.call_builder(&proxiableUUIDCall {})
14793        }
14794        ///Creates a new call builder for the [`renounceOwnership`] function.
14795        pub fn renounceOwnership(
14796            &self,
14797        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
14798            self.call_builder(&renounceOwnershipCall {})
14799        }
14800        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
14801        pub fn setBlocksPerEpoch(
14802            &self,
14803            newBlocksPerEpoch: u64,
14804        ) -> alloy_contract::SolCallBuilder<T, &P, setBlocksPerEpochCall, N> {
14805            self.call_builder(&setBlocksPerEpochCall { newBlocksPerEpoch })
14806        }
14807        ///Creates a new call builder for the [`setFinalizedState`] function.
14808        pub fn setFinalizedState(
14809            &self,
14810            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14811        ) -> alloy_contract::SolCallBuilder<T, &P, setFinalizedStateCall, N> {
14812            self.call_builder(&setFinalizedStateCall { state })
14813        }
14814        ///Creates a new call builder for the [`setHotShotDownSince`] function.
14815        pub fn setHotShotDownSince(
14816            &self,
14817            l1Height: alloy::sol_types::private::primitives::aliases::U256,
14818        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotDownSinceCall, N> {
14819            self.call_builder(&setHotShotDownSinceCall { l1Height })
14820        }
14821        ///Creates a new call builder for the [`setHotShotUp`] function.
14822        pub fn setHotShotUp(&self) -> alloy_contract::SolCallBuilder<T, &P, setHotShotUpCall, N> {
14823            self.call_builder(&setHotShotUpCall {})
14824        }
14825        ///Creates a new call builder for the [`setPermissionedProver`] function.
14826        pub fn setPermissionedProver(
14827            &self,
14828            prover: alloy::sol_types::private::Address,
14829        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
14830            self.call_builder(&setPermissionedProverCall { prover })
14831        }
14832        ///Creates a new call builder for the [`setStateHistory`] function.
14833        pub fn setStateHistory(
14834            &self,
14835            _stateHistoryCommitments: alloy::sol_types::private::Vec<
14836                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14837            >,
14838        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryCall, N> {
14839            self.call_builder(&setStateHistoryCall {
14840                _stateHistoryCommitments,
14841            })
14842        }
14843        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
14844        pub fn setStateHistoryRetentionPeriod(
14845            &self,
14846            historySeconds: u32,
14847        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryRetentionPeriodCall, N> {
14848            self.call_builder(&setStateHistoryRetentionPeriodCall { historySeconds })
14849        }
14850        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
14851        pub fn setVotingStakeTableState(
14852            &self,
14853            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14854        ) -> alloy_contract::SolCallBuilder<T, &P, setVotingStakeTableStateCall, N> {
14855            self.call_builder(&setVotingStakeTableStateCall { stake })
14856        }
14857        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14858        pub fn setstateHistoryRetentionPeriod(
14859            &self,
14860            historySeconds: u32,
14861        ) -> alloy_contract::SolCallBuilder<T, &P, setstateHistoryRetentionPeriodCall, N> {
14862            self.call_builder(&setstateHistoryRetentionPeriodCall { historySeconds })
14863        }
14864        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14865        pub fn stateHistoryCommitments(
14866            &self,
14867            _0: alloy::sol_types::private::primitives::aliases::U256,
14868        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
14869            self.call_builder(&stateHistoryCommitmentsCall { _0 })
14870        }
14871        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14872        pub fn stateHistoryFirstIndex(
14873            &self,
14874        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
14875            self.call_builder(&stateHistoryFirstIndexCall {})
14876        }
14877        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14878        pub fn stateHistoryRetentionPeriod(
14879            &self,
14880        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
14881            self.call_builder(&stateHistoryRetentionPeriodCall {})
14882        }
14883        ///Creates a new call builder for the [`transferOwnership`] function.
14884        pub fn transferOwnership(
14885            &self,
14886            newOwner: alloy::sol_types::private::Address,
14887        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
14888            self.call_builder(&transferOwnershipCall { newOwner })
14889        }
14890        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
14891        pub fn updateEpochStartBlock(
14892            &self,
14893            newEpochStartBlock: u64,
14894        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
14895            self.call_builder(&updateEpochStartBlockCall { newEpochStartBlock })
14896        }
14897        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14898        pub fn upgradeToAndCall(
14899            &self,
14900            newImplementation: alloy::sol_types::private::Address,
14901            data: alloy::sol_types::private::Bytes,
14902        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
14903            self.call_builder(&upgradeToAndCallCall {
14904                newImplementation,
14905                data,
14906            })
14907        }
14908        ///Creates a new call builder for the [`votingStakeTableState`] function.
14909        pub fn votingStakeTableState(
14910            &self,
14911        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
14912            self.call_builder(&votingStakeTableStateCall {})
14913        }
14914    }
14915    /// Event filters.
14916    #[automatically_derived]
14917    impl<
14918            T: alloy_contract::private::Transport + ::core::clone::Clone,
14919            P: alloy_contract::private::Provider<T, N>,
14920            N: alloy_contract::private::Network,
14921        > LightClientV2MockInstance<T, P, N>
14922    {
14923        /// Creates a new event filter using this contract instance's provider and address.
14924        ///
14925        /// Note that the type can be any event, not just those defined in this contract.
14926        /// Prefer using the other methods for building type-safe event filters.
14927        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14928            &self,
14929        ) -> alloy_contract::Event<T, &P, E, N> {
14930            alloy_contract::Event::new_sol(&self.provider, &self.address)
14931        }
14932        ///Creates a new event filter for the [`Initialized`] event.
14933        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
14934            self.event_filter::<Initialized>()
14935        }
14936        ///Creates a new event filter for the [`NewEpoch`] event.
14937        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
14938            self.event_filter::<NewEpoch>()
14939        }
14940        ///Creates a new event filter for the [`NewState`] event.
14941        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
14942            self.event_filter::<NewState>()
14943        }
14944        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14945        pub fn OwnershipTransferred_filter(
14946            &self,
14947        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
14948            self.event_filter::<OwnershipTransferred>()
14949        }
14950        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
14951        pub fn PermissionedProverNotRequired_filter(
14952            &self,
14953        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
14954            self.event_filter::<PermissionedProverNotRequired>()
14955        }
14956        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
14957        pub fn PermissionedProverRequired_filter(
14958            &self,
14959        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
14960            self.event_filter::<PermissionedProverRequired>()
14961        }
14962        ///Creates a new event filter for the [`Upgrade`] event.
14963        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
14964            self.event_filter::<Upgrade>()
14965        }
14966        ///Creates a new event filter for the [`Upgraded`] event.
14967        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
14968            self.event_filter::<Upgraded>()
14969        }
14970    }
14971}