hotshot_contract_adapter/bindings/
light_client.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
636    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive()]
651    /**```solidity
652struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive()]
1374    /**```solidity
1375struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234/**
2235
2236Generated by the following Solidity interface...
2237```solidity
2238library BN254 {
2239    type BaseField is uint256;
2240    type ScalarField is uint256;
2241    struct G1Point {
2242        BaseField x;
2243        BaseField y;
2244    }
2245}
2246
2247library IPlonkVerifier {
2248    struct PlonkProof {
2249        BN254.G1Point wire0;
2250        BN254.G1Point wire1;
2251        BN254.G1Point wire2;
2252        BN254.G1Point wire3;
2253        BN254.G1Point wire4;
2254        BN254.G1Point prodPerm;
2255        BN254.G1Point split0;
2256        BN254.G1Point split1;
2257        BN254.G1Point split2;
2258        BN254.G1Point split3;
2259        BN254.G1Point split4;
2260        BN254.G1Point zeta;
2261        BN254.G1Point zetaOmega;
2262        BN254.ScalarField wireEval0;
2263        BN254.ScalarField wireEval1;
2264        BN254.ScalarField wireEval2;
2265        BN254.ScalarField wireEval3;
2266        BN254.ScalarField wireEval4;
2267        BN254.ScalarField sigmaEval0;
2268        BN254.ScalarField sigmaEval1;
2269        BN254.ScalarField sigmaEval2;
2270        BN254.ScalarField sigmaEval3;
2271        BN254.ScalarField prodPermZetaOmegaEval;
2272    }
2273    struct VerifyingKey {
2274        uint256 domainSize;
2275        uint256 numInputs;
2276        BN254.G1Point sigma0;
2277        BN254.G1Point sigma1;
2278        BN254.G1Point sigma2;
2279        BN254.G1Point sigma3;
2280        BN254.G1Point sigma4;
2281        BN254.G1Point q1;
2282        BN254.G1Point q2;
2283        BN254.G1Point q3;
2284        BN254.G1Point q4;
2285        BN254.G1Point qM12;
2286        BN254.G1Point qM34;
2287        BN254.G1Point qO;
2288        BN254.G1Point qC;
2289        BN254.G1Point qH1;
2290        BN254.G1Point qH2;
2291        BN254.G1Point qH3;
2292        BN254.G1Point qH4;
2293        BN254.G1Point qEcc;
2294        bytes32 g2LSB;
2295        bytes32 g2MSB;
2296    }
2297}
2298
2299interface LightClient {
2300    struct LightClientState {
2301        uint64 viewNum;
2302        uint64 blockHeight;
2303        BN254.ScalarField blockCommRoot;
2304    }
2305    struct StakeTableState {
2306        uint256 threshold;
2307        BN254.ScalarField blsKeyComm;
2308        BN254.ScalarField schnorrKeyComm;
2309        BN254.ScalarField amountComm;
2310    }
2311
2312    error AddressEmptyCode(address target);
2313    error ERC1967InvalidImplementation(address implementation);
2314    error ERC1967NonPayable();
2315    error FailedInnerCall();
2316    error InsufficientSnapshotHistory();
2317    error InvalidAddress();
2318    error InvalidArgs();
2319    error InvalidHotShotBlockForCommitmentCheck();
2320    error InvalidInitialization();
2321    error InvalidMaxStateHistory();
2322    error InvalidProof();
2323    error InvalidScalar();
2324    error NoChangeRequired();
2325    error NotInitializing();
2326    error OutdatedState();
2327    error OwnableInvalidOwner(address owner);
2328    error OwnableUnauthorizedAccount(address account);
2329    error OwnershipCannotBeRenounced();
2330    error ProverNotPermissioned();
2331    error UUPSUnauthorizedCallContext();
2332    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2333    error WrongStakeTableUsed();
2334
2335    event Initialized(uint64 version);
2336    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2337    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2338    event PermissionedProverNotRequired();
2339    event PermissionedProverRequired(address permissionedProver);
2340    event Upgrade(address implementation);
2341    event Upgraded(address indexed implementation);
2342
2343    constructor();
2344
2345    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2346    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2347    function currentBlockNumber() external view returns (uint256);
2348    function disablePermissionedProverMode() external;
2349    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2350    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2351    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2352    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2353    function getStateHistoryCount() external view returns (uint256);
2354    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2355    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2356    function isPermissionedProverEnabled() external view returns (bool);
2357    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2358    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2359    function owner() external view returns (address);
2360    function permissionedProver() external view returns (address);
2361    function proxiableUUID() external view returns (bytes32);
2362    function renounceOwnership() external;
2363    function setPermissionedProver(address prover) external;
2364    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2365    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2366    function stateHistoryFirstIndex() external view returns (uint64);
2367    function stateHistoryRetentionPeriod() external view returns (uint32);
2368    function transferOwnership(address newOwner) external;
2369    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2370}
2371```
2372
2373...which was generated by the following JSON ABI:
2374```json
2375[
2376  {
2377    "type": "constructor",
2378    "inputs": [],
2379    "stateMutability": "nonpayable"
2380  },
2381  {
2382    "type": "function",
2383    "name": "UPGRADE_INTERFACE_VERSION",
2384    "inputs": [],
2385    "outputs": [
2386      {
2387        "name": "",
2388        "type": "string",
2389        "internalType": "string"
2390      }
2391    ],
2392    "stateMutability": "view"
2393  },
2394  {
2395    "type": "function",
2396    "name": "_getVk",
2397    "inputs": [],
2398    "outputs": [
2399      {
2400        "name": "vk",
2401        "type": "tuple",
2402        "internalType": "struct IPlonkVerifier.VerifyingKey",
2403        "components": [
2404          {
2405            "name": "domainSize",
2406            "type": "uint256",
2407            "internalType": "uint256"
2408          },
2409          {
2410            "name": "numInputs",
2411            "type": "uint256",
2412            "internalType": "uint256"
2413          },
2414          {
2415            "name": "sigma0",
2416            "type": "tuple",
2417            "internalType": "struct BN254.G1Point",
2418            "components": [
2419              {
2420                "name": "x",
2421                "type": "uint256",
2422                "internalType": "BN254.BaseField"
2423              },
2424              {
2425                "name": "y",
2426                "type": "uint256",
2427                "internalType": "BN254.BaseField"
2428              }
2429            ]
2430          },
2431          {
2432            "name": "sigma1",
2433            "type": "tuple",
2434            "internalType": "struct BN254.G1Point",
2435            "components": [
2436              {
2437                "name": "x",
2438                "type": "uint256",
2439                "internalType": "BN254.BaseField"
2440              },
2441              {
2442                "name": "y",
2443                "type": "uint256",
2444                "internalType": "BN254.BaseField"
2445              }
2446            ]
2447          },
2448          {
2449            "name": "sigma2",
2450            "type": "tuple",
2451            "internalType": "struct BN254.G1Point",
2452            "components": [
2453              {
2454                "name": "x",
2455                "type": "uint256",
2456                "internalType": "BN254.BaseField"
2457              },
2458              {
2459                "name": "y",
2460                "type": "uint256",
2461                "internalType": "BN254.BaseField"
2462              }
2463            ]
2464          },
2465          {
2466            "name": "sigma3",
2467            "type": "tuple",
2468            "internalType": "struct BN254.G1Point",
2469            "components": [
2470              {
2471                "name": "x",
2472                "type": "uint256",
2473                "internalType": "BN254.BaseField"
2474              },
2475              {
2476                "name": "y",
2477                "type": "uint256",
2478                "internalType": "BN254.BaseField"
2479              }
2480            ]
2481          },
2482          {
2483            "name": "sigma4",
2484            "type": "tuple",
2485            "internalType": "struct BN254.G1Point",
2486            "components": [
2487              {
2488                "name": "x",
2489                "type": "uint256",
2490                "internalType": "BN254.BaseField"
2491              },
2492              {
2493                "name": "y",
2494                "type": "uint256",
2495                "internalType": "BN254.BaseField"
2496              }
2497            ]
2498          },
2499          {
2500            "name": "q1",
2501            "type": "tuple",
2502            "internalType": "struct BN254.G1Point",
2503            "components": [
2504              {
2505                "name": "x",
2506                "type": "uint256",
2507                "internalType": "BN254.BaseField"
2508              },
2509              {
2510                "name": "y",
2511                "type": "uint256",
2512                "internalType": "BN254.BaseField"
2513              }
2514            ]
2515          },
2516          {
2517            "name": "q2",
2518            "type": "tuple",
2519            "internalType": "struct BN254.G1Point",
2520            "components": [
2521              {
2522                "name": "x",
2523                "type": "uint256",
2524                "internalType": "BN254.BaseField"
2525              },
2526              {
2527                "name": "y",
2528                "type": "uint256",
2529                "internalType": "BN254.BaseField"
2530              }
2531            ]
2532          },
2533          {
2534            "name": "q3",
2535            "type": "tuple",
2536            "internalType": "struct BN254.G1Point",
2537            "components": [
2538              {
2539                "name": "x",
2540                "type": "uint256",
2541                "internalType": "BN254.BaseField"
2542              },
2543              {
2544                "name": "y",
2545                "type": "uint256",
2546                "internalType": "BN254.BaseField"
2547              }
2548            ]
2549          },
2550          {
2551            "name": "q4",
2552            "type": "tuple",
2553            "internalType": "struct BN254.G1Point",
2554            "components": [
2555              {
2556                "name": "x",
2557                "type": "uint256",
2558                "internalType": "BN254.BaseField"
2559              },
2560              {
2561                "name": "y",
2562                "type": "uint256",
2563                "internalType": "BN254.BaseField"
2564              }
2565            ]
2566          },
2567          {
2568            "name": "qM12",
2569            "type": "tuple",
2570            "internalType": "struct BN254.G1Point",
2571            "components": [
2572              {
2573                "name": "x",
2574                "type": "uint256",
2575                "internalType": "BN254.BaseField"
2576              },
2577              {
2578                "name": "y",
2579                "type": "uint256",
2580                "internalType": "BN254.BaseField"
2581              }
2582            ]
2583          },
2584          {
2585            "name": "qM34",
2586            "type": "tuple",
2587            "internalType": "struct BN254.G1Point",
2588            "components": [
2589              {
2590                "name": "x",
2591                "type": "uint256",
2592                "internalType": "BN254.BaseField"
2593              },
2594              {
2595                "name": "y",
2596                "type": "uint256",
2597                "internalType": "BN254.BaseField"
2598              }
2599            ]
2600          },
2601          {
2602            "name": "qO",
2603            "type": "tuple",
2604            "internalType": "struct BN254.G1Point",
2605            "components": [
2606              {
2607                "name": "x",
2608                "type": "uint256",
2609                "internalType": "BN254.BaseField"
2610              },
2611              {
2612                "name": "y",
2613                "type": "uint256",
2614                "internalType": "BN254.BaseField"
2615              }
2616            ]
2617          },
2618          {
2619            "name": "qC",
2620            "type": "tuple",
2621            "internalType": "struct BN254.G1Point",
2622            "components": [
2623              {
2624                "name": "x",
2625                "type": "uint256",
2626                "internalType": "BN254.BaseField"
2627              },
2628              {
2629                "name": "y",
2630                "type": "uint256",
2631                "internalType": "BN254.BaseField"
2632              }
2633            ]
2634          },
2635          {
2636            "name": "qH1",
2637            "type": "tuple",
2638            "internalType": "struct BN254.G1Point",
2639            "components": [
2640              {
2641                "name": "x",
2642                "type": "uint256",
2643                "internalType": "BN254.BaseField"
2644              },
2645              {
2646                "name": "y",
2647                "type": "uint256",
2648                "internalType": "BN254.BaseField"
2649              }
2650            ]
2651          },
2652          {
2653            "name": "qH2",
2654            "type": "tuple",
2655            "internalType": "struct BN254.G1Point",
2656            "components": [
2657              {
2658                "name": "x",
2659                "type": "uint256",
2660                "internalType": "BN254.BaseField"
2661              },
2662              {
2663                "name": "y",
2664                "type": "uint256",
2665                "internalType": "BN254.BaseField"
2666              }
2667            ]
2668          },
2669          {
2670            "name": "qH3",
2671            "type": "tuple",
2672            "internalType": "struct BN254.G1Point",
2673            "components": [
2674              {
2675                "name": "x",
2676                "type": "uint256",
2677                "internalType": "BN254.BaseField"
2678              },
2679              {
2680                "name": "y",
2681                "type": "uint256",
2682                "internalType": "BN254.BaseField"
2683              }
2684            ]
2685          },
2686          {
2687            "name": "qH4",
2688            "type": "tuple",
2689            "internalType": "struct BN254.G1Point",
2690            "components": [
2691              {
2692                "name": "x",
2693                "type": "uint256",
2694                "internalType": "BN254.BaseField"
2695              },
2696              {
2697                "name": "y",
2698                "type": "uint256",
2699                "internalType": "BN254.BaseField"
2700              }
2701            ]
2702          },
2703          {
2704            "name": "qEcc",
2705            "type": "tuple",
2706            "internalType": "struct BN254.G1Point",
2707            "components": [
2708              {
2709                "name": "x",
2710                "type": "uint256",
2711                "internalType": "BN254.BaseField"
2712              },
2713              {
2714                "name": "y",
2715                "type": "uint256",
2716                "internalType": "BN254.BaseField"
2717              }
2718            ]
2719          },
2720          {
2721            "name": "g2LSB",
2722            "type": "bytes32",
2723            "internalType": "bytes32"
2724          },
2725          {
2726            "name": "g2MSB",
2727            "type": "bytes32",
2728            "internalType": "bytes32"
2729          }
2730        ]
2731      }
2732    ],
2733    "stateMutability": "pure"
2734  },
2735  {
2736    "type": "function",
2737    "name": "currentBlockNumber",
2738    "inputs": [],
2739    "outputs": [
2740      {
2741        "name": "",
2742        "type": "uint256",
2743        "internalType": "uint256"
2744      }
2745    ],
2746    "stateMutability": "view"
2747  },
2748  {
2749    "type": "function",
2750    "name": "disablePermissionedProverMode",
2751    "inputs": [],
2752    "outputs": [],
2753    "stateMutability": "nonpayable"
2754  },
2755  {
2756    "type": "function",
2757    "name": "finalizedState",
2758    "inputs": [],
2759    "outputs": [
2760      {
2761        "name": "viewNum",
2762        "type": "uint64",
2763        "internalType": "uint64"
2764      },
2765      {
2766        "name": "blockHeight",
2767        "type": "uint64",
2768        "internalType": "uint64"
2769      },
2770      {
2771        "name": "blockCommRoot",
2772        "type": "uint256",
2773        "internalType": "BN254.ScalarField"
2774      }
2775    ],
2776    "stateMutability": "view"
2777  },
2778  {
2779    "type": "function",
2780    "name": "genesisStakeTableState",
2781    "inputs": [],
2782    "outputs": [
2783      {
2784        "name": "threshold",
2785        "type": "uint256",
2786        "internalType": "uint256"
2787      },
2788      {
2789        "name": "blsKeyComm",
2790        "type": "uint256",
2791        "internalType": "BN254.ScalarField"
2792      },
2793      {
2794        "name": "schnorrKeyComm",
2795        "type": "uint256",
2796        "internalType": "BN254.ScalarField"
2797      },
2798      {
2799        "name": "amountComm",
2800        "type": "uint256",
2801        "internalType": "BN254.ScalarField"
2802      }
2803    ],
2804    "stateMutability": "view"
2805  },
2806  {
2807    "type": "function",
2808    "name": "genesisState",
2809    "inputs": [],
2810    "outputs": [
2811      {
2812        "name": "viewNum",
2813        "type": "uint64",
2814        "internalType": "uint64"
2815      },
2816      {
2817        "name": "blockHeight",
2818        "type": "uint64",
2819        "internalType": "uint64"
2820      },
2821      {
2822        "name": "blockCommRoot",
2823        "type": "uint256",
2824        "internalType": "BN254.ScalarField"
2825      }
2826    ],
2827    "stateMutability": "view"
2828  },
2829  {
2830    "type": "function",
2831    "name": "getHotShotCommitment",
2832    "inputs": [
2833      {
2834        "name": "hotShotBlockHeight",
2835        "type": "uint256",
2836        "internalType": "uint256"
2837      }
2838    ],
2839    "outputs": [
2840      {
2841        "name": "hotShotBlockCommRoot",
2842        "type": "uint256",
2843        "internalType": "BN254.ScalarField"
2844      },
2845      {
2846        "name": "hotshotBlockHeight",
2847        "type": "uint64",
2848        "internalType": "uint64"
2849      }
2850    ],
2851    "stateMutability": "view"
2852  },
2853  {
2854    "type": "function",
2855    "name": "getStateHistoryCount",
2856    "inputs": [],
2857    "outputs": [
2858      {
2859        "name": "",
2860        "type": "uint256",
2861        "internalType": "uint256"
2862      }
2863    ],
2864    "stateMutability": "view"
2865  },
2866  {
2867    "type": "function",
2868    "name": "getVersion",
2869    "inputs": [],
2870    "outputs": [
2871      {
2872        "name": "majorVersion",
2873        "type": "uint8",
2874        "internalType": "uint8"
2875      },
2876      {
2877        "name": "minorVersion",
2878        "type": "uint8",
2879        "internalType": "uint8"
2880      },
2881      {
2882        "name": "patchVersion",
2883        "type": "uint8",
2884        "internalType": "uint8"
2885      }
2886    ],
2887    "stateMutability": "pure"
2888  },
2889  {
2890    "type": "function",
2891    "name": "initialize",
2892    "inputs": [
2893      {
2894        "name": "_genesis",
2895        "type": "tuple",
2896        "internalType": "struct LightClient.LightClientState",
2897        "components": [
2898          {
2899            "name": "viewNum",
2900            "type": "uint64",
2901            "internalType": "uint64"
2902          },
2903          {
2904            "name": "blockHeight",
2905            "type": "uint64",
2906            "internalType": "uint64"
2907          },
2908          {
2909            "name": "blockCommRoot",
2910            "type": "uint256",
2911            "internalType": "BN254.ScalarField"
2912          }
2913        ]
2914      },
2915      {
2916        "name": "_genesisStakeTableState",
2917        "type": "tuple",
2918        "internalType": "struct LightClient.StakeTableState",
2919        "components": [
2920          {
2921            "name": "threshold",
2922            "type": "uint256",
2923            "internalType": "uint256"
2924          },
2925          {
2926            "name": "blsKeyComm",
2927            "type": "uint256",
2928            "internalType": "BN254.ScalarField"
2929          },
2930          {
2931            "name": "schnorrKeyComm",
2932            "type": "uint256",
2933            "internalType": "BN254.ScalarField"
2934          },
2935          {
2936            "name": "amountComm",
2937            "type": "uint256",
2938            "internalType": "BN254.ScalarField"
2939          }
2940        ]
2941      },
2942      {
2943        "name": "_stateHistoryRetentionPeriod",
2944        "type": "uint32",
2945        "internalType": "uint32"
2946      },
2947      {
2948        "name": "owner",
2949        "type": "address",
2950        "internalType": "address"
2951      }
2952    ],
2953    "outputs": [],
2954    "stateMutability": "nonpayable"
2955  },
2956  {
2957    "type": "function",
2958    "name": "isPermissionedProverEnabled",
2959    "inputs": [],
2960    "outputs": [
2961      {
2962        "name": "",
2963        "type": "bool",
2964        "internalType": "bool"
2965      }
2966    ],
2967    "stateMutability": "view"
2968  },
2969  {
2970    "type": "function",
2971    "name": "lagOverEscapeHatchThreshold",
2972    "inputs": [
2973      {
2974        "name": "blockNumber",
2975        "type": "uint256",
2976        "internalType": "uint256"
2977      },
2978      {
2979        "name": "blockThreshold",
2980        "type": "uint256",
2981        "internalType": "uint256"
2982      }
2983    ],
2984    "outputs": [
2985      {
2986        "name": "",
2987        "type": "bool",
2988        "internalType": "bool"
2989      }
2990    ],
2991    "stateMutability": "view"
2992  },
2993  {
2994    "type": "function",
2995    "name": "newFinalizedState",
2996    "inputs": [
2997      {
2998        "name": "newState",
2999        "type": "tuple",
3000        "internalType": "struct LightClient.LightClientState",
3001        "components": [
3002          {
3003            "name": "viewNum",
3004            "type": "uint64",
3005            "internalType": "uint64"
3006          },
3007          {
3008            "name": "blockHeight",
3009            "type": "uint64",
3010            "internalType": "uint64"
3011          },
3012          {
3013            "name": "blockCommRoot",
3014            "type": "uint256",
3015            "internalType": "BN254.ScalarField"
3016          }
3017        ]
3018      },
3019      {
3020        "name": "proof",
3021        "type": "tuple",
3022        "internalType": "struct IPlonkVerifier.PlonkProof",
3023        "components": [
3024          {
3025            "name": "wire0",
3026            "type": "tuple",
3027            "internalType": "struct BN254.G1Point",
3028            "components": [
3029              {
3030                "name": "x",
3031                "type": "uint256",
3032                "internalType": "BN254.BaseField"
3033              },
3034              {
3035                "name": "y",
3036                "type": "uint256",
3037                "internalType": "BN254.BaseField"
3038              }
3039            ]
3040          },
3041          {
3042            "name": "wire1",
3043            "type": "tuple",
3044            "internalType": "struct BN254.G1Point",
3045            "components": [
3046              {
3047                "name": "x",
3048                "type": "uint256",
3049                "internalType": "BN254.BaseField"
3050              },
3051              {
3052                "name": "y",
3053                "type": "uint256",
3054                "internalType": "BN254.BaseField"
3055              }
3056            ]
3057          },
3058          {
3059            "name": "wire2",
3060            "type": "tuple",
3061            "internalType": "struct BN254.G1Point",
3062            "components": [
3063              {
3064                "name": "x",
3065                "type": "uint256",
3066                "internalType": "BN254.BaseField"
3067              },
3068              {
3069                "name": "y",
3070                "type": "uint256",
3071                "internalType": "BN254.BaseField"
3072              }
3073            ]
3074          },
3075          {
3076            "name": "wire3",
3077            "type": "tuple",
3078            "internalType": "struct BN254.G1Point",
3079            "components": [
3080              {
3081                "name": "x",
3082                "type": "uint256",
3083                "internalType": "BN254.BaseField"
3084              },
3085              {
3086                "name": "y",
3087                "type": "uint256",
3088                "internalType": "BN254.BaseField"
3089              }
3090            ]
3091          },
3092          {
3093            "name": "wire4",
3094            "type": "tuple",
3095            "internalType": "struct BN254.G1Point",
3096            "components": [
3097              {
3098                "name": "x",
3099                "type": "uint256",
3100                "internalType": "BN254.BaseField"
3101              },
3102              {
3103                "name": "y",
3104                "type": "uint256",
3105                "internalType": "BN254.BaseField"
3106              }
3107            ]
3108          },
3109          {
3110            "name": "prodPerm",
3111            "type": "tuple",
3112            "internalType": "struct BN254.G1Point",
3113            "components": [
3114              {
3115                "name": "x",
3116                "type": "uint256",
3117                "internalType": "BN254.BaseField"
3118              },
3119              {
3120                "name": "y",
3121                "type": "uint256",
3122                "internalType": "BN254.BaseField"
3123              }
3124            ]
3125          },
3126          {
3127            "name": "split0",
3128            "type": "tuple",
3129            "internalType": "struct BN254.G1Point",
3130            "components": [
3131              {
3132                "name": "x",
3133                "type": "uint256",
3134                "internalType": "BN254.BaseField"
3135              },
3136              {
3137                "name": "y",
3138                "type": "uint256",
3139                "internalType": "BN254.BaseField"
3140              }
3141            ]
3142          },
3143          {
3144            "name": "split1",
3145            "type": "tuple",
3146            "internalType": "struct BN254.G1Point",
3147            "components": [
3148              {
3149                "name": "x",
3150                "type": "uint256",
3151                "internalType": "BN254.BaseField"
3152              },
3153              {
3154                "name": "y",
3155                "type": "uint256",
3156                "internalType": "BN254.BaseField"
3157              }
3158            ]
3159          },
3160          {
3161            "name": "split2",
3162            "type": "tuple",
3163            "internalType": "struct BN254.G1Point",
3164            "components": [
3165              {
3166                "name": "x",
3167                "type": "uint256",
3168                "internalType": "BN254.BaseField"
3169              },
3170              {
3171                "name": "y",
3172                "type": "uint256",
3173                "internalType": "BN254.BaseField"
3174              }
3175            ]
3176          },
3177          {
3178            "name": "split3",
3179            "type": "tuple",
3180            "internalType": "struct BN254.G1Point",
3181            "components": [
3182              {
3183                "name": "x",
3184                "type": "uint256",
3185                "internalType": "BN254.BaseField"
3186              },
3187              {
3188                "name": "y",
3189                "type": "uint256",
3190                "internalType": "BN254.BaseField"
3191              }
3192            ]
3193          },
3194          {
3195            "name": "split4",
3196            "type": "tuple",
3197            "internalType": "struct BN254.G1Point",
3198            "components": [
3199              {
3200                "name": "x",
3201                "type": "uint256",
3202                "internalType": "BN254.BaseField"
3203              },
3204              {
3205                "name": "y",
3206                "type": "uint256",
3207                "internalType": "BN254.BaseField"
3208              }
3209            ]
3210          },
3211          {
3212            "name": "zeta",
3213            "type": "tuple",
3214            "internalType": "struct BN254.G1Point",
3215            "components": [
3216              {
3217                "name": "x",
3218                "type": "uint256",
3219                "internalType": "BN254.BaseField"
3220              },
3221              {
3222                "name": "y",
3223                "type": "uint256",
3224                "internalType": "BN254.BaseField"
3225              }
3226            ]
3227          },
3228          {
3229            "name": "zetaOmega",
3230            "type": "tuple",
3231            "internalType": "struct BN254.G1Point",
3232            "components": [
3233              {
3234                "name": "x",
3235                "type": "uint256",
3236                "internalType": "BN254.BaseField"
3237              },
3238              {
3239                "name": "y",
3240                "type": "uint256",
3241                "internalType": "BN254.BaseField"
3242              }
3243            ]
3244          },
3245          {
3246            "name": "wireEval0",
3247            "type": "uint256",
3248            "internalType": "BN254.ScalarField"
3249          },
3250          {
3251            "name": "wireEval1",
3252            "type": "uint256",
3253            "internalType": "BN254.ScalarField"
3254          },
3255          {
3256            "name": "wireEval2",
3257            "type": "uint256",
3258            "internalType": "BN254.ScalarField"
3259          },
3260          {
3261            "name": "wireEval3",
3262            "type": "uint256",
3263            "internalType": "BN254.ScalarField"
3264          },
3265          {
3266            "name": "wireEval4",
3267            "type": "uint256",
3268            "internalType": "BN254.ScalarField"
3269          },
3270          {
3271            "name": "sigmaEval0",
3272            "type": "uint256",
3273            "internalType": "BN254.ScalarField"
3274          },
3275          {
3276            "name": "sigmaEval1",
3277            "type": "uint256",
3278            "internalType": "BN254.ScalarField"
3279          },
3280          {
3281            "name": "sigmaEval2",
3282            "type": "uint256",
3283            "internalType": "BN254.ScalarField"
3284          },
3285          {
3286            "name": "sigmaEval3",
3287            "type": "uint256",
3288            "internalType": "BN254.ScalarField"
3289          },
3290          {
3291            "name": "prodPermZetaOmegaEval",
3292            "type": "uint256",
3293            "internalType": "BN254.ScalarField"
3294          }
3295        ]
3296      }
3297    ],
3298    "outputs": [],
3299    "stateMutability": "nonpayable"
3300  },
3301  {
3302    "type": "function",
3303    "name": "owner",
3304    "inputs": [],
3305    "outputs": [
3306      {
3307        "name": "",
3308        "type": "address",
3309        "internalType": "address"
3310      }
3311    ],
3312    "stateMutability": "view"
3313  },
3314  {
3315    "type": "function",
3316    "name": "permissionedProver",
3317    "inputs": [],
3318    "outputs": [
3319      {
3320        "name": "",
3321        "type": "address",
3322        "internalType": "address"
3323      }
3324    ],
3325    "stateMutability": "view"
3326  },
3327  {
3328    "type": "function",
3329    "name": "proxiableUUID",
3330    "inputs": [],
3331    "outputs": [
3332      {
3333        "name": "",
3334        "type": "bytes32",
3335        "internalType": "bytes32"
3336      }
3337    ],
3338    "stateMutability": "view"
3339  },
3340  {
3341    "type": "function",
3342    "name": "renounceOwnership",
3343    "inputs": [],
3344    "outputs": [],
3345    "stateMutability": "nonpayable"
3346  },
3347  {
3348    "type": "function",
3349    "name": "setPermissionedProver",
3350    "inputs": [
3351      {
3352        "name": "prover",
3353        "type": "address",
3354        "internalType": "address"
3355      }
3356    ],
3357    "outputs": [],
3358    "stateMutability": "nonpayable"
3359  },
3360  {
3361    "type": "function",
3362    "name": "setstateHistoryRetentionPeriod",
3363    "inputs": [
3364      {
3365        "name": "historySeconds",
3366        "type": "uint32",
3367        "internalType": "uint32"
3368      }
3369    ],
3370    "outputs": [],
3371    "stateMutability": "nonpayable"
3372  },
3373  {
3374    "type": "function",
3375    "name": "stateHistoryCommitments",
3376    "inputs": [
3377      {
3378        "name": "",
3379        "type": "uint256",
3380        "internalType": "uint256"
3381      }
3382    ],
3383    "outputs": [
3384      {
3385        "name": "l1BlockHeight",
3386        "type": "uint64",
3387        "internalType": "uint64"
3388      },
3389      {
3390        "name": "l1BlockTimestamp",
3391        "type": "uint64",
3392        "internalType": "uint64"
3393      },
3394      {
3395        "name": "hotShotBlockHeight",
3396        "type": "uint64",
3397        "internalType": "uint64"
3398      },
3399      {
3400        "name": "hotShotBlockCommRoot",
3401        "type": "uint256",
3402        "internalType": "BN254.ScalarField"
3403      }
3404    ],
3405    "stateMutability": "view"
3406  },
3407  {
3408    "type": "function",
3409    "name": "stateHistoryFirstIndex",
3410    "inputs": [],
3411    "outputs": [
3412      {
3413        "name": "",
3414        "type": "uint64",
3415        "internalType": "uint64"
3416      }
3417    ],
3418    "stateMutability": "view"
3419  },
3420  {
3421    "type": "function",
3422    "name": "stateHistoryRetentionPeriod",
3423    "inputs": [],
3424    "outputs": [
3425      {
3426        "name": "",
3427        "type": "uint32",
3428        "internalType": "uint32"
3429      }
3430    ],
3431    "stateMutability": "view"
3432  },
3433  {
3434    "type": "function",
3435    "name": "transferOwnership",
3436    "inputs": [
3437      {
3438        "name": "newOwner",
3439        "type": "address",
3440        "internalType": "address"
3441      }
3442    ],
3443    "outputs": [],
3444    "stateMutability": "nonpayable"
3445  },
3446  {
3447    "type": "function",
3448    "name": "upgradeToAndCall",
3449    "inputs": [
3450      {
3451        "name": "newImplementation",
3452        "type": "address",
3453        "internalType": "address"
3454      },
3455      {
3456        "name": "data",
3457        "type": "bytes",
3458        "internalType": "bytes"
3459      }
3460    ],
3461    "outputs": [],
3462    "stateMutability": "payable"
3463  },
3464  {
3465    "type": "event",
3466    "name": "Initialized",
3467    "inputs": [
3468      {
3469        "name": "version",
3470        "type": "uint64",
3471        "indexed": false,
3472        "internalType": "uint64"
3473      }
3474    ],
3475    "anonymous": false
3476  },
3477  {
3478    "type": "event",
3479    "name": "NewState",
3480    "inputs": [
3481      {
3482        "name": "viewNum",
3483        "type": "uint64",
3484        "indexed": true,
3485        "internalType": "uint64"
3486      },
3487      {
3488        "name": "blockHeight",
3489        "type": "uint64",
3490        "indexed": true,
3491        "internalType": "uint64"
3492      },
3493      {
3494        "name": "blockCommRoot",
3495        "type": "uint256",
3496        "indexed": false,
3497        "internalType": "BN254.ScalarField"
3498      }
3499    ],
3500    "anonymous": false
3501  },
3502  {
3503    "type": "event",
3504    "name": "OwnershipTransferred",
3505    "inputs": [
3506      {
3507        "name": "previousOwner",
3508        "type": "address",
3509        "indexed": true,
3510        "internalType": "address"
3511      },
3512      {
3513        "name": "newOwner",
3514        "type": "address",
3515        "indexed": true,
3516        "internalType": "address"
3517      }
3518    ],
3519    "anonymous": false
3520  },
3521  {
3522    "type": "event",
3523    "name": "PermissionedProverNotRequired",
3524    "inputs": [],
3525    "anonymous": false
3526  },
3527  {
3528    "type": "event",
3529    "name": "PermissionedProverRequired",
3530    "inputs": [
3531      {
3532        "name": "permissionedProver",
3533        "type": "address",
3534        "indexed": false,
3535        "internalType": "address"
3536      }
3537    ],
3538    "anonymous": false
3539  },
3540  {
3541    "type": "event",
3542    "name": "Upgrade",
3543    "inputs": [
3544      {
3545        "name": "implementation",
3546        "type": "address",
3547        "indexed": false,
3548        "internalType": "address"
3549      }
3550    ],
3551    "anonymous": false
3552  },
3553  {
3554    "type": "event",
3555    "name": "Upgraded",
3556    "inputs": [
3557      {
3558        "name": "implementation",
3559        "type": "address",
3560        "indexed": true,
3561        "internalType": "address"
3562      }
3563    ],
3564    "anonymous": false
3565  },
3566  {
3567    "type": "error",
3568    "name": "AddressEmptyCode",
3569    "inputs": [
3570      {
3571        "name": "target",
3572        "type": "address",
3573        "internalType": "address"
3574      }
3575    ]
3576  },
3577  {
3578    "type": "error",
3579    "name": "ERC1967InvalidImplementation",
3580    "inputs": [
3581      {
3582        "name": "implementation",
3583        "type": "address",
3584        "internalType": "address"
3585      }
3586    ]
3587  },
3588  {
3589    "type": "error",
3590    "name": "ERC1967NonPayable",
3591    "inputs": []
3592  },
3593  {
3594    "type": "error",
3595    "name": "FailedInnerCall",
3596    "inputs": []
3597  },
3598  {
3599    "type": "error",
3600    "name": "InsufficientSnapshotHistory",
3601    "inputs": []
3602  },
3603  {
3604    "type": "error",
3605    "name": "InvalidAddress",
3606    "inputs": []
3607  },
3608  {
3609    "type": "error",
3610    "name": "InvalidArgs",
3611    "inputs": []
3612  },
3613  {
3614    "type": "error",
3615    "name": "InvalidHotShotBlockForCommitmentCheck",
3616    "inputs": []
3617  },
3618  {
3619    "type": "error",
3620    "name": "InvalidInitialization",
3621    "inputs": []
3622  },
3623  {
3624    "type": "error",
3625    "name": "InvalidMaxStateHistory",
3626    "inputs": []
3627  },
3628  {
3629    "type": "error",
3630    "name": "InvalidProof",
3631    "inputs": []
3632  },
3633  {
3634    "type": "error",
3635    "name": "InvalidScalar",
3636    "inputs": []
3637  },
3638  {
3639    "type": "error",
3640    "name": "NoChangeRequired",
3641    "inputs": []
3642  },
3643  {
3644    "type": "error",
3645    "name": "NotInitializing",
3646    "inputs": []
3647  },
3648  {
3649    "type": "error",
3650    "name": "OutdatedState",
3651    "inputs": []
3652  },
3653  {
3654    "type": "error",
3655    "name": "OwnableInvalidOwner",
3656    "inputs": [
3657      {
3658        "name": "owner",
3659        "type": "address",
3660        "internalType": "address"
3661      }
3662    ]
3663  },
3664  {
3665    "type": "error",
3666    "name": "OwnableUnauthorizedAccount",
3667    "inputs": [
3668      {
3669        "name": "account",
3670        "type": "address",
3671        "internalType": "address"
3672      }
3673    ]
3674  },
3675  {
3676    "type": "error",
3677    "name": "OwnershipCannotBeRenounced",
3678    "inputs": []
3679  },
3680  {
3681    "type": "error",
3682    "name": "ProverNotPermissioned",
3683    "inputs": []
3684  },
3685  {
3686    "type": "error",
3687    "name": "UUPSUnauthorizedCallContext",
3688    "inputs": []
3689  },
3690  {
3691    "type": "error",
3692    "name": "UUPSUnsupportedProxiableUUID",
3693    "inputs": [
3694      {
3695        "name": "slot",
3696        "type": "bytes32",
3697        "internalType": "bytes32"
3698      }
3699    ]
3700  },
3701  {
3702    "type": "error",
3703    "name": "WrongStakeTableUsed",
3704    "inputs": []
3705  }
3706]
3707```*/
3708#[allow(
3709    non_camel_case_types,
3710    non_snake_case,
3711    clippy::pub_underscore_fields,
3712    clippy::style,
3713    clippy::empty_structs_with_brackets
3714)]
3715pub mod LightClient {
3716    use super::*;
3717    use alloy::sol_types as alloy_sol_types;
3718    /// The creation / init bytecode of the contract.
3719    ///
3720    /// ```text
3721    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b3d6100f95f395f81816116f40152818161171d015261189a0152612b3d5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f4d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f66565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f7d565b34801561023a575f5ffd5b506101846102493660046122b2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612462565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f66565b6108cf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612518565b6109fa565b34801561043c575f5ffd5b5061018461044b366004612531565b610a83565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125da565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461260f565b610ba5565b348015610573575f5ffd5b50610184610582366004611f4d565b610cff565b348015610592575f5ffd5b506009546102d1565b6105a3610d41565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611caf565b6106a7610d9c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113cb565b61075d828261140c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b4284611500565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116e9565b6108178261178d565b61082182826117ce565b5050565b5f61082e61188f565b505f516020612b115f395f51905f5290565b610848610d41565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d41565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906108e3600183612643565b815481106108f3576108f3612656565b5f918252602090912060029091020154600160801b90046001600160401b0316841061093257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109f357846009828154811061096257610962612656565b5f918252602090912060029091020154600160801b90046001600160401b031611156109eb576009818154811061099b5761099b612656565b905f5260205f20906002020160010154600982815481106109be576109be612656565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610946565b5050915091565b610a02610d41565b610e108163ffffffff161080610a2157506301e133808163ffffffff16115b80610a3f575060085463ffffffff600160a01b909104811690821611155b15610a5d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ac75750825b90505f826001600160401b03166001148015610ae25750303b155b905081158015610af0575080155b15610b0e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b3857845460ff60401b1916600160401b1785555b610b41866118d8565b610b496118e9565b610b548989896118f1565b8315610b9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610bb6575080155b80610c005750600854600980549091600160c01b90046001600160401b0316908110610be457610be4612656565b5f9182526020909120600290910201546001600160401b031684105b15610c1e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c2c600185612643565b90505b81610cc857600854600160c01b90046001600160401b03168110610cc8578660098281548110610c6157610c61612656565b5f9182526020909120600290910201546001600160401b031611610cb6576001915060098181548110610c9657610c96612656565b5f9182526020909120600290910201546001600160401b03169250610cc8565b80610cc08161266a565b915050610c2f565b81610ce65760405163b0b4387760e01b815260040160405180910390fd5b85610cf18489612643565b119450505050505b92915050565b610d07610d41565b6001600160a01b038116610d3557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d3e81611a1d565b50565b33610d737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d2c565b610da4611caf565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611415610697565b905061141f611f14565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061149e9085908590889060040161285b565b602060405180830381865af41580156114b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd9190612a7b565b6114fa576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611575575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061154057611540612656565b5f91825260209091206002909102015461156a90600160401b90046001600160401b031684612a9a565b6001600160401b0316115b1561160857600854600980549091600160c01b90046001600160401b03169081106115a2576115a2612656565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115e283612ab9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061176f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117635f516020612b115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611795610d41565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611828575060408051601f3d908101601f1916820190925261182591810190612ae3565b60015b61185057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d2c565b5f516020612b115f395f51905f52811461188057604051632a87526960e21b815260048101829052602401610d2c565b61188a8383611a8d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b6118e0611ae2565b610d3e81611b2b565b6108ac611ae2565b82516001600160401b0316151580611915575060208301516001600160401b031615155b8061192257506020820151155b8061192f57506040820151155b8061193c57506060820151155b8061194657508151155b806119585750610e108163ffffffff16105b8061196c57506301e133808163ffffffff16115b1561198a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a9682611b33565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ada5761188a8282611b96565b610821611c08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610d07611ae2565b806001600160a01b03163b5f03611b6857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d2c565b5f516020612b115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bb29190612afa565b5f60405180830381855af49150503d805f8114611bea576040519150601f19603f3d011682016040523d82523d5f602084013e611bef565b606091505b5091509150611bff858383611c27565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c3c57611c3782611c86565b611c7f565b8151158015611c5357506001600160a01b0384163b155b15611c7c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d2c565b50805b9392505050565b805115611c965780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ce260405180604001604052805f81526020015f81525090565b8152602001611d0260405180604001604052805f81526020015f81525090565b8152602001611d2260405180604001604052805f81526020015f81525090565b8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f48575f5ffd5b919050565b5f60208284031215611f5d575f5ffd5b611c7f82611f32565b5f60208284031215611f76575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611faf604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121b5576121b561217e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121e3576121e361217e565b604052919050565b80356001600160401b0381168114611f48575f5ffd5b5f60608284031215612211575f5ffd5b604051606081016001600160401b03811182821017156122335761223361217e565b604052905080612242836121eb565b8152612250602084016121eb565b6020820152604092830135920191909152919050565b5f60408284031215612276575f5ffd5b604080519081016001600160401b03811182821017156122985761229861217e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122c5575f5ffd5b6122cf8585612201565b9250610480605f19820112156122e3575f5ffd5b506122ec612192565b6122f98560608601612266565b81526123088560a08601612266565b602082015261231a8560e08601612266565b604082015261232d856101208601612266565b6060820152612340856101608601612266565b6080820152612353856101a08601612266565b60a0820152612366856101e08601612266565b60c0820152612379856102208601612266565b60e082015261238c856102608601612266565b6101008201526123a0856102a08601612266565b6101208201526123b4856102e08601612266565b6101408201526123c8856103208601612266565b6101608201526123dc856103608601612266565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612473575f5ffd5b61247c83611f32565b915060208301356001600160401b03811115612496575f5ffd5b8301601f810185136124a6575f5ffd5b80356001600160401b038111156124bf576124bf61217e565b6124d2601f8201601f19166020016121bb565b8181528660208385010111156124e6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f48575f5ffd5b5f60208284031215612528575f5ffd5b611c7f82612505565b5f5f5f5f848603610120811215612546575f5ffd5b6125508787612201565b94506080605f1982011215612563575f5ffd5b50604051608081016001600160401b03811182821017156125865761258661217e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125c060e08601612505565b91506125cf6101008601611f32565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612620575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cf957610cf961262f565b634e487b7160e01b5f52603260045260245ffd5b5f816126785761267861262f565b505f190190565b805f5b60078110156114fa578151845260209384019390910190600101612682565b6126b682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161288d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a6561050083018561267f565b612a736105e08301846126a1565b949350505050565b5f60208284031215612a8b575f5ffd5b81518015158114611c7f575f5ffd5b6001600160401b038281168282160390811115610cf957610cf961262f565b5f6001600160401b0382166001600160401b038103612ada57612ada61262f565b60010192915050565b5f60208284031215612af3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3722    /// ```
3723    #[rustfmt::skip]
3724    #[allow(clippy::all)]
3725    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3726        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[`\x80Qa+=a\0\xF9_9_\x81\x81a\x16\xF4\x01R\x81\x81a\x17\x1D\x01Ra\x18\x9A\x01Ra+=_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FMV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FfV[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F}V[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xB2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$bV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FfV[a\x08\xCFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x18V[a\t\xFAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%1V[a\n\x83V[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xDAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&\x0FV[a\x0B\xA5V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FMV[a\x0C\xFFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xAFV[a\x06\xA7a\r\x9CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xCBV[a\x07]\x82\x82a\x14\x0CV[\x81Q`\x06\x80T` \x85\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`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\0V[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xE9V[a\x08\x17\x82a\x17\x8DV[a\x08!\x82\x82a\x17\xCEV[PPV[_a\x08.a\x18\x8FV[P_Q` a+\x11_9_Q\x90_R\x90V[a\x08Ha\rAV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\rAV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\x08\xE3`\x01\x83a&CV[\x81T\x81\x10a\x08\xF3Wa\x08\xF3a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t2W`@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\t\xF3W\x84`\t\x82\x81T\x81\x10a\tbWa\tba&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xEBW`\t\x81\x81T\x81\x10a\t\x9BWa\t\x9Ba&VV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xBEWa\t\xBEa&VV[\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\tFV[PP\x91P\x91V[a\n\x02a\rAV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n!WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n?WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n]W`@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\n\xC7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xE2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xF0WP\x80\x15[\x15a\x0B\x0EW`@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\x0B8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0BA\x86a\x18\xD8V[a\x0BIa\x18\xE9V[a\x0BT\x89\x89\x89a\x18\xF1V[\x83\x15a\x0B\x9AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xB6WP\x80\x15[\x80a\x0C\0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xE4Wa\x0B\xE4a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x1EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C,`\x01\x85a&CV[\x90P[\x81a\x0C\xC8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xC8W\x86`\t\x82\x81T\x81\x10a\x0CaWa\x0Caa&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xB6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x96Wa\x0C\x96a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xC8V[\x80a\x0C\xC0\x81a&jV[\x91PPa\x0C/V[\x81a\x0C\xE6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xF1\x84\x89a&CV[\x11\x94PPPPP[\x92\x91PPV[a\r\x07a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r>\x81a\x1A\x1DV[PV[3a\rs\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r,V[a\r\xA4a\x1C\xAFV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x15a\x06\x97V[\x90Pa\x14\x1Fa\x1F\x14V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\x9E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a([V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xDD\x91\x90a*{V[a\x14\xFAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15uWP`\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\x15@Wa\x15@a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15j\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x9AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x08W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xA2Wa\x15\xA2a&VV[_\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\x15\xE2\x83a*\xB9V[\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[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\x17oWP\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\x17c_Q` a+\x11_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x95a\rAV[`@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\x06CV[\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\x18(WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18%\x91\x81\x01\x90a*\xE3V[`\x01[a\x18PW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x81\x14a\x18\x80W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r,V[a\x18\x8A\x83\x83a\x1A\x8DV[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\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xE0a\x1A\xE2V[a\r>\x81a\x1B+V[a\x08\xACa\x1A\xE2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x15WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\"WP` \x82\x01Q\x15[\x80a\x19/WP`@\x82\x01Q\x15[\x80a\x19<WP``\x82\x01Q\x15[\x80a\x19FWP\x81Q\x15[\x80a\x19XWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19lWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\x8AW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1A\x96\x82a\x1B3V[`@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\x1A\xDAWa\x18\x8A\x82\x82a\x1B\x96V[a\x08!a\x1C\x08V[\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\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x07a\x1A\xE2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BhW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_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\x1B\xB2\x91\x90a*\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xEAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xEFV[``\x91P[P\x91P\x91Pa\x1B\xFF\x85\x83\x83a\x1C'V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C<Wa\x1C7\x82a\x1C\x86V[a\x1C\x7FV[\x81Q\x15\x80\x15a\x1CSWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C|W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r,V[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x96W\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\x1C\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Db`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F]W__\xFD[a\x1C\x7F\x82a\x1F2V[_` \x82\x84\x03\x12\x15a\x1FvW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xAF`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xB5Wa!\xB5a!~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xE3Wa!\xE3a!~V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[_``\x82\x84\x03\x12\x15a\"\x11W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"3Wa\"3a!~V[`@R\x90P\x80a\"B\x83a!\xEBV[\x81Ra\"P` \x84\x01a!\xEBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"vW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x98Wa\"\x98a!~V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xC5W__\xFD[a\"\xCF\x85\x85a\"\x01V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xE3W__\xFD[Pa\"\xECa!\x92V[a\"\xF9\x85``\x86\x01a\"fV[\x81Ra#\x08\x85`\xA0\x86\x01a\"fV[` \x82\x01Ra#\x1A\x85`\xE0\x86\x01a\"fV[`@\x82\x01Ra#-\x85a\x01 \x86\x01a\"fV[``\x82\x01Ra#@\x85a\x01`\x86\x01a\"fV[`\x80\x82\x01Ra#S\x85a\x01\xA0\x86\x01a\"fV[`\xA0\x82\x01Ra#f\x85a\x01\xE0\x86\x01a\"fV[`\xC0\x82\x01Ra#y\x85a\x02 \x86\x01a\"fV[`\xE0\x82\x01Ra#\x8C\x85a\x02`\x86\x01a\"fV[a\x01\0\x82\x01Ra#\xA0\x85a\x02\xA0\x86\x01a\"fV[a\x01 \x82\x01Ra#\xB4\x85a\x02\xE0\x86\x01a\"fV[a\x01@\x82\x01Ra#\xC8\x85a\x03 \x86\x01a\"fV[a\x01`\x82\x01Ra#\xDC\x85a\x03`\x86\x01a\"fV[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$sW__\xFD[a$|\x83a\x1F2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x96W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xA6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xBFWa$\xBFa!~V[a$\xD2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xBBV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xE6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FHW__\xFD[_` \x82\x84\x03\x12\x15a%(W__\xFD[a\x1C\x7F\x82a%\x05V[____\x84\x86\x03a\x01 \x81\x12\x15a%FW__\xFD[a%P\x87\x87a\"\x01V[\x94P`\x80`_\x19\x82\x01\x12\x15a%cW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x86Wa%\x86a!~V[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xC0`\xE0\x86\x01a%\x05V[\x91Pa%\xCFa\x01\0\x86\x01a\x1F2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a& W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&xWa&xa&/V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xFAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\x82V[a&\xB6\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa(\x8D`@\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\x01Ra*ea\x05\0\x83\x01\x85a&\x7FV[a*sa\x05\xE0\x83\x01\x84a&\xA1V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\x8BW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x7FW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xDAWa*\xDAa&/V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xF3W__\xFD[PQ\x91\x90PV[_\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",
3727    );
3728    /// The runtime bytecode of the contract, as deployed on the network.
3729    ///
3730    /// ```text
3731    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f4d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f66565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f7d565b34801561023a575f5ffd5b506101846102493660046122b2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612462565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f66565b6108cf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612518565b6109fa565b34801561043c575f5ffd5b5061018461044b366004612531565b610a83565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125da565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461260f565b610ba5565b348015610573575f5ffd5b50610184610582366004611f4d565b610cff565b348015610592575f5ffd5b506009546102d1565b6105a3610d41565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611caf565b6106a7610d9c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113cb565b61075d828261140c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b4284611500565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116e9565b6108178261178d565b61082182826117ce565b5050565b5f61082e61188f565b505f516020612b115f395f51905f5290565b610848610d41565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d41565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906108e3600183612643565b815481106108f3576108f3612656565b5f918252602090912060029091020154600160801b90046001600160401b0316841061093257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109f357846009828154811061096257610962612656565b5f918252602090912060029091020154600160801b90046001600160401b031611156109eb576009818154811061099b5761099b612656565b905f5260205f20906002020160010154600982815481106109be576109be612656565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610946565b5050915091565b610a02610d41565b610e108163ffffffff161080610a2157506301e133808163ffffffff16115b80610a3f575060085463ffffffff600160a01b909104811690821611155b15610a5d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ac75750825b90505f826001600160401b03166001148015610ae25750303b155b905081158015610af0575080155b15610b0e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b3857845460ff60401b1916600160401b1785555b610b41866118d8565b610b496118e9565b610b548989896118f1565b8315610b9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610bb6575080155b80610c005750600854600980549091600160c01b90046001600160401b0316908110610be457610be4612656565b5f9182526020909120600290910201546001600160401b031684105b15610c1e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c2c600185612643565b90505b81610cc857600854600160c01b90046001600160401b03168110610cc8578660098281548110610c6157610c61612656565b5f9182526020909120600290910201546001600160401b031611610cb6576001915060098181548110610c9657610c96612656565b5f9182526020909120600290910201546001600160401b03169250610cc8565b80610cc08161266a565b915050610c2f565b81610ce65760405163b0b4387760e01b815260040160405180910390fd5b85610cf18489612643565b119450505050505b92915050565b610d07610d41565b6001600160a01b038116610d3557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d3e81611a1d565b50565b33610d737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d2c565b610da4611caf565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611415610697565b905061141f611f14565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061149e9085908590889060040161285b565b602060405180830381865af41580156114b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd9190612a7b565b6114fa576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611575575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061154057611540612656565b5f91825260209091206002909102015461156a90600160401b90046001600160401b031684612a9a565b6001600160401b0316115b1561160857600854600980549091600160c01b90046001600160401b03169081106115a2576115a2612656565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115e283612ab9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061176f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117635f516020612b115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611795610d41565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611828575060408051601f3d908101601f1916820190925261182591810190612ae3565b60015b61185057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d2c565b5f516020612b115f395f51905f52811461188057604051632a87526960e21b815260048101829052602401610d2c565b61188a8383611a8d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b6118e0611ae2565b610d3e81611b2b565b6108ac611ae2565b82516001600160401b0316151580611915575060208301516001600160401b031615155b8061192257506020820151155b8061192f57506040820151155b8061193c57506060820151155b8061194657508151155b806119585750610e108163ffffffff16105b8061196c57506301e133808163ffffffff16115b1561198a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a9682611b33565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ada5761188a8282611b96565b610821611c08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610d07611ae2565b806001600160a01b03163b5f03611b6857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d2c565b5f516020612b115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bb29190612afa565b5f60405180830381855af49150503d805f8114611bea576040519150601f19603f3d011682016040523d82523d5f602084013e611bef565b606091505b5091509150611bff858383611c27565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c3c57611c3782611c86565b611c7f565b8151158015611c5357506001600160a01b0384163b155b15611c7c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d2c565b50805b9392505050565b805115611c965780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ce260405180604001604052805f81526020015f81525090565b8152602001611d0260405180604001604052805f81526020015f81525090565b8152602001611d2260405180604001604052805f81526020015f81525090565b8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f48575f5ffd5b919050565b5f60208284031215611f5d575f5ffd5b611c7f82611f32565b5f60208284031215611f76575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611faf604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121b5576121b561217e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121e3576121e361217e565b604052919050565b80356001600160401b0381168114611f48575f5ffd5b5f60608284031215612211575f5ffd5b604051606081016001600160401b03811182821017156122335761223361217e565b604052905080612242836121eb565b8152612250602084016121eb565b6020820152604092830135920191909152919050565b5f60408284031215612276575f5ffd5b604080519081016001600160401b03811182821017156122985761229861217e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122c5575f5ffd5b6122cf8585612201565b9250610480605f19820112156122e3575f5ffd5b506122ec612192565b6122f98560608601612266565b81526123088560a08601612266565b602082015261231a8560e08601612266565b604082015261232d856101208601612266565b6060820152612340856101608601612266565b6080820152612353856101a08601612266565b60a0820152612366856101e08601612266565b60c0820152612379856102208601612266565b60e082015261238c856102608601612266565b6101008201526123a0856102a08601612266565b6101208201526123b4856102e08601612266565b6101408201526123c8856103208601612266565b6101608201526123dc856103608601612266565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612473575f5ffd5b61247c83611f32565b915060208301356001600160401b03811115612496575f5ffd5b8301601f810185136124a6575f5ffd5b80356001600160401b038111156124bf576124bf61217e565b6124d2601f8201601f19166020016121bb565b8181528660208385010111156124e6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f48575f5ffd5b5f60208284031215612528575f5ffd5b611c7f82612505565b5f5f5f5f848603610120811215612546575f5ffd5b6125508787612201565b94506080605f1982011215612563575f5ffd5b50604051608081016001600160401b03811182821017156125865761258661217e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125c060e08601612505565b91506125cf6101008601611f32565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612620575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cf957610cf961262f565b634e487b7160e01b5f52603260045260245ffd5b5f816126785761267861262f565b505f190190565b805f5b60078110156114fa578151845260209384019390910190600101612682565b6126b682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161288d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a6561050083018561267f565b612a736105e08301846126a1565b949350505050565b5f60208284031215612a8b575f5ffd5b81518015158114611c7f575f5ffd5b6001600160401b038281168282160390811115610cf957610cf961262f565b5f6001600160401b0382166001600160401b038103612ada57612ada61262f565b60010192915050565b5f60208284031215612af3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3732    /// ```
3733    #[rustfmt::skip]
3734    #[allow(clippy::all)]
3735    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3736        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FMV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FfV[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F}V[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xB2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$bV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FfV[a\x08\xCFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x18V[a\t\xFAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%1V[a\n\x83V[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xDAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&\x0FV[a\x0B\xA5V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FMV[a\x0C\xFFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xAFV[a\x06\xA7a\r\x9CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xCBV[a\x07]\x82\x82a\x14\x0CV[\x81Q`\x06\x80T` \x85\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`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\0V[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xE9V[a\x08\x17\x82a\x17\x8DV[a\x08!\x82\x82a\x17\xCEV[PPV[_a\x08.a\x18\x8FV[P_Q` a+\x11_9_Q\x90_R\x90V[a\x08Ha\rAV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\rAV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\x08\xE3`\x01\x83a&CV[\x81T\x81\x10a\x08\xF3Wa\x08\xF3a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t2W`@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\t\xF3W\x84`\t\x82\x81T\x81\x10a\tbWa\tba&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xEBW`\t\x81\x81T\x81\x10a\t\x9BWa\t\x9Ba&VV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xBEWa\t\xBEa&VV[\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\tFV[PP\x91P\x91V[a\n\x02a\rAV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n!WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n?WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n]W`@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\n\xC7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xE2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xF0WP\x80\x15[\x15a\x0B\x0EW`@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\x0B8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0BA\x86a\x18\xD8V[a\x0BIa\x18\xE9V[a\x0BT\x89\x89\x89a\x18\xF1V[\x83\x15a\x0B\x9AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xB6WP\x80\x15[\x80a\x0C\0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xE4Wa\x0B\xE4a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x1EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C,`\x01\x85a&CV[\x90P[\x81a\x0C\xC8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xC8W\x86`\t\x82\x81T\x81\x10a\x0CaWa\x0Caa&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xB6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x96Wa\x0C\x96a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xC8V[\x80a\x0C\xC0\x81a&jV[\x91PPa\x0C/V[\x81a\x0C\xE6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xF1\x84\x89a&CV[\x11\x94PPPPP[\x92\x91PPV[a\r\x07a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r>\x81a\x1A\x1DV[PV[3a\rs\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r,V[a\r\xA4a\x1C\xAFV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x15a\x06\x97V[\x90Pa\x14\x1Fa\x1F\x14V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\x9E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a([V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xDD\x91\x90a*{V[a\x14\xFAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15uWP`\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\x15@Wa\x15@a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15j\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x9AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x08W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xA2Wa\x15\xA2a&VV[_\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\x15\xE2\x83a*\xB9V[\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[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\x17oWP\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\x17c_Q` a+\x11_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x95a\rAV[`@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\x06CV[\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\x18(WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18%\x91\x81\x01\x90a*\xE3V[`\x01[a\x18PW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x81\x14a\x18\x80W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r,V[a\x18\x8A\x83\x83a\x1A\x8DV[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\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xE0a\x1A\xE2V[a\r>\x81a\x1B+V[a\x08\xACa\x1A\xE2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x15WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\"WP` \x82\x01Q\x15[\x80a\x19/WP`@\x82\x01Q\x15[\x80a\x19<WP``\x82\x01Q\x15[\x80a\x19FWP\x81Q\x15[\x80a\x19XWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19lWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\x8AW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1A\x96\x82a\x1B3V[`@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\x1A\xDAWa\x18\x8A\x82\x82a\x1B\x96V[a\x08!a\x1C\x08V[\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\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x07a\x1A\xE2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BhW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_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\x1B\xB2\x91\x90a*\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xEAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xEFV[``\x91P[P\x91P\x91Pa\x1B\xFF\x85\x83\x83a\x1C'V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C<Wa\x1C7\x82a\x1C\x86V[a\x1C\x7FV[\x81Q\x15\x80\x15a\x1CSWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C|W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r,V[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x96W\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\x1C\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Db`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F]W__\xFD[a\x1C\x7F\x82a\x1F2V[_` \x82\x84\x03\x12\x15a\x1FvW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xAF`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xB5Wa!\xB5a!~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xE3Wa!\xE3a!~V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[_``\x82\x84\x03\x12\x15a\"\x11W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"3Wa\"3a!~V[`@R\x90P\x80a\"B\x83a!\xEBV[\x81Ra\"P` \x84\x01a!\xEBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"vW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x98Wa\"\x98a!~V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xC5W__\xFD[a\"\xCF\x85\x85a\"\x01V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xE3W__\xFD[Pa\"\xECa!\x92V[a\"\xF9\x85``\x86\x01a\"fV[\x81Ra#\x08\x85`\xA0\x86\x01a\"fV[` \x82\x01Ra#\x1A\x85`\xE0\x86\x01a\"fV[`@\x82\x01Ra#-\x85a\x01 \x86\x01a\"fV[``\x82\x01Ra#@\x85a\x01`\x86\x01a\"fV[`\x80\x82\x01Ra#S\x85a\x01\xA0\x86\x01a\"fV[`\xA0\x82\x01Ra#f\x85a\x01\xE0\x86\x01a\"fV[`\xC0\x82\x01Ra#y\x85a\x02 \x86\x01a\"fV[`\xE0\x82\x01Ra#\x8C\x85a\x02`\x86\x01a\"fV[a\x01\0\x82\x01Ra#\xA0\x85a\x02\xA0\x86\x01a\"fV[a\x01 \x82\x01Ra#\xB4\x85a\x02\xE0\x86\x01a\"fV[a\x01@\x82\x01Ra#\xC8\x85a\x03 \x86\x01a\"fV[a\x01`\x82\x01Ra#\xDC\x85a\x03`\x86\x01a\"fV[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$sW__\xFD[a$|\x83a\x1F2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x96W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xA6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xBFWa$\xBFa!~V[a$\xD2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xBBV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xE6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FHW__\xFD[_` \x82\x84\x03\x12\x15a%(W__\xFD[a\x1C\x7F\x82a%\x05V[____\x84\x86\x03a\x01 \x81\x12\x15a%FW__\xFD[a%P\x87\x87a\"\x01V[\x94P`\x80`_\x19\x82\x01\x12\x15a%cW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x86Wa%\x86a!~V[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xC0`\xE0\x86\x01a%\x05V[\x91Pa%\xCFa\x01\0\x86\x01a\x1F2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a& W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&xWa&xa&/V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xFAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\x82V[a&\xB6\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa(\x8D`@\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\x01Ra*ea\x05\0\x83\x01\x85a&\x7FV[a*sa\x05\xE0\x83\x01\x84a&\xA1V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\x8BW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x7FW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xDAWa*\xDAa&/V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xF3W__\xFD[PQ\x91\x90PV[_\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",
3737    );
3738    #[derive(serde::Serialize, serde::Deserialize)]
3739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3740    /**```solidity
3741struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
3742```*/
3743    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3744    #[derive(Clone)]
3745    pub struct LightClientState {
3746        #[allow(missing_docs)]
3747        pub viewNum: u64,
3748        #[allow(missing_docs)]
3749        pub blockHeight: u64,
3750        #[allow(missing_docs)]
3751        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3752    }
3753    #[allow(
3754        non_camel_case_types,
3755        non_snake_case,
3756        clippy::pub_underscore_fields,
3757        clippy::style
3758    )]
3759    const _: () = {
3760        use alloy::sol_types as alloy_sol_types;
3761        #[doc(hidden)]
3762        #[allow(dead_code)]
3763        type UnderlyingSolTuple<'a> = (
3764            alloy::sol_types::sol_data::Uint<64>,
3765            alloy::sol_types::sol_data::Uint<64>,
3766            BN254::ScalarField,
3767        );
3768        #[doc(hidden)]
3769        type UnderlyingRustTuple<'a> = (
3770            u64,
3771            u64,
3772            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3773        );
3774        #[cfg(test)]
3775        #[allow(dead_code, unreachable_patterns)]
3776        fn _type_assertion(
3777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3778        ) {
3779            match _t {
3780                alloy_sol_types::private::AssertTypeEq::<
3781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3782                >(_) => {}
3783            }
3784        }
3785        #[automatically_derived]
3786        #[doc(hidden)]
3787        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
3788            fn from(value: LightClientState) -> Self {
3789                (value.viewNum, value.blockHeight, value.blockCommRoot)
3790            }
3791        }
3792        #[automatically_derived]
3793        #[doc(hidden)]
3794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
3795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3796                Self {
3797                    viewNum: tuple.0,
3798                    blockHeight: tuple.1,
3799                    blockCommRoot: tuple.2,
3800                }
3801            }
3802        }
3803        #[automatically_derived]
3804        impl alloy_sol_types::SolValue for LightClientState {
3805            type SolType = Self;
3806        }
3807        #[automatically_derived]
3808        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
3809            #[inline]
3810            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3811                (
3812                    <alloy::sol_types::sol_data::Uint<
3813                        64,
3814                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
3815                    <alloy::sol_types::sol_data::Uint<
3816                        64,
3817                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
3818                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
3819                        &self.blockCommRoot,
3820                    ),
3821                )
3822            }
3823            #[inline]
3824            fn stv_abi_encoded_size(&self) -> usize {
3825                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3826                    return size;
3827                }
3828                let tuple = <UnderlyingRustTuple<
3829                    '_,
3830                > as ::core::convert::From<Self>>::from(self.clone());
3831                <UnderlyingSolTuple<
3832                    '_,
3833                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3834            }
3835            #[inline]
3836            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3837                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3838            }
3839            #[inline]
3840            fn stv_abi_encode_packed_to(
3841                &self,
3842                out: &mut alloy_sol_types::private::Vec<u8>,
3843            ) {
3844                let tuple = <UnderlyingRustTuple<
3845                    '_,
3846                > as ::core::convert::From<Self>>::from(self.clone());
3847                <UnderlyingSolTuple<
3848                    '_,
3849                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3850            }
3851            #[inline]
3852            fn stv_abi_packed_encoded_size(&self) -> usize {
3853                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3854                    return size;
3855                }
3856                let tuple = <UnderlyingRustTuple<
3857                    '_,
3858                > as ::core::convert::From<Self>>::from(self.clone());
3859                <UnderlyingSolTuple<
3860                    '_,
3861                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3862            }
3863        }
3864        #[automatically_derived]
3865        impl alloy_sol_types::SolType for LightClientState {
3866            type RustType = Self;
3867            type Token<'a> = <UnderlyingSolTuple<
3868                'a,
3869            > as alloy_sol_types::SolType>::Token<'a>;
3870            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3871            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3872                '_,
3873            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3874            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3875                '_,
3876            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3877            #[inline]
3878            fn valid_token(token: &Self::Token<'_>) -> bool {
3879                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3880            }
3881            #[inline]
3882            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3883                let tuple = <UnderlyingSolTuple<
3884                    '_,
3885                > as alloy_sol_types::SolType>::detokenize(token);
3886                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3887            }
3888        }
3889        #[automatically_derived]
3890        impl alloy_sol_types::SolStruct for LightClientState {
3891            const NAME: &'static str = "LightClientState";
3892            #[inline]
3893            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3894                alloy_sol_types::private::Cow::Borrowed(
3895                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
3896                )
3897            }
3898            #[inline]
3899            fn eip712_components() -> alloy_sol_types::private::Vec<
3900                alloy_sol_types::private::Cow<'static, str>,
3901            > {
3902                alloy_sol_types::private::Vec::new()
3903            }
3904            #[inline]
3905            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3906                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3907            }
3908            #[inline]
3909            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3910                [
3911                    <alloy::sol_types::sol_data::Uint<
3912                        64,
3913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
3914                        .0,
3915                    <alloy::sol_types::sol_data::Uint<
3916                        64,
3917                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
3918                        .0,
3919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3920                            &self.blockCommRoot,
3921                        )
3922                        .0,
3923                ]
3924                    .concat()
3925            }
3926        }
3927        #[automatically_derived]
3928        impl alloy_sol_types::EventTopic for LightClientState {
3929            #[inline]
3930            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3931                0usize
3932                    + <alloy::sol_types::sol_data::Uint<
3933                        64,
3934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3935                        &rust.viewNum,
3936                    )
3937                    + <alloy::sol_types::sol_data::Uint<
3938                        64,
3939                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3940                        &rust.blockHeight,
3941                    )
3942                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3943                        &rust.blockCommRoot,
3944                    )
3945            }
3946            #[inline]
3947            fn encode_topic_preimage(
3948                rust: &Self::RustType,
3949                out: &mut alloy_sol_types::private::Vec<u8>,
3950            ) {
3951                out.reserve(
3952                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3953                );
3954                <alloy::sol_types::sol_data::Uint<
3955                    64,
3956                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3957                    &rust.viewNum,
3958                    out,
3959                );
3960                <alloy::sol_types::sol_data::Uint<
3961                    64,
3962                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3963                    &rust.blockHeight,
3964                    out,
3965                );
3966                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3967                    &rust.blockCommRoot,
3968                    out,
3969                );
3970            }
3971            #[inline]
3972            fn encode_topic(
3973                rust: &Self::RustType,
3974            ) -> alloy_sol_types::abi::token::WordToken {
3975                let mut out = alloy_sol_types::private::Vec::new();
3976                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3977                    rust,
3978                    &mut out,
3979                );
3980                alloy_sol_types::abi::token::WordToken(
3981                    alloy_sol_types::private::keccak256(out),
3982                )
3983            }
3984        }
3985    };
3986    #[derive(serde::Serialize, serde::Deserialize)]
3987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3988    /**```solidity
3989struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
3990```*/
3991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3992    #[derive(Clone)]
3993    pub struct StakeTableState {
3994        #[allow(missing_docs)]
3995        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
3996        #[allow(missing_docs)]
3997        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3998        #[allow(missing_docs)]
3999        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4000        #[allow(missing_docs)]
4001        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4002    }
4003    #[allow(
4004        non_camel_case_types,
4005        non_snake_case,
4006        clippy::pub_underscore_fields,
4007        clippy::style
4008    )]
4009    const _: () = {
4010        use alloy::sol_types as alloy_sol_types;
4011        #[doc(hidden)]
4012        #[allow(dead_code)]
4013        type UnderlyingSolTuple<'a> = (
4014            alloy::sol_types::sol_data::Uint<256>,
4015            BN254::ScalarField,
4016            BN254::ScalarField,
4017            BN254::ScalarField,
4018        );
4019        #[doc(hidden)]
4020        type UnderlyingRustTuple<'a> = (
4021            alloy::sol_types::private::primitives::aliases::U256,
4022            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4023            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4024            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4025        );
4026        #[cfg(test)]
4027        #[allow(dead_code, unreachable_patterns)]
4028        fn _type_assertion(
4029            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4030        ) {
4031            match _t {
4032                alloy_sol_types::private::AssertTypeEq::<
4033                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4034                >(_) => {}
4035            }
4036        }
4037        #[automatically_derived]
4038        #[doc(hidden)]
4039        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
4040            fn from(value: StakeTableState) -> Self {
4041                (
4042                    value.threshold,
4043                    value.blsKeyComm,
4044                    value.schnorrKeyComm,
4045                    value.amountComm,
4046                )
4047            }
4048        }
4049        #[automatically_derived]
4050        #[doc(hidden)]
4051        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
4052            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4053                Self {
4054                    threshold: tuple.0,
4055                    blsKeyComm: tuple.1,
4056                    schnorrKeyComm: tuple.2,
4057                    amountComm: tuple.3,
4058                }
4059            }
4060        }
4061        #[automatically_derived]
4062        impl alloy_sol_types::SolValue for StakeTableState {
4063            type SolType = Self;
4064        }
4065        #[automatically_derived]
4066        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
4067            #[inline]
4068            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
4069                (
4070                    <alloy::sol_types::sol_data::Uint<
4071                        256,
4072                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
4073                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4074                        &self.blsKeyComm,
4075                    ),
4076                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4077                        &self.schnorrKeyComm,
4078                    ),
4079                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4080                        &self.amountComm,
4081                    ),
4082                )
4083            }
4084            #[inline]
4085            fn stv_abi_encoded_size(&self) -> usize {
4086                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
4087                    return size;
4088                }
4089                let tuple = <UnderlyingRustTuple<
4090                    '_,
4091                > as ::core::convert::From<Self>>::from(self.clone());
4092                <UnderlyingSolTuple<
4093                    '_,
4094                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
4095            }
4096            #[inline]
4097            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
4098                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
4099            }
4100            #[inline]
4101            fn stv_abi_encode_packed_to(
4102                &self,
4103                out: &mut alloy_sol_types::private::Vec<u8>,
4104            ) {
4105                let tuple = <UnderlyingRustTuple<
4106                    '_,
4107                > as ::core::convert::From<Self>>::from(self.clone());
4108                <UnderlyingSolTuple<
4109                    '_,
4110                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
4111            }
4112            #[inline]
4113            fn stv_abi_packed_encoded_size(&self) -> usize {
4114                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
4115                    return size;
4116                }
4117                let tuple = <UnderlyingRustTuple<
4118                    '_,
4119                > as ::core::convert::From<Self>>::from(self.clone());
4120                <UnderlyingSolTuple<
4121                    '_,
4122                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
4123            }
4124        }
4125        #[automatically_derived]
4126        impl alloy_sol_types::SolType for StakeTableState {
4127            type RustType = Self;
4128            type Token<'a> = <UnderlyingSolTuple<
4129                'a,
4130            > as alloy_sol_types::SolType>::Token<'a>;
4131            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
4132            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4133                '_,
4134            > as alloy_sol_types::SolType>::ENCODED_SIZE;
4135            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4136                '_,
4137            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
4138            #[inline]
4139            fn valid_token(token: &Self::Token<'_>) -> bool {
4140                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
4141            }
4142            #[inline]
4143            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
4144                let tuple = <UnderlyingSolTuple<
4145                    '_,
4146                > as alloy_sol_types::SolType>::detokenize(token);
4147                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
4148            }
4149        }
4150        #[automatically_derived]
4151        impl alloy_sol_types::SolStruct for StakeTableState {
4152            const NAME: &'static str = "StakeTableState";
4153            #[inline]
4154            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
4155                alloy_sol_types::private::Cow::Borrowed(
4156                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
4157                )
4158            }
4159            #[inline]
4160            fn eip712_components() -> alloy_sol_types::private::Vec<
4161                alloy_sol_types::private::Cow<'static, str>,
4162            > {
4163                alloy_sol_types::private::Vec::new()
4164            }
4165            #[inline]
4166            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
4167                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
4168            }
4169            #[inline]
4170            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
4171                [
4172                    <alloy::sol_types::sol_data::Uint<
4173                        256,
4174                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
4175                        .0,
4176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4177                            &self.blsKeyComm,
4178                        )
4179                        .0,
4180                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4181                            &self.schnorrKeyComm,
4182                        )
4183                        .0,
4184                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4185                            &self.amountComm,
4186                        )
4187                        .0,
4188                ]
4189                    .concat()
4190            }
4191        }
4192        #[automatically_derived]
4193        impl alloy_sol_types::EventTopic for StakeTableState {
4194            #[inline]
4195            fn topic_preimage_length(rust: &Self::RustType) -> usize {
4196                0usize
4197                    + <alloy::sol_types::sol_data::Uint<
4198                        256,
4199                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4200                        &rust.threshold,
4201                    )
4202                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4203                        &rust.blsKeyComm,
4204                    )
4205                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4206                        &rust.schnorrKeyComm,
4207                    )
4208                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4209                        &rust.amountComm,
4210                    )
4211            }
4212            #[inline]
4213            fn encode_topic_preimage(
4214                rust: &Self::RustType,
4215                out: &mut alloy_sol_types::private::Vec<u8>,
4216            ) {
4217                out.reserve(
4218                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4219                );
4220                <alloy::sol_types::sol_data::Uint<
4221                    256,
4222                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4223                    &rust.threshold,
4224                    out,
4225                );
4226                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4227                    &rust.blsKeyComm,
4228                    out,
4229                );
4230                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4231                    &rust.schnorrKeyComm,
4232                    out,
4233                );
4234                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4235                    &rust.amountComm,
4236                    out,
4237                );
4238            }
4239            #[inline]
4240            fn encode_topic(
4241                rust: &Self::RustType,
4242            ) -> alloy_sol_types::abi::token::WordToken {
4243                let mut out = alloy_sol_types::private::Vec::new();
4244                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4245                    rust,
4246                    &mut out,
4247                );
4248                alloy_sol_types::abi::token::WordToken(
4249                    alloy_sol_types::private::keccak256(out),
4250                )
4251            }
4252        }
4253    };
4254    #[derive(serde::Serialize, serde::Deserialize)]
4255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4256    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4257```solidity
4258error AddressEmptyCode(address target);
4259```*/
4260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4261    #[derive(Clone)]
4262    pub struct AddressEmptyCode {
4263        #[allow(missing_docs)]
4264        pub target: alloy::sol_types::private::Address,
4265    }
4266    #[allow(
4267        non_camel_case_types,
4268        non_snake_case,
4269        clippy::pub_underscore_fields,
4270        clippy::style
4271    )]
4272    const _: () = {
4273        use alloy::sol_types as alloy_sol_types;
4274        #[doc(hidden)]
4275        #[allow(dead_code)]
4276        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4277        #[doc(hidden)]
4278        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4279        #[cfg(test)]
4280        #[allow(dead_code, unreachable_patterns)]
4281        fn _type_assertion(
4282            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4283        ) {
4284            match _t {
4285                alloy_sol_types::private::AssertTypeEq::<
4286                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4287                >(_) => {}
4288            }
4289        }
4290        #[automatically_derived]
4291        #[doc(hidden)]
4292        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4293            fn from(value: AddressEmptyCode) -> Self {
4294                (value.target,)
4295            }
4296        }
4297        #[automatically_derived]
4298        #[doc(hidden)]
4299        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4300            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4301                Self { target: tuple.0 }
4302            }
4303        }
4304        #[automatically_derived]
4305        impl alloy_sol_types::SolError for AddressEmptyCode {
4306            type Parameters<'a> = UnderlyingSolTuple<'a>;
4307            type Token<'a> = <Self::Parameters<
4308                'a,
4309            > as alloy_sol_types::SolType>::Token<'a>;
4310            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4311            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4312            #[inline]
4313            fn new<'a>(
4314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4315            ) -> Self {
4316                tuple.into()
4317            }
4318            #[inline]
4319            fn tokenize(&self) -> Self::Token<'_> {
4320                (
4321                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4322                        &self.target,
4323                    ),
4324                )
4325            }
4326            #[inline]
4327            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4328                <Self::Parameters<
4329                    '_,
4330                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4331                    .map(Self::new)
4332            }
4333        }
4334    };
4335    #[derive(serde::Serialize, serde::Deserialize)]
4336    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4337    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4338```solidity
4339error ERC1967InvalidImplementation(address implementation);
4340```*/
4341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4342    #[derive(Clone)]
4343    pub struct ERC1967InvalidImplementation {
4344        #[allow(missing_docs)]
4345        pub implementation: alloy::sol_types::private::Address,
4346    }
4347    #[allow(
4348        non_camel_case_types,
4349        non_snake_case,
4350        clippy::pub_underscore_fields,
4351        clippy::style
4352    )]
4353    const _: () = {
4354        use alloy::sol_types as alloy_sol_types;
4355        #[doc(hidden)]
4356        #[allow(dead_code)]
4357        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4358        #[doc(hidden)]
4359        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4360        #[cfg(test)]
4361        #[allow(dead_code, unreachable_patterns)]
4362        fn _type_assertion(
4363            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4364        ) {
4365            match _t {
4366                alloy_sol_types::private::AssertTypeEq::<
4367                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4368                >(_) => {}
4369            }
4370        }
4371        #[automatically_derived]
4372        #[doc(hidden)]
4373        impl ::core::convert::From<ERC1967InvalidImplementation>
4374        for UnderlyingRustTuple<'_> {
4375            fn from(value: ERC1967InvalidImplementation) -> Self {
4376                (value.implementation,)
4377            }
4378        }
4379        #[automatically_derived]
4380        #[doc(hidden)]
4381        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4382        for ERC1967InvalidImplementation {
4383            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4384                Self { implementation: tuple.0 }
4385            }
4386        }
4387        #[automatically_derived]
4388        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4389            type Parameters<'a> = UnderlyingSolTuple<'a>;
4390            type Token<'a> = <Self::Parameters<
4391                'a,
4392            > as alloy_sol_types::SolType>::Token<'a>;
4393            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4394            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4395            #[inline]
4396            fn new<'a>(
4397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4398            ) -> Self {
4399                tuple.into()
4400            }
4401            #[inline]
4402            fn tokenize(&self) -> Self::Token<'_> {
4403                (
4404                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4405                        &self.implementation,
4406                    ),
4407                )
4408            }
4409            #[inline]
4410            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4411                <Self::Parameters<
4412                    '_,
4413                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4414                    .map(Self::new)
4415            }
4416        }
4417    };
4418    #[derive(serde::Serialize, serde::Deserialize)]
4419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4420    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4421```solidity
4422error ERC1967NonPayable();
4423```*/
4424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4425    #[derive(Clone)]
4426    pub struct ERC1967NonPayable;
4427    #[allow(
4428        non_camel_case_types,
4429        non_snake_case,
4430        clippy::pub_underscore_fields,
4431        clippy::style
4432    )]
4433    const _: () = {
4434        use alloy::sol_types as alloy_sol_types;
4435        #[doc(hidden)]
4436        #[allow(dead_code)]
4437        type UnderlyingSolTuple<'a> = ();
4438        #[doc(hidden)]
4439        type UnderlyingRustTuple<'a> = ();
4440        #[cfg(test)]
4441        #[allow(dead_code, unreachable_patterns)]
4442        fn _type_assertion(
4443            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4444        ) {
4445            match _t {
4446                alloy_sol_types::private::AssertTypeEq::<
4447                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4448                >(_) => {}
4449            }
4450        }
4451        #[automatically_derived]
4452        #[doc(hidden)]
4453        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4454            fn from(value: ERC1967NonPayable) -> Self {
4455                ()
4456            }
4457        }
4458        #[automatically_derived]
4459        #[doc(hidden)]
4460        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4461            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4462                Self
4463            }
4464        }
4465        #[automatically_derived]
4466        impl alloy_sol_types::SolError for ERC1967NonPayable {
4467            type Parameters<'a> = UnderlyingSolTuple<'a>;
4468            type Token<'a> = <Self::Parameters<
4469                'a,
4470            > as alloy_sol_types::SolType>::Token<'a>;
4471            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4472            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4473            #[inline]
4474            fn new<'a>(
4475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4476            ) -> Self {
4477                tuple.into()
4478            }
4479            #[inline]
4480            fn tokenize(&self) -> Self::Token<'_> {
4481                ()
4482            }
4483            #[inline]
4484            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4485                <Self::Parameters<
4486                    '_,
4487                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4488                    .map(Self::new)
4489            }
4490        }
4491    };
4492    #[derive(serde::Serialize, serde::Deserialize)]
4493    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4494    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4495```solidity
4496error FailedInnerCall();
4497```*/
4498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4499    #[derive(Clone)]
4500    pub struct FailedInnerCall;
4501    #[allow(
4502        non_camel_case_types,
4503        non_snake_case,
4504        clippy::pub_underscore_fields,
4505        clippy::style
4506    )]
4507    const _: () = {
4508        use alloy::sol_types as alloy_sol_types;
4509        #[doc(hidden)]
4510        #[allow(dead_code)]
4511        type UnderlyingSolTuple<'a> = ();
4512        #[doc(hidden)]
4513        type UnderlyingRustTuple<'a> = ();
4514        #[cfg(test)]
4515        #[allow(dead_code, unreachable_patterns)]
4516        fn _type_assertion(
4517            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4518        ) {
4519            match _t {
4520                alloy_sol_types::private::AssertTypeEq::<
4521                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4522                >(_) => {}
4523            }
4524        }
4525        #[automatically_derived]
4526        #[doc(hidden)]
4527        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4528            fn from(value: FailedInnerCall) -> Self {
4529                ()
4530            }
4531        }
4532        #[automatically_derived]
4533        #[doc(hidden)]
4534        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4535            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4536                Self
4537            }
4538        }
4539        #[automatically_derived]
4540        impl alloy_sol_types::SolError for FailedInnerCall {
4541            type Parameters<'a> = UnderlyingSolTuple<'a>;
4542            type Token<'a> = <Self::Parameters<
4543                'a,
4544            > as alloy_sol_types::SolType>::Token<'a>;
4545            const SIGNATURE: &'static str = "FailedInnerCall()";
4546            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4547            #[inline]
4548            fn new<'a>(
4549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4550            ) -> Self {
4551                tuple.into()
4552            }
4553            #[inline]
4554            fn tokenize(&self) -> Self::Token<'_> {
4555                ()
4556            }
4557            #[inline]
4558            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4559                <Self::Parameters<
4560                    '_,
4561                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4562                    .map(Self::new)
4563            }
4564        }
4565    };
4566    #[derive(serde::Serialize, serde::Deserialize)]
4567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4568    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4569```solidity
4570error InsufficientSnapshotHistory();
4571```*/
4572    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4573    #[derive(Clone)]
4574    pub struct InsufficientSnapshotHistory;
4575    #[allow(
4576        non_camel_case_types,
4577        non_snake_case,
4578        clippy::pub_underscore_fields,
4579        clippy::style
4580    )]
4581    const _: () = {
4582        use alloy::sol_types as alloy_sol_types;
4583        #[doc(hidden)]
4584        #[allow(dead_code)]
4585        type UnderlyingSolTuple<'a> = ();
4586        #[doc(hidden)]
4587        type UnderlyingRustTuple<'a> = ();
4588        #[cfg(test)]
4589        #[allow(dead_code, unreachable_patterns)]
4590        fn _type_assertion(
4591            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4592        ) {
4593            match _t {
4594                alloy_sol_types::private::AssertTypeEq::<
4595                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4596                >(_) => {}
4597            }
4598        }
4599        #[automatically_derived]
4600        #[doc(hidden)]
4601        impl ::core::convert::From<InsufficientSnapshotHistory>
4602        for UnderlyingRustTuple<'_> {
4603            fn from(value: InsufficientSnapshotHistory) -> Self {
4604                ()
4605            }
4606        }
4607        #[automatically_derived]
4608        #[doc(hidden)]
4609        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4610        for InsufficientSnapshotHistory {
4611            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4612                Self
4613            }
4614        }
4615        #[automatically_derived]
4616        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4617            type Parameters<'a> = UnderlyingSolTuple<'a>;
4618            type Token<'a> = <Self::Parameters<
4619                'a,
4620            > as alloy_sol_types::SolType>::Token<'a>;
4621            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4622            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4623            #[inline]
4624            fn new<'a>(
4625                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4626            ) -> Self {
4627                tuple.into()
4628            }
4629            #[inline]
4630            fn tokenize(&self) -> Self::Token<'_> {
4631                ()
4632            }
4633            #[inline]
4634            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4635                <Self::Parameters<
4636                    '_,
4637                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4638                    .map(Self::new)
4639            }
4640        }
4641    };
4642    #[derive(serde::Serialize, serde::Deserialize)]
4643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4644    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4645```solidity
4646error InvalidAddress();
4647```*/
4648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4649    #[derive(Clone)]
4650    pub struct InvalidAddress;
4651    #[allow(
4652        non_camel_case_types,
4653        non_snake_case,
4654        clippy::pub_underscore_fields,
4655        clippy::style
4656    )]
4657    const _: () = {
4658        use alloy::sol_types as alloy_sol_types;
4659        #[doc(hidden)]
4660        #[allow(dead_code)]
4661        type UnderlyingSolTuple<'a> = ();
4662        #[doc(hidden)]
4663        type UnderlyingRustTuple<'a> = ();
4664        #[cfg(test)]
4665        #[allow(dead_code, unreachable_patterns)]
4666        fn _type_assertion(
4667            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4668        ) {
4669            match _t {
4670                alloy_sol_types::private::AssertTypeEq::<
4671                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4672                >(_) => {}
4673            }
4674        }
4675        #[automatically_derived]
4676        #[doc(hidden)]
4677        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4678            fn from(value: InvalidAddress) -> Self {
4679                ()
4680            }
4681        }
4682        #[automatically_derived]
4683        #[doc(hidden)]
4684        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4685            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4686                Self
4687            }
4688        }
4689        #[automatically_derived]
4690        impl alloy_sol_types::SolError for InvalidAddress {
4691            type Parameters<'a> = UnderlyingSolTuple<'a>;
4692            type Token<'a> = <Self::Parameters<
4693                'a,
4694            > as alloy_sol_types::SolType>::Token<'a>;
4695            const SIGNATURE: &'static str = "InvalidAddress()";
4696            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4697            #[inline]
4698            fn new<'a>(
4699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4700            ) -> Self {
4701                tuple.into()
4702            }
4703            #[inline]
4704            fn tokenize(&self) -> Self::Token<'_> {
4705                ()
4706            }
4707            #[inline]
4708            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4709                <Self::Parameters<
4710                    '_,
4711                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4712                    .map(Self::new)
4713            }
4714        }
4715    };
4716    #[derive(serde::Serialize, serde::Deserialize)]
4717    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4718    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4719```solidity
4720error InvalidArgs();
4721```*/
4722    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4723    #[derive(Clone)]
4724    pub struct InvalidArgs;
4725    #[allow(
4726        non_camel_case_types,
4727        non_snake_case,
4728        clippy::pub_underscore_fields,
4729        clippy::style
4730    )]
4731    const _: () = {
4732        use alloy::sol_types as alloy_sol_types;
4733        #[doc(hidden)]
4734        #[allow(dead_code)]
4735        type UnderlyingSolTuple<'a> = ();
4736        #[doc(hidden)]
4737        type UnderlyingRustTuple<'a> = ();
4738        #[cfg(test)]
4739        #[allow(dead_code, unreachable_patterns)]
4740        fn _type_assertion(
4741            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4742        ) {
4743            match _t {
4744                alloy_sol_types::private::AssertTypeEq::<
4745                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4746                >(_) => {}
4747            }
4748        }
4749        #[automatically_derived]
4750        #[doc(hidden)]
4751        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4752            fn from(value: InvalidArgs) -> Self {
4753                ()
4754            }
4755        }
4756        #[automatically_derived]
4757        #[doc(hidden)]
4758        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4759            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4760                Self
4761            }
4762        }
4763        #[automatically_derived]
4764        impl alloy_sol_types::SolError for InvalidArgs {
4765            type Parameters<'a> = UnderlyingSolTuple<'a>;
4766            type Token<'a> = <Self::Parameters<
4767                'a,
4768            > as alloy_sol_types::SolType>::Token<'a>;
4769            const SIGNATURE: &'static str = "InvalidArgs()";
4770            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4771            #[inline]
4772            fn new<'a>(
4773                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4774            ) -> Self {
4775                tuple.into()
4776            }
4777            #[inline]
4778            fn tokenize(&self) -> Self::Token<'_> {
4779                ()
4780            }
4781            #[inline]
4782            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4783                <Self::Parameters<
4784                    '_,
4785                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4786                    .map(Self::new)
4787            }
4788        }
4789    };
4790    #[derive(serde::Serialize, serde::Deserialize)]
4791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4792    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4793```solidity
4794error InvalidHotShotBlockForCommitmentCheck();
4795```*/
4796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4797    #[derive(Clone)]
4798    pub struct InvalidHotShotBlockForCommitmentCheck;
4799    #[allow(
4800        non_camel_case_types,
4801        non_snake_case,
4802        clippy::pub_underscore_fields,
4803        clippy::style
4804    )]
4805    const _: () = {
4806        use alloy::sol_types as alloy_sol_types;
4807        #[doc(hidden)]
4808        #[allow(dead_code)]
4809        type UnderlyingSolTuple<'a> = ();
4810        #[doc(hidden)]
4811        type UnderlyingRustTuple<'a> = ();
4812        #[cfg(test)]
4813        #[allow(dead_code, unreachable_patterns)]
4814        fn _type_assertion(
4815            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4816        ) {
4817            match _t {
4818                alloy_sol_types::private::AssertTypeEq::<
4819                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4820                >(_) => {}
4821            }
4822        }
4823        #[automatically_derived]
4824        #[doc(hidden)]
4825        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4826        for UnderlyingRustTuple<'_> {
4827            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4828                ()
4829            }
4830        }
4831        #[automatically_derived]
4832        #[doc(hidden)]
4833        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4834        for InvalidHotShotBlockForCommitmentCheck {
4835            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4836                Self
4837            }
4838        }
4839        #[automatically_derived]
4840        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4841            type Parameters<'a> = UnderlyingSolTuple<'a>;
4842            type Token<'a> = <Self::Parameters<
4843                'a,
4844            > as alloy_sol_types::SolType>::Token<'a>;
4845            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4846            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4847            #[inline]
4848            fn new<'a>(
4849                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4850            ) -> Self {
4851                tuple.into()
4852            }
4853            #[inline]
4854            fn tokenize(&self) -> Self::Token<'_> {
4855                ()
4856            }
4857            #[inline]
4858            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4859                <Self::Parameters<
4860                    '_,
4861                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4862                    .map(Self::new)
4863            }
4864        }
4865    };
4866    #[derive(serde::Serialize, serde::Deserialize)]
4867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4868    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4869```solidity
4870error InvalidInitialization();
4871```*/
4872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4873    #[derive(Clone)]
4874    pub struct InvalidInitialization;
4875    #[allow(
4876        non_camel_case_types,
4877        non_snake_case,
4878        clippy::pub_underscore_fields,
4879        clippy::style
4880    )]
4881    const _: () = {
4882        use alloy::sol_types as alloy_sol_types;
4883        #[doc(hidden)]
4884        #[allow(dead_code)]
4885        type UnderlyingSolTuple<'a> = ();
4886        #[doc(hidden)]
4887        type UnderlyingRustTuple<'a> = ();
4888        #[cfg(test)]
4889        #[allow(dead_code, unreachable_patterns)]
4890        fn _type_assertion(
4891            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4892        ) {
4893            match _t {
4894                alloy_sol_types::private::AssertTypeEq::<
4895                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4896                >(_) => {}
4897            }
4898        }
4899        #[automatically_derived]
4900        #[doc(hidden)]
4901        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4902            fn from(value: InvalidInitialization) -> Self {
4903                ()
4904            }
4905        }
4906        #[automatically_derived]
4907        #[doc(hidden)]
4908        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4909            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4910                Self
4911            }
4912        }
4913        #[automatically_derived]
4914        impl alloy_sol_types::SolError for InvalidInitialization {
4915            type Parameters<'a> = UnderlyingSolTuple<'a>;
4916            type Token<'a> = <Self::Parameters<
4917                'a,
4918            > as alloy_sol_types::SolType>::Token<'a>;
4919            const SIGNATURE: &'static str = "InvalidInitialization()";
4920            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4921            #[inline]
4922            fn new<'a>(
4923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4924            ) -> Self {
4925                tuple.into()
4926            }
4927            #[inline]
4928            fn tokenize(&self) -> Self::Token<'_> {
4929                ()
4930            }
4931            #[inline]
4932            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4933                <Self::Parameters<
4934                    '_,
4935                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4936                    .map(Self::new)
4937            }
4938        }
4939    };
4940    #[derive(serde::Serialize, serde::Deserialize)]
4941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4942    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4943```solidity
4944error InvalidMaxStateHistory();
4945```*/
4946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4947    #[derive(Clone)]
4948    pub struct InvalidMaxStateHistory;
4949    #[allow(
4950        non_camel_case_types,
4951        non_snake_case,
4952        clippy::pub_underscore_fields,
4953        clippy::style
4954    )]
4955    const _: () = {
4956        use alloy::sol_types as alloy_sol_types;
4957        #[doc(hidden)]
4958        #[allow(dead_code)]
4959        type UnderlyingSolTuple<'a> = ();
4960        #[doc(hidden)]
4961        type UnderlyingRustTuple<'a> = ();
4962        #[cfg(test)]
4963        #[allow(dead_code, unreachable_patterns)]
4964        fn _type_assertion(
4965            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4966        ) {
4967            match _t {
4968                alloy_sol_types::private::AssertTypeEq::<
4969                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4970                >(_) => {}
4971            }
4972        }
4973        #[automatically_derived]
4974        #[doc(hidden)]
4975        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4976            fn from(value: InvalidMaxStateHistory) -> Self {
4977                ()
4978            }
4979        }
4980        #[automatically_derived]
4981        #[doc(hidden)]
4982        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4983            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4984                Self
4985            }
4986        }
4987        #[automatically_derived]
4988        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4989            type Parameters<'a> = UnderlyingSolTuple<'a>;
4990            type Token<'a> = <Self::Parameters<
4991                'a,
4992            > as alloy_sol_types::SolType>::Token<'a>;
4993            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4994            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4995            #[inline]
4996            fn new<'a>(
4997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4998            ) -> Self {
4999                tuple.into()
5000            }
5001            #[inline]
5002            fn tokenize(&self) -> Self::Token<'_> {
5003                ()
5004            }
5005            #[inline]
5006            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5007                <Self::Parameters<
5008                    '_,
5009                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5010                    .map(Self::new)
5011            }
5012        }
5013    };
5014    #[derive(serde::Serialize, serde::Deserialize)]
5015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5016    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5017```solidity
5018error InvalidProof();
5019```*/
5020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5021    #[derive(Clone)]
5022    pub struct InvalidProof;
5023    #[allow(
5024        non_camel_case_types,
5025        non_snake_case,
5026        clippy::pub_underscore_fields,
5027        clippy::style
5028    )]
5029    const _: () = {
5030        use alloy::sol_types as alloy_sol_types;
5031        #[doc(hidden)]
5032        #[allow(dead_code)]
5033        type UnderlyingSolTuple<'a> = ();
5034        #[doc(hidden)]
5035        type UnderlyingRustTuple<'a> = ();
5036        #[cfg(test)]
5037        #[allow(dead_code, unreachable_patterns)]
5038        fn _type_assertion(
5039            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5040        ) {
5041            match _t {
5042                alloy_sol_types::private::AssertTypeEq::<
5043                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5044                >(_) => {}
5045            }
5046        }
5047        #[automatically_derived]
5048        #[doc(hidden)]
5049        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5050            fn from(value: InvalidProof) -> Self {
5051                ()
5052            }
5053        }
5054        #[automatically_derived]
5055        #[doc(hidden)]
5056        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5057            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5058                Self
5059            }
5060        }
5061        #[automatically_derived]
5062        impl alloy_sol_types::SolError for InvalidProof {
5063            type Parameters<'a> = UnderlyingSolTuple<'a>;
5064            type Token<'a> = <Self::Parameters<
5065                'a,
5066            > as alloy_sol_types::SolType>::Token<'a>;
5067            const SIGNATURE: &'static str = "InvalidProof()";
5068            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5069            #[inline]
5070            fn new<'a>(
5071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5072            ) -> Self {
5073                tuple.into()
5074            }
5075            #[inline]
5076            fn tokenize(&self) -> Self::Token<'_> {
5077                ()
5078            }
5079            #[inline]
5080            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5081                <Self::Parameters<
5082                    '_,
5083                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5084                    .map(Self::new)
5085            }
5086        }
5087    };
5088    #[derive(serde::Serialize, serde::Deserialize)]
5089    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5090    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5091```solidity
5092error InvalidScalar();
5093```*/
5094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5095    #[derive(Clone)]
5096    pub struct InvalidScalar;
5097    #[allow(
5098        non_camel_case_types,
5099        non_snake_case,
5100        clippy::pub_underscore_fields,
5101        clippy::style
5102    )]
5103    const _: () = {
5104        use alloy::sol_types as alloy_sol_types;
5105        #[doc(hidden)]
5106        #[allow(dead_code)]
5107        type UnderlyingSolTuple<'a> = ();
5108        #[doc(hidden)]
5109        type UnderlyingRustTuple<'a> = ();
5110        #[cfg(test)]
5111        #[allow(dead_code, unreachable_patterns)]
5112        fn _type_assertion(
5113            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5114        ) {
5115            match _t {
5116                alloy_sol_types::private::AssertTypeEq::<
5117                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5118                >(_) => {}
5119            }
5120        }
5121        #[automatically_derived]
5122        #[doc(hidden)]
5123        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5124            fn from(value: InvalidScalar) -> Self {
5125                ()
5126            }
5127        }
5128        #[automatically_derived]
5129        #[doc(hidden)]
5130        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5131            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5132                Self
5133            }
5134        }
5135        #[automatically_derived]
5136        impl alloy_sol_types::SolError for InvalidScalar {
5137            type Parameters<'a> = UnderlyingSolTuple<'a>;
5138            type Token<'a> = <Self::Parameters<
5139                'a,
5140            > as alloy_sol_types::SolType>::Token<'a>;
5141            const SIGNATURE: &'static str = "InvalidScalar()";
5142            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5143            #[inline]
5144            fn new<'a>(
5145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5146            ) -> Self {
5147                tuple.into()
5148            }
5149            #[inline]
5150            fn tokenize(&self) -> Self::Token<'_> {
5151                ()
5152            }
5153            #[inline]
5154            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5155                <Self::Parameters<
5156                    '_,
5157                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5158                    .map(Self::new)
5159            }
5160        }
5161    };
5162    #[derive(serde::Serialize, serde::Deserialize)]
5163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5164    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5165```solidity
5166error NoChangeRequired();
5167```*/
5168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5169    #[derive(Clone)]
5170    pub struct NoChangeRequired;
5171    #[allow(
5172        non_camel_case_types,
5173        non_snake_case,
5174        clippy::pub_underscore_fields,
5175        clippy::style
5176    )]
5177    const _: () = {
5178        use alloy::sol_types as alloy_sol_types;
5179        #[doc(hidden)]
5180        #[allow(dead_code)]
5181        type UnderlyingSolTuple<'a> = ();
5182        #[doc(hidden)]
5183        type UnderlyingRustTuple<'a> = ();
5184        #[cfg(test)]
5185        #[allow(dead_code, unreachable_patterns)]
5186        fn _type_assertion(
5187            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5188        ) {
5189            match _t {
5190                alloy_sol_types::private::AssertTypeEq::<
5191                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5192                >(_) => {}
5193            }
5194        }
5195        #[automatically_derived]
5196        #[doc(hidden)]
5197        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5198            fn from(value: NoChangeRequired) -> Self {
5199                ()
5200            }
5201        }
5202        #[automatically_derived]
5203        #[doc(hidden)]
5204        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5205            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5206                Self
5207            }
5208        }
5209        #[automatically_derived]
5210        impl alloy_sol_types::SolError for NoChangeRequired {
5211            type Parameters<'a> = UnderlyingSolTuple<'a>;
5212            type Token<'a> = <Self::Parameters<
5213                'a,
5214            > as alloy_sol_types::SolType>::Token<'a>;
5215            const SIGNATURE: &'static str = "NoChangeRequired()";
5216            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5217            #[inline]
5218            fn new<'a>(
5219                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5220            ) -> Self {
5221                tuple.into()
5222            }
5223            #[inline]
5224            fn tokenize(&self) -> Self::Token<'_> {
5225                ()
5226            }
5227            #[inline]
5228            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5229                <Self::Parameters<
5230                    '_,
5231                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5232                    .map(Self::new)
5233            }
5234        }
5235    };
5236    #[derive(serde::Serialize, serde::Deserialize)]
5237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5238    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5239```solidity
5240error NotInitializing();
5241```*/
5242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5243    #[derive(Clone)]
5244    pub struct NotInitializing;
5245    #[allow(
5246        non_camel_case_types,
5247        non_snake_case,
5248        clippy::pub_underscore_fields,
5249        clippy::style
5250    )]
5251    const _: () = {
5252        use alloy::sol_types as alloy_sol_types;
5253        #[doc(hidden)]
5254        #[allow(dead_code)]
5255        type UnderlyingSolTuple<'a> = ();
5256        #[doc(hidden)]
5257        type UnderlyingRustTuple<'a> = ();
5258        #[cfg(test)]
5259        #[allow(dead_code, unreachable_patterns)]
5260        fn _type_assertion(
5261            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5262        ) {
5263            match _t {
5264                alloy_sol_types::private::AssertTypeEq::<
5265                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5266                >(_) => {}
5267            }
5268        }
5269        #[automatically_derived]
5270        #[doc(hidden)]
5271        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5272            fn from(value: NotInitializing) -> Self {
5273                ()
5274            }
5275        }
5276        #[automatically_derived]
5277        #[doc(hidden)]
5278        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5279            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5280                Self
5281            }
5282        }
5283        #[automatically_derived]
5284        impl alloy_sol_types::SolError for NotInitializing {
5285            type Parameters<'a> = UnderlyingSolTuple<'a>;
5286            type Token<'a> = <Self::Parameters<
5287                'a,
5288            > as alloy_sol_types::SolType>::Token<'a>;
5289            const SIGNATURE: &'static str = "NotInitializing()";
5290            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5291            #[inline]
5292            fn new<'a>(
5293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5294            ) -> Self {
5295                tuple.into()
5296            }
5297            #[inline]
5298            fn tokenize(&self) -> Self::Token<'_> {
5299                ()
5300            }
5301            #[inline]
5302            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5303                <Self::Parameters<
5304                    '_,
5305                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5306                    .map(Self::new)
5307            }
5308        }
5309    };
5310    #[derive(serde::Serialize, serde::Deserialize)]
5311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5312    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5313```solidity
5314error OutdatedState();
5315```*/
5316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5317    #[derive(Clone)]
5318    pub struct OutdatedState;
5319    #[allow(
5320        non_camel_case_types,
5321        non_snake_case,
5322        clippy::pub_underscore_fields,
5323        clippy::style
5324    )]
5325    const _: () = {
5326        use alloy::sol_types as alloy_sol_types;
5327        #[doc(hidden)]
5328        #[allow(dead_code)]
5329        type UnderlyingSolTuple<'a> = ();
5330        #[doc(hidden)]
5331        type UnderlyingRustTuple<'a> = ();
5332        #[cfg(test)]
5333        #[allow(dead_code, unreachable_patterns)]
5334        fn _type_assertion(
5335            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5336        ) {
5337            match _t {
5338                alloy_sol_types::private::AssertTypeEq::<
5339                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5340                >(_) => {}
5341            }
5342        }
5343        #[automatically_derived]
5344        #[doc(hidden)]
5345        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5346            fn from(value: OutdatedState) -> Self {
5347                ()
5348            }
5349        }
5350        #[automatically_derived]
5351        #[doc(hidden)]
5352        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5353            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5354                Self
5355            }
5356        }
5357        #[automatically_derived]
5358        impl alloy_sol_types::SolError for OutdatedState {
5359            type Parameters<'a> = UnderlyingSolTuple<'a>;
5360            type Token<'a> = <Self::Parameters<
5361                'a,
5362            > as alloy_sol_types::SolType>::Token<'a>;
5363            const SIGNATURE: &'static str = "OutdatedState()";
5364            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5365            #[inline]
5366            fn new<'a>(
5367                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5368            ) -> Self {
5369                tuple.into()
5370            }
5371            #[inline]
5372            fn tokenize(&self) -> Self::Token<'_> {
5373                ()
5374            }
5375            #[inline]
5376            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5377                <Self::Parameters<
5378                    '_,
5379                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5380                    .map(Self::new)
5381            }
5382        }
5383    };
5384    #[derive(serde::Serialize, serde::Deserialize)]
5385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5386    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5387```solidity
5388error OwnableInvalidOwner(address owner);
5389```*/
5390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5391    #[derive(Clone)]
5392    pub struct OwnableInvalidOwner {
5393        #[allow(missing_docs)]
5394        pub owner: alloy::sol_types::private::Address,
5395    }
5396    #[allow(
5397        non_camel_case_types,
5398        non_snake_case,
5399        clippy::pub_underscore_fields,
5400        clippy::style
5401    )]
5402    const _: () = {
5403        use alloy::sol_types as alloy_sol_types;
5404        #[doc(hidden)]
5405        #[allow(dead_code)]
5406        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5407        #[doc(hidden)]
5408        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5409        #[cfg(test)]
5410        #[allow(dead_code, unreachable_patterns)]
5411        fn _type_assertion(
5412            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5413        ) {
5414            match _t {
5415                alloy_sol_types::private::AssertTypeEq::<
5416                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5417                >(_) => {}
5418            }
5419        }
5420        #[automatically_derived]
5421        #[doc(hidden)]
5422        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5423            fn from(value: OwnableInvalidOwner) -> Self {
5424                (value.owner,)
5425            }
5426        }
5427        #[automatically_derived]
5428        #[doc(hidden)]
5429        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5430            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5431                Self { owner: tuple.0 }
5432            }
5433        }
5434        #[automatically_derived]
5435        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5436            type Parameters<'a> = UnderlyingSolTuple<'a>;
5437            type Token<'a> = <Self::Parameters<
5438                'a,
5439            > as alloy_sol_types::SolType>::Token<'a>;
5440            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5441            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5442            #[inline]
5443            fn new<'a>(
5444                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5445            ) -> Self {
5446                tuple.into()
5447            }
5448            #[inline]
5449            fn tokenize(&self) -> Self::Token<'_> {
5450                (
5451                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5452                        &self.owner,
5453                    ),
5454                )
5455            }
5456            #[inline]
5457            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5458                <Self::Parameters<
5459                    '_,
5460                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5461                    .map(Self::new)
5462            }
5463        }
5464    };
5465    #[derive(serde::Serialize, serde::Deserialize)]
5466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5467    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5468```solidity
5469error OwnableUnauthorizedAccount(address account);
5470```*/
5471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5472    #[derive(Clone)]
5473    pub struct OwnableUnauthorizedAccount {
5474        #[allow(missing_docs)]
5475        pub account: alloy::sol_types::private::Address,
5476    }
5477    #[allow(
5478        non_camel_case_types,
5479        non_snake_case,
5480        clippy::pub_underscore_fields,
5481        clippy::style
5482    )]
5483    const _: () = {
5484        use alloy::sol_types as alloy_sol_types;
5485        #[doc(hidden)]
5486        #[allow(dead_code)]
5487        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5488        #[doc(hidden)]
5489        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5490        #[cfg(test)]
5491        #[allow(dead_code, unreachable_patterns)]
5492        fn _type_assertion(
5493            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5494        ) {
5495            match _t {
5496                alloy_sol_types::private::AssertTypeEq::<
5497                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5498                >(_) => {}
5499            }
5500        }
5501        #[automatically_derived]
5502        #[doc(hidden)]
5503        impl ::core::convert::From<OwnableUnauthorizedAccount>
5504        for UnderlyingRustTuple<'_> {
5505            fn from(value: OwnableUnauthorizedAccount) -> Self {
5506                (value.account,)
5507            }
5508        }
5509        #[automatically_derived]
5510        #[doc(hidden)]
5511        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5512        for OwnableUnauthorizedAccount {
5513            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                Self { account: tuple.0 }
5515            }
5516        }
5517        #[automatically_derived]
5518        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5519            type Parameters<'a> = UnderlyingSolTuple<'a>;
5520            type Token<'a> = <Self::Parameters<
5521                'a,
5522            > as alloy_sol_types::SolType>::Token<'a>;
5523            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5524            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5525            #[inline]
5526            fn new<'a>(
5527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5528            ) -> Self {
5529                tuple.into()
5530            }
5531            #[inline]
5532            fn tokenize(&self) -> Self::Token<'_> {
5533                (
5534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5535                        &self.account,
5536                    ),
5537                )
5538            }
5539            #[inline]
5540            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5541                <Self::Parameters<
5542                    '_,
5543                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5544                    .map(Self::new)
5545            }
5546        }
5547    };
5548    #[derive(serde::Serialize, serde::Deserialize)]
5549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5550    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
5551```solidity
5552error OwnershipCannotBeRenounced();
5553```*/
5554    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5555    #[derive(Clone)]
5556    pub struct OwnershipCannotBeRenounced;
5557    #[allow(
5558        non_camel_case_types,
5559        non_snake_case,
5560        clippy::pub_underscore_fields,
5561        clippy::style
5562    )]
5563    const _: () = {
5564        use alloy::sol_types as alloy_sol_types;
5565        #[doc(hidden)]
5566        #[allow(dead_code)]
5567        type UnderlyingSolTuple<'a> = ();
5568        #[doc(hidden)]
5569        type UnderlyingRustTuple<'a> = ();
5570        #[cfg(test)]
5571        #[allow(dead_code, unreachable_patterns)]
5572        fn _type_assertion(
5573            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5574        ) {
5575            match _t {
5576                alloy_sol_types::private::AssertTypeEq::<
5577                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5578                >(_) => {}
5579            }
5580        }
5581        #[automatically_derived]
5582        #[doc(hidden)]
5583        impl ::core::convert::From<OwnershipCannotBeRenounced>
5584        for UnderlyingRustTuple<'_> {
5585            fn from(value: OwnershipCannotBeRenounced) -> Self {
5586                ()
5587            }
5588        }
5589        #[automatically_derived]
5590        #[doc(hidden)]
5591        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5592        for OwnershipCannotBeRenounced {
5593            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5594                Self
5595            }
5596        }
5597        #[automatically_derived]
5598        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
5599            type Parameters<'a> = UnderlyingSolTuple<'a>;
5600            type Token<'a> = <Self::Parameters<
5601                'a,
5602            > as alloy_sol_types::SolType>::Token<'a>;
5603            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
5604            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
5605            #[inline]
5606            fn new<'a>(
5607                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5608            ) -> Self {
5609                tuple.into()
5610            }
5611            #[inline]
5612            fn tokenize(&self) -> Self::Token<'_> {
5613                ()
5614            }
5615            #[inline]
5616            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5617                <Self::Parameters<
5618                    '_,
5619                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5620                    .map(Self::new)
5621            }
5622        }
5623    };
5624    #[derive(serde::Serialize, serde::Deserialize)]
5625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5626    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5627```solidity
5628error ProverNotPermissioned();
5629```*/
5630    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5631    #[derive(Clone)]
5632    pub struct ProverNotPermissioned;
5633    #[allow(
5634        non_camel_case_types,
5635        non_snake_case,
5636        clippy::pub_underscore_fields,
5637        clippy::style
5638    )]
5639    const _: () = {
5640        use alloy::sol_types as alloy_sol_types;
5641        #[doc(hidden)]
5642        #[allow(dead_code)]
5643        type UnderlyingSolTuple<'a> = ();
5644        #[doc(hidden)]
5645        type UnderlyingRustTuple<'a> = ();
5646        #[cfg(test)]
5647        #[allow(dead_code, unreachable_patterns)]
5648        fn _type_assertion(
5649            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5650        ) {
5651            match _t {
5652                alloy_sol_types::private::AssertTypeEq::<
5653                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5654                >(_) => {}
5655            }
5656        }
5657        #[automatically_derived]
5658        #[doc(hidden)]
5659        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5660            fn from(value: ProverNotPermissioned) -> Self {
5661                ()
5662            }
5663        }
5664        #[automatically_derived]
5665        #[doc(hidden)]
5666        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5667            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5668                Self
5669            }
5670        }
5671        #[automatically_derived]
5672        impl alloy_sol_types::SolError for ProverNotPermissioned {
5673            type Parameters<'a> = UnderlyingSolTuple<'a>;
5674            type Token<'a> = <Self::Parameters<
5675                'a,
5676            > as alloy_sol_types::SolType>::Token<'a>;
5677            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5678            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5679            #[inline]
5680            fn new<'a>(
5681                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5682            ) -> Self {
5683                tuple.into()
5684            }
5685            #[inline]
5686            fn tokenize(&self) -> Self::Token<'_> {
5687                ()
5688            }
5689            #[inline]
5690            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5691                <Self::Parameters<
5692                    '_,
5693                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5694                    .map(Self::new)
5695            }
5696        }
5697    };
5698    #[derive(serde::Serialize, serde::Deserialize)]
5699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5700    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5701```solidity
5702error UUPSUnauthorizedCallContext();
5703```*/
5704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5705    #[derive(Clone)]
5706    pub struct UUPSUnauthorizedCallContext;
5707    #[allow(
5708        non_camel_case_types,
5709        non_snake_case,
5710        clippy::pub_underscore_fields,
5711        clippy::style
5712    )]
5713    const _: () = {
5714        use alloy::sol_types as alloy_sol_types;
5715        #[doc(hidden)]
5716        #[allow(dead_code)]
5717        type UnderlyingSolTuple<'a> = ();
5718        #[doc(hidden)]
5719        type UnderlyingRustTuple<'a> = ();
5720        #[cfg(test)]
5721        #[allow(dead_code, unreachable_patterns)]
5722        fn _type_assertion(
5723            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5724        ) {
5725            match _t {
5726                alloy_sol_types::private::AssertTypeEq::<
5727                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5728                >(_) => {}
5729            }
5730        }
5731        #[automatically_derived]
5732        #[doc(hidden)]
5733        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5734        for UnderlyingRustTuple<'_> {
5735            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5736                ()
5737            }
5738        }
5739        #[automatically_derived]
5740        #[doc(hidden)]
5741        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5742        for UUPSUnauthorizedCallContext {
5743            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5744                Self
5745            }
5746        }
5747        #[automatically_derived]
5748        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5749            type Parameters<'a> = UnderlyingSolTuple<'a>;
5750            type Token<'a> = <Self::Parameters<
5751                'a,
5752            > as alloy_sol_types::SolType>::Token<'a>;
5753            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5754            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5755            #[inline]
5756            fn new<'a>(
5757                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5758            ) -> Self {
5759                tuple.into()
5760            }
5761            #[inline]
5762            fn tokenize(&self) -> Self::Token<'_> {
5763                ()
5764            }
5765            #[inline]
5766            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5767                <Self::Parameters<
5768                    '_,
5769                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5770                    .map(Self::new)
5771            }
5772        }
5773    };
5774    #[derive(serde::Serialize, serde::Deserialize)]
5775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5776    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5777```solidity
5778error UUPSUnsupportedProxiableUUID(bytes32 slot);
5779```*/
5780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5781    #[derive(Clone)]
5782    pub struct UUPSUnsupportedProxiableUUID {
5783        #[allow(missing_docs)]
5784        pub slot: alloy::sol_types::private::FixedBytes<32>,
5785    }
5786    #[allow(
5787        non_camel_case_types,
5788        non_snake_case,
5789        clippy::pub_underscore_fields,
5790        clippy::style
5791    )]
5792    const _: () = {
5793        use alloy::sol_types as alloy_sol_types;
5794        #[doc(hidden)]
5795        #[allow(dead_code)]
5796        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5797        #[doc(hidden)]
5798        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5799        #[cfg(test)]
5800        #[allow(dead_code, unreachable_patterns)]
5801        fn _type_assertion(
5802            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5803        ) {
5804            match _t {
5805                alloy_sol_types::private::AssertTypeEq::<
5806                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5807                >(_) => {}
5808            }
5809        }
5810        #[automatically_derived]
5811        #[doc(hidden)]
5812        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5813        for UnderlyingRustTuple<'_> {
5814            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5815                (value.slot,)
5816            }
5817        }
5818        #[automatically_derived]
5819        #[doc(hidden)]
5820        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5821        for UUPSUnsupportedProxiableUUID {
5822            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5823                Self { slot: tuple.0 }
5824            }
5825        }
5826        #[automatically_derived]
5827        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5828            type Parameters<'a> = UnderlyingSolTuple<'a>;
5829            type Token<'a> = <Self::Parameters<
5830                'a,
5831            > as alloy_sol_types::SolType>::Token<'a>;
5832            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5833            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5834            #[inline]
5835            fn new<'a>(
5836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5837            ) -> Self {
5838                tuple.into()
5839            }
5840            #[inline]
5841            fn tokenize(&self) -> Self::Token<'_> {
5842                (
5843                    <alloy::sol_types::sol_data::FixedBytes<
5844                        32,
5845                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5846                )
5847            }
5848            #[inline]
5849            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5850                <Self::Parameters<
5851                    '_,
5852                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5853                    .map(Self::new)
5854            }
5855        }
5856    };
5857    #[derive(serde::Serialize, serde::Deserialize)]
5858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5859    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5860```solidity
5861error WrongStakeTableUsed();
5862```*/
5863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5864    #[derive(Clone)]
5865    pub struct WrongStakeTableUsed;
5866    #[allow(
5867        non_camel_case_types,
5868        non_snake_case,
5869        clippy::pub_underscore_fields,
5870        clippy::style
5871    )]
5872    const _: () = {
5873        use alloy::sol_types as alloy_sol_types;
5874        #[doc(hidden)]
5875        #[allow(dead_code)]
5876        type UnderlyingSolTuple<'a> = ();
5877        #[doc(hidden)]
5878        type UnderlyingRustTuple<'a> = ();
5879        #[cfg(test)]
5880        #[allow(dead_code, unreachable_patterns)]
5881        fn _type_assertion(
5882            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5883        ) {
5884            match _t {
5885                alloy_sol_types::private::AssertTypeEq::<
5886                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5887                >(_) => {}
5888            }
5889        }
5890        #[automatically_derived]
5891        #[doc(hidden)]
5892        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5893            fn from(value: WrongStakeTableUsed) -> Self {
5894                ()
5895            }
5896        }
5897        #[automatically_derived]
5898        #[doc(hidden)]
5899        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5900            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5901                Self
5902            }
5903        }
5904        #[automatically_derived]
5905        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5906            type Parameters<'a> = UnderlyingSolTuple<'a>;
5907            type Token<'a> = <Self::Parameters<
5908                'a,
5909            > as alloy_sol_types::SolType>::Token<'a>;
5910            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5911            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5912            #[inline]
5913            fn new<'a>(
5914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5915            ) -> Self {
5916                tuple.into()
5917            }
5918            #[inline]
5919            fn tokenize(&self) -> Self::Token<'_> {
5920                ()
5921            }
5922            #[inline]
5923            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5924                <Self::Parameters<
5925                    '_,
5926                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5927                    .map(Self::new)
5928            }
5929        }
5930    };
5931    #[derive(serde::Serialize, serde::Deserialize)]
5932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5933    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5934```solidity
5935event Initialized(uint64 version);
5936```*/
5937    #[allow(
5938        non_camel_case_types,
5939        non_snake_case,
5940        clippy::pub_underscore_fields,
5941        clippy::style
5942    )]
5943    #[derive(Clone)]
5944    pub struct Initialized {
5945        #[allow(missing_docs)]
5946        pub version: u64,
5947    }
5948    #[allow(
5949        non_camel_case_types,
5950        non_snake_case,
5951        clippy::pub_underscore_fields,
5952        clippy::style
5953    )]
5954    const _: () = {
5955        use alloy::sol_types as alloy_sol_types;
5956        #[automatically_derived]
5957        impl alloy_sol_types::SolEvent for Initialized {
5958            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5959            type DataToken<'a> = <Self::DataTuple<
5960                'a,
5961            > as alloy_sol_types::SolType>::Token<'a>;
5962            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5963            const SIGNATURE: &'static str = "Initialized(uint64)";
5964            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5965                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5966                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5967                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5968            ]);
5969            const ANONYMOUS: bool = false;
5970            #[allow(unused_variables)]
5971            #[inline]
5972            fn new(
5973                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5974                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5975            ) -> Self {
5976                Self { version: data.0 }
5977            }
5978            #[inline]
5979            fn check_signature(
5980                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5981            ) -> alloy_sol_types::Result<()> {
5982                if topics.0 != Self::SIGNATURE_HASH {
5983                    return Err(
5984                        alloy_sol_types::Error::invalid_event_signature_hash(
5985                            Self::SIGNATURE,
5986                            topics.0,
5987                            Self::SIGNATURE_HASH,
5988                        ),
5989                    );
5990                }
5991                Ok(())
5992            }
5993            #[inline]
5994            fn tokenize_body(&self) -> Self::DataToken<'_> {
5995                (
5996                    <alloy::sol_types::sol_data::Uint<
5997                        64,
5998                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5999                )
6000            }
6001            #[inline]
6002            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6003                (Self::SIGNATURE_HASH.into(),)
6004            }
6005            #[inline]
6006            fn encode_topics_raw(
6007                &self,
6008                out: &mut [alloy_sol_types::abi::token::WordToken],
6009            ) -> alloy_sol_types::Result<()> {
6010                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6011                    return Err(alloy_sol_types::Error::Overrun);
6012                }
6013                out[0usize] = alloy_sol_types::abi::token::WordToken(
6014                    Self::SIGNATURE_HASH,
6015                );
6016                Ok(())
6017            }
6018        }
6019        #[automatically_derived]
6020        impl alloy_sol_types::private::IntoLogData for Initialized {
6021            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6022                From::from(self)
6023            }
6024            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6025                From::from(&self)
6026            }
6027        }
6028        #[automatically_derived]
6029        impl From<&Initialized> for alloy_sol_types::private::LogData {
6030            #[inline]
6031            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6032                alloy_sol_types::SolEvent::encode_log_data(this)
6033            }
6034        }
6035    };
6036    #[derive(serde::Serialize, serde::Deserialize)]
6037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6038    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6039```solidity
6040event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6041```*/
6042    #[allow(
6043        non_camel_case_types,
6044        non_snake_case,
6045        clippy::pub_underscore_fields,
6046        clippy::style
6047    )]
6048    #[derive(Clone)]
6049    pub struct NewState {
6050        #[allow(missing_docs)]
6051        pub viewNum: u64,
6052        #[allow(missing_docs)]
6053        pub blockHeight: u64,
6054        #[allow(missing_docs)]
6055        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6056    }
6057    #[allow(
6058        non_camel_case_types,
6059        non_snake_case,
6060        clippy::pub_underscore_fields,
6061        clippy::style
6062    )]
6063    const _: () = {
6064        use alloy::sol_types as alloy_sol_types;
6065        #[automatically_derived]
6066        impl alloy_sol_types::SolEvent for NewState {
6067            type DataTuple<'a> = (BN254::ScalarField,);
6068            type DataToken<'a> = <Self::DataTuple<
6069                'a,
6070            > as alloy_sol_types::SolType>::Token<'a>;
6071            type TopicList = (
6072                alloy_sol_types::sol_data::FixedBytes<32>,
6073                alloy::sol_types::sol_data::Uint<64>,
6074                alloy::sol_types::sol_data::Uint<64>,
6075            );
6076            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6077            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6078                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6079                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6080                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6081            ]);
6082            const ANONYMOUS: bool = false;
6083            #[allow(unused_variables)]
6084            #[inline]
6085            fn new(
6086                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6087                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6088            ) -> Self {
6089                Self {
6090                    viewNum: topics.1,
6091                    blockHeight: topics.2,
6092                    blockCommRoot: data.0,
6093                }
6094            }
6095            #[inline]
6096            fn check_signature(
6097                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6098            ) -> alloy_sol_types::Result<()> {
6099                if topics.0 != Self::SIGNATURE_HASH {
6100                    return Err(
6101                        alloy_sol_types::Error::invalid_event_signature_hash(
6102                            Self::SIGNATURE,
6103                            topics.0,
6104                            Self::SIGNATURE_HASH,
6105                        ),
6106                    );
6107                }
6108                Ok(())
6109            }
6110            #[inline]
6111            fn tokenize_body(&self) -> Self::DataToken<'_> {
6112                (
6113                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6114                        &self.blockCommRoot,
6115                    ),
6116                )
6117            }
6118            #[inline]
6119            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6120                (
6121                    Self::SIGNATURE_HASH.into(),
6122                    self.viewNum.clone(),
6123                    self.blockHeight.clone(),
6124                )
6125            }
6126            #[inline]
6127            fn encode_topics_raw(
6128                &self,
6129                out: &mut [alloy_sol_types::abi::token::WordToken],
6130            ) -> alloy_sol_types::Result<()> {
6131                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6132                    return Err(alloy_sol_types::Error::Overrun);
6133                }
6134                out[0usize] = alloy_sol_types::abi::token::WordToken(
6135                    Self::SIGNATURE_HASH,
6136                );
6137                out[1usize] = <alloy::sol_types::sol_data::Uint<
6138                    64,
6139                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6140                out[2usize] = <alloy::sol_types::sol_data::Uint<
6141                    64,
6142                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6143                Ok(())
6144            }
6145        }
6146        #[automatically_derived]
6147        impl alloy_sol_types::private::IntoLogData for NewState {
6148            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6149                From::from(self)
6150            }
6151            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6152                From::from(&self)
6153            }
6154        }
6155        #[automatically_derived]
6156        impl From<&NewState> for alloy_sol_types::private::LogData {
6157            #[inline]
6158            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6159                alloy_sol_types::SolEvent::encode_log_data(this)
6160            }
6161        }
6162    };
6163    #[derive(serde::Serialize, serde::Deserialize)]
6164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6165    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6166```solidity
6167event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6168```*/
6169    #[allow(
6170        non_camel_case_types,
6171        non_snake_case,
6172        clippy::pub_underscore_fields,
6173        clippy::style
6174    )]
6175    #[derive(Clone)]
6176    pub struct OwnershipTransferred {
6177        #[allow(missing_docs)]
6178        pub previousOwner: alloy::sol_types::private::Address,
6179        #[allow(missing_docs)]
6180        pub newOwner: alloy::sol_types::private::Address,
6181    }
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    const _: () = {
6189        use alloy::sol_types as alloy_sol_types;
6190        #[automatically_derived]
6191        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6192            type DataTuple<'a> = ();
6193            type DataToken<'a> = <Self::DataTuple<
6194                'a,
6195            > as alloy_sol_types::SolType>::Token<'a>;
6196            type TopicList = (
6197                alloy_sol_types::sol_data::FixedBytes<32>,
6198                alloy::sol_types::sol_data::Address,
6199                alloy::sol_types::sol_data::Address,
6200            );
6201            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6202            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6203                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6204                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6205                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6206            ]);
6207            const ANONYMOUS: bool = false;
6208            #[allow(unused_variables)]
6209            #[inline]
6210            fn new(
6211                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6212                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6213            ) -> Self {
6214                Self {
6215                    previousOwner: topics.1,
6216                    newOwner: topics.2,
6217                }
6218            }
6219            #[inline]
6220            fn check_signature(
6221                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6222            ) -> alloy_sol_types::Result<()> {
6223                if topics.0 != Self::SIGNATURE_HASH {
6224                    return Err(
6225                        alloy_sol_types::Error::invalid_event_signature_hash(
6226                            Self::SIGNATURE,
6227                            topics.0,
6228                            Self::SIGNATURE_HASH,
6229                        ),
6230                    );
6231                }
6232                Ok(())
6233            }
6234            #[inline]
6235            fn tokenize_body(&self) -> Self::DataToken<'_> {
6236                ()
6237            }
6238            #[inline]
6239            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6240                (
6241                    Self::SIGNATURE_HASH.into(),
6242                    self.previousOwner.clone(),
6243                    self.newOwner.clone(),
6244                )
6245            }
6246            #[inline]
6247            fn encode_topics_raw(
6248                &self,
6249                out: &mut [alloy_sol_types::abi::token::WordToken],
6250            ) -> alloy_sol_types::Result<()> {
6251                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6252                    return Err(alloy_sol_types::Error::Overrun);
6253                }
6254                out[0usize] = alloy_sol_types::abi::token::WordToken(
6255                    Self::SIGNATURE_HASH,
6256                );
6257                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6258                    &self.previousOwner,
6259                );
6260                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6261                    &self.newOwner,
6262                );
6263                Ok(())
6264            }
6265        }
6266        #[automatically_derived]
6267        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6268            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6269                From::from(self)
6270            }
6271            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6272                From::from(&self)
6273            }
6274        }
6275        #[automatically_derived]
6276        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6277            #[inline]
6278            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6279                alloy_sol_types::SolEvent::encode_log_data(this)
6280            }
6281        }
6282    };
6283    #[derive(serde::Serialize, serde::Deserialize)]
6284    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6285    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6286```solidity
6287event PermissionedProverNotRequired();
6288```*/
6289    #[allow(
6290        non_camel_case_types,
6291        non_snake_case,
6292        clippy::pub_underscore_fields,
6293        clippy::style
6294    )]
6295    #[derive(Clone)]
6296    pub struct PermissionedProverNotRequired;
6297    #[allow(
6298        non_camel_case_types,
6299        non_snake_case,
6300        clippy::pub_underscore_fields,
6301        clippy::style
6302    )]
6303    const _: () = {
6304        use alloy::sol_types as alloy_sol_types;
6305        #[automatically_derived]
6306        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6307            type DataTuple<'a> = ();
6308            type DataToken<'a> = <Self::DataTuple<
6309                'a,
6310            > as alloy_sol_types::SolType>::Token<'a>;
6311            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6312            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6313            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6314                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6315                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6316                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6317            ]);
6318            const ANONYMOUS: bool = false;
6319            #[allow(unused_variables)]
6320            #[inline]
6321            fn new(
6322                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6323                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6324            ) -> Self {
6325                Self {}
6326            }
6327            #[inline]
6328            fn check_signature(
6329                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6330            ) -> alloy_sol_types::Result<()> {
6331                if topics.0 != Self::SIGNATURE_HASH {
6332                    return Err(
6333                        alloy_sol_types::Error::invalid_event_signature_hash(
6334                            Self::SIGNATURE,
6335                            topics.0,
6336                            Self::SIGNATURE_HASH,
6337                        ),
6338                    );
6339                }
6340                Ok(())
6341            }
6342            #[inline]
6343            fn tokenize_body(&self) -> Self::DataToken<'_> {
6344                ()
6345            }
6346            #[inline]
6347            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6348                (Self::SIGNATURE_HASH.into(),)
6349            }
6350            #[inline]
6351            fn encode_topics_raw(
6352                &self,
6353                out: &mut [alloy_sol_types::abi::token::WordToken],
6354            ) -> alloy_sol_types::Result<()> {
6355                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6356                    return Err(alloy_sol_types::Error::Overrun);
6357                }
6358                out[0usize] = alloy_sol_types::abi::token::WordToken(
6359                    Self::SIGNATURE_HASH,
6360                );
6361                Ok(())
6362            }
6363        }
6364        #[automatically_derived]
6365        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6366            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6367                From::from(self)
6368            }
6369            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6370                From::from(&self)
6371            }
6372        }
6373        #[automatically_derived]
6374        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6375            #[inline]
6376            fn from(
6377                this: &PermissionedProverNotRequired,
6378            ) -> alloy_sol_types::private::LogData {
6379                alloy_sol_types::SolEvent::encode_log_data(this)
6380            }
6381        }
6382    };
6383    #[derive(serde::Serialize, serde::Deserialize)]
6384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6385    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6386```solidity
6387event PermissionedProverRequired(address permissionedProver);
6388```*/
6389    #[allow(
6390        non_camel_case_types,
6391        non_snake_case,
6392        clippy::pub_underscore_fields,
6393        clippy::style
6394    )]
6395    #[derive(Clone)]
6396    pub struct PermissionedProverRequired {
6397        #[allow(missing_docs)]
6398        pub permissionedProver: alloy::sol_types::private::Address,
6399    }
6400    #[allow(
6401        non_camel_case_types,
6402        non_snake_case,
6403        clippy::pub_underscore_fields,
6404        clippy::style
6405    )]
6406    const _: () = {
6407        use alloy::sol_types as alloy_sol_types;
6408        #[automatically_derived]
6409        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6410            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6411            type DataToken<'a> = <Self::DataTuple<
6412                'a,
6413            > as alloy_sol_types::SolType>::Token<'a>;
6414            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6415            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6416            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6417                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6418                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6419                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6420            ]);
6421            const ANONYMOUS: bool = false;
6422            #[allow(unused_variables)]
6423            #[inline]
6424            fn new(
6425                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6426                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6427            ) -> Self {
6428                Self { permissionedProver: data.0 }
6429            }
6430            #[inline]
6431            fn check_signature(
6432                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6433            ) -> alloy_sol_types::Result<()> {
6434                if topics.0 != Self::SIGNATURE_HASH {
6435                    return Err(
6436                        alloy_sol_types::Error::invalid_event_signature_hash(
6437                            Self::SIGNATURE,
6438                            topics.0,
6439                            Self::SIGNATURE_HASH,
6440                        ),
6441                    );
6442                }
6443                Ok(())
6444            }
6445            #[inline]
6446            fn tokenize_body(&self) -> Self::DataToken<'_> {
6447                (
6448                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6449                        &self.permissionedProver,
6450                    ),
6451                )
6452            }
6453            #[inline]
6454            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6455                (Self::SIGNATURE_HASH.into(),)
6456            }
6457            #[inline]
6458            fn encode_topics_raw(
6459                &self,
6460                out: &mut [alloy_sol_types::abi::token::WordToken],
6461            ) -> alloy_sol_types::Result<()> {
6462                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6463                    return Err(alloy_sol_types::Error::Overrun);
6464                }
6465                out[0usize] = alloy_sol_types::abi::token::WordToken(
6466                    Self::SIGNATURE_HASH,
6467                );
6468                Ok(())
6469            }
6470        }
6471        #[automatically_derived]
6472        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6473            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6474                From::from(self)
6475            }
6476            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6477                From::from(&self)
6478            }
6479        }
6480        #[automatically_derived]
6481        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6482            #[inline]
6483            fn from(
6484                this: &PermissionedProverRequired,
6485            ) -> alloy_sol_types::private::LogData {
6486                alloy_sol_types::SolEvent::encode_log_data(this)
6487            }
6488        }
6489    };
6490    #[derive(serde::Serialize, serde::Deserialize)]
6491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6492    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6493```solidity
6494event Upgrade(address implementation);
6495```*/
6496    #[allow(
6497        non_camel_case_types,
6498        non_snake_case,
6499        clippy::pub_underscore_fields,
6500        clippy::style
6501    )]
6502    #[derive(Clone)]
6503    pub struct Upgrade {
6504        #[allow(missing_docs)]
6505        pub implementation: alloy::sol_types::private::Address,
6506    }
6507    #[allow(
6508        non_camel_case_types,
6509        non_snake_case,
6510        clippy::pub_underscore_fields,
6511        clippy::style
6512    )]
6513    const _: () = {
6514        use alloy::sol_types as alloy_sol_types;
6515        #[automatically_derived]
6516        impl alloy_sol_types::SolEvent for Upgrade {
6517            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6518            type DataToken<'a> = <Self::DataTuple<
6519                'a,
6520            > as alloy_sol_types::SolType>::Token<'a>;
6521            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6522            const SIGNATURE: &'static str = "Upgrade(address)";
6523            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6524                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6525                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6526                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6527            ]);
6528            const ANONYMOUS: bool = false;
6529            #[allow(unused_variables)]
6530            #[inline]
6531            fn new(
6532                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6533                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6534            ) -> Self {
6535                Self { implementation: data.0 }
6536            }
6537            #[inline]
6538            fn check_signature(
6539                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6540            ) -> alloy_sol_types::Result<()> {
6541                if topics.0 != Self::SIGNATURE_HASH {
6542                    return Err(
6543                        alloy_sol_types::Error::invalid_event_signature_hash(
6544                            Self::SIGNATURE,
6545                            topics.0,
6546                            Self::SIGNATURE_HASH,
6547                        ),
6548                    );
6549                }
6550                Ok(())
6551            }
6552            #[inline]
6553            fn tokenize_body(&self) -> Self::DataToken<'_> {
6554                (
6555                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6556                        &self.implementation,
6557                    ),
6558                )
6559            }
6560            #[inline]
6561            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6562                (Self::SIGNATURE_HASH.into(),)
6563            }
6564            #[inline]
6565            fn encode_topics_raw(
6566                &self,
6567                out: &mut [alloy_sol_types::abi::token::WordToken],
6568            ) -> alloy_sol_types::Result<()> {
6569                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6570                    return Err(alloy_sol_types::Error::Overrun);
6571                }
6572                out[0usize] = alloy_sol_types::abi::token::WordToken(
6573                    Self::SIGNATURE_HASH,
6574                );
6575                Ok(())
6576            }
6577        }
6578        #[automatically_derived]
6579        impl alloy_sol_types::private::IntoLogData for Upgrade {
6580            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6581                From::from(self)
6582            }
6583            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6584                From::from(&self)
6585            }
6586        }
6587        #[automatically_derived]
6588        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6589            #[inline]
6590            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6591                alloy_sol_types::SolEvent::encode_log_data(this)
6592            }
6593        }
6594    };
6595    #[derive(serde::Serialize, serde::Deserialize)]
6596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6597    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6598```solidity
6599event Upgraded(address indexed implementation);
6600```*/
6601    #[allow(
6602        non_camel_case_types,
6603        non_snake_case,
6604        clippy::pub_underscore_fields,
6605        clippy::style
6606    )]
6607    #[derive(Clone)]
6608    pub struct Upgraded {
6609        #[allow(missing_docs)]
6610        pub implementation: alloy::sol_types::private::Address,
6611    }
6612    #[allow(
6613        non_camel_case_types,
6614        non_snake_case,
6615        clippy::pub_underscore_fields,
6616        clippy::style
6617    )]
6618    const _: () = {
6619        use alloy::sol_types as alloy_sol_types;
6620        #[automatically_derived]
6621        impl alloy_sol_types::SolEvent for Upgraded {
6622            type DataTuple<'a> = ();
6623            type DataToken<'a> = <Self::DataTuple<
6624                'a,
6625            > as alloy_sol_types::SolType>::Token<'a>;
6626            type TopicList = (
6627                alloy_sol_types::sol_data::FixedBytes<32>,
6628                alloy::sol_types::sol_data::Address,
6629            );
6630            const SIGNATURE: &'static str = "Upgraded(address)";
6631            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6632                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6633                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6634                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6635            ]);
6636            const ANONYMOUS: bool = false;
6637            #[allow(unused_variables)]
6638            #[inline]
6639            fn new(
6640                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6641                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6642            ) -> Self {
6643                Self { implementation: topics.1 }
6644            }
6645            #[inline]
6646            fn check_signature(
6647                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6648            ) -> alloy_sol_types::Result<()> {
6649                if topics.0 != Self::SIGNATURE_HASH {
6650                    return Err(
6651                        alloy_sol_types::Error::invalid_event_signature_hash(
6652                            Self::SIGNATURE,
6653                            topics.0,
6654                            Self::SIGNATURE_HASH,
6655                        ),
6656                    );
6657                }
6658                Ok(())
6659            }
6660            #[inline]
6661            fn tokenize_body(&self) -> Self::DataToken<'_> {
6662                ()
6663            }
6664            #[inline]
6665            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6666                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6667            }
6668            #[inline]
6669            fn encode_topics_raw(
6670                &self,
6671                out: &mut [alloy_sol_types::abi::token::WordToken],
6672            ) -> alloy_sol_types::Result<()> {
6673                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6674                    return Err(alloy_sol_types::Error::Overrun);
6675                }
6676                out[0usize] = alloy_sol_types::abi::token::WordToken(
6677                    Self::SIGNATURE_HASH,
6678                );
6679                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6680                    &self.implementation,
6681                );
6682                Ok(())
6683            }
6684        }
6685        #[automatically_derived]
6686        impl alloy_sol_types::private::IntoLogData for Upgraded {
6687            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6688                From::from(self)
6689            }
6690            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6691                From::from(&self)
6692            }
6693        }
6694        #[automatically_derived]
6695        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6696            #[inline]
6697            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6698                alloy_sol_types::SolEvent::encode_log_data(this)
6699            }
6700        }
6701    };
6702    /**Constructor`.
6703```solidity
6704constructor();
6705```*/
6706    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6707    #[derive(Clone)]
6708    pub struct constructorCall {}
6709    const _: () = {
6710        use alloy::sol_types as alloy_sol_types;
6711        {
6712            #[doc(hidden)]
6713            #[allow(dead_code)]
6714            type UnderlyingSolTuple<'a> = ();
6715            #[doc(hidden)]
6716            type UnderlyingRustTuple<'a> = ();
6717            #[cfg(test)]
6718            #[allow(dead_code, unreachable_patterns)]
6719            fn _type_assertion(
6720                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6721            ) {
6722                match _t {
6723                    alloy_sol_types::private::AssertTypeEq::<
6724                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6725                    >(_) => {}
6726                }
6727            }
6728            #[automatically_derived]
6729            #[doc(hidden)]
6730            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6731                fn from(value: constructorCall) -> Self {
6732                    ()
6733                }
6734            }
6735            #[automatically_derived]
6736            #[doc(hidden)]
6737            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6738                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6739                    Self {}
6740                }
6741            }
6742        }
6743        #[automatically_derived]
6744        impl alloy_sol_types::SolConstructor for constructorCall {
6745            type Parameters<'a> = ();
6746            type Token<'a> = <Self::Parameters<
6747                'a,
6748            > as alloy_sol_types::SolType>::Token<'a>;
6749            #[inline]
6750            fn new<'a>(
6751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6752            ) -> Self {
6753                tuple.into()
6754            }
6755            #[inline]
6756            fn tokenize(&self) -> Self::Token<'_> {
6757                ()
6758            }
6759        }
6760    };
6761    #[derive(serde::Serialize, serde::Deserialize)]
6762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6763    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6764```solidity
6765function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6766```*/
6767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6768    #[derive(Clone)]
6769    pub struct UPGRADE_INTERFACE_VERSIONCall;
6770    #[derive(serde::Serialize, serde::Deserialize)]
6771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6772    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6774    #[derive(Clone)]
6775    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6776        #[allow(missing_docs)]
6777        pub _0: alloy::sol_types::private::String,
6778    }
6779    #[allow(
6780        non_camel_case_types,
6781        non_snake_case,
6782        clippy::pub_underscore_fields,
6783        clippy::style
6784    )]
6785    const _: () = {
6786        use alloy::sol_types as alloy_sol_types;
6787        {
6788            #[doc(hidden)]
6789            #[allow(dead_code)]
6790            type UnderlyingSolTuple<'a> = ();
6791            #[doc(hidden)]
6792            type UnderlyingRustTuple<'a> = ();
6793            #[cfg(test)]
6794            #[allow(dead_code, unreachable_patterns)]
6795            fn _type_assertion(
6796                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6797            ) {
6798                match _t {
6799                    alloy_sol_types::private::AssertTypeEq::<
6800                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6801                    >(_) => {}
6802                }
6803            }
6804            #[automatically_derived]
6805            #[doc(hidden)]
6806            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6807            for UnderlyingRustTuple<'_> {
6808                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6809                    ()
6810                }
6811            }
6812            #[automatically_derived]
6813            #[doc(hidden)]
6814            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6815            for UPGRADE_INTERFACE_VERSIONCall {
6816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6817                    Self
6818                }
6819            }
6820        }
6821        {
6822            #[doc(hidden)]
6823            #[allow(dead_code)]
6824            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6825            #[doc(hidden)]
6826            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6827            #[cfg(test)]
6828            #[allow(dead_code, unreachable_patterns)]
6829            fn _type_assertion(
6830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6831            ) {
6832                match _t {
6833                    alloy_sol_types::private::AssertTypeEq::<
6834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6835                    >(_) => {}
6836                }
6837            }
6838            #[automatically_derived]
6839            #[doc(hidden)]
6840            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6841            for UnderlyingRustTuple<'_> {
6842                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6843                    (value._0,)
6844                }
6845            }
6846            #[automatically_derived]
6847            #[doc(hidden)]
6848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6849            for UPGRADE_INTERFACE_VERSIONReturn {
6850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6851                    Self { _0: tuple.0 }
6852                }
6853            }
6854        }
6855        #[automatically_derived]
6856        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6857            type Parameters<'a> = ();
6858            type Token<'a> = <Self::Parameters<
6859                'a,
6860            > as alloy_sol_types::SolType>::Token<'a>;
6861            type Return = alloy::sol_types::private::String;
6862            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6863            type ReturnToken<'a> = <Self::ReturnTuple<
6864                'a,
6865            > as alloy_sol_types::SolType>::Token<'a>;
6866            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6867            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6868            #[inline]
6869            fn new<'a>(
6870                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6871            ) -> Self {
6872                tuple.into()
6873            }
6874            #[inline]
6875            fn tokenize(&self) -> Self::Token<'_> {
6876                ()
6877            }
6878            #[inline]
6879            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6880                (
6881                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6882                        ret,
6883                    ),
6884                )
6885            }
6886            #[inline]
6887            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6888                <Self::ReturnTuple<
6889                    '_,
6890                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6891                    .map(|r| {
6892                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6893                        r._0
6894                    })
6895            }
6896            #[inline]
6897            fn abi_decode_returns_validate(
6898                data: &[u8],
6899            ) -> alloy_sol_types::Result<Self::Return> {
6900                <Self::ReturnTuple<
6901                    '_,
6902                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6903                    .map(|r| {
6904                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6905                        r._0
6906                    })
6907            }
6908        }
6909    };
6910    #[derive(serde::Serialize, serde::Deserialize)]
6911    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6912    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6913```solidity
6914function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6915```*/
6916    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6917    #[derive(Clone)]
6918    pub struct _getVkCall;
6919    #[derive(serde::Serialize, serde::Deserialize)]
6920    #[derive()]
6921    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6923    #[derive(Clone)]
6924    pub struct _getVkReturn {
6925        #[allow(missing_docs)]
6926        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6927    }
6928    #[allow(
6929        non_camel_case_types,
6930        non_snake_case,
6931        clippy::pub_underscore_fields,
6932        clippy::style
6933    )]
6934    const _: () = {
6935        use alloy::sol_types as alloy_sol_types;
6936        {
6937            #[doc(hidden)]
6938            #[allow(dead_code)]
6939            type UnderlyingSolTuple<'a> = ();
6940            #[doc(hidden)]
6941            type UnderlyingRustTuple<'a> = ();
6942            #[cfg(test)]
6943            #[allow(dead_code, unreachable_patterns)]
6944            fn _type_assertion(
6945                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6946            ) {
6947                match _t {
6948                    alloy_sol_types::private::AssertTypeEq::<
6949                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6950                    >(_) => {}
6951                }
6952            }
6953            #[automatically_derived]
6954            #[doc(hidden)]
6955            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6956                fn from(value: _getVkCall) -> Self {
6957                    ()
6958                }
6959            }
6960            #[automatically_derived]
6961            #[doc(hidden)]
6962            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6963                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6964                    Self
6965                }
6966            }
6967        }
6968        {
6969            #[doc(hidden)]
6970            #[allow(dead_code)]
6971            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6972            #[doc(hidden)]
6973            type UnderlyingRustTuple<'a> = (
6974                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6975            );
6976            #[cfg(test)]
6977            #[allow(dead_code, unreachable_patterns)]
6978            fn _type_assertion(
6979                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6980            ) {
6981                match _t {
6982                    alloy_sol_types::private::AssertTypeEq::<
6983                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6984                    >(_) => {}
6985                }
6986            }
6987            #[automatically_derived]
6988            #[doc(hidden)]
6989            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6990                fn from(value: _getVkReturn) -> Self {
6991                    (value.vk,)
6992                }
6993            }
6994            #[automatically_derived]
6995            #[doc(hidden)]
6996            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6998                    Self { vk: tuple.0 }
6999                }
7000            }
7001        }
7002        #[automatically_derived]
7003        impl alloy_sol_types::SolCall for _getVkCall {
7004            type Parameters<'a> = ();
7005            type Token<'a> = <Self::Parameters<
7006                'a,
7007            > as alloy_sol_types::SolType>::Token<'a>;
7008            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7009            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7010            type ReturnToken<'a> = <Self::ReturnTuple<
7011                'a,
7012            > as alloy_sol_types::SolType>::Token<'a>;
7013            const SIGNATURE: &'static str = "_getVk()";
7014            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7015            #[inline]
7016            fn new<'a>(
7017                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7018            ) -> Self {
7019                tuple.into()
7020            }
7021            #[inline]
7022            fn tokenize(&self) -> Self::Token<'_> {
7023                ()
7024            }
7025            #[inline]
7026            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7027                (
7028                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7029                        ret,
7030                    ),
7031                )
7032            }
7033            #[inline]
7034            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7035                <Self::ReturnTuple<
7036                    '_,
7037                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7038                    .map(|r| {
7039                        let r: _getVkReturn = r.into();
7040                        r.vk
7041                    })
7042            }
7043            #[inline]
7044            fn abi_decode_returns_validate(
7045                data: &[u8],
7046            ) -> alloy_sol_types::Result<Self::Return> {
7047                <Self::ReturnTuple<
7048                    '_,
7049                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7050                    .map(|r| {
7051                        let r: _getVkReturn = r.into();
7052                        r.vk
7053                    })
7054            }
7055        }
7056    };
7057    #[derive(serde::Serialize, serde::Deserialize)]
7058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7059    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7060```solidity
7061function currentBlockNumber() external view returns (uint256);
7062```*/
7063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7064    #[derive(Clone)]
7065    pub struct currentBlockNumberCall;
7066    #[derive(serde::Serialize, serde::Deserialize)]
7067    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7068    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7069    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7070    #[derive(Clone)]
7071    pub struct currentBlockNumberReturn {
7072        #[allow(missing_docs)]
7073        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7074    }
7075    #[allow(
7076        non_camel_case_types,
7077        non_snake_case,
7078        clippy::pub_underscore_fields,
7079        clippy::style
7080    )]
7081    const _: () = {
7082        use alloy::sol_types as alloy_sol_types;
7083        {
7084            #[doc(hidden)]
7085            #[allow(dead_code)]
7086            type UnderlyingSolTuple<'a> = ();
7087            #[doc(hidden)]
7088            type UnderlyingRustTuple<'a> = ();
7089            #[cfg(test)]
7090            #[allow(dead_code, unreachable_patterns)]
7091            fn _type_assertion(
7092                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7093            ) {
7094                match _t {
7095                    alloy_sol_types::private::AssertTypeEq::<
7096                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7097                    >(_) => {}
7098                }
7099            }
7100            #[automatically_derived]
7101            #[doc(hidden)]
7102            impl ::core::convert::From<currentBlockNumberCall>
7103            for UnderlyingRustTuple<'_> {
7104                fn from(value: currentBlockNumberCall) -> Self {
7105                    ()
7106                }
7107            }
7108            #[automatically_derived]
7109            #[doc(hidden)]
7110            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7111            for currentBlockNumberCall {
7112                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7113                    Self
7114                }
7115            }
7116        }
7117        {
7118            #[doc(hidden)]
7119            #[allow(dead_code)]
7120            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7121            #[doc(hidden)]
7122            type UnderlyingRustTuple<'a> = (
7123                alloy::sol_types::private::primitives::aliases::U256,
7124            );
7125            #[cfg(test)]
7126            #[allow(dead_code, unreachable_patterns)]
7127            fn _type_assertion(
7128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7129            ) {
7130                match _t {
7131                    alloy_sol_types::private::AssertTypeEq::<
7132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7133                    >(_) => {}
7134                }
7135            }
7136            #[automatically_derived]
7137            #[doc(hidden)]
7138            impl ::core::convert::From<currentBlockNumberReturn>
7139            for UnderlyingRustTuple<'_> {
7140                fn from(value: currentBlockNumberReturn) -> Self {
7141                    (value._0,)
7142                }
7143            }
7144            #[automatically_derived]
7145            #[doc(hidden)]
7146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7147            for currentBlockNumberReturn {
7148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7149                    Self { _0: tuple.0 }
7150                }
7151            }
7152        }
7153        #[automatically_derived]
7154        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7155            type Parameters<'a> = ();
7156            type Token<'a> = <Self::Parameters<
7157                'a,
7158            > as alloy_sol_types::SolType>::Token<'a>;
7159            type Return = alloy::sol_types::private::primitives::aliases::U256;
7160            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7161            type ReturnToken<'a> = <Self::ReturnTuple<
7162                'a,
7163            > as alloy_sol_types::SolType>::Token<'a>;
7164            const SIGNATURE: &'static str = "currentBlockNumber()";
7165            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7166            #[inline]
7167            fn new<'a>(
7168                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7169            ) -> Self {
7170                tuple.into()
7171            }
7172            #[inline]
7173            fn tokenize(&self) -> Self::Token<'_> {
7174                ()
7175            }
7176            #[inline]
7177            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7178                (
7179                    <alloy::sol_types::sol_data::Uint<
7180                        256,
7181                    > as alloy_sol_types::SolType>::tokenize(ret),
7182                )
7183            }
7184            #[inline]
7185            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7186                <Self::ReturnTuple<
7187                    '_,
7188                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7189                    .map(|r| {
7190                        let r: currentBlockNumberReturn = r.into();
7191                        r._0
7192                    })
7193            }
7194            #[inline]
7195            fn abi_decode_returns_validate(
7196                data: &[u8],
7197            ) -> alloy_sol_types::Result<Self::Return> {
7198                <Self::ReturnTuple<
7199                    '_,
7200                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7201                    .map(|r| {
7202                        let r: currentBlockNumberReturn = r.into();
7203                        r._0
7204                    })
7205            }
7206        }
7207    };
7208    #[derive(serde::Serialize, serde::Deserialize)]
7209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7210    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7211```solidity
7212function disablePermissionedProverMode() external;
7213```*/
7214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7215    #[derive(Clone)]
7216    pub struct disablePermissionedProverModeCall;
7217    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7219    #[derive(Clone)]
7220    pub struct disablePermissionedProverModeReturn {}
7221    #[allow(
7222        non_camel_case_types,
7223        non_snake_case,
7224        clippy::pub_underscore_fields,
7225        clippy::style
7226    )]
7227    const _: () = {
7228        use alloy::sol_types as alloy_sol_types;
7229        {
7230            #[doc(hidden)]
7231            #[allow(dead_code)]
7232            type UnderlyingSolTuple<'a> = ();
7233            #[doc(hidden)]
7234            type UnderlyingRustTuple<'a> = ();
7235            #[cfg(test)]
7236            #[allow(dead_code, unreachable_patterns)]
7237            fn _type_assertion(
7238                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7239            ) {
7240                match _t {
7241                    alloy_sol_types::private::AssertTypeEq::<
7242                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7243                    >(_) => {}
7244                }
7245            }
7246            #[automatically_derived]
7247            #[doc(hidden)]
7248            impl ::core::convert::From<disablePermissionedProverModeCall>
7249            for UnderlyingRustTuple<'_> {
7250                fn from(value: disablePermissionedProverModeCall) -> Self {
7251                    ()
7252                }
7253            }
7254            #[automatically_derived]
7255            #[doc(hidden)]
7256            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7257            for disablePermissionedProverModeCall {
7258                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7259                    Self
7260                }
7261            }
7262        }
7263        {
7264            #[doc(hidden)]
7265            #[allow(dead_code)]
7266            type UnderlyingSolTuple<'a> = ();
7267            #[doc(hidden)]
7268            type UnderlyingRustTuple<'a> = ();
7269            #[cfg(test)]
7270            #[allow(dead_code, unreachable_patterns)]
7271            fn _type_assertion(
7272                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7273            ) {
7274                match _t {
7275                    alloy_sol_types::private::AssertTypeEq::<
7276                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7277                    >(_) => {}
7278                }
7279            }
7280            #[automatically_derived]
7281            #[doc(hidden)]
7282            impl ::core::convert::From<disablePermissionedProverModeReturn>
7283            for UnderlyingRustTuple<'_> {
7284                fn from(value: disablePermissionedProverModeReturn) -> Self {
7285                    ()
7286                }
7287            }
7288            #[automatically_derived]
7289            #[doc(hidden)]
7290            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7291            for disablePermissionedProverModeReturn {
7292                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7293                    Self {}
7294                }
7295            }
7296        }
7297        impl disablePermissionedProverModeReturn {
7298            fn _tokenize(
7299                &self,
7300            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7301                '_,
7302            > {
7303                ()
7304            }
7305        }
7306        #[automatically_derived]
7307        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7308            type Parameters<'a> = ();
7309            type Token<'a> = <Self::Parameters<
7310                'a,
7311            > as alloy_sol_types::SolType>::Token<'a>;
7312            type Return = disablePermissionedProverModeReturn;
7313            type ReturnTuple<'a> = ();
7314            type ReturnToken<'a> = <Self::ReturnTuple<
7315                'a,
7316            > as alloy_sol_types::SolType>::Token<'a>;
7317            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7318            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7319            #[inline]
7320            fn new<'a>(
7321                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7322            ) -> Self {
7323                tuple.into()
7324            }
7325            #[inline]
7326            fn tokenize(&self) -> Self::Token<'_> {
7327                ()
7328            }
7329            #[inline]
7330            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7331                disablePermissionedProverModeReturn::_tokenize(ret)
7332            }
7333            #[inline]
7334            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7335                <Self::ReturnTuple<
7336                    '_,
7337                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7338                    .map(Into::into)
7339            }
7340            #[inline]
7341            fn abi_decode_returns_validate(
7342                data: &[u8],
7343            ) -> alloy_sol_types::Result<Self::Return> {
7344                <Self::ReturnTuple<
7345                    '_,
7346                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7347                    .map(Into::into)
7348            }
7349        }
7350    };
7351    #[derive(serde::Serialize, serde::Deserialize)]
7352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7353    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7354```solidity
7355function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7356```*/
7357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7358    #[derive(Clone)]
7359    pub struct finalizedStateCall;
7360    #[derive(serde::Serialize, serde::Deserialize)]
7361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7362    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7364    #[derive(Clone)]
7365    pub struct finalizedStateReturn {
7366        #[allow(missing_docs)]
7367        pub viewNum: u64,
7368        #[allow(missing_docs)]
7369        pub blockHeight: u64,
7370        #[allow(missing_docs)]
7371        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7372    }
7373    #[allow(
7374        non_camel_case_types,
7375        non_snake_case,
7376        clippy::pub_underscore_fields,
7377        clippy::style
7378    )]
7379    const _: () = {
7380        use alloy::sol_types as alloy_sol_types;
7381        {
7382            #[doc(hidden)]
7383            #[allow(dead_code)]
7384            type UnderlyingSolTuple<'a> = ();
7385            #[doc(hidden)]
7386            type UnderlyingRustTuple<'a> = ();
7387            #[cfg(test)]
7388            #[allow(dead_code, unreachable_patterns)]
7389            fn _type_assertion(
7390                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7391            ) {
7392                match _t {
7393                    alloy_sol_types::private::AssertTypeEq::<
7394                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7395                    >(_) => {}
7396                }
7397            }
7398            #[automatically_derived]
7399            #[doc(hidden)]
7400            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7401                fn from(value: finalizedStateCall) -> Self {
7402                    ()
7403                }
7404            }
7405            #[automatically_derived]
7406            #[doc(hidden)]
7407            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7409                    Self
7410                }
7411            }
7412        }
7413        {
7414            #[doc(hidden)]
7415            #[allow(dead_code)]
7416            type UnderlyingSolTuple<'a> = (
7417                alloy::sol_types::sol_data::Uint<64>,
7418                alloy::sol_types::sol_data::Uint<64>,
7419                BN254::ScalarField,
7420            );
7421            #[doc(hidden)]
7422            type UnderlyingRustTuple<'a> = (
7423                u64,
7424                u64,
7425                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7426            );
7427            #[cfg(test)]
7428            #[allow(dead_code, unreachable_patterns)]
7429            fn _type_assertion(
7430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7431            ) {
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<finalizedStateReturn>
7441            for UnderlyingRustTuple<'_> {
7442                fn from(value: finalizedStateReturn) -> Self {
7443                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7444                }
7445            }
7446            #[automatically_derived]
7447            #[doc(hidden)]
7448            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7449            for finalizedStateReturn {
7450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7451                    Self {
7452                        viewNum: tuple.0,
7453                        blockHeight: tuple.1,
7454                        blockCommRoot: tuple.2,
7455                    }
7456                }
7457            }
7458        }
7459        impl finalizedStateReturn {
7460            fn _tokenize(
7461                &self,
7462            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7463                (
7464                    <alloy::sol_types::sol_data::Uint<
7465                        64,
7466                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7467                    <alloy::sol_types::sol_data::Uint<
7468                        64,
7469                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7470                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7471                        &self.blockCommRoot,
7472                    ),
7473                )
7474            }
7475        }
7476        #[automatically_derived]
7477        impl alloy_sol_types::SolCall for finalizedStateCall {
7478            type Parameters<'a> = ();
7479            type Token<'a> = <Self::Parameters<
7480                'a,
7481            > as alloy_sol_types::SolType>::Token<'a>;
7482            type Return = finalizedStateReturn;
7483            type ReturnTuple<'a> = (
7484                alloy::sol_types::sol_data::Uint<64>,
7485                alloy::sol_types::sol_data::Uint<64>,
7486                BN254::ScalarField,
7487            );
7488            type ReturnToken<'a> = <Self::ReturnTuple<
7489                'a,
7490            > as alloy_sol_types::SolType>::Token<'a>;
7491            const SIGNATURE: &'static str = "finalizedState()";
7492            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7493            #[inline]
7494            fn new<'a>(
7495                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7496            ) -> Self {
7497                tuple.into()
7498            }
7499            #[inline]
7500            fn tokenize(&self) -> Self::Token<'_> {
7501                ()
7502            }
7503            #[inline]
7504            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7505                finalizedStateReturn::_tokenize(ret)
7506            }
7507            #[inline]
7508            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7509                <Self::ReturnTuple<
7510                    '_,
7511                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7512                    .map(Into::into)
7513            }
7514            #[inline]
7515            fn abi_decode_returns_validate(
7516                data: &[u8],
7517            ) -> alloy_sol_types::Result<Self::Return> {
7518                <Self::ReturnTuple<
7519                    '_,
7520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7521                    .map(Into::into)
7522            }
7523        }
7524    };
7525    #[derive(serde::Serialize, serde::Deserialize)]
7526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7527    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7528```solidity
7529function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7530```*/
7531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7532    #[derive(Clone)]
7533    pub struct genesisStakeTableStateCall;
7534    #[derive(serde::Serialize, serde::Deserialize)]
7535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7536    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7537    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7538    #[derive(Clone)]
7539    pub struct genesisStakeTableStateReturn {
7540        #[allow(missing_docs)]
7541        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7542        #[allow(missing_docs)]
7543        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7544        #[allow(missing_docs)]
7545        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7546        #[allow(missing_docs)]
7547        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7548    }
7549    #[allow(
7550        non_camel_case_types,
7551        non_snake_case,
7552        clippy::pub_underscore_fields,
7553        clippy::style
7554    )]
7555    const _: () = {
7556        use alloy::sol_types as alloy_sol_types;
7557        {
7558            #[doc(hidden)]
7559            #[allow(dead_code)]
7560            type UnderlyingSolTuple<'a> = ();
7561            #[doc(hidden)]
7562            type UnderlyingRustTuple<'a> = ();
7563            #[cfg(test)]
7564            #[allow(dead_code, unreachable_patterns)]
7565            fn _type_assertion(
7566                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7567            ) {
7568                match _t {
7569                    alloy_sol_types::private::AssertTypeEq::<
7570                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7571                    >(_) => {}
7572                }
7573            }
7574            #[automatically_derived]
7575            #[doc(hidden)]
7576            impl ::core::convert::From<genesisStakeTableStateCall>
7577            for UnderlyingRustTuple<'_> {
7578                fn from(value: genesisStakeTableStateCall) -> Self {
7579                    ()
7580                }
7581            }
7582            #[automatically_derived]
7583            #[doc(hidden)]
7584            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7585            for genesisStakeTableStateCall {
7586                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7587                    Self
7588                }
7589            }
7590        }
7591        {
7592            #[doc(hidden)]
7593            #[allow(dead_code)]
7594            type UnderlyingSolTuple<'a> = (
7595                alloy::sol_types::sol_data::Uint<256>,
7596                BN254::ScalarField,
7597                BN254::ScalarField,
7598                BN254::ScalarField,
7599            );
7600            #[doc(hidden)]
7601            type UnderlyingRustTuple<'a> = (
7602                alloy::sol_types::private::primitives::aliases::U256,
7603                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7604                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7605                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7606            );
7607            #[cfg(test)]
7608            #[allow(dead_code, unreachable_patterns)]
7609            fn _type_assertion(
7610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7611            ) {
7612                match _t {
7613                    alloy_sol_types::private::AssertTypeEq::<
7614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7615                    >(_) => {}
7616                }
7617            }
7618            #[automatically_derived]
7619            #[doc(hidden)]
7620            impl ::core::convert::From<genesisStakeTableStateReturn>
7621            for UnderlyingRustTuple<'_> {
7622                fn from(value: genesisStakeTableStateReturn) -> Self {
7623                    (
7624                        value.threshold,
7625                        value.blsKeyComm,
7626                        value.schnorrKeyComm,
7627                        value.amountComm,
7628                    )
7629                }
7630            }
7631            #[automatically_derived]
7632            #[doc(hidden)]
7633            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7634            for genesisStakeTableStateReturn {
7635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7636                    Self {
7637                        threshold: tuple.0,
7638                        blsKeyComm: tuple.1,
7639                        schnorrKeyComm: tuple.2,
7640                        amountComm: tuple.3,
7641                    }
7642                }
7643            }
7644        }
7645        impl genesisStakeTableStateReturn {
7646            fn _tokenize(
7647                &self,
7648            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7649                '_,
7650            > {
7651                (
7652                    <alloy::sol_types::sol_data::Uint<
7653                        256,
7654                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7655                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7656                        &self.blsKeyComm,
7657                    ),
7658                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7659                        &self.schnorrKeyComm,
7660                    ),
7661                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7662                        &self.amountComm,
7663                    ),
7664                )
7665            }
7666        }
7667        #[automatically_derived]
7668        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7669            type Parameters<'a> = ();
7670            type Token<'a> = <Self::Parameters<
7671                'a,
7672            > as alloy_sol_types::SolType>::Token<'a>;
7673            type Return = genesisStakeTableStateReturn;
7674            type ReturnTuple<'a> = (
7675                alloy::sol_types::sol_data::Uint<256>,
7676                BN254::ScalarField,
7677                BN254::ScalarField,
7678                BN254::ScalarField,
7679            );
7680            type ReturnToken<'a> = <Self::ReturnTuple<
7681                'a,
7682            > as alloy_sol_types::SolType>::Token<'a>;
7683            const SIGNATURE: &'static str = "genesisStakeTableState()";
7684            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7685            #[inline]
7686            fn new<'a>(
7687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7688            ) -> Self {
7689                tuple.into()
7690            }
7691            #[inline]
7692            fn tokenize(&self) -> Self::Token<'_> {
7693                ()
7694            }
7695            #[inline]
7696            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7697                genesisStakeTableStateReturn::_tokenize(ret)
7698            }
7699            #[inline]
7700            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7701                <Self::ReturnTuple<
7702                    '_,
7703                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7704                    .map(Into::into)
7705            }
7706            #[inline]
7707            fn abi_decode_returns_validate(
7708                data: &[u8],
7709            ) -> alloy_sol_types::Result<Self::Return> {
7710                <Self::ReturnTuple<
7711                    '_,
7712                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7713                    .map(Into::into)
7714            }
7715        }
7716    };
7717    #[derive(serde::Serialize, serde::Deserialize)]
7718    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7719    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7720```solidity
7721function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7722```*/
7723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7724    #[derive(Clone)]
7725    pub struct genesisStateCall;
7726    #[derive(serde::Serialize, serde::Deserialize)]
7727    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7728    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7730    #[derive(Clone)]
7731    pub struct genesisStateReturn {
7732        #[allow(missing_docs)]
7733        pub viewNum: u64,
7734        #[allow(missing_docs)]
7735        pub blockHeight: u64,
7736        #[allow(missing_docs)]
7737        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7738    }
7739    #[allow(
7740        non_camel_case_types,
7741        non_snake_case,
7742        clippy::pub_underscore_fields,
7743        clippy::style
7744    )]
7745    const _: () = {
7746        use alloy::sol_types as alloy_sol_types;
7747        {
7748            #[doc(hidden)]
7749            #[allow(dead_code)]
7750            type UnderlyingSolTuple<'a> = ();
7751            #[doc(hidden)]
7752            type UnderlyingRustTuple<'a> = ();
7753            #[cfg(test)]
7754            #[allow(dead_code, unreachable_patterns)]
7755            fn _type_assertion(
7756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7757            ) {
7758                match _t {
7759                    alloy_sol_types::private::AssertTypeEq::<
7760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7761                    >(_) => {}
7762                }
7763            }
7764            #[automatically_derived]
7765            #[doc(hidden)]
7766            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7767                fn from(value: genesisStateCall) -> Self {
7768                    ()
7769                }
7770            }
7771            #[automatically_derived]
7772            #[doc(hidden)]
7773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7775                    Self
7776                }
7777            }
7778        }
7779        {
7780            #[doc(hidden)]
7781            #[allow(dead_code)]
7782            type UnderlyingSolTuple<'a> = (
7783                alloy::sol_types::sol_data::Uint<64>,
7784                alloy::sol_types::sol_data::Uint<64>,
7785                BN254::ScalarField,
7786            );
7787            #[doc(hidden)]
7788            type UnderlyingRustTuple<'a> = (
7789                u64,
7790                u64,
7791                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7792            );
7793            #[cfg(test)]
7794            #[allow(dead_code, unreachable_patterns)]
7795            fn _type_assertion(
7796                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7797            ) {
7798                match _t {
7799                    alloy_sol_types::private::AssertTypeEq::<
7800                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7801                    >(_) => {}
7802                }
7803            }
7804            #[automatically_derived]
7805            #[doc(hidden)]
7806            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7807                fn from(value: genesisStateReturn) -> Self {
7808                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7809                }
7810            }
7811            #[automatically_derived]
7812            #[doc(hidden)]
7813            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7814                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7815                    Self {
7816                        viewNum: tuple.0,
7817                        blockHeight: tuple.1,
7818                        blockCommRoot: tuple.2,
7819                    }
7820                }
7821            }
7822        }
7823        impl genesisStateReturn {
7824            fn _tokenize(
7825                &self,
7826            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7827                (
7828                    <alloy::sol_types::sol_data::Uint<
7829                        64,
7830                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7831                    <alloy::sol_types::sol_data::Uint<
7832                        64,
7833                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7834                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7835                        &self.blockCommRoot,
7836                    ),
7837                )
7838            }
7839        }
7840        #[automatically_derived]
7841        impl alloy_sol_types::SolCall for genesisStateCall {
7842            type Parameters<'a> = ();
7843            type Token<'a> = <Self::Parameters<
7844                'a,
7845            > as alloy_sol_types::SolType>::Token<'a>;
7846            type Return = genesisStateReturn;
7847            type ReturnTuple<'a> = (
7848                alloy::sol_types::sol_data::Uint<64>,
7849                alloy::sol_types::sol_data::Uint<64>,
7850                BN254::ScalarField,
7851            );
7852            type ReturnToken<'a> = <Self::ReturnTuple<
7853                'a,
7854            > as alloy_sol_types::SolType>::Token<'a>;
7855            const SIGNATURE: &'static str = "genesisState()";
7856            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7857            #[inline]
7858            fn new<'a>(
7859                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7860            ) -> Self {
7861                tuple.into()
7862            }
7863            #[inline]
7864            fn tokenize(&self) -> Self::Token<'_> {
7865                ()
7866            }
7867            #[inline]
7868            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7869                genesisStateReturn::_tokenize(ret)
7870            }
7871            #[inline]
7872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7873                <Self::ReturnTuple<
7874                    '_,
7875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7876                    .map(Into::into)
7877            }
7878            #[inline]
7879            fn abi_decode_returns_validate(
7880                data: &[u8],
7881            ) -> alloy_sol_types::Result<Self::Return> {
7882                <Self::ReturnTuple<
7883                    '_,
7884                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7885                    .map(Into::into)
7886            }
7887        }
7888    };
7889    #[derive(serde::Serialize, serde::Deserialize)]
7890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7891    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7892```solidity
7893function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7894```*/
7895    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7896    #[derive(Clone)]
7897    pub struct getHotShotCommitmentCall {
7898        #[allow(missing_docs)]
7899        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7900    }
7901    #[derive(serde::Serialize, serde::Deserialize)]
7902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7903    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7904    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7905    #[derive(Clone)]
7906    pub struct getHotShotCommitmentReturn {
7907        #[allow(missing_docs)]
7908        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7909        #[allow(missing_docs)]
7910        pub hotshotBlockHeight: u64,
7911    }
7912    #[allow(
7913        non_camel_case_types,
7914        non_snake_case,
7915        clippy::pub_underscore_fields,
7916        clippy::style
7917    )]
7918    const _: () = {
7919        use alloy::sol_types as alloy_sol_types;
7920        {
7921            #[doc(hidden)]
7922            #[allow(dead_code)]
7923            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7924            #[doc(hidden)]
7925            type UnderlyingRustTuple<'a> = (
7926                alloy::sol_types::private::primitives::aliases::U256,
7927            );
7928            #[cfg(test)]
7929            #[allow(dead_code, unreachable_patterns)]
7930            fn _type_assertion(
7931                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7932            ) {
7933                match _t {
7934                    alloy_sol_types::private::AssertTypeEq::<
7935                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7936                    >(_) => {}
7937                }
7938            }
7939            #[automatically_derived]
7940            #[doc(hidden)]
7941            impl ::core::convert::From<getHotShotCommitmentCall>
7942            for UnderlyingRustTuple<'_> {
7943                fn from(value: getHotShotCommitmentCall) -> Self {
7944                    (value.hotShotBlockHeight,)
7945                }
7946            }
7947            #[automatically_derived]
7948            #[doc(hidden)]
7949            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7950            for getHotShotCommitmentCall {
7951                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7952                    Self {
7953                        hotShotBlockHeight: tuple.0,
7954                    }
7955                }
7956            }
7957        }
7958        {
7959            #[doc(hidden)]
7960            #[allow(dead_code)]
7961            type UnderlyingSolTuple<'a> = (
7962                BN254::ScalarField,
7963                alloy::sol_types::sol_data::Uint<64>,
7964            );
7965            #[doc(hidden)]
7966            type UnderlyingRustTuple<'a> = (
7967                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7968                u64,
7969            );
7970            #[cfg(test)]
7971            #[allow(dead_code, unreachable_patterns)]
7972            fn _type_assertion(
7973                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7974            ) {
7975                match _t {
7976                    alloy_sol_types::private::AssertTypeEq::<
7977                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7978                    >(_) => {}
7979                }
7980            }
7981            #[automatically_derived]
7982            #[doc(hidden)]
7983            impl ::core::convert::From<getHotShotCommitmentReturn>
7984            for UnderlyingRustTuple<'_> {
7985                fn from(value: getHotShotCommitmentReturn) -> Self {
7986                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7987                }
7988            }
7989            #[automatically_derived]
7990            #[doc(hidden)]
7991            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7992            for getHotShotCommitmentReturn {
7993                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7994                    Self {
7995                        hotShotBlockCommRoot: tuple.0,
7996                        hotshotBlockHeight: tuple.1,
7997                    }
7998                }
7999            }
8000        }
8001        impl getHotShotCommitmentReturn {
8002            fn _tokenize(
8003                &self,
8004            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8005                '_,
8006            > {
8007                (
8008                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8009                        &self.hotShotBlockCommRoot,
8010                    ),
8011                    <alloy::sol_types::sol_data::Uint<
8012                        64,
8013                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8014                )
8015            }
8016        }
8017        #[automatically_derived]
8018        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8019            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8020            type Token<'a> = <Self::Parameters<
8021                'a,
8022            > as alloy_sol_types::SolType>::Token<'a>;
8023            type Return = getHotShotCommitmentReturn;
8024            type ReturnTuple<'a> = (
8025                BN254::ScalarField,
8026                alloy::sol_types::sol_data::Uint<64>,
8027            );
8028            type ReturnToken<'a> = <Self::ReturnTuple<
8029                'a,
8030            > as alloy_sol_types::SolType>::Token<'a>;
8031            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8032            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8033            #[inline]
8034            fn new<'a>(
8035                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8036            ) -> Self {
8037                tuple.into()
8038            }
8039            #[inline]
8040            fn tokenize(&self) -> Self::Token<'_> {
8041                (
8042                    <alloy::sol_types::sol_data::Uint<
8043                        256,
8044                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8045                )
8046            }
8047            #[inline]
8048            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8049                getHotShotCommitmentReturn::_tokenize(ret)
8050            }
8051            #[inline]
8052            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8053                <Self::ReturnTuple<
8054                    '_,
8055                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8056                    .map(Into::into)
8057            }
8058            #[inline]
8059            fn abi_decode_returns_validate(
8060                data: &[u8],
8061            ) -> alloy_sol_types::Result<Self::Return> {
8062                <Self::ReturnTuple<
8063                    '_,
8064                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8065                    .map(Into::into)
8066            }
8067        }
8068    };
8069    #[derive(serde::Serialize, serde::Deserialize)]
8070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8071    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8072```solidity
8073function getStateHistoryCount() external view returns (uint256);
8074```*/
8075    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8076    #[derive(Clone)]
8077    pub struct getStateHistoryCountCall;
8078    #[derive(serde::Serialize, serde::Deserialize)]
8079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8080    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8082    #[derive(Clone)]
8083    pub struct getStateHistoryCountReturn {
8084        #[allow(missing_docs)]
8085        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8086    }
8087    #[allow(
8088        non_camel_case_types,
8089        non_snake_case,
8090        clippy::pub_underscore_fields,
8091        clippy::style
8092    )]
8093    const _: () = {
8094        use alloy::sol_types as alloy_sol_types;
8095        {
8096            #[doc(hidden)]
8097            #[allow(dead_code)]
8098            type UnderlyingSolTuple<'a> = ();
8099            #[doc(hidden)]
8100            type UnderlyingRustTuple<'a> = ();
8101            #[cfg(test)]
8102            #[allow(dead_code, unreachable_patterns)]
8103            fn _type_assertion(
8104                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8105            ) {
8106                match _t {
8107                    alloy_sol_types::private::AssertTypeEq::<
8108                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8109                    >(_) => {}
8110                }
8111            }
8112            #[automatically_derived]
8113            #[doc(hidden)]
8114            impl ::core::convert::From<getStateHistoryCountCall>
8115            for UnderlyingRustTuple<'_> {
8116                fn from(value: getStateHistoryCountCall) -> Self {
8117                    ()
8118                }
8119            }
8120            #[automatically_derived]
8121            #[doc(hidden)]
8122            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8123            for getStateHistoryCountCall {
8124                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8125                    Self
8126                }
8127            }
8128        }
8129        {
8130            #[doc(hidden)]
8131            #[allow(dead_code)]
8132            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8133            #[doc(hidden)]
8134            type UnderlyingRustTuple<'a> = (
8135                alloy::sol_types::private::primitives::aliases::U256,
8136            );
8137            #[cfg(test)]
8138            #[allow(dead_code, unreachable_patterns)]
8139            fn _type_assertion(
8140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8141            ) {
8142                match _t {
8143                    alloy_sol_types::private::AssertTypeEq::<
8144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8145                    >(_) => {}
8146                }
8147            }
8148            #[automatically_derived]
8149            #[doc(hidden)]
8150            impl ::core::convert::From<getStateHistoryCountReturn>
8151            for UnderlyingRustTuple<'_> {
8152                fn from(value: getStateHistoryCountReturn) -> Self {
8153                    (value._0,)
8154                }
8155            }
8156            #[automatically_derived]
8157            #[doc(hidden)]
8158            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8159            for getStateHistoryCountReturn {
8160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8161                    Self { _0: tuple.0 }
8162                }
8163            }
8164        }
8165        #[automatically_derived]
8166        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8167            type Parameters<'a> = ();
8168            type Token<'a> = <Self::Parameters<
8169                'a,
8170            > as alloy_sol_types::SolType>::Token<'a>;
8171            type Return = alloy::sol_types::private::primitives::aliases::U256;
8172            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8173            type ReturnToken<'a> = <Self::ReturnTuple<
8174                'a,
8175            > as alloy_sol_types::SolType>::Token<'a>;
8176            const SIGNATURE: &'static str = "getStateHistoryCount()";
8177            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8178            #[inline]
8179            fn new<'a>(
8180                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8181            ) -> Self {
8182                tuple.into()
8183            }
8184            #[inline]
8185            fn tokenize(&self) -> Self::Token<'_> {
8186                ()
8187            }
8188            #[inline]
8189            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8190                (
8191                    <alloy::sol_types::sol_data::Uint<
8192                        256,
8193                    > as alloy_sol_types::SolType>::tokenize(ret),
8194                )
8195            }
8196            #[inline]
8197            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8198                <Self::ReturnTuple<
8199                    '_,
8200                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8201                    .map(|r| {
8202                        let r: getStateHistoryCountReturn = r.into();
8203                        r._0
8204                    })
8205            }
8206            #[inline]
8207            fn abi_decode_returns_validate(
8208                data: &[u8],
8209            ) -> alloy_sol_types::Result<Self::Return> {
8210                <Self::ReturnTuple<
8211                    '_,
8212                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8213                    .map(|r| {
8214                        let r: getStateHistoryCountReturn = r.into();
8215                        r._0
8216                    })
8217            }
8218        }
8219    };
8220    #[derive(serde::Serialize, serde::Deserialize)]
8221    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8222    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8223```solidity
8224function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8225```*/
8226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8227    #[derive(Clone)]
8228    pub struct getVersionCall;
8229    #[derive(serde::Serialize, serde::Deserialize)]
8230    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8231    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8233    #[derive(Clone)]
8234    pub struct getVersionReturn {
8235        #[allow(missing_docs)]
8236        pub majorVersion: u8,
8237        #[allow(missing_docs)]
8238        pub minorVersion: u8,
8239        #[allow(missing_docs)]
8240        pub patchVersion: u8,
8241    }
8242    #[allow(
8243        non_camel_case_types,
8244        non_snake_case,
8245        clippy::pub_underscore_fields,
8246        clippy::style
8247    )]
8248    const _: () = {
8249        use alloy::sol_types as alloy_sol_types;
8250        {
8251            #[doc(hidden)]
8252            #[allow(dead_code)]
8253            type UnderlyingSolTuple<'a> = ();
8254            #[doc(hidden)]
8255            type UnderlyingRustTuple<'a> = ();
8256            #[cfg(test)]
8257            #[allow(dead_code, unreachable_patterns)]
8258            fn _type_assertion(
8259                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8260            ) {
8261                match _t {
8262                    alloy_sol_types::private::AssertTypeEq::<
8263                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8264                    >(_) => {}
8265                }
8266            }
8267            #[automatically_derived]
8268            #[doc(hidden)]
8269            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8270                fn from(value: getVersionCall) -> Self {
8271                    ()
8272                }
8273            }
8274            #[automatically_derived]
8275            #[doc(hidden)]
8276            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8277                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8278                    Self
8279                }
8280            }
8281        }
8282        {
8283            #[doc(hidden)]
8284            #[allow(dead_code)]
8285            type UnderlyingSolTuple<'a> = (
8286                alloy::sol_types::sol_data::Uint<8>,
8287                alloy::sol_types::sol_data::Uint<8>,
8288                alloy::sol_types::sol_data::Uint<8>,
8289            );
8290            #[doc(hidden)]
8291            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8292            #[cfg(test)]
8293            #[allow(dead_code, unreachable_patterns)]
8294            fn _type_assertion(
8295                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8296            ) {
8297                match _t {
8298                    alloy_sol_types::private::AssertTypeEq::<
8299                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8300                    >(_) => {}
8301                }
8302            }
8303            #[automatically_derived]
8304            #[doc(hidden)]
8305            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8306                fn from(value: getVersionReturn) -> Self {
8307                    (value.majorVersion, value.minorVersion, value.patchVersion)
8308                }
8309            }
8310            #[automatically_derived]
8311            #[doc(hidden)]
8312            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8314                    Self {
8315                        majorVersion: tuple.0,
8316                        minorVersion: tuple.1,
8317                        patchVersion: tuple.2,
8318                    }
8319                }
8320            }
8321        }
8322        impl getVersionReturn {
8323            fn _tokenize(
8324                &self,
8325            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8326                (
8327                    <alloy::sol_types::sol_data::Uint<
8328                        8,
8329                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8330                    <alloy::sol_types::sol_data::Uint<
8331                        8,
8332                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8333                    <alloy::sol_types::sol_data::Uint<
8334                        8,
8335                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8336                )
8337            }
8338        }
8339        #[automatically_derived]
8340        impl alloy_sol_types::SolCall for getVersionCall {
8341            type Parameters<'a> = ();
8342            type Token<'a> = <Self::Parameters<
8343                'a,
8344            > as alloy_sol_types::SolType>::Token<'a>;
8345            type Return = getVersionReturn;
8346            type ReturnTuple<'a> = (
8347                alloy::sol_types::sol_data::Uint<8>,
8348                alloy::sol_types::sol_data::Uint<8>,
8349                alloy::sol_types::sol_data::Uint<8>,
8350            );
8351            type ReturnToken<'a> = <Self::ReturnTuple<
8352                'a,
8353            > as alloy_sol_types::SolType>::Token<'a>;
8354            const SIGNATURE: &'static str = "getVersion()";
8355            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8356            #[inline]
8357            fn new<'a>(
8358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8359            ) -> Self {
8360                tuple.into()
8361            }
8362            #[inline]
8363            fn tokenize(&self) -> Self::Token<'_> {
8364                ()
8365            }
8366            #[inline]
8367            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8368                getVersionReturn::_tokenize(ret)
8369            }
8370            #[inline]
8371            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8372                <Self::ReturnTuple<
8373                    '_,
8374                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8375                    .map(Into::into)
8376            }
8377            #[inline]
8378            fn abi_decode_returns_validate(
8379                data: &[u8],
8380            ) -> alloy_sol_types::Result<Self::Return> {
8381                <Self::ReturnTuple<
8382                    '_,
8383                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8384                    .map(Into::into)
8385            }
8386        }
8387    };
8388    #[derive(serde::Serialize, serde::Deserialize)]
8389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8390    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8391```solidity
8392function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8393```*/
8394    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8395    #[derive(Clone)]
8396    pub struct initializeCall {
8397        #[allow(missing_docs)]
8398        pub _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
8399        #[allow(missing_docs)]
8400        pub _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
8401        #[allow(missing_docs)]
8402        pub _stateHistoryRetentionPeriod: u32,
8403        #[allow(missing_docs)]
8404        pub owner: alloy::sol_types::private::Address,
8405    }
8406    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8408    #[derive(Clone)]
8409    pub struct initializeReturn {}
8410    #[allow(
8411        non_camel_case_types,
8412        non_snake_case,
8413        clippy::pub_underscore_fields,
8414        clippy::style
8415    )]
8416    const _: () = {
8417        use alloy::sol_types as alloy_sol_types;
8418        {
8419            #[doc(hidden)]
8420            #[allow(dead_code)]
8421            type UnderlyingSolTuple<'a> = (
8422                LightClientState,
8423                StakeTableState,
8424                alloy::sol_types::sol_data::Uint<32>,
8425                alloy::sol_types::sol_data::Address,
8426            );
8427            #[doc(hidden)]
8428            type UnderlyingRustTuple<'a> = (
8429                <LightClientState as alloy::sol_types::SolType>::RustType,
8430                <StakeTableState as alloy::sol_types::SolType>::RustType,
8431                u32,
8432                alloy::sol_types::private::Address,
8433            );
8434            #[cfg(test)]
8435            #[allow(dead_code, unreachable_patterns)]
8436            fn _type_assertion(
8437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8438            ) {
8439                match _t {
8440                    alloy_sol_types::private::AssertTypeEq::<
8441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8442                    >(_) => {}
8443                }
8444            }
8445            #[automatically_derived]
8446            #[doc(hidden)]
8447            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8448                fn from(value: initializeCall) -> Self {
8449                    (
8450                        value._genesis,
8451                        value._genesisStakeTableState,
8452                        value._stateHistoryRetentionPeriod,
8453                        value.owner,
8454                    )
8455                }
8456            }
8457            #[automatically_derived]
8458            #[doc(hidden)]
8459            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8461                    Self {
8462                        _genesis: tuple.0,
8463                        _genesisStakeTableState: tuple.1,
8464                        _stateHistoryRetentionPeriod: tuple.2,
8465                        owner: tuple.3,
8466                    }
8467                }
8468            }
8469        }
8470        {
8471            #[doc(hidden)]
8472            #[allow(dead_code)]
8473            type UnderlyingSolTuple<'a> = ();
8474            #[doc(hidden)]
8475            type UnderlyingRustTuple<'a> = ();
8476            #[cfg(test)]
8477            #[allow(dead_code, unreachable_patterns)]
8478            fn _type_assertion(
8479                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8480            ) {
8481                match _t {
8482                    alloy_sol_types::private::AssertTypeEq::<
8483                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8484                    >(_) => {}
8485                }
8486            }
8487            #[automatically_derived]
8488            #[doc(hidden)]
8489            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8490                fn from(value: initializeReturn) -> Self {
8491                    ()
8492                }
8493            }
8494            #[automatically_derived]
8495            #[doc(hidden)]
8496            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8498                    Self {}
8499                }
8500            }
8501        }
8502        impl initializeReturn {
8503            fn _tokenize(
8504                &self,
8505            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8506                ()
8507            }
8508        }
8509        #[automatically_derived]
8510        impl alloy_sol_types::SolCall for initializeCall {
8511            type Parameters<'a> = (
8512                LightClientState,
8513                StakeTableState,
8514                alloy::sol_types::sol_data::Uint<32>,
8515                alloy::sol_types::sol_data::Address,
8516            );
8517            type Token<'a> = <Self::Parameters<
8518                'a,
8519            > as alloy_sol_types::SolType>::Token<'a>;
8520            type Return = initializeReturn;
8521            type ReturnTuple<'a> = ();
8522            type ReturnToken<'a> = <Self::ReturnTuple<
8523                'a,
8524            > as alloy_sol_types::SolType>::Token<'a>;
8525            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8526            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8527            #[inline]
8528            fn new<'a>(
8529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8530            ) -> Self {
8531                tuple.into()
8532            }
8533            #[inline]
8534            fn tokenize(&self) -> Self::Token<'_> {
8535                (
8536                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8537                        &self._genesis,
8538                    ),
8539                    <StakeTableState as alloy_sol_types::SolType>::tokenize(
8540                        &self._genesisStakeTableState,
8541                    ),
8542                    <alloy::sol_types::sol_data::Uint<
8543                        32,
8544                    > as alloy_sol_types::SolType>::tokenize(
8545                        &self._stateHistoryRetentionPeriod,
8546                    ),
8547                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8548                        &self.owner,
8549                    ),
8550                )
8551            }
8552            #[inline]
8553            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8554                initializeReturn::_tokenize(ret)
8555            }
8556            #[inline]
8557            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8558                <Self::ReturnTuple<
8559                    '_,
8560                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8561                    .map(Into::into)
8562            }
8563            #[inline]
8564            fn abi_decode_returns_validate(
8565                data: &[u8],
8566            ) -> alloy_sol_types::Result<Self::Return> {
8567                <Self::ReturnTuple<
8568                    '_,
8569                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8570                    .map(Into::into)
8571            }
8572        }
8573    };
8574    #[derive(serde::Serialize, serde::Deserialize)]
8575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8576    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8577```solidity
8578function isPermissionedProverEnabled() external view returns (bool);
8579```*/
8580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8581    #[derive(Clone)]
8582    pub struct isPermissionedProverEnabledCall;
8583    #[derive(serde::Serialize, serde::Deserialize)]
8584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8585    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8587    #[derive(Clone)]
8588    pub struct isPermissionedProverEnabledReturn {
8589        #[allow(missing_docs)]
8590        pub _0: bool,
8591    }
8592    #[allow(
8593        non_camel_case_types,
8594        non_snake_case,
8595        clippy::pub_underscore_fields,
8596        clippy::style
8597    )]
8598    const _: () = {
8599        use alloy::sol_types as alloy_sol_types;
8600        {
8601            #[doc(hidden)]
8602            #[allow(dead_code)]
8603            type UnderlyingSolTuple<'a> = ();
8604            #[doc(hidden)]
8605            type UnderlyingRustTuple<'a> = ();
8606            #[cfg(test)]
8607            #[allow(dead_code, unreachable_patterns)]
8608            fn _type_assertion(
8609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8610            ) {
8611                match _t {
8612                    alloy_sol_types::private::AssertTypeEq::<
8613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8614                    >(_) => {}
8615                }
8616            }
8617            #[automatically_derived]
8618            #[doc(hidden)]
8619            impl ::core::convert::From<isPermissionedProverEnabledCall>
8620            for UnderlyingRustTuple<'_> {
8621                fn from(value: isPermissionedProverEnabledCall) -> Self {
8622                    ()
8623                }
8624            }
8625            #[automatically_derived]
8626            #[doc(hidden)]
8627            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8628            for isPermissionedProverEnabledCall {
8629                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8630                    Self
8631                }
8632            }
8633        }
8634        {
8635            #[doc(hidden)]
8636            #[allow(dead_code)]
8637            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8638            #[doc(hidden)]
8639            type UnderlyingRustTuple<'a> = (bool,);
8640            #[cfg(test)]
8641            #[allow(dead_code, unreachable_patterns)]
8642            fn _type_assertion(
8643                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8644            ) {
8645                match _t {
8646                    alloy_sol_types::private::AssertTypeEq::<
8647                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8648                    >(_) => {}
8649                }
8650            }
8651            #[automatically_derived]
8652            #[doc(hidden)]
8653            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8654            for UnderlyingRustTuple<'_> {
8655                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8656                    (value._0,)
8657                }
8658            }
8659            #[automatically_derived]
8660            #[doc(hidden)]
8661            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8662            for isPermissionedProverEnabledReturn {
8663                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8664                    Self { _0: tuple.0 }
8665                }
8666            }
8667        }
8668        #[automatically_derived]
8669        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8670            type Parameters<'a> = ();
8671            type Token<'a> = <Self::Parameters<
8672                'a,
8673            > as alloy_sol_types::SolType>::Token<'a>;
8674            type Return = bool;
8675            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8676            type ReturnToken<'a> = <Self::ReturnTuple<
8677                'a,
8678            > as alloy_sol_types::SolType>::Token<'a>;
8679            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8680            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8681            #[inline]
8682            fn new<'a>(
8683                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8684            ) -> Self {
8685                tuple.into()
8686            }
8687            #[inline]
8688            fn tokenize(&self) -> Self::Token<'_> {
8689                ()
8690            }
8691            #[inline]
8692            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8693                (
8694                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8695                        ret,
8696                    ),
8697                )
8698            }
8699            #[inline]
8700            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8701                <Self::ReturnTuple<
8702                    '_,
8703                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8704                    .map(|r| {
8705                        let r: isPermissionedProverEnabledReturn = r.into();
8706                        r._0
8707                    })
8708            }
8709            #[inline]
8710            fn abi_decode_returns_validate(
8711                data: &[u8],
8712            ) -> alloy_sol_types::Result<Self::Return> {
8713                <Self::ReturnTuple<
8714                    '_,
8715                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8716                    .map(|r| {
8717                        let r: isPermissionedProverEnabledReturn = r.into();
8718                        r._0
8719                    })
8720            }
8721        }
8722    };
8723    #[derive(serde::Serialize, serde::Deserialize)]
8724    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8725    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8726```solidity
8727function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8728```*/
8729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8730    #[derive(Clone)]
8731    pub struct lagOverEscapeHatchThresholdCall {
8732        #[allow(missing_docs)]
8733        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8734        #[allow(missing_docs)]
8735        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8736    }
8737    #[derive(serde::Serialize, serde::Deserialize)]
8738    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8739    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8741    #[derive(Clone)]
8742    pub struct lagOverEscapeHatchThresholdReturn {
8743        #[allow(missing_docs)]
8744        pub _0: bool,
8745    }
8746    #[allow(
8747        non_camel_case_types,
8748        non_snake_case,
8749        clippy::pub_underscore_fields,
8750        clippy::style
8751    )]
8752    const _: () = {
8753        use alloy::sol_types as alloy_sol_types;
8754        {
8755            #[doc(hidden)]
8756            #[allow(dead_code)]
8757            type UnderlyingSolTuple<'a> = (
8758                alloy::sol_types::sol_data::Uint<256>,
8759                alloy::sol_types::sol_data::Uint<256>,
8760            );
8761            #[doc(hidden)]
8762            type UnderlyingRustTuple<'a> = (
8763                alloy::sol_types::private::primitives::aliases::U256,
8764                alloy::sol_types::private::primitives::aliases::U256,
8765            );
8766            #[cfg(test)]
8767            #[allow(dead_code, unreachable_patterns)]
8768            fn _type_assertion(
8769                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8770            ) {
8771                match _t {
8772                    alloy_sol_types::private::AssertTypeEq::<
8773                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8774                    >(_) => {}
8775                }
8776            }
8777            #[automatically_derived]
8778            #[doc(hidden)]
8779            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8780            for UnderlyingRustTuple<'_> {
8781                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8782                    (value.blockNumber, value.blockThreshold)
8783                }
8784            }
8785            #[automatically_derived]
8786            #[doc(hidden)]
8787            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8788            for lagOverEscapeHatchThresholdCall {
8789                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8790                    Self {
8791                        blockNumber: tuple.0,
8792                        blockThreshold: tuple.1,
8793                    }
8794                }
8795            }
8796        }
8797        {
8798            #[doc(hidden)]
8799            #[allow(dead_code)]
8800            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8801            #[doc(hidden)]
8802            type UnderlyingRustTuple<'a> = (bool,);
8803            #[cfg(test)]
8804            #[allow(dead_code, unreachable_patterns)]
8805            fn _type_assertion(
8806                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8807            ) {
8808                match _t {
8809                    alloy_sol_types::private::AssertTypeEq::<
8810                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8811                    >(_) => {}
8812                }
8813            }
8814            #[automatically_derived]
8815            #[doc(hidden)]
8816            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8817            for UnderlyingRustTuple<'_> {
8818                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8819                    (value._0,)
8820                }
8821            }
8822            #[automatically_derived]
8823            #[doc(hidden)]
8824            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8825            for lagOverEscapeHatchThresholdReturn {
8826                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8827                    Self { _0: tuple.0 }
8828                }
8829            }
8830        }
8831        #[automatically_derived]
8832        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8833            type Parameters<'a> = (
8834                alloy::sol_types::sol_data::Uint<256>,
8835                alloy::sol_types::sol_data::Uint<256>,
8836            );
8837            type Token<'a> = <Self::Parameters<
8838                'a,
8839            > as alloy_sol_types::SolType>::Token<'a>;
8840            type Return = bool;
8841            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8842            type ReturnToken<'a> = <Self::ReturnTuple<
8843                'a,
8844            > as alloy_sol_types::SolType>::Token<'a>;
8845            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8846            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8847            #[inline]
8848            fn new<'a>(
8849                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8850            ) -> Self {
8851                tuple.into()
8852            }
8853            #[inline]
8854            fn tokenize(&self) -> Self::Token<'_> {
8855                (
8856                    <alloy::sol_types::sol_data::Uint<
8857                        256,
8858                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8859                    <alloy::sol_types::sol_data::Uint<
8860                        256,
8861                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8862                )
8863            }
8864            #[inline]
8865            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8866                (
8867                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8868                        ret,
8869                    ),
8870                )
8871            }
8872            #[inline]
8873            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8874                <Self::ReturnTuple<
8875                    '_,
8876                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8877                    .map(|r| {
8878                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8879                        r._0
8880                    })
8881            }
8882            #[inline]
8883            fn abi_decode_returns_validate(
8884                data: &[u8],
8885            ) -> alloy_sol_types::Result<Self::Return> {
8886                <Self::ReturnTuple<
8887                    '_,
8888                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8889                    .map(|r| {
8890                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8891                        r._0
8892                    })
8893            }
8894        }
8895    };
8896    #[derive(serde::Serialize, serde::Deserialize)]
8897    #[derive()]
8898    /**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`.
8899```solidity
8900function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8901```*/
8902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8903    #[derive(Clone)]
8904    pub struct newFinalizedStateCall {
8905        #[allow(missing_docs)]
8906        pub newState: <LightClientState as alloy::sol_types::SolType>::RustType,
8907        #[allow(missing_docs)]
8908        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8909    }
8910    ///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))`](newFinalizedStateCall) function.
8911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8912    #[derive(Clone)]
8913    pub struct newFinalizedStateReturn {}
8914    #[allow(
8915        non_camel_case_types,
8916        non_snake_case,
8917        clippy::pub_underscore_fields,
8918        clippy::style
8919    )]
8920    const _: () = {
8921        use alloy::sol_types as alloy_sol_types;
8922        {
8923            #[doc(hidden)]
8924            #[allow(dead_code)]
8925            type UnderlyingSolTuple<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8926            #[doc(hidden)]
8927            type UnderlyingRustTuple<'a> = (
8928                <LightClientState as alloy::sol_types::SolType>::RustType,
8929                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8930            );
8931            #[cfg(test)]
8932            #[allow(dead_code, unreachable_patterns)]
8933            fn _type_assertion(
8934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8935            ) {
8936                match _t {
8937                    alloy_sol_types::private::AssertTypeEq::<
8938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8939                    >(_) => {}
8940                }
8941            }
8942            #[automatically_derived]
8943            #[doc(hidden)]
8944            impl ::core::convert::From<newFinalizedStateCall>
8945            for UnderlyingRustTuple<'_> {
8946                fn from(value: newFinalizedStateCall) -> Self {
8947                    (value.newState, value.proof)
8948                }
8949            }
8950            #[automatically_derived]
8951            #[doc(hidden)]
8952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8953            for newFinalizedStateCall {
8954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8955                    Self {
8956                        newState: tuple.0,
8957                        proof: tuple.1,
8958                    }
8959                }
8960            }
8961        }
8962        {
8963            #[doc(hidden)]
8964            #[allow(dead_code)]
8965            type UnderlyingSolTuple<'a> = ();
8966            #[doc(hidden)]
8967            type UnderlyingRustTuple<'a> = ();
8968            #[cfg(test)]
8969            #[allow(dead_code, unreachable_patterns)]
8970            fn _type_assertion(
8971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8972            ) {
8973                match _t {
8974                    alloy_sol_types::private::AssertTypeEq::<
8975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8976                    >(_) => {}
8977                }
8978            }
8979            #[automatically_derived]
8980            #[doc(hidden)]
8981            impl ::core::convert::From<newFinalizedStateReturn>
8982            for UnderlyingRustTuple<'_> {
8983                fn from(value: newFinalizedStateReturn) -> Self {
8984                    ()
8985                }
8986            }
8987            #[automatically_derived]
8988            #[doc(hidden)]
8989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8990            for newFinalizedStateReturn {
8991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8992                    Self {}
8993                }
8994            }
8995        }
8996        impl newFinalizedStateReturn {
8997            fn _tokenize(
8998                &self,
8999            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9000                ()
9001            }
9002        }
9003        #[automatically_derived]
9004        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9005            type Parameters<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
9006            type Token<'a> = <Self::Parameters<
9007                'a,
9008            > as alloy_sol_types::SolType>::Token<'a>;
9009            type Return = newFinalizedStateReturn;
9010            type ReturnTuple<'a> = ();
9011            type ReturnToken<'a> = <Self::ReturnTuple<
9012                'a,
9013            > as alloy_sol_types::SolType>::Token<'a>;
9014            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))";
9015            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9016            #[inline]
9017            fn new<'a>(
9018                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9019            ) -> Self {
9020                tuple.into()
9021            }
9022            #[inline]
9023            fn tokenize(&self) -> Self::Token<'_> {
9024                (
9025                    <LightClientState as alloy_sol_types::SolType>::tokenize(
9026                        &self.newState,
9027                    ),
9028                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9029                        &self.proof,
9030                    ),
9031                )
9032            }
9033            #[inline]
9034            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9035                newFinalizedStateReturn::_tokenize(ret)
9036            }
9037            #[inline]
9038            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9039                <Self::ReturnTuple<
9040                    '_,
9041                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9042                    .map(Into::into)
9043            }
9044            #[inline]
9045            fn abi_decode_returns_validate(
9046                data: &[u8],
9047            ) -> alloy_sol_types::Result<Self::Return> {
9048                <Self::ReturnTuple<
9049                    '_,
9050                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9051                    .map(Into::into)
9052            }
9053        }
9054    };
9055    #[derive(serde::Serialize, serde::Deserialize)]
9056    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9057    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9058```solidity
9059function owner() external view returns (address);
9060```*/
9061    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9062    #[derive(Clone)]
9063    pub struct ownerCall;
9064    #[derive(serde::Serialize, serde::Deserialize)]
9065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9066    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9067    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9068    #[derive(Clone)]
9069    pub struct ownerReturn {
9070        #[allow(missing_docs)]
9071        pub _0: alloy::sol_types::private::Address,
9072    }
9073    #[allow(
9074        non_camel_case_types,
9075        non_snake_case,
9076        clippy::pub_underscore_fields,
9077        clippy::style
9078    )]
9079    const _: () = {
9080        use alloy::sol_types as alloy_sol_types;
9081        {
9082            #[doc(hidden)]
9083            #[allow(dead_code)]
9084            type UnderlyingSolTuple<'a> = ();
9085            #[doc(hidden)]
9086            type UnderlyingRustTuple<'a> = ();
9087            #[cfg(test)]
9088            #[allow(dead_code, unreachable_patterns)]
9089            fn _type_assertion(
9090                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9091            ) {
9092                match _t {
9093                    alloy_sol_types::private::AssertTypeEq::<
9094                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9095                    >(_) => {}
9096                }
9097            }
9098            #[automatically_derived]
9099            #[doc(hidden)]
9100            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9101                fn from(value: ownerCall) -> Self {
9102                    ()
9103                }
9104            }
9105            #[automatically_derived]
9106            #[doc(hidden)]
9107            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9108                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9109                    Self
9110                }
9111            }
9112        }
9113        {
9114            #[doc(hidden)]
9115            #[allow(dead_code)]
9116            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9117            #[doc(hidden)]
9118            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9119            #[cfg(test)]
9120            #[allow(dead_code, unreachable_patterns)]
9121            fn _type_assertion(
9122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9123            ) {
9124                match _t {
9125                    alloy_sol_types::private::AssertTypeEq::<
9126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9127                    >(_) => {}
9128                }
9129            }
9130            #[automatically_derived]
9131            #[doc(hidden)]
9132            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9133                fn from(value: ownerReturn) -> Self {
9134                    (value._0,)
9135                }
9136            }
9137            #[automatically_derived]
9138            #[doc(hidden)]
9139            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9140                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9141                    Self { _0: tuple.0 }
9142                }
9143            }
9144        }
9145        #[automatically_derived]
9146        impl alloy_sol_types::SolCall for ownerCall {
9147            type Parameters<'a> = ();
9148            type Token<'a> = <Self::Parameters<
9149                'a,
9150            > as alloy_sol_types::SolType>::Token<'a>;
9151            type Return = alloy::sol_types::private::Address;
9152            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9153            type ReturnToken<'a> = <Self::ReturnTuple<
9154                'a,
9155            > as alloy_sol_types::SolType>::Token<'a>;
9156            const SIGNATURE: &'static str = "owner()";
9157            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9158            #[inline]
9159            fn new<'a>(
9160                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9161            ) -> Self {
9162                tuple.into()
9163            }
9164            #[inline]
9165            fn tokenize(&self) -> Self::Token<'_> {
9166                ()
9167            }
9168            #[inline]
9169            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9170                (
9171                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9172                        ret,
9173                    ),
9174                )
9175            }
9176            #[inline]
9177            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9178                <Self::ReturnTuple<
9179                    '_,
9180                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9181                    .map(|r| {
9182                        let r: ownerReturn = r.into();
9183                        r._0
9184                    })
9185            }
9186            #[inline]
9187            fn abi_decode_returns_validate(
9188                data: &[u8],
9189            ) -> alloy_sol_types::Result<Self::Return> {
9190                <Self::ReturnTuple<
9191                    '_,
9192                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9193                    .map(|r| {
9194                        let r: ownerReturn = r.into();
9195                        r._0
9196                    })
9197            }
9198        }
9199    };
9200    #[derive(serde::Serialize, serde::Deserialize)]
9201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9202    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9203```solidity
9204function permissionedProver() external view returns (address);
9205```*/
9206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9207    #[derive(Clone)]
9208    pub struct permissionedProverCall;
9209    #[derive(serde::Serialize, serde::Deserialize)]
9210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9211    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9212    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9213    #[derive(Clone)]
9214    pub struct permissionedProverReturn {
9215        #[allow(missing_docs)]
9216        pub _0: alloy::sol_types::private::Address,
9217    }
9218    #[allow(
9219        non_camel_case_types,
9220        non_snake_case,
9221        clippy::pub_underscore_fields,
9222        clippy::style
9223    )]
9224    const _: () = {
9225        use alloy::sol_types as alloy_sol_types;
9226        {
9227            #[doc(hidden)]
9228            #[allow(dead_code)]
9229            type UnderlyingSolTuple<'a> = ();
9230            #[doc(hidden)]
9231            type UnderlyingRustTuple<'a> = ();
9232            #[cfg(test)]
9233            #[allow(dead_code, unreachable_patterns)]
9234            fn _type_assertion(
9235                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9236            ) {
9237                match _t {
9238                    alloy_sol_types::private::AssertTypeEq::<
9239                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9240                    >(_) => {}
9241                }
9242            }
9243            #[automatically_derived]
9244            #[doc(hidden)]
9245            impl ::core::convert::From<permissionedProverCall>
9246            for UnderlyingRustTuple<'_> {
9247                fn from(value: permissionedProverCall) -> Self {
9248                    ()
9249                }
9250            }
9251            #[automatically_derived]
9252            #[doc(hidden)]
9253            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9254            for permissionedProverCall {
9255                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9256                    Self
9257                }
9258            }
9259        }
9260        {
9261            #[doc(hidden)]
9262            #[allow(dead_code)]
9263            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9264            #[doc(hidden)]
9265            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9266            #[cfg(test)]
9267            #[allow(dead_code, unreachable_patterns)]
9268            fn _type_assertion(
9269                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9270            ) {
9271                match _t {
9272                    alloy_sol_types::private::AssertTypeEq::<
9273                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9274                    >(_) => {}
9275                }
9276            }
9277            #[automatically_derived]
9278            #[doc(hidden)]
9279            impl ::core::convert::From<permissionedProverReturn>
9280            for UnderlyingRustTuple<'_> {
9281                fn from(value: permissionedProverReturn) -> Self {
9282                    (value._0,)
9283                }
9284            }
9285            #[automatically_derived]
9286            #[doc(hidden)]
9287            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9288            for permissionedProverReturn {
9289                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9290                    Self { _0: tuple.0 }
9291                }
9292            }
9293        }
9294        #[automatically_derived]
9295        impl alloy_sol_types::SolCall for permissionedProverCall {
9296            type Parameters<'a> = ();
9297            type Token<'a> = <Self::Parameters<
9298                'a,
9299            > as alloy_sol_types::SolType>::Token<'a>;
9300            type Return = alloy::sol_types::private::Address;
9301            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9302            type ReturnToken<'a> = <Self::ReturnTuple<
9303                'a,
9304            > as alloy_sol_types::SolType>::Token<'a>;
9305            const SIGNATURE: &'static str = "permissionedProver()";
9306            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9307            #[inline]
9308            fn new<'a>(
9309                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9310            ) -> Self {
9311                tuple.into()
9312            }
9313            #[inline]
9314            fn tokenize(&self) -> Self::Token<'_> {
9315                ()
9316            }
9317            #[inline]
9318            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9319                (
9320                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9321                        ret,
9322                    ),
9323                )
9324            }
9325            #[inline]
9326            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9327                <Self::ReturnTuple<
9328                    '_,
9329                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9330                    .map(|r| {
9331                        let r: permissionedProverReturn = r.into();
9332                        r._0
9333                    })
9334            }
9335            #[inline]
9336            fn abi_decode_returns_validate(
9337                data: &[u8],
9338            ) -> alloy_sol_types::Result<Self::Return> {
9339                <Self::ReturnTuple<
9340                    '_,
9341                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9342                    .map(|r| {
9343                        let r: permissionedProverReturn = r.into();
9344                        r._0
9345                    })
9346            }
9347        }
9348    };
9349    #[derive(serde::Serialize, serde::Deserialize)]
9350    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9351    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9352```solidity
9353function proxiableUUID() external view returns (bytes32);
9354```*/
9355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9356    #[derive(Clone)]
9357    pub struct proxiableUUIDCall;
9358    #[derive(serde::Serialize, serde::Deserialize)]
9359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9360    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9361    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9362    #[derive(Clone)]
9363    pub struct proxiableUUIDReturn {
9364        #[allow(missing_docs)]
9365        pub _0: alloy::sol_types::private::FixedBytes<32>,
9366    }
9367    #[allow(
9368        non_camel_case_types,
9369        non_snake_case,
9370        clippy::pub_underscore_fields,
9371        clippy::style
9372    )]
9373    const _: () = {
9374        use alloy::sol_types as alloy_sol_types;
9375        {
9376            #[doc(hidden)]
9377            #[allow(dead_code)]
9378            type UnderlyingSolTuple<'a> = ();
9379            #[doc(hidden)]
9380            type UnderlyingRustTuple<'a> = ();
9381            #[cfg(test)]
9382            #[allow(dead_code, unreachable_patterns)]
9383            fn _type_assertion(
9384                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9385            ) {
9386                match _t {
9387                    alloy_sol_types::private::AssertTypeEq::<
9388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9389                    >(_) => {}
9390                }
9391            }
9392            #[automatically_derived]
9393            #[doc(hidden)]
9394            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9395                fn from(value: proxiableUUIDCall) -> Self {
9396                    ()
9397                }
9398            }
9399            #[automatically_derived]
9400            #[doc(hidden)]
9401            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9402                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9403                    Self
9404                }
9405            }
9406        }
9407        {
9408            #[doc(hidden)]
9409            #[allow(dead_code)]
9410            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9411            #[doc(hidden)]
9412            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9413            #[cfg(test)]
9414            #[allow(dead_code, unreachable_patterns)]
9415            fn _type_assertion(
9416                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9417            ) {
9418                match _t {
9419                    alloy_sol_types::private::AssertTypeEq::<
9420                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9421                    >(_) => {}
9422                }
9423            }
9424            #[automatically_derived]
9425            #[doc(hidden)]
9426            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9427                fn from(value: proxiableUUIDReturn) -> Self {
9428                    (value._0,)
9429                }
9430            }
9431            #[automatically_derived]
9432            #[doc(hidden)]
9433            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9435                    Self { _0: tuple.0 }
9436                }
9437            }
9438        }
9439        #[automatically_derived]
9440        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9441            type Parameters<'a> = ();
9442            type Token<'a> = <Self::Parameters<
9443                'a,
9444            > as alloy_sol_types::SolType>::Token<'a>;
9445            type Return = alloy::sol_types::private::FixedBytes<32>;
9446            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9447            type ReturnToken<'a> = <Self::ReturnTuple<
9448                'a,
9449            > as alloy_sol_types::SolType>::Token<'a>;
9450            const SIGNATURE: &'static str = "proxiableUUID()";
9451            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9452            #[inline]
9453            fn new<'a>(
9454                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9455            ) -> Self {
9456                tuple.into()
9457            }
9458            #[inline]
9459            fn tokenize(&self) -> Self::Token<'_> {
9460                ()
9461            }
9462            #[inline]
9463            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9464                (
9465                    <alloy::sol_types::sol_data::FixedBytes<
9466                        32,
9467                    > as alloy_sol_types::SolType>::tokenize(ret),
9468                )
9469            }
9470            #[inline]
9471            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9472                <Self::ReturnTuple<
9473                    '_,
9474                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9475                    .map(|r| {
9476                        let r: proxiableUUIDReturn = r.into();
9477                        r._0
9478                    })
9479            }
9480            #[inline]
9481            fn abi_decode_returns_validate(
9482                data: &[u8],
9483            ) -> alloy_sol_types::Result<Self::Return> {
9484                <Self::ReturnTuple<
9485                    '_,
9486                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9487                    .map(|r| {
9488                        let r: proxiableUUIDReturn = r.into();
9489                        r._0
9490                    })
9491            }
9492        }
9493    };
9494    #[derive(serde::Serialize, serde::Deserialize)]
9495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9496    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9497```solidity
9498function renounceOwnership() external;
9499```*/
9500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9501    #[derive(Clone)]
9502    pub struct renounceOwnershipCall;
9503    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9504    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9505    #[derive(Clone)]
9506    pub struct renounceOwnershipReturn {}
9507    #[allow(
9508        non_camel_case_types,
9509        non_snake_case,
9510        clippy::pub_underscore_fields,
9511        clippy::style
9512    )]
9513    const _: () = {
9514        use alloy::sol_types as alloy_sol_types;
9515        {
9516            #[doc(hidden)]
9517            #[allow(dead_code)]
9518            type UnderlyingSolTuple<'a> = ();
9519            #[doc(hidden)]
9520            type UnderlyingRustTuple<'a> = ();
9521            #[cfg(test)]
9522            #[allow(dead_code, unreachable_patterns)]
9523            fn _type_assertion(
9524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9525            ) {
9526                match _t {
9527                    alloy_sol_types::private::AssertTypeEq::<
9528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9529                    >(_) => {}
9530                }
9531            }
9532            #[automatically_derived]
9533            #[doc(hidden)]
9534            impl ::core::convert::From<renounceOwnershipCall>
9535            for UnderlyingRustTuple<'_> {
9536                fn from(value: renounceOwnershipCall) -> Self {
9537                    ()
9538                }
9539            }
9540            #[automatically_derived]
9541            #[doc(hidden)]
9542            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9543            for renounceOwnershipCall {
9544                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9545                    Self
9546                }
9547            }
9548        }
9549        {
9550            #[doc(hidden)]
9551            #[allow(dead_code)]
9552            type UnderlyingSolTuple<'a> = ();
9553            #[doc(hidden)]
9554            type UnderlyingRustTuple<'a> = ();
9555            #[cfg(test)]
9556            #[allow(dead_code, unreachable_patterns)]
9557            fn _type_assertion(
9558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9559            ) {
9560                match _t {
9561                    alloy_sol_types::private::AssertTypeEq::<
9562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9563                    >(_) => {}
9564                }
9565            }
9566            #[automatically_derived]
9567            #[doc(hidden)]
9568            impl ::core::convert::From<renounceOwnershipReturn>
9569            for UnderlyingRustTuple<'_> {
9570                fn from(value: renounceOwnershipReturn) -> Self {
9571                    ()
9572                }
9573            }
9574            #[automatically_derived]
9575            #[doc(hidden)]
9576            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9577            for renounceOwnershipReturn {
9578                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9579                    Self {}
9580                }
9581            }
9582        }
9583        impl renounceOwnershipReturn {
9584            fn _tokenize(
9585                &self,
9586            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9587                ()
9588            }
9589        }
9590        #[automatically_derived]
9591        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9592            type Parameters<'a> = ();
9593            type Token<'a> = <Self::Parameters<
9594                'a,
9595            > as alloy_sol_types::SolType>::Token<'a>;
9596            type Return = renounceOwnershipReturn;
9597            type ReturnTuple<'a> = ();
9598            type ReturnToken<'a> = <Self::ReturnTuple<
9599                'a,
9600            > as alloy_sol_types::SolType>::Token<'a>;
9601            const SIGNATURE: &'static str = "renounceOwnership()";
9602            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9603            #[inline]
9604            fn new<'a>(
9605                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9606            ) -> Self {
9607                tuple.into()
9608            }
9609            #[inline]
9610            fn tokenize(&self) -> Self::Token<'_> {
9611                ()
9612            }
9613            #[inline]
9614            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9615                renounceOwnershipReturn::_tokenize(ret)
9616            }
9617            #[inline]
9618            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9619                <Self::ReturnTuple<
9620                    '_,
9621                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9622                    .map(Into::into)
9623            }
9624            #[inline]
9625            fn abi_decode_returns_validate(
9626                data: &[u8],
9627            ) -> alloy_sol_types::Result<Self::Return> {
9628                <Self::ReturnTuple<
9629                    '_,
9630                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9631                    .map(Into::into)
9632            }
9633        }
9634    };
9635    #[derive(serde::Serialize, serde::Deserialize)]
9636    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9637    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9638```solidity
9639function setPermissionedProver(address prover) external;
9640```*/
9641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9642    #[derive(Clone)]
9643    pub struct setPermissionedProverCall {
9644        #[allow(missing_docs)]
9645        pub prover: alloy::sol_types::private::Address,
9646    }
9647    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9649    #[derive(Clone)]
9650    pub struct setPermissionedProverReturn {}
9651    #[allow(
9652        non_camel_case_types,
9653        non_snake_case,
9654        clippy::pub_underscore_fields,
9655        clippy::style
9656    )]
9657    const _: () = {
9658        use alloy::sol_types as alloy_sol_types;
9659        {
9660            #[doc(hidden)]
9661            #[allow(dead_code)]
9662            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9663            #[doc(hidden)]
9664            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9665            #[cfg(test)]
9666            #[allow(dead_code, unreachable_patterns)]
9667            fn _type_assertion(
9668                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9669            ) {
9670                match _t {
9671                    alloy_sol_types::private::AssertTypeEq::<
9672                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9673                    >(_) => {}
9674                }
9675            }
9676            #[automatically_derived]
9677            #[doc(hidden)]
9678            impl ::core::convert::From<setPermissionedProverCall>
9679            for UnderlyingRustTuple<'_> {
9680                fn from(value: setPermissionedProverCall) -> Self {
9681                    (value.prover,)
9682                }
9683            }
9684            #[automatically_derived]
9685            #[doc(hidden)]
9686            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9687            for setPermissionedProverCall {
9688                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9689                    Self { prover: tuple.0 }
9690                }
9691            }
9692        }
9693        {
9694            #[doc(hidden)]
9695            #[allow(dead_code)]
9696            type UnderlyingSolTuple<'a> = ();
9697            #[doc(hidden)]
9698            type UnderlyingRustTuple<'a> = ();
9699            #[cfg(test)]
9700            #[allow(dead_code, unreachable_patterns)]
9701            fn _type_assertion(
9702                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9703            ) {
9704                match _t {
9705                    alloy_sol_types::private::AssertTypeEq::<
9706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9707                    >(_) => {}
9708                }
9709            }
9710            #[automatically_derived]
9711            #[doc(hidden)]
9712            impl ::core::convert::From<setPermissionedProverReturn>
9713            for UnderlyingRustTuple<'_> {
9714                fn from(value: setPermissionedProverReturn) -> Self {
9715                    ()
9716                }
9717            }
9718            #[automatically_derived]
9719            #[doc(hidden)]
9720            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9721            for setPermissionedProverReturn {
9722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9723                    Self {}
9724                }
9725            }
9726        }
9727        impl setPermissionedProverReturn {
9728            fn _tokenize(
9729                &self,
9730            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9731                '_,
9732            > {
9733                ()
9734            }
9735        }
9736        #[automatically_derived]
9737        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9738            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9739            type Token<'a> = <Self::Parameters<
9740                'a,
9741            > as alloy_sol_types::SolType>::Token<'a>;
9742            type Return = setPermissionedProverReturn;
9743            type ReturnTuple<'a> = ();
9744            type ReturnToken<'a> = <Self::ReturnTuple<
9745                'a,
9746            > as alloy_sol_types::SolType>::Token<'a>;
9747            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9748            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9749            #[inline]
9750            fn new<'a>(
9751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9752            ) -> Self {
9753                tuple.into()
9754            }
9755            #[inline]
9756            fn tokenize(&self) -> Self::Token<'_> {
9757                (
9758                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9759                        &self.prover,
9760                    ),
9761                )
9762            }
9763            #[inline]
9764            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9765                setPermissionedProverReturn::_tokenize(ret)
9766            }
9767            #[inline]
9768            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9769                <Self::ReturnTuple<
9770                    '_,
9771                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9772                    .map(Into::into)
9773            }
9774            #[inline]
9775            fn abi_decode_returns_validate(
9776                data: &[u8],
9777            ) -> alloy_sol_types::Result<Self::Return> {
9778                <Self::ReturnTuple<
9779                    '_,
9780                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9781                    .map(Into::into)
9782            }
9783        }
9784    };
9785    #[derive(serde::Serialize, serde::Deserialize)]
9786    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9787    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9788```solidity
9789function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9790```*/
9791    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9792    #[derive(Clone)]
9793    pub struct setstateHistoryRetentionPeriodCall {
9794        #[allow(missing_docs)]
9795        pub historySeconds: u32,
9796    }
9797    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9798    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9799    #[derive(Clone)]
9800    pub struct setstateHistoryRetentionPeriodReturn {}
9801    #[allow(
9802        non_camel_case_types,
9803        non_snake_case,
9804        clippy::pub_underscore_fields,
9805        clippy::style
9806    )]
9807    const _: () = {
9808        use alloy::sol_types as alloy_sol_types;
9809        {
9810            #[doc(hidden)]
9811            #[allow(dead_code)]
9812            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9813            #[doc(hidden)]
9814            type UnderlyingRustTuple<'a> = (u32,);
9815            #[cfg(test)]
9816            #[allow(dead_code, unreachable_patterns)]
9817            fn _type_assertion(
9818                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9819            ) {
9820                match _t {
9821                    alloy_sol_types::private::AssertTypeEq::<
9822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9823                    >(_) => {}
9824                }
9825            }
9826            #[automatically_derived]
9827            #[doc(hidden)]
9828            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9829            for UnderlyingRustTuple<'_> {
9830                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9831                    (value.historySeconds,)
9832                }
9833            }
9834            #[automatically_derived]
9835            #[doc(hidden)]
9836            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9837            for setstateHistoryRetentionPeriodCall {
9838                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9839                    Self { historySeconds: tuple.0 }
9840                }
9841            }
9842        }
9843        {
9844            #[doc(hidden)]
9845            #[allow(dead_code)]
9846            type UnderlyingSolTuple<'a> = ();
9847            #[doc(hidden)]
9848            type UnderlyingRustTuple<'a> = ();
9849            #[cfg(test)]
9850            #[allow(dead_code, unreachable_patterns)]
9851            fn _type_assertion(
9852                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9853            ) {
9854                match _t {
9855                    alloy_sol_types::private::AssertTypeEq::<
9856                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9857                    >(_) => {}
9858                }
9859            }
9860            #[automatically_derived]
9861            #[doc(hidden)]
9862            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9863            for UnderlyingRustTuple<'_> {
9864                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9865                    ()
9866                }
9867            }
9868            #[automatically_derived]
9869            #[doc(hidden)]
9870            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9871            for setstateHistoryRetentionPeriodReturn {
9872                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9873                    Self {}
9874                }
9875            }
9876        }
9877        impl setstateHistoryRetentionPeriodReturn {
9878            fn _tokenize(
9879                &self,
9880            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
9881                '_,
9882            > {
9883                ()
9884            }
9885        }
9886        #[automatically_derived]
9887        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9888            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9889            type Token<'a> = <Self::Parameters<
9890                'a,
9891            > as alloy_sol_types::SolType>::Token<'a>;
9892            type Return = setstateHistoryRetentionPeriodReturn;
9893            type ReturnTuple<'a> = ();
9894            type ReturnToken<'a> = <Self::ReturnTuple<
9895                'a,
9896            > as alloy_sol_types::SolType>::Token<'a>;
9897            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9898            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9899            #[inline]
9900            fn new<'a>(
9901                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9902            ) -> Self {
9903                tuple.into()
9904            }
9905            #[inline]
9906            fn tokenize(&self) -> Self::Token<'_> {
9907                (
9908                    <alloy::sol_types::sol_data::Uint<
9909                        32,
9910                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9911                )
9912            }
9913            #[inline]
9914            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9915                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
9916            }
9917            #[inline]
9918            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9919                <Self::ReturnTuple<
9920                    '_,
9921                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9922                    .map(Into::into)
9923            }
9924            #[inline]
9925            fn abi_decode_returns_validate(
9926                data: &[u8],
9927            ) -> alloy_sol_types::Result<Self::Return> {
9928                <Self::ReturnTuple<
9929                    '_,
9930                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9931                    .map(Into::into)
9932            }
9933        }
9934    };
9935    #[derive(serde::Serialize, serde::Deserialize)]
9936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9937    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9938```solidity
9939function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9940```*/
9941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9942    #[derive(Clone)]
9943    pub struct stateHistoryCommitmentsCall(
9944        pub alloy::sol_types::private::primitives::aliases::U256,
9945    );
9946    #[derive(serde::Serialize, serde::Deserialize)]
9947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9948    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9950    #[derive(Clone)]
9951    pub struct stateHistoryCommitmentsReturn {
9952        #[allow(missing_docs)]
9953        pub l1BlockHeight: u64,
9954        #[allow(missing_docs)]
9955        pub l1BlockTimestamp: u64,
9956        #[allow(missing_docs)]
9957        pub hotShotBlockHeight: u64,
9958        #[allow(missing_docs)]
9959        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9960    }
9961    #[allow(
9962        non_camel_case_types,
9963        non_snake_case,
9964        clippy::pub_underscore_fields,
9965        clippy::style
9966    )]
9967    const _: () = {
9968        use alloy::sol_types as alloy_sol_types;
9969        {
9970            #[doc(hidden)]
9971            #[allow(dead_code)]
9972            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9973            #[doc(hidden)]
9974            type UnderlyingRustTuple<'a> = (
9975                alloy::sol_types::private::primitives::aliases::U256,
9976            );
9977            #[cfg(test)]
9978            #[allow(dead_code, unreachable_patterns)]
9979            fn _type_assertion(
9980                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9981            ) {
9982                match _t {
9983                    alloy_sol_types::private::AssertTypeEq::<
9984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9985                    >(_) => {}
9986                }
9987            }
9988            #[automatically_derived]
9989            #[doc(hidden)]
9990            impl ::core::convert::From<stateHistoryCommitmentsCall>
9991            for UnderlyingRustTuple<'_> {
9992                fn from(value: stateHistoryCommitmentsCall) -> Self {
9993                    (value.0,)
9994                }
9995            }
9996            #[automatically_derived]
9997            #[doc(hidden)]
9998            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9999            for stateHistoryCommitmentsCall {
10000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10001                    Self(tuple.0)
10002                }
10003            }
10004        }
10005        {
10006            #[doc(hidden)]
10007            #[allow(dead_code)]
10008            type UnderlyingSolTuple<'a> = (
10009                alloy::sol_types::sol_data::Uint<64>,
10010                alloy::sol_types::sol_data::Uint<64>,
10011                alloy::sol_types::sol_data::Uint<64>,
10012                BN254::ScalarField,
10013            );
10014            #[doc(hidden)]
10015            type UnderlyingRustTuple<'a> = (
10016                u64,
10017                u64,
10018                u64,
10019                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10020            );
10021            #[cfg(test)]
10022            #[allow(dead_code, unreachable_patterns)]
10023            fn _type_assertion(
10024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10025            ) {
10026                match _t {
10027                    alloy_sol_types::private::AssertTypeEq::<
10028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10029                    >(_) => {}
10030                }
10031            }
10032            #[automatically_derived]
10033            #[doc(hidden)]
10034            impl ::core::convert::From<stateHistoryCommitmentsReturn>
10035            for UnderlyingRustTuple<'_> {
10036                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10037                    (
10038                        value.l1BlockHeight,
10039                        value.l1BlockTimestamp,
10040                        value.hotShotBlockHeight,
10041                        value.hotShotBlockCommRoot,
10042                    )
10043                }
10044            }
10045            #[automatically_derived]
10046            #[doc(hidden)]
10047            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10048            for stateHistoryCommitmentsReturn {
10049                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10050                    Self {
10051                        l1BlockHeight: tuple.0,
10052                        l1BlockTimestamp: tuple.1,
10053                        hotShotBlockHeight: tuple.2,
10054                        hotShotBlockCommRoot: tuple.3,
10055                    }
10056                }
10057            }
10058        }
10059        impl stateHistoryCommitmentsReturn {
10060            fn _tokenize(
10061                &self,
10062            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
10063                '_,
10064            > {
10065                (
10066                    <alloy::sol_types::sol_data::Uint<
10067                        64,
10068                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
10069                    <alloy::sol_types::sol_data::Uint<
10070                        64,
10071                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
10072                    <alloy::sol_types::sol_data::Uint<
10073                        64,
10074                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10075                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10076                        &self.hotShotBlockCommRoot,
10077                    ),
10078                )
10079            }
10080        }
10081        #[automatically_derived]
10082        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10083            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10084            type Token<'a> = <Self::Parameters<
10085                'a,
10086            > as alloy_sol_types::SolType>::Token<'a>;
10087            type Return = stateHistoryCommitmentsReturn;
10088            type ReturnTuple<'a> = (
10089                alloy::sol_types::sol_data::Uint<64>,
10090                alloy::sol_types::sol_data::Uint<64>,
10091                alloy::sol_types::sol_data::Uint<64>,
10092                BN254::ScalarField,
10093            );
10094            type ReturnToken<'a> = <Self::ReturnTuple<
10095                'a,
10096            > as alloy_sol_types::SolType>::Token<'a>;
10097            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10098            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10099            #[inline]
10100            fn new<'a>(
10101                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10102            ) -> Self {
10103                tuple.into()
10104            }
10105            #[inline]
10106            fn tokenize(&self) -> Self::Token<'_> {
10107                (
10108                    <alloy::sol_types::sol_data::Uint<
10109                        256,
10110                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10111                )
10112            }
10113            #[inline]
10114            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10115                stateHistoryCommitmentsReturn::_tokenize(ret)
10116            }
10117            #[inline]
10118            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10119                <Self::ReturnTuple<
10120                    '_,
10121                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10122                    .map(Into::into)
10123            }
10124            #[inline]
10125            fn abi_decode_returns_validate(
10126                data: &[u8],
10127            ) -> alloy_sol_types::Result<Self::Return> {
10128                <Self::ReturnTuple<
10129                    '_,
10130                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10131                    .map(Into::into)
10132            }
10133        }
10134    };
10135    #[derive(serde::Serialize, serde::Deserialize)]
10136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10137    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10138```solidity
10139function stateHistoryFirstIndex() external view returns (uint64);
10140```*/
10141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10142    #[derive(Clone)]
10143    pub struct stateHistoryFirstIndexCall;
10144    #[derive(serde::Serialize, serde::Deserialize)]
10145    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10146    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10147    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10148    #[derive(Clone)]
10149    pub struct stateHistoryFirstIndexReturn {
10150        #[allow(missing_docs)]
10151        pub _0: u64,
10152    }
10153    #[allow(
10154        non_camel_case_types,
10155        non_snake_case,
10156        clippy::pub_underscore_fields,
10157        clippy::style
10158    )]
10159    const _: () = {
10160        use alloy::sol_types as alloy_sol_types;
10161        {
10162            #[doc(hidden)]
10163            #[allow(dead_code)]
10164            type UnderlyingSolTuple<'a> = ();
10165            #[doc(hidden)]
10166            type UnderlyingRustTuple<'a> = ();
10167            #[cfg(test)]
10168            #[allow(dead_code, unreachable_patterns)]
10169            fn _type_assertion(
10170                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10171            ) {
10172                match _t {
10173                    alloy_sol_types::private::AssertTypeEq::<
10174                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10175                    >(_) => {}
10176                }
10177            }
10178            #[automatically_derived]
10179            #[doc(hidden)]
10180            impl ::core::convert::From<stateHistoryFirstIndexCall>
10181            for UnderlyingRustTuple<'_> {
10182                fn from(value: stateHistoryFirstIndexCall) -> Self {
10183                    ()
10184                }
10185            }
10186            #[automatically_derived]
10187            #[doc(hidden)]
10188            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10189            for stateHistoryFirstIndexCall {
10190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10191                    Self
10192                }
10193            }
10194        }
10195        {
10196            #[doc(hidden)]
10197            #[allow(dead_code)]
10198            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10199            #[doc(hidden)]
10200            type UnderlyingRustTuple<'a> = (u64,);
10201            #[cfg(test)]
10202            #[allow(dead_code, unreachable_patterns)]
10203            fn _type_assertion(
10204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10205            ) {
10206                match _t {
10207                    alloy_sol_types::private::AssertTypeEq::<
10208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10209                    >(_) => {}
10210                }
10211            }
10212            #[automatically_derived]
10213            #[doc(hidden)]
10214            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10215            for UnderlyingRustTuple<'_> {
10216                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10217                    (value._0,)
10218                }
10219            }
10220            #[automatically_derived]
10221            #[doc(hidden)]
10222            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10223            for stateHistoryFirstIndexReturn {
10224                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10225                    Self { _0: tuple.0 }
10226                }
10227            }
10228        }
10229        #[automatically_derived]
10230        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10231            type Parameters<'a> = ();
10232            type Token<'a> = <Self::Parameters<
10233                'a,
10234            > as alloy_sol_types::SolType>::Token<'a>;
10235            type Return = u64;
10236            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10237            type ReturnToken<'a> = <Self::ReturnTuple<
10238                'a,
10239            > as alloy_sol_types::SolType>::Token<'a>;
10240            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10241            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10242            #[inline]
10243            fn new<'a>(
10244                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10245            ) -> Self {
10246                tuple.into()
10247            }
10248            #[inline]
10249            fn tokenize(&self) -> Self::Token<'_> {
10250                ()
10251            }
10252            #[inline]
10253            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10254                (
10255                    <alloy::sol_types::sol_data::Uint<
10256                        64,
10257                    > as alloy_sol_types::SolType>::tokenize(ret),
10258                )
10259            }
10260            #[inline]
10261            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10262                <Self::ReturnTuple<
10263                    '_,
10264                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10265                    .map(|r| {
10266                        let r: stateHistoryFirstIndexReturn = r.into();
10267                        r._0
10268                    })
10269            }
10270            #[inline]
10271            fn abi_decode_returns_validate(
10272                data: &[u8],
10273            ) -> alloy_sol_types::Result<Self::Return> {
10274                <Self::ReturnTuple<
10275                    '_,
10276                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10277                    .map(|r| {
10278                        let r: stateHistoryFirstIndexReturn = r.into();
10279                        r._0
10280                    })
10281            }
10282        }
10283    };
10284    #[derive(serde::Serialize, serde::Deserialize)]
10285    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10286    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10287```solidity
10288function stateHistoryRetentionPeriod() external view returns (uint32);
10289```*/
10290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10291    #[derive(Clone)]
10292    pub struct stateHistoryRetentionPeriodCall;
10293    #[derive(serde::Serialize, serde::Deserialize)]
10294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10295    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10297    #[derive(Clone)]
10298    pub struct stateHistoryRetentionPeriodReturn {
10299        #[allow(missing_docs)]
10300        pub _0: u32,
10301    }
10302    #[allow(
10303        non_camel_case_types,
10304        non_snake_case,
10305        clippy::pub_underscore_fields,
10306        clippy::style
10307    )]
10308    const _: () = {
10309        use alloy::sol_types as alloy_sol_types;
10310        {
10311            #[doc(hidden)]
10312            #[allow(dead_code)]
10313            type UnderlyingSolTuple<'a> = ();
10314            #[doc(hidden)]
10315            type UnderlyingRustTuple<'a> = ();
10316            #[cfg(test)]
10317            #[allow(dead_code, unreachable_patterns)]
10318            fn _type_assertion(
10319                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10320            ) {
10321                match _t {
10322                    alloy_sol_types::private::AssertTypeEq::<
10323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10324                    >(_) => {}
10325                }
10326            }
10327            #[automatically_derived]
10328            #[doc(hidden)]
10329            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10330            for UnderlyingRustTuple<'_> {
10331                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10332                    ()
10333                }
10334            }
10335            #[automatically_derived]
10336            #[doc(hidden)]
10337            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10338            for stateHistoryRetentionPeriodCall {
10339                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10340                    Self
10341                }
10342            }
10343        }
10344        {
10345            #[doc(hidden)]
10346            #[allow(dead_code)]
10347            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10348            #[doc(hidden)]
10349            type UnderlyingRustTuple<'a> = (u32,);
10350            #[cfg(test)]
10351            #[allow(dead_code, unreachable_patterns)]
10352            fn _type_assertion(
10353                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10354            ) {
10355                match _t {
10356                    alloy_sol_types::private::AssertTypeEq::<
10357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10358                    >(_) => {}
10359                }
10360            }
10361            #[automatically_derived]
10362            #[doc(hidden)]
10363            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10364            for UnderlyingRustTuple<'_> {
10365                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10366                    (value._0,)
10367                }
10368            }
10369            #[automatically_derived]
10370            #[doc(hidden)]
10371            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10372            for stateHistoryRetentionPeriodReturn {
10373                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10374                    Self { _0: tuple.0 }
10375                }
10376            }
10377        }
10378        #[automatically_derived]
10379        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10380            type Parameters<'a> = ();
10381            type Token<'a> = <Self::Parameters<
10382                'a,
10383            > as alloy_sol_types::SolType>::Token<'a>;
10384            type Return = u32;
10385            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10386            type ReturnToken<'a> = <Self::ReturnTuple<
10387                'a,
10388            > as alloy_sol_types::SolType>::Token<'a>;
10389            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10390            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10391            #[inline]
10392            fn new<'a>(
10393                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10394            ) -> Self {
10395                tuple.into()
10396            }
10397            #[inline]
10398            fn tokenize(&self) -> Self::Token<'_> {
10399                ()
10400            }
10401            #[inline]
10402            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10403                (
10404                    <alloy::sol_types::sol_data::Uint<
10405                        32,
10406                    > as alloy_sol_types::SolType>::tokenize(ret),
10407                )
10408            }
10409            #[inline]
10410            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10411                <Self::ReturnTuple<
10412                    '_,
10413                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10414                    .map(|r| {
10415                        let r: stateHistoryRetentionPeriodReturn = r.into();
10416                        r._0
10417                    })
10418            }
10419            #[inline]
10420            fn abi_decode_returns_validate(
10421                data: &[u8],
10422            ) -> alloy_sol_types::Result<Self::Return> {
10423                <Self::ReturnTuple<
10424                    '_,
10425                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10426                    .map(|r| {
10427                        let r: stateHistoryRetentionPeriodReturn = r.into();
10428                        r._0
10429                    })
10430            }
10431        }
10432    };
10433    #[derive(serde::Serialize, serde::Deserialize)]
10434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10435    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10436```solidity
10437function transferOwnership(address newOwner) external;
10438```*/
10439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10440    #[derive(Clone)]
10441    pub struct transferOwnershipCall {
10442        #[allow(missing_docs)]
10443        pub newOwner: alloy::sol_types::private::Address,
10444    }
10445    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10447    #[derive(Clone)]
10448    pub struct transferOwnershipReturn {}
10449    #[allow(
10450        non_camel_case_types,
10451        non_snake_case,
10452        clippy::pub_underscore_fields,
10453        clippy::style
10454    )]
10455    const _: () = {
10456        use alloy::sol_types as alloy_sol_types;
10457        {
10458            #[doc(hidden)]
10459            #[allow(dead_code)]
10460            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10461            #[doc(hidden)]
10462            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10463            #[cfg(test)]
10464            #[allow(dead_code, unreachable_patterns)]
10465            fn _type_assertion(
10466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10467            ) {
10468                match _t {
10469                    alloy_sol_types::private::AssertTypeEq::<
10470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10471                    >(_) => {}
10472                }
10473            }
10474            #[automatically_derived]
10475            #[doc(hidden)]
10476            impl ::core::convert::From<transferOwnershipCall>
10477            for UnderlyingRustTuple<'_> {
10478                fn from(value: transferOwnershipCall) -> Self {
10479                    (value.newOwner,)
10480                }
10481            }
10482            #[automatically_derived]
10483            #[doc(hidden)]
10484            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10485            for transferOwnershipCall {
10486                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10487                    Self { newOwner: tuple.0 }
10488                }
10489            }
10490        }
10491        {
10492            #[doc(hidden)]
10493            #[allow(dead_code)]
10494            type UnderlyingSolTuple<'a> = ();
10495            #[doc(hidden)]
10496            type UnderlyingRustTuple<'a> = ();
10497            #[cfg(test)]
10498            #[allow(dead_code, unreachable_patterns)]
10499            fn _type_assertion(
10500                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10501            ) {
10502                match _t {
10503                    alloy_sol_types::private::AssertTypeEq::<
10504                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10505                    >(_) => {}
10506                }
10507            }
10508            #[automatically_derived]
10509            #[doc(hidden)]
10510            impl ::core::convert::From<transferOwnershipReturn>
10511            for UnderlyingRustTuple<'_> {
10512                fn from(value: transferOwnershipReturn) -> Self {
10513                    ()
10514                }
10515            }
10516            #[automatically_derived]
10517            #[doc(hidden)]
10518            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10519            for transferOwnershipReturn {
10520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10521                    Self {}
10522                }
10523            }
10524        }
10525        impl transferOwnershipReturn {
10526            fn _tokenize(
10527                &self,
10528            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10529                ()
10530            }
10531        }
10532        #[automatically_derived]
10533        impl alloy_sol_types::SolCall for transferOwnershipCall {
10534            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10535            type Token<'a> = <Self::Parameters<
10536                'a,
10537            > as alloy_sol_types::SolType>::Token<'a>;
10538            type Return = transferOwnershipReturn;
10539            type ReturnTuple<'a> = ();
10540            type ReturnToken<'a> = <Self::ReturnTuple<
10541                'a,
10542            > as alloy_sol_types::SolType>::Token<'a>;
10543            const SIGNATURE: &'static str = "transferOwnership(address)";
10544            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10545            #[inline]
10546            fn new<'a>(
10547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10548            ) -> Self {
10549                tuple.into()
10550            }
10551            #[inline]
10552            fn tokenize(&self) -> Self::Token<'_> {
10553                (
10554                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10555                        &self.newOwner,
10556                    ),
10557                )
10558            }
10559            #[inline]
10560            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10561                transferOwnershipReturn::_tokenize(ret)
10562            }
10563            #[inline]
10564            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10565                <Self::ReturnTuple<
10566                    '_,
10567                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10568                    .map(Into::into)
10569            }
10570            #[inline]
10571            fn abi_decode_returns_validate(
10572                data: &[u8],
10573            ) -> alloy_sol_types::Result<Self::Return> {
10574                <Self::ReturnTuple<
10575                    '_,
10576                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10577                    .map(Into::into)
10578            }
10579        }
10580    };
10581    #[derive(serde::Serialize, serde::Deserialize)]
10582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10583    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10584```solidity
10585function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10586```*/
10587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10588    #[derive(Clone)]
10589    pub struct upgradeToAndCallCall {
10590        #[allow(missing_docs)]
10591        pub newImplementation: alloy::sol_types::private::Address,
10592        #[allow(missing_docs)]
10593        pub data: alloy::sol_types::private::Bytes,
10594    }
10595    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10597    #[derive(Clone)]
10598    pub struct upgradeToAndCallReturn {}
10599    #[allow(
10600        non_camel_case_types,
10601        non_snake_case,
10602        clippy::pub_underscore_fields,
10603        clippy::style
10604    )]
10605    const _: () = {
10606        use alloy::sol_types as alloy_sol_types;
10607        {
10608            #[doc(hidden)]
10609            #[allow(dead_code)]
10610            type UnderlyingSolTuple<'a> = (
10611                alloy::sol_types::sol_data::Address,
10612                alloy::sol_types::sol_data::Bytes,
10613            );
10614            #[doc(hidden)]
10615            type UnderlyingRustTuple<'a> = (
10616                alloy::sol_types::private::Address,
10617                alloy::sol_types::private::Bytes,
10618            );
10619            #[cfg(test)]
10620            #[allow(dead_code, unreachable_patterns)]
10621            fn _type_assertion(
10622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10623            ) {
10624                match _t {
10625                    alloy_sol_types::private::AssertTypeEq::<
10626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10627                    >(_) => {}
10628                }
10629            }
10630            #[automatically_derived]
10631            #[doc(hidden)]
10632            impl ::core::convert::From<upgradeToAndCallCall>
10633            for UnderlyingRustTuple<'_> {
10634                fn from(value: upgradeToAndCallCall) -> Self {
10635                    (value.newImplementation, value.data)
10636                }
10637            }
10638            #[automatically_derived]
10639            #[doc(hidden)]
10640            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10641            for upgradeToAndCallCall {
10642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10643                    Self {
10644                        newImplementation: tuple.0,
10645                        data: tuple.1,
10646                    }
10647                }
10648            }
10649        }
10650        {
10651            #[doc(hidden)]
10652            #[allow(dead_code)]
10653            type UnderlyingSolTuple<'a> = ();
10654            #[doc(hidden)]
10655            type UnderlyingRustTuple<'a> = ();
10656            #[cfg(test)]
10657            #[allow(dead_code, unreachable_patterns)]
10658            fn _type_assertion(
10659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10660            ) {
10661                match _t {
10662                    alloy_sol_types::private::AssertTypeEq::<
10663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10664                    >(_) => {}
10665                }
10666            }
10667            #[automatically_derived]
10668            #[doc(hidden)]
10669            impl ::core::convert::From<upgradeToAndCallReturn>
10670            for UnderlyingRustTuple<'_> {
10671                fn from(value: upgradeToAndCallReturn) -> Self {
10672                    ()
10673                }
10674            }
10675            #[automatically_derived]
10676            #[doc(hidden)]
10677            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10678            for upgradeToAndCallReturn {
10679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10680                    Self {}
10681                }
10682            }
10683        }
10684        impl upgradeToAndCallReturn {
10685            fn _tokenize(
10686                &self,
10687            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10688                ()
10689            }
10690        }
10691        #[automatically_derived]
10692        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10693            type Parameters<'a> = (
10694                alloy::sol_types::sol_data::Address,
10695                alloy::sol_types::sol_data::Bytes,
10696            );
10697            type Token<'a> = <Self::Parameters<
10698                'a,
10699            > as alloy_sol_types::SolType>::Token<'a>;
10700            type Return = upgradeToAndCallReturn;
10701            type ReturnTuple<'a> = ();
10702            type ReturnToken<'a> = <Self::ReturnTuple<
10703                'a,
10704            > as alloy_sol_types::SolType>::Token<'a>;
10705            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10706            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10707            #[inline]
10708            fn new<'a>(
10709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10710            ) -> Self {
10711                tuple.into()
10712            }
10713            #[inline]
10714            fn tokenize(&self) -> Self::Token<'_> {
10715                (
10716                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10717                        &self.newImplementation,
10718                    ),
10719                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10720                        &self.data,
10721                    ),
10722                )
10723            }
10724            #[inline]
10725            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10726                upgradeToAndCallReturn::_tokenize(ret)
10727            }
10728            #[inline]
10729            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10730                <Self::ReturnTuple<
10731                    '_,
10732                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10733                    .map(Into::into)
10734            }
10735            #[inline]
10736            fn abi_decode_returns_validate(
10737                data: &[u8],
10738            ) -> alloy_sol_types::Result<Self::Return> {
10739                <Self::ReturnTuple<
10740                    '_,
10741                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10742                    .map(Into::into)
10743            }
10744        }
10745    };
10746    ///Container for all the [`LightClient`](self) function calls.
10747    #[derive(Clone)]
10748    #[derive(serde::Serialize, serde::Deserialize)]
10749    #[derive()]
10750    pub enum LightClientCalls {
10751        #[allow(missing_docs)]
10752        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10753        #[allow(missing_docs)]
10754        _getVk(_getVkCall),
10755        #[allow(missing_docs)]
10756        currentBlockNumber(currentBlockNumberCall),
10757        #[allow(missing_docs)]
10758        disablePermissionedProverMode(disablePermissionedProverModeCall),
10759        #[allow(missing_docs)]
10760        finalizedState(finalizedStateCall),
10761        #[allow(missing_docs)]
10762        genesisStakeTableState(genesisStakeTableStateCall),
10763        #[allow(missing_docs)]
10764        genesisState(genesisStateCall),
10765        #[allow(missing_docs)]
10766        getHotShotCommitment(getHotShotCommitmentCall),
10767        #[allow(missing_docs)]
10768        getStateHistoryCount(getStateHistoryCountCall),
10769        #[allow(missing_docs)]
10770        getVersion(getVersionCall),
10771        #[allow(missing_docs)]
10772        initialize(initializeCall),
10773        #[allow(missing_docs)]
10774        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10775        #[allow(missing_docs)]
10776        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10777        #[allow(missing_docs)]
10778        newFinalizedState(newFinalizedStateCall),
10779        #[allow(missing_docs)]
10780        owner(ownerCall),
10781        #[allow(missing_docs)]
10782        permissionedProver(permissionedProverCall),
10783        #[allow(missing_docs)]
10784        proxiableUUID(proxiableUUIDCall),
10785        #[allow(missing_docs)]
10786        renounceOwnership(renounceOwnershipCall),
10787        #[allow(missing_docs)]
10788        setPermissionedProver(setPermissionedProverCall),
10789        #[allow(missing_docs)]
10790        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10791        #[allow(missing_docs)]
10792        stateHistoryCommitments(stateHistoryCommitmentsCall),
10793        #[allow(missing_docs)]
10794        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10795        #[allow(missing_docs)]
10796        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10797        #[allow(missing_docs)]
10798        transferOwnership(transferOwnershipCall),
10799        #[allow(missing_docs)]
10800        upgradeToAndCall(upgradeToAndCallCall),
10801    }
10802    impl LightClientCalls {
10803        /// All the selectors of this enum.
10804        ///
10805        /// Note that the selectors might not be in the same order as the variants.
10806        /// No guarantees are made about the order of the selectors.
10807        ///
10808        /// Prefer using `SolInterface` methods instead.
10809        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10810            [1u8, 63u8, 165u8, 252u8],
10811            [2u8, 181u8, 146u8, 243u8],
10812            [13u8, 142u8, 110u8, 44u8],
10813            [18u8, 23u8, 60u8, 44u8],
10814            [32u8, 99u8, 212u8, 247u8],
10815            [47u8, 121u8, 136u8, 157u8],
10816            [49u8, 61u8, 247u8, 177u8],
10817            [55u8, 142u8, 194u8, 59u8],
10818            [66u8, 109u8, 49u8, 148u8],
10819            [79u8, 30u8, 242u8, 134u8],
10820            [82u8, 209u8, 144u8, 45u8],
10821            [105u8, 204u8, 106u8, 4u8],
10822            [113u8, 80u8, 24u8, 166u8],
10823            [130u8, 110u8, 65u8, 252u8],
10824            [133u8, 132u8, 210u8, 63u8],
10825            [141u8, 165u8, 203u8, 91u8],
10826            [150u8, 193u8, 202u8, 97u8],
10827            [155u8, 170u8, 60u8, 201u8],
10828            [159u8, 219u8, 84u8, 167u8],
10829            [173u8, 60u8, 177u8, 204u8],
10830            [194u8, 59u8, 158u8, 158u8],
10831            [210u8, 77u8, 147u8, 61u8],
10832            [224u8, 48u8, 51u8, 1u8],
10833            [242u8, 253u8, 227u8, 139u8],
10834            [249u8, 229u8, 13u8, 25u8],
10835        ];
10836        /// The names of the variants in the same order as `SELECTORS`.
10837        pub const VARIANT_NAMES: &'static [&'static str] = &[
10838            ::core::stringify!(setPermissionedProver),
10839            ::core::stringify!(stateHistoryCommitments),
10840            ::core::stringify!(getVersion),
10841            ::core::stringify!(_getVk),
10842            ::core::stringify!(newFinalizedState),
10843            ::core::stringify!(stateHistoryFirstIndex),
10844            ::core::stringify!(permissionedProver),
10845            ::core::stringify!(currentBlockNumber),
10846            ::core::stringify!(genesisStakeTableState),
10847            ::core::stringify!(upgradeToAndCall),
10848            ::core::stringify!(proxiableUUID),
10849            ::core::stringify!(disablePermissionedProverMode),
10850            ::core::stringify!(renounceOwnership),
10851            ::core::stringify!(isPermissionedProverEnabled),
10852            ::core::stringify!(getHotShotCommitment),
10853            ::core::stringify!(owner),
10854            ::core::stringify!(setstateHistoryRetentionPeriod),
10855            ::core::stringify!(initialize),
10856            ::core::stringify!(finalizedState),
10857            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
10858            ::core::stringify!(stateHistoryRetentionPeriod),
10859            ::core::stringify!(genesisState),
10860            ::core::stringify!(lagOverEscapeHatchThreshold),
10861            ::core::stringify!(transferOwnership),
10862            ::core::stringify!(getStateHistoryCount),
10863        ];
10864        /// The signatures in the same order as `SELECTORS`.
10865        pub const SIGNATURES: &'static [&'static str] = &[
10866            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
10867            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
10868            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
10869            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
10870            <newFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10871            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
10872            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
10873            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
10874            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10875            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
10876            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
10877            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
10878            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
10879            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
10880            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
10881            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
10882            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
10883            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
10884            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10885            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
10886            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
10887            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10888            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
10889            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
10890            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
10891        ];
10892        /// Returns the signature for the given selector, if known.
10893        #[inline]
10894        pub fn signature_by_selector(
10895            selector: [u8; 4usize],
10896        ) -> ::core::option::Option<&'static str> {
10897            match Self::SELECTORS.binary_search(&selector) {
10898                ::core::result::Result::Ok(idx) => {
10899                    ::core::option::Option::Some(Self::SIGNATURES[idx])
10900                }
10901                ::core::result::Result::Err(_) => ::core::option::Option::None,
10902            }
10903        }
10904        /// Returns the enum variant name for the given selector, if known.
10905        #[inline]
10906        pub fn name_by_selector(
10907            selector: [u8; 4usize],
10908        ) -> ::core::option::Option<&'static str> {
10909            let sig = Self::signature_by_selector(selector)?;
10910            sig.split_once('(').map(|(name, _)| name)
10911        }
10912    }
10913    #[automatically_derived]
10914    impl alloy_sol_types::SolInterface for LightClientCalls {
10915        const NAME: &'static str = "LightClientCalls";
10916        const MIN_DATA_LENGTH: usize = 0usize;
10917        const COUNT: usize = 25usize;
10918        #[inline]
10919        fn selector(&self) -> [u8; 4] {
10920            match self {
10921                Self::UPGRADE_INTERFACE_VERSION(_) => {
10922                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10923                }
10924                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
10925                Self::currentBlockNumber(_) => {
10926                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10927                }
10928                Self::disablePermissionedProverMode(_) => {
10929                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
10930                }
10931                Self::finalizedState(_) => {
10932                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10933                }
10934                Self::genesisStakeTableState(_) => {
10935                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
10936                }
10937                Self::genesisState(_) => {
10938                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
10939                }
10940                Self::getHotShotCommitment(_) => {
10941                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
10942                }
10943                Self::getStateHistoryCount(_) => {
10944                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
10945                }
10946                Self::getVersion(_) => {
10947                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10948                }
10949                Self::initialize(_) => {
10950                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10951                }
10952                Self::isPermissionedProverEnabled(_) => {
10953                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
10954                }
10955                Self::lagOverEscapeHatchThreshold(_) => {
10956                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
10957                }
10958                Self::newFinalizedState(_) => {
10959                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10960                }
10961                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10962                Self::permissionedProver(_) => {
10963                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10964                }
10965                Self::proxiableUUID(_) => {
10966                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10967                }
10968                Self::renounceOwnership(_) => {
10969                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10970                }
10971                Self::setPermissionedProver(_) => {
10972                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10973                }
10974                Self::setstateHistoryRetentionPeriod(_) => {
10975                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10976                }
10977                Self::stateHistoryCommitments(_) => {
10978                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10979                }
10980                Self::stateHistoryFirstIndex(_) => {
10981                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10982                }
10983                Self::stateHistoryRetentionPeriod(_) => {
10984                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10985                }
10986                Self::transferOwnership(_) => {
10987                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10988                }
10989                Self::upgradeToAndCall(_) => {
10990                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10991                }
10992            }
10993        }
10994        #[inline]
10995        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10996            Self::SELECTORS.get(i).copied()
10997        }
10998        #[inline]
10999        fn valid_selector(selector: [u8; 4]) -> bool {
11000            Self::SELECTORS.binary_search(&selector).is_ok()
11001        }
11002        #[inline]
11003        #[allow(non_snake_case)]
11004        fn abi_decode_raw(
11005            selector: [u8; 4],
11006            data: &[u8],
11007        ) -> alloy_sol_types::Result<Self> {
11008            static DECODE_SHIMS: &[fn(
11009                &[u8],
11010            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
11011                {
11012                    fn setPermissionedProver(
11013                        data: &[u8],
11014                    ) -> alloy_sol_types::Result<LightClientCalls> {
11015                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11016                                data,
11017                            )
11018                            .map(LightClientCalls::setPermissionedProver)
11019                    }
11020                    setPermissionedProver
11021                },
11022                {
11023                    fn stateHistoryCommitments(
11024                        data: &[u8],
11025                    ) -> alloy_sol_types::Result<LightClientCalls> {
11026                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
11027                                data,
11028                            )
11029                            .map(LightClientCalls::stateHistoryCommitments)
11030                    }
11031                    stateHistoryCommitments
11032                },
11033                {
11034                    fn getVersion(
11035                        data: &[u8],
11036                    ) -> alloy_sol_types::Result<LightClientCalls> {
11037                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
11038                                data,
11039                            )
11040                            .map(LightClientCalls::getVersion)
11041                    }
11042                    getVersion
11043                },
11044                {
11045                    fn _getVk(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11046                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11047                            .map(LightClientCalls::_getVk)
11048                    }
11049                    _getVk
11050                },
11051                {
11052                    fn newFinalizedState(
11053                        data: &[u8],
11054                    ) -> alloy_sol_types::Result<LightClientCalls> {
11055                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11056                                data,
11057                            )
11058                            .map(LightClientCalls::newFinalizedState)
11059                    }
11060                    newFinalizedState
11061                },
11062                {
11063                    fn stateHistoryFirstIndex(
11064                        data: &[u8],
11065                    ) -> alloy_sol_types::Result<LightClientCalls> {
11066                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
11067                                data,
11068                            )
11069                            .map(LightClientCalls::stateHistoryFirstIndex)
11070                    }
11071                    stateHistoryFirstIndex
11072                },
11073                {
11074                    fn permissionedProver(
11075                        data: &[u8],
11076                    ) -> alloy_sol_types::Result<LightClientCalls> {
11077                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11078                                data,
11079                            )
11080                            .map(LightClientCalls::permissionedProver)
11081                    }
11082                    permissionedProver
11083                },
11084                {
11085                    fn currentBlockNumber(
11086                        data: &[u8],
11087                    ) -> alloy_sol_types::Result<LightClientCalls> {
11088                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11089                                data,
11090                            )
11091                            .map(LightClientCalls::currentBlockNumber)
11092                    }
11093                    currentBlockNumber
11094                },
11095                {
11096                    fn genesisStakeTableState(
11097                        data: &[u8],
11098                    ) -> alloy_sol_types::Result<LightClientCalls> {
11099                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11100                                data,
11101                            )
11102                            .map(LightClientCalls::genesisStakeTableState)
11103                    }
11104                    genesisStakeTableState
11105                },
11106                {
11107                    fn upgradeToAndCall(
11108                        data: &[u8],
11109                    ) -> alloy_sol_types::Result<LightClientCalls> {
11110                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
11111                                data,
11112                            )
11113                            .map(LightClientCalls::upgradeToAndCall)
11114                    }
11115                    upgradeToAndCall
11116                },
11117                {
11118                    fn proxiableUUID(
11119                        data: &[u8],
11120                    ) -> alloy_sol_types::Result<LightClientCalls> {
11121                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
11122                                data,
11123                            )
11124                            .map(LightClientCalls::proxiableUUID)
11125                    }
11126                    proxiableUUID
11127                },
11128                {
11129                    fn disablePermissionedProverMode(
11130                        data: &[u8],
11131                    ) -> alloy_sol_types::Result<LightClientCalls> {
11132                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11133                                data,
11134                            )
11135                            .map(LightClientCalls::disablePermissionedProverMode)
11136                    }
11137                    disablePermissionedProverMode
11138                },
11139                {
11140                    fn renounceOwnership(
11141                        data: &[u8],
11142                    ) -> alloy_sol_types::Result<LightClientCalls> {
11143                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11144                                data,
11145                            )
11146                            .map(LightClientCalls::renounceOwnership)
11147                    }
11148                    renounceOwnership
11149                },
11150                {
11151                    fn isPermissionedProverEnabled(
11152                        data: &[u8],
11153                    ) -> alloy_sol_types::Result<LightClientCalls> {
11154                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11155                                data,
11156                            )
11157                            .map(LightClientCalls::isPermissionedProverEnabled)
11158                    }
11159                    isPermissionedProverEnabled
11160                },
11161                {
11162                    fn getHotShotCommitment(
11163                        data: &[u8],
11164                    ) -> alloy_sol_types::Result<LightClientCalls> {
11165                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11166                                data,
11167                            )
11168                            .map(LightClientCalls::getHotShotCommitment)
11169                    }
11170                    getHotShotCommitment
11171                },
11172                {
11173                    fn owner(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11174                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11175                            .map(LightClientCalls::owner)
11176                    }
11177                    owner
11178                },
11179                {
11180                    fn setstateHistoryRetentionPeriod(
11181                        data: &[u8],
11182                    ) -> alloy_sol_types::Result<LightClientCalls> {
11183                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11184                                data,
11185                            )
11186                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11187                    }
11188                    setstateHistoryRetentionPeriod
11189                },
11190                {
11191                    fn initialize(
11192                        data: &[u8],
11193                    ) -> alloy_sol_types::Result<LightClientCalls> {
11194                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11195                                data,
11196                            )
11197                            .map(LightClientCalls::initialize)
11198                    }
11199                    initialize
11200                },
11201                {
11202                    fn finalizedState(
11203                        data: &[u8],
11204                    ) -> alloy_sol_types::Result<LightClientCalls> {
11205                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11206                                data,
11207                            )
11208                            .map(LightClientCalls::finalizedState)
11209                    }
11210                    finalizedState
11211                },
11212                {
11213                    fn UPGRADE_INTERFACE_VERSION(
11214                        data: &[u8],
11215                    ) -> alloy_sol_types::Result<LightClientCalls> {
11216                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11217                                data,
11218                            )
11219                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11220                    }
11221                    UPGRADE_INTERFACE_VERSION
11222                },
11223                {
11224                    fn stateHistoryRetentionPeriod(
11225                        data: &[u8],
11226                    ) -> alloy_sol_types::Result<LightClientCalls> {
11227                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11228                                data,
11229                            )
11230                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11231                    }
11232                    stateHistoryRetentionPeriod
11233                },
11234                {
11235                    fn genesisState(
11236                        data: &[u8],
11237                    ) -> alloy_sol_types::Result<LightClientCalls> {
11238                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11239                                data,
11240                            )
11241                            .map(LightClientCalls::genesisState)
11242                    }
11243                    genesisState
11244                },
11245                {
11246                    fn lagOverEscapeHatchThreshold(
11247                        data: &[u8],
11248                    ) -> alloy_sol_types::Result<LightClientCalls> {
11249                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11250                                data,
11251                            )
11252                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11253                    }
11254                    lagOverEscapeHatchThreshold
11255                },
11256                {
11257                    fn transferOwnership(
11258                        data: &[u8],
11259                    ) -> alloy_sol_types::Result<LightClientCalls> {
11260                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11261                                data,
11262                            )
11263                            .map(LightClientCalls::transferOwnership)
11264                    }
11265                    transferOwnership
11266                },
11267                {
11268                    fn getStateHistoryCount(
11269                        data: &[u8],
11270                    ) -> alloy_sol_types::Result<LightClientCalls> {
11271                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11272                                data,
11273                            )
11274                            .map(LightClientCalls::getStateHistoryCount)
11275                    }
11276                    getStateHistoryCount
11277                },
11278            ];
11279            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11280                return Err(
11281                    alloy_sol_types::Error::unknown_selector(
11282                        <Self as alloy_sol_types::SolInterface>::NAME,
11283                        selector,
11284                    ),
11285                );
11286            };
11287            DECODE_SHIMS[idx](data)
11288        }
11289        #[inline]
11290        #[allow(non_snake_case)]
11291        fn abi_decode_raw_validate(
11292            selector: [u8; 4],
11293            data: &[u8],
11294        ) -> alloy_sol_types::Result<Self> {
11295            static DECODE_VALIDATE_SHIMS: &[fn(
11296                &[u8],
11297            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
11298                {
11299                    fn setPermissionedProver(
11300                        data: &[u8],
11301                    ) -> alloy_sol_types::Result<LightClientCalls> {
11302                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11303                                data,
11304                            )
11305                            .map(LightClientCalls::setPermissionedProver)
11306                    }
11307                    setPermissionedProver
11308                },
11309                {
11310                    fn stateHistoryCommitments(
11311                        data: &[u8],
11312                    ) -> alloy_sol_types::Result<LightClientCalls> {
11313                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11314                                data,
11315                            )
11316                            .map(LightClientCalls::stateHistoryCommitments)
11317                    }
11318                    stateHistoryCommitments
11319                },
11320                {
11321                    fn getVersion(
11322                        data: &[u8],
11323                    ) -> alloy_sol_types::Result<LightClientCalls> {
11324                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11325                                data,
11326                            )
11327                            .map(LightClientCalls::getVersion)
11328                    }
11329                    getVersion
11330                },
11331                {
11332                    fn _getVk(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11333                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11334                                data,
11335                            )
11336                            .map(LightClientCalls::_getVk)
11337                    }
11338                    _getVk
11339                },
11340                {
11341                    fn newFinalizedState(
11342                        data: &[u8],
11343                    ) -> alloy_sol_types::Result<LightClientCalls> {
11344                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11345                                data,
11346                            )
11347                            .map(LightClientCalls::newFinalizedState)
11348                    }
11349                    newFinalizedState
11350                },
11351                {
11352                    fn stateHistoryFirstIndex(
11353                        data: &[u8],
11354                    ) -> alloy_sol_types::Result<LightClientCalls> {
11355                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11356                                data,
11357                            )
11358                            .map(LightClientCalls::stateHistoryFirstIndex)
11359                    }
11360                    stateHistoryFirstIndex
11361                },
11362                {
11363                    fn permissionedProver(
11364                        data: &[u8],
11365                    ) -> alloy_sol_types::Result<LightClientCalls> {
11366                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11367                                data,
11368                            )
11369                            .map(LightClientCalls::permissionedProver)
11370                    }
11371                    permissionedProver
11372                },
11373                {
11374                    fn currentBlockNumber(
11375                        data: &[u8],
11376                    ) -> alloy_sol_types::Result<LightClientCalls> {
11377                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11378                                data,
11379                            )
11380                            .map(LightClientCalls::currentBlockNumber)
11381                    }
11382                    currentBlockNumber
11383                },
11384                {
11385                    fn genesisStakeTableState(
11386                        data: &[u8],
11387                    ) -> alloy_sol_types::Result<LightClientCalls> {
11388                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11389                                data,
11390                            )
11391                            .map(LightClientCalls::genesisStakeTableState)
11392                    }
11393                    genesisStakeTableState
11394                },
11395                {
11396                    fn upgradeToAndCall(
11397                        data: &[u8],
11398                    ) -> alloy_sol_types::Result<LightClientCalls> {
11399                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11400                                data,
11401                            )
11402                            .map(LightClientCalls::upgradeToAndCall)
11403                    }
11404                    upgradeToAndCall
11405                },
11406                {
11407                    fn proxiableUUID(
11408                        data: &[u8],
11409                    ) -> alloy_sol_types::Result<LightClientCalls> {
11410                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11411                                data,
11412                            )
11413                            .map(LightClientCalls::proxiableUUID)
11414                    }
11415                    proxiableUUID
11416                },
11417                {
11418                    fn disablePermissionedProverMode(
11419                        data: &[u8],
11420                    ) -> alloy_sol_types::Result<LightClientCalls> {
11421                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11422                                data,
11423                            )
11424                            .map(LightClientCalls::disablePermissionedProverMode)
11425                    }
11426                    disablePermissionedProverMode
11427                },
11428                {
11429                    fn renounceOwnership(
11430                        data: &[u8],
11431                    ) -> alloy_sol_types::Result<LightClientCalls> {
11432                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11433                                data,
11434                            )
11435                            .map(LightClientCalls::renounceOwnership)
11436                    }
11437                    renounceOwnership
11438                },
11439                {
11440                    fn isPermissionedProverEnabled(
11441                        data: &[u8],
11442                    ) -> alloy_sol_types::Result<LightClientCalls> {
11443                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11444                                data,
11445                            )
11446                            .map(LightClientCalls::isPermissionedProverEnabled)
11447                    }
11448                    isPermissionedProverEnabled
11449                },
11450                {
11451                    fn getHotShotCommitment(
11452                        data: &[u8],
11453                    ) -> alloy_sol_types::Result<LightClientCalls> {
11454                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11455                                data,
11456                            )
11457                            .map(LightClientCalls::getHotShotCommitment)
11458                    }
11459                    getHotShotCommitment
11460                },
11461                {
11462                    fn owner(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11463                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11464                                data,
11465                            )
11466                            .map(LightClientCalls::owner)
11467                    }
11468                    owner
11469                },
11470                {
11471                    fn setstateHistoryRetentionPeriod(
11472                        data: &[u8],
11473                    ) -> alloy_sol_types::Result<LightClientCalls> {
11474                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11475                                data,
11476                            )
11477                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11478                    }
11479                    setstateHistoryRetentionPeriod
11480                },
11481                {
11482                    fn initialize(
11483                        data: &[u8],
11484                    ) -> alloy_sol_types::Result<LightClientCalls> {
11485                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11486                                data,
11487                            )
11488                            .map(LightClientCalls::initialize)
11489                    }
11490                    initialize
11491                },
11492                {
11493                    fn finalizedState(
11494                        data: &[u8],
11495                    ) -> alloy_sol_types::Result<LightClientCalls> {
11496                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11497                                data,
11498                            )
11499                            .map(LightClientCalls::finalizedState)
11500                    }
11501                    finalizedState
11502                },
11503                {
11504                    fn UPGRADE_INTERFACE_VERSION(
11505                        data: &[u8],
11506                    ) -> alloy_sol_types::Result<LightClientCalls> {
11507                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11508                                data,
11509                            )
11510                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11511                    }
11512                    UPGRADE_INTERFACE_VERSION
11513                },
11514                {
11515                    fn stateHistoryRetentionPeriod(
11516                        data: &[u8],
11517                    ) -> alloy_sol_types::Result<LightClientCalls> {
11518                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11519                                data,
11520                            )
11521                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11522                    }
11523                    stateHistoryRetentionPeriod
11524                },
11525                {
11526                    fn genesisState(
11527                        data: &[u8],
11528                    ) -> alloy_sol_types::Result<LightClientCalls> {
11529                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11530                                data,
11531                            )
11532                            .map(LightClientCalls::genesisState)
11533                    }
11534                    genesisState
11535                },
11536                {
11537                    fn lagOverEscapeHatchThreshold(
11538                        data: &[u8],
11539                    ) -> alloy_sol_types::Result<LightClientCalls> {
11540                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11541                                data,
11542                            )
11543                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11544                    }
11545                    lagOverEscapeHatchThreshold
11546                },
11547                {
11548                    fn transferOwnership(
11549                        data: &[u8],
11550                    ) -> alloy_sol_types::Result<LightClientCalls> {
11551                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11552                                data,
11553                            )
11554                            .map(LightClientCalls::transferOwnership)
11555                    }
11556                    transferOwnership
11557                },
11558                {
11559                    fn getStateHistoryCount(
11560                        data: &[u8],
11561                    ) -> alloy_sol_types::Result<LightClientCalls> {
11562                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11563                                data,
11564                            )
11565                            .map(LightClientCalls::getStateHistoryCount)
11566                    }
11567                    getStateHistoryCount
11568                },
11569            ];
11570            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11571                return Err(
11572                    alloy_sol_types::Error::unknown_selector(
11573                        <Self as alloy_sol_types::SolInterface>::NAME,
11574                        selector,
11575                    ),
11576                );
11577            };
11578            DECODE_VALIDATE_SHIMS[idx](data)
11579        }
11580        #[inline]
11581        fn abi_encoded_size(&self) -> usize {
11582            match self {
11583                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11584                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11585                        inner,
11586                    )
11587                }
11588                Self::_getVk(inner) => {
11589                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11590                }
11591                Self::currentBlockNumber(inner) => {
11592                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11593                        inner,
11594                    )
11595                }
11596                Self::disablePermissionedProverMode(inner) => {
11597                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11598                        inner,
11599                    )
11600                }
11601                Self::finalizedState(inner) => {
11602                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11603                        inner,
11604                    )
11605                }
11606                Self::genesisStakeTableState(inner) => {
11607                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11608                        inner,
11609                    )
11610                }
11611                Self::genesisState(inner) => {
11612                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11613                        inner,
11614                    )
11615                }
11616                Self::getHotShotCommitment(inner) => {
11617                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11618                        inner,
11619                    )
11620                }
11621                Self::getStateHistoryCount(inner) => {
11622                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11623                        inner,
11624                    )
11625                }
11626                Self::getVersion(inner) => {
11627                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11628                }
11629                Self::initialize(inner) => {
11630                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11631                }
11632                Self::isPermissionedProverEnabled(inner) => {
11633                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11634                        inner,
11635                    )
11636                }
11637                Self::lagOverEscapeHatchThreshold(inner) => {
11638                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11639                        inner,
11640                    )
11641                }
11642                Self::newFinalizedState(inner) => {
11643                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11644                        inner,
11645                    )
11646                }
11647                Self::owner(inner) => {
11648                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11649                }
11650                Self::permissionedProver(inner) => {
11651                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11652                        inner,
11653                    )
11654                }
11655                Self::proxiableUUID(inner) => {
11656                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11657                        inner,
11658                    )
11659                }
11660                Self::renounceOwnership(inner) => {
11661                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11662                        inner,
11663                    )
11664                }
11665                Self::setPermissionedProver(inner) => {
11666                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11667                        inner,
11668                    )
11669                }
11670                Self::setstateHistoryRetentionPeriod(inner) => {
11671                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11672                        inner,
11673                    )
11674                }
11675                Self::stateHistoryCommitments(inner) => {
11676                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11677                        inner,
11678                    )
11679                }
11680                Self::stateHistoryFirstIndex(inner) => {
11681                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11682                        inner,
11683                    )
11684                }
11685                Self::stateHistoryRetentionPeriod(inner) => {
11686                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11687                        inner,
11688                    )
11689                }
11690                Self::transferOwnership(inner) => {
11691                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11692                        inner,
11693                    )
11694                }
11695                Self::upgradeToAndCall(inner) => {
11696                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11697                        inner,
11698                    )
11699                }
11700            }
11701        }
11702        #[inline]
11703        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11704            match self {
11705                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11706                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11707                        inner,
11708                        out,
11709                    )
11710                }
11711                Self::_getVk(inner) => {
11712                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11713                }
11714                Self::currentBlockNumber(inner) => {
11715                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11716                        inner,
11717                        out,
11718                    )
11719                }
11720                Self::disablePermissionedProverMode(inner) => {
11721                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11722                        inner,
11723                        out,
11724                    )
11725                }
11726                Self::finalizedState(inner) => {
11727                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11728                        inner,
11729                        out,
11730                    )
11731                }
11732                Self::genesisStakeTableState(inner) => {
11733                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11734                        inner,
11735                        out,
11736                    )
11737                }
11738                Self::genesisState(inner) => {
11739                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11740                        inner,
11741                        out,
11742                    )
11743                }
11744                Self::getHotShotCommitment(inner) => {
11745                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11746                        inner,
11747                        out,
11748                    )
11749                }
11750                Self::getStateHistoryCount(inner) => {
11751                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11752                        inner,
11753                        out,
11754                    )
11755                }
11756                Self::getVersion(inner) => {
11757                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11758                        inner,
11759                        out,
11760                    )
11761                }
11762                Self::initialize(inner) => {
11763                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11764                        inner,
11765                        out,
11766                    )
11767                }
11768                Self::isPermissionedProverEnabled(inner) => {
11769                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11770                        inner,
11771                        out,
11772                    )
11773                }
11774                Self::lagOverEscapeHatchThreshold(inner) => {
11775                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11776                        inner,
11777                        out,
11778                    )
11779                }
11780                Self::newFinalizedState(inner) => {
11781                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11782                        inner,
11783                        out,
11784                    )
11785                }
11786                Self::owner(inner) => {
11787                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11788                }
11789                Self::permissionedProver(inner) => {
11790                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11791                        inner,
11792                        out,
11793                    )
11794                }
11795                Self::proxiableUUID(inner) => {
11796                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11797                        inner,
11798                        out,
11799                    )
11800                }
11801                Self::renounceOwnership(inner) => {
11802                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11803                        inner,
11804                        out,
11805                    )
11806                }
11807                Self::setPermissionedProver(inner) => {
11808                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11809                        inner,
11810                        out,
11811                    )
11812                }
11813                Self::setstateHistoryRetentionPeriod(inner) => {
11814                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11815                        inner,
11816                        out,
11817                    )
11818                }
11819                Self::stateHistoryCommitments(inner) => {
11820                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11821                        inner,
11822                        out,
11823                    )
11824                }
11825                Self::stateHistoryFirstIndex(inner) => {
11826                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11827                        inner,
11828                        out,
11829                    )
11830                }
11831                Self::stateHistoryRetentionPeriod(inner) => {
11832                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11833                        inner,
11834                        out,
11835                    )
11836                }
11837                Self::transferOwnership(inner) => {
11838                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11839                        inner,
11840                        out,
11841                    )
11842                }
11843                Self::upgradeToAndCall(inner) => {
11844                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11845                        inner,
11846                        out,
11847                    )
11848                }
11849            }
11850        }
11851    }
11852    ///Container for all the [`LightClient`](self) custom errors.
11853    #[derive(Clone)]
11854    #[derive(serde::Serialize, serde::Deserialize)]
11855    #[derive(Debug, PartialEq, Eq, Hash)]
11856    pub enum LightClientErrors {
11857        #[allow(missing_docs)]
11858        AddressEmptyCode(AddressEmptyCode),
11859        #[allow(missing_docs)]
11860        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11861        #[allow(missing_docs)]
11862        ERC1967NonPayable(ERC1967NonPayable),
11863        #[allow(missing_docs)]
11864        FailedInnerCall(FailedInnerCall),
11865        #[allow(missing_docs)]
11866        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11867        #[allow(missing_docs)]
11868        InvalidAddress(InvalidAddress),
11869        #[allow(missing_docs)]
11870        InvalidArgs(InvalidArgs),
11871        #[allow(missing_docs)]
11872        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11873        #[allow(missing_docs)]
11874        InvalidInitialization(InvalidInitialization),
11875        #[allow(missing_docs)]
11876        InvalidMaxStateHistory(InvalidMaxStateHistory),
11877        #[allow(missing_docs)]
11878        InvalidProof(InvalidProof),
11879        #[allow(missing_docs)]
11880        InvalidScalar(InvalidScalar),
11881        #[allow(missing_docs)]
11882        NoChangeRequired(NoChangeRequired),
11883        #[allow(missing_docs)]
11884        NotInitializing(NotInitializing),
11885        #[allow(missing_docs)]
11886        OutdatedState(OutdatedState),
11887        #[allow(missing_docs)]
11888        OwnableInvalidOwner(OwnableInvalidOwner),
11889        #[allow(missing_docs)]
11890        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11891        #[allow(missing_docs)]
11892        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
11893        #[allow(missing_docs)]
11894        ProverNotPermissioned(ProverNotPermissioned),
11895        #[allow(missing_docs)]
11896        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11897        #[allow(missing_docs)]
11898        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11899        #[allow(missing_docs)]
11900        WrongStakeTableUsed(WrongStakeTableUsed),
11901    }
11902    impl LightClientErrors {
11903        /// All the selectors of this enum.
11904        ///
11905        /// Note that the selectors might not be in the same order as the variants.
11906        /// No guarantees are made about the order of the selectors.
11907        ///
11908        /// Prefer using `SolInterface` methods instead.
11909        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11910            [5u8, 28u8, 70u8, 239u8],
11911            [5u8, 176u8, 92u8, 204u8],
11912            [9u8, 189u8, 227u8, 57u8],
11913            [17u8, 140u8, 218u8, 167u8],
11914            [20u8, 37u8, 234u8, 66u8],
11915            [30u8, 79u8, 189u8, 247u8],
11916            [47u8, 171u8, 146u8, 202u8],
11917            [76u8, 156u8, 140u8, 227u8],
11918            [81u8, 97u8, 128u8, 137u8],
11919            [97u8, 90u8, 146u8, 100u8],
11920            [153u8, 150u8, 179u8, 21u8],
11921            [161u8, 186u8, 7u8, 238u8],
11922            [163u8, 166u8, 71u8, 128u8],
11923            [168u8, 99u8, 174u8, 201u8],
11924            [170u8, 29u8, 73u8, 164u8],
11925            [176u8, 180u8, 56u8, 119u8],
11926            [179u8, 152u8, 151u8, 159u8],
11927            [215u8, 230u8, 188u8, 248u8],
11928            [224u8, 124u8, 141u8, 186u8],
11929            [230u8, 196u8, 36u8, 123u8],
11930            [244u8, 160u8, 238u8, 224u8],
11931            [249u8, 46u8, 232u8, 169u8],
11932        ];
11933        /// The names of the variants in the same order as `SELECTORS`.
11934        pub const VARIANT_NAMES: &'static [&'static str] = &[
11935            ::core::stringify!(OutdatedState),
11936            ::core::stringify!(InvalidScalar),
11937            ::core::stringify!(InvalidProof),
11938            ::core::stringify!(OwnableUnauthorizedAccount),
11939            ::core::stringify!(FailedInnerCall),
11940            ::core::stringify!(OwnableInvalidOwner),
11941            ::core::stringify!(OwnershipCannotBeRenounced),
11942            ::core::stringify!(ERC1967InvalidImplementation),
11943            ::core::stringify!(WrongStakeTableUsed),
11944            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
11945            ::core::stringify!(AddressEmptyCode),
11946            ::core::stringify!(InvalidArgs),
11947            ::core::stringify!(ProverNotPermissioned),
11948            ::core::stringify!(NoChangeRequired),
11949            ::core::stringify!(UUPSUnsupportedProxiableUUID),
11950            ::core::stringify!(InsufficientSnapshotHistory),
11951            ::core::stringify!(ERC1967NonPayable),
11952            ::core::stringify!(NotInitializing),
11953            ::core::stringify!(UUPSUnauthorizedCallContext),
11954            ::core::stringify!(InvalidAddress),
11955            ::core::stringify!(InvalidMaxStateHistory),
11956            ::core::stringify!(InvalidInitialization),
11957        ];
11958        /// The signatures in the same order as `SELECTORS`.
11959        pub const SIGNATURES: &'static [&'static str] = &[
11960            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
11961            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
11962            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
11963            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
11964            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
11965            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
11966            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
11967            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
11968            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
11969            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
11970            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
11971            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
11972            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
11973            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
11974            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
11975            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
11976            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
11977            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
11978            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
11979            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
11980            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
11981            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
11982        ];
11983        /// Returns the signature for the given selector, if known.
11984        #[inline]
11985        pub fn signature_by_selector(
11986            selector: [u8; 4usize],
11987        ) -> ::core::option::Option<&'static str> {
11988            match Self::SELECTORS.binary_search(&selector) {
11989                ::core::result::Result::Ok(idx) => {
11990                    ::core::option::Option::Some(Self::SIGNATURES[idx])
11991                }
11992                ::core::result::Result::Err(_) => ::core::option::Option::None,
11993            }
11994        }
11995        /// Returns the enum variant name for the given selector, if known.
11996        #[inline]
11997        pub fn name_by_selector(
11998            selector: [u8; 4usize],
11999        ) -> ::core::option::Option<&'static str> {
12000            let sig = Self::signature_by_selector(selector)?;
12001            sig.split_once('(').map(|(name, _)| name)
12002        }
12003    }
12004    #[automatically_derived]
12005    impl alloy_sol_types::SolInterface for LightClientErrors {
12006        const NAME: &'static str = "LightClientErrors";
12007        const MIN_DATA_LENGTH: usize = 0usize;
12008        const COUNT: usize = 22usize;
12009        #[inline]
12010        fn selector(&self) -> [u8; 4] {
12011            match self {
12012                Self::AddressEmptyCode(_) => {
12013                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
12014                }
12015                Self::ERC1967InvalidImplementation(_) => {
12016                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
12017                }
12018                Self::ERC1967NonPayable(_) => {
12019                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
12020                }
12021                Self::FailedInnerCall(_) => {
12022                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
12023                }
12024                Self::InsufficientSnapshotHistory(_) => {
12025                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
12026                }
12027                Self::InvalidAddress(_) => {
12028                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
12029                }
12030                Self::InvalidArgs(_) => {
12031                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
12032                }
12033                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
12034                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
12035                }
12036                Self::InvalidInitialization(_) => {
12037                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
12038                }
12039                Self::InvalidMaxStateHistory(_) => {
12040                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
12041                }
12042                Self::InvalidProof(_) => {
12043                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
12044                }
12045                Self::InvalidScalar(_) => {
12046                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
12047                }
12048                Self::NoChangeRequired(_) => {
12049                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
12050                }
12051                Self::NotInitializing(_) => {
12052                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
12053                }
12054                Self::OutdatedState(_) => {
12055                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
12056                }
12057                Self::OwnableInvalidOwner(_) => {
12058                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
12059                }
12060                Self::OwnableUnauthorizedAccount(_) => {
12061                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
12062                }
12063                Self::OwnershipCannotBeRenounced(_) => {
12064                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
12065                }
12066                Self::ProverNotPermissioned(_) => {
12067                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
12068                }
12069                Self::UUPSUnauthorizedCallContext(_) => {
12070                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
12071                }
12072                Self::UUPSUnsupportedProxiableUUID(_) => {
12073                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
12074                }
12075                Self::WrongStakeTableUsed(_) => {
12076                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
12077                }
12078            }
12079        }
12080        #[inline]
12081        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12082            Self::SELECTORS.get(i).copied()
12083        }
12084        #[inline]
12085        fn valid_selector(selector: [u8; 4]) -> bool {
12086            Self::SELECTORS.binary_search(&selector).is_ok()
12087        }
12088        #[inline]
12089        #[allow(non_snake_case)]
12090        fn abi_decode_raw(
12091            selector: [u8; 4],
12092            data: &[u8],
12093        ) -> alloy_sol_types::Result<Self> {
12094            static DECODE_SHIMS: &[fn(
12095                &[u8],
12096            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
12097                {
12098                    fn OutdatedState(
12099                        data: &[u8],
12100                    ) -> alloy_sol_types::Result<LightClientErrors> {
12101                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
12102                                data,
12103                            )
12104                            .map(LightClientErrors::OutdatedState)
12105                    }
12106                    OutdatedState
12107                },
12108                {
12109                    fn InvalidScalar(
12110                        data: &[u8],
12111                    ) -> alloy_sol_types::Result<LightClientErrors> {
12112                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
12113                                data,
12114                            )
12115                            .map(LightClientErrors::InvalidScalar)
12116                    }
12117                    InvalidScalar
12118                },
12119                {
12120                    fn InvalidProof(
12121                        data: &[u8],
12122                    ) -> alloy_sol_types::Result<LightClientErrors> {
12123                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
12124                            .map(LightClientErrors::InvalidProof)
12125                    }
12126                    InvalidProof
12127                },
12128                {
12129                    fn OwnableUnauthorizedAccount(
12130                        data: &[u8],
12131                    ) -> alloy_sol_types::Result<LightClientErrors> {
12132                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
12133                                data,
12134                            )
12135                            .map(LightClientErrors::OwnableUnauthorizedAccount)
12136                    }
12137                    OwnableUnauthorizedAccount
12138                },
12139                {
12140                    fn FailedInnerCall(
12141                        data: &[u8],
12142                    ) -> alloy_sol_types::Result<LightClientErrors> {
12143                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
12144                                data,
12145                            )
12146                            .map(LightClientErrors::FailedInnerCall)
12147                    }
12148                    FailedInnerCall
12149                },
12150                {
12151                    fn OwnableInvalidOwner(
12152                        data: &[u8],
12153                    ) -> alloy_sol_types::Result<LightClientErrors> {
12154                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
12155                                data,
12156                            )
12157                            .map(LightClientErrors::OwnableInvalidOwner)
12158                    }
12159                    OwnableInvalidOwner
12160                },
12161                {
12162                    fn OwnershipCannotBeRenounced(
12163                        data: &[u8],
12164                    ) -> alloy_sol_types::Result<LightClientErrors> {
12165                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
12166                                data,
12167                            )
12168                            .map(LightClientErrors::OwnershipCannotBeRenounced)
12169                    }
12170                    OwnershipCannotBeRenounced
12171                },
12172                {
12173                    fn ERC1967InvalidImplementation(
12174                        data: &[u8],
12175                    ) -> alloy_sol_types::Result<LightClientErrors> {
12176                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
12177                                data,
12178                            )
12179                            .map(LightClientErrors::ERC1967InvalidImplementation)
12180                    }
12181                    ERC1967InvalidImplementation
12182                },
12183                {
12184                    fn WrongStakeTableUsed(
12185                        data: &[u8],
12186                    ) -> alloy_sol_types::Result<LightClientErrors> {
12187                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
12188                                data,
12189                            )
12190                            .map(LightClientErrors::WrongStakeTableUsed)
12191                    }
12192                    WrongStakeTableUsed
12193                },
12194                {
12195                    fn InvalidHotShotBlockForCommitmentCheck(
12196                        data: &[u8],
12197                    ) -> alloy_sol_types::Result<LightClientErrors> {
12198                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
12199                                data,
12200                            )
12201                            .map(
12202                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
12203                            )
12204                    }
12205                    InvalidHotShotBlockForCommitmentCheck
12206                },
12207                {
12208                    fn AddressEmptyCode(
12209                        data: &[u8],
12210                    ) -> alloy_sol_types::Result<LightClientErrors> {
12211                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
12212                                data,
12213                            )
12214                            .map(LightClientErrors::AddressEmptyCode)
12215                    }
12216                    AddressEmptyCode
12217                },
12218                {
12219                    fn InvalidArgs(
12220                        data: &[u8],
12221                    ) -> alloy_sol_types::Result<LightClientErrors> {
12222                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
12223                            .map(LightClientErrors::InvalidArgs)
12224                    }
12225                    InvalidArgs
12226                },
12227                {
12228                    fn ProverNotPermissioned(
12229                        data: &[u8],
12230                    ) -> alloy_sol_types::Result<LightClientErrors> {
12231                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
12232                                data,
12233                            )
12234                            .map(LightClientErrors::ProverNotPermissioned)
12235                    }
12236                    ProverNotPermissioned
12237                },
12238                {
12239                    fn NoChangeRequired(
12240                        data: &[u8],
12241                    ) -> alloy_sol_types::Result<LightClientErrors> {
12242                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12243                                data,
12244                            )
12245                            .map(LightClientErrors::NoChangeRequired)
12246                    }
12247                    NoChangeRequired
12248                },
12249                {
12250                    fn UUPSUnsupportedProxiableUUID(
12251                        data: &[u8],
12252                    ) -> alloy_sol_types::Result<LightClientErrors> {
12253                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12254                                data,
12255                            )
12256                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12257                    }
12258                    UUPSUnsupportedProxiableUUID
12259                },
12260                {
12261                    fn InsufficientSnapshotHistory(
12262                        data: &[u8],
12263                    ) -> alloy_sol_types::Result<LightClientErrors> {
12264                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12265                                data,
12266                            )
12267                            .map(LightClientErrors::InsufficientSnapshotHistory)
12268                    }
12269                    InsufficientSnapshotHistory
12270                },
12271                {
12272                    fn ERC1967NonPayable(
12273                        data: &[u8],
12274                    ) -> alloy_sol_types::Result<LightClientErrors> {
12275                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12276                                data,
12277                            )
12278                            .map(LightClientErrors::ERC1967NonPayable)
12279                    }
12280                    ERC1967NonPayable
12281                },
12282                {
12283                    fn NotInitializing(
12284                        data: &[u8],
12285                    ) -> alloy_sol_types::Result<LightClientErrors> {
12286                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12287                                data,
12288                            )
12289                            .map(LightClientErrors::NotInitializing)
12290                    }
12291                    NotInitializing
12292                },
12293                {
12294                    fn UUPSUnauthorizedCallContext(
12295                        data: &[u8],
12296                    ) -> alloy_sol_types::Result<LightClientErrors> {
12297                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12298                                data,
12299                            )
12300                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12301                    }
12302                    UUPSUnauthorizedCallContext
12303                },
12304                {
12305                    fn InvalidAddress(
12306                        data: &[u8],
12307                    ) -> alloy_sol_types::Result<LightClientErrors> {
12308                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12309                                data,
12310                            )
12311                            .map(LightClientErrors::InvalidAddress)
12312                    }
12313                    InvalidAddress
12314                },
12315                {
12316                    fn InvalidMaxStateHistory(
12317                        data: &[u8],
12318                    ) -> alloy_sol_types::Result<LightClientErrors> {
12319                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12320                                data,
12321                            )
12322                            .map(LightClientErrors::InvalidMaxStateHistory)
12323                    }
12324                    InvalidMaxStateHistory
12325                },
12326                {
12327                    fn InvalidInitialization(
12328                        data: &[u8],
12329                    ) -> alloy_sol_types::Result<LightClientErrors> {
12330                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12331                                data,
12332                            )
12333                            .map(LightClientErrors::InvalidInitialization)
12334                    }
12335                    InvalidInitialization
12336                },
12337            ];
12338            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12339                return Err(
12340                    alloy_sol_types::Error::unknown_selector(
12341                        <Self as alloy_sol_types::SolInterface>::NAME,
12342                        selector,
12343                    ),
12344                );
12345            };
12346            DECODE_SHIMS[idx](data)
12347        }
12348        #[inline]
12349        #[allow(non_snake_case)]
12350        fn abi_decode_raw_validate(
12351            selector: [u8; 4],
12352            data: &[u8],
12353        ) -> alloy_sol_types::Result<Self> {
12354            static DECODE_VALIDATE_SHIMS: &[fn(
12355                &[u8],
12356            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
12357                {
12358                    fn OutdatedState(
12359                        data: &[u8],
12360                    ) -> alloy_sol_types::Result<LightClientErrors> {
12361                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
12362                                data,
12363                            )
12364                            .map(LightClientErrors::OutdatedState)
12365                    }
12366                    OutdatedState
12367                },
12368                {
12369                    fn InvalidScalar(
12370                        data: &[u8],
12371                    ) -> alloy_sol_types::Result<LightClientErrors> {
12372                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
12373                                data,
12374                            )
12375                            .map(LightClientErrors::InvalidScalar)
12376                    }
12377                    InvalidScalar
12378                },
12379                {
12380                    fn InvalidProof(
12381                        data: &[u8],
12382                    ) -> alloy_sol_types::Result<LightClientErrors> {
12383                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12384                                data,
12385                            )
12386                            .map(LightClientErrors::InvalidProof)
12387                    }
12388                    InvalidProof
12389                },
12390                {
12391                    fn OwnableUnauthorizedAccount(
12392                        data: &[u8],
12393                    ) -> alloy_sol_types::Result<LightClientErrors> {
12394                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
12395                                data,
12396                            )
12397                            .map(LightClientErrors::OwnableUnauthorizedAccount)
12398                    }
12399                    OwnableUnauthorizedAccount
12400                },
12401                {
12402                    fn FailedInnerCall(
12403                        data: &[u8],
12404                    ) -> alloy_sol_types::Result<LightClientErrors> {
12405                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
12406                                data,
12407                            )
12408                            .map(LightClientErrors::FailedInnerCall)
12409                    }
12410                    FailedInnerCall
12411                },
12412                {
12413                    fn OwnableInvalidOwner(
12414                        data: &[u8],
12415                    ) -> alloy_sol_types::Result<LightClientErrors> {
12416                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12417                                data,
12418                            )
12419                            .map(LightClientErrors::OwnableInvalidOwner)
12420                    }
12421                    OwnableInvalidOwner
12422                },
12423                {
12424                    fn OwnershipCannotBeRenounced(
12425                        data: &[u8],
12426                    ) -> alloy_sol_types::Result<LightClientErrors> {
12427                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
12428                                data,
12429                            )
12430                            .map(LightClientErrors::OwnershipCannotBeRenounced)
12431                    }
12432                    OwnershipCannotBeRenounced
12433                },
12434                {
12435                    fn ERC1967InvalidImplementation(
12436                        data: &[u8],
12437                    ) -> alloy_sol_types::Result<LightClientErrors> {
12438                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
12439                                data,
12440                            )
12441                            .map(LightClientErrors::ERC1967InvalidImplementation)
12442                    }
12443                    ERC1967InvalidImplementation
12444                },
12445                {
12446                    fn WrongStakeTableUsed(
12447                        data: &[u8],
12448                    ) -> alloy_sol_types::Result<LightClientErrors> {
12449                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
12450                                data,
12451                            )
12452                            .map(LightClientErrors::WrongStakeTableUsed)
12453                    }
12454                    WrongStakeTableUsed
12455                },
12456                {
12457                    fn InvalidHotShotBlockForCommitmentCheck(
12458                        data: &[u8],
12459                    ) -> alloy_sol_types::Result<LightClientErrors> {
12460                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
12461                                data,
12462                            )
12463                            .map(
12464                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
12465                            )
12466                    }
12467                    InvalidHotShotBlockForCommitmentCheck
12468                },
12469                {
12470                    fn AddressEmptyCode(
12471                        data: &[u8],
12472                    ) -> alloy_sol_types::Result<LightClientErrors> {
12473                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
12474                                data,
12475                            )
12476                            .map(LightClientErrors::AddressEmptyCode)
12477                    }
12478                    AddressEmptyCode
12479                },
12480                {
12481                    fn InvalidArgs(
12482                        data: &[u8],
12483                    ) -> alloy_sol_types::Result<LightClientErrors> {
12484                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
12485                                data,
12486                            )
12487                            .map(LightClientErrors::InvalidArgs)
12488                    }
12489                    InvalidArgs
12490                },
12491                {
12492                    fn ProverNotPermissioned(
12493                        data: &[u8],
12494                    ) -> alloy_sol_types::Result<LightClientErrors> {
12495                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
12496                                data,
12497                            )
12498                            .map(LightClientErrors::ProverNotPermissioned)
12499                    }
12500                    ProverNotPermissioned
12501                },
12502                {
12503                    fn NoChangeRequired(
12504                        data: &[u8],
12505                    ) -> alloy_sol_types::Result<LightClientErrors> {
12506                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
12507                                data,
12508                            )
12509                            .map(LightClientErrors::NoChangeRequired)
12510                    }
12511                    NoChangeRequired
12512                },
12513                {
12514                    fn UUPSUnsupportedProxiableUUID(
12515                        data: &[u8],
12516                    ) -> alloy_sol_types::Result<LightClientErrors> {
12517                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
12518                                data,
12519                            )
12520                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12521                    }
12522                    UUPSUnsupportedProxiableUUID
12523                },
12524                {
12525                    fn InsufficientSnapshotHistory(
12526                        data: &[u8],
12527                    ) -> alloy_sol_types::Result<LightClientErrors> {
12528                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12529                                data,
12530                            )
12531                            .map(LightClientErrors::InsufficientSnapshotHistory)
12532                    }
12533                    InsufficientSnapshotHistory
12534                },
12535                {
12536                    fn ERC1967NonPayable(
12537                        data: &[u8],
12538                    ) -> alloy_sol_types::Result<LightClientErrors> {
12539                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12540                                data,
12541                            )
12542                            .map(LightClientErrors::ERC1967NonPayable)
12543                    }
12544                    ERC1967NonPayable
12545                },
12546                {
12547                    fn NotInitializing(
12548                        data: &[u8],
12549                    ) -> alloy_sol_types::Result<LightClientErrors> {
12550                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
12551                                data,
12552                            )
12553                            .map(LightClientErrors::NotInitializing)
12554                    }
12555                    NotInitializing
12556                },
12557                {
12558                    fn UUPSUnauthorizedCallContext(
12559                        data: &[u8],
12560                    ) -> alloy_sol_types::Result<LightClientErrors> {
12561                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
12562                                data,
12563                            )
12564                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12565                    }
12566                    UUPSUnauthorizedCallContext
12567                },
12568                {
12569                    fn InvalidAddress(
12570                        data: &[u8],
12571                    ) -> alloy_sol_types::Result<LightClientErrors> {
12572                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
12573                                data,
12574                            )
12575                            .map(LightClientErrors::InvalidAddress)
12576                    }
12577                    InvalidAddress
12578                },
12579                {
12580                    fn InvalidMaxStateHistory(
12581                        data: &[u8],
12582                    ) -> alloy_sol_types::Result<LightClientErrors> {
12583                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12584                                data,
12585                            )
12586                            .map(LightClientErrors::InvalidMaxStateHistory)
12587                    }
12588                    InvalidMaxStateHistory
12589                },
12590                {
12591                    fn InvalidInitialization(
12592                        data: &[u8],
12593                    ) -> alloy_sol_types::Result<LightClientErrors> {
12594                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
12595                                data,
12596                            )
12597                            .map(LightClientErrors::InvalidInitialization)
12598                    }
12599                    InvalidInitialization
12600                },
12601            ];
12602            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12603                return Err(
12604                    alloy_sol_types::Error::unknown_selector(
12605                        <Self as alloy_sol_types::SolInterface>::NAME,
12606                        selector,
12607                    ),
12608                );
12609            };
12610            DECODE_VALIDATE_SHIMS[idx](data)
12611        }
12612        #[inline]
12613        fn abi_encoded_size(&self) -> usize {
12614            match self {
12615                Self::AddressEmptyCode(inner) => {
12616                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12617                        inner,
12618                    )
12619                }
12620                Self::ERC1967InvalidImplementation(inner) => {
12621                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12622                        inner,
12623                    )
12624                }
12625                Self::ERC1967NonPayable(inner) => {
12626                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12627                        inner,
12628                    )
12629                }
12630                Self::FailedInnerCall(inner) => {
12631                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12632                        inner,
12633                    )
12634                }
12635                Self::InsufficientSnapshotHistory(inner) => {
12636                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12637                        inner,
12638                    )
12639                }
12640                Self::InvalidAddress(inner) => {
12641                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12642                        inner,
12643                    )
12644                }
12645                Self::InvalidArgs(inner) => {
12646                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12647                }
12648                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12649                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12650                        inner,
12651                    )
12652                }
12653                Self::InvalidInitialization(inner) => {
12654                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12655                        inner,
12656                    )
12657                }
12658                Self::InvalidMaxStateHistory(inner) => {
12659                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12660                        inner,
12661                    )
12662                }
12663                Self::InvalidProof(inner) => {
12664                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12665                }
12666                Self::InvalidScalar(inner) => {
12667                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12668                }
12669                Self::NoChangeRequired(inner) => {
12670                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12671                        inner,
12672                    )
12673                }
12674                Self::NotInitializing(inner) => {
12675                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12676                        inner,
12677                    )
12678                }
12679                Self::OutdatedState(inner) => {
12680                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12681                }
12682                Self::OwnableInvalidOwner(inner) => {
12683                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12684                        inner,
12685                    )
12686                }
12687                Self::OwnableUnauthorizedAccount(inner) => {
12688                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12689                        inner,
12690                    )
12691                }
12692                Self::OwnershipCannotBeRenounced(inner) => {
12693                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
12694                        inner,
12695                    )
12696                }
12697                Self::ProverNotPermissioned(inner) => {
12698                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12699                        inner,
12700                    )
12701                }
12702                Self::UUPSUnauthorizedCallContext(inner) => {
12703                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12704                        inner,
12705                    )
12706                }
12707                Self::UUPSUnsupportedProxiableUUID(inner) => {
12708                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12709                        inner,
12710                    )
12711                }
12712                Self::WrongStakeTableUsed(inner) => {
12713                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12714                        inner,
12715                    )
12716                }
12717            }
12718        }
12719        #[inline]
12720        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12721            match self {
12722                Self::AddressEmptyCode(inner) => {
12723                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12724                        inner,
12725                        out,
12726                    )
12727                }
12728                Self::ERC1967InvalidImplementation(inner) => {
12729                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12730                        inner,
12731                        out,
12732                    )
12733                }
12734                Self::ERC1967NonPayable(inner) => {
12735                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12736                        inner,
12737                        out,
12738                    )
12739                }
12740                Self::FailedInnerCall(inner) => {
12741                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12742                        inner,
12743                        out,
12744                    )
12745                }
12746                Self::InsufficientSnapshotHistory(inner) => {
12747                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12748                        inner,
12749                        out,
12750                    )
12751                }
12752                Self::InvalidAddress(inner) => {
12753                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12754                        inner,
12755                        out,
12756                    )
12757                }
12758                Self::InvalidArgs(inner) => {
12759                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12760                        inner,
12761                        out,
12762                    )
12763                }
12764                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12765                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12766                        inner,
12767                        out,
12768                    )
12769                }
12770                Self::InvalidInitialization(inner) => {
12771                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12772                        inner,
12773                        out,
12774                    )
12775                }
12776                Self::InvalidMaxStateHistory(inner) => {
12777                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12778                        inner,
12779                        out,
12780                    )
12781                }
12782                Self::InvalidProof(inner) => {
12783                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12784                        inner,
12785                        out,
12786                    )
12787                }
12788                Self::InvalidScalar(inner) => {
12789                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12790                        inner,
12791                        out,
12792                    )
12793                }
12794                Self::NoChangeRequired(inner) => {
12795                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12796                        inner,
12797                        out,
12798                    )
12799                }
12800                Self::NotInitializing(inner) => {
12801                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12802                        inner,
12803                        out,
12804                    )
12805                }
12806                Self::OutdatedState(inner) => {
12807                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12808                        inner,
12809                        out,
12810                    )
12811                }
12812                Self::OwnableInvalidOwner(inner) => {
12813                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12814                        inner,
12815                        out,
12816                    )
12817                }
12818                Self::OwnableUnauthorizedAccount(inner) => {
12819                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12820                        inner,
12821                        out,
12822                    )
12823                }
12824                Self::OwnershipCannotBeRenounced(inner) => {
12825                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12826                        inner,
12827                        out,
12828                    )
12829                }
12830                Self::ProverNotPermissioned(inner) => {
12831                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12832                        inner,
12833                        out,
12834                    )
12835                }
12836                Self::UUPSUnauthorizedCallContext(inner) => {
12837                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12838                        inner,
12839                        out,
12840                    )
12841                }
12842                Self::UUPSUnsupportedProxiableUUID(inner) => {
12843                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12844                        inner,
12845                        out,
12846                    )
12847                }
12848                Self::WrongStakeTableUsed(inner) => {
12849                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12850                        inner,
12851                        out,
12852                    )
12853                }
12854            }
12855        }
12856    }
12857    ///Container for all the [`LightClient`](self) events.
12858    #[derive(Clone)]
12859    #[derive(serde::Serialize, serde::Deserialize)]
12860    #[derive(Debug, PartialEq, Eq, Hash)]
12861    pub enum LightClientEvents {
12862        #[allow(missing_docs)]
12863        Initialized(Initialized),
12864        #[allow(missing_docs)]
12865        NewState(NewState),
12866        #[allow(missing_docs)]
12867        OwnershipTransferred(OwnershipTransferred),
12868        #[allow(missing_docs)]
12869        PermissionedProverNotRequired(PermissionedProverNotRequired),
12870        #[allow(missing_docs)]
12871        PermissionedProverRequired(PermissionedProverRequired),
12872        #[allow(missing_docs)]
12873        Upgrade(Upgrade),
12874        #[allow(missing_docs)]
12875        Upgraded(Upgraded),
12876    }
12877    impl LightClientEvents {
12878        /// All the selectors of this enum.
12879        ///
12880        /// Note that the selectors might not be in the same order as the variants.
12881        /// No guarantees are made about the order of the selectors.
12882        ///
12883        /// Prefer using `SolInterface` methods instead.
12884        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12885            [
12886                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12887                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12888                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12889            ],
12890            [
12891                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12892                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12893                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12894            ],
12895            [
12896                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12897                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12898                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12899            ],
12900            [
12901                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12902                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12903                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12904            ],
12905            [
12906                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12907                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12908                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12909            ],
12910            [
12911                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12912                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12913                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12914            ],
12915            [
12916                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
12917                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
12918                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12919            ],
12920        ];
12921        /// The names of the variants in the same order as `SELECTORS`.
12922        pub const VARIANT_NAMES: &'static [&'static str] = &[
12923            ::core::stringify!(PermissionedProverRequired),
12924            ::core::stringify!(OwnershipTransferred),
12925            ::core::stringify!(PermissionedProverNotRequired),
12926            ::core::stringify!(NewState),
12927            ::core::stringify!(Upgraded),
12928            ::core::stringify!(Initialized),
12929            ::core::stringify!(Upgrade),
12930        ];
12931        /// The signatures in the same order as `SELECTORS`.
12932        pub const SIGNATURES: &'static [&'static str] = &[
12933            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
12934            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
12935            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
12936            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
12937            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
12938            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
12939            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
12940        ];
12941        /// Returns the signature for the given selector, if known.
12942        #[inline]
12943        pub fn signature_by_selector(
12944            selector: [u8; 32usize],
12945        ) -> ::core::option::Option<&'static str> {
12946            match Self::SELECTORS.binary_search(&selector) {
12947                ::core::result::Result::Ok(idx) => {
12948                    ::core::option::Option::Some(Self::SIGNATURES[idx])
12949                }
12950                ::core::result::Result::Err(_) => ::core::option::Option::None,
12951            }
12952        }
12953        /// Returns the enum variant name for the given selector, if known.
12954        #[inline]
12955        pub fn name_by_selector(
12956            selector: [u8; 32usize],
12957        ) -> ::core::option::Option<&'static str> {
12958            let sig = Self::signature_by_selector(selector)?;
12959            sig.split_once('(').map(|(name, _)| name)
12960        }
12961    }
12962    #[automatically_derived]
12963    impl alloy_sol_types::SolEventInterface for LightClientEvents {
12964        const NAME: &'static str = "LightClientEvents";
12965        const COUNT: usize = 7usize;
12966        fn decode_raw_log(
12967            topics: &[alloy_sol_types::Word],
12968            data: &[u8],
12969        ) -> alloy_sol_types::Result<Self> {
12970            match topics.first().copied() {
12971                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12972                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12973                            topics,
12974                            data,
12975                        )
12976                        .map(Self::Initialized)
12977                }
12978                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12979                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12980                        .map(Self::NewState)
12981                }
12982                Some(
12983                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12984                ) => {
12985                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12986                            topics,
12987                            data,
12988                        )
12989                        .map(Self::OwnershipTransferred)
12990                }
12991                Some(
12992                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12993                ) => {
12994                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12995                            topics,
12996                            data,
12997                        )
12998                        .map(Self::PermissionedProverNotRequired)
12999                }
13000                Some(
13001                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13002                ) => {
13003                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13004                            topics,
13005                            data,
13006                        )
13007                        .map(Self::PermissionedProverRequired)
13008                }
13009                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13010                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13011                        .map(Self::Upgrade)
13012                }
13013                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13014                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13015                        .map(Self::Upgraded)
13016                }
13017                _ => {
13018                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
13019                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
13020                        log: alloy_sol_types::private::Box::new(
13021                            alloy_sol_types::private::LogData::new_unchecked(
13022                                topics.to_vec(),
13023                                data.to_vec().into(),
13024                            ),
13025                        ),
13026                    })
13027                }
13028            }
13029        }
13030    }
13031    #[automatically_derived]
13032    impl alloy_sol_types::private::IntoLogData for LightClientEvents {
13033        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
13034            match self {
13035                Self::Initialized(inner) => {
13036                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13037                }
13038                Self::NewState(inner) => {
13039                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13040                }
13041                Self::OwnershipTransferred(inner) => {
13042                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13043                }
13044                Self::PermissionedProverNotRequired(inner) => {
13045                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13046                }
13047                Self::PermissionedProverRequired(inner) => {
13048                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13049                }
13050                Self::Upgrade(inner) => {
13051                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13052                }
13053                Self::Upgraded(inner) => {
13054                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13055                }
13056            }
13057        }
13058        fn into_log_data(self) -> alloy_sol_types::private::LogData {
13059            match self {
13060                Self::Initialized(inner) => {
13061                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13062                }
13063                Self::NewState(inner) => {
13064                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13065                }
13066                Self::OwnershipTransferred(inner) => {
13067                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13068                }
13069                Self::PermissionedProverNotRequired(inner) => {
13070                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13071                }
13072                Self::PermissionedProverRequired(inner) => {
13073                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13074                }
13075                Self::Upgrade(inner) => {
13076                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13077                }
13078                Self::Upgraded(inner) => {
13079                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13080                }
13081            }
13082        }
13083    }
13084    use alloy::contract as alloy_contract;
13085    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
13086
13087See the [wrapper's documentation](`LightClientInstance`) for more details.*/
13088    #[inline]
13089    pub const fn new<
13090        P: alloy_contract::private::Provider<N>,
13091        N: alloy_contract::private::Network,
13092    >(
13093        address: alloy_sol_types::private::Address,
13094        __provider: P,
13095    ) -> LightClientInstance<P, N> {
13096        LightClientInstance::<P, N>::new(address, __provider)
13097    }
13098    /**Deploys this contract using the given `provider` and constructor arguments, if any.
13099
13100Returns a new instance of the contract, if the deployment was successful.
13101
13102For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13103    #[inline]
13104    pub fn deploy<
13105        P: alloy_contract::private::Provider<N>,
13106        N: alloy_contract::private::Network,
13107    >(
13108        __provider: P,
13109    ) -> impl ::core::future::Future<
13110        Output = alloy_contract::Result<LightClientInstance<P, N>>,
13111    > {
13112        LightClientInstance::<P, N>::deploy(__provider)
13113    }
13114    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13115and constructor arguments, if any.
13116
13117This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13118the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13119    #[inline]
13120    pub fn deploy_builder<
13121        P: alloy_contract::private::Provider<N>,
13122        N: alloy_contract::private::Network,
13123    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13124        LightClientInstance::<P, N>::deploy_builder(__provider)
13125    }
13126    /**A [`LightClient`](self) instance.
13127
13128Contains type-safe methods for interacting with an on-chain instance of the
13129[`LightClient`](self) contract located at a given `address`, using a given
13130provider `P`.
13131
13132If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
13133documentation on how to provide it), the `deploy` and `deploy_builder` methods can
13134be used to deploy a new instance of the contract.
13135
13136See the [module-level documentation](self) for all the available methods.*/
13137    #[derive(Clone)]
13138    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
13139        address: alloy_sol_types::private::Address,
13140        provider: P,
13141        _network: ::core::marker::PhantomData<N>,
13142    }
13143    #[automatically_derived]
13144    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
13145        #[inline]
13146        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13147            f.debug_tuple("LightClientInstance").field(&self.address).finish()
13148        }
13149    }
13150    /// Instantiation and getters/setters.
13151    impl<
13152        P: alloy_contract::private::Provider<N>,
13153        N: alloy_contract::private::Network,
13154    > LightClientInstance<P, N> {
13155        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
13156
13157See the [wrapper's documentation](`LightClientInstance`) for more details.*/
13158        #[inline]
13159        pub const fn new(
13160            address: alloy_sol_types::private::Address,
13161            __provider: P,
13162        ) -> Self {
13163            Self {
13164                address,
13165                provider: __provider,
13166                _network: ::core::marker::PhantomData,
13167            }
13168        }
13169        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13170
13171Returns a new instance of the contract, if the deployment was successful.
13172
13173For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13174        #[inline]
13175        pub async fn deploy(
13176            __provider: P,
13177        ) -> alloy_contract::Result<LightClientInstance<P, N>> {
13178            let call_builder = Self::deploy_builder(__provider);
13179            let contract_address = call_builder.deploy().await?;
13180            Ok(Self::new(contract_address, call_builder.provider))
13181        }
13182        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13183and constructor arguments, if any.
13184
13185This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13186the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13187        #[inline]
13188        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13189            alloy_contract::RawCallBuilder::new_raw_deploy(
13190                __provider,
13191                ::core::clone::Clone::clone(&BYTECODE),
13192            )
13193        }
13194        /// Returns a reference to the address.
13195        #[inline]
13196        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13197            &self.address
13198        }
13199        /// Sets the address.
13200        #[inline]
13201        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13202            self.address = address;
13203        }
13204        /// Sets the address and returns `self`.
13205        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13206            self.set_address(address);
13207            self
13208        }
13209        /// Returns a reference to the provider.
13210        #[inline]
13211        pub const fn provider(&self) -> &P {
13212            &self.provider
13213        }
13214    }
13215    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
13216        /// Clones the provider and returns a new instance with the cloned provider.
13217        #[inline]
13218        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
13219            LightClientInstance {
13220                address: self.address,
13221                provider: ::core::clone::Clone::clone(&self.provider),
13222                _network: ::core::marker::PhantomData,
13223            }
13224        }
13225    }
13226    /// Function calls.
13227    impl<
13228        P: alloy_contract::private::Provider<N>,
13229        N: alloy_contract::private::Network,
13230    > LightClientInstance<P, N> {
13231        /// Creates a new call builder using this contract instance's provider and address.
13232        ///
13233        /// Note that the call can be any function call, not just those defined in this
13234        /// contract. Prefer using the other methods for building type-safe contract calls.
13235        pub fn call_builder<C: alloy_sol_types::SolCall>(
13236            &self,
13237            call: &C,
13238        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13239            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13240        }
13241        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13242        pub fn UPGRADE_INTERFACE_VERSION(
13243            &self,
13244        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
13245            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
13246        }
13247        ///Creates a new call builder for the [`_getVk`] function.
13248        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
13249            self.call_builder(&_getVkCall)
13250        }
13251        ///Creates a new call builder for the [`currentBlockNumber`] function.
13252        pub fn currentBlockNumber(
13253            &self,
13254        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
13255            self.call_builder(&currentBlockNumberCall)
13256        }
13257        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13258        pub fn disablePermissionedProverMode(
13259            &self,
13260        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
13261            self.call_builder(&disablePermissionedProverModeCall)
13262        }
13263        ///Creates a new call builder for the [`finalizedState`] function.
13264        pub fn finalizedState(
13265            &self,
13266        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
13267            self.call_builder(&finalizedStateCall)
13268        }
13269        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13270        pub fn genesisStakeTableState(
13271            &self,
13272        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
13273            self.call_builder(&genesisStakeTableStateCall)
13274        }
13275        ///Creates a new call builder for the [`genesisState`] function.
13276        pub fn genesisState(
13277            &self,
13278        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
13279            self.call_builder(&genesisStateCall)
13280        }
13281        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13282        pub fn getHotShotCommitment(
13283            &self,
13284            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13285        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
13286            self.call_builder(
13287                &getHotShotCommitmentCall {
13288                    hotShotBlockHeight,
13289                },
13290            )
13291        }
13292        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13293        pub fn getStateHistoryCount(
13294            &self,
13295        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
13296            self.call_builder(&getStateHistoryCountCall)
13297        }
13298        ///Creates a new call builder for the [`getVersion`] function.
13299        pub fn getVersion(
13300            &self,
13301        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13302            self.call_builder(&getVersionCall)
13303        }
13304        ///Creates a new call builder for the [`initialize`] function.
13305        pub fn initialize(
13306            &self,
13307            _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
13308            _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
13309            _stateHistoryRetentionPeriod: u32,
13310            owner: alloy::sol_types::private::Address,
13311        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13312            self.call_builder(
13313                &initializeCall {
13314                    _genesis,
13315                    _genesisStakeTableState,
13316                    _stateHistoryRetentionPeriod,
13317                    owner,
13318                },
13319            )
13320        }
13321        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13322        pub fn isPermissionedProverEnabled(
13323            &self,
13324        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13325            self.call_builder(&isPermissionedProverEnabledCall)
13326        }
13327        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13328        pub fn lagOverEscapeHatchThreshold(
13329            &self,
13330            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13331            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13332        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13333            self.call_builder(
13334                &lagOverEscapeHatchThresholdCall {
13335                    blockNumber,
13336                    blockThreshold,
13337                },
13338            )
13339        }
13340        ///Creates a new call builder for the [`newFinalizedState`] function.
13341        pub fn newFinalizedState(
13342            &self,
13343            newState: <LightClientState as alloy::sol_types::SolType>::RustType,
13344            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13345        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13346            self.call_builder(
13347                &newFinalizedStateCall {
13348                    newState,
13349                    proof,
13350                },
13351            )
13352        }
13353        ///Creates a new call builder for the [`owner`] function.
13354        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13355            self.call_builder(&ownerCall)
13356        }
13357        ///Creates a new call builder for the [`permissionedProver`] function.
13358        pub fn permissionedProver(
13359            &self,
13360        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13361            self.call_builder(&permissionedProverCall)
13362        }
13363        ///Creates a new call builder for the [`proxiableUUID`] function.
13364        pub fn proxiableUUID(
13365            &self,
13366        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13367            self.call_builder(&proxiableUUIDCall)
13368        }
13369        ///Creates a new call builder for the [`renounceOwnership`] function.
13370        pub fn renounceOwnership(
13371            &self,
13372        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13373            self.call_builder(&renounceOwnershipCall)
13374        }
13375        ///Creates a new call builder for the [`setPermissionedProver`] function.
13376        pub fn setPermissionedProver(
13377            &self,
13378            prover: alloy::sol_types::private::Address,
13379        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13380            self.call_builder(
13381                &setPermissionedProverCall {
13382                    prover,
13383                },
13384            )
13385        }
13386        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13387        pub fn setstateHistoryRetentionPeriod(
13388            &self,
13389            historySeconds: u32,
13390        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13391            self.call_builder(
13392                &setstateHistoryRetentionPeriodCall {
13393                    historySeconds,
13394                },
13395            )
13396        }
13397        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13398        pub fn stateHistoryCommitments(
13399            &self,
13400            _0: alloy::sol_types::private::primitives::aliases::U256,
13401        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13402            self.call_builder(&stateHistoryCommitmentsCall(_0))
13403        }
13404        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13405        pub fn stateHistoryFirstIndex(
13406            &self,
13407        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13408            self.call_builder(&stateHistoryFirstIndexCall)
13409        }
13410        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13411        pub fn stateHistoryRetentionPeriod(
13412            &self,
13413        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13414            self.call_builder(&stateHistoryRetentionPeriodCall)
13415        }
13416        ///Creates a new call builder for the [`transferOwnership`] function.
13417        pub fn transferOwnership(
13418            &self,
13419            newOwner: alloy::sol_types::private::Address,
13420        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13421            self.call_builder(&transferOwnershipCall { newOwner })
13422        }
13423        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13424        pub fn upgradeToAndCall(
13425            &self,
13426            newImplementation: alloy::sol_types::private::Address,
13427            data: alloy::sol_types::private::Bytes,
13428        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13429            self.call_builder(
13430                &upgradeToAndCallCall {
13431                    newImplementation,
13432                    data,
13433                },
13434            )
13435        }
13436    }
13437    /// Event filters.
13438    impl<
13439        P: alloy_contract::private::Provider<N>,
13440        N: alloy_contract::private::Network,
13441    > LightClientInstance<P, N> {
13442        /// Creates a new event filter using this contract instance's provider and address.
13443        ///
13444        /// Note that the type can be any event, not just those defined in this contract.
13445        /// Prefer using the other methods for building type-safe event filters.
13446        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13447            &self,
13448        ) -> alloy_contract::Event<&P, E, N> {
13449            alloy_contract::Event::new_sol(&self.provider, &self.address)
13450        }
13451        ///Creates a new event filter for the [`Initialized`] event.
13452        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13453            self.event_filter::<Initialized>()
13454        }
13455        ///Creates a new event filter for the [`NewState`] event.
13456        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13457            self.event_filter::<NewState>()
13458        }
13459        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13460        pub fn OwnershipTransferred_filter(
13461            &self,
13462        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13463            self.event_filter::<OwnershipTransferred>()
13464        }
13465        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13466        pub fn PermissionedProverNotRequired_filter(
13467            &self,
13468        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13469            self.event_filter::<PermissionedProverNotRequired>()
13470        }
13471        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13472        pub fn PermissionedProverRequired_filter(
13473            &self,
13474        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13475            self.event_filter::<PermissionedProverRequired>()
13476        }
13477        ///Creates a new event filter for the [`Upgrade`] event.
13478        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13479            self.event_filter::<Upgrade>()
13480        }
13481        ///Creates a new event filter for the [`Upgraded`] event.
13482        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13483            self.event_filter::<Upgraded>()
13484        }
13485    }
13486}