Skip to main content

hotshot_contract_adapter/bindings/
light_client_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(BaseField);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(ScalarField);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
636    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
651    /**```solidity
652struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1374    /**```solidity
1375struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2242}
2243```*/
2244#[allow(
2245    non_camel_case_types,
2246    non_snake_case,
2247    clippy::pub_underscore_fields,
2248    clippy::style,
2249    clippy::empty_structs_with_brackets
2250)]
2251pub mod LightClient {
2252    use super::*;
2253    use alloy::sol_types as alloy_sol_types;
2254    #[derive(serde::Serialize, serde::Deserialize)]
2255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2256    /**```solidity
2257struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2258```*/
2259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2260    #[derive(Clone)]
2261    pub struct LightClientState {
2262        #[allow(missing_docs)]
2263        pub viewNum: u64,
2264        #[allow(missing_docs)]
2265        pub blockHeight: u64,
2266        #[allow(missing_docs)]
2267        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2268    }
2269    #[allow(
2270        non_camel_case_types,
2271        non_snake_case,
2272        clippy::pub_underscore_fields,
2273        clippy::style
2274    )]
2275    const _: () = {
2276        use alloy::sol_types as alloy_sol_types;
2277        #[doc(hidden)]
2278        #[allow(dead_code)]
2279        type UnderlyingSolTuple<'a> = (
2280            alloy::sol_types::sol_data::Uint<64>,
2281            alloy::sol_types::sol_data::Uint<64>,
2282            BN254::ScalarField,
2283        );
2284        #[doc(hidden)]
2285        type UnderlyingRustTuple<'a> = (
2286            u64,
2287            u64,
2288            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2289        );
2290        #[cfg(test)]
2291        #[allow(dead_code, unreachable_patterns)]
2292        fn _type_assertion(
2293            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2294        ) {
2295            match _t {
2296                alloy_sol_types::private::AssertTypeEq::<
2297                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2298                >(_) => {}
2299            }
2300        }
2301        #[automatically_derived]
2302        #[doc(hidden)]
2303        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2304            fn from(value: LightClientState) -> Self {
2305                (value.viewNum, value.blockHeight, value.blockCommRoot)
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2311            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2312                Self {
2313                    viewNum: tuple.0,
2314                    blockHeight: tuple.1,
2315                    blockCommRoot: tuple.2,
2316                }
2317            }
2318        }
2319        #[automatically_derived]
2320        impl alloy_sol_types::SolValue for LightClientState {
2321            type SolType = Self;
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2325            #[inline]
2326            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2327                (
2328                    <alloy::sol_types::sol_data::Uint<
2329                        64,
2330                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2334                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2335                        &self.blockCommRoot,
2336                    ),
2337                )
2338            }
2339            #[inline]
2340            fn stv_abi_encoded_size(&self) -> usize {
2341                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2342                    return size;
2343                }
2344                let tuple = <UnderlyingRustTuple<
2345                    '_,
2346                > as ::core::convert::From<Self>>::from(self.clone());
2347                <UnderlyingSolTuple<
2348                    '_,
2349                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2350            }
2351            #[inline]
2352            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2353                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2354            }
2355            #[inline]
2356            fn stv_abi_encode_packed_to(
2357                &self,
2358                out: &mut alloy_sol_types::private::Vec<u8>,
2359            ) {
2360                let tuple = <UnderlyingRustTuple<
2361                    '_,
2362                > as ::core::convert::From<Self>>::from(self.clone());
2363                <UnderlyingSolTuple<
2364                    '_,
2365                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2366            }
2367            #[inline]
2368            fn stv_abi_packed_encoded_size(&self) -> usize {
2369                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2370                    return size;
2371                }
2372                let tuple = <UnderlyingRustTuple<
2373                    '_,
2374                > as ::core::convert::From<Self>>::from(self.clone());
2375                <UnderlyingSolTuple<
2376                    '_,
2377                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2378            }
2379        }
2380        #[automatically_derived]
2381        impl alloy_sol_types::SolType for LightClientState {
2382            type RustType = Self;
2383            type Token<'a> = <UnderlyingSolTuple<
2384                'a,
2385            > as alloy_sol_types::SolType>::Token<'a>;
2386            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2387            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2388                '_,
2389            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2390            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2393            #[inline]
2394            fn valid_token(token: &Self::Token<'_>) -> bool {
2395                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2396            }
2397            #[inline]
2398            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2399                let tuple = <UnderlyingSolTuple<
2400                    '_,
2401                > as alloy_sol_types::SolType>::detokenize(token);
2402                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2403            }
2404        }
2405        #[automatically_derived]
2406        impl alloy_sol_types::SolStruct for LightClientState {
2407            const NAME: &'static str = "LightClientState";
2408            #[inline]
2409            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2410                alloy_sol_types::private::Cow::Borrowed(
2411                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2412                )
2413            }
2414            #[inline]
2415            fn eip712_components() -> alloy_sol_types::private::Vec<
2416                alloy_sol_types::private::Cow<'static, str>,
2417            > {
2418                alloy_sol_types::private::Vec::new()
2419            }
2420            #[inline]
2421            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2422                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2423            }
2424            #[inline]
2425            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2426                [
2427                    <alloy::sol_types::sol_data::Uint<
2428                        64,
2429                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2430                        .0,
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2434                        .0,
2435                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2436                            &self.blockCommRoot,
2437                        )
2438                        .0,
2439                ]
2440                    .concat()
2441            }
2442        }
2443        #[automatically_derived]
2444        impl alloy_sol_types::EventTopic for LightClientState {
2445            #[inline]
2446            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2447                0usize
2448                    + <alloy::sol_types::sol_data::Uint<
2449                        64,
2450                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2451                        &rust.viewNum,
2452                    )
2453                    + <alloy::sol_types::sol_data::Uint<
2454                        64,
2455                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2456                        &rust.blockHeight,
2457                    )
2458                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockCommRoot,
2460                    )
2461            }
2462            #[inline]
2463            fn encode_topic_preimage(
2464                rust: &Self::RustType,
2465                out: &mut alloy_sol_types::private::Vec<u8>,
2466            ) {
2467                out.reserve(
2468                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2469                );
2470                <alloy::sol_types::sol_data::Uint<
2471                    64,
2472                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    &rust.viewNum,
2474                    out,
2475                );
2476                <alloy::sol_types::sol_data::Uint<
2477                    64,
2478                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2479                    &rust.blockHeight,
2480                    out,
2481                );
2482                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockCommRoot,
2484                    out,
2485                );
2486            }
2487            #[inline]
2488            fn encode_topic(
2489                rust: &Self::RustType,
2490            ) -> alloy_sol_types::abi::token::WordToken {
2491                let mut out = alloy_sol_types::private::Vec::new();
2492                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2493                    rust,
2494                    &mut out,
2495                );
2496                alloy_sol_types::abi::token::WordToken(
2497                    alloy_sol_types::private::keccak256(out),
2498                )
2499            }
2500        }
2501    };
2502    #[derive(serde::Serialize, serde::Deserialize)]
2503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2504    /**```solidity
2505struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2506```*/
2507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2508    #[derive(Clone)]
2509    pub struct StakeTableState {
2510        #[allow(missing_docs)]
2511        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2512        #[allow(missing_docs)]
2513        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2514        #[allow(missing_docs)]
2515        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2516        #[allow(missing_docs)]
2517        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518    }
2519    #[allow(
2520        non_camel_case_types,
2521        non_snake_case,
2522        clippy::pub_underscore_fields,
2523        clippy::style
2524    )]
2525    const _: () = {
2526        use alloy::sol_types as alloy_sol_types;
2527        #[doc(hidden)]
2528        #[allow(dead_code)]
2529        type UnderlyingSolTuple<'a> = (
2530            alloy::sol_types::sol_data::Uint<256>,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533            BN254::ScalarField,
2534        );
2535        #[doc(hidden)]
2536        type UnderlyingRustTuple<'a> = (
2537            alloy::sol_types::private::primitives::aliases::U256,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541        );
2542        #[cfg(test)]
2543        #[allow(dead_code, unreachable_patterns)]
2544        fn _type_assertion(
2545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2546        ) {
2547            match _t {
2548                alloy_sol_types::private::AssertTypeEq::<
2549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2550                >(_) => {}
2551            }
2552        }
2553        #[automatically_derived]
2554        #[doc(hidden)]
2555        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2556            fn from(value: StakeTableState) -> Self {
2557                (
2558                    value.threshold,
2559                    value.blsKeyComm,
2560                    value.schnorrKeyComm,
2561                    value.amountComm,
2562                )
2563            }
2564        }
2565        #[automatically_derived]
2566        #[doc(hidden)]
2567        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2568            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2569                Self {
2570                    threshold: tuple.0,
2571                    blsKeyComm: tuple.1,
2572                    schnorrKeyComm: tuple.2,
2573                    amountComm: tuple.3,
2574                }
2575            }
2576        }
2577        #[automatically_derived]
2578        impl alloy_sol_types::SolValue for StakeTableState {
2579            type SolType = Self;
2580        }
2581        #[automatically_derived]
2582        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2583            #[inline]
2584            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2585                (
2586                    <alloy::sol_types::sol_data::Uint<
2587                        256,
2588                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2589                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2590                        &self.blsKeyComm,
2591                    ),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.schnorrKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.amountComm,
2597                    ),
2598                )
2599            }
2600            #[inline]
2601            fn stv_abi_encoded_size(&self) -> usize {
2602                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2603                    return size;
2604                }
2605                let tuple = <UnderlyingRustTuple<
2606                    '_,
2607                > as ::core::convert::From<Self>>::from(self.clone());
2608                <UnderlyingSolTuple<
2609                    '_,
2610                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2611            }
2612            #[inline]
2613            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2614                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2615            }
2616            #[inline]
2617            fn stv_abi_encode_packed_to(
2618                &self,
2619                out: &mut alloy_sol_types::private::Vec<u8>,
2620            ) {
2621                let tuple = <UnderlyingRustTuple<
2622                    '_,
2623                > as ::core::convert::From<Self>>::from(self.clone());
2624                <UnderlyingSolTuple<
2625                    '_,
2626                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2627            }
2628            #[inline]
2629            fn stv_abi_packed_encoded_size(&self) -> usize {
2630                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2631                    return size;
2632                }
2633                let tuple = <UnderlyingRustTuple<
2634                    '_,
2635                > as ::core::convert::From<Self>>::from(self.clone());
2636                <UnderlyingSolTuple<
2637                    '_,
2638                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2639            }
2640        }
2641        #[automatically_derived]
2642        impl alloy_sol_types::SolType for StakeTableState {
2643            type RustType = Self;
2644            type Token<'a> = <UnderlyingSolTuple<
2645                'a,
2646            > as alloy_sol_types::SolType>::Token<'a>;
2647            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2648            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2649                '_,
2650            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2651            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2654            #[inline]
2655            fn valid_token(token: &Self::Token<'_>) -> bool {
2656                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2657            }
2658            #[inline]
2659            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2660                let tuple = <UnderlyingSolTuple<
2661                    '_,
2662                > as alloy_sol_types::SolType>::detokenize(token);
2663                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2664            }
2665        }
2666        #[automatically_derived]
2667        impl alloy_sol_types::SolStruct for StakeTableState {
2668            const NAME: &'static str = "StakeTableState";
2669            #[inline]
2670            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2671                alloy_sol_types::private::Cow::Borrowed(
2672                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2673                )
2674            }
2675            #[inline]
2676            fn eip712_components() -> alloy_sol_types::private::Vec<
2677                alloy_sol_types::private::Cow<'static, str>,
2678            > {
2679                alloy_sol_types::private::Vec::new()
2680            }
2681            #[inline]
2682            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2683                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2684            }
2685            #[inline]
2686            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2687                [
2688                    <alloy::sol_types::sol_data::Uint<
2689                        256,
2690                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2691                        .0,
2692                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2693                            &self.blsKeyComm,
2694                        )
2695                        .0,
2696                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2697                            &self.schnorrKeyComm,
2698                        )
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.amountComm,
2702                        )
2703                        .0,
2704                ]
2705                    .concat()
2706            }
2707        }
2708        #[automatically_derived]
2709        impl alloy_sol_types::EventTopic for StakeTableState {
2710            #[inline]
2711            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2712                0usize
2713                    + <alloy::sol_types::sol_data::Uint<
2714                        256,
2715                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2716                        &rust.threshold,
2717                    )
2718                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.blsKeyComm,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.schnorrKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.amountComm,
2726                    )
2727            }
2728            #[inline]
2729            fn encode_topic_preimage(
2730                rust: &Self::RustType,
2731                out: &mut alloy_sol_types::private::Vec<u8>,
2732            ) {
2733                out.reserve(
2734                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2735                );
2736                <alloy::sol_types::sol_data::Uint<
2737                    256,
2738                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    &rust.threshold,
2740                    out,
2741                );
2742                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2743                    &rust.blsKeyComm,
2744                    out,
2745                );
2746                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.schnorrKeyComm,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.amountComm,
2752                    out,
2753                );
2754            }
2755            #[inline]
2756            fn encode_topic(
2757                rust: &Self::RustType,
2758            ) -> alloy_sol_types::abi::token::WordToken {
2759                let mut out = alloy_sol_types::private::Vec::new();
2760                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2761                    rust,
2762                    &mut out,
2763                );
2764                alloy_sol_types::abi::token::WordToken(
2765                    alloy_sol_types::private::keccak256(out),
2766                )
2767            }
2768        }
2769    };
2770    #[derive(serde::Serialize, serde::Deserialize)]
2771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2772    /**```solidity
2773struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2774```*/
2775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2776    #[derive(Clone)]
2777    pub struct StateHistoryCommitment {
2778        #[allow(missing_docs)]
2779        pub l1BlockHeight: u64,
2780        #[allow(missing_docs)]
2781        pub l1BlockTimestamp: u64,
2782        #[allow(missing_docs)]
2783        pub hotShotBlockHeight: u64,
2784        #[allow(missing_docs)]
2785        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2786    }
2787    #[allow(
2788        non_camel_case_types,
2789        non_snake_case,
2790        clippy::pub_underscore_fields,
2791        clippy::style
2792    )]
2793    const _: () = {
2794        use alloy::sol_types as alloy_sol_types;
2795        #[doc(hidden)]
2796        #[allow(dead_code)]
2797        type UnderlyingSolTuple<'a> = (
2798            alloy::sol_types::sol_data::Uint<64>,
2799            alloy::sol_types::sol_data::Uint<64>,
2800            alloy::sol_types::sol_data::Uint<64>,
2801            BN254::ScalarField,
2802        );
2803        #[doc(hidden)]
2804        type UnderlyingRustTuple<'a> = (
2805            u64,
2806            u64,
2807            u64,
2808            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2809        );
2810        #[cfg(test)]
2811        #[allow(dead_code, unreachable_patterns)]
2812        fn _type_assertion(
2813            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2814        ) {
2815            match _t {
2816                alloy_sol_types::private::AssertTypeEq::<
2817                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2818                >(_) => {}
2819            }
2820        }
2821        #[automatically_derived]
2822        #[doc(hidden)]
2823        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2824            fn from(value: StateHistoryCommitment) -> Self {
2825                (
2826                    value.l1BlockHeight,
2827                    value.l1BlockTimestamp,
2828                    value.hotShotBlockHeight,
2829                    value.hotShotBlockCommRoot,
2830                )
2831            }
2832        }
2833        #[automatically_derived]
2834        #[doc(hidden)]
2835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2837                Self {
2838                    l1BlockHeight: tuple.0,
2839                    l1BlockTimestamp: tuple.1,
2840                    hotShotBlockHeight: tuple.2,
2841                    hotShotBlockCommRoot: tuple.3,
2842                }
2843            }
2844        }
2845        #[automatically_derived]
2846        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2847            type SolType = Self;
2848        }
2849        #[automatically_derived]
2850        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2851            #[inline]
2852            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2853                (
2854                    <alloy::sol_types::sol_data::Uint<
2855                        64,
2856                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2857                    <alloy::sol_types::sol_data::Uint<
2858                        64,
2859                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2860                    <alloy::sol_types::sol_data::Uint<
2861                        64,
2862                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2864                        &self.hotShotBlockCommRoot,
2865                    ),
2866                )
2867            }
2868            #[inline]
2869            fn stv_abi_encoded_size(&self) -> usize {
2870                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2871                    return size;
2872                }
2873                let tuple = <UnderlyingRustTuple<
2874                    '_,
2875                > as ::core::convert::From<Self>>::from(self.clone());
2876                <UnderlyingSolTuple<
2877                    '_,
2878                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2879            }
2880            #[inline]
2881            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2882                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2883            }
2884            #[inline]
2885            fn stv_abi_encode_packed_to(
2886                &self,
2887                out: &mut alloy_sol_types::private::Vec<u8>,
2888            ) {
2889                let tuple = <UnderlyingRustTuple<
2890                    '_,
2891                > as ::core::convert::From<Self>>::from(self.clone());
2892                <UnderlyingSolTuple<
2893                    '_,
2894                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2895            }
2896            #[inline]
2897            fn stv_abi_packed_encoded_size(&self) -> usize {
2898                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2899                    return size;
2900                }
2901                let tuple = <UnderlyingRustTuple<
2902                    '_,
2903                > as ::core::convert::From<Self>>::from(self.clone());
2904                <UnderlyingSolTuple<
2905                    '_,
2906                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2907            }
2908        }
2909        #[automatically_derived]
2910        impl alloy_sol_types::SolType for StateHistoryCommitment {
2911            type RustType = Self;
2912            type Token<'a> = <UnderlyingSolTuple<
2913                'a,
2914            > as alloy_sol_types::SolType>::Token<'a>;
2915            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2916            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2917                '_,
2918            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2919            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2920                '_,
2921            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2922            #[inline]
2923            fn valid_token(token: &Self::Token<'_>) -> bool {
2924                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2925            }
2926            #[inline]
2927            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2928                let tuple = <UnderlyingSolTuple<
2929                    '_,
2930                > as alloy_sol_types::SolType>::detokenize(token);
2931                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2932            }
2933        }
2934        #[automatically_derived]
2935        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2936            const NAME: &'static str = "StateHistoryCommitment";
2937            #[inline]
2938            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2939                alloy_sol_types::private::Cow::Borrowed(
2940                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2941                )
2942            }
2943            #[inline]
2944            fn eip712_components() -> alloy_sol_types::private::Vec<
2945                alloy_sol_types::private::Cow<'static, str>,
2946            > {
2947                alloy_sol_types::private::Vec::new()
2948            }
2949            #[inline]
2950            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2951                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2952            }
2953            #[inline]
2954            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2955                [
2956                    <alloy::sol_types::sol_data::Uint<
2957                        64,
2958                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2959                        .0,
2960                    <alloy::sol_types::sol_data::Uint<
2961                        64,
2962                    > as alloy_sol_types::SolType>::eip712_data_word(
2963                            &self.l1BlockTimestamp,
2964                        )
2965                        .0,
2966                    <alloy::sol_types::sol_data::Uint<
2967                        64,
2968                    > as alloy_sol_types::SolType>::eip712_data_word(
2969                            &self.hotShotBlockHeight,
2970                        )
2971                        .0,
2972                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2973                            &self.hotShotBlockCommRoot,
2974                        )
2975                        .0,
2976                ]
2977                    .concat()
2978            }
2979        }
2980        #[automatically_derived]
2981        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2982            #[inline]
2983            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2984                0usize
2985                    + <alloy::sol_types::sol_data::Uint<
2986                        64,
2987                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2988                        &rust.l1BlockHeight,
2989                    )
2990                    + <alloy::sol_types::sol_data::Uint<
2991                        64,
2992                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2993                        &rust.l1BlockTimestamp,
2994                    )
2995                    + <alloy::sol_types::sol_data::Uint<
2996                        64,
2997                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2998                        &rust.hotShotBlockHeight,
2999                    )
3000                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.hotShotBlockCommRoot,
3002                    )
3003            }
3004            #[inline]
3005            fn encode_topic_preimage(
3006                rust: &Self::RustType,
3007                out: &mut alloy_sol_types::private::Vec<u8>,
3008            ) {
3009                out.reserve(
3010                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3011                );
3012                <alloy::sol_types::sol_data::Uint<
3013                    64,
3014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3015                    &rust.l1BlockHeight,
3016                    out,
3017                );
3018                <alloy::sol_types::sol_data::Uint<
3019                    64,
3020                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3021                    &rust.l1BlockTimestamp,
3022                    out,
3023                );
3024                <alloy::sol_types::sol_data::Uint<
3025                    64,
3026                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3027                    &rust.hotShotBlockHeight,
3028                    out,
3029                );
3030                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3031                    &rust.hotShotBlockCommRoot,
3032                    out,
3033                );
3034            }
3035            #[inline]
3036            fn encode_topic(
3037                rust: &Self::RustType,
3038            ) -> alloy_sol_types::abi::token::WordToken {
3039                let mut out = alloy_sol_types::private::Vec::new();
3040                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3041                    rust,
3042                    &mut out,
3043                );
3044                alloy_sol_types::abi::token::WordToken(
3045                    alloy_sol_types::private::keccak256(out),
3046                )
3047            }
3048        }
3049    };
3050    use alloy::contract as alloy_contract;
3051    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3052
3053See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3054    #[inline]
3055    pub const fn new<
3056        P: alloy_contract::private::Provider<N>,
3057        N: alloy_contract::private::Network,
3058    >(
3059        address: alloy_sol_types::private::Address,
3060        __provider: P,
3061    ) -> LightClientInstance<P, N> {
3062        LightClientInstance::<P, N>::new(address, __provider)
3063    }
3064    /**A [`LightClient`](self) instance.
3065
3066Contains type-safe methods for interacting with an on-chain instance of the
3067[`LightClient`](self) contract located at a given `address`, using a given
3068provider `P`.
3069
3070If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3071documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3072be used to deploy a new instance of the contract.
3073
3074See the [module-level documentation](self) for all the available methods.*/
3075    #[derive(Clone)]
3076    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3077        address: alloy_sol_types::private::Address,
3078        provider: P,
3079        _network: ::core::marker::PhantomData<N>,
3080    }
3081    #[automatically_derived]
3082    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3083        #[inline]
3084        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3085            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3086        }
3087    }
3088    /// Instantiation and getters/setters.
3089    impl<
3090        P: alloy_contract::private::Provider<N>,
3091        N: alloy_contract::private::Network,
3092    > LightClientInstance<P, N> {
3093        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3094
3095See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3096        #[inline]
3097        pub const fn new(
3098            address: alloy_sol_types::private::Address,
3099            __provider: P,
3100        ) -> Self {
3101            Self {
3102                address,
3103                provider: __provider,
3104                _network: ::core::marker::PhantomData,
3105            }
3106        }
3107        /// Returns a reference to the address.
3108        #[inline]
3109        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3110            &self.address
3111        }
3112        /// Sets the address.
3113        #[inline]
3114        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3115            self.address = address;
3116        }
3117        /// Sets the address and returns `self`.
3118        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3119            self.set_address(address);
3120            self
3121        }
3122        /// Returns a reference to the provider.
3123        #[inline]
3124        pub const fn provider(&self) -> &P {
3125            &self.provider
3126        }
3127    }
3128    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3129        /// Clones the provider and returns a new instance with the cloned provider.
3130        #[inline]
3131        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3132            LightClientInstance {
3133                address: self.address,
3134                provider: ::core::clone::Clone::clone(&self.provider),
3135                _network: ::core::marker::PhantomData,
3136            }
3137        }
3138    }
3139    /// Function calls.
3140    impl<
3141        P: alloy_contract::private::Provider<N>,
3142        N: alloy_contract::private::Network,
3143    > LightClientInstance<P, N> {
3144        /// Creates a new call builder using this contract instance's provider and address.
3145        ///
3146        /// Note that the call can be any function call, not just those defined in this
3147        /// contract. Prefer using the other methods for building type-safe contract calls.
3148        pub fn call_builder<C: alloy_sol_types::SolCall>(
3149            &self,
3150            call: &C,
3151        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3152            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3153        }
3154    }
3155    /// Event filters.
3156    impl<
3157        P: alloy_contract::private::Provider<N>,
3158        N: alloy_contract::private::Network,
3159    > LightClientInstance<P, N> {
3160        /// Creates a new event filter using this contract instance's provider and address.
3161        ///
3162        /// Note that the type can be any event, not just those defined in this contract.
3163        /// Prefer using the other methods for building type-safe event filters.
3164        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3165            &self,
3166        ) -> alloy_contract::Event<&P, E, N> {
3167            alloy_contract::Event::new_sol(&self.provider, &self.address)
3168        }
3169    }
3170}
3171/**
3172
3173Generated by the following Solidity interface...
3174```solidity
3175library BN254 {
3176    type BaseField is uint256;
3177    type ScalarField is uint256;
3178    struct G1Point {
3179        BaseField x;
3180        BaseField y;
3181    }
3182}
3183
3184library IPlonkVerifier {
3185    struct PlonkProof {
3186        BN254.G1Point wire0;
3187        BN254.G1Point wire1;
3188        BN254.G1Point wire2;
3189        BN254.G1Point wire3;
3190        BN254.G1Point wire4;
3191        BN254.G1Point prodPerm;
3192        BN254.G1Point split0;
3193        BN254.G1Point split1;
3194        BN254.G1Point split2;
3195        BN254.G1Point split3;
3196        BN254.G1Point split4;
3197        BN254.G1Point zeta;
3198        BN254.G1Point zetaOmega;
3199        BN254.ScalarField wireEval0;
3200        BN254.ScalarField wireEval1;
3201        BN254.ScalarField wireEval2;
3202        BN254.ScalarField wireEval3;
3203        BN254.ScalarField wireEval4;
3204        BN254.ScalarField sigmaEval0;
3205        BN254.ScalarField sigmaEval1;
3206        BN254.ScalarField sigmaEval2;
3207        BN254.ScalarField sigmaEval3;
3208        BN254.ScalarField prodPermZetaOmegaEval;
3209    }
3210    struct VerifyingKey {
3211        uint256 domainSize;
3212        uint256 numInputs;
3213        BN254.G1Point sigma0;
3214        BN254.G1Point sigma1;
3215        BN254.G1Point sigma2;
3216        BN254.G1Point sigma3;
3217        BN254.G1Point sigma4;
3218        BN254.G1Point q1;
3219        BN254.G1Point q2;
3220        BN254.G1Point q3;
3221        BN254.G1Point q4;
3222        BN254.G1Point qM12;
3223        BN254.G1Point qM34;
3224        BN254.G1Point qO;
3225        BN254.G1Point qC;
3226        BN254.G1Point qH1;
3227        BN254.G1Point qH2;
3228        BN254.G1Point qH3;
3229        BN254.G1Point qH4;
3230        BN254.G1Point qEcc;
3231        bytes32 g2LSB;
3232        bytes32 g2MSB;
3233    }
3234}
3235
3236library LightClient {
3237    struct LightClientState {
3238        uint64 viewNum;
3239        uint64 blockHeight;
3240        BN254.ScalarField blockCommRoot;
3241    }
3242    struct StakeTableState {
3243        uint256 threshold;
3244        BN254.ScalarField blsKeyComm;
3245        BN254.ScalarField schnorrKeyComm;
3246        BN254.ScalarField amountComm;
3247    }
3248    struct StateHistoryCommitment {
3249        uint64 l1BlockHeight;
3250        uint64 l1BlockTimestamp;
3251        uint64 hotShotBlockHeight;
3252        BN254.ScalarField hotShotBlockCommRoot;
3253    }
3254}
3255
3256interface LightClientMock {
3257    error AddressEmptyCode(address target);
3258    error ERC1967InvalidImplementation(address implementation);
3259    error ERC1967NonPayable();
3260    error FailedInnerCall();
3261    error InsufficientSnapshotHistory();
3262    error InvalidAddress();
3263    error InvalidArgs();
3264    error InvalidHotShotBlockForCommitmentCheck();
3265    error InvalidInitialization();
3266    error InvalidMaxStateHistory();
3267    error InvalidProof();
3268    error InvalidScalar();
3269    error NoChangeRequired();
3270    error NotInitializing();
3271    error OutdatedState();
3272    error OwnableInvalidOwner(address owner);
3273    error OwnableUnauthorizedAccount(address account);
3274    error OwnershipCannotBeRenounced();
3275    error ProverNotPermissioned();
3276    error UUPSUnauthorizedCallContext();
3277    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3278    error WrongStakeTableUsed();
3279
3280    event Initialized(uint64 version);
3281    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3282    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3283    event PermissionedProverNotRequired();
3284    event PermissionedProverRequired(address permissionedProver);
3285    event Upgrade(address implementation);
3286    event Upgraded(address indexed implementation);
3287
3288    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3289    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3290    function currentBlockNumber() external view returns (uint256);
3291    function disablePermissionedProverMode() external;
3292    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3293    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3294    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3295    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3296    function getStateHistoryCount() external view returns (uint256);
3297    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3298    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3299    function isPermissionedProverEnabled() external view returns (bool);
3300    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3301    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3302    function owner() external view returns (address);
3303    function permissionedProver() external view returns (address);
3304    function proxiableUUID() external view returns (bytes32);
3305    function renounceOwnership() external;
3306    function setFinalizedState(LightClient.LightClientState memory state) external;
3307    function setHotShotDownSince(uint256 l1Height) external;
3308    function setHotShotUp() external;
3309    function setPermissionedProver(address prover) external;
3310    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3311    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3312    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3313    function stateHistoryFirstIndex() external view returns (uint64);
3314    function stateHistoryRetentionPeriod() external view returns (uint32);
3315    function transferOwnership(address newOwner) external;
3316    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3317}
3318```
3319
3320...which was generated by the following JSON ABI:
3321```json
3322[
3323  {
3324    "type": "function",
3325    "name": "UPGRADE_INTERFACE_VERSION",
3326    "inputs": [],
3327    "outputs": [
3328      {
3329        "name": "",
3330        "type": "string",
3331        "internalType": "string"
3332      }
3333    ],
3334    "stateMutability": "view"
3335  },
3336  {
3337    "type": "function",
3338    "name": "_getVk",
3339    "inputs": [],
3340    "outputs": [
3341      {
3342        "name": "vk",
3343        "type": "tuple",
3344        "internalType": "struct IPlonkVerifier.VerifyingKey",
3345        "components": [
3346          {
3347            "name": "domainSize",
3348            "type": "uint256",
3349            "internalType": "uint256"
3350          },
3351          {
3352            "name": "numInputs",
3353            "type": "uint256",
3354            "internalType": "uint256"
3355          },
3356          {
3357            "name": "sigma0",
3358            "type": "tuple",
3359            "internalType": "struct BN254.G1Point",
3360            "components": [
3361              {
3362                "name": "x",
3363                "type": "uint256",
3364                "internalType": "BN254.BaseField"
3365              },
3366              {
3367                "name": "y",
3368                "type": "uint256",
3369                "internalType": "BN254.BaseField"
3370              }
3371            ]
3372          },
3373          {
3374            "name": "sigma1",
3375            "type": "tuple",
3376            "internalType": "struct BN254.G1Point",
3377            "components": [
3378              {
3379                "name": "x",
3380                "type": "uint256",
3381                "internalType": "BN254.BaseField"
3382              },
3383              {
3384                "name": "y",
3385                "type": "uint256",
3386                "internalType": "BN254.BaseField"
3387              }
3388            ]
3389          },
3390          {
3391            "name": "sigma2",
3392            "type": "tuple",
3393            "internalType": "struct BN254.G1Point",
3394            "components": [
3395              {
3396                "name": "x",
3397                "type": "uint256",
3398                "internalType": "BN254.BaseField"
3399              },
3400              {
3401                "name": "y",
3402                "type": "uint256",
3403                "internalType": "BN254.BaseField"
3404              }
3405            ]
3406          },
3407          {
3408            "name": "sigma3",
3409            "type": "tuple",
3410            "internalType": "struct BN254.G1Point",
3411            "components": [
3412              {
3413                "name": "x",
3414                "type": "uint256",
3415                "internalType": "BN254.BaseField"
3416              },
3417              {
3418                "name": "y",
3419                "type": "uint256",
3420                "internalType": "BN254.BaseField"
3421              }
3422            ]
3423          },
3424          {
3425            "name": "sigma4",
3426            "type": "tuple",
3427            "internalType": "struct BN254.G1Point",
3428            "components": [
3429              {
3430                "name": "x",
3431                "type": "uint256",
3432                "internalType": "BN254.BaseField"
3433              },
3434              {
3435                "name": "y",
3436                "type": "uint256",
3437                "internalType": "BN254.BaseField"
3438              }
3439            ]
3440          },
3441          {
3442            "name": "q1",
3443            "type": "tuple",
3444            "internalType": "struct BN254.G1Point",
3445            "components": [
3446              {
3447                "name": "x",
3448                "type": "uint256",
3449                "internalType": "BN254.BaseField"
3450              },
3451              {
3452                "name": "y",
3453                "type": "uint256",
3454                "internalType": "BN254.BaseField"
3455              }
3456            ]
3457          },
3458          {
3459            "name": "q2",
3460            "type": "tuple",
3461            "internalType": "struct BN254.G1Point",
3462            "components": [
3463              {
3464                "name": "x",
3465                "type": "uint256",
3466                "internalType": "BN254.BaseField"
3467              },
3468              {
3469                "name": "y",
3470                "type": "uint256",
3471                "internalType": "BN254.BaseField"
3472              }
3473            ]
3474          },
3475          {
3476            "name": "q3",
3477            "type": "tuple",
3478            "internalType": "struct BN254.G1Point",
3479            "components": [
3480              {
3481                "name": "x",
3482                "type": "uint256",
3483                "internalType": "BN254.BaseField"
3484              },
3485              {
3486                "name": "y",
3487                "type": "uint256",
3488                "internalType": "BN254.BaseField"
3489              }
3490            ]
3491          },
3492          {
3493            "name": "q4",
3494            "type": "tuple",
3495            "internalType": "struct BN254.G1Point",
3496            "components": [
3497              {
3498                "name": "x",
3499                "type": "uint256",
3500                "internalType": "BN254.BaseField"
3501              },
3502              {
3503                "name": "y",
3504                "type": "uint256",
3505                "internalType": "BN254.BaseField"
3506              }
3507            ]
3508          },
3509          {
3510            "name": "qM12",
3511            "type": "tuple",
3512            "internalType": "struct BN254.G1Point",
3513            "components": [
3514              {
3515                "name": "x",
3516                "type": "uint256",
3517                "internalType": "BN254.BaseField"
3518              },
3519              {
3520                "name": "y",
3521                "type": "uint256",
3522                "internalType": "BN254.BaseField"
3523              }
3524            ]
3525          },
3526          {
3527            "name": "qM34",
3528            "type": "tuple",
3529            "internalType": "struct BN254.G1Point",
3530            "components": [
3531              {
3532                "name": "x",
3533                "type": "uint256",
3534                "internalType": "BN254.BaseField"
3535              },
3536              {
3537                "name": "y",
3538                "type": "uint256",
3539                "internalType": "BN254.BaseField"
3540              }
3541            ]
3542          },
3543          {
3544            "name": "qO",
3545            "type": "tuple",
3546            "internalType": "struct BN254.G1Point",
3547            "components": [
3548              {
3549                "name": "x",
3550                "type": "uint256",
3551                "internalType": "BN254.BaseField"
3552              },
3553              {
3554                "name": "y",
3555                "type": "uint256",
3556                "internalType": "BN254.BaseField"
3557              }
3558            ]
3559          },
3560          {
3561            "name": "qC",
3562            "type": "tuple",
3563            "internalType": "struct BN254.G1Point",
3564            "components": [
3565              {
3566                "name": "x",
3567                "type": "uint256",
3568                "internalType": "BN254.BaseField"
3569              },
3570              {
3571                "name": "y",
3572                "type": "uint256",
3573                "internalType": "BN254.BaseField"
3574              }
3575            ]
3576          },
3577          {
3578            "name": "qH1",
3579            "type": "tuple",
3580            "internalType": "struct BN254.G1Point",
3581            "components": [
3582              {
3583                "name": "x",
3584                "type": "uint256",
3585                "internalType": "BN254.BaseField"
3586              },
3587              {
3588                "name": "y",
3589                "type": "uint256",
3590                "internalType": "BN254.BaseField"
3591              }
3592            ]
3593          },
3594          {
3595            "name": "qH2",
3596            "type": "tuple",
3597            "internalType": "struct BN254.G1Point",
3598            "components": [
3599              {
3600                "name": "x",
3601                "type": "uint256",
3602                "internalType": "BN254.BaseField"
3603              },
3604              {
3605                "name": "y",
3606                "type": "uint256",
3607                "internalType": "BN254.BaseField"
3608              }
3609            ]
3610          },
3611          {
3612            "name": "qH3",
3613            "type": "tuple",
3614            "internalType": "struct BN254.G1Point",
3615            "components": [
3616              {
3617                "name": "x",
3618                "type": "uint256",
3619                "internalType": "BN254.BaseField"
3620              },
3621              {
3622                "name": "y",
3623                "type": "uint256",
3624                "internalType": "BN254.BaseField"
3625              }
3626            ]
3627          },
3628          {
3629            "name": "qH4",
3630            "type": "tuple",
3631            "internalType": "struct BN254.G1Point",
3632            "components": [
3633              {
3634                "name": "x",
3635                "type": "uint256",
3636                "internalType": "BN254.BaseField"
3637              },
3638              {
3639                "name": "y",
3640                "type": "uint256",
3641                "internalType": "BN254.BaseField"
3642              }
3643            ]
3644          },
3645          {
3646            "name": "qEcc",
3647            "type": "tuple",
3648            "internalType": "struct BN254.G1Point",
3649            "components": [
3650              {
3651                "name": "x",
3652                "type": "uint256",
3653                "internalType": "BN254.BaseField"
3654              },
3655              {
3656                "name": "y",
3657                "type": "uint256",
3658                "internalType": "BN254.BaseField"
3659              }
3660            ]
3661          },
3662          {
3663            "name": "g2LSB",
3664            "type": "bytes32",
3665            "internalType": "bytes32"
3666          },
3667          {
3668            "name": "g2MSB",
3669            "type": "bytes32",
3670            "internalType": "bytes32"
3671          }
3672        ]
3673      }
3674    ],
3675    "stateMutability": "pure"
3676  },
3677  {
3678    "type": "function",
3679    "name": "currentBlockNumber",
3680    "inputs": [],
3681    "outputs": [
3682      {
3683        "name": "",
3684        "type": "uint256",
3685        "internalType": "uint256"
3686      }
3687    ],
3688    "stateMutability": "view"
3689  },
3690  {
3691    "type": "function",
3692    "name": "disablePermissionedProverMode",
3693    "inputs": [],
3694    "outputs": [],
3695    "stateMutability": "nonpayable"
3696  },
3697  {
3698    "type": "function",
3699    "name": "finalizedState",
3700    "inputs": [],
3701    "outputs": [
3702      {
3703        "name": "viewNum",
3704        "type": "uint64",
3705        "internalType": "uint64"
3706      },
3707      {
3708        "name": "blockHeight",
3709        "type": "uint64",
3710        "internalType": "uint64"
3711      },
3712      {
3713        "name": "blockCommRoot",
3714        "type": "uint256",
3715        "internalType": "BN254.ScalarField"
3716      }
3717    ],
3718    "stateMutability": "view"
3719  },
3720  {
3721    "type": "function",
3722    "name": "genesisStakeTableState",
3723    "inputs": [],
3724    "outputs": [
3725      {
3726        "name": "threshold",
3727        "type": "uint256",
3728        "internalType": "uint256"
3729      },
3730      {
3731        "name": "blsKeyComm",
3732        "type": "uint256",
3733        "internalType": "BN254.ScalarField"
3734      },
3735      {
3736        "name": "schnorrKeyComm",
3737        "type": "uint256",
3738        "internalType": "BN254.ScalarField"
3739      },
3740      {
3741        "name": "amountComm",
3742        "type": "uint256",
3743        "internalType": "BN254.ScalarField"
3744      }
3745    ],
3746    "stateMutability": "view"
3747  },
3748  {
3749    "type": "function",
3750    "name": "genesisState",
3751    "inputs": [],
3752    "outputs": [
3753      {
3754        "name": "viewNum",
3755        "type": "uint64",
3756        "internalType": "uint64"
3757      },
3758      {
3759        "name": "blockHeight",
3760        "type": "uint64",
3761        "internalType": "uint64"
3762      },
3763      {
3764        "name": "blockCommRoot",
3765        "type": "uint256",
3766        "internalType": "BN254.ScalarField"
3767      }
3768    ],
3769    "stateMutability": "view"
3770  },
3771  {
3772    "type": "function",
3773    "name": "getHotShotCommitment",
3774    "inputs": [
3775      {
3776        "name": "hotShotBlockHeight",
3777        "type": "uint256",
3778        "internalType": "uint256"
3779      }
3780    ],
3781    "outputs": [
3782      {
3783        "name": "hotShotBlockCommRoot",
3784        "type": "uint256",
3785        "internalType": "BN254.ScalarField"
3786      },
3787      {
3788        "name": "hotshotBlockHeight",
3789        "type": "uint64",
3790        "internalType": "uint64"
3791      }
3792    ],
3793    "stateMutability": "view"
3794  },
3795  {
3796    "type": "function",
3797    "name": "getStateHistoryCount",
3798    "inputs": [],
3799    "outputs": [
3800      {
3801        "name": "",
3802        "type": "uint256",
3803        "internalType": "uint256"
3804      }
3805    ],
3806    "stateMutability": "view"
3807  },
3808  {
3809    "type": "function",
3810    "name": "getVersion",
3811    "inputs": [],
3812    "outputs": [
3813      {
3814        "name": "majorVersion",
3815        "type": "uint8",
3816        "internalType": "uint8"
3817      },
3818      {
3819        "name": "minorVersion",
3820        "type": "uint8",
3821        "internalType": "uint8"
3822      },
3823      {
3824        "name": "patchVersion",
3825        "type": "uint8",
3826        "internalType": "uint8"
3827      }
3828    ],
3829    "stateMutability": "pure"
3830  },
3831  {
3832    "type": "function",
3833    "name": "initialize",
3834    "inputs": [
3835      {
3836        "name": "_genesis",
3837        "type": "tuple",
3838        "internalType": "struct LightClient.LightClientState",
3839        "components": [
3840          {
3841            "name": "viewNum",
3842            "type": "uint64",
3843            "internalType": "uint64"
3844          },
3845          {
3846            "name": "blockHeight",
3847            "type": "uint64",
3848            "internalType": "uint64"
3849          },
3850          {
3851            "name": "blockCommRoot",
3852            "type": "uint256",
3853            "internalType": "BN254.ScalarField"
3854          }
3855        ]
3856      },
3857      {
3858        "name": "_genesisStakeTableState",
3859        "type": "tuple",
3860        "internalType": "struct LightClient.StakeTableState",
3861        "components": [
3862          {
3863            "name": "threshold",
3864            "type": "uint256",
3865            "internalType": "uint256"
3866          },
3867          {
3868            "name": "blsKeyComm",
3869            "type": "uint256",
3870            "internalType": "BN254.ScalarField"
3871          },
3872          {
3873            "name": "schnorrKeyComm",
3874            "type": "uint256",
3875            "internalType": "BN254.ScalarField"
3876          },
3877          {
3878            "name": "amountComm",
3879            "type": "uint256",
3880            "internalType": "BN254.ScalarField"
3881          }
3882        ]
3883      },
3884      {
3885        "name": "_stateHistoryRetentionPeriod",
3886        "type": "uint32",
3887        "internalType": "uint32"
3888      },
3889      {
3890        "name": "owner",
3891        "type": "address",
3892        "internalType": "address"
3893      }
3894    ],
3895    "outputs": [],
3896    "stateMutability": "nonpayable"
3897  },
3898  {
3899    "type": "function",
3900    "name": "isPermissionedProverEnabled",
3901    "inputs": [],
3902    "outputs": [
3903      {
3904        "name": "",
3905        "type": "bool",
3906        "internalType": "bool"
3907      }
3908    ],
3909    "stateMutability": "view"
3910  },
3911  {
3912    "type": "function",
3913    "name": "lagOverEscapeHatchThreshold",
3914    "inputs": [
3915      {
3916        "name": "blockNumber",
3917        "type": "uint256",
3918        "internalType": "uint256"
3919      },
3920      {
3921        "name": "threshold",
3922        "type": "uint256",
3923        "internalType": "uint256"
3924      }
3925    ],
3926    "outputs": [
3927      {
3928        "name": "",
3929        "type": "bool",
3930        "internalType": "bool"
3931      }
3932    ],
3933    "stateMutability": "view"
3934  },
3935  {
3936    "type": "function",
3937    "name": "newFinalizedState",
3938    "inputs": [
3939      {
3940        "name": "newState",
3941        "type": "tuple",
3942        "internalType": "struct LightClient.LightClientState",
3943        "components": [
3944          {
3945            "name": "viewNum",
3946            "type": "uint64",
3947            "internalType": "uint64"
3948          },
3949          {
3950            "name": "blockHeight",
3951            "type": "uint64",
3952            "internalType": "uint64"
3953          },
3954          {
3955            "name": "blockCommRoot",
3956            "type": "uint256",
3957            "internalType": "BN254.ScalarField"
3958          }
3959        ]
3960      },
3961      {
3962        "name": "proof",
3963        "type": "tuple",
3964        "internalType": "struct IPlonkVerifier.PlonkProof",
3965        "components": [
3966          {
3967            "name": "wire0",
3968            "type": "tuple",
3969            "internalType": "struct BN254.G1Point",
3970            "components": [
3971              {
3972                "name": "x",
3973                "type": "uint256",
3974                "internalType": "BN254.BaseField"
3975              },
3976              {
3977                "name": "y",
3978                "type": "uint256",
3979                "internalType": "BN254.BaseField"
3980              }
3981            ]
3982          },
3983          {
3984            "name": "wire1",
3985            "type": "tuple",
3986            "internalType": "struct BN254.G1Point",
3987            "components": [
3988              {
3989                "name": "x",
3990                "type": "uint256",
3991                "internalType": "BN254.BaseField"
3992              },
3993              {
3994                "name": "y",
3995                "type": "uint256",
3996                "internalType": "BN254.BaseField"
3997              }
3998            ]
3999          },
4000          {
4001            "name": "wire2",
4002            "type": "tuple",
4003            "internalType": "struct BN254.G1Point",
4004            "components": [
4005              {
4006                "name": "x",
4007                "type": "uint256",
4008                "internalType": "BN254.BaseField"
4009              },
4010              {
4011                "name": "y",
4012                "type": "uint256",
4013                "internalType": "BN254.BaseField"
4014              }
4015            ]
4016          },
4017          {
4018            "name": "wire3",
4019            "type": "tuple",
4020            "internalType": "struct BN254.G1Point",
4021            "components": [
4022              {
4023                "name": "x",
4024                "type": "uint256",
4025                "internalType": "BN254.BaseField"
4026              },
4027              {
4028                "name": "y",
4029                "type": "uint256",
4030                "internalType": "BN254.BaseField"
4031              }
4032            ]
4033          },
4034          {
4035            "name": "wire4",
4036            "type": "tuple",
4037            "internalType": "struct BN254.G1Point",
4038            "components": [
4039              {
4040                "name": "x",
4041                "type": "uint256",
4042                "internalType": "BN254.BaseField"
4043              },
4044              {
4045                "name": "y",
4046                "type": "uint256",
4047                "internalType": "BN254.BaseField"
4048              }
4049            ]
4050          },
4051          {
4052            "name": "prodPerm",
4053            "type": "tuple",
4054            "internalType": "struct BN254.G1Point",
4055            "components": [
4056              {
4057                "name": "x",
4058                "type": "uint256",
4059                "internalType": "BN254.BaseField"
4060              },
4061              {
4062                "name": "y",
4063                "type": "uint256",
4064                "internalType": "BN254.BaseField"
4065              }
4066            ]
4067          },
4068          {
4069            "name": "split0",
4070            "type": "tuple",
4071            "internalType": "struct BN254.G1Point",
4072            "components": [
4073              {
4074                "name": "x",
4075                "type": "uint256",
4076                "internalType": "BN254.BaseField"
4077              },
4078              {
4079                "name": "y",
4080                "type": "uint256",
4081                "internalType": "BN254.BaseField"
4082              }
4083            ]
4084          },
4085          {
4086            "name": "split1",
4087            "type": "tuple",
4088            "internalType": "struct BN254.G1Point",
4089            "components": [
4090              {
4091                "name": "x",
4092                "type": "uint256",
4093                "internalType": "BN254.BaseField"
4094              },
4095              {
4096                "name": "y",
4097                "type": "uint256",
4098                "internalType": "BN254.BaseField"
4099              }
4100            ]
4101          },
4102          {
4103            "name": "split2",
4104            "type": "tuple",
4105            "internalType": "struct BN254.G1Point",
4106            "components": [
4107              {
4108                "name": "x",
4109                "type": "uint256",
4110                "internalType": "BN254.BaseField"
4111              },
4112              {
4113                "name": "y",
4114                "type": "uint256",
4115                "internalType": "BN254.BaseField"
4116              }
4117            ]
4118          },
4119          {
4120            "name": "split3",
4121            "type": "tuple",
4122            "internalType": "struct BN254.G1Point",
4123            "components": [
4124              {
4125                "name": "x",
4126                "type": "uint256",
4127                "internalType": "BN254.BaseField"
4128              },
4129              {
4130                "name": "y",
4131                "type": "uint256",
4132                "internalType": "BN254.BaseField"
4133              }
4134            ]
4135          },
4136          {
4137            "name": "split4",
4138            "type": "tuple",
4139            "internalType": "struct BN254.G1Point",
4140            "components": [
4141              {
4142                "name": "x",
4143                "type": "uint256",
4144                "internalType": "BN254.BaseField"
4145              },
4146              {
4147                "name": "y",
4148                "type": "uint256",
4149                "internalType": "BN254.BaseField"
4150              }
4151            ]
4152          },
4153          {
4154            "name": "zeta",
4155            "type": "tuple",
4156            "internalType": "struct BN254.G1Point",
4157            "components": [
4158              {
4159                "name": "x",
4160                "type": "uint256",
4161                "internalType": "BN254.BaseField"
4162              },
4163              {
4164                "name": "y",
4165                "type": "uint256",
4166                "internalType": "BN254.BaseField"
4167              }
4168            ]
4169          },
4170          {
4171            "name": "zetaOmega",
4172            "type": "tuple",
4173            "internalType": "struct BN254.G1Point",
4174            "components": [
4175              {
4176                "name": "x",
4177                "type": "uint256",
4178                "internalType": "BN254.BaseField"
4179              },
4180              {
4181                "name": "y",
4182                "type": "uint256",
4183                "internalType": "BN254.BaseField"
4184              }
4185            ]
4186          },
4187          {
4188            "name": "wireEval0",
4189            "type": "uint256",
4190            "internalType": "BN254.ScalarField"
4191          },
4192          {
4193            "name": "wireEval1",
4194            "type": "uint256",
4195            "internalType": "BN254.ScalarField"
4196          },
4197          {
4198            "name": "wireEval2",
4199            "type": "uint256",
4200            "internalType": "BN254.ScalarField"
4201          },
4202          {
4203            "name": "wireEval3",
4204            "type": "uint256",
4205            "internalType": "BN254.ScalarField"
4206          },
4207          {
4208            "name": "wireEval4",
4209            "type": "uint256",
4210            "internalType": "BN254.ScalarField"
4211          },
4212          {
4213            "name": "sigmaEval0",
4214            "type": "uint256",
4215            "internalType": "BN254.ScalarField"
4216          },
4217          {
4218            "name": "sigmaEval1",
4219            "type": "uint256",
4220            "internalType": "BN254.ScalarField"
4221          },
4222          {
4223            "name": "sigmaEval2",
4224            "type": "uint256",
4225            "internalType": "BN254.ScalarField"
4226          },
4227          {
4228            "name": "sigmaEval3",
4229            "type": "uint256",
4230            "internalType": "BN254.ScalarField"
4231          },
4232          {
4233            "name": "prodPermZetaOmegaEval",
4234            "type": "uint256",
4235            "internalType": "BN254.ScalarField"
4236          }
4237        ]
4238      }
4239    ],
4240    "outputs": [],
4241    "stateMutability": "nonpayable"
4242  },
4243  {
4244    "type": "function",
4245    "name": "owner",
4246    "inputs": [],
4247    "outputs": [
4248      {
4249        "name": "",
4250        "type": "address",
4251        "internalType": "address"
4252      }
4253    ],
4254    "stateMutability": "view"
4255  },
4256  {
4257    "type": "function",
4258    "name": "permissionedProver",
4259    "inputs": [],
4260    "outputs": [
4261      {
4262        "name": "",
4263        "type": "address",
4264        "internalType": "address"
4265      }
4266    ],
4267    "stateMutability": "view"
4268  },
4269  {
4270    "type": "function",
4271    "name": "proxiableUUID",
4272    "inputs": [],
4273    "outputs": [
4274      {
4275        "name": "",
4276        "type": "bytes32",
4277        "internalType": "bytes32"
4278      }
4279    ],
4280    "stateMutability": "view"
4281  },
4282  {
4283    "type": "function",
4284    "name": "renounceOwnership",
4285    "inputs": [],
4286    "outputs": [],
4287    "stateMutability": "nonpayable"
4288  },
4289  {
4290    "type": "function",
4291    "name": "setFinalizedState",
4292    "inputs": [
4293      {
4294        "name": "state",
4295        "type": "tuple",
4296        "internalType": "struct LightClient.LightClientState",
4297        "components": [
4298          {
4299            "name": "viewNum",
4300            "type": "uint64",
4301            "internalType": "uint64"
4302          },
4303          {
4304            "name": "blockHeight",
4305            "type": "uint64",
4306            "internalType": "uint64"
4307          },
4308          {
4309            "name": "blockCommRoot",
4310            "type": "uint256",
4311            "internalType": "BN254.ScalarField"
4312          }
4313        ]
4314      }
4315    ],
4316    "outputs": [],
4317    "stateMutability": "nonpayable"
4318  },
4319  {
4320    "type": "function",
4321    "name": "setHotShotDownSince",
4322    "inputs": [
4323      {
4324        "name": "l1Height",
4325        "type": "uint256",
4326        "internalType": "uint256"
4327      }
4328    ],
4329    "outputs": [],
4330    "stateMutability": "nonpayable"
4331  },
4332  {
4333    "type": "function",
4334    "name": "setHotShotUp",
4335    "inputs": [],
4336    "outputs": [],
4337    "stateMutability": "nonpayable"
4338  },
4339  {
4340    "type": "function",
4341    "name": "setPermissionedProver",
4342    "inputs": [
4343      {
4344        "name": "prover",
4345        "type": "address",
4346        "internalType": "address"
4347      }
4348    ],
4349    "outputs": [],
4350    "stateMutability": "nonpayable"
4351  },
4352  {
4353    "type": "function",
4354    "name": "setStateHistory",
4355    "inputs": [
4356      {
4357        "name": "_stateHistoryCommitments",
4358        "type": "tuple[]",
4359        "internalType": "struct LightClient.StateHistoryCommitment[]",
4360        "components": [
4361          {
4362            "name": "l1BlockHeight",
4363            "type": "uint64",
4364            "internalType": "uint64"
4365          },
4366          {
4367            "name": "l1BlockTimestamp",
4368            "type": "uint64",
4369            "internalType": "uint64"
4370          },
4371          {
4372            "name": "hotShotBlockHeight",
4373            "type": "uint64",
4374            "internalType": "uint64"
4375          },
4376          {
4377            "name": "hotShotBlockCommRoot",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          }
4381        ]
4382      }
4383    ],
4384    "outputs": [],
4385    "stateMutability": "nonpayable"
4386  },
4387  {
4388    "type": "function",
4389    "name": "setstateHistoryRetentionPeriod",
4390    "inputs": [
4391      {
4392        "name": "historySeconds",
4393        "type": "uint32",
4394        "internalType": "uint32"
4395      }
4396    ],
4397    "outputs": [],
4398    "stateMutability": "nonpayable"
4399  },
4400  {
4401    "type": "function",
4402    "name": "stateHistoryCommitments",
4403    "inputs": [
4404      {
4405        "name": "",
4406        "type": "uint256",
4407        "internalType": "uint256"
4408      }
4409    ],
4410    "outputs": [
4411      {
4412        "name": "l1BlockHeight",
4413        "type": "uint64",
4414        "internalType": "uint64"
4415      },
4416      {
4417        "name": "l1BlockTimestamp",
4418        "type": "uint64",
4419        "internalType": "uint64"
4420      },
4421      {
4422        "name": "hotShotBlockHeight",
4423        "type": "uint64",
4424        "internalType": "uint64"
4425      },
4426      {
4427        "name": "hotShotBlockCommRoot",
4428        "type": "uint256",
4429        "internalType": "BN254.ScalarField"
4430      }
4431    ],
4432    "stateMutability": "view"
4433  },
4434  {
4435    "type": "function",
4436    "name": "stateHistoryFirstIndex",
4437    "inputs": [],
4438    "outputs": [
4439      {
4440        "name": "",
4441        "type": "uint64",
4442        "internalType": "uint64"
4443      }
4444    ],
4445    "stateMutability": "view"
4446  },
4447  {
4448    "type": "function",
4449    "name": "stateHistoryRetentionPeriod",
4450    "inputs": [],
4451    "outputs": [
4452      {
4453        "name": "",
4454        "type": "uint32",
4455        "internalType": "uint32"
4456      }
4457    ],
4458    "stateMutability": "view"
4459  },
4460  {
4461    "type": "function",
4462    "name": "transferOwnership",
4463    "inputs": [
4464      {
4465        "name": "newOwner",
4466        "type": "address",
4467        "internalType": "address"
4468      }
4469    ],
4470    "outputs": [],
4471    "stateMutability": "nonpayable"
4472  },
4473  {
4474    "type": "function",
4475    "name": "upgradeToAndCall",
4476    "inputs": [
4477      {
4478        "name": "newImplementation",
4479        "type": "address",
4480        "internalType": "address"
4481      },
4482      {
4483        "name": "data",
4484        "type": "bytes",
4485        "internalType": "bytes"
4486      }
4487    ],
4488    "outputs": [],
4489    "stateMutability": "payable"
4490  },
4491  {
4492    "type": "event",
4493    "name": "Initialized",
4494    "inputs": [
4495      {
4496        "name": "version",
4497        "type": "uint64",
4498        "indexed": false,
4499        "internalType": "uint64"
4500      }
4501    ],
4502    "anonymous": false
4503  },
4504  {
4505    "type": "event",
4506    "name": "NewState",
4507    "inputs": [
4508      {
4509        "name": "viewNum",
4510        "type": "uint64",
4511        "indexed": true,
4512        "internalType": "uint64"
4513      },
4514      {
4515        "name": "blockHeight",
4516        "type": "uint64",
4517        "indexed": true,
4518        "internalType": "uint64"
4519      },
4520      {
4521        "name": "blockCommRoot",
4522        "type": "uint256",
4523        "indexed": false,
4524        "internalType": "BN254.ScalarField"
4525      }
4526    ],
4527    "anonymous": false
4528  },
4529  {
4530    "type": "event",
4531    "name": "OwnershipTransferred",
4532    "inputs": [
4533      {
4534        "name": "previousOwner",
4535        "type": "address",
4536        "indexed": true,
4537        "internalType": "address"
4538      },
4539      {
4540        "name": "newOwner",
4541        "type": "address",
4542        "indexed": true,
4543        "internalType": "address"
4544      }
4545    ],
4546    "anonymous": false
4547  },
4548  {
4549    "type": "event",
4550    "name": "PermissionedProverNotRequired",
4551    "inputs": [],
4552    "anonymous": false
4553  },
4554  {
4555    "type": "event",
4556    "name": "PermissionedProverRequired",
4557    "inputs": [
4558      {
4559        "name": "permissionedProver",
4560        "type": "address",
4561        "indexed": false,
4562        "internalType": "address"
4563      }
4564    ],
4565    "anonymous": false
4566  },
4567  {
4568    "type": "event",
4569    "name": "Upgrade",
4570    "inputs": [
4571      {
4572        "name": "implementation",
4573        "type": "address",
4574        "indexed": false,
4575        "internalType": "address"
4576      }
4577    ],
4578    "anonymous": false
4579  },
4580  {
4581    "type": "event",
4582    "name": "Upgraded",
4583    "inputs": [
4584      {
4585        "name": "implementation",
4586        "type": "address",
4587        "indexed": true,
4588        "internalType": "address"
4589      }
4590    ],
4591    "anonymous": false
4592  },
4593  {
4594    "type": "error",
4595    "name": "AddressEmptyCode",
4596    "inputs": [
4597      {
4598        "name": "target",
4599        "type": "address",
4600        "internalType": "address"
4601      }
4602    ]
4603  },
4604  {
4605    "type": "error",
4606    "name": "ERC1967InvalidImplementation",
4607    "inputs": [
4608      {
4609        "name": "implementation",
4610        "type": "address",
4611        "internalType": "address"
4612      }
4613    ]
4614  },
4615  {
4616    "type": "error",
4617    "name": "ERC1967NonPayable",
4618    "inputs": []
4619  },
4620  {
4621    "type": "error",
4622    "name": "FailedInnerCall",
4623    "inputs": []
4624  },
4625  {
4626    "type": "error",
4627    "name": "InsufficientSnapshotHistory",
4628    "inputs": []
4629  },
4630  {
4631    "type": "error",
4632    "name": "InvalidAddress",
4633    "inputs": []
4634  },
4635  {
4636    "type": "error",
4637    "name": "InvalidArgs",
4638    "inputs": []
4639  },
4640  {
4641    "type": "error",
4642    "name": "InvalidHotShotBlockForCommitmentCheck",
4643    "inputs": []
4644  },
4645  {
4646    "type": "error",
4647    "name": "InvalidInitialization",
4648    "inputs": []
4649  },
4650  {
4651    "type": "error",
4652    "name": "InvalidMaxStateHistory",
4653    "inputs": []
4654  },
4655  {
4656    "type": "error",
4657    "name": "InvalidProof",
4658    "inputs": []
4659  },
4660  {
4661    "type": "error",
4662    "name": "InvalidScalar",
4663    "inputs": []
4664  },
4665  {
4666    "type": "error",
4667    "name": "NoChangeRequired",
4668    "inputs": []
4669  },
4670  {
4671    "type": "error",
4672    "name": "NotInitializing",
4673    "inputs": []
4674  },
4675  {
4676    "type": "error",
4677    "name": "OutdatedState",
4678    "inputs": []
4679  },
4680  {
4681    "type": "error",
4682    "name": "OwnableInvalidOwner",
4683    "inputs": [
4684      {
4685        "name": "owner",
4686        "type": "address",
4687        "internalType": "address"
4688      }
4689    ]
4690  },
4691  {
4692    "type": "error",
4693    "name": "OwnableUnauthorizedAccount",
4694    "inputs": [
4695      {
4696        "name": "account",
4697        "type": "address",
4698        "internalType": "address"
4699      }
4700    ]
4701  },
4702  {
4703    "type": "error",
4704    "name": "OwnershipCannotBeRenounced",
4705    "inputs": []
4706  },
4707  {
4708    "type": "error",
4709    "name": "ProverNotPermissioned",
4710    "inputs": []
4711  },
4712  {
4713    "type": "error",
4714    "name": "UUPSUnauthorizedCallContext",
4715    "inputs": []
4716  },
4717  {
4718    "type": "error",
4719    "name": "UUPSUnsupportedProxiableUUID",
4720    "inputs": [
4721      {
4722        "name": "slot",
4723        "type": "bytes32",
4724        "internalType": "bytes32"
4725      }
4726    ]
4727  },
4728  {
4729    "type": "error",
4730    "name": "WrongStakeTableUsed",
4731    "inputs": []
4732  }
4733]
4734```*/
4735#[allow(
4736    non_camel_case_types,
4737    non_snake_case,
4738    clippy::pub_underscore_fields,
4739    clippy::style,
4740    clippy::empty_structs_with_brackets
4741)]
4742pub mod LightClientMock {
4743    use super::*;
4744    use alloy::sol_types as alloy_sol_types;
4745    /// The creation / init bytecode of the contract.
4746    ///
4747    /// ```text
4748    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612e8a6100f95f395f8181611791015281816117ba01526119370152612e8a5ff3fe6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612187565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121a0565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121b7565b348015610293575f5ffd5b506101dd6102a236600461250e565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121a0565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126be565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121a0565b6109e5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612774565b610b10565b3480156104c1575f5ffd5b506101dd6104d036600461278d565b610b99565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612815565b348015610572575f5ffd5b506101dd61058136600461284a565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612864565b610cbb565b34801561066a575f5ffd5b506101dd610679366004612187565b610cf0565b348015610689575f5ffd5b506101dd610698366004612884565b610d32565b3480156106a8575f5ffd5b50600954610356565b6106b9610ddd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ea4565b6107bd610e38565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611468565b61087382826114a9565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461159d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611786565b61092d8261182a565b610937828261186b565b5050565b5f61094461192c565b505f516020612e5e5f395f51905f5290565b61095e610ddd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610ddd565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906109f9600183612990565b81548110610a0957610a096129a3565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a4857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610b09578460098281548110610a7857610a786129a3565b5f918252602090912060029091020154600160801b90046001600160401b03161115610b015760098181548110610ab157610ab16129a3565b905f5260205f2090600202016001015460098281548110610ad457610ad46129a3565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a5c565b5050915091565b610b18610ddd565b610e108163ffffffff161080610b3757506301e133808163ffffffff16115b80610b55575060085463ffffffff600160a01b909104811690821611155b15610b73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bdd5750825b90505f826001600160401b03166001148015610bf85750303b155b905081158015610c06575080155b15610c245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4e57845460ff60401b1916600160401b1785555b610c5786611975565b610c5f611986565b610c6a89898961198e565b8315610cb057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cd657610cd18383611aba565b610ce7565b81600b5484610ce59190612990565b115b90505b92915050565b610cf8610ddd565b6001600160a01b038116610d2657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2f81611c12565b50565b610d3d60095f612109565b5f5b8151811015610937576009828281518110610d5c57610d5c6129a3565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d3f565b33610e0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d1d565b610e40611ea4565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114b26107ad565b90506114bc612124565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061153b90859085908890600401612b93565b602060405180830381865af4158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a9190612db3565b611597576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611612575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115dd576115dd6129a3565b5f91825260209091206002909102015461160790600160401b90046001600160401b031684612dd2565b6001600160401b0316115b156116a557600854600980549091600160c01b90046001600160401b031690811061163f5761163f6129a3565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167f83612df1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061180c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118005f516020612e5e5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611832610ddd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118c5575060408051601f3d908101601f191682019092526118c291810190612e1b565b60015b6118ed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1d565b5f516020612e5e5f395f51905f52811461191d57604051632a87526960e21b815260048101829052602401610d1d565b6119278383611c82565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b61197d611cd7565b610d2f81611d20565b6109c2611cd7565b82516001600160401b03161515806119b2575060208301516001600160401b031615155b806119bf57506020820151155b806119cc57506040820151155b806119d957506060820151155b806119e357508151155b806119f55750610e108163ffffffff16105b80611a0957506301e133808163ffffffff16115b15611a27576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611acb575080155b80611b155750600854600980549091600160c01b90046001600160401b0316908110611af957611af96129a3565b5f9182526020909120600290910201546001600160401b031684105b15611b335760405163b0b4387760e01b815260040160405180910390fd5b5f8080611b41600185612990565b90505b81611bdd57600854600160c01b90046001600160401b03168110611bdd578660098281548110611b7657611b766129a3565b5f9182526020909120600290910201546001600160401b031611611bcb576001915060098181548110611bab57611bab6129a3565b5f9182526020909120600290910201546001600160401b03169250611bdd565b80611bd581612e32565b915050611b44565b81611bfb5760405163b0b4387760e01b815260040160405180910390fd5b85611c068489612990565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611c8b82611d28565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ccf576119278282611d8b565b610937611dfd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610cf8611cd7565b806001600160a01b03163b5f03611d5d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1d565b5f516020612e5e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611da79190612e47565b5f60405180830381855af49150503d805f8114611ddf576040519150601f19603f3d011682016040523d82523d5f602084013e611de4565b606091505b5091509150611df4858383611e1c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e3157611e2c82611e7b565b611e74565b8151158015611e4857506001600160a01b0384163b155b15611e7157604051639996b31560e01b81526001600160a01b0385166004820152602401610d1d565b50805b9392505050565b805115611e8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ed760405180604001604052805f81526020015f81525090565b8152602001611ef760405180604001604052805f81526020015f81525090565b8152602001611f1760405180604001604052805f81526020015f81525090565b8152602001611f3760405180604001604052805f81526020015f81525090565b8152602001611f5760405180604001604052805f81526020015f81525090565b8152602001611f7760405180604001604052805f81526020015f81525090565b8152602001611f9760405180604001604052805f81526020015f81525090565b8152602001611fb760405180604001604052805f81526020015f81525090565b8152602001611fd760405180604001604052805f81526020015f81525090565b8152602001611ff760405180604001604052805f81526020015f81525090565b815260200161201760405180604001604052805f81526020015f81525090565b815260200161203760405180604001604052805f81526020015f81525090565b815260200161205760405180604001604052805f81526020015f81525090565b815260200161207760405180604001604052805f81526020015f81525090565b815260200161209760405180604001604052805f81526020015f81525090565b81526020016120b760405180604001604052805f81526020015f81525090565b81526020016120d760405180604001604052805f81526020015f81525090565b81526020016120f760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20906109c29190612142565b6040518060e001604052806007906020820280368337509192915050565b5f5b808211156119275780830180546001600160c01b03191681555f600190910155600201612144565b80356001600160a01b0381168114612182575f5ffd5b919050565b5f60208284031215612197575f5ffd5b610ce78261216c565b5f602082840312156121b0575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121e9604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123ef576123ef6123b8565b60405290565b604051608081016001600160401b03811182821017156123ef576123ef6123b8565b604051601f8201601f191681016001600160401b038111828210171561243f5761243f6123b8565b604052919050565b80356001600160401b0381168114612182575f5ffd5b5f6060828403121561246d575f5ffd5b604051606081016001600160401b038111828210171561248f5761248f6123b8565b60405290508061249e83612447565b81526124ac60208401612447565b6020820152604092830135920191909152919050565b5f604082840312156124d2575f5ffd5b604080519081016001600160401b03811182821017156124f4576124f46123b8565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612521575f5ffd5b61252b858561245d565b9250610480605f198201121561253f575f5ffd5b506125486123cc565b61255585606086016124c2565b81526125648560a086016124c2565b60208201526125768560e086016124c2565b60408201526125898561012086016124c2565b606082015261259c8561016086016124c2565b60808201526125af856101a086016124c2565b60a08201526125c2856101e086016124c2565b60c08201526125d58561022086016124c2565b60e08201526125e88561026086016124c2565b6101008201526125fc856102a086016124c2565b610120820152612610856102e086016124c2565b6101408201526126248561032086016124c2565b6101608201526126388561036086016124c2565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126cf575f5ffd5b6126d88361216c565b915060208301356001600160401b038111156126f2575f5ffd5b8301601f81018513612702575f5ffd5b80356001600160401b0381111561271b5761271b6123b8565b61272e601f8201601f1916602001612417565b818152866020838501011115612742575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612182575f5ffd5b5f60208284031215612784575f5ffd5b610ce782612761565b5f5f5f5f8486036101208112156127a2575f5ffd5b6127ac878761245d565b94506080605f19820112156127bf575f5ffd5b506127c86123f5565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127fb60e08601612761565b915061280a610100860161216c565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561285a575f5ffd5b610ce7838361245d565b5f5f60408385031215612875575f5ffd5b50508035926020909101359150565b5f60208284031215612894575f5ffd5b81356001600160401b038111156128a9575f5ffd5b8201601f810184136128b9575f5ffd5b80356001600160401b038111156128d2576128d26123b8565b6128e160208260051b01612417565b8082825260208201915060208360071b850101925086831115612902575f5ffd5b6020840193505b828410156129725760808488031215612920575f5ffd5b6129286123f5565b61293185612447565b815261293f60208601612447565b602082015261295060408601612447565b6040820152606085810135908201528252608090930192602090910190612909565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cea57610cea61297c565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115975781518452602093840193909101906001016129ba565b6129ee82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bc5604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d9d6105008301856129b7565b612dab6105e08301846129d9565b949350505050565b5f60208284031215612dc3575f5ffd5b81518015158114611e74575f5ffd5b6001600160401b038281168282160390811115610cea57610cea61297c565b5f6001600160401b0382166001600160401b038103612e1257612e1261297c565b60010192915050565b5f60208284031215612e2b575f5ffd5b5051919050565b5f81612e4057612e4061297c565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
4749    /// ```
4750    #[rustfmt::skip]
4751    #[allow(clippy::all)]
4752    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4753        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.\x8Aa\0\xF9_9_\x81\x81a\x17\x91\x01R\x81\x81a\x17\xBA\x01Ra\x197\x01Ra.\x8A_\xF3\xFE`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\x87V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xA0V[a\x07dV[`@Qa\x023\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\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xB7V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\x0EV[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xA0V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xBEV[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xA0V[a\t\xE5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\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\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'tV[a\x0B\x10V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x8DV[a\x0B\x99V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\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\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x15V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(JV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(dV[a\x0C\xBBV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\x87V[a\x0C\xF0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\x84V[a\r2V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@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\x07sW_\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\x07\xB5a\x1E\xA4V[a\x07\xBDa\x0E8V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@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\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14hV[a\x08s\x82\x82a\x14\xA9V[\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\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x9DV[\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\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\x86V[a\t-\x82a\x18*V[a\t7\x82\x82a\x18kV[PPV[_a\tDa\x19,V[P_Q` a.^_9_Q\x90_R\x90V[a\t^a\r\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\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\t\xCCa\r\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\t\xF9`\x01\x83a)\x90V[\x81T\x81\x10a\n\tWa\n\ta)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\nHW`@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\x0B\tW\x84`\t\x82\x81T\x81\x10a\nxWa\nxa)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0B\x01W`\t\x81\x81T\x81\x10a\n\xB1Wa\n\xB1a)\xA3V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xD4Wa\n\xD4a)\xA3V[\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\n\\V[PP\x91P\x91V[a\x0B\x18a\r\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BsW`@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\x0B\xDDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xF8WP0;\x15[\x90P\x81\x15\x80\x15a\x0C\x06WP\x80\x15[\x15a\x0C$W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0CNW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CW\x86a\x19uV[a\x0C_a\x19\x86V[a\x0Cj\x89\x89\x89a\x19\x8EV[\x83\x15a\x0C\xB0W\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[`\nT_\x90`\xFF\x16a\x0C\xD6Wa\x0C\xD1\x83\x83a\x1A\xBAV[a\x0C\xE7V[\x81`\x0BT\x84a\x0C\xE5\x91\x90a)\x90V[\x11[\x90P[\x92\x91PPV[a\x0C\xF8a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r&W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r/\x81a\x1C\x12V[PV[a\r=`\t_a!\tV[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\r\\Wa\r\\a)\xA3V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r?V[3a\x0E\x0F\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1DV[a\x0E@a\x1E\xA4V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` 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\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xB2a\x07\xADV[\x90Pa\x14\xBCa!$V[\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\x15;\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x93V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15z\x91\x90a-\xB3V[a\x15\x97W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x12WP`\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\xDDWa\x15\xDDa)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16\x07\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xD2V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xA5W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16?Wa\x16?a)\xA3V[_\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\x16\x7F\x83a-\xF1V[\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\x18\x0CWP\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\x18\0_Q` a.^_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x182a\r\xDDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\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\xC5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC2\x91\x81\x01\x90a.\x1BV[`\x01[a\x18\xEDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.^_9_Q\x90_R\x81\x14a\x19\x1DW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1DV[a\x19'\x83\x83a\x1C\x82V[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\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19}a\x1C\xD7V[a\r/\x81a\x1D V[a\t\xC2a\x1C\xD7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xB2WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xBFWP` \x82\x01Q\x15[\x80a\x19\xCCWP`@\x82\x01Q\x15[\x80a\x19\xD9WP``\x82\x01Q\x15[\x80a\x19\xE3WP\x81Q\x15[\x80a\x19\xF5WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\tWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A'W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1A\xCBWP\x80\x15[\x80a\x1B\x15WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1A\xF9Wa\x1A\xF9a)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B3W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1BA`\x01\x85a)\x90V[\x90P[\x81a\x1B\xDDW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1B\xDDW\x86`\t\x82\x81T\x81\x10a\x1BvWa\x1Bva)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1B\xCBW`\x01\x91P`\t\x81\x81T\x81\x10a\x1B\xABWa\x1B\xABa)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1B\xDDV[\x80a\x1B\xD5\x81a.2V[\x91PPa\x1BDV[\x81a\x1B\xFBW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x06\x84\x89a)\x90V[\x11\x97\x96PPPPPPPV[\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\x1C\x8B\x82a\x1D(V[`@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\x1C\xCFWa\x19'\x82\x82a\x1D\x8BV[a\t7a\x1D\xFDV[\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\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF8a\x1C\xD7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D]W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.^_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\x1D\xA7\x91\x90a.GV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xE4V[``\x91P[P\x91P\x91Pa\x1D\xF4\x85\x83\x83a\x1E\x1CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E1Wa\x1E,\x82a\x1E{V[a\x1EtV[\x81Q\x15\x80\x15a\x1EHWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EqW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1DV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\x8BW\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\x1E\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FW`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fw`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a W`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a w`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90a\t\xC2\x91\x90a!BV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[_[\x80\x82\x11\x15a\x19'W\x80\x83\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x90\x91\x01U`\x02\x01a!DV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\x82W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x97W__\xFD[a\x0C\xE7\x82a!lV[_` \x82\x84\x03\x12\x15a!\xB0W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xE9`@\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#\xEFWa#\xEFa#\xB8V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xEFWa#\xEFa#\xB8V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$?Wa$?a#\xB8V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\x82W__\xFD[_``\x82\x84\x03\x12\x15a$mW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x8FWa$\x8Fa#\xB8V[`@R\x90P\x80a$\x9E\x83a$GV[\x81Ra$\xAC` \x84\x01a$GV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xD2W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xF4Wa$\xF4a#\xB8V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%!W__\xFD[a%+\x85\x85a$]V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%?W__\xFD[Pa%Ha#\xCCV[a%U\x85``\x86\x01a$\xC2V[\x81Ra%d\x85`\xA0\x86\x01a$\xC2V[` \x82\x01Ra%v\x85`\xE0\x86\x01a$\xC2V[`@\x82\x01Ra%\x89\x85a\x01 \x86\x01a$\xC2V[``\x82\x01Ra%\x9C\x85a\x01`\x86\x01a$\xC2V[`\x80\x82\x01Ra%\xAF\x85a\x01\xA0\x86\x01a$\xC2V[`\xA0\x82\x01Ra%\xC2\x85a\x01\xE0\x86\x01a$\xC2V[`\xC0\x82\x01Ra%\xD5\x85a\x02 \x86\x01a$\xC2V[`\xE0\x82\x01Ra%\xE8\x85a\x02`\x86\x01a$\xC2V[a\x01\0\x82\x01Ra%\xFC\x85a\x02\xA0\x86\x01a$\xC2V[a\x01 \x82\x01Ra&\x10\x85a\x02\xE0\x86\x01a$\xC2V[a\x01@\x82\x01Ra&$\x85a\x03 \x86\x01a$\xC2V[a\x01`\x82\x01Ra&8\x85a\x03`\x86\x01a$\xC2V[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&\xCFW__\xFD[a&\xD8\x83a!lV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xF2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'\x02W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x1BWa'\x1Ba#\xB8V[a'.`\x1F\x82\x01`\x1F\x19\x16` \x01a$\x17V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'BW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\x82W__\xFD[_` \x82\x84\x03\x12\x15a'\x84W__\xFD[a\x0C\xE7\x82a'aV[____\x84\x86\x03a\x01 \x81\x12\x15a'\xA2W__\xFD[a'\xAC\x87\x87a$]V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xBFW__\xFD[Pa'\xC8a#\xF5V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xFB`\xE0\x86\x01a'aV[\x91Pa(\na\x01\0\x86\x01a!lV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a(ZW__\xFD[a\x0C\xE7\x83\x83a$]V[__`@\x83\x85\x03\x12\x15a(uW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x94W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA9W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xB9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xD2Wa(\xD2a#\xB8V[a(\xE1` \x82`\x05\x1B\x01a$\x17V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)\x02W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)rW`\x80\x84\x88\x03\x12\x15a) W__\xFD[a)(a#\xF5V[a)1\x85a$GV[\x81Ra)?` \x86\x01a$GV[` \x82\x01Ra)P`@\x86\x01a$GV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)\tV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)|V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x97W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xBAV[a)\xEE\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+\xC5`@\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-\x9Da\x05\0\x83\x01\x85a)\xB7V[a-\xABa\x05\xE0\x83\x01\x84a)\xD9V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xC3W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EtW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)|V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x12Wa.\x12a)|V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.+W__\xFD[PQ\x91\x90PV[_\x81a.@Wa.@a)|V[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08#\0\n",
4754    );
4755    /// The runtime bytecode of the contract, as deployed on the network.
4756    ///
4757    /// ```text
4758    ///0x6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612187565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121a0565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121b7565b348015610293575f5ffd5b506101dd6102a236600461250e565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121a0565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126be565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121a0565b6109e5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612774565b610b10565b3480156104c1575f5ffd5b506101dd6104d036600461278d565b610b99565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612815565b348015610572575f5ffd5b506101dd61058136600461284a565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612864565b610cbb565b34801561066a575f5ffd5b506101dd610679366004612187565b610cf0565b348015610689575f5ffd5b506101dd610698366004612884565b610d32565b3480156106a8575f5ffd5b50600954610356565b6106b9610ddd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ea4565b6107bd610e38565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611468565b61087382826114a9565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461159d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611786565b61092d8261182a565b610937828261186b565b5050565b5f61094461192c565b505f516020612e5e5f395f51905f5290565b61095e610ddd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610ddd565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906109f9600183612990565b81548110610a0957610a096129a3565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a4857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610b09578460098281548110610a7857610a786129a3565b5f918252602090912060029091020154600160801b90046001600160401b03161115610b015760098181548110610ab157610ab16129a3565b905f5260205f2090600202016001015460098281548110610ad457610ad46129a3565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a5c565b5050915091565b610b18610ddd565b610e108163ffffffff161080610b3757506301e133808163ffffffff16115b80610b55575060085463ffffffff600160a01b909104811690821611155b15610b73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bdd5750825b90505f826001600160401b03166001148015610bf85750303b155b905081158015610c06575080155b15610c245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4e57845460ff60401b1916600160401b1785555b610c5786611975565b610c5f611986565b610c6a89898961198e565b8315610cb057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cd657610cd18383611aba565b610ce7565b81600b5484610ce59190612990565b115b90505b92915050565b610cf8610ddd565b6001600160a01b038116610d2657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2f81611c12565b50565b610d3d60095f612109565b5f5b8151811015610937576009828281518110610d5c57610d5c6129a3565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d3f565b33610e0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d1d565b610e40611ea4565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114b26107ad565b90506114bc612124565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061153b90859085908890600401612b93565b602060405180830381865af4158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a9190612db3565b611597576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611612575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115dd576115dd6129a3565b5f91825260209091206002909102015461160790600160401b90046001600160401b031684612dd2565b6001600160401b0316115b156116a557600854600980549091600160c01b90046001600160401b031690811061163f5761163f6129a3565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167f83612df1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061180c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118005f516020612e5e5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611832610ddd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118c5575060408051601f3d908101601f191682019092526118c291810190612e1b565b60015b6118ed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1d565b5f516020612e5e5f395f51905f52811461191d57604051632a87526960e21b815260048101829052602401610d1d565b6119278383611c82565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b61197d611cd7565b610d2f81611d20565b6109c2611cd7565b82516001600160401b03161515806119b2575060208301516001600160401b031615155b806119bf57506020820151155b806119cc57506040820151155b806119d957506060820151155b806119e357508151155b806119f55750610e108163ffffffff16105b80611a0957506301e133808163ffffffff16115b15611a27576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611acb575080155b80611b155750600854600980549091600160c01b90046001600160401b0316908110611af957611af96129a3565b5f9182526020909120600290910201546001600160401b031684105b15611b335760405163b0b4387760e01b815260040160405180910390fd5b5f8080611b41600185612990565b90505b81611bdd57600854600160c01b90046001600160401b03168110611bdd578660098281548110611b7657611b766129a3565b5f9182526020909120600290910201546001600160401b031611611bcb576001915060098181548110611bab57611bab6129a3565b5f9182526020909120600290910201546001600160401b03169250611bdd565b80611bd581612e32565b915050611b44565b81611bfb5760405163b0b4387760e01b815260040160405180910390fd5b85611c068489612990565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611c8b82611d28565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ccf576119278282611d8b565b610937611dfd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610cf8611cd7565b806001600160a01b03163b5f03611d5d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1d565b5f516020612e5e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611da79190612e47565b5f60405180830381855af49150503d805f8114611ddf576040519150601f19603f3d011682016040523d82523d5f602084013e611de4565b606091505b5091509150611df4858383611e1c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e3157611e2c82611e7b565b611e74565b8151158015611e4857506001600160a01b0384163b155b15611e7157604051639996b31560e01b81526001600160a01b0385166004820152602401610d1d565b50805b9392505050565b805115611e8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ed760405180604001604052805f81526020015f81525090565b8152602001611ef760405180604001604052805f81526020015f81525090565b8152602001611f1760405180604001604052805f81526020015f81525090565b8152602001611f3760405180604001604052805f81526020015f81525090565b8152602001611f5760405180604001604052805f81526020015f81525090565b8152602001611f7760405180604001604052805f81526020015f81525090565b8152602001611f9760405180604001604052805f81526020015f81525090565b8152602001611fb760405180604001604052805f81526020015f81525090565b8152602001611fd760405180604001604052805f81526020015f81525090565b8152602001611ff760405180604001604052805f81526020015f81525090565b815260200161201760405180604001604052805f81526020015f81525090565b815260200161203760405180604001604052805f81526020015f81525090565b815260200161205760405180604001604052805f81526020015f81525090565b815260200161207760405180604001604052805f81526020015f81525090565b815260200161209760405180604001604052805f81526020015f81525090565b81526020016120b760405180604001604052805f81526020015f81525090565b81526020016120d760405180604001604052805f81526020015f81525090565b81526020016120f760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20906109c29190612142565b6040518060e001604052806007906020820280368337509192915050565b5f5b808211156119275780830180546001600160c01b03191681555f600190910155600201612144565b80356001600160a01b0381168114612182575f5ffd5b919050565b5f60208284031215612197575f5ffd5b610ce78261216c565b5f602082840312156121b0575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121e9604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123ef576123ef6123b8565b60405290565b604051608081016001600160401b03811182821017156123ef576123ef6123b8565b604051601f8201601f191681016001600160401b038111828210171561243f5761243f6123b8565b604052919050565b80356001600160401b0381168114612182575f5ffd5b5f6060828403121561246d575f5ffd5b604051606081016001600160401b038111828210171561248f5761248f6123b8565b60405290508061249e83612447565b81526124ac60208401612447565b6020820152604092830135920191909152919050565b5f604082840312156124d2575f5ffd5b604080519081016001600160401b03811182821017156124f4576124f46123b8565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612521575f5ffd5b61252b858561245d565b9250610480605f198201121561253f575f5ffd5b506125486123cc565b61255585606086016124c2565b81526125648560a086016124c2565b60208201526125768560e086016124c2565b60408201526125898561012086016124c2565b606082015261259c8561016086016124c2565b60808201526125af856101a086016124c2565b60a08201526125c2856101e086016124c2565b60c08201526125d58561022086016124c2565b60e08201526125e88561026086016124c2565b6101008201526125fc856102a086016124c2565b610120820152612610856102e086016124c2565b6101408201526126248561032086016124c2565b6101608201526126388561036086016124c2565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126cf575f5ffd5b6126d88361216c565b915060208301356001600160401b038111156126f2575f5ffd5b8301601f81018513612702575f5ffd5b80356001600160401b0381111561271b5761271b6123b8565b61272e601f8201601f1916602001612417565b818152866020838501011115612742575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612182575f5ffd5b5f60208284031215612784575f5ffd5b610ce782612761565b5f5f5f5f8486036101208112156127a2575f5ffd5b6127ac878761245d565b94506080605f19820112156127bf575f5ffd5b506127c86123f5565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127fb60e08601612761565b915061280a610100860161216c565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561285a575f5ffd5b610ce7838361245d565b5f5f60408385031215612875575f5ffd5b50508035926020909101359150565b5f60208284031215612894575f5ffd5b81356001600160401b038111156128a9575f5ffd5b8201601f810184136128b9575f5ffd5b80356001600160401b038111156128d2576128d26123b8565b6128e160208260051b01612417565b8082825260208201915060208360071b850101925086831115612902575f5ffd5b6020840193505b828410156129725760808488031215612920575f5ffd5b6129286123f5565b61293185612447565b815261293f60208601612447565b602082015261295060408601612447565b6040820152606085810135908201528252608090930192602090910190612909565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cea57610cea61297c565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115975781518452602093840193909101906001016129ba565b6129ee82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bc5604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d9d6105008301856129b7565b612dab6105e08301846129d9565b949350505050565b5f60208284031215612dc3575f5ffd5b81518015158114611e74575f5ffd5b6001600160401b038281168282160390811115610cea57610cea61297c565b5f6001600160401b0382166001600160401b038103612e1257612e1261297c565b60010192915050565b5f60208284031215612e2b575f5ffd5b5051919050565b5f81612e4057612e4061297c565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
4759    /// ```
4760    #[rustfmt::skip]
4761    #[allow(clippy::all)]
4762    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4763        b"`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\x87V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xA0V[a\x07dV[`@Qa\x023\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\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xB7V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\x0EV[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xA0V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xBEV[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xA0V[a\t\xE5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\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\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'tV[a\x0B\x10V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x8DV[a\x0B\x99V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\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\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x15V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(JV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(dV[a\x0C\xBBV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\x87V[a\x0C\xF0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\x84V[a\r2V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@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\x07sW_\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\x07\xB5a\x1E\xA4V[a\x07\xBDa\x0E8V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@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\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14hV[a\x08s\x82\x82a\x14\xA9V[\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\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x9DV[\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\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\x86V[a\t-\x82a\x18*V[a\t7\x82\x82a\x18kV[PPV[_a\tDa\x19,V[P_Q` a.^_9_Q\x90_R\x90V[a\t^a\r\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\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\t\xCCa\r\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\t\xF9`\x01\x83a)\x90V[\x81T\x81\x10a\n\tWa\n\ta)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\nHW`@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\x0B\tW\x84`\t\x82\x81T\x81\x10a\nxWa\nxa)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0B\x01W`\t\x81\x81T\x81\x10a\n\xB1Wa\n\xB1a)\xA3V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xD4Wa\n\xD4a)\xA3V[\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\n\\V[PP\x91P\x91V[a\x0B\x18a\r\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BsW`@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\x0B\xDDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xF8WP0;\x15[\x90P\x81\x15\x80\x15a\x0C\x06WP\x80\x15[\x15a\x0C$W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0CNW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CW\x86a\x19uV[a\x0C_a\x19\x86V[a\x0Cj\x89\x89\x89a\x19\x8EV[\x83\x15a\x0C\xB0W\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[`\nT_\x90`\xFF\x16a\x0C\xD6Wa\x0C\xD1\x83\x83a\x1A\xBAV[a\x0C\xE7V[\x81`\x0BT\x84a\x0C\xE5\x91\x90a)\x90V[\x11[\x90P[\x92\x91PPV[a\x0C\xF8a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r&W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r/\x81a\x1C\x12V[PV[a\r=`\t_a!\tV[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\r\\Wa\r\\a)\xA3V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r?V[3a\x0E\x0F\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1DV[a\x0E@a\x1E\xA4V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` 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\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xB2a\x07\xADV[\x90Pa\x14\xBCa!$V[\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\x15;\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x93V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15z\x91\x90a-\xB3V[a\x15\x97W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x12WP`\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\xDDWa\x15\xDDa)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16\x07\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xD2V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xA5W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16?Wa\x16?a)\xA3V[_\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\x16\x7F\x83a-\xF1V[\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\x18\x0CWP\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\x18\0_Q` a.^_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x182a\r\xDDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\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\xC5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC2\x91\x81\x01\x90a.\x1BV[`\x01[a\x18\xEDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.^_9_Q\x90_R\x81\x14a\x19\x1DW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1DV[a\x19'\x83\x83a\x1C\x82V[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\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19}a\x1C\xD7V[a\r/\x81a\x1D V[a\t\xC2a\x1C\xD7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xB2WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xBFWP` \x82\x01Q\x15[\x80a\x19\xCCWP`@\x82\x01Q\x15[\x80a\x19\xD9WP``\x82\x01Q\x15[\x80a\x19\xE3WP\x81Q\x15[\x80a\x19\xF5WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\tWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A'W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1A\xCBWP\x80\x15[\x80a\x1B\x15WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1A\xF9Wa\x1A\xF9a)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B3W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1BA`\x01\x85a)\x90V[\x90P[\x81a\x1B\xDDW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1B\xDDW\x86`\t\x82\x81T\x81\x10a\x1BvWa\x1Bva)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1B\xCBW`\x01\x91P`\t\x81\x81T\x81\x10a\x1B\xABWa\x1B\xABa)\xA3V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1B\xDDV[\x80a\x1B\xD5\x81a.2V[\x91PPa\x1BDV[\x81a\x1B\xFBW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x06\x84\x89a)\x90V[\x11\x97\x96PPPPPPPV[\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\x1C\x8B\x82a\x1D(V[`@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\x1C\xCFWa\x19'\x82\x82a\x1D\x8BV[a\t7a\x1D\xFDV[\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\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF8a\x1C\xD7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D]W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.^_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\x1D\xA7\x91\x90a.GV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xE4V[``\x91P[P\x91P\x91Pa\x1D\xF4\x85\x83\x83a\x1E\x1CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E1Wa\x1E,\x82a\x1E{V[a\x1EtV[\x81Q\x15\x80\x15a\x1EHWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EqW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1DV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\x8BW\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\x1E\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FW`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fw`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a W`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a w`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90a\t\xC2\x91\x90a!BV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[_[\x80\x82\x11\x15a\x19'W\x80\x83\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x90\x91\x01U`\x02\x01a!DV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\x82W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x97W__\xFD[a\x0C\xE7\x82a!lV[_` \x82\x84\x03\x12\x15a!\xB0W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xE9`@\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#\xEFWa#\xEFa#\xB8V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xEFWa#\xEFa#\xB8V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$?Wa$?a#\xB8V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\x82W__\xFD[_``\x82\x84\x03\x12\x15a$mW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x8FWa$\x8Fa#\xB8V[`@R\x90P\x80a$\x9E\x83a$GV[\x81Ra$\xAC` \x84\x01a$GV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xD2W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xF4Wa$\xF4a#\xB8V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%!W__\xFD[a%+\x85\x85a$]V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%?W__\xFD[Pa%Ha#\xCCV[a%U\x85``\x86\x01a$\xC2V[\x81Ra%d\x85`\xA0\x86\x01a$\xC2V[` \x82\x01Ra%v\x85`\xE0\x86\x01a$\xC2V[`@\x82\x01Ra%\x89\x85a\x01 \x86\x01a$\xC2V[``\x82\x01Ra%\x9C\x85a\x01`\x86\x01a$\xC2V[`\x80\x82\x01Ra%\xAF\x85a\x01\xA0\x86\x01a$\xC2V[`\xA0\x82\x01Ra%\xC2\x85a\x01\xE0\x86\x01a$\xC2V[`\xC0\x82\x01Ra%\xD5\x85a\x02 \x86\x01a$\xC2V[`\xE0\x82\x01Ra%\xE8\x85a\x02`\x86\x01a$\xC2V[a\x01\0\x82\x01Ra%\xFC\x85a\x02\xA0\x86\x01a$\xC2V[a\x01 \x82\x01Ra&\x10\x85a\x02\xE0\x86\x01a$\xC2V[a\x01@\x82\x01Ra&$\x85a\x03 \x86\x01a$\xC2V[a\x01`\x82\x01Ra&8\x85a\x03`\x86\x01a$\xC2V[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&\xCFW__\xFD[a&\xD8\x83a!lV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xF2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'\x02W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x1BWa'\x1Ba#\xB8V[a'.`\x1F\x82\x01`\x1F\x19\x16` \x01a$\x17V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'BW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\x82W__\xFD[_` \x82\x84\x03\x12\x15a'\x84W__\xFD[a\x0C\xE7\x82a'aV[____\x84\x86\x03a\x01 \x81\x12\x15a'\xA2W__\xFD[a'\xAC\x87\x87a$]V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xBFW__\xFD[Pa'\xC8a#\xF5V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xFB`\xE0\x86\x01a'aV[\x91Pa(\na\x01\0\x86\x01a!lV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a(ZW__\xFD[a\x0C\xE7\x83\x83a$]V[__`@\x83\x85\x03\x12\x15a(uW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x94W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA9W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xB9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xD2Wa(\xD2a#\xB8V[a(\xE1` \x82`\x05\x1B\x01a$\x17V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)\x02W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)rW`\x80\x84\x88\x03\x12\x15a) W__\xFD[a)(a#\xF5V[a)1\x85a$GV[\x81Ra)?` \x86\x01a$GV[` \x82\x01Ra)P`@\x86\x01a$GV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)\tV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)|V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x97W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xBAV[a)\xEE\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+\xC5`@\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-\x9Da\x05\0\x83\x01\x85a)\xB7V[a-\xABa\x05\xE0\x83\x01\x84a)\xD9V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xC3W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EtW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)|V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x12Wa.\x12a)|V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.+W__\xFD[PQ\x91\x90PV[_\x81a.@Wa.@a)|V[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08#\0\n",
4764    );
4765    #[derive(serde::Serialize, serde::Deserialize)]
4766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4767    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4768```solidity
4769error AddressEmptyCode(address target);
4770```*/
4771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4772    #[derive(Clone)]
4773    pub struct AddressEmptyCode {
4774        #[allow(missing_docs)]
4775        pub target: alloy::sol_types::private::Address,
4776    }
4777    #[allow(
4778        non_camel_case_types,
4779        non_snake_case,
4780        clippy::pub_underscore_fields,
4781        clippy::style
4782    )]
4783    const _: () = {
4784        use alloy::sol_types as alloy_sol_types;
4785        #[doc(hidden)]
4786        #[allow(dead_code)]
4787        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4788        #[doc(hidden)]
4789        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4790        #[cfg(test)]
4791        #[allow(dead_code, unreachable_patterns)]
4792        fn _type_assertion(
4793            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4794        ) {
4795            match _t {
4796                alloy_sol_types::private::AssertTypeEq::<
4797                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4798                >(_) => {}
4799            }
4800        }
4801        #[automatically_derived]
4802        #[doc(hidden)]
4803        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4804            fn from(value: AddressEmptyCode) -> Self {
4805                (value.target,)
4806            }
4807        }
4808        #[automatically_derived]
4809        #[doc(hidden)]
4810        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4811            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4812                Self { target: tuple.0 }
4813            }
4814        }
4815        #[automatically_derived]
4816        impl alloy_sol_types::SolError for AddressEmptyCode {
4817            type Parameters<'a> = UnderlyingSolTuple<'a>;
4818            type Token<'a> = <Self::Parameters<
4819                'a,
4820            > as alloy_sol_types::SolType>::Token<'a>;
4821            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4822            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4823            #[inline]
4824            fn new<'a>(
4825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4826            ) -> Self {
4827                tuple.into()
4828            }
4829            #[inline]
4830            fn tokenize(&self) -> Self::Token<'_> {
4831                (
4832                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4833                        &self.target,
4834                    ),
4835                )
4836            }
4837            #[inline]
4838            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4839                Self::abi_decode_raw_with_config(
4840                    data,
4841                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4842                )
4843            }
4844        }
4845    };
4846    #[derive(serde::Serialize, serde::Deserialize)]
4847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4848    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4849```solidity
4850error ERC1967InvalidImplementation(address implementation);
4851```*/
4852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4853    #[derive(Clone)]
4854    pub struct ERC1967InvalidImplementation {
4855        #[allow(missing_docs)]
4856        pub implementation: alloy::sol_types::private::Address,
4857    }
4858    #[allow(
4859        non_camel_case_types,
4860        non_snake_case,
4861        clippy::pub_underscore_fields,
4862        clippy::style
4863    )]
4864    const _: () = {
4865        use alloy::sol_types as alloy_sol_types;
4866        #[doc(hidden)]
4867        #[allow(dead_code)]
4868        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4869        #[doc(hidden)]
4870        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4871        #[cfg(test)]
4872        #[allow(dead_code, unreachable_patterns)]
4873        fn _type_assertion(
4874            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4875        ) {
4876            match _t {
4877                alloy_sol_types::private::AssertTypeEq::<
4878                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4879                >(_) => {}
4880            }
4881        }
4882        #[automatically_derived]
4883        #[doc(hidden)]
4884        impl ::core::convert::From<ERC1967InvalidImplementation>
4885        for UnderlyingRustTuple<'_> {
4886            fn from(value: ERC1967InvalidImplementation) -> Self {
4887                (value.implementation,)
4888            }
4889        }
4890        #[automatically_derived]
4891        #[doc(hidden)]
4892        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4893        for ERC1967InvalidImplementation {
4894            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4895                Self { implementation: tuple.0 }
4896            }
4897        }
4898        #[automatically_derived]
4899        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4900            type Parameters<'a> = UnderlyingSolTuple<'a>;
4901            type Token<'a> = <Self::Parameters<
4902                'a,
4903            > as alloy_sol_types::SolType>::Token<'a>;
4904            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4905            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4906            #[inline]
4907            fn new<'a>(
4908                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4909            ) -> Self {
4910                tuple.into()
4911            }
4912            #[inline]
4913            fn tokenize(&self) -> Self::Token<'_> {
4914                (
4915                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4916                        &self.implementation,
4917                    ),
4918                )
4919            }
4920            #[inline]
4921            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4922                Self::abi_decode_raw_with_config(
4923                    data,
4924                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4925                )
4926            }
4927        }
4928    };
4929    #[derive(serde::Serialize, serde::Deserialize)]
4930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4931    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4932```solidity
4933error ERC1967NonPayable();
4934```*/
4935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4936    #[derive(Clone)]
4937    pub struct ERC1967NonPayable;
4938    #[allow(
4939        non_camel_case_types,
4940        non_snake_case,
4941        clippy::pub_underscore_fields,
4942        clippy::style
4943    )]
4944    const _: () = {
4945        use alloy::sol_types as alloy_sol_types;
4946        #[doc(hidden)]
4947        #[allow(dead_code)]
4948        type UnderlyingSolTuple<'a> = ();
4949        #[doc(hidden)]
4950        type UnderlyingRustTuple<'a> = ();
4951        #[cfg(test)]
4952        #[allow(dead_code, unreachable_patterns)]
4953        fn _type_assertion(
4954            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4955        ) {
4956            match _t {
4957                alloy_sol_types::private::AssertTypeEq::<
4958                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4959                >(_) => {}
4960            }
4961        }
4962        #[automatically_derived]
4963        #[doc(hidden)]
4964        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4965            fn from(value: ERC1967NonPayable) -> Self {
4966                ()
4967            }
4968        }
4969        #[automatically_derived]
4970        #[doc(hidden)]
4971        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4972            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4973                Self
4974            }
4975        }
4976        #[automatically_derived]
4977        impl alloy_sol_types::SolError for ERC1967NonPayable {
4978            type Parameters<'a> = UnderlyingSolTuple<'a>;
4979            type Token<'a> = <Self::Parameters<
4980                'a,
4981            > as alloy_sol_types::SolType>::Token<'a>;
4982            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4983            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4984            #[inline]
4985            fn new<'a>(
4986                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4987            ) -> Self {
4988                tuple.into()
4989            }
4990            #[inline]
4991            fn tokenize(&self) -> Self::Token<'_> {
4992                ()
4993            }
4994            #[inline]
4995            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4996                Self::abi_decode_raw_with_config(
4997                    data,
4998                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4999                )
5000            }
5001        }
5002    };
5003    #[derive(serde::Serialize, serde::Deserialize)]
5004    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5005    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5006```solidity
5007error FailedInnerCall();
5008```*/
5009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5010    #[derive(Clone)]
5011    pub struct FailedInnerCall;
5012    #[allow(
5013        non_camel_case_types,
5014        non_snake_case,
5015        clippy::pub_underscore_fields,
5016        clippy::style
5017    )]
5018    const _: () = {
5019        use alloy::sol_types as alloy_sol_types;
5020        #[doc(hidden)]
5021        #[allow(dead_code)]
5022        type UnderlyingSolTuple<'a> = ();
5023        #[doc(hidden)]
5024        type UnderlyingRustTuple<'a> = ();
5025        #[cfg(test)]
5026        #[allow(dead_code, unreachable_patterns)]
5027        fn _type_assertion(
5028            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5029        ) {
5030            match _t {
5031                alloy_sol_types::private::AssertTypeEq::<
5032                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5033                >(_) => {}
5034            }
5035        }
5036        #[automatically_derived]
5037        #[doc(hidden)]
5038        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5039            fn from(value: FailedInnerCall) -> Self {
5040                ()
5041            }
5042        }
5043        #[automatically_derived]
5044        #[doc(hidden)]
5045        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5046            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5047                Self
5048            }
5049        }
5050        #[automatically_derived]
5051        impl alloy_sol_types::SolError for FailedInnerCall {
5052            type Parameters<'a> = UnderlyingSolTuple<'a>;
5053            type Token<'a> = <Self::Parameters<
5054                'a,
5055            > as alloy_sol_types::SolType>::Token<'a>;
5056            const SIGNATURE: &'static str = "FailedInnerCall()";
5057            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5058            #[inline]
5059            fn new<'a>(
5060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5061            ) -> Self {
5062                tuple.into()
5063            }
5064            #[inline]
5065            fn tokenize(&self) -> Self::Token<'_> {
5066                ()
5067            }
5068            #[inline]
5069            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5070                Self::abi_decode_raw_with_config(
5071                    data,
5072                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5073                )
5074            }
5075        }
5076    };
5077    #[derive(serde::Serialize, serde::Deserialize)]
5078    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5079    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5080```solidity
5081error InsufficientSnapshotHistory();
5082```*/
5083    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5084    #[derive(Clone)]
5085    pub struct InsufficientSnapshotHistory;
5086    #[allow(
5087        non_camel_case_types,
5088        non_snake_case,
5089        clippy::pub_underscore_fields,
5090        clippy::style
5091    )]
5092    const _: () = {
5093        use alloy::sol_types as alloy_sol_types;
5094        #[doc(hidden)]
5095        #[allow(dead_code)]
5096        type UnderlyingSolTuple<'a> = ();
5097        #[doc(hidden)]
5098        type UnderlyingRustTuple<'a> = ();
5099        #[cfg(test)]
5100        #[allow(dead_code, unreachable_patterns)]
5101        fn _type_assertion(
5102            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5103        ) {
5104            match _t {
5105                alloy_sol_types::private::AssertTypeEq::<
5106                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5107                >(_) => {}
5108            }
5109        }
5110        #[automatically_derived]
5111        #[doc(hidden)]
5112        impl ::core::convert::From<InsufficientSnapshotHistory>
5113        for UnderlyingRustTuple<'_> {
5114            fn from(value: InsufficientSnapshotHistory) -> Self {
5115                ()
5116            }
5117        }
5118        #[automatically_derived]
5119        #[doc(hidden)]
5120        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5121        for InsufficientSnapshotHistory {
5122            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5123                Self
5124            }
5125        }
5126        #[automatically_derived]
5127        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5128            type Parameters<'a> = UnderlyingSolTuple<'a>;
5129            type Token<'a> = <Self::Parameters<
5130                'a,
5131            > as alloy_sol_types::SolType>::Token<'a>;
5132            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5133            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5134            #[inline]
5135            fn new<'a>(
5136                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5137            ) -> Self {
5138                tuple.into()
5139            }
5140            #[inline]
5141            fn tokenize(&self) -> Self::Token<'_> {
5142                ()
5143            }
5144            #[inline]
5145            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5146                Self::abi_decode_raw_with_config(
5147                    data,
5148                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5149                )
5150            }
5151        }
5152    };
5153    #[derive(serde::Serialize, serde::Deserialize)]
5154    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5155    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5156```solidity
5157error InvalidAddress();
5158```*/
5159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5160    #[derive(Clone)]
5161    pub struct InvalidAddress;
5162    #[allow(
5163        non_camel_case_types,
5164        non_snake_case,
5165        clippy::pub_underscore_fields,
5166        clippy::style
5167    )]
5168    const _: () = {
5169        use alloy::sol_types as alloy_sol_types;
5170        #[doc(hidden)]
5171        #[allow(dead_code)]
5172        type UnderlyingSolTuple<'a> = ();
5173        #[doc(hidden)]
5174        type UnderlyingRustTuple<'a> = ();
5175        #[cfg(test)]
5176        #[allow(dead_code, unreachable_patterns)]
5177        fn _type_assertion(
5178            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5179        ) {
5180            match _t {
5181                alloy_sol_types::private::AssertTypeEq::<
5182                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5183                >(_) => {}
5184            }
5185        }
5186        #[automatically_derived]
5187        #[doc(hidden)]
5188        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5189            fn from(value: InvalidAddress) -> Self {
5190                ()
5191            }
5192        }
5193        #[automatically_derived]
5194        #[doc(hidden)]
5195        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5196            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5197                Self
5198            }
5199        }
5200        #[automatically_derived]
5201        impl alloy_sol_types::SolError for InvalidAddress {
5202            type Parameters<'a> = UnderlyingSolTuple<'a>;
5203            type Token<'a> = <Self::Parameters<
5204                'a,
5205            > as alloy_sol_types::SolType>::Token<'a>;
5206            const SIGNATURE: &'static str = "InvalidAddress()";
5207            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5208            #[inline]
5209            fn new<'a>(
5210                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5211            ) -> Self {
5212                tuple.into()
5213            }
5214            #[inline]
5215            fn tokenize(&self) -> Self::Token<'_> {
5216                ()
5217            }
5218            #[inline]
5219            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5220                Self::abi_decode_raw_with_config(
5221                    data,
5222                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5223                )
5224            }
5225        }
5226    };
5227    #[derive(serde::Serialize, serde::Deserialize)]
5228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5229    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5230```solidity
5231error InvalidArgs();
5232```*/
5233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5234    #[derive(Clone)]
5235    pub struct InvalidArgs;
5236    #[allow(
5237        non_camel_case_types,
5238        non_snake_case,
5239        clippy::pub_underscore_fields,
5240        clippy::style
5241    )]
5242    const _: () = {
5243        use alloy::sol_types as alloy_sol_types;
5244        #[doc(hidden)]
5245        #[allow(dead_code)]
5246        type UnderlyingSolTuple<'a> = ();
5247        #[doc(hidden)]
5248        type UnderlyingRustTuple<'a> = ();
5249        #[cfg(test)]
5250        #[allow(dead_code, unreachable_patterns)]
5251        fn _type_assertion(
5252            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5253        ) {
5254            match _t {
5255                alloy_sol_types::private::AssertTypeEq::<
5256                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5257                >(_) => {}
5258            }
5259        }
5260        #[automatically_derived]
5261        #[doc(hidden)]
5262        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5263            fn from(value: InvalidArgs) -> Self {
5264                ()
5265            }
5266        }
5267        #[automatically_derived]
5268        #[doc(hidden)]
5269        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5270            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5271                Self
5272            }
5273        }
5274        #[automatically_derived]
5275        impl alloy_sol_types::SolError for InvalidArgs {
5276            type Parameters<'a> = UnderlyingSolTuple<'a>;
5277            type Token<'a> = <Self::Parameters<
5278                'a,
5279            > as alloy_sol_types::SolType>::Token<'a>;
5280            const SIGNATURE: &'static str = "InvalidArgs()";
5281            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5282            #[inline]
5283            fn new<'a>(
5284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5285            ) -> Self {
5286                tuple.into()
5287            }
5288            #[inline]
5289            fn tokenize(&self) -> Self::Token<'_> {
5290                ()
5291            }
5292            #[inline]
5293            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5294                Self::abi_decode_raw_with_config(
5295                    data,
5296                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5297                )
5298            }
5299        }
5300    };
5301    #[derive(serde::Serialize, serde::Deserialize)]
5302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5303    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5304```solidity
5305error InvalidHotShotBlockForCommitmentCheck();
5306```*/
5307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5308    #[derive(Clone)]
5309    pub struct InvalidHotShotBlockForCommitmentCheck;
5310    #[allow(
5311        non_camel_case_types,
5312        non_snake_case,
5313        clippy::pub_underscore_fields,
5314        clippy::style
5315    )]
5316    const _: () = {
5317        use alloy::sol_types as alloy_sol_types;
5318        #[doc(hidden)]
5319        #[allow(dead_code)]
5320        type UnderlyingSolTuple<'a> = ();
5321        #[doc(hidden)]
5322        type UnderlyingRustTuple<'a> = ();
5323        #[cfg(test)]
5324        #[allow(dead_code, unreachable_patterns)]
5325        fn _type_assertion(
5326            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5327        ) {
5328            match _t {
5329                alloy_sol_types::private::AssertTypeEq::<
5330                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5331                >(_) => {}
5332            }
5333        }
5334        #[automatically_derived]
5335        #[doc(hidden)]
5336        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5337        for UnderlyingRustTuple<'_> {
5338            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5339                ()
5340            }
5341        }
5342        #[automatically_derived]
5343        #[doc(hidden)]
5344        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5345        for InvalidHotShotBlockForCommitmentCheck {
5346            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5347                Self
5348            }
5349        }
5350        #[automatically_derived]
5351        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5352            type Parameters<'a> = UnderlyingSolTuple<'a>;
5353            type Token<'a> = <Self::Parameters<
5354                'a,
5355            > as alloy_sol_types::SolType>::Token<'a>;
5356            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5357            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5358            #[inline]
5359            fn new<'a>(
5360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5361            ) -> Self {
5362                tuple.into()
5363            }
5364            #[inline]
5365            fn tokenize(&self) -> Self::Token<'_> {
5366                ()
5367            }
5368            #[inline]
5369            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5370                Self::abi_decode_raw_with_config(
5371                    data,
5372                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5373                )
5374            }
5375        }
5376    };
5377    #[derive(serde::Serialize, serde::Deserialize)]
5378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5379    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5380```solidity
5381error InvalidInitialization();
5382```*/
5383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5384    #[derive(Clone)]
5385    pub struct InvalidInitialization;
5386    #[allow(
5387        non_camel_case_types,
5388        non_snake_case,
5389        clippy::pub_underscore_fields,
5390        clippy::style
5391    )]
5392    const _: () = {
5393        use alloy::sol_types as alloy_sol_types;
5394        #[doc(hidden)]
5395        #[allow(dead_code)]
5396        type UnderlyingSolTuple<'a> = ();
5397        #[doc(hidden)]
5398        type UnderlyingRustTuple<'a> = ();
5399        #[cfg(test)]
5400        #[allow(dead_code, unreachable_patterns)]
5401        fn _type_assertion(
5402            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5403        ) {
5404            match _t {
5405                alloy_sol_types::private::AssertTypeEq::<
5406                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5407                >(_) => {}
5408            }
5409        }
5410        #[automatically_derived]
5411        #[doc(hidden)]
5412        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5413            fn from(value: InvalidInitialization) -> Self {
5414                ()
5415            }
5416        }
5417        #[automatically_derived]
5418        #[doc(hidden)]
5419        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5420            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5421                Self
5422            }
5423        }
5424        #[automatically_derived]
5425        impl alloy_sol_types::SolError for InvalidInitialization {
5426            type Parameters<'a> = UnderlyingSolTuple<'a>;
5427            type Token<'a> = <Self::Parameters<
5428                'a,
5429            > as alloy_sol_types::SolType>::Token<'a>;
5430            const SIGNATURE: &'static str = "InvalidInitialization()";
5431            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5432            #[inline]
5433            fn new<'a>(
5434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5435            ) -> Self {
5436                tuple.into()
5437            }
5438            #[inline]
5439            fn tokenize(&self) -> Self::Token<'_> {
5440                ()
5441            }
5442            #[inline]
5443            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5444                Self::abi_decode_raw_with_config(
5445                    data,
5446                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5447                )
5448            }
5449        }
5450    };
5451    #[derive(serde::Serialize, serde::Deserialize)]
5452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5453    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5454```solidity
5455error InvalidMaxStateHistory();
5456```*/
5457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5458    #[derive(Clone)]
5459    pub struct InvalidMaxStateHistory;
5460    #[allow(
5461        non_camel_case_types,
5462        non_snake_case,
5463        clippy::pub_underscore_fields,
5464        clippy::style
5465    )]
5466    const _: () = {
5467        use alloy::sol_types as alloy_sol_types;
5468        #[doc(hidden)]
5469        #[allow(dead_code)]
5470        type UnderlyingSolTuple<'a> = ();
5471        #[doc(hidden)]
5472        type UnderlyingRustTuple<'a> = ();
5473        #[cfg(test)]
5474        #[allow(dead_code, unreachable_patterns)]
5475        fn _type_assertion(
5476            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5477        ) {
5478            match _t {
5479                alloy_sol_types::private::AssertTypeEq::<
5480                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5481                >(_) => {}
5482            }
5483        }
5484        #[automatically_derived]
5485        #[doc(hidden)]
5486        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5487            fn from(value: InvalidMaxStateHistory) -> Self {
5488                ()
5489            }
5490        }
5491        #[automatically_derived]
5492        #[doc(hidden)]
5493        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5494            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5495                Self
5496            }
5497        }
5498        #[automatically_derived]
5499        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5500            type Parameters<'a> = UnderlyingSolTuple<'a>;
5501            type Token<'a> = <Self::Parameters<
5502                'a,
5503            > as alloy_sol_types::SolType>::Token<'a>;
5504            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5505            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5506            #[inline]
5507            fn new<'a>(
5508                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5509            ) -> Self {
5510                tuple.into()
5511            }
5512            #[inline]
5513            fn tokenize(&self) -> Self::Token<'_> {
5514                ()
5515            }
5516            #[inline]
5517            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5518                Self::abi_decode_raw_with_config(
5519                    data,
5520                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5521                )
5522            }
5523        }
5524    };
5525    #[derive(serde::Serialize, serde::Deserialize)]
5526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5527    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5528```solidity
5529error InvalidProof();
5530```*/
5531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5532    #[derive(Clone)]
5533    pub struct InvalidProof;
5534    #[allow(
5535        non_camel_case_types,
5536        non_snake_case,
5537        clippy::pub_underscore_fields,
5538        clippy::style
5539    )]
5540    const _: () = {
5541        use alloy::sol_types as alloy_sol_types;
5542        #[doc(hidden)]
5543        #[allow(dead_code)]
5544        type UnderlyingSolTuple<'a> = ();
5545        #[doc(hidden)]
5546        type UnderlyingRustTuple<'a> = ();
5547        #[cfg(test)]
5548        #[allow(dead_code, unreachable_patterns)]
5549        fn _type_assertion(
5550            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5551        ) {
5552            match _t {
5553                alloy_sol_types::private::AssertTypeEq::<
5554                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5555                >(_) => {}
5556            }
5557        }
5558        #[automatically_derived]
5559        #[doc(hidden)]
5560        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5561            fn from(value: InvalidProof) -> Self {
5562                ()
5563            }
5564        }
5565        #[automatically_derived]
5566        #[doc(hidden)]
5567        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5568            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5569                Self
5570            }
5571        }
5572        #[automatically_derived]
5573        impl alloy_sol_types::SolError for InvalidProof {
5574            type Parameters<'a> = UnderlyingSolTuple<'a>;
5575            type Token<'a> = <Self::Parameters<
5576                'a,
5577            > as alloy_sol_types::SolType>::Token<'a>;
5578            const SIGNATURE: &'static str = "InvalidProof()";
5579            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5580            #[inline]
5581            fn new<'a>(
5582                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5583            ) -> Self {
5584                tuple.into()
5585            }
5586            #[inline]
5587            fn tokenize(&self) -> Self::Token<'_> {
5588                ()
5589            }
5590            #[inline]
5591            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5592                Self::abi_decode_raw_with_config(
5593                    data,
5594                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5595                )
5596            }
5597        }
5598    };
5599    #[derive(serde::Serialize, serde::Deserialize)]
5600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5601    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5602```solidity
5603error InvalidScalar();
5604```*/
5605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5606    #[derive(Clone)]
5607    pub struct InvalidScalar;
5608    #[allow(
5609        non_camel_case_types,
5610        non_snake_case,
5611        clippy::pub_underscore_fields,
5612        clippy::style
5613    )]
5614    const _: () = {
5615        use alloy::sol_types as alloy_sol_types;
5616        #[doc(hidden)]
5617        #[allow(dead_code)]
5618        type UnderlyingSolTuple<'a> = ();
5619        #[doc(hidden)]
5620        type UnderlyingRustTuple<'a> = ();
5621        #[cfg(test)]
5622        #[allow(dead_code, unreachable_patterns)]
5623        fn _type_assertion(
5624            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5625        ) {
5626            match _t {
5627                alloy_sol_types::private::AssertTypeEq::<
5628                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5629                >(_) => {}
5630            }
5631        }
5632        #[automatically_derived]
5633        #[doc(hidden)]
5634        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5635            fn from(value: InvalidScalar) -> Self {
5636                ()
5637            }
5638        }
5639        #[automatically_derived]
5640        #[doc(hidden)]
5641        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5642            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5643                Self
5644            }
5645        }
5646        #[automatically_derived]
5647        impl alloy_sol_types::SolError for InvalidScalar {
5648            type Parameters<'a> = UnderlyingSolTuple<'a>;
5649            type Token<'a> = <Self::Parameters<
5650                'a,
5651            > as alloy_sol_types::SolType>::Token<'a>;
5652            const SIGNATURE: &'static str = "InvalidScalar()";
5653            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5654            #[inline]
5655            fn new<'a>(
5656                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5657            ) -> Self {
5658                tuple.into()
5659            }
5660            #[inline]
5661            fn tokenize(&self) -> Self::Token<'_> {
5662                ()
5663            }
5664            #[inline]
5665            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5666                Self::abi_decode_raw_with_config(
5667                    data,
5668                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5669                )
5670            }
5671        }
5672    };
5673    #[derive(serde::Serialize, serde::Deserialize)]
5674    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5675    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5676```solidity
5677error NoChangeRequired();
5678```*/
5679    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5680    #[derive(Clone)]
5681    pub struct NoChangeRequired;
5682    #[allow(
5683        non_camel_case_types,
5684        non_snake_case,
5685        clippy::pub_underscore_fields,
5686        clippy::style
5687    )]
5688    const _: () = {
5689        use alloy::sol_types as alloy_sol_types;
5690        #[doc(hidden)]
5691        #[allow(dead_code)]
5692        type UnderlyingSolTuple<'a> = ();
5693        #[doc(hidden)]
5694        type UnderlyingRustTuple<'a> = ();
5695        #[cfg(test)]
5696        #[allow(dead_code, unreachable_patterns)]
5697        fn _type_assertion(
5698            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5699        ) {
5700            match _t {
5701                alloy_sol_types::private::AssertTypeEq::<
5702                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5703                >(_) => {}
5704            }
5705        }
5706        #[automatically_derived]
5707        #[doc(hidden)]
5708        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5709            fn from(value: NoChangeRequired) -> Self {
5710                ()
5711            }
5712        }
5713        #[automatically_derived]
5714        #[doc(hidden)]
5715        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5716            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5717                Self
5718            }
5719        }
5720        #[automatically_derived]
5721        impl alloy_sol_types::SolError for NoChangeRequired {
5722            type Parameters<'a> = UnderlyingSolTuple<'a>;
5723            type Token<'a> = <Self::Parameters<
5724                'a,
5725            > as alloy_sol_types::SolType>::Token<'a>;
5726            const SIGNATURE: &'static str = "NoChangeRequired()";
5727            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5728            #[inline]
5729            fn new<'a>(
5730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5731            ) -> Self {
5732                tuple.into()
5733            }
5734            #[inline]
5735            fn tokenize(&self) -> Self::Token<'_> {
5736                ()
5737            }
5738            #[inline]
5739            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5740                Self::abi_decode_raw_with_config(
5741                    data,
5742                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5743                )
5744            }
5745        }
5746    };
5747    #[derive(serde::Serialize, serde::Deserialize)]
5748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5749    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5750```solidity
5751error NotInitializing();
5752```*/
5753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5754    #[derive(Clone)]
5755    pub struct NotInitializing;
5756    #[allow(
5757        non_camel_case_types,
5758        non_snake_case,
5759        clippy::pub_underscore_fields,
5760        clippy::style
5761    )]
5762    const _: () = {
5763        use alloy::sol_types as alloy_sol_types;
5764        #[doc(hidden)]
5765        #[allow(dead_code)]
5766        type UnderlyingSolTuple<'a> = ();
5767        #[doc(hidden)]
5768        type UnderlyingRustTuple<'a> = ();
5769        #[cfg(test)]
5770        #[allow(dead_code, unreachable_patterns)]
5771        fn _type_assertion(
5772            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5773        ) {
5774            match _t {
5775                alloy_sol_types::private::AssertTypeEq::<
5776                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5777                >(_) => {}
5778            }
5779        }
5780        #[automatically_derived]
5781        #[doc(hidden)]
5782        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5783            fn from(value: NotInitializing) -> Self {
5784                ()
5785            }
5786        }
5787        #[automatically_derived]
5788        #[doc(hidden)]
5789        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5790            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5791                Self
5792            }
5793        }
5794        #[automatically_derived]
5795        impl alloy_sol_types::SolError for NotInitializing {
5796            type Parameters<'a> = UnderlyingSolTuple<'a>;
5797            type Token<'a> = <Self::Parameters<
5798                'a,
5799            > as alloy_sol_types::SolType>::Token<'a>;
5800            const SIGNATURE: &'static str = "NotInitializing()";
5801            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5802            #[inline]
5803            fn new<'a>(
5804                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5805            ) -> Self {
5806                tuple.into()
5807            }
5808            #[inline]
5809            fn tokenize(&self) -> Self::Token<'_> {
5810                ()
5811            }
5812            #[inline]
5813            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5814                Self::abi_decode_raw_with_config(
5815                    data,
5816                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5817                )
5818            }
5819        }
5820    };
5821    #[derive(serde::Serialize, serde::Deserialize)]
5822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5823    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5824```solidity
5825error OutdatedState();
5826```*/
5827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5828    #[derive(Clone)]
5829    pub struct OutdatedState;
5830    #[allow(
5831        non_camel_case_types,
5832        non_snake_case,
5833        clippy::pub_underscore_fields,
5834        clippy::style
5835    )]
5836    const _: () = {
5837        use alloy::sol_types as alloy_sol_types;
5838        #[doc(hidden)]
5839        #[allow(dead_code)]
5840        type UnderlyingSolTuple<'a> = ();
5841        #[doc(hidden)]
5842        type UnderlyingRustTuple<'a> = ();
5843        #[cfg(test)]
5844        #[allow(dead_code, unreachable_patterns)]
5845        fn _type_assertion(
5846            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5847        ) {
5848            match _t {
5849                alloy_sol_types::private::AssertTypeEq::<
5850                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5851                >(_) => {}
5852            }
5853        }
5854        #[automatically_derived]
5855        #[doc(hidden)]
5856        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5857            fn from(value: OutdatedState) -> Self {
5858                ()
5859            }
5860        }
5861        #[automatically_derived]
5862        #[doc(hidden)]
5863        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5864            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5865                Self
5866            }
5867        }
5868        #[automatically_derived]
5869        impl alloy_sol_types::SolError for OutdatedState {
5870            type Parameters<'a> = UnderlyingSolTuple<'a>;
5871            type Token<'a> = <Self::Parameters<
5872                'a,
5873            > as alloy_sol_types::SolType>::Token<'a>;
5874            const SIGNATURE: &'static str = "OutdatedState()";
5875            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5876            #[inline]
5877            fn new<'a>(
5878                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5879            ) -> Self {
5880                tuple.into()
5881            }
5882            #[inline]
5883            fn tokenize(&self) -> Self::Token<'_> {
5884                ()
5885            }
5886            #[inline]
5887            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5888                Self::abi_decode_raw_with_config(
5889                    data,
5890                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5891                )
5892            }
5893        }
5894    };
5895    #[derive(serde::Serialize, serde::Deserialize)]
5896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5897    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5898```solidity
5899error OwnableInvalidOwner(address owner);
5900```*/
5901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5902    #[derive(Clone)]
5903    pub struct OwnableInvalidOwner {
5904        #[allow(missing_docs)]
5905        pub owner: alloy::sol_types::private::Address,
5906    }
5907    #[allow(
5908        non_camel_case_types,
5909        non_snake_case,
5910        clippy::pub_underscore_fields,
5911        clippy::style
5912    )]
5913    const _: () = {
5914        use alloy::sol_types as alloy_sol_types;
5915        #[doc(hidden)]
5916        #[allow(dead_code)]
5917        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5918        #[doc(hidden)]
5919        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5920        #[cfg(test)]
5921        #[allow(dead_code, unreachable_patterns)]
5922        fn _type_assertion(
5923            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5924        ) {
5925            match _t {
5926                alloy_sol_types::private::AssertTypeEq::<
5927                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5928                >(_) => {}
5929            }
5930        }
5931        #[automatically_derived]
5932        #[doc(hidden)]
5933        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5934            fn from(value: OwnableInvalidOwner) -> Self {
5935                (value.owner,)
5936            }
5937        }
5938        #[automatically_derived]
5939        #[doc(hidden)]
5940        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5941            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5942                Self { owner: tuple.0 }
5943            }
5944        }
5945        #[automatically_derived]
5946        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5947            type Parameters<'a> = UnderlyingSolTuple<'a>;
5948            type Token<'a> = <Self::Parameters<
5949                'a,
5950            > as alloy_sol_types::SolType>::Token<'a>;
5951            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5952            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5953            #[inline]
5954            fn new<'a>(
5955                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5956            ) -> Self {
5957                tuple.into()
5958            }
5959            #[inline]
5960            fn tokenize(&self) -> Self::Token<'_> {
5961                (
5962                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5963                        &self.owner,
5964                    ),
5965                )
5966            }
5967            #[inline]
5968            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5969                Self::abi_decode_raw_with_config(
5970                    data,
5971                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5972                )
5973            }
5974        }
5975    };
5976    #[derive(serde::Serialize, serde::Deserialize)]
5977    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5978    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5979```solidity
5980error OwnableUnauthorizedAccount(address account);
5981```*/
5982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5983    #[derive(Clone)]
5984    pub struct OwnableUnauthorizedAccount {
5985        #[allow(missing_docs)]
5986        pub account: alloy::sol_types::private::Address,
5987    }
5988    #[allow(
5989        non_camel_case_types,
5990        non_snake_case,
5991        clippy::pub_underscore_fields,
5992        clippy::style
5993    )]
5994    const _: () = {
5995        use alloy::sol_types as alloy_sol_types;
5996        #[doc(hidden)]
5997        #[allow(dead_code)]
5998        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5999        #[doc(hidden)]
6000        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6001        #[cfg(test)]
6002        #[allow(dead_code, unreachable_patterns)]
6003        fn _type_assertion(
6004            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6005        ) {
6006            match _t {
6007                alloy_sol_types::private::AssertTypeEq::<
6008                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6009                >(_) => {}
6010            }
6011        }
6012        #[automatically_derived]
6013        #[doc(hidden)]
6014        impl ::core::convert::From<OwnableUnauthorizedAccount>
6015        for UnderlyingRustTuple<'_> {
6016            fn from(value: OwnableUnauthorizedAccount) -> Self {
6017                (value.account,)
6018            }
6019        }
6020        #[automatically_derived]
6021        #[doc(hidden)]
6022        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6023        for OwnableUnauthorizedAccount {
6024            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6025                Self { account: tuple.0 }
6026            }
6027        }
6028        #[automatically_derived]
6029        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6030            type Parameters<'a> = UnderlyingSolTuple<'a>;
6031            type Token<'a> = <Self::Parameters<
6032                'a,
6033            > as alloy_sol_types::SolType>::Token<'a>;
6034            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6035            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6036            #[inline]
6037            fn new<'a>(
6038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6039            ) -> Self {
6040                tuple.into()
6041            }
6042            #[inline]
6043            fn tokenize(&self) -> Self::Token<'_> {
6044                (
6045                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6046                        &self.account,
6047                    ),
6048                )
6049            }
6050            #[inline]
6051            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6052                Self::abi_decode_raw_with_config(
6053                    data,
6054                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6055                )
6056            }
6057        }
6058    };
6059    #[derive(serde::Serialize, serde::Deserialize)]
6060    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6061    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6062```solidity
6063error OwnershipCannotBeRenounced();
6064```*/
6065    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6066    #[derive(Clone)]
6067    pub struct OwnershipCannotBeRenounced;
6068    #[allow(
6069        non_camel_case_types,
6070        non_snake_case,
6071        clippy::pub_underscore_fields,
6072        clippy::style
6073    )]
6074    const _: () = {
6075        use alloy::sol_types as alloy_sol_types;
6076        #[doc(hidden)]
6077        #[allow(dead_code)]
6078        type UnderlyingSolTuple<'a> = ();
6079        #[doc(hidden)]
6080        type UnderlyingRustTuple<'a> = ();
6081        #[cfg(test)]
6082        #[allow(dead_code, unreachable_patterns)]
6083        fn _type_assertion(
6084            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6085        ) {
6086            match _t {
6087                alloy_sol_types::private::AssertTypeEq::<
6088                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6089                >(_) => {}
6090            }
6091        }
6092        #[automatically_derived]
6093        #[doc(hidden)]
6094        impl ::core::convert::From<OwnershipCannotBeRenounced>
6095        for UnderlyingRustTuple<'_> {
6096            fn from(value: OwnershipCannotBeRenounced) -> Self {
6097                ()
6098            }
6099        }
6100        #[automatically_derived]
6101        #[doc(hidden)]
6102        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6103        for OwnershipCannotBeRenounced {
6104            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6105                Self
6106            }
6107        }
6108        #[automatically_derived]
6109        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6110            type Parameters<'a> = UnderlyingSolTuple<'a>;
6111            type Token<'a> = <Self::Parameters<
6112                'a,
6113            > as alloy_sol_types::SolType>::Token<'a>;
6114            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6115            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6116            #[inline]
6117            fn new<'a>(
6118                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6119            ) -> Self {
6120                tuple.into()
6121            }
6122            #[inline]
6123            fn tokenize(&self) -> Self::Token<'_> {
6124                ()
6125            }
6126            #[inline]
6127            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6128                Self::abi_decode_raw_with_config(
6129                    data,
6130                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6131                )
6132            }
6133        }
6134    };
6135    #[derive(serde::Serialize, serde::Deserialize)]
6136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6137    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6138```solidity
6139error ProverNotPermissioned();
6140```*/
6141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6142    #[derive(Clone)]
6143    pub struct ProverNotPermissioned;
6144    #[allow(
6145        non_camel_case_types,
6146        non_snake_case,
6147        clippy::pub_underscore_fields,
6148        clippy::style
6149    )]
6150    const _: () = {
6151        use alloy::sol_types as alloy_sol_types;
6152        #[doc(hidden)]
6153        #[allow(dead_code)]
6154        type UnderlyingSolTuple<'a> = ();
6155        #[doc(hidden)]
6156        type UnderlyingRustTuple<'a> = ();
6157        #[cfg(test)]
6158        #[allow(dead_code, unreachable_patterns)]
6159        fn _type_assertion(
6160            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6161        ) {
6162            match _t {
6163                alloy_sol_types::private::AssertTypeEq::<
6164                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6165                >(_) => {}
6166            }
6167        }
6168        #[automatically_derived]
6169        #[doc(hidden)]
6170        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6171            fn from(value: ProverNotPermissioned) -> Self {
6172                ()
6173            }
6174        }
6175        #[automatically_derived]
6176        #[doc(hidden)]
6177        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6178            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6179                Self
6180            }
6181        }
6182        #[automatically_derived]
6183        impl alloy_sol_types::SolError for ProverNotPermissioned {
6184            type Parameters<'a> = UnderlyingSolTuple<'a>;
6185            type Token<'a> = <Self::Parameters<
6186                'a,
6187            > as alloy_sol_types::SolType>::Token<'a>;
6188            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6189            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6190            #[inline]
6191            fn new<'a>(
6192                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6193            ) -> Self {
6194                tuple.into()
6195            }
6196            #[inline]
6197            fn tokenize(&self) -> Self::Token<'_> {
6198                ()
6199            }
6200            #[inline]
6201            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6202                Self::abi_decode_raw_with_config(
6203                    data,
6204                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6205                )
6206            }
6207        }
6208    };
6209    #[derive(serde::Serialize, serde::Deserialize)]
6210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6211    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6212```solidity
6213error UUPSUnauthorizedCallContext();
6214```*/
6215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6216    #[derive(Clone)]
6217    pub struct UUPSUnauthorizedCallContext;
6218    #[allow(
6219        non_camel_case_types,
6220        non_snake_case,
6221        clippy::pub_underscore_fields,
6222        clippy::style
6223    )]
6224    const _: () = {
6225        use alloy::sol_types as alloy_sol_types;
6226        #[doc(hidden)]
6227        #[allow(dead_code)]
6228        type UnderlyingSolTuple<'a> = ();
6229        #[doc(hidden)]
6230        type UnderlyingRustTuple<'a> = ();
6231        #[cfg(test)]
6232        #[allow(dead_code, unreachable_patterns)]
6233        fn _type_assertion(
6234            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6235        ) {
6236            match _t {
6237                alloy_sol_types::private::AssertTypeEq::<
6238                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6239                >(_) => {}
6240            }
6241        }
6242        #[automatically_derived]
6243        #[doc(hidden)]
6244        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6245        for UnderlyingRustTuple<'_> {
6246            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6247                ()
6248            }
6249        }
6250        #[automatically_derived]
6251        #[doc(hidden)]
6252        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6253        for UUPSUnauthorizedCallContext {
6254            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6255                Self
6256            }
6257        }
6258        #[automatically_derived]
6259        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6260            type Parameters<'a> = UnderlyingSolTuple<'a>;
6261            type Token<'a> = <Self::Parameters<
6262                'a,
6263            > as alloy_sol_types::SolType>::Token<'a>;
6264            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6265            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6266            #[inline]
6267            fn new<'a>(
6268                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6269            ) -> Self {
6270                tuple.into()
6271            }
6272            #[inline]
6273            fn tokenize(&self) -> Self::Token<'_> {
6274                ()
6275            }
6276            #[inline]
6277            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6278                Self::abi_decode_raw_with_config(
6279                    data,
6280                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6281                )
6282            }
6283        }
6284    };
6285    #[derive(serde::Serialize, serde::Deserialize)]
6286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6287    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6288```solidity
6289error UUPSUnsupportedProxiableUUID(bytes32 slot);
6290```*/
6291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6292    #[derive(Clone)]
6293    pub struct UUPSUnsupportedProxiableUUID {
6294        #[allow(missing_docs)]
6295        pub slot: alloy::sol_types::private::FixedBytes<32>,
6296    }
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        #[doc(hidden)]
6306        #[allow(dead_code)]
6307        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6308        #[doc(hidden)]
6309        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6310        #[cfg(test)]
6311        #[allow(dead_code, unreachable_patterns)]
6312        fn _type_assertion(
6313            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6314        ) {
6315            match _t {
6316                alloy_sol_types::private::AssertTypeEq::<
6317                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6318                >(_) => {}
6319            }
6320        }
6321        #[automatically_derived]
6322        #[doc(hidden)]
6323        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6324        for UnderlyingRustTuple<'_> {
6325            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6326                (value.slot,)
6327            }
6328        }
6329        #[automatically_derived]
6330        #[doc(hidden)]
6331        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6332        for UUPSUnsupportedProxiableUUID {
6333            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6334                Self { slot: tuple.0 }
6335            }
6336        }
6337        #[automatically_derived]
6338        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6339            type Parameters<'a> = UnderlyingSolTuple<'a>;
6340            type Token<'a> = <Self::Parameters<
6341                'a,
6342            > as alloy_sol_types::SolType>::Token<'a>;
6343            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6344            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6345            #[inline]
6346            fn new<'a>(
6347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6348            ) -> Self {
6349                tuple.into()
6350            }
6351            #[inline]
6352            fn tokenize(&self) -> Self::Token<'_> {
6353                (
6354                    <alloy::sol_types::sol_data::FixedBytes<
6355                        32,
6356                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6357                )
6358            }
6359            #[inline]
6360            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6361                Self::abi_decode_raw_with_config(
6362                    data,
6363                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6364                )
6365            }
6366        }
6367    };
6368    #[derive(serde::Serialize, serde::Deserialize)]
6369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6370    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6371```solidity
6372error WrongStakeTableUsed();
6373```*/
6374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6375    #[derive(Clone)]
6376    pub struct WrongStakeTableUsed;
6377    #[allow(
6378        non_camel_case_types,
6379        non_snake_case,
6380        clippy::pub_underscore_fields,
6381        clippy::style
6382    )]
6383    const _: () = {
6384        use alloy::sol_types as alloy_sol_types;
6385        #[doc(hidden)]
6386        #[allow(dead_code)]
6387        type UnderlyingSolTuple<'a> = ();
6388        #[doc(hidden)]
6389        type UnderlyingRustTuple<'a> = ();
6390        #[cfg(test)]
6391        #[allow(dead_code, unreachable_patterns)]
6392        fn _type_assertion(
6393            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6394        ) {
6395            match _t {
6396                alloy_sol_types::private::AssertTypeEq::<
6397                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6398                >(_) => {}
6399            }
6400        }
6401        #[automatically_derived]
6402        #[doc(hidden)]
6403        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6404            fn from(value: WrongStakeTableUsed) -> Self {
6405                ()
6406            }
6407        }
6408        #[automatically_derived]
6409        #[doc(hidden)]
6410        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6411            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6412                Self
6413            }
6414        }
6415        #[automatically_derived]
6416        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6417            type Parameters<'a> = UnderlyingSolTuple<'a>;
6418            type Token<'a> = <Self::Parameters<
6419                'a,
6420            > as alloy_sol_types::SolType>::Token<'a>;
6421            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6422            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6423            #[inline]
6424            fn new<'a>(
6425                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6426            ) -> Self {
6427                tuple.into()
6428            }
6429            #[inline]
6430            fn tokenize(&self) -> Self::Token<'_> {
6431                ()
6432            }
6433            #[inline]
6434            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6435                Self::abi_decode_raw_with_config(
6436                    data,
6437                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6438                )
6439            }
6440        }
6441    };
6442    #[derive(serde::Serialize, serde::Deserialize)]
6443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6444    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6445```solidity
6446event Initialized(uint64 version);
6447```*/
6448    #[allow(
6449        non_camel_case_types,
6450        non_snake_case,
6451        clippy::pub_underscore_fields,
6452        clippy::style
6453    )]
6454    #[derive(Clone)]
6455    pub struct Initialized {
6456        #[allow(missing_docs)]
6457        pub version: u64,
6458    }
6459    #[allow(
6460        non_camel_case_types,
6461        non_snake_case,
6462        clippy::pub_underscore_fields,
6463        clippy::style
6464    )]
6465    const _: () = {
6466        use alloy::sol_types as alloy_sol_types;
6467        #[automatically_derived]
6468        impl alloy_sol_types::SolEvent for Initialized {
6469            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6470            type DataToken<'a> = <Self::DataTuple<
6471                'a,
6472            > as alloy_sol_types::SolType>::Token<'a>;
6473            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6474            const SIGNATURE: &'static str = "Initialized(uint64)";
6475            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6476                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6477                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6478                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6479            ]);
6480            const ANONYMOUS: bool = false;
6481            #[allow(unused_variables)]
6482            #[inline]
6483            fn new(
6484                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6485                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6486            ) -> Self {
6487                Self { version: data.0 }
6488            }
6489            #[inline]
6490            fn check_signature(
6491                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6492            ) -> alloy_sol_types::Result<()> {
6493                if topics.0 != Self::SIGNATURE_HASH {
6494                    return Err(
6495                        alloy_sol_types::Error::invalid_event_signature_hash(
6496                            Self::SIGNATURE,
6497                            topics.0,
6498                            Self::SIGNATURE_HASH,
6499                        ),
6500                    );
6501                }
6502                Ok(())
6503            }
6504            #[inline]
6505            fn tokenize_body(&self) -> Self::DataToken<'_> {
6506                (
6507                    <alloy::sol_types::sol_data::Uint<
6508                        64,
6509                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6510                )
6511            }
6512            #[inline]
6513            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6514                (Self::SIGNATURE_HASH.into(),)
6515            }
6516            #[inline]
6517            fn encode_topics_raw(
6518                &self,
6519                out: &mut [alloy_sol_types::abi::token::WordToken],
6520            ) -> alloy_sol_types::Result<()> {
6521                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6522                    return Err(alloy_sol_types::Error::Overrun);
6523                }
6524                out[0usize] = alloy_sol_types::abi::token::WordToken(
6525                    Self::SIGNATURE_HASH,
6526                );
6527                Ok(())
6528            }
6529        }
6530        #[automatically_derived]
6531        impl alloy_sol_types::private::IntoLogData for Initialized {
6532            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6533                From::from(self)
6534            }
6535            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6536                From::from(&self)
6537            }
6538        }
6539        #[automatically_derived]
6540        impl From<&Initialized> for alloy_sol_types::private::LogData {
6541            #[inline]
6542            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6543                alloy_sol_types::SolEvent::encode_log_data(this)
6544            }
6545        }
6546    };
6547    #[derive(serde::Serialize, serde::Deserialize)]
6548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6549    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6550```solidity
6551event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6552```*/
6553    #[allow(
6554        non_camel_case_types,
6555        non_snake_case,
6556        clippy::pub_underscore_fields,
6557        clippy::style
6558    )]
6559    #[derive(Clone)]
6560    pub struct NewState {
6561        #[allow(missing_docs)]
6562        pub viewNum: u64,
6563        #[allow(missing_docs)]
6564        pub blockHeight: u64,
6565        #[allow(missing_docs)]
6566        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6567    }
6568    #[allow(
6569        non_camel_case_types,
6570        non_snake_case,
6571        clippy::pub_underscore_fields,
6572        clippy::style
6573    )]
6574    const _: () = {
6575        use alloy::sol_types as alloy_sol_types;
6576        #[automatically_derived]
6577        impl alloy_sol_types::SolEvent for NewState {
6578            type DataTuple<'a> = (BN254::ScalarField,);
6579            type DataToken<'a> = <Self::DataTuple<
6580                'a,
6581            > as alloy_sol_types::SolType>::Token<'a>;
6582            type TopicList = (
6583                alloy_sol_types::sol_data::FixedBytes<32>,
6584                alloy::sol_types::sol_data::Uint<64>,
6585                alloy::sol_types::sol_data::Uint<64>,
6586            );
6587            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6588            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6589                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6590                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6591                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6592            ]);
6593            const ANONYMOUS: bool = false;
6594            #[allow(unused_variables)]
6595            #[inline]
6596            fn new(
6597                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6598                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6599            ) -> Self {
6600                Self {
6601                    viewNum: topics.1,
6602                    blockHeight: topics.2,
6603                    blockCommRoot: data.0,
6604                }
6605            }
6606            #[inline]
6607            fn check_signature(
6608                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6609            ) -> alloy_sol_types::Result<()> {
6610                if topics.0 != Self::SIGNATURE_HASH {
6611                    return Err(
6612                        alloy_sol_types::Error::invalid_event_signature_hash(
6613                            Self::SIGNATURE,
6614                            topics.0,
6615                            Self::SIGNATURE_HASH,
6616                        ),
6617                    );
6618                }
6619                Ok(())
6620            }
6621            #[inline]
6622            fn tokenize_body(&self) -> Self::DataToken<'_> {
6623                (
6624                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6625                        &self.blockCommRoot,
6626                    ),
6627                )
6628            }
6629            #[inline]
6630            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6631                (
6632                    Self::SIGNATURE_HASH.into(),
6633                    self.viewNum.clone(),
6634                    self.blockHeight.clone(),
6635                )
6636            }
6637            #[inline]
6638            fn encode_topics_raw(
6639                &self,
6640                out: &mut [alloy_sol_types::abi::token::WordToken],
6641            ) -> alloy_sol_types::Result<()> {
6642                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6643                    return Err(alloy_sol_types::Error::Overrun);
6644                }
6645                out[0usize] = alloy_sol_types::abi::token::WordToken(
6646                    Self::SIGNATURE_HASH,
6647                );
6648                out[1usize] = <alloy::sol_types::sol_data::Uint<
6649                    64,
6650                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6651                out[2usize] = <alloy::sol_types::sol_data::Uint<
6652                    64,
6653                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6654                Ok(())
6655            }
6656        }
6657        #[automatically_derived]
6658        impl alloy_sol_types::private::IntoLogData for NewState {
6659            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6660                From::from(self)
6661            }
6662            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6663                From::from(&self)
6664            }
6665        }
6666        #[automatically_derived]
6667        impl From<&NewState> for alloy_sol_types::private::LogData {
6668            #[inline]
6669            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6670                alloy_sol_types::SolEvent::encode_log_data(this)
6671            }
6672        }
6673    };
6674    #[derive(serde::Serialize, serde::Deserialize)]
6675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6676    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6677```solidity
6678event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6679```*/
6680    #[allow(
6681        non_camel_case_types,
6682        non_snake_case,
6683        clippy::pub_underscore_fields,
6684        clippy::style
6685    )]
6686    #[derive(Clone)]
6687    pub struct OwnershipTransferred {
6688        #[allow(missing_docs)]
6689        pub previousOwner: alloy::sol_types::private::Address,
6690        #[allow(missing_docs)]
6691        pub newOwner: alloy::sol_types::private::Address,
6692    }
6693    #[allow(
6694        non_camel_case_types,
6695        non_snake_case,
6696        clippy::pub_underscore_fields,
6697        clippy::style
6698    )]
6699    const _: () = {
6700        use alloy::sol_types as alloy_sol_types;
6701        #[automatically_derived]
6702        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6703            type DataTuple<'a> = ();
6704            type DataToken<'a> = <Self::DataTuple<
6705                'a,
6706            > as alloy_sol_types::SolType>::Token<'a>;
6707            type TopicList = (
6708                alloy_sol_types::sol_data::FixedBytes<32>,
6709                alloy::sol_types::sol_data::Address,
6710                alloy::sol_types::sol_data::Address,
6711            );
6712            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6713            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6714                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6715                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6716                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6717            ]);
6718            const ANONYMOUS: bool = false;
6719            #[allow(unused_variables)]
6720            #[inline]
6721            fn new(
6722                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6723                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6724            ) -> Self {
6725                Self {
6726                    previousOwner: topics.1,
6727                    newOwner: topics.2,
6728                }
6729            }
6730            #[inline]
6731            fn check_signature(
6732                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6733            ) -> alloy_sol_types::Result<()> {
6734                if topics.0 != Self::SIGNATURE_HASH {
6735                    return Err(
6736                        alloy_sol_types::Error::invalid_event_signature_hash(
6737                            Self::SIGNATURE,
6738                            topics.0,
6739                            Self::SIGNATURE_HASH,
6740                        ),
6741                    );
6742                }
6743                Ok(())
6744            }
6745            #[inline]
6746            fn tokenize_body(&self) -> Self::DataToken<'_> {
6747                ()
6748            }
6749            #[inline]
6750            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6751                (
6752                    Self::SIGNATURE_HASH.into(),
6753                    self.previousOwner.clone(),
6754                    self.newOwner.clone(),
6755                )
6756            }
6757            #[inline]
6758            fn encode_topics_raw(
6759                &self,
6760                out: &mut [alloy_sol_types::abi::token::WordToken],
6761            ) -> alloy_sol_types::Result<()> {
6762                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6763                    return Err(alloy_sol_types::Error::Overrun);
6764                }
6765                out[0usize] = alloy_sol_types::abi::token::WordToken(
6766                    Self::SIGNATURE_HASH,
6767                );
6768                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6769                    &self.previousOwner,
6770                );
6771                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6772                    &self.newOwner,
6773                );
6774                Ok(())
6775            }
6776        }
6777        #[automatically_derived]
6778        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6779            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6780                From::from(self)
6781            }
6782            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6783                From::from(&self)
6784            }
6785        }
6786        #[automatically_derived]
6787        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6788            #[inline]
6789            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6790                alloy_sol_types::SolEvent::encode_log_data(this)
6791            }
6792        }
6793    };
6794    #[derive(serde::Serialize, serde::Deserialize)]
6795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6796    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6797```solidity
6798event PermissionedProverNotRequired();
6799```*/
6800    #[allow(
6801        non_camel_case_types,
6802        non_snake_case,
6803        clippy::pub_underscore_fields,
6804        clippy::style
6805    )]
6806    #[derive(Clone)]
6807    pub struct PermissionedProverNotRequired;
6808    #[allow(
6809        non_camel_case_types,
6810        non_snake_case,
6811        clippy::pub_underscore_fields,
6812        clippy::style
6813    )]
6814    const _: () = {
6815        use alloy::sol_types as alloy_sol_types;
6816        #[automatically_derived]
6817        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6818            type DataTuple<'a> = ();
6819            type DataToken<'a> = <Self::DataTuple<
6820                'a,
6821            > as alloy_sol_types::SolType>::Token<'a>;
6822            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6823            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6824            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6825                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6826                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6827                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6828            ]);
6829            const ANONYMOUS: bool = false;
6830            #[allow(unused_variables)]
6831            #[inline]
6832            fn new(
6833                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6834                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6835            ) -> Self {
6836                Self {}
6837            }
6838            #[inline]
6839            fn check_signature(
6840                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6841            ) -> alloy_sol_types::Result<()> {
6842                if topics.0 != Self::SIGNATURE_HASH {
6843                    return Err(
6844                        alloy_sol_types::Error::invalid_event_signature_hash(
6845                            Self::SIGNATURE,
6846                            topics.0,
6847                            Self::SIGNATURE_HASH,
6848                        ),
6849                    );
6850                }
6851                Ok(())
6852            }
6853            #[inline]
6854            fn tokenize_body(&self) -> Self::DataToken<'_> {
6855                ()
6856            }
6857            #[inline]
6858            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6859                (Self::SIGNATURE_HASH.into(),)
6860            }
6861            #[inline]
6862            fn encode_topics_raw(
6863                &self,
6864                out: &mut [alloy_sol_types::abi::token::WordToken],
6865            ) -> alloy_sol_types::Result<()> {
6866                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6867                    return Err(alloy_sol_types::Error::Overrun);
6868                }
6869                out[0usize] = alloy_sol_types::abi::token::WordToken(
6870                    Self::SIGNATURE_HASH,
6871                );
6872                Ok(())
6873            }
6874        }
6875        #[automatically_derived]
6876        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6877            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6878                From::from(self)
6879            }
6880            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6881                From::from(&self)
6882            }
6883        }
6884        #[automatically_derived]
6885        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6886            #[inline]
6887            fn from(
6888                this: &PermissionedProverNotRequired,
6889            ) -> alloy_sol_types::private::LogData {
6890                alloy_sol_types::SolEvent::encode_log_data(this)
6891            }
6892        }
6893    };
6894    #[derive(serde::Serialize, serde::Deserialize)]
6895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6896    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6897```solidity
6898event PermissionedProverRequired(address permissionedProver);
6899```*/
6900    #[allow(
6901        non_camel_case_types,
6902        non_snake_case,
6903        clippy::pub_underscore_fields,
6904        clippy::style
6905    )]
6906    #[derive(Clone)]
6907    pub struct PermissionedProverRequired {
6908        #[allow(missing_docs)]
6909        pub permissionedProver: alloy::sol_types::private::Address,
6910    }
6911    #[allow(
6912        non_camel_case_types,
6913        non_snake_case,
6914        clippy::pub_underscore_fields,
6915        clippy::style
6916    )]
6917    const _: () = {
6918        use alloy::sol_types as alloy_sol_types;
6919        #[automatically_derived]
6920        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6921            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6922            type DataToken<'a> = <Self::DataTuple<
6923                'a,
6924            > as alloy_sol_types::SolType>::Token<'a>;
6925            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6926            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6927            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6928                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6929                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6930                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6931            ]);
6932            const ANONYMOUS: bool = false;
6933            #[allow(unused_variables)]
6934            #[inline]
6935            fn new(
6936                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6937                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6938            ) -> Self {
6939                Self { permissionedProver: data.0 }
6940            }
6941            #[inline]
6942            fn check_signature(
6943                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6944            ) -> alloy_sol_types::Result<()> {
6945                if topics.0 != Self::SIGNATURE_HASH {
6946                    return Err(
6947                        alloy_sol_types::Error::invalid_event_signature_hash(
6948                            Self::SIGNATURE,
6949                            topics.0,
6950                            Self::SIGNATURE_HASH,
6951                        ),
6952                    );
6953                }
6954                Ok(())
6955            }
6956            #[inline]
6957            fn tokenize_body(&self) -> Self::DataToken<'_> {
6958                (
6959                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6960                        &self.permissionedProver,
6961                    ),
6962                )
6963            }
6964            #[inline]
6965            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6966                (Self::SIGNATURE_HASH.into(),)
6967            }
6968            #[inline]
6969            fn encode_topics_raw(
6970                &self,
6971                out: &mut [alloy_sol_types::abi::token::WordToken],
6972            ) -> alloy_sol_types::Result<()> {
6973                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6974                    return Err(alloy_sol_types::Error::Overrun);
6975                }
6976                out[0usize] = alloy_sol_types::abi::token::WordToken(
6977                    Self::SIGNATURE_HASH,
6978                );
6979                Ok(())
6980            }
6981        }
6982        #[automatically_derived]
6983        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6984            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6985                From::from(self)
6986            }
6987            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6988                From::from(&self)
6989            }
6990        }
6991        #[automatically_derived]
6992        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6993            #[inline]
6994            fn from(
6995                this: &PermissionedProverRequired,
6996            ) -> alloy_sol_types::private::LogData {
6997                alloy_sol_types::SolEvent::encode_log_data(this)
6998            }
6999        }
7000    };
7001    #[derive(serde::Serialize, serde::Deserialize)]
7002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7003    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7004```solidity
7005event Upgrade(address implementation);
7006```*/
7007    #[allow(
7008        non_camel_case_types,
7009        non_snake_case,
7010        clippy::pub_underscore_fields,
7011        clippy::style
7012    )]
7013    #[derive(Clone)]
7014    pub struct Upgrade {
7015        #[allow(missing_docs)]
7016        pub implementation: alloy::sol_types::private::Address,
7017    }
7018    #[allow(
7019        non_camel_case_types,
7020        non_snake_case,
7021        clippy::pub_underscore_fields,
7022        clippy::style
7023    )]
7024    const _: () = {
7025        use alloy::sol_types as alloy_sol_types;
7026        #[automatically_derived]
7027        impl alloy_sol_types::SolEvent for Upgrade {
7028            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7029            type DataToken<'a> = <Self::DataTuple<
7030                'a,
7031            > as alloy_sol_types::SolType>::Token<'a>;
7032            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7033            const SIGNATURE: &'static str = "Upgrade(address)";
7034            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7035                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7036                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7037                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7038            ]);
7039            const ANONYMOUS: bool = false;
7040            #[allow(unused_variables)]
7041            #[inline]
7042            fn new(
7043                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7044                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7045            ) -> Self {
7046                Self { implementation: data.0 }
7047            }
7048            #[inline]
7049            fn check_signature(
7050                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7051            ) -> alloy_sol_types::Result<()> {
7052                if topics.0 != Self::SIGNATURE_HASH {
7053                    return Err(
7054                        alloy_sol_types::Error::invalid_event_signature_hash(
7055                            Self::SIGNATURE,
7056                            topics.0,
7057                            Self::SIGNATURE_HASH,
7058                        ),
7059                    );
7060                }
7061                Ok(())
7062            }
7063            #[inline]
7064            fn tokenize_body(&self) -> Self::DataToken<'_> {
7065                (
7066                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7067                        &self.implementation,
7068                    ),
7069                )
7070            }
7071            #[inline]
7072            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7073                (Self::SIGNATURE_HASH.into(),)
7074            }
7075            #[inline]
7076            fn encode_topics_raw(
7077                &self,
7078                out: &mut [alloy_sol_types::abi::token::WordToken],
7079            ) -> alloy_sol_types::Result<()> {
7080                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7081                    return Err(alloy_sol_types::Error::Overrun);
7082                }
7083                out[0usize] = alloy_sol_types::abi::token::WordToken(
7084                    Self::SIGNATURE_HASH,
7085                );
7086                Ok(())
7087            }
7088        }
7089        #[automatically_derived]
7090        impl alloy_sol_types::private::IntoLogData for Upgrade {
7091            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7092                From::from(self)
7093            }
7094            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7095                From::from(&self)
7096            }
7097        }
7098        #[automatically_derived]
7099        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7100            #[inline]
7101            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7102                alloy_sol_types::SolEvent::encode_log_data(this)
7103            }
7104        }
7105    };
7106    #[derive(serde::Serialize, serde::Deserialize)]
7107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7108    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7109```solidity
7110event Upgraded(address indexed implementation);
7111```*/
7112    #[allow(
7113        non_camel_case_types,
7114        non_snake_case,
7115        clippy::pub_underscore_fields,
7116        clippy::style
7117    )]
7118    #[derive(Clone)]
7119    pub struct Upgraded {
7120        #[allow(missing_docs)]
7121        pub implementation: alloy::sol_types::private::Address,
7122    }
7123    #[allow(
7124        non_camel_case_types,
7125        non_snake_case,
7126        clippy::pub_underscore_fields,
7127        clippy::style
7128    )]
7129    const _: () = {
7130        use alloy::sol_types as alloy_sol_types;
7131        #[automatically_derived]
7132        impl alloy_sol_types::SolEvent for Upgraded {
7133            type DataTuple<'a> = ();
7134            type DataToken<'a> = <Self::DataTuple<
7135                'a,
7136            > as alloy_sol_types::SolType>::Token<'a>;
7137            type TopicList = (
7138                alloy_sol_types::sol_data::FixedBytes<32>,
7139                alloy::sol_types::sol_data::Address,
7140            );
7141            const SIGNATURE: &'static str = "Upgraded(address)";
7142            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7143                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7144                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7145                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7146            ]);
7147            const ANONYMOUS: bool = false;
7148            #[allow(unused_variables)]
7149            #[inline]
7150            fn new(
7151                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7152                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7153            ) -> Self {
7154                Self { implementation: topics.1 }
7155            }
7156            #[inline]
7157            fn check_signature(
7158                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7159            ) -> alloy_sol_types::Result<()> {
7160                if topics.0 != Self::SIGNATURE_HASH {
7161                    return Err(
7162                        alloy_sol_types::Error::invalid_event_signature_hash(
7163                            Self::SIGNATURE,
7164                            topics.0,
7165                            Self::SIGNATURE_HASH,
7166                        ),
7167                    );
7168                }
7169                Ok(())
7170            }
7171            #[inline]
7172            fn tokenize_body(&self) -> Self::DataToken<'_> {
7173                ()
7174            }
7175            #[inline]
7176            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7177                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7178            }
7179            #[inline]
7180            fn encode_topics_raw(
7181                &self,
7182                out: &mut [alloy_sol_types::abi::token::WordToken],
7183            ) -> alloy_sol_types::Result<()> {
7184                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7185                    return Err(alloy_sol_types::Error::Overrun);
7186                }
7187                out[0usize] = alloy_sol_types::abi::token::WordToken(
7188                    Self::SIGNATURE_HASH,
7189                );
7190                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7191                    &self.implementation,
7192                );
7193                Ok(())
7194            }
7195        }
7196        #[automatically_derived]
7197        impl alloy_sol_types::private::IntoLogData for Upgraded {
7198            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7199                From::from(self)
7200            }
7201            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7202                From::from(&self)
7203            }
7204        }
7205        #[automatically_derived]
7206        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7207            #[inline]
7208            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7209                alloy_sol_types::SolEvent::encode_log_data(this)
7210            }
7211        }
7212    };
7213    #[derive(serde::Serialize, serde::Deserialize)]
7214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7215    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7216```solidity
7217function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7218```*/
7219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7220    #[derive(Clone)]
7221    pub struct UPGRADE_INTERFACE_VERSIONCall;
7222    #[derive(serde::Serialize, serde::Deserialize)]
7223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7224    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7225    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7226    #[derive(Clone)]
7227    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7228        #[allow(missing_docs)]
7229        pub _0: alloy::sol_types::private::String,
7230    }
7231    #[allow(
7232        non_camel_case_types,
7233        non_snake_case,
7234        clippy::pub_underscore_fields,
7235        clippy::style
7236    )]
7237    const _: () = {
7238        use alloy::sol_types as alloy_sol_types;
7239        {
7240            #[doc(hidden)]
7241            #[allow(dead_code)]
7242            type UnderlyingSolTuple<'a> = ();
7243            #[doc(hidden)]
7244            type UnderlyingRustTuple<'a> = ();
7245            #[cfg(test)]
7246            #[allow(dead_code, unreachable_patterns)]
7247            fn _type_assertion(
7248                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7249            ) {
7250                match _t {
7251                    alloy_sol_types::private::AssertTypeEq::<
7252                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7253                    >(_) => {}
7254                }
7255            }
7256            #[automatically_derived]
7257            #[doc(hidden)]
7258            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7259            for UnderlyingRustTuple<'_> {
7260                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7261                    ()
7262                }
7263            }
7264            #[automatically_derived]
7265            #[doc(hidden)]
7266            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7267            for UPGRADE_INTERFACE_VERSIONCall {
7268                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7269                    Self
7270                }
7271            }
7272        }
7273        {
7274            #[doc(hidden)]
7275            #[allow(dead_code)]
7276            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7277            #[doc(hidden)]
7278            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7279            #[cfg(test)]
7280            #[allow(dead_code, unreachable_patterns)]
7281            fn _type_assertion(
7282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7283            ) {
7284                match _t {
7285                    alloy_sol_types::private::AssertTypeEq::<
7286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7287                    >(_) => {}
7288                }
7289            }
7290            #[automatically_derived]
7291            #[doc(hidden)]
7292            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7293            for UnderlyingRustTuple<'_> {
7294                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7295                    (value._0,)
7296                }
7297            }
7298            #[automatically_derived]
7299            #[doc(hidden)]
7300            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7301            for UPGRADE_INTERFACE_VERSIONReturn {
7302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7303                    Self { _0: tuple.0 }
7304                }
7305            }
7306        }
7307        #[automatically_derived]
7308        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7309            type Parameters<'a> = ();
7310            type Token<'a> = <Self::Parameters<
7311                'a,
7312            > as alloy_sol_types::SolType>::Token<'a>;
7313            type Return = alloy::sol_types::private::String;
7314            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7315            type ReturnToken<'a> = <Self::ReturnTuple<
7316                'a,
7317            > as alloy_sol_types::SolType>::Token<'a>;
7318            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7319            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7320            #[inline]
7321            fn new<'a>(
7322                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7323            ) -> Self {
7324                tuple.into()
7325            }
7326            #[inline]
7327            fn tokenize(&self) -> Self::Token<'_> {
7328                ()
7329            }
7330            #[inline]
7331            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7332                (
7333                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7334                        ret,
7335                    ),
7336                )
7337            }
7338            #[inline]
7339            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7340                <Self::ReturnTuple<
7341                    '_,
7342                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7343                    .map(|r| {
7344                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7345                        r._0
7346                    })
7347            }
7348            #[inline]
7349            fn abi_decode_returns_with_config(
7350                data: &[u8],
7351                config: alloy_sol_types::abi::AbiDecoderConfig,
7352            ) -> alloy_sol_types::Result<Self::Return> {
7353                <Self::ReturnTuple<
7354                    '_,
7355                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7356                        data,
7357                        config,
7358                    )
7359                    .map(|r| {
7360                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7361                        r._0
7362                    })
7363            }
7364            #[inline]
7365            fn abi_decode_returns_validate(
7366                data: &[u8],
7367            ) -> alloy_sol_types::Result<Self::Return> {
7368                Self::abi_decode_returns_with_config(
7369                    data,
7370                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7371                )
7372            }
7373        }
7374    };
7375    #[derive(serde::Serialize, serde::Deserialize)]
7376    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7377    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7378```solidity
7379function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7380```*/
7381    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7382    #[derive(Clone)]
7383    pub struct _getVkCall;
7384    #[derive(serde::Serialize, serde::Deserialize)]
7385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7386    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7388    #[derive(Clone)]
7389    pub struct _getVkReturn {
7390        #[allow(missing_docs)]
7391        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7392    }
7393    #[allow(
7394        non_camel_case_types,
7395        non_snake_case,
7396        clippy::pub_underscore_fields,
7397        clippy::style
7398    )]
7399    const _: () = {
7400        use alloy::sol_types as alloy_sol_types;
7401        {
7402            #[doc(hidden)]
7403            #[allow(dead_code)]
7404            type UnderlyingSolTuple<'a> = ();
7405            #[doc(hidden)]
7406            type UnderlyingRustTuple<'a> = ();
7407            #[cfg(test)]
7408            #[allow(dead_code, unreachable_patterns)]
7409            fn _type_assertion(
7410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7411            ) {
7412                match _t {
7413                    alloy_sol_types::private::AssertTypeEq::<
7414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7415                    >(_) => {}
7416                }
7417            }
7418            #[automatically_derived]
7419            #[doc(hidden)]
7420            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7421                fn from(value: _getVkCall) -> Self {
7422                    ()
7423                }
7424            }
7425            #[automatically_derived]
7426            #[doc(hidden)]
7427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7429                    Self
7430                }
7431            }
7432        }
7433        {
7434            #[doc(hidden)]
7435            #[allow(dead_code)]
7436            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7437            #[doc(hidden)]
7438            type UnderlyingRustTuple<'a> = (
7439                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7440            );
7441            #[cfg(test)]
7442            #[allow(dead_code, unreachable_patterns)]
7443            fn _type_assertion(
7444                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7445            ) {
7446                match _t {
7447                    alloy_sol_types::private::AssertTypeEq::<
7448                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7449                    >(_) => {}
7450                }
7451            }
7452            #[automatically_derived]
7453            #[doc(hidden)]
7454            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7455                fn from(value: _getVkReturn) -> Self {
7456                    (value.vk,)
7457                }
7458            }
7459            #[automatically_derived]
7460            #[doc(hidden)]
7461            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7462                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7463                    Self { vk: tuple.0 }
7464                }
7465            }
7466        }
7467        #[automatically_derived]
7468        impl alloy_sol_types::SolCall for _getVkCall {
7469            type Parameters<'a> = ();
7470            type Token<'a> = <Self::Parameters<
7471                'a,
7472            > as alloy_sol_types::SolType>::Token<'a>;
7473            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7474            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7475            type ReturnToken<'a> = <Self::ReturnTuple<
7476                'a,
7477            > as alloy_sol_types::SolType>::Token<'a>;
7478            const SIGNATURE: &'static str = "_getVk()";
7479            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7480            #[inline]
7481            fn new<'a>(
7482                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7483            ) -> Self {
7484                tuple.into()
7485            }
7486            #[inline]
7487            fn tokenize(&self) -> Self::Token<'_> {
7488                ()
7489            }
7490            #[inline]
7491            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7492                (
7493                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7494                        ret,
7495                    ),
7496                )
7497            }
7498            #[inline]
7499            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7500                <Self::ReturnTuple<
7501                    '_,
7502                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7503                    .map(|r| {
7504                        let r: _getVkReturn = r.into();
7505                        r.vk
7506                    })
7507            }
7508            #[inline]
7509            fn abi_decode_returns_with_config(
7510                data: &[u8],
7511                config: alloy_sol_types::abi::AbiDecoderConfig,
7512            ) -> alloy_sol_types::Result<Self::Return> {
7513                <Self::ReturnTuple<
7514                    '_,
7515                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7516                        data,
7517                        config,
7518                    )
7519                    .map(|r| {
7520                        let r: _getVkReturn = r.into();
7521                        r.vk
7522                    })
7523            }
7524            #[inline]
7525            fn abi_decode_returns_validate(
7526                data: &[u8],
7527            ) -> alloy_sol_types::Result<Self::Return> {
7528                Self::abi_decode_returns_with_config(
7529                    data,
7530                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7531                )
7532            }
7533        }
7534    };
7535    #[derive(serde::Serialize, serde::Deserialize)]
7536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7537    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7538```solidity
7539function currentBlockNumber() external view returns (uint256);
7540```*/
7541    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7542    #[derive(Clone)]
7543    pub struct currentBlockNumberCall;
7544    #[derive(serde::Serialize, serde::Deserialize)]
7545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7546    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7547    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7548    #[derive(Clone)]
7549    pub struct currentBlockNumberReturn {
7550        #[allow(missing_docs)]
7551        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7552    }
7553    #[allow(
7554        non_camel_case_types,
7555        non_snake_case,
7556        clippy::pub_underscore_fields,
7557        clippy::style
7558    )]
7559    const _: () = {
7560        use alloy::sol_types as alloy_sol_types;
7561        {
7562            #[doc(hidden)]
7563            #[allow(dead_code)]
7564            type UnderlyingSolTuple<'a> = ();
7565            #[doc(hidden)]
7566            type UnderlyingRustTuple<'a> = ();
7567            #[cfg(test)]
7568            #[allow(dead_code, unreachable_patterns)]
7569            fn _type_assertion(
7570                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7571            ) {
7572                match _t {
7573                    alloy_sol_types::private::AssertTypeEq::<
7574                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7575                    >(_) => {}
7576                }
7577            }
7578            #[automatically_derived]
7579            #[doc(hidden)]
7580            impl ::core::convert::From<currentBlockNumberCall>
7581            for UnderlyingRustTuple<'_> {
7582                fn from(value: currentBlockNumberCall) -> Self {
7583                    ()
7584                }
7585            }
7586            #[automatically_derived]
7587            #[doc(hidden)]
7588            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7589            for currentBlockNumberCall {
7590                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7591                    Self
7592                }
7593            }
7594        }
7595        {
7596            #[doc(hidden)]
7597            #[allow(dead_code)]
7598            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7599            #[doc(hidden)]
7600            type UnderlyingRustTuple<'a> = (
7601                alloy::sol_types::private::primitives::aliases::U256,
7602            );
7603            #[cfg(test)]
7604            #[allow(dead_code, unreachable_patterns)]
7605            fn _type_assertion(
7606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7607            ) {
7608                match _t {
7609                    alloy_sol_types::private::AssertTypeEq::<
7610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7611                    >(_) => {}
7612                }
7613            }
7614            #[automatically_derived]
7615            #[doc(hidden)]
7616            impl ::core::convert::From<currentBlockNumberReturn>
7617            for UnderlyingRustTuple<'_> {
7618                fn from(value: currentBlockNumberReturn) -> Self {
7619                    (value._0,)
7620                }
7621            }
7622            #[automatically_derived]
7623            #[doc(hidden)]
7624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7625            for currentBlockNumberReturn {
7626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7627                    Self { _0: tuple.0 }
7628                }
7629            }
7630        }
7631        #[automatically_derived]
7632        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7633            type Parameters<'a> = ();
7634            type Token<'a> = <Self::Parameters<
7635                'a,
7636            > as alloy_sol_types::SolType>::Token<'a>;
7637            type Return = alloy::sol_types::private::primitives::aliases::U256;
7638            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7639            type ReturnToken<'a> = <Self::ReturnTuple<
7640                'a,
7641            > as alloy_sol_types::SolType>::Token<'a>;
7642            const SIGNATURE: &'static str = "currentBlockNumber()";
7643            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7644            #[inline]
7645            fn new<'a>(
7646                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7647            ) -> Self {
7648                tuple.into()
7649            }
7650            #[inline]
7651            fn tokenize(&self) -> Self::Token<'_> {
7652                ()
7653            }
7654            #[inline]
7655            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7656                (
7657                    <alloy::sol_types::sol_data::Uint<
7658                        256,
7659                    > as alloy_sol_types::SolType>::tokenize(ret),
7660                )
7661            }
7662            #[inline]
7663            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7664                <Self::ReturnTuple<
7665                    '_,
7666                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7667                    .map(|r| {
7668                        let r: currentBlockNumberReturn = r.into();
7669                        r._0
7670                    })
7671            }
7672            #[inline]
7673            fn abi_decode_returns_with_config(
7674                data: &[u8],
7675                config: alloy_sol_types::abi::AbiDecoderConfig,
7676            ) -> alloy_sol_types::Result<Self::Return> {
7677                <Self::ReturnTuple<
7678                    '_,
7679                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7680                        data,
7681                        config,
7682                    )
7683                    .map(|r| {
7684                        let r: currentBlockNumberReturn = r.into();
7685                        r._0
7686                    })
7687            }
7688            #[inline]
7689            fn abi_decode_returns_validate(
7690                data: &[u8],
7691            ) -> alloy_sol_types::Result<Self::Return> {
7692                Self::abi_decode_returns_with_config(
7693                    data,
7694                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7695                )
7696            }
7697        }
7698    };
7699    #[derive(serde::Serialize, serde::Deserialize)]
7700    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7701    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7702```solidity
7703function disablePermissionedProverMode() external;
7704```*/
7705    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7706    #[derive(Clone)]
7707    pub struct disablePermissionedProverModeCall;
7708    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7710    #[derive(Clone)]
7711    pub struct disablePermissionedProverModeReturn {}
7712    #[allow(
7713        non_camel_case_types,
7714        non_snake_case,
7715        clippy::pub_underscore_fields,
7716        clippy::style
7717    )]
7718    const _: () = {
7719        use alloy::sol_types as alloy_sol_types;
7720        {
7721            #[doc(hidden)]
7722            #[allow(dead_code)]
7723            type UnderlyingSolTuple<'a> = ();
7724            #[doc(hidden)]
7725            type UnderlyingRustTuple<'a> = ();
7726            #[cfg(test)]
7727            #[allow(dead_code, unreachable_patterns)]
7728            fn _type_assertion(
7729                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7730            ) {
7731                match _t {
7732                    alloy_sol_types::private::AssertTypeEq::<
7733                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7734                    >(_) => {}
7735                }
7736            }
7737            #[automatically_derived]
7738            #[doc(hidden)]
7739            impl ::core::convert::From<disablePermissionedProverModeCall>
7740            for UnderlyingRustTuple<'_> {
7741                fn from(value: disablePermissionedProverModeCall) -> Self {
7742                    ()
7743                }
7744            }
7745            #[automatically_derived]
7746            #[doc(hidden)]
7747            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7748            for disablePermissionedProverModeCall {
7749                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7750                    Self
7751                }
7752            }
7753        }
7754        {
7755            #[doc(hidden)]
7756            #[allow(dead_code)]
7757            type UnderlyingSolTuple<'a> = ();
7758            #[doc(hidden)]
7759            type UnderlyingRustTuple<'a> = ();
7760            #[cfg(test)]
7761            #[allow(dead_code, unreachable_patterns)]
7762            fn _type_assertion(
7763                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7764            ) {
7765                match _t {
7766                    alloy_sol_types::private::AssertTypeEq::<
7767                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7768                    >(_) => {}
7769                }
7770            }
7771            #[automatically_derived]
7772            #[doc(hidden)]
7773            impl ::core::convert::From<disablePermissionedProverModeReturn>
7774            for UnderlyingRustTuple<'_> {
7775                fn from(value: disablePermissionedProverModeReturn) -> Self {
7776                    ()
7777                }
7778            }
7779            #[automatically_derived]
7780            #[doc(hidden)]
7781            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7782            for disablePermissionedProverModeReturn {
7783                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7784                    Self {}
7785                }
7786            }
7787        }
7788        impl disablePermissionedProverModeReturn {
7789            fn _tokenize(
7790                &self,
7791            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7792                '_,
7793            > {
7794                ()
7795            }
7796        }
7797        #[automatically_derived]
7798        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7799            type Parameters<'a> = ();
7800            type Token<'a> = <Self::Parameters<
7801                'a,
7802            > as alloy_sol_types::SolType>::Token<'a>;
7803            type Return = disablePermissionedProverModeReturn;
7804            type ReturnTuple<'a> = ();
7805            type ReturnToken<'a> = <Self::ReturnTuple<
7806                'a,
7807            > as alloy_sol_types::SolType>::Token<'a>;
7808            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7809            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7810            #[inline]
7811            fn new<'a>(
7812                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7813            ) -> Self {
7814                tuple.into()
7815            }
7816            #[inline]
7817            fn tokenize(&self) -> Self::Token<'_> {
7818                ()
7819            }
7820            #[inline]
7821            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7822                disablePermissionedProverModeReturn::_tokenize(ret)
7823            }
7824            #[inline]
7825            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7826                <Self::ReturnTuple<
7827                    '_,
7828                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7829                    .map(Into::into)
7830            }
7831            #[inline]
7832            fn abi_decode_returns_with_config(
7833                data: &[u8],
7834                config: alloy_sol_types::abi::AbiDecoderConfig,
7835            ) -> alloy_sol_types::Result<Self::Return> {
7836                <Self::ReturnTuple<
7837                    '_,
7838                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7839                        data,
7840                        config,
7841                    )
7842                    .map(Into::into)
7843            }
7844            #[inline]
7845            fn abi_decode_returns_validate(
7846                data: &[u8],
7847            ) -> alloy_sol_types::Result<Self::Return> {
7848                Self::abi_decode_returns_with_config(
7849                    data,
7850                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7851                )
7852            }
7853        }
7854    };
7855    #[derive(serde::Serialize, serde::Deserialize)]
7856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7857    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7858```solidity
7859function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7860```*/
7861    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7862    #[derive(Clone)]
7863    pub struct finalizedStateCall;
7864    #[derive(serde::Serialize, serde::Deserialize)]
7865    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7866    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7868    #[derive(Clone)]
7869    pub struct finalizedStateReturn {
7870        #[allow(missing_docs)]
7871        pub viewNum: u64,
7872        #[allow(missing_docs)]
7873        pub blockHeight: u64,
7874        #[allow(missing_docs)]
7875        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7876    }
7877    #[allow(
7878        non_camel_case_types,
7879        non_snake_case,
7880        clippy::pub_underscore_fields,
7881        clippy::style
7882    )]
7883    const _: () = {
7884        use alloy::sol_types as alloy_sol_types;
7885        {
7886            #[doc(hidden)]
7887            #[allow(dead_code)]
7888            type UnderlyingSolTuple<'a> = ();
7889            #[doc(hidden)]
7890            type UnderlyingRustTuple<'a> = ();
7891            #[cfg(test)]
7892            #[allow(dead_code, unreachable_patterns)]
7893            fn _type_assertion(
7894                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7895            ) {
7896                match _t {
7897                    alloy_sol_types::private::AssertTypeEq::<
7898                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7899                    >(_) => {}
7900                }
7901            }
7902            #[automatically_derived]
7903            #[doc(hidden)]
7904            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7905                fn from(value: finalizedStateCall) -> Self {
7906                    ()
7907                }
7908            }
7909            #[automatically_derived]
7910            #[doc(hidden)]
7911            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7912                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7913                    Self
7914                }
7915            }
7916        }
7917        {
7918            #[doc(hidden)]
7919            #[allow(dead_code)]
7920            type UnderlyingSolTuple<'a> = (
7921                alloy::sol_types::sol_data::Uint<64>,
7922                alloy::sol_types::sol_data::Uint<64>,
7923                BN254::ScalarField,
7924            );
7925            #[doc(hidden)]
7926            type UnderlyingRustTuple<'a> = (
7927                u64,
7928                u64,
7929                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7930            );
7931            #[cfg(test)]
7932            #[allow(dead_code, unreachable_patterns)]
7933            fn _type_assertion(
7934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7935            ) {
7936                match _t {
7937                    alloy_sol_types::private::AssertTypeEq::<
7938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7939                    >(_) => {}
7940                }
7941            }
7942            #[automatically_derived]
7943            #[doc(hidden)]
7944            impl ::core::convert::From<finalizedStateReturn>
7945            for UnderlyingRustTuple<'_> {
7946                fn from(value: finalizedStateReturn) -> Self {
7947                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7948                }
7949            }
7950            #[automatically_derived]
7951            #[doc(hidden)]
7952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7953            for finalizedStateReturn {
7954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7955                    Self {
7956                        viewNum: tuple.0,
7957                        blockHeight: tuple.1,
7958                        blockCommRoot: tuple.2,
7959                    }
7960                }
7961            }
7962        }
7963        impl finalizedStateReturn {
7964            fn _tokenize(
7965                &self,
7966            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7967                (
7968                    <alloy::sol_types::sol_data::Uint<
7969                        64,
7970                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7971                    <alloy::sol_types::sol_data::Uint<
7972                        64,
7973                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7974                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7975                        &self.blockCommRoot,
7976                    ),
7977                )
7978            }
7979        }
7980        #[automatically_derived]
7981        impl alloy_sol_types::SolCall for finalizedStateCall {
7982            type Parameters<'a> = ();
7983            type Token<'a> = <Self::Parameters<
7984                'a,
7985            > as alloy_sol_types::SolType>::Token<'a>;
7986            type Return = finalizedStateReturn;
7987            type ReturnTuple<'a> = (
7988                alloy::sol_types::sol_data::Uint<64>,
7989                alloy::sol_types::sol_data::Uint<64>,
7990                BN254::ScalarField,
7991            );
7992            type ReturnToken<'a> = <Self::ReturnTuple<
7993                'a,
7994            > as alloy_sol_types::SolType>::Token<'a>;
7995            const SIGNATURE: &'static str = "finalizedState()";
7996            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7997            #[inline]
7998            fn new<'a>(
7999                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8000            ) -> Self {
8001                tuple.into()
8002            }
8003            #[inline]
8004            fn tokenize(&self) -> Self::Token<'_> {
8005                ()
8006            }
8007            #[inline]
8008            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8009                finalizedStateReturn::_tokenize(ret)
8010            }
8011            #[inline]
8012            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8013                <Self::ReturnTuple<
8014                    '_,
8015                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8016                    .map(Into::into)
8017            }
8018            #[inline]
8019            fn abi_decode_returns_with_config(
8020                data: &[u8],
8021                config: alloy_sol_types::abi::AbiDecoderConfig,
8022            ) -> alloy_sol_types::Result<Self::Return> {
8023                <Self::ReturnTuple<
8024                    '_,
8025                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8026                        data,
8027                        config,
8028                    )
8029                    .map(Into::into)
8030            }
8031            #[inline]
8032            fn abi_decode_returns_validate(
8033                data: &[u8],
8034            ) -> alloy_sol_types::Result<Self::Return> {
8035                Self::abi_decode_returns_with_config(
8036                    data,
8037                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8038                )
8039            }
8040        }
8041    };
8042    #[derive(serde::Serialize, serde::Deserialize)]
8043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8044    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8045```solidity
8046function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8047```*/
8048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8049    #[derive(Clone)]
8050    pub struct genesisStakeTableStateCall;
8051    #[derive(serde::Serialize, serde::Deserialize)]
8052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8053    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8055    #[derive(Clone)]
8056    pub struct genesisStakeTableStateReturn {
8057        #[allow(missing_docs)]
8058        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8059        #[allow(missing_docs)]
8060        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8061        #[allow(missing_docs)]
8062        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8063        #[allow(missing_docs)]
8064        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8065    }
8066    #[allow(
8067        non_camel_case_types,
8068        non_snake_case,
8069        clippy::pub_underscore_fields,
8070        clippy::style
8071    )]
8072    const _: () = {
8073        use alloy::sol_types as alloy_sol_types;
8074        {
8075            #[doc(hidden)]
8076            #[allow(dead_code)]
8077            type UnderlyingSolTuple<'a> = ();
8078            #[doc(hidden)]
8079            type UnderlyingRustTuple<'a> = ();
8080            #[cfg(test)]
8081            #[allow(dead_code, unreachable_patterns)]
8082            fn _type_assertion(
8083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8084            ) {
8085                match _t {
8086                    alloy_sol_types::private::AssertTypeEq::<
8087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8088                    >(_) => {}
8089                }
8090            }
8091            #[automatically_derived]
8092            #[doc(hidden)]
8093            impl ::core::convert::From<genesisStakeTableStateCall>
8094            for UnderlyingRustTuple<'_> {
8095                fn from(value: genesisStakeTableStateCall) -> Self {
8096                    ()
8097                }
8098            }
8099            #[automatically_derived]
8100            #[doc(hidden)]
8101            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8102            for genesisStakeTableStateCall {
8103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8104                    Self
8105                }
8106            }
8107        }
8108        {
8109            #[doc(hidden)]
8110            #[allow(dead_code)]
8111            type UnderlyingSolTuple<'a> = (
8112                alloy::sol_types::sol_data::Uint<256>,
8113                BN254::ScalarField,
8114                BN254::ScalarField,
8115                BN254::ScalarField,
8116            );
8117            #[doc(hidden)]
8118            type UnderlyingRustTuple<'a> = (
8119                alloy::sol_types::private::primitives::aliases::U256,
8120                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8121                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8122                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8123            );
8124            #[cfg(test)]
8125            #[allow(dead_code, unreachable_patterns)]
8126            fn _type_assertion(
8127                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8128            ) {
8129                match _t {
8130                    alloy_sol_types::private::AssertTypeEq::<
8131                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8132                    >(_) => {}
8133                }
8134            }
8135            #[automatically_derived]
8136            #[doc(hidden)]
8137            impl ::core::convert::From<genesisStakeTableStateReturn>
8138            for UnderlyingRustTuple<'_> {
8139                fn from(value: genesisStakeTableStateReturn) -> Self {
8140                    (
8141                        value.threshold,
8142                        value.blsKeyComm,
8143                        value.schnorrKeyComm,
8144                        value.amountComm,
8145                    )
8146                }
8147            }
8148            #[automatically_derived]
8149            #[doc(hidden)]
8150            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8151            for genesisStakeTableStateReturn {
8152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8153                    Self {
8154                        threshold: tuple.0,
8155                        blsKeyComm: tuple.1,
8156                        schnorrKeyComm: tuple.2,
8157                        amountComm: tuple.3,
8158                    }
8159                }
8160            }
8161        }
8162        impl genesisStakeTableStateReturn {
8163            fn _tokenize(
8164                &self,
8165            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
8166                '_,
8167            > {
8168                (
8169                    <alloy::sol_types::sol_data::Uint<
8170                        256,
8171                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
8172                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8173                        &self.blsKeyComm,
8174                    ),
8175                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8176                        &self.schnorrKeyComm,
8177                    ),
8178                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8179                        &self.amountComm,
8180                    ),
8181                )
8182            }
8183        }
8184        #[automatically_derived]
8185        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8186            type Parameters<'a> = ();
8187            type Token<'a> = <Self::Parameters<
8188                'a,
8189            > as alloy_sol_types::SolType>::Token<'a>;
8190            type Return = genesisStakeTableStateReturn;
8191            type ReturnTuple<'a> = (
8192                alloy::sol_types::sol_data::Uint<256>,
8193                BN254::ScalarField,
8194                BN254::ScalarField,
8195                BN254::ScalarField,
8196            );
8197            type ReturnToken<'a> = <Self::ReturnTuple<
8198                'a,
8199            > as alloy_sol_types::SolType>::Token<'a>;
8200            const SIGNATURE: &'static str = "genesisStakeTableState()";
8201            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8202            #[inline]
8203            fn new<'a>(
8204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8205            ) -> Self {
8206                tuple.into()
8207            }
8208            #[inline]
8209            fn tokenize(&self) -> Self::Token<'_> {
8210                ()
8211            }
8212            #[inline]
8213            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8214                genesisStakeTableStateReturn::_tokenize(ret)
8215            }
8216            #[inline]
8217            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8218                <Self::ReturnTuple<
8219                    '_,
8220                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8221                    .map(Into::into)
8222            }
8223            #[inline]
8224            fn abi_decode_returns_with_config(
8225                data: &[u8],
8226                config: alloy_sol_types::abi::AbiDecoderConfig,
8227            ) -> alloy_sol_types::Result<Self::Return> {
8228                <Self::ReturnTuple<
8229                    '_,
8230                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8231                        data,
8232                        config,
8233                    )
8234                    .map(Into::into)
8235            }
8236            #[inline]
8237            fn abi_decode_returns_validate(
8238                data: &[u8],
8239            ) -> alloy_sol_types::Result<Self::Return> {
8240                Self::abi_decode_returns_with_config(
8241                    data,
8242                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8243                )
8244            }
8245        }
8246    };
8247    #[derive(serde::Serialize, serde::Deserialize)]
8248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8249    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8250```solidity
8251function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8252```*/
8253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8254    #[derive(Clone)]
8255    pub struct genesisStateCall;
8256    #[derive(serde::Serialize, serde::Deserialize)]
8257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8258    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8260    #[derive(Clone)]
8261    pub struct genesisStateReturn {
8262        #[allow(missing_docs)]
8263        pub viewNum: u64,
8264        #[allow(missing_docs)]
8265        pub blockHeight: u64,
8266        #[allow(missing_docs)]
8267        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8268    }
8269    #[allow(
8270        non_camel_case_types,
8271        non_snake_case,
8272        clippy::pub_underscore_fields,
8273        clippy::style
8274    )]
8275    const _: () = {
8276        use alloy::sol_types as alloy_sol_types;
8277        {
8278            #[doc(hidden)]
8279            #[allow(dead_code)]
8280            type UnderlyingSolTuple<'a> = ();
8281            #[doc(hidden)]
8282            type UnderlyingRustTuple<'a> = ();
8283            #[cfg(test)]
8284            #[allow(dead_code, unreachable_patterns)]
8285            fn _type_assertion(
8286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8287            ) {
8288                match _t {
8289                    alloy_sol_types::private::AssertTypeEq::<
8290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8291                    >(_) => {}
8292                }
8293            }
8294            #[automatically_derived]
8295            #[doc(hidden)]
8296            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8297                fn from(value: genesisStateCall) -> Self {
8298                    ()
8299                }
8300            }
8301            #[automatically_derived]
8302            #[doc(hidden)]
8303            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8304                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8305                    Self
8306                }
8307            }
8308        }
8309        {
8310            #[doc(hidden)]
8311            #[allow(dead_code)]
8312            type UnderlyingSolTuple<'a> = (
8313                alloy::sol_types::sol_data::Uint<64>,
8314                alloy::sol_types::sol_data::Uint<64>,
8315                BN254::ScalarField,
8316            );
8317            #[doc(hidden)]
8318            type UnderlyingRustTuple<'a> = (
8319                u64,
8320                u64,
8321                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8322            );
8323            #[cfg(test)]
8324            #[allow(dead_code, unreachable_patterns)]
8325            fn _type_assertion(
8326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8327            ) {
8328                match _t {
8329                    alloy_sol_types::private::AssertTypeEq::<
8330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8331                    >(_) => {}
8332                }
8333            }
8334            #[automatically_derived]
8335            #[doc(hidden)]
8336            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8337                fn from(value: genesisStateReturn) -> Self {
8338                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8339                }
8340            }
8341            #[automatically_derived]
8342            #[doc(hidden)]
8343            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8345                    Self {
8346                        viewNum: tuple.0,
8347                        blockHeight: tuple.1,
8348                        blockCommRoot: tuple.2,
8349                    }
8350                }
8351            }
8352        }
8353        impl genesisStateReturn {
8354            fn _tokenize(
8355                &self,
8356            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8357                (
8358                    <alloy::sol_types::sol_data::Uint<
8359                        64,
8360                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8361                    <alloy::sol_types::sol_data::Uint<
8362                        64,
8363                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8364                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8365                        &self.blockCommRoot,
8366                    ),
8367                )
8368            }
8369        }
8370        #[automatically_derived]
8371        impl alloy_sol_types::SolCall for genesisStateCall {
8372            type Parameters<'a> = ();
8373            type Token<'a> = <Self::Parameters<
8374                'a,
8375            > as alloy_sol_types::SolType>::Token<'a>;
8376            type Return = genesisStateReturn;
8377            type ReturnTuple<'a> = (
8378                alloy::sol_types::sol_data::Uint<64>,
8379                alloy::sol_types::sol_data::Uint<64>,
8380                BN254::ScalarField,
8381            );
8382            type ReturnToken<'a> = <Self::ReturnTuple<
8383                'a,
8384            > as alloy_sol_types::SolType>::Token<'a>;
8385            const SIGNATURE: &'static str = "genesisState()";
8386            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8387            #[inline]
8388            fn new<'a>(
8389                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8390            ) -> Self {
8391                tuple.into()
8392            }
8393            #[inline]
8394            fn tokenize(&self) -> Self::Token<'_> {
8395                ()
8396            }
8397            #[inline]
8398            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8399                genesisStateReturn::_tokenize(ret)
8400            }
8401            #[inline]
8402            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8403                <Self::ReturnTuple<
8404                    '_,
8405                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8406                    .map(Into::into)
8407            }
8408            #[inline]
8409            fn abi_decode_returns_with_config(
8410                data: &[u8],
8411                config: alloy_sol_types::abi::AbiDecoderConfig,
8412            ) -> alloy_sol_types::Result<Self::Return> {
8413                <Self::ReturnTuple<
8414                    '_,
8415                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8416                        data,
8417                        config,
8418                    )
8419                    .map(Into::into)
8420            }
8421            #[inline]
8422            fn abi_decode_returns_validate(
8423                data: &[u8],
8424            ) -> alloy_sol_types::Result<Self::Return> {
8425                Self::abi_decode_returns_with_config(
8426                    data,
8427                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8428                )
8429            }
8430        }
8431    };
8432    #[derive(serde::Serialize, serde::Deserialize)]
8433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8434    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8435```solidity
8436function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8437```*/
8438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8439    #[derive(Clone)]
8440    pub struct getHotShotCommitmentCall {
8441        #[allow(missing_docs)]
8442        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8443    }
8444    #[derive(serde::Serialize, serde::Deserialize)]
8445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8446    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8448    #[derive(Clone)]
8449    pub struct getHotShotCommitmentReturn {
8450        #[allow(missing_docs)]
8451        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8452        #[allow(missing_docs)]
8453        pub hotshotBlockHeight: u64,
8454    }
8455    #[allow(
8456        non_camel_case_types,
8457        non_snake_case,
8458        clippy::pub_underscore_fields,
8459        clippy::style
8460    )]
8461    const _: () = {
8462        use alloy::sol_types as alloy_sol_types;
8463        {
8464            #[doc(hidden)]
8465            #[allow(dead_code)]
8466            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8467            #[doc(hidden)]
8468            type UnderlyingRustTuple<'a> = (
8469                alloy::sol_types::private::primitives::aliases::U256,
8470            );
8471            #[cfg(test)]
8472            #[allow(dead_code, unreachable_patterns)]
8473            fn _type_assertion(
8474                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8475            ) {
8476                match _t {
8477                    alloy_sol_types::private::AssertTypeEq::<
8478                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8479                    >(_) => {}
8480                }
8481            }
8482            #[automatically_derived]
8483            #[doc(hidden)]
8484            impl ::core::convert::From<getHotShotCommitmentCall>
8485            for UnderlyingRustTuple<'_> {
8486                fn from(value: getHotShotCommitmentCall) -> Self {
8487                    (value.hotShotBlockHeight,)
8488                }
8489            }
8490            #[automatically_derived]
8491            #[doc(hidden)]
8492            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8493            for getHotShotCommitmentCall {
8494                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8495                    Self {
8496                        hotShotBlockHeight: tuple.0,
8497                    }
8498                }
8499            }
8500        }
8501        {
8502            #[doc(hidden)]
8503            #[allow(dead_code)]
8504            type UnderlyingSolTuple<'a> = (
8505                BN254::ScalarField,
8506                alloy::sol_types::sol_data::Uint<64>,
8507            );
8508            #[doc(hidden)]
8509            type UnderlyingRustTuple<'a> = (
8510                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8511                u64,
8512            );
8513            #[cfg(test)]
8514            #[allow(dead_code, unreachable_patterns)]
8515            fn _type_assertion(
8516                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8517            ) {
8518                match _t {
8519                    alloy_sol_types::private::AssertTypeEq::<
8520                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8521                    >(_) => {}
8522                }
8523            }
8524            #[automatically_derived]
8525            #[doc(hidden)]
8526            impl ::core::convert::From<getHotShotCommitmentReturn>
8527            for UnderlyingRustTuple<'_> {
8528                fn from(value: getHotShotCommitmentReturn) -> Self {
8529                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8530                }
8531            }
8532            #[automatically_derived]
8533            #[doc(hidden)]
8534            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8535            for getHotShotCommitmentReturn {
8536                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8537                    Self {
8538                        hotShotBlockCommRoot: tuple.0,
8539                        hotshotBlockHeight: tuple.1,
8540                    }
8541                }
8542            }
8543        }
8544        impl getHotShotCommitmentReturn {
8545            fn _tokenize(
8546                &self,
8547            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8548                '_,
8549            > {
8550                (
8551                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8552                        &self.hotShotBlockCommRoot,
8553                    ),
8554                    <alloy::sol_types::sol_data::Uint<
8555                        64,
8556                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8557                )
8558            }
8559        }
8560        #[automatically_derived]
8561        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8562            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8563            type Token<'a> = <Self::Parameters<
8564                'a,
8565            > as alloy_sol_types::SolType>::Token<'a>;
8566            type Return = getHotShotCommitmentReturn;
8567            type ReturnTuple<'a> = (
8568                BN254::ScalarField,
8569                alloy::sol_types::sol_data::Uint<64>,
8570            );
8571            type ReturnToken<'a> = <Self::ReturnTuple<
8572                'a,
8573            > as alloy_sol_types::SolType>::Token<'a>;
8574            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8575            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8576            #[inline]
8577            fn new<'a>(
8578                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8579            ) -> Self {
8580                tuple.into()
8581            }
8582            #[inline]
8583            fn tokenize(&self) -> Self::Token<'_> {
8584                (
8585                    <alloy::sol_types::sol_data::Uint<
8586                        256,
8587                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8588                )
8589            }
8590            #[inline]
8591            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8592                getHotShotCommitmentReturn::_tokenize(ret)
8593            }
8594            #[inline]
8595            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8596                <Self::ReturnTuple<
8597                    '_,
8598                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8599                    .map(Into::into)
8600            }
8601            #[inline]
8602            fn abi_decode_returns_with_config(
8603                data: &[u8],
8604                config: alloy_sol_types::abi::AbiDecoderConfig,
8605            ) -> alloy_sol_types::Result<Self::Return> {
8606                <Self::ReturnTuple<
8607                    '_,
8608                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8609                        data,
8610                        config,
8611                    )
8612                    .map(Into::into)
8613            }
8614            #[inline]
8615            fn abi_decode_returns_validate(
8616                data: &[u8],
8617            ) -> alloy_sol_types::Result<Self::Return> {
8618                Self::abi_decode_returns_with_config(
8619                    data,
8620                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8621                )
8622            }
8623        }
8624    };
8625    #[derive(serde::Serialize, serde::Deserialize)]
8626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8627    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8628```solidity
8629function getStateHistoryCount() external view returns (uint256);
8630```*/
8631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8632    #[derive(Clone)]
8633    pub struct getStateHistoryCountCall;
8634    #[derive(serde::Serialize, serde::Deserialize)]
8635    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8636    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8638    #[derive(Clone)]
8639    pub struct getStateHistoryCountReturn {
8640        #[allow(missing_docs)]
8641        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8642    }
8643    #[allow(
8644        non_camel_case_types,
8645        non_snake_case,
8646        clippy::pub_underscore_fields,
8647        clippy::style
8648    )]
8649    const _: () = {
8650        use alloy::sol_types as alloy_sol_types;
8651        {
8652            #[doc(hidden)]
8653            #[allow(dead_code)]
8654            type UnderlyingSolTuple<'a> = ();
8655            #[doc(hidden)]
8656            type UnderlyingRustTuple<'a> = ();
8657            #[cfg(test)]
8658            #[allow(dead_code, unreachable_patterns)]
8659            fn _type_assertion(
8660                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8661            ) {
8662                match _t {
8663                    alloy_sol_types::private::AssertTypeEq::<
8664                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8665                    >(_) => {}
8666                }
8667            }
8668            #[automatically_derived]
8669            #[doc(hidden)]
8670            impl ::core::convert::From<getStateHistoryCountCall>
8671            for UnderlyingRustTuple<'_> {
8672                fn from(value: getStateHistoryCountCall) -> Self {
8673                    ()
8674                }
8675            }
8676            #[automatically_derived]
8677            #[doc(hidden)]
8678            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8679            for getStateHistoryCountCall {
8680                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8681                    Self
8682                }
8683            }
8684        }
8685        {
8686            #[doc(hidden)]
8687            #[allow(dead_code)]
8688            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8689            #[doc(hidden)]
8690            type UnderlyingRustTuple<'a> = (
8691                alloy::sol_types::private::primitives::aliases::U256,
8692            );
8693            #[cfg(test)]
8694            #[allow(dead_code, unreachable_patterns)]
8695            fn _type_assertion(
8696                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8697            ) {
8698                match _t {
8699                    alloy_sol_types::private::AssertTypeEq::<
8700                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8701                    >(_) => {}
8702                }
8703            }
8704            #[automatically_derived]
8705            #[doc(hidden)]
8706            impl ::core::convert::From<getStateHistoryCountReturn>
8707            for UnderlyingRustTuple<'_> {
8708                fn from(value: getStateHistoryCountReturn) -> Self {
8709                    (value._0,)
8710                }
8711            }
8712            #[automatically_derived]
8713            #[doc(hidden)]
8714            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8715            for getStateHistoryCountReturn {
8716                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8717                    Self { _0: tuple.0 }
8718                }
8719            }
8720        }
8721        #[automatically_derived]
8722        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8723            type Parameters<'a> = ();
8724            type Token<'a> = <Self::Parameters<
8725                'a,
8726            > as alloy_sol_types::SolType>::Token<'a>;
8727            type Return = alloy::sol_types::private::primitives::aliases::U256;
8728            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8729            type ReturnToken<'a> = <Self::ReturnTuple<
8730                'a,
8731            > as alloy_sol_types::SolType>::Token<'a>;
8732            const SIGNATURE: &'static str = "getStateHistoryCount()";
8733            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8734            #[inline]
8735            fn new<'a>(
8736                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8737            ) -> Self {
8738                tuple.into()
8739            }
8740            #[inline]
8741            fn tokenize(&self) -> Self::Token<'_> {
8742                ()
8743            }
8744            #[inline]
8745            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8746                (
8747                    <alloy::sol_types::sol_data::Uint<
8748                        256,
8749                    > as alloy_sol_types::SolType>::tokenize(ret),
8750                )
8751            }
8752            #[inline]
8753            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8754                <Self::ReturnTuple<
8755                    '_,
8756                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8757                    .map(|r| {
8758                        let r: getStateHistoryCountReturn = r.into();
8759                        r._0
8760                    })
8761            }
8762            #[inline]
8763            fn abi_decode_returns_with_config(
8764                data: &[u8],
8765                config: alloy_sol_types::abi::AbiDecoderConfig,
8766            ) -> alloy_sol_types::Result<Self::Return> {
8767                <Self::ReturnTuple<
8768                    '_,
8769                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8770                        data,
8771                        config,
8772                    )
8773                    .map(|r| {
8774                        let r: getStateHistoryCountReturn = r.into();
8775                        r._0
8776                    })
8777            }
8778            #[inline]
8779            fn abi_decode_returns_validate(
8780                data: &[u8],
8781            ) -> alloy_sol_types::Result<Self::Return> {
8782                Self::abi_decode_returns_with_config(
8783                    data,
8784                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8785                )
8786            }
8787        }
8788    };
8789    #[derive(serde::Serialize, serde::Deserialize)]
8790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8791    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8792```solidity
8793function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8794```*/
8795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8796    #[derive(Clone)]
8797    pub struct getVersionCall;
8798    #[derive(serde::Serialize, serde::Deserialize)]
8799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8800    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8802    #[derive(Clone)]
8803    pub struct getVersionReturn {
8804        #[allow(missing_docs)]
8805        pub majorVersion: u8,
8806        #[allow(missing_docs)]
8807        pub minorVersion: u8,
8808        #[allow(missing_docs)]
8809        pub patchVersion: u8,
8810    }
8811    #[allow(
8812        non_camel_case_types,
8813        non_snake_case,
8814        clippy::pub_underscore_fields,
8815        clippy::style
8816    )]
8817    const _: () = {
8818        use alloy::sol_types as alloy_sol_types;
8819        {
8820            #[doc(hidden)]
8821            #[allow(dead_code)]
8822            type UnderlyingSolTuple<'a> = ();
8823            #[doc(hidden)]
8824            type UnderlyingRustTuple<'a> = ();
8825            #[cfg(test)]
8826            #[allow(dead_code, unreachable_patterns)]
8827            fn _type_assertion(
8828                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8829            ) {
8830                match _t {
8831                    alloy_sol_types::private::AssertTypeEq::<
8832                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8833                    >(_) => {}
8834                }
8835            }
8836            #[automatically_derived]
8837            #[doc(hidden)]
8838            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8839                fn from(value: getVersionCall) -> Self {
8840                    ()
8841                }
8842            }
8843            #[automatically_derived]
8844            #[doc(hidden)]
8845            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8846                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8847                    Self
8848                }
8849            }
8850        }
8851        {
8852            #[doc(hidden)]
8853            #[allow(dead_code)]
8854            type UnderlyingSolTuple<'a> = (
8855                alloy::sol_types::sol_data::Uint<8>,
8856                alloy::sol_types::sol_data::Uint<8>,
8857                alloy::sol_types::sol_data::Uint<8>,
8858            );
8859            #[doc(hidden)]
8860            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8861            #[cfg(test)]
8862            #[allow(dead_code, unreachable_patterns)]
8863            fn _type_assertion(
8864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8865            ) {
8866                match _t {
8867                    alloy_sol_types::private::AssertTypeEq::<
8868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8869                    >(_) => {}
8870                }
8871            }
8872            #[automatically_derived]
8873            #[doc(hidden)]
8874            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8875                fn from(value: getVersionReturn) -> Self {
8876                    (value.majorVersion, value.minorVersion, value.patchVersion)
8877                }
8878            }
8879            #[automatically_derived]
8880            #[doc(hidden)]
8881            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8882                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8883                    Self {
8884                        majorVersion: tuple.0,
8885                        minorVersion: tuple.1,
8886                        patchVersion: tuple.2,
8887                    }
8888                }
8889            }
8890        }
8891        impl getVersionReturn {
8892            fn _tokenize(
8893                &self,
8894            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8895                (
8896                    <alloy::sol_types::sol_data::Uint<
8897                        8,
8898                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8899                    <alloy::sol_types::sol_data::Uint<
8900                        8,
8901                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8902                    <alloy::sol_types::sol_data::Uint<
8903                        8,
8904                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8905                )
8906            }
8907        }
8908        #[automatically_derived]
8909        impl alloy_sol_types::SolCall for getVersionCall {
8910            type Parameters<'a> = ();
8911            type Token<'a> = <Self::Parameters<
8912                'a,
8913            > as alloy_sol_types::SolType>::Token<'a>;
8914            type Return = getVersionReturn;
8915            type ReturnTuple<'a> = (
8916                alloy::sol_types::sol_data::Uint<8>,
8917                alloy::sol_types::sol_data::Uint<8>,
8918                alloy::sol_types::sol_data::Uint<8>,
8919            );
8920            type ReturnToken<'a> = <Self::ReturnTuple<
8921                'a,
8922            > as alloy_sol_types::SolType>::Token<'a>;
8923            const SIGNATURE: &'static str = "getVersion()";
8924            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8925            #[inline]
8926            fn new<'a>(
8927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8928            ) -> Self {
8929                tuple.into()
8930            }
8931            #[inline]
8932            fn tokenize(&self) -> Self::Token<'_> {
8933                ()
8934            }
8935            #[inline]
8936            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8937                getVersionReturn::_tokenize(ret)
8938            }
8939            #[inline]
8940            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8941                <Self::ReturnTuple<
8942                    '_,
8943                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8944                    .map(Into::into)
8945            }
8946            #[inline]
8947            fn abi_decode_returns_with_config(
8948                data: &[u8],
8949                config: alloy_sol_types::abi::AbiDecoderConfig,
8950            ) -> alloy_sol_types::Result<Self::Return> {
8951                <Self::ReturnTuple<
8952                    '_,
8953                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8954                        data,
8955                        config,
8956                    )
8957                    .map(Into::into)
8958            }
8959            #[inline]
8960            fn abi_decode_returns_validate(
8961                data: &[u8],
8962            ) -> alloy_sol_types::Result<Self::Return> {
8963                Self::abi_decode_returns_with_config(
8964                    data,
8965                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8966                )
8967            }
8968        }
8969    };
8970    #[derive(serde::Serialize, serde::Deserialize)]
8971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8972    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8973```solidity
8974function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8975```*/
8976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8977    #[derive(Clone)]
8978    pub struct initializeCall {
8979        #[allow(missing_docs)]
8980        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8981        #[allow(missing_docs)]
8982        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8983        #[allow(missing_docs)]
8984        pub _stateHistoryRetentionPeriod: u32,
8985        #[allow(missing_docs)]
8986        pub owner: alloy::sol_types::private::Address,
8987    }
8988    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8990    #[derive(Clone)]
8991    pub struct initializeReturn {}
8992    #[allow(
8993        non_camel_case_types,
8994        non_snake_case,
8995        clippy::pub_underscore_fields,
8996        clippy::style
8997    )]
8998    const _: () = {
8999        use alloy::sol_types as alloy_sol_types;
9000        {
9001            #[doc(hidden)]
9002            #[allow(dead_code)]
9003            type UnderlyingSolTuple<'a> = (
9004                LightClient::LightClientState,
9005                LightClient::StakeTableState,
9006                alloy::sol_types::sol_data::Uint<32>,
9007                alloy::sol_types::sol_data::Address,
9008            );
9009            #[doc(hidden)]
9010            type UnderlyingRustTuple<'a> = (
9011                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9012                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9013                u32,
9014                alloy::sol_types::private::Address,
9015            );
9016            #[cfg(test)]
9017            #[allow(dead_code, unreachable_patterns)]
9018            fn _type_assertion(
9019                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9020            ) {
9021                match _t {
9022                    alloy_sol_types::private::AssertTypeEq::<
9023                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9024                    >(_) => {}
9025                }
9026            }
9027            #[automatically_derived]
9028            #[doc(hidden)]
9029            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9030                fn from(value: initializeCall) -> Self {
9031                    (
9032                        value._genesis,
9033                        value._genesisStakeTableState,
9034                        value._stateHistoryRetentionPeriod,
9035                        value.owner,
9036                    )
9037                }
9038            }
9039            #[automatically_derived]
9040            #[doc(hidden)]
9041            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9043                    Self {
9044                        _genesis: tuple.0,
9045                        _genesisStakeTableState: tuple.1,
9046                        _stateHistoryRetentionPeriod: tuple.2,
9047                        owner: tuple.3,
9048                    }
9049                }
9050            }
9051        }
9052        {
9053            #[doc(hidden)]
9054            #[allow(dead_code)]
9055            type UnderlyingSolTuple<'a> = ();
9056            #[doc(hidden)]
9057            type UnderlyingRustTuple<'a> = ();
9058            #[cfg(test)]
9059            #[allow(dead_code, unreachable_patterns)]
9060            fn _type_assertion(
9061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9062            ) {
9063                match _t {
9064                    alloy_sol_types::private::AssertTypeEq::<
9065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9066                    >(_) => {}
9067                }
9068            }
9069            #[automatically_derived]
9070            #[doc(hidden)]
9071            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9072                fn from(value: initializeReturn) -> Self {
9073                    ()
9074                }
9075            }
9076            #[automatically_derived]
9077            #[doc(hidden)]
9078            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9079                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9080                    Self {}
9081                }
9082            }
9083        }
9084        impl initializeReturn {
9085            fn _tokenize(
9086                &self,
9087            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9088                ()
9089            }
9090        }
9091        #[automatically_derived]
9092        impl alloy_sol_types::SolCall for initializeCall {
9093            type Parameters<'a> = (
9094                LightClient::LightClientState,
9095                LightClient::StakeTableState,
9096                alloy::sol_types::sol_data::Uint<32>,
9097                alloy::sol_types::sol_data::Address,
9098            );
9099            type Token<'a> = <Self::Parameters<
9100                'a,
9101            > as alloy_sol_types::SolType>::Token<'a>;
9102            type Return = initializeReturn;
9103            type ReturnTuple<'a> = ();
9104            type ReturnToken<'a> = <Self::ReturnTuple<
9105                'a,
9106            > as alloy_sol_types::SolType>::Token<'a>;
9107            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9108            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9109            #[inline]
9110            fn new<'a>(
9111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9112            ) -> Self {
9113                tuple.into()
9114            }
9115            #[inline]
9116            fn tokenize(&self) -> Self::Token<'_> {
9117                (
9118                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9119                        &self._genesis,
9120                    ),
9121                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9122                        &self._genesisStakeTableState,
9123                    ),
9124                    <alloy::sol_types::sol_data::Uint<
9125                        32,
9126                    > as alloy_sol_types::SolType>::tokenize(
9127                        &self._stateHistoryRetentionPeriod,
9128                    ),
9129                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9130                        &self.owner,
9131                    ),
9132                )
9133            }
9134            #[inline]
9135            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9136                initializeReturn::_tokenize(ret)
9137            }
9138            #[inline]
9139            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9140                <Self::ReturnTuple<
9141                    '_,
9142                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9143                    .map(Into::into)
9144            }
9145            #[inline]
9146            fn abi_decode_returns_with_config(
9147                data: &[u8],
9148                config: alloy_sol_types::abi::AbiDecoderConfig,
9149            ) -> alloy_sol_types::Result<Self::Return> {
9150                <Self::ReturnTuple<
9151                    '_,
9152                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9153                        data,
9154                        config,
9155                    )
9156                    .map(Into::into)
9157            }
9158            #[inline]
9159            fn abi_decode_returns_validate(
9160                data: &[u8],
9161            ) -> alloy_sol_types::Result<Self::Return> {
9162                Self::abi_decode_returns_with_config(
9163                    data,
9164                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9165                )
9166            }
9167        }
9168    };
9169    #[derive(serde::Serialize, serde::Deserialize)]
9170    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9171    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
9172```solidity
9173function isPermissionedProverEnabled() external view returns (bool);
9174```*/
9175    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9176    #[derive(Clone)]
9177    pub struct isPermissionedProverEnabledCall;
9178    #[derive(serde::Serialize, serde::Deserialize)]
9179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9180    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
9181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9182    #[derive(Clone)]
9183    pub struct isPermissionedProverEnabledReturn {
9184        #[allow(missing_docs)]
9185        pub _0: bool,
9186    }
9187    #[allow(
9188        non_camel_case_types,
9189        non_snake_case,
9190        clippy::pub_underscore_fields,
9191        clippy::style
9192    )]
9193    const _: () = {
9194        use alloy::sol_types as alloy_sol_types;
9195        {
9196            #[doc(hidden)]
9197            #[allow(dead_code)]
9198            type UnderlyingSolTuple<'a> = ();
9199            #[doc(hidden)]
9200            type UnderlyingRustTuple<'a> = ();
9201            #[cfg(test)]
9202            #[allow(dead_code, unreachable_patterns)]
9203            fn _type_assertion(
9204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9205            ) {
9206                match _t {
9207                    alloy_sol_types::private::AssertTypeEq::<
9208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9209                    >(_) => {}
9210                }
9211            }
9212            #[automatically_derived]
9213            #[doc(hidden)]
9214            impl ::core::convert::From<isPermissionedProverEnabledCall>
9215            for UnderlyingRustTuple<'_> {
9216                fn from(value: isPermissionedProverEnabledCall) -> Self {
9217                    ()
9218                }
9219            }
9220            #[automatically_derived]
9221            #[doc(hidden)]
9222            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9223            for isPermissionedProverEnabledCall {
9224                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9225                    Self
9226                }
9227            }
9228        }
9229        {
9230            #[doc(hidden)]
9231            #[allow(dead_code)]
9232            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9233            #[doc(hidden)]
9234            type UnderlyingRustTuple<'a> = (bool,);
9235            #[cfg(test)]
9236            #[allow(dead_code, unreachable_patterns)]
9237            fn _type_assertion(
9238                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9239            ) {
9240                match _t {
9241                    alloy_sol_types::private::AssertTypeEq::<
9242                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9243                    >(_) => {}
9244                }
9245            }
9246            #[automatically_derived]
9247            #[doc(hidden)]
9248            impl ::core::convert::From<isPermissionedProverEnabledReturn>
9249            for UnderlyingRustTuple<'_> {
9250                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9251                    (value._0,)
9252                }
9253            }
9254            #[automatically_derived]
9255            #[doc(hidden)]
9256            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9257            for isPermissionedProverEnabledReturn {
9258                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9259                    Self { _0: tuple.0 }
9260                }
9261            }
9262        }
9263        #[automatically_derived]
9264        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9265            type Parameters<'a> = ();
9266            type Token<'a> = <Self::Parameters<
9267                'a,
9268            > as alloy_sol_types::SolType>::Token<'a>;
9269            type Return = bool;
9270            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9271            type ReturnToken<'a> = <Self::ReturnTuple<
9272                'a,
9273            > as alloy_sol_types::SolType>::Token<'a>;
9274            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9275            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9276            #[inline]
9277            fn new<'a>(
9278                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9279            ) -> Self {
9280                tuple.into()
9281            }
9282            #[inline]
9283            fn tokenize(&self) -> Self::Token<'_> {
9284                ()
9285            }
9286            #[inline]
9287            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9288                (
9289                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9290                        ret,
9291                    ),
9292                )
9293            }
9294            #[inline]
9295            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9296                <Self::ReturnTuple<
9297                    '_,
9298                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9299                    .map(|r| {
9300                        let r: isPermissionedProverEnabledReturn = r.into();
9301                        r._0
9302                    })
9303            }
9304            #[inline]
9305            fn abi_decode_returns_with_config(
9306                data: &[u8],
9307                config: alloy_sol_types::abi::AbiDecoderConfig,
9308            ) -> alloy_sol_types::Result<Self::Return> {
9309                <Self::ReturnTuple<
9310                    '_,
9311                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9312                        data,
9313                        config,
9314                    )
9315                    .map(|r| {
9316                        let r: isPermissionedProverEnabledReturn = r.into();
9317                        r._0
9318                    })
9319            }
9320            #[inline]
9321            fn abi_decode_returns_validate(
9322                data: &[u8],
9323            ) -> alloy_sol_types::Result<Self::Return> {
9324                Self::abi_decode_returns_with_config(
9325                    data,
9326                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9327                )
9328            }
9329        }
9330    };
9331    #[derive(serde::Serialize, serde::Deserialize)]
9332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9333    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9334```solidity
9335function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
9336```*/
9337    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9338    #[derive(Clone)]
9339    pub struct lagOverEscapeHatchThresholdCall {
9340        #[allow(missing_docs)]
9341        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9342        #[allow(missing_docs)]
9343        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9344    }
9345    #[derive(serde::Serialize, serde::Deserialize)]
9346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9347    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9349    #[derive(Clone)]
9350    pub struct lagOverEscapeHatchThresholdReturn {
9351        #[allow(missing_docs)]
9352        pub _0: bool,
9353    }
9354    #[allow(
9355        non_camel_case_types,
9356        non_snake_case,
9357        clippy::pub_underscore_fields,
9358        clippy::style
9359    )]
9360    const _: () = {
9361        use alloy::sol_types as alloy_sol_types;
9362        {
9363            #[doc(hidden)]
9364            #[allow(dead_code)]
9365            type UnderlyingSolTuple<'a> = (
9366                alloy::sol_types::sol_data::Uint<256>,
9367                alloy::sol_types::sol_data::Uint<256>,
9368            );
9369            #[doc(hidden)]
9370            type UnderlyingRustTuple<'a> = (
9371                alloy::sol_types::private::primitives::aliases::U256,
9372                alloy::sol_types::private::primitives::aliases::U256,
9373            );
9374            #[cfg(test)]
9375            #[allow(dead_code, unreachable_patterns)]
9376            fn _type_assertion(
9377                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9378            ) {
9379                match _t {
9380                    alloy_sol_types::private::AssertTypeEq::<
9381                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9382                    >(_) => {}
9383                }
9384            }
9385            #[automatically_derived]
9386            #[doc(hidden)]
9387            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
9388            for UnderlyingRustTuple<'_> {
9389                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9390                    (value.blockNumber, value.threshold)
9391                }
9392            }
9393            #[automatically_derived]
9394            #[doc(hidden)]
9395            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9396            for lagOverEscapeHatchThresholdCall {
9397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9398                    Self {
9399                        blockNumber: tuple.0,
9400                        threshold: tuple.1,
9401                    }
9402                }
9403            }
9404        }
9405        {
9406            #[doc(hidden)]
9407            #[allow(dead_code)]
9408            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9409            #[doc(hidden)]
9410            type UnderlyingRustTuple<'a> = (bool,);
9411            #[cfg(test)]
9412            #[allow(dead_code, unreachable_patterns)]
9413            fn _type_assertion(
9414                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9415            ) {
9416                match _t {
9417                    alloy_sol_types::private::AssertTypeEq::<
9418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9419                    >(_) => {}
9420                }
9421            }
9422            #[automatically_derived]
9423            #[doc(hidden)]
9424            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
9425            for UnderlyingRustTuple<'_> {
9426                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9427                    (value._0,)
9428                }
9429            }
9430            #[automatically_derived]
9431            #[doc(hidden)]
9432            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9433            for lagOverEscapeHatchThresholdReturn {
9434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9435                    Self { _0: tuple.0 }
9436                }
9437            }
9438        }
9439        #[automatically_derived]
9440        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9441            type Parameters<'a> = (
9442                alloy::sol_types::sol_data::Uint<256>,
9443                alloy::sol_types::sol_data::Uint<256>,
9444            );
9445            type Token<'a> = <Self::Parameters<
9446                'a,
9447            > as alloy_sol_types::SolType>::Token<'a>;
9448            type Return = bool;
9449            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9450            type ReturnToken<'a> = <Self::ReturnTuple<
9451                'a,
9452            > as alloy_sol_types::SolType>::Token<'a>;
9453            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9454            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9455            #[inline]
9456            fn new<'a>(
9457                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9458            ) -> Self {
9459                tuple.into()
9460            }
9461            #[inline]
9462            fn tokenize(&self) -> Self::Token<'_> {
9463                (
9464                    <alloy::sol_types::sol_data::Uint<
9465                        256,
9466                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9467                    <alloy::sol_types::sol_data::Uint<
9468                        256,
9469                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9470                )
9471            }
9472            #[inline]
9473            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9474                (
9475                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9476                        ret,
9477                    ),
9478                )
9479            }
9480            #[inline]
9481            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9482                <Self::ReturnTuple<
9483                    '_,
9484                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9485                    .map(|r| {
9486                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9487                        r._0
9488                    })
9489            }
9490            #[inline]
9491            fn abi_decode_returns_with_config(
9492                data: &[u8],
9493                config: alloy_sol_types::abi::AbiDecoderConfig,
9494            ) -> alloy_sol_types::Result<Self::Return> {
9495                <Self::ReturnTuple<
9496                    '_,
9497                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9498                        data,
9499                        config,
9500                    )
9501                    .map(|r| {
9502                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9503                        r._0
9504                    })
9505            }
9506            #[inline]
9507            fn abi_decode_returns_validate(
9508                data: &[u8],
9509            ) -> alloy_sol_types::Result<Self::Return> {
9510                Self::abi_decode_returns_with_config(
9511                    data,
9512                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9513                )
9514            }
9515        }
9516    };
9517    #[derive(serde::Serialize, serde::Deserialize)]
9518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9519    /**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`.
9520```solidity
9521function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
9522```*/
9523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9524    #[derive(Clone)]
9525    pub struct newFinalizedStateCall {
9526        #[allow(missing_docs)]
9527        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9528        #[allow(missing_docs)]
9529        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9530    }
9531    ///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.
9532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9533    #[derive(Clone)]
9534    pub struct newFinalizedStateReturn {}
9535    #[allow(
9536        non_camel_case_types,
9537        non_snake_case,
9538        clippy::pub_underscore_fields,
9539        clippy::style
9540    )]
9541    const _: () = {
9542        use alloy::sol_types as alloy_sol_types;
9543        {
9544            #[doc(hidden)]
9545            #[allow(dead_code)]
9546            type UnderlyingSolTuple<'a> = (
9547                LightClient::LightClientState,
9548                IPlonkVerifier::PlonkProof,
9549            );
9550            #[doc(hidden)]
9551            type UnderlyingRustTuple<'a> = (
9552                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9553                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9554            );
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<newFinalizedStateCall>
9569            for UnderlyingRustTuple<'_> {
9570                fn from(value: newFinalizedStateCall) -> Self {
9571                    (value.newState, value.proof)
9572                }
9573            }
9574            #[automatically_derived]
9575            #[doc(hidden)]
9576            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9577            for newFinalizedStateCall {
9578                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9579                    Self {
9580                        newState: tuple.0,
9581                        proof: tuple.1,
9582                    }
9583                }
9584            }
9585        }
9586        {
9587            #[doc(hidden)]
9588            #[allow(dead_code)]
9589            type UnderlyingSolTuple<'a> = ();
9590            #[doc(hidden)]
9591            type UnderlyingRustTuple<'a> = ();
9592            #[cfg(test)]
9593            #[allow(dead_code, unreachable_patterns)]
9594            fn _type_assertion(
9595                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9596            ) {
9597                match _t {
9598                    alloy_sol_types::private::AssertTypeEq::<
9599                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9600                    >(_) => {}
9601                }
9602            }
9603            #[automatically_derived]
9604            #[doc(hidden)]
9605            impl ::core::convert::From<newFinalizedStateReturn>
9606            for UnderlyingRustTuple<'_> {
9607                fn from(value: newFinalizedStateReturn) -> Self {
9608                    ()
9609                }
9610            }
9611            #[automatically_derived]
9612            #[doc(hidden)]
9613            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9614            for newFinalizedStateReturn {
9615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9616                    Self {}
9617                }
9618            }
9619        }
9620        impl newFinalizedStateReturn {
9621            fn _tokenize(
9622                &self,
9623            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9624                ()
9625            }
9626        }
9627        #[automatically_derived]
9628        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9629            type Parameters<'a> = (
9630                LightClient::LightClientState,
9631                IPlonkVerifier::PlonkProof,
9632            );
9633            type Token<'a> = <Self::Parameters<
9634                'a,
9635            > as alloy_sol_types::SolType>::Token<'a>;
9636            type Return = newFinalizedStateReturn;
9637            type ReturnTuple<'a> = ();
9638            type ReturnToken<'a> = <Self::ReturnTuple<
9639                'a,
9640            > as alloy_sol_types::SolType>::Token<'a>;
9641            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))";
9642            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9643            #[inline]
9644            fn new<'a>(
9645                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9646            ) -> Self {
9647                tuple.into()
9648            }
9649            #[inline]
9650            fn tokenize(&self) -> Self::Token<'_> {
9651                (
9652                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9653                        &self.newState,
9654                    ),
9655                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9656                        &self.proof,
9657                    ),
9658                )
9659            }
9660            #[inline]
9661            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9662                newFinalizedStateReturn::_tokenize(ret)
9663            }
9664            #[inline]
9665            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9666                <Self::ReturnTuple<
9667                    '_,
9668                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9669                    .map(Into::into)
9670            }
9671            #[inline]
9672            fn abi_decode_returns_with_config(
9673                data: &[u8],
9674                config: alloy_sol_types::abi::AbiDecoderConfig,
9675            ) -> alloy_sol_types::Result<Self::Return> {
9676                <Self::ReturnTuple<
9677                    '_,
9678                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9679                        data,
9680                        config,
9681                    )
9682                    .map(Into::into)
9683            }
9684            #[inline]
9685            fn abi_decode_returns_validate(
9686                data: &[u8],
9687            ) -> alloy_sol_types::Result<Self::Return> {
9688                Self::abi_decode_returns_with_config(
9689                    data,
9690                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9691                )
9692            }
9693        }
9694    };
9695    #[derive(serde::Serialize, serde::Deserialize)]
9696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9697    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9698```solidity
9699function owner() external view returns (address);
9700```*/
9701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9702    #[derive(Clone)]
9703    pub struct ownerCall;
9704    #[derive(serde::Serialize, serde::Deserialize)]
9705    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9706    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9708    #[derive(Clone)]
9709    pub struct ownerReturn {
9710        #[allow(missing_docs)]
9711        pub _0: alloy::sol_types::private::Address,
9712    }
9713    #[allow(
9714        non_camel_case_types,
9715        non_snake_case,
9716        clippy::pub_underscore_fields,
9717        clippy::style
9718    )]
9719    const _: () = {
9720        use alloy::sol_types as alloy_sol_types;
9721        {
9722            #[doc(hidden)]
9723            #[allow(dead_code)]
9724            type UnderlyingSolTuple<'a> = ();
9725            #[doc(hidden)]
9726            type UnderlyingRustTuple<'a> = ();
9727            #[cfg(test)]
9728            #[allow(dead_code, unreachable_patterns)]
9729            fn _type_assertion(
9730                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9731            ) {
9732                match _t {
9733                    alloy_sol_types::private::AssertTypeEq::<
9734                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9735                    >(_) => {}
9736                }
9737            }
9738            #[automatically_derived]
9739            #[doc(hidden)]
9740            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9741                fn from(value: ownerCall) -> Self {
9742                    ()
9743                }
9744            }
9745            #[automatically_derived]
9746            #[doc(hidden)]
9747            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9748                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9749                    Self
9750                }
9751            }
9752        }
9753        {
9754            #[doc(hidden)]
9755            #[allow(dead_code)]
9756            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9757            #[doc(hidden)]
9758            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9759            #[cfg(test)]
9760            #[allow(dead_code, unreachable_patterns)]
9761            fn _type_assertion(
9762                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9763            ) {
9764                match _t {
9765                    alloy_sol_types::private::AssertTypeEq::<
9766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9767                    >(_) => {}
9768                }
9769            }
9770            #[automatically_derived]
9771            #[doc(hidden)]
9772            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9773                fn from(value: ownerReturn) -> Self {
9774                    (value._0,)
9775                }
9776            }
9777            #[automatically_derived]
9778            #[doc(hidden)]
9779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9781                    Self { _0: tuple.0 }
9782                }
9783            }
9784        }
9785        #[automatically_derived]
9786        impl alloy_sol_types::SolCall for ownerCall {
9787            type Parameters<'a> = ();
9788            type Token<'a> = <Self::Parameters<
9789                'a,
9790            > as alloy_sol_types::SolType>::Token<'a>;
9791            type Return = alloy::sol_types::private::Address;
9792            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9793            type ReturnToken<'a> = <Self::ReturnTuple<
9794                'a,
9795            > as alloy_sol_types::SolType>::Token<'a>;
9796            const SIGNATURE: &'static str = "owner()";
9797            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9798            #[inline]
9799            fn new<'a>(
9800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9801            ) -> Self {
9802                tuple.into()
9803            }
9804            #[inline]
9805            fn tokenize(&self) -> Self::Token<'_> {
9806                ()
9807            }
9808            #[inline]
9809            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9810                (
9811                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9812                        ret,
9813                    ),
9814                )
9815            }
9816            #[inline]
9817            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9818                <Self::ReturnTuple<
9819                    '_,
9820                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9821                    .map(|r| {
9822                        let r: ownerReturn = r.into();
9823                        r._0
9824                    })
9825            }
9826            #[inline]
9827            fn abi_decode_returns_with_config(
9828                data: &[u8],
9829                config: alloy_sol_types::abi::AbiDecoderConfig,
9830            ) -> alloy_sol_types::Result<Self::Return> {
9831                <Self::ReturnTuple<
9832                    '_,
9833                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9834                        data,
9835                        config,
9836                    )
9837                    .map(|r| {
9838                        let r: ownerReturn = r.into();
9839                        r._0
9840                    })
9841            }
9842            #[inline]
9843            fn abi_decode_returns_validate(
9844                data: &[u8],
9845            ) -> alloy_sol_types::Result<Self::Return> {
9846                Self::abi_decode_returns_with_config(
9847                    data,
9848                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9849                )
9850            }
9851        }
9852    };
9853    #[derive(serde::Serialize, serde::Deserialize)]
9854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9855    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9856```solidity
9857function permissionedProver() external view returns (address);
9858```*/
9859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9860    #[derive(Clone)]
9861    pub struct permissionedProverCall;
9862    #[derive(serde::Serialize, serde::Deserialize)]
9863    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9864    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9866    #[derive(Clone)]
9867    pub struct permissionedProverReturn {
9868        #[allow(missing_docs)]
9869        pub _0: alloy::sol_types::private::Address,
9870    }
9871    #[allow(
9872        non_camel_case_types,
9873        non_snake_case,
9874        clippy::pub_underscore_fields,
9875        clippy::style
9876    )]
9877    const _: () = {
9878        use alloy::sol_types as alloy_sol_types;
9879        {
9880            #[doc(hidden)]
9881            #[allow(dead_code)]
9882            type UnderlyingSolTuple<'a> = ();
9883            #[doc(hidden)]
9884            type UnderlyingRustTuple<'a> = ();
9885            #[cfg(test)]
9886            #[allow(dead_code, unreachable_patterns)]
9887            fn _type_assertion(
9888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9889            ) {
9890                match _t {
9891                    alloy_sol_types::private::AssertTypeEq::<
9892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9893                    >(_) => {}
9894                }
9895            }
9896            #[automatically_derived]
9897            #[doc(hidden)]
9898            impl ::core::convert::From<permissionedProverCall>
9899            for UnderlyingRustTuple<'_> {
9900                fn from(value: permissionedProverCall) -> Self {
9901                    ()
9902                }
9903            }
9904            #[automatically_derived]
9905            #[doc(hidden)]
9906            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9907            for permissionedProverCall {
9908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9909                    Self
9910                }
9911            }
9912        }
9913        {
9914            #[doc(hidden)]
9915            #[allow(dead_code)]
9916            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9917            #[doc(hidden)]
9918            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9919            #[cfg(test)]
9920            #[allow(dead_code, unreachable_patterns)]
9921            fn _type_assertion(
9922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9923            ) {
9924                match _t {
9925                    alloy_sol_types::private::AssertTypeEq::<
9926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9927                    >(_) => {}
9928                }
9929            }
9930            #[automatically_derived]
9931            #[doc(hidden)]
9932            impl ::core::convert::From<permissionedProverReturn>
9933            for UnderlyingRustTuple<'_> {
9934                fn from(value: permissionedProverReturn) -> Self {
9935                    (value._0,)
9936                }
9937            }
9938            #[automatically_derived]
9939            #[doc(hidden)]
9940            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9941            for permissionedProverReturn {
9942                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9943                    Self { _0: tuple.0 }
9944                }
9945            }
9946        }
9947        #[automatically_derived]
9948        impl alloy_sol_types::SolCall for permissionedProverCall {
9949            type Parameters<'a> = ();
9950            type Token<'a> = <Self::Parameters<
9951                'a,
9952            > as alloy_sol_types::SolType>::Token<'a>;
9953            type Return = alloy::sol_types::private::Address;
9954            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9955            type ReturnToken<'a> = <Self::ReturnTuple<
9956                'a,
9957            > as alloy_sol_types::SolType>::Token<'a>;
9958            const SIGNATURE: &'static str = "permissionedProver()";
9959            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9960            #[inline]
9961            fn new<'a>(
9962                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9963            ) -> Self {
9964                tuple.into()
9965            }
9966            #[inline]
9967            fn tokenize(&self) -> Self::Token<'_> {
9968                ()
9969            }
9970            #[inline]
9971            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9972                (
9973                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9974                        ret,
9975                    ),
9976                )
9977            }
9978            #[inline]
9979            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9980                <Self::ReturnTuple<
9981                    '_,
9982                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9983                    .map(|r| {
9984                        let r: permissionedProverReturn = r.into();
9985                        r._0
9986                    })
9987            }
9988            #[inline]
9989            fn abi_decode_returns_with_config(
9990                data: &[u8],
9991                config: alloy_sol_types::abi::AbiDecoderConfig,
9992            ) -> alloy_sol_types::Result<Self::Return> {
9993                <Self::ReturnTuple<
9994                    '_,
9995                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9996                        data,
9997                        config,
9998                    )
9999                    .map(|r| {
10000                        let r: permissionedProverReturn = r.into();
10001                        r._0
10002                    })
10003            }
10004            #[inline]
10005            fn abi_decode_returns_validate(
10006                data: &[u8],
10007            ) -> alloy_sol_types::Result<Self::Return> {
10008                Self::abi_decode_returns_with_config(
10009                    data,
10010                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10011                )
10012            }
10013        }
10014    };
10015    #[derive(serde::Serialize, serde::Deserialize)]
10016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10017    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
10018```solidity
10019function proxiableUUID() external view returns (bytes32);
10020```*/
10021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10022    #[derive(Clone)]
10023    pub struct proxiableUUIDCall;
10024    #[derive(serde::Serialize, serde::Deserialize)]
10025    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10026    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
10027    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10028    #[derive(Clone)]
10029    pub struct proxiableUUIDReturn {
10030        #[allow(missing_docs)]
10031        pub _0: alloy::sol_types::private::FixedBytes<32>,
10032    }
10033    #[allow(
10034        non_camel_case_types,
10035        non_snake_case,
10036        clippy::pub_underscore_fields,
10037        clippy::style
10038    )]
10039    const _: () = {
10040        use alloy::sol_types as alloy_sol_types;
10041        {
10042            #[doc(hidden)]
10043            #[allow(dead_code)]
10044            type UnderlyingSolTuple<'a> = ();
10045            #[doc(hidden)]
10046            type UnderlyingRustTuple<'a> = ();
10047            #[cfg(test)]
10048            #[allow(dead_code, unreachable_patterns)]
10049            fn _type_assertion(
10050                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10051            ) {
10052                match _t {
10053                    alloy_sol_types::private::AssertTypeEq::<
10054                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10055                    >(_) => {}
10056                }
10057            }
10058            #[automatically_derived]
10059            #[doc(hidden)]
10060            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
10061                fn from(value: proxiableUUIDCall) -> Self {
10062                    ()
10063                }
10064            }
10065            #[automatically_derived]
10066            #[doc(hidden)]
10067            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
10068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10069                    Self
10070                }
10071            }
10072        }
10073        {
10074            #[doc(hidden)]
10075            #[allow(dead_code)]
10076            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10077            #[doc(hidden)]
10078            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10079            #[cfg(test)]
10080            #[allow(dead_code, unreachable_patterns)]
10081            fn _type_assertion(
10082                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10083            ) {
10084                match _t {
10085                    alloy_sol_types::private::AssertTypeEq::<
10086                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10087                    >(_) => {}
10088                }
10089            }
10090            #[automatically_derived]
10091            #[doc(hidden)]
10092            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
10093                fn from(value: proxiableUUIDReturn) -> Self {
10094                    (value._0,)
10095                }
10096            }
10097            #[automatically_derived]
10098            #[doc(hidden)]
10099            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
10100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10101                    Self { _0: tuple.0 }
10102                }
10103            }
10104        }
10105        #[automatically_derived]
10106        impl alloy_sol_types::SolCall for proxiableUUIDCall {
10107            type Parameters<'a> = ();
10108            type Token<'a> = <Self::Parameters<
10109                'a,
10110            > as alloy_sol_types::SolType>::Token<'a>;
10111            type Return = alloy::sol_types::private::FixedBytes<32>;
10112            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10113            type ReturnToken<'a> = <Self::ReturnTuple<
10114                'a,
10115            > as alloy_sol_types::SolType>::Token<'a>;
10116            const SIGNATURE: &'static str = "proxiableUUID()";
10117            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
10118            #[inline]
10119            fn new<'a>(
10120                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10121            ) -> Self {
10122                tuple.into()
10123            }
10124            #[inline]
10125            fn tokenize(&self) -> Self::Token<'_> {
10126                ()
10127            }
10128            #[inline]
10129            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10130                (
10131                    <alloy::sol_types::sol_data::FixedBytes<
10132                        32,
10133                    > as alloy_sol_types::SolType>::tokenize(ret),
10134                )
10135            }
10136            #[inline]
10137            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10138                <Self::ReturnTuple<
10139                    '_,
10140                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10141                    .map(|r| {
10142                        let r: proxiableUUIDReturn = r.into();
10143                        r._0
10144                    })
10145            }
10146            #[inline]
10147            fn abi_decode_returns_with_config(
10148                data: &[u8],
10149                config: alloy_sol_types::abi::AbiDecoderConfig,
10150            ) -> alloy_sol_types::Result<Self::Return> {
10151                <Self::ReturnTuple<
10152                    '_,
10153                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10154                        data,
10155                        config,
10156                    )
10157                    .map(|r| {
10158                        let r: proxiableUUIDReturn = r.into();
10159                        r._0
10160                    })
10161            }
10162            #[inline]
10163            fn abi_decode_returns_validate(
10164                data: &[u8],
10165            ) -> alloy_sol_types::Result<Self::Return> {
10166                Self::abi_decode_returns_with_config(
10167                    data,
10168                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10169                )
10170            }
10171        }
10172    };
10173    #[derive(serde::Serialize, serde::Deserialize)]
10174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10175    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10176```solidity
10177function renounceOwnership() external;
10178```*/
10179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10180    #[derive(Clone)]
10181    pub struct renounceOwnershipCall;
10182    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
10183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10184    #[derive(Clone)]
10185    pub struct renounceOwnershipReturn {}
10186    #[allow(
10187        non_camel_case_types,
10188        non_snake_case,
10189        clippy::pub_underscore_fields,
10190        clippy::style
10191    )]
10192    const _: () = {
10193        use alloy::sol_types as alloy_sol_types;
10194        {
10195            #[doc(hidden)]
10196            #[allow(dead_code)]
10197            type UnderlyingSolTuple<'a> = ();
10198            #[doc(hidden)]
10199            type UnderlyingRustTuple<'a> = ();
10200            #[cfg(test)]
10201            #[allow(dead_code, unreachable_patterns)]
10202            fn _type_assertion(
10203                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10204            ) {
10205                match _t {
10206                    alloy_sol_types::private::AssertTypeEq::<
10207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10208                    >(_) => {}
10209                }
10210            }
10211            #[automatically_derived]
10212            #[doc(hidden)]
10213            impl ::core::convert::From<renounceOwnershipCall>
10214            for UnderlyingRustTuple<'_> {
10215                fn from(value: renounceOwnershipCall) -> Self {
10216                    ()
10217                }
10218            }
10219            #[automatically_derived]
10220            #[doc(hidden)]
10221            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10222            for renounceOwnershipCall {
10223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10224                    Self
10225                }
10226            }
10227        }
10228        {
10229            #[doc(hidden)]
10230            #[allow(dead_code)]
10231            type UnderlyingSolTuple<'a> = ();
10232            #[doc(hidden)]
10233            type UnderlyingRustTuple<'a> = ();
10234            #[cfg(test)]
10235            #[allow(dead_code, unreachable_patterns)]
10236            fn _type_assertion(
10237                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10238            ) {
10239                match _t {
10240                    alloy_sol_types::private::AssertTypeEq::<
10241                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10242                    >(_) => {}
10243                }
10244            }
10245            #[automatically_derived]
10246            #[doc(hidden)]
10247            impl ::core::convert::From<renounceOwnershipReturn>
10248            for UnderlyingRustTuple<'_> {
10249                fn from(value: renounceOwnershipReturn) -> Self {
10250                    ()
10251                }
10252            }
10253            #[automatically_derived]
10254            #[doc(hidden)]
10255            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10256            for renounceOwnershipReturn {
10257                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10258                    Self {}
10259                }
10260            }
10261        }
10262        impl renounceOwnershipReturn {
10263            fn _tokenize(
10264                &self,
10265            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10266                ()
10267            }
10268        }
10269        #[automatically_derived]
10270        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10271            type Parameters<'a> = ();
10272            type Token<'a> = <Self::Parameters<
10273                'a,
10274            > as alloy_sol_types::SolType>::Token<'a>;
10275            type Return = renounceOwnershipReturn;
10276            type ReturnTuple<'a> = ();
10277            type ReturnToken<'a> = <Self::ReturnTuple<
10278                'a,
10279            > as alloy_sol_types::SolType>::Token<'a>;
10280            const SIGNATURE: &'static str = "renounceOwnership()";
10281            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10282            #[inline]
10283            fn new<'a>(
10284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10285            ) -> Self {
10286                tuple.into()
10287            }
10288            #[inline]
10289            fn tokenize(&self) -> Self::Token<'_> {
10290                ()
10291            }
10292            #[inline]
10293            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10294                renounceOwnershipReturn::_tokenize(ret)
10295            }
10296            #[inline]
10297            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10298                <Self::ReturnTuple<
10299                    '_,
10300                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10301                    .map(Into::into)
10302            }
10303            #[inline]
10304            fn abi_decode_returns_with_config(
10305                data: &[u8],
10306                config: alloy_sol_types::abi::AbiDecoderConfig,
10307            ) -> alloy_sol_types::Result<Self::Return> {
10308                <Self::ReturnTuple<
10309                    '_,
10310                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10311                        data,
10312                        config,
10313                    )
10314                    .map(Into::into)
10315            }
10316            #[inline]
10317            fn abi_decode_returns_validate(
10318                data: &[u8],
10319            ) -> alloy_sol_types::Result<Self::Return> {
10320                Self::abi_decode_returns_with_config(
10321                    data,
10322                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10323                )
10324            }
10325        }
10326    };
10327    #[derive(serde::Serialize, serde::Deserialize)]
10328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10329    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
10330```solidity
10331function setFinalizedState(LightClient.LightClientState memory state) external;
10332```*/
10333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10334    #[derive(Clone)]
10335    pub struct setFinalizedStateCall {
10336        #[allow(missing_docs)]
10337        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10338    }
10339    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
10340    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10341    #[derive(Clone)]
10342    pub struct setFinalizedStateReturn {}
10343    #[allow(
10344        non_camel_case_types,
10345        non_snake_case,
10346        clippy::pub_underscore_fields,
10347        clippy::style
10348    )]
10349    const _: () = {
10350        use alloy::sol_types as alloy_sol_types;
10351        {
10352            #[doc(hidden)]
10353            #[allow(dead_code)]
10354            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
10355            #[doc(hidden)]
10356            type UnderlyingRustTuple<'a> = (
10357                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10358            );
10359            #[cfg(test)]
10360            #[allow(dead_code, unreachable_patterns)]
10361            fn _type_assertion(
10362                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10363            ) {
10364                match _t {
10365                    alloy_sol_types::private::AssertTypeEq::<
10366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10367                    >(_) => {}
10368                }
10369            }
10370            #[automatically_derived]
10371            #[doc(hidden)]
10372            impl ::core::convert::From<setFinalizedStateCall>
10373            for UnderlyingRustTuple<'_> {
10374                fn from(value: setFinalizedStateCall) -> Self {
10375                    (value.state,)
10376                }
10377            }
10378            #[automatically_derived]
10379            #[doc(hidden)]
10380            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10381            for setFinalizedStateCall {
10382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10383                    Self { state: tuple.0 }
10384                }
10385            }
10386        }
10387        {
10388            #[doc(hidden)]
10389            #[allow(dead_code)]
10390            type UnderlyingSolTuple<'a> = ();
10391            #[doc(hidden)]
10392            type UnderlyingRustTuple<'a> = ();
10393            #[cfg(test)]
10394            #[allow(dead_code, unreachable_patterns)]
10395            fn _type_assertion(
10396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10397            ) {
10398                match _t {
10399                    alloy_sol_types::private::AssertTypeEq::<
10400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10401                    >(_) => {}
10402                }
10403            }
10404            #[automatically_derived]
10405            #[doc(hidden)]
10406            impl ::core::convert::From<setFinalizedStateReturn>
10407            for UnderlyingRustTuple<'_> {
10408                fn from(value: setFinalizedStateReturn) -> Self {
10409                    ()
10410                }
10411            }
10412            #[automatically_derived]
10413            #[doc(hidden)]
10414            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10415            for setFinalizedStateReturn {
10416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10417                    Self {}
10418                }
10419            }
10420        }
10421        impl setFinalizedStateReturn {
10422            fn _tokenize(
10423                &self,
10424            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10425                ()
10426            }
10427        }
10428        #[automatically_derived]
10429        impl alloy_sol_types::SolCall for setFinalizedStateCall {
10430            type Parameters<'a> = (LightClient::LightClientState,);
10431            type Token<'a> = <Self::Parameters<
10432                'a,
10433            > as alloy_sol_types::SolType>::Token<'a>;
10434            type Return = setFinalizedStateReturn;
10435            type ReturnTuple<'a> = ();
10436            type ReturnToken<'a> = <Self::ReturnTuple<
10437                'a,
10438            > as alloy_sol_types::SolType>::Token<'a>;
10439            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
10440            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
10441            #[inline]
10442            fn new<'a>(
10443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10444            ) -> Self {
10445                tuple.into()
10446            }
10447            #[inline]
10448            fn tokenize(&self) -> Self::Token<'_> {
10449                (
10450                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10451                        &self.state,
10452                    ),
10453                )
10454            }
10455            #[inline]
10456            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10457                setFinalizedStateReturn::_tokenize(ret)
10458            }
10459            #[inline]
10460            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10461                <Self::ReturnTuple<
10462                    '_,
10463                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10464                    .map(Into::into)
10465            }
10466            #[inline]
10467            fn abi_decode_returns_with_config(
10468                data: &[u8],
10469                config: alloy_sol_types::abi::AbiDecoderConfig,
10470            ) -> alloy_sol_types::Result<Self::Return> {
10471                <Self::ReturnTuple<
10472                    '_,
10473                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10474                        data,
10475                        config,
10476                    )
10477                    .map(Into::into)
10478            }
10479            #[inline]
10480            fn abi_decode_returns_validate(
10481                data: &[u8],
10482            ) -> alloy_sol_types::Result<Self::Return> {
10483                Self::abi_decode_returns_with_config(
10484                    data,
10485                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10486                )
10487            }
10488        }
10489    };
10490    #[derive(serde::Serialize, serde::Deserialize)]
10491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10492    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
10493```solidity
10494function setHotShotDownSince(uint256 l1Height) external;
10495```*/
10496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10497    #[derive(Clone)]
10498    pub struct setHotShotDownSinceCall {
10499        #[allow(missing_docs)]
10500        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
10501    }
10502    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
10503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10504    #[derive(Clone)]
10505    pub struct setHotShotDownSinceReturn {}
10506    #[allow(
10507        non_camel_case_types,
10508        non_snake_case,
10509        clippy::pub_underscore_fields,
10510        clippy::style
10511    )]
10512    const _: () = {
10513        use alloy::sol_types as alloy_sol_types;
10514        {
10515            #[doc(hidden)]
10516            #[allow(dead_code)]
10517            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10518            #[doc(hidden)]
10519            type UnderlyingRustTuple<'a> = (
10520                alloy::sol_types::private::primitives::aliases::U256,
10521            );
10522            #[cfg(test)]
10523            #[allow(dead_code, unreachable_patterns)]
10524            fn _type_assertion(
10525                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10526            ) {
10527                match _t {
10528                    alloy_sol_types::private::AssertTypeEq::<
10529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10530                    >(_) => {}
10531                }
10532            }
10533            #[automatically_derived]
10534            #[doc(hidden)]
10535            impl ::core::convert::From<setHotShotDownSinceCall>
10536            for UnderlyingRustTuple<'_> {
10537                fn from(value: setHotShotDownSinceCall) -> Self {
10538                    (value.l1Height,)
10539                }
10540            }
10541            #[automatically_derived]
10542            #[doc(hidden)]
10543            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10544            for setHotShotDownSinceCall {
10545                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10546                    Self { l1Height: tuple.0 }
10547                }
10548            }
10549        }
10550        {
10551            #[doc(hidden)]
10552            #[allow(dead_code)]
10553            type UnderlyingSolTuple<'a> = ();
10554            #[doc(hidden)]
10555            type UnderlyingRustTuple<'a> = ();
10556            #[cfg(test)]
10557            #[allow(dead_code, unreachable_patterns)]
10558            fn _type_assertion(
10559                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10560            ) {
10561                match _t {
10562                    alloy_sol_types::private::AssertTypeEq::<
10563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10564                    >(_) => {}
10565                }
10566            }
10567            #[automatically_derived]
10568            #[doc(hidden)]
10569            impl ::core::convert::From<setHotShotDownSinceReturn>
10570            for UnderlyingRustTuple<'_> {
10571                fn from(value: setHotShotDownSinceReturn) -> Self {
10572                    ()
10573                }
10574            }
10575            #[automatically_derived]
10576            #[doc(hidden)]
10577            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10578            for setHotShotDownSinceReturn {
10579                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10580                    Self {}
10581                }
10582            }
10583        }
10584        impl setHotShotDownSinceReturn {
10585            fn _tokenize(
10586                &self,
10587            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10588                ()
10589            }
10590        }
10591        #[automatically_derived]
10592        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
10593            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10594            type Token<'a> = <Self::Parameters<
10595                'a,
10596            > as alloy_sol_types::SolType>::Token<'a>;
10597            type Return = setHotShotDownSinceReturn;
10598            type ReturnTuple<'a> = ();
10599            type ReturnToken<'a> = <Self::ReturnTuple<
10600                'a,
10601            > as alloy_sol_types::SolType>::Token<'a>;
10602            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
10603            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
10604            #[inline]
10605            fn new<'a>(
10606                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10607            ) -> Self {
10608                tuple.into()
10609            }
10610            #[inline]
10611            fn tokenize(&self) -> Self::Token<'_> {
10612                (
10613                    <alloy::sol_types::sol_data::Uint<
10614                        256,
10615                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
10616                )
10617            }
10618            #[inline]
10619            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10620                setHotShotDownSinceReturn::_tokenize(ret)
10621            }
10622            #[inline]
10623            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10624                <Self::ReturnTuple<
10625                    '_,
10626                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10627                    .map(Into::into)
10628            }
10629            #[inline]
10630            fn abi_decode_returns_with_config(
10631                data: &[u8],
10632                config: alloy_sol_types::abi::AbiDecoderConfig,
10633            ) -> alloy_sol_types::Result<Self::Return> {
10634                <Self::ReturnTuple<
10635                    '_,
10636                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10637                        data,
10638                        config,
10639                    )
10640                    .map(Into::into)
10641            }
10642            #[inline]
10643            fn abi_decode_returns_validate(
10644                data: &[u8],
10645            ) -> alloy_sol_types::Result<Self::Return> {
10646                Self::abi_decode_returns_with_config(
10647                    data,
10648                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10649                )
10650            }
10651        }
10652    };
10653    #[derive(serde::Serialize, serde::Deserialize)]
10654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10655    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
10656```solidity
10657function setHotShotUp() external;
10658```*/
10659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10660    #[derive(Clone)]
10661    pub struct setHotShotUpCall;
10662    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
10663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10664    #[derive(Clone)]
10665    pub struct setHotShotUpReturn {}
10666    #[allow(
10667        non_camel_case_types,
10668        non_snake_case,
10669        clippy::pub_underscore_fields,
10670        clippy::style
10671    )]
10672    const _: () = {
10673        use alloy::sol_types as alloy_sol_types;
10674        {
10675            #[doc(hidden)]
10676            #[allow(dead_code)]
10677            type UnderlyingSolTuple<'a> = ();
10678            #[doc(hidden)]
10679            type UnderlyingRustTuple<'a> = ();
10680            #[cfg(test)]
10681            #[allow(dead_code, unreachable_patterns)]
10682            fn _type_assertion(
10683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10684            ) {
10685                match _t {
10686                    alloy_sol_types::private::AssertTypeEq::<
10687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10688                    >(_) => {}
10689                }
10690            }
10691            #[automatically_derived]
10692            #[doc(hidden)]
10693            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
10694                fn from(value: setHotShotUpCall) -> Self {
10695                    ()
10696                }
10697            }
10698            #[automatically_derived]
10699            #[doc(hidden)]
10700            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
10701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10702                    Self
10703                }
10704            }
10705        }
10706        {
10707            #[doc(hidden)]
10708            #[allow(dead_code)]
10709            type UnderlyingSolTuple<'a> = ();
10710            #[doc(hidden)]
10711            type UnderlyingRustTuple<'a> = ();
10712            #[cfg(test)]
10713            #[allow(dead_code, unreachable_patterns)]
10714            fn _type_assertion(
10715                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10716            ) {
10717                match _t {
10718                    alloy_sol_types::private::AssertTypeEq::<
10719                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10720                    >(_) => {}
10721                }
10722            }
10723            #[automatically_derived]
10724            #[doc(hidden)]
10725            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
10726                fn from(value: setHotShotUpReturn) -> Self {
10727                    ()
10728                }
10729            }
10730            #[automatically_derived]
10731            #[doc(hidden)]
10732            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
10733                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10734                    Self {}
10735                }
10736            }
10737        }
10738        impl setHotShotUpReturn {
10739            fn _tokenize(
10740                &self,
10741            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10742                ()
10743            }
10744        }
10745        #[automatically_derived]
10746        impl alloy_sol_types::SolCall for setHotShotUpCall {
10747            type Parameters<'a> = ();
10748            type Token<'a> = <Self::Parameters<
10749                'a,
10750            > as alloy_sol_types::SolType>::Token<'a>;
10751            type Return = setHotShotUpReturn;
10752            type ReturnTuple<'a> = ();
10753            type ReturnToken<'a> = <Self::ReturnTuple<
10754                'a,
10755            > as alloy_sol_types::SolType>::Token<'a>;
10756            const SIGNATURE: &'static str = "setHotShotUp()";
10757            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
10758            #[inline]
10759            fn new<'a>(
10760                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10761            ) -> Self {
10762                tuple.into()
10763            }
10764            #[inline]
10765            fn tokenize(&self) -> Self::Token<'_> {
10766                ()
10767            }
10768            #[inline]
10769            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10770                setHotShotUpReturn::_tokenize(ret)
10771            }
10772            #[inline]
10773            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10774                <Self::ReturnTuple<
10775                    '_,
10776                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10777                    .map(Into::into)
10778            }
10779            #[inline]
10780            fn abi_decode_returns_with_config(
10781                data: &[u8],
10782                config: alloy_sol_types::abi::AbiDecoderConfig,
10783            ) -> alloy_sol_types::Result<Self::Return> {
10784                <Self::ReturnTuple<
10785                    '_,
10786                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10787                        data,
10788                        config,
10789                    )
10790                    .map(Into::into)
10791            }
10792            #[inline]
10793            fn abi_decode_returns_validate(
10794                data: &[u8],
10795            ) -> alloy_sol_types::Result<Self::Return> {
10796                Self::abi_decode_returns_with_config(
10797                    data,
10798                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10799                )
10800            }
10801        }
10802    };
10803    #[derive(serde::Serialize, serde::Deserialize)]
10804    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10805    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10806```solidity
10807function setPermissionedProver(address prover) external;
10808```*/
10809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10810    #[derive(Clone)]
10811    pub struct setPermissionedProverCall {
10812        #[allow(missing_docs)]
10813        pub prover: alloy::sol_types::private::Address,
10814    }
10815    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10817    #[derive(Clone)]
10818    pub struct setPermissionedProverReturn {}
10819    #[allow(
10820        non_camel_case_types,
10821        non_snake_case,
10822        clippy::pub_underscore_fields,
10823        clippy::style
10824    )]
10825    const _: () = {
10826        use alloy::sol_types as alloy_sol_types;
10827        {
10828            #[doc(hidden)]
10829            #[allow(dead_code)]
10830            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10831            #[doc(hidden)]
10832            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10833            #[cfg(test)]
10834            #[allow(dead_code, unreachable_patterns)]
10835            fn _type_assertion(
10836                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10837            ) {
10838                match _t {
10839                    alloy_sol_types::private::AssertTypeEq::<
10840                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10841                    >(_) => {}
10842                }
10843            }
10844            #[automatically_derived]
10845            #[doc(hidden)]
10846            impl ::core::convert::From<setPermissionedProverCall>
10847            for UnderlyingRustTuple<'_> {
10848                fn from(value: setPermissionedProverCall) -> Self {
10849                    (value.prover,)
10850                }
10851            }
10852            #[automatically_derived]
10853            #[doc(hidden)]
10854            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10855            for setPermissionedProverCall {
10856                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10857                    Self { prover: tuple.0 }
10858                }
10859            }
10860        }
10861        {
10862            #[doc(hidden)]
10863            #[allow(dead_code)]
10864            type UnderlyingSolTuple<'a> = ();
10865            #[doc(hidden)]
10866            type UnderlyingRustTuple<'a> = ();
10867            #[cfg(test)]
10868            #[allow(dead_code, unreachable_patterns)]
10869            fn _type_assertion(
10870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10871            ) {
10872                match _t {
10873                    alloy_sol_types::private::AssertTypeEq::<
10874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10875                    >(_) => {}
10876                }
10877            }
10878            #[automatically_derived]
10879            #[doc(hidden)]
10880            impl ::core::convert::From<setPermissionedProverReturn>
10881            for UnderlyingRustTuple<'_> {
10882                fn from(value: setPermissionedProverReturn) -> Self {
10883                    ()
10884                }
10885            }
10886            #[automatically_derived]
10887            #[doc(hidden)]
10888            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10889            for setPermissionedProverReturn {
10890                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10891                    Self {}
10892                }
10893            }
10894        }
10895        impl setPermissionedProverReturn {
10896            fn _tokenize(
10897                &self,
10898            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
10899                '_,
10900            > {
10901                ()
10902            }
10903        }
10904        #[automatically_derived]
10905        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10906            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10907            type Token<'a> = <Self::Parameters<
10908                'a,
10909            > as alloy_sol_types::SolType>::Token<'a>;
10910            type Return = setPermissionedProverReturn;
10911            type ReturnTuple<'a> = ();
10912            type ReturnToken<'a> = <Self::ReturnTuple<
10913                'a,
10914            > as alloy_sol_types::SolType>::Token<'a>;
10915            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10916            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10917            #[inline]
10918            fn new<'a>(
10919                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10920            ) -> Self {
10921                tuple.into()
10922            }
10923            #[inline]
10924            fn tokenize(&self) -> Self::Token<'_> {
10925                (
10926                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10927                        &self.prover,
10928                    ),
10929                )
10930            }
10931            #[inline]
10932            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10933                setPermissionedProverReturn::_tokenize(ret)
10934            }
10935            #[inline]
10936            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10937                <Self::ReturnTuple<
10938                    '_,
10939                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10940                    .map(Into::into)
10941            }
10942            #[inline]
10943            fn abi_decode_returns_with_config(
10944                data: &[u8],
10945                config: alloy_sol_types::abi::AbiDecoderConfig,
10946            ) -> alloy_sol_types::Result<Self::Return> {
10947                <Self::ReturnTuple<
10948                    '_,
10949                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10950                        data,
10951                        config,
10952                    )
10953                    .map(Into::into)
10954            }
10955            #[inline]
10956            fn abi_decode_returns_validate(
10957                data: &[u8],
10958            ) -> alloy_sol_types::Result<Self::Return> {
10959                Self::abi_decode_returns_with_config(
10960                    data,
10961                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10962                )
10963            }
10964        }
10965    };
10966    #[derive(serde::Serialize, serde::Deserialize)]
10967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10968    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
10969```solidity
10970function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
10971```*/
10972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10973    #[derive(Clone)]
10974    pub struct setStateHistoryCall {
10975        #[allow(missing_docs)]
10976        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
10977            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10978        >,
10979    }
10980    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
10981    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10982    #[derive(Clone)]
10983    pub struct setStateHistoryReturn {}
10984    #[allow(
10985        non_camel_case_types,
10986        non_snake_case,
10987        clippy::pub_underscore_fields,
10988        clippy::style
10989    )]
10990    const _: () = {
10991        use alloy::sol_types as alloy_sol_types;
10992        {
10993            #[doc(hidden)]
10994            #[allow(dead_code)]
10995            type UnderlyingSolTuple<'a> = (
10996                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10997            );
10998            #[doc(hidden)]
10999            type UnderlyingRustTuple<'a> = (
11000                alloy::sol_types::private::Vec<
11001                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
11002                >,
11003            );
11004            #[cfg(test)]
11005            #[allow(dead_code, unreachable_patterns)]
11006            fn _type_assertion(
11007                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11008            ) {
11009                match _t {
11010                    alloy_sol_types::private::AssertTypeEq::<
11011                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11012                    >(_) => {}
11013                }
11014            }
11015            #[automatically_derived]
11016            #[doc(hidden)]
11017            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
11018                fn from(value: setStateHistoryCall) -> Self {
11019                    (value._stateHistoryCommitments,)
11020                }
11021            }
11022            #[automatically_derived]
11023            #[doc(hidden)]
11024            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
11025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11026                    Self {
11027                        _stateHistoryCommitments: tuple.0,
11028                    }
11029                }
11030            }
11031        }
11032        {
11033            #[doc(hidden)]
11034            #[allow(dead_code)]
11035            type UnderlyingSolTuple<'a> = ();
11036            #[doc(hidden)]
11037            type UnderlyingRustTuple<'a> = ();
11038            #[cfg(test)]
11039            #[allow(dead_code, unreachable_patterns)]
11040            fn _type_assertion(
11041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11042            ) {
11043                match _t {
11044                    alloy_sol_types::private::AssertTypeEq::<
11045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11046                    >(_) => {}
11047                }
11048            }
11049            #[automatically_derived]
11050            #[doc(hidden)]
11051            impl ::core::convert::From<setStateHistoryReturn>
11052            for UnderlyingRustTuple<'_> {
11053                fn from(value: setStateHistoryReturn) -> Self {
11054                    ()
11055                }
11056            }
11057            #[automatically_derived]
11058            #[doc(hidden)]
11059            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11060            for setStateHistoryReturn {
11061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11062                    Self {}
11063                }
11064            }
11065        }
11066        impl setStateHistoryReturn {
11067            fn _tokenize(
11068                &self,
11069            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11070                ()
11071            }
11072        }
11073        #[automatically_derived]
11074        impl alloy_sol_types::SolCall for setStateHistoryCall {
11075            type Parameters<'a> = (
11076                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
11077            );
11078            type Token<'a> = <Self::Parameters<
11079                'a,
11080            > as alloy_sol_types::SolType>::Token<'a>;
11081            type Return = setStateHistoryReturn;
11082            type ReturnTuple<'a> = ();
11083            type ReturnToken<'a> = <Self::ReturnTuple<
11084                'a,
11085            > as alloy_sol_types::SolType>::Token<'a>;
11086            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
11087            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
11088            #[inline]
11089            fn new<'a>(
11090                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11091            ) -> Self {
11092                tuple.into()
11093            }
11094            #[inline]
11095            fn tokenize(&self) -> Self::Token<'_> {
11096                (
11097                    <alloy::sol_types::sol_data::Array<
11098                        LightClient::StateHistoryCommitment,
11099                    > as alloy_sol_types::SolType>::tokenize(
11100                        &self._stateHistoryCommitments,
11101                    ),
11102                )
11103            }
11104            #[inline]
11105            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11106                setStateHistoryReturn::_tokenize(ret)
11107            }
11108            #[inline]
11109            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11110                <Self::ReturnTuple<
11111                    '_,
11112                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11113                    .map(Into::into)
11114            }
11115            #[inline]
11116            fn abi_decode_returns_with_config(
11117                data: &[u8],
11118                config: alloy_sol_types::abi::AbiDecoderConfig,
11119            ) -> alloy_sol_types::Result<Self::Return> {
11120                <Self::ReturnTuple<
11121                    '_,
11122                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11123                        data,
11124                        config,
11125                    )
11126                    .map(Into::into)
11127            }
11128            #[inline]
11129            fn abi_decode_returns_validate(
11130                data: &[u8],
11131            ) -> alloy_sol_types::Result<Self::Return> {
11132                Self::abi_decode_returns_with_config(
11133                    data,
11134                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11135                )
11136            }
11137        }
11138    };
11139    #[derive(serde::Serialize, serde::Deserialize)]
11140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11141    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
11142```solidity
11143function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
11144```*/
11145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11146    #[derive(Clone)]
11147    pub struct setstateHistoryRetentionPeriodCall {
11148        #[allow(missing_docs)]
11149        pub historySeconds: u32,
11150    }
11151    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11153    #[derive(Clone)]
11154    pub struct setstateHistoryRetentionPeriodReturn {}
11155    #[allow(
11156        non_camel_case_types,
11157        non_snake_case,
11158        clippy::pub_underscore_fields,
11159        clippy::style
11160    )]
11161    const _: () = {
11162        use alloy::sol_types as alloy_sol_types;
11163        {
11164            #[doc(hidden)]
11165            #[allow(dead_code)]
11166            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11167            #[doc(hidden)]
11168            type UnderlyingRustTuple<'a> = (u32,);
11169            #[cfg(test)]
11170            #[allow(dead_code, unreachable_patterns)]
11171            fn _type_assertion(
11172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11173            ) {
11174                match _t {
11175                    alloy_sol_types::private::AssertTypeEq::<
11176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11177                    >(_) => {}
11178                }
11179            }
11180            #[automatically_derived]
11181            #[doc(hidden)]
11182            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
11183            for UnderlyingRustTuple<'_> {
11184                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
11185                    (value.historySeconds,)
11186                }
11187            }
11188            #[automatically_derived]
11189            #[doc(hidden)]
11190            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11191            for setstateHistoryRetentionPeriodCall {
11192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11193                    Self { historySeconds: tuple.0 }
11194                }
11195            }
11196        }
11197        {
11198            #[doc(hidden)]
11199            #[allow(dead_code)]
11200            type UnderlyingSolTuple<'a> = ();
11201            #[doc(hidden)]
11202            type UnderlyingRustTuple<'a> = ();
11203            #[cfg(test)]
11204            #[allow(dead_code, unreachable_patterns)]
11205            fn _type_assertion(
11206                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11207            ) {
11208                match _t {
11209                    alloy_sol_types::private::AssertTypeEq::<
11210                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11211                    >(_) => {}
11212                }
11213            }
11214            #[automatically_derived]
11215            #[doc(hidden)]
11216            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
11217            for UnderlyingRustTuple<'_> {
11218                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
11219                    ()
11220                }
11221            }
11222            #[automatically_derived]
11223            #[doc(hidden)]
11224            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11225            for setstateHistoryRetentionPeriodReturn {
11226                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11227                    Self {}
11228                }
11229            }
11230        }
11231        impl setstateHistoryRetentionPeriodReturn {
11232            fn _tokenize(
11233                &self,
11234            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
11235                '_,
11236            > {
11237                ()
11238            }
11239        }
11240        #[automatically_derived]
11241        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
11242            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11243            type Token<'a> = <Self::Parameters<
11244                'a,
11245            > as alloy_sol_types::SolType>::Token<'a>;
11246            type Return = setstateHistoryRetentionPeriodReturn;
11247            type ReturnTuple<'a> = ();
11248            type ReturnToken<'a> = <Self::ReturnTuple<
11249                'a,
11250            > as alloy_sol_types::SolType>::Token<'a>;
11251            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
11252            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
11253            #[inline]
11254            fn new<'a>(
11255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11256            ) -> Self {
11257                tuple.into()
11258            }
11259            #[inline]
11260            fn tokenize(&self) -> Self::Token<'_> {
11261                (
11262                    <alloy::sol_types::sol_data::Uint<
11263                        32,
11264                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11265                )
11266            }
11267            #[inline]
11268            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11269                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
11270            }
11271            #[inline]
11272            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11273                <Self::ReturnTuple<
11274                    '_,
11275                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11276                    .map(Into::into)
11277            }
11278            #[inline]
11279            fn abi_decode_returns_with_config(
11280                data: &[u8],
11281                config: alloy_sol_types::abi::AbiDecoderConfig,
11282            ) -> alloy_sol_types::Result<Self::Return> {
11283                <Self::ReturnTuple<
11284                    '_,
11285                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11286                        data,
11287                        config,
11288                    )
11289                    .map(Into::into)
11290            }
11291            #[inline]
11292            fn abi_decode_returns_validate(
11293                data: &[u8],
11294            ) -> alloy_sol_types::Result<Self::Return> {
11295                Self::abi_decode_returns_with_config(
11296                    data,
11297                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11298                )
11299            }
11300        }
11301    };
11302    #[derive(serde::Serialize, serde::Deserialize)]
11303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11304    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
11305```solidity
11306function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
11307```*/
11308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11309    #[derive(Clone)]
11310    pub struct stateHistoryCommitmentsCall(
11311        pub alloy::sol_types::private::primitives::aliases::U256,
11312    );
11313    #[derive(serde::Serialize, serde::Deserialize)]
11314    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11315    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
11316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11317    #[derive(Clone)]
11318    pub struct stateHistoryCommitmentsReturn {
11319        #[allow(missing_docs)]
11320        pub l1BlockHeight: u64,
11321        #[allow(missing_docs)]
11322        pub l1BlockTimestamp: u64,
11323        #[allow(missing_docs)]
11324        pub hotShotBlockHeight: u64,
11325        #[allow(missing_docs)]
11326        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11327    }
11328    #[allow(
11329        non_camel_case_types,
11330        non_snake_case,
11331        clippy::pub_underscore_fields,
11332        clippy::style
11333    )]
11334    const _: () = {
11335        use alloy::sol_types as alloy_sol_types;
11336        {
11337            #[doc(hidden)]
11338            #[allow(dead_code)]
11339            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11340            #[doc(hidden)]
11341            type UnderlyingRustTuple<'a> = (
11342                alloy::sol_types::private::primitives::aliases::U256,
11343            );
11344            #[cfg(test)]
11345            #[allow(dead_code, unreachable_patterns)]
11346            fn _type_assertion(
11347                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11348            ) {
11349                match _t {
11350                    alloy_sol_types::private::AssertTypeEq::<
11351                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11352                    >(_) => {}
11353                }
11354            }
11355            #[automatically_derived]
11356            #[doc(hidden)]
11357            impl ::core::convert::From<stateHistoryCommitmentsCall>
11358            for UnderlyingRustTuple<'_> {
11359                fn from(value: stateHistoryCommitmentsCall) -> Self {
11360                    (value.0,)
11361                }
11362            }
11363            #[automatically_derived]
11364            #[doc(hidden)]
11365            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11366            for stateHistoryCommitmentsCall {
11367                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11368                    Self(tuple.0)
11369                }
11370            }
11371        }
11372        {
11373            #[doc(hidden)]
11374            #[allow(dead_code)]
11375            type UnderlyingSolTuple<'a> = (
11376                alloy::sol_types::sol_data::Uint<64>,
11377                alloy::sol_types::sol_data::Uint<64>,
11378                alloy::sol_types::sol_data::Uint<64>,
11379                BN254::ScalarField,
11380            );
11381            #[doc(hidden)]
11382            type UnderlyingRustTuple<'a> = (
11383                u64,
11384                u64,
11385                u64,
11386                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11387            );
11388            #[cfg(test)]
11389            #[allow(dead_code, unreachable_patterns)]
11390            fn _type_assertion(
11391                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11392            ) {
11393                match _t {
11394                    alloy_sol_types::private::AssertTypeEq::<
11395                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11396                    >(_) => {}
11397                }
11398            }
11399            #[automatically_derived]
11400            #[doc(hidden)]
11401            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11402            for UnderlyingRustTuple<'_> {
11403                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11404                    (
11405                        value.l1BlockHeight,
11406                        value.l1BlockTimestamp,
11407                        value.hotShotBlockHeight,
11408                        value.hotShotBlockCommRoot,
11409                    )
11410                }
11411            }
11412            #[automatically_derived]
11413            #[doc(hidden)]
11414            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11415            for stateHistoryCommitmentsReturn {
11416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11417                    Self {
11418                        l1BlockHeight: tuple.0,
11419                        l1BlockTimestamp: tuple.1,
11420                        hotShotBlockHeight: tuple.2,
11421                        hotShotBlockCommRoot: tuple.3,
11422                    }
11423                }
11424            }
11425        }
11426        impl stateHistoryCommitmentsReturn {
11427            fn _tokenize(
11428                &self,
11429            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
11430                '_,
11431            > {
11432                (
11433                    <alloy::sol_types::sol_data::Uint<
11434                        64,
11435                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
11436                    <alloy::sol_types::sol_data::Uint<
11437                        64,
11438                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
11439                    <alloy::sol_types::sol_data::Uint<
11440                        64,
11441                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
11442                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
11443                        &self.hotShotBlockCommRoot,
11444                    ),
11445                )
11446            }
11447        }
11448        #[automatically_derived]
11449        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11450            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11451            type Token<'a> = <Self::Parameters<
11452                'a,
11453            > as alloy_sol_types::SolType>::Token<'a>;
11454            type Return = stateHistoryCommitmentsReturn;
11455            type ReturnTuple<'a> = (
11456                alloy::sol_types::sol_data::Uint<64>,
11457                alloy::sol_types::sol_data::Uint<64>,
11458                alloy::sol_types::sol_data::Uint<64>,
11459                BN254::ScalarField,
11460            );
11461            type ReturnToken<'a> = <Self::ReturnTuple<
11462                'a,
11463            > as alloy_sol_types::SolType>::Token<'a>;
11464            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11465            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11466            #[inline]
11467            fn new<'a>(
11468                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11469            ) -> Self {
11470                tuple.into()
11471            }
11472            #[inline]
11473            fn tokenize(&self) -> Self::Token<'_> {
11474                (
11475                    <alloy::sol_types::sol_data::Uint<
11476                        256,
11477                    > as alloy_sol_types::SolType>::tokenize(&self.0),
11478                )
11479            }
11480            #[inline]
11481            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11482                stateHistoryCommitmentsReturn::_tokenize(ret)
11483            }
11484            #[inline]
11485            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11486                <Self::ReturnTuple<
11487                    '_,
11488                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11489                    .map(Into::into)
11490            }
11491            #[inline]
11492            fn abi_decode_returns_with_config(
11493                data: &[u8],
11494                config: alloy_sol_types::abi::AbiDecoderConfig,
11495            ) -> alloy_sol_types::Result<Self::Return> {
11496                <Self::ReturnTuple<
11497                    '_,
11498                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11499                        data,
11500                        config,
11501                    )
11502                    .map(Into::into)
11503            }
11504            #[inline]
11505            fn abi_decode_returns_validate(
11506                data: &[u8],
11507            ) -> alloy_sol_types::Result<Self::Return> {
11508                Self::abi_decode_returns_with_config(
11509                    data,
11510                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11511                )
11512            }
11513        }
11514    };
11515    #[derive(serde::Serialize, serde::Deserialize)]
11516    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11517    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11518```solidity
11519function stateHistoryFirstIndex() external view returns (uint64);
11520```*/
11521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11522    #[derive(Clone)]
11523    pub struct stateHistoryFirstIndexCall;
11524    #[derive(serde::Serialize, serde::Deserialize)]
11525    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11526    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11527    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11528    #[derive(Clone)]
11529    pub struct stateHistoryFirstIndexReturn {
11530        #[allow(missing_docs)]
11531        pub _0: u64,
11532    }
11533    #[allow(
11534        non_camel_case_types,
11535        non_snake_case,
11536        clippy::pub_underscore_fields,
11537        clippy::style
11538    )]
11539    const _: () = {
11540        use alloy::sol_types as alloy_sol_types;
11541        {
11542            #[doc(hidden)]
11543            #[allow(dead_code)]
11544            type UnderlyingSolTuple<'a> = ();
11545            #[doc(hidden)]
11546            type UnderlyingRustTuple<'a> = ();
11547            #[cfg(test)]
11548            #[allow(dead_code, unreachable_patterns)]
11549            fn _type_assertion(
11550                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11551            ) {
11552                match _t {
11553                    alloy_sol_types::private::AssertTypeEq::<
11554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11555                    >(_) => {}
11556                }
11557            }
11558            #[automatically_derived]
11559            #[doc(hidden)]
11560            impl ::core::convert::From<stateHistoryFirstIndexCall>
11561            for UnderlyingRustTuple<'_> {
11562                fn from(value: stateHistoryFirstIndexCall) -> Self {
11563                    ()
11564                }
11565            }
11566            #[automatically_derived]
11567            #[doc(hidden)]
11568            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11569            for stateHistoryFirstIndexCall {
11570                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11571                    Self
11572                }
11573            }
11574        }
11575        {
11576            #[doc(hidden)]
11577            #[allow(dead_code)]
11578            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11579            #[doc(hidden)]
11580            type UnderlyingRustTuple<'a> = (u64,);
11581            #[cfg(test)]
11582            #[allow(dead_code, unreachable_patterns)]
11583            fn _type_assertion(
11584                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11585            ) {
11586                match _t {
11587                    alloy_sol_types::private::AssertTypeEq::<
11588                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11589                    >(_) => {}
11590                }
11591            }
11592            #[automatically_derived]
11593            #[doc(hidden)]
11594            impl ::core::convert::From<stateHistoryFirstIndexReturn>
11595            for UnderlyingRustTuple<'_> {
11596                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11597                    (value._0,)
11598                }
11599            }
11600            #[automatically_derived]
11601            #[doc(hidden)]
11602            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11603            for stateHistoryFirstIndexReturn {
11604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11605                    Self { _0: tuple.0 }
11606                }
11607            }
11608        }
11609        #[automatically_derived]
11610        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11611            type Parameters<'a> = ();
11612            type Token<'a> = <Self::Parameters<
11613                'a,
11614            > as alloy_sol_types::SolType>::Token<'a>;
11615            type Return = u64;
11616            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11617            type ReturnToken<'a> = <Self::ReturnTuple<
11618                'a,
11619            > as alloy_sol_types::SolType>::Token<'a>;
11620            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11621            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11622            #[inline]
11623            fn new<'a>(
11624                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11625            ) -> Self {
11626                tuple.into()
11627            }
11628            #[inline]
11629            fn tokenize(&self) -> Self::Token<'_> {
11630                ()
11631            }
11632            #[inline]
11633            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11634                (
11635                    <alloy::sol_types::sol_data::Uint<
11636                        64,
11637                    > as alloy_sol_types::SolType>::tokenize(ret),
11638                )
11639            }
11640            #[inline]
11641            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11642                <Self::ReturnTuple<
11643                    '_,
11644                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11645                    .map(|r| {
11646                        let r: stateHistoryFirstIndexReturn = r.into();
11647                        r._0
11648                    })
11649            }
11650            #[inline]
11651            fn abi_decode_returns_with_config(
11652                data: &[u8],
11653                config: alloy_sol_types::abi::AbiDecoderConfig,
11654            ) -> alloy_sol_types::Result<Self::Return> {
11655                <Self::ReturnTuple<
11656                    '_,
11657                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11658                        data,
11659                        config,
11660                    )
11661                    .map(|r| {
11662                        let r: stateHistoryFirstIndexReturn = r.into();
11663                        r._0
11664                    })
11665            }
11666            #[inline]
11667            fn abi_decode_returns_validate(
11668                data: &[u8],
11669            ) -> alloy_sol_types::Result<Self::Return> {
11670                Self::abi_decode_returns_with_config(
11671                    data,
11672                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11673                )
11674            }
11675        }
11676    };
11677    #[derive(serde::Serialize, serde::Deserialize)]
11678    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11679    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11680```solidity
11681function stateHistoryRetentionPeriod() external view returns (uint32);
11682```*/
11683    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11684    #[derive(Clone)]
11685    pub struct stateHistoryRetentionPeriodCall;
11686    #[derive(serde::Serialize, serde::Deserialize)]
11687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11688    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11690    #[derive(Clone)]
11691    pub struct stateHistoryRetentionPeriodReturn {
11692        #[allow(missing_docs)]
11693        pub _0: u32,
11694    }
11695    #[allow(
11696        non_camel_case_types,
11697        non_snake_case,
11698        clippy::pub_underscore_fields,
11699        clippy::style
11700    )]
11701    const _: () = {
11702        use alloy::sol_types as alloy_sol_types;
11703        {
11704            #[doc(hidden)]
11705            #[allow(dead_code)]
11706            type UnderlyingSolTuple<'a> = ();
11707            #[doc(hidden)]
11708            type UnderlyingRustTuple<'a> = ();
11709            #[cfg(test)]
11710            #[allow(dead_code, unreachable_patterns)]
11711            fn _type_assertion(
11712                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11713            ) {
11714                match _t {
11715                    alloy_sol_types::private::AssertTypeEq::<
11716                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11717                    >(_) => {}
11718                }
11719            }
11720            #[automatically_derived]
11721            #[doc(hidden)]
11722            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
11723            for UnderlyingRustTuple<'_> {
11724                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11725                    ()
11726                }
11727            }
11728            #[automatically_derived]
11729            #[doc(hidden)]
11730            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11731            for stateHistoryRetentionPeriodCall {
11732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11733                    Self
11734                }
11735            }
11736        }
11737        {
11738            #[doc(hidden)]
11739            #[allow(dead_code)]
11740            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11741            #[doc(hidden)]
11742            type UnderlyingRustTuple<'a> = (u32,);
11743            #[cfg(test)]
11744            #[allow(dead_code, unreachable_patterns)]
11745            fn _type_assertion(
11746                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11747            ) {
11748                match _t {
11749                    alloy_sol_types::private::AssertTypeEq::<
11750                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11751                    >(_) => {}
11752                }
11753            }
11754            #[automatically_derived]
11755            #[doc(hidden)]
11756            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
11757            for UnderlyingRustTuple<'_> {
11758                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11759                    (value._0,)
11760                }
11761            }
11762            #[automatically_derived]
11763            #[doc(hidden)]
11764            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11765            for stateHistoryRetentionPeriodReturn {
11766                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11767                    Self { _0: tuple.0 }
11768                }
11769            }
11770        }
11771        #[automatically_derived]
11772        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11773            type Parameters<'a> = ();
11774            type Token<'a> = <Self::Parameters<
11775                'a,
11776            > as alloy_sol_types::SolType>::Token<'a>;
11777            type Return = u32;
11778            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11779            type ReturnToken<'a> = <Self::ReturnTuple<
11780                'a,
11781            > as alloy_sol_types::SolType>::Token<'a>;
11782            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11783            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11784            #[inline]
11785            fn new<'a>(
11786                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11787            ) -> Self {
11788                tuple.into()
11789            }
11790            #[inline]
11791            fn tokenize(&self) -> Self::Token<'_> {
11792                ()
11793            }
11794            #[inline]
11795            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11796                (
11797                    <alloy::sol_types::sol_data::Uint<
11798                        32,
11799                    > as alloy_sol_types::SolType>::tokenize(ret),
11800                )
11801            }
11802            #[inline]
11803            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11804                <Self::ReturnTuple<
11805                    '_,
11806                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11807                    .map(|r| {
11808                        let r: stateHistoryRetentionPeriodReturn = r.into();
11809                        r._0
11810                    })
11811            }
11812            #[inline]
11813            fn abi_decode_returns_with_config(
11814                data: &[u8],
11815                config: alloy_sol_types::abi::AbiDecoderConfig,
11816            ) -> alloy_sol_types::Result<Self::Return> {
11817                <Self::ReturnTuple<
11818                    '_,
11819                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11820                        data,
11821                        config,
11822                    )
11823                    .map(|r| {
11824                        let r: stateHistoryRetentionPeriodReturn = r.into();
11825                        r._0
11826                    })
11827            }
11828            #[inline]
11829            fn abi_decode_returns_validate(
11830                data: &[u8],
11831            ) -> alloy_sol_types::Result<Self::Return> {
11832                Self::abi_decode_returns_with_config(
11833                    data,
11834                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11835                )
11836            }
11837        }
11838    };
11839    #[derive(serde::Serialize, serde::Deserialize)]
11840    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11841    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11842```solidity
11843function transferOwnership(address newOwner) external;
11844```*/
11845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11846    #[derive(Clone)]
11847    pub struct transferOwnershipCall {
11848        #[allow(missing_docs)]
11849        pub newOwner: alloy::sol_types::private::Address,
11850    }
11851    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11853    #[derive(Clone)]
11854    pub struct transferOwnershipReturn {}
11855    #[allow(
11856        non_camel_case_types,
11857        non_snake_case,
11858        clippy::pub_underscore_fields,
11859        clippy::style
11860    )]
11861    const _: () = {
11862        use alloy::sol_types as alloy_sol_types;
11863        {
11864            #[doc(hidden)]
11865            #[allow(dead_code)]
11866            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11867            #[doc(hidden)]
11868            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11869            #[cfg(test)]
11870            #[allow(dead_code, unreachable_patterns)]
11871            fn _type_assertion(
11872                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11873            ) {
11874                match _t {
11875                    alloy_sol_types::private::AssertTypeEq::<
11876                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11877                    >(_) => {}
11878                }
11879            }
11880            #[automatically_derived]
11881            #[doc(hidden)]
11882            impl ::core::convert::From<transferOwnershipCall>
11883            for UnderlyingRustTuple<'_> {
11884                fn from(value: transferOwnershipCall) -> Self {
11885                    (value.newOwner,)
11886                }
11887            }
11888            #[automatically_derived]
11889            #[doc(hidden)]
11890            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11891            for transferOwnershipCall {
11892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11893                    Self { newOwner: tuple.0 }
11894                }
11895            }
11896        }
11897        {
11898            #[doc(hidden)]
11899            #[allow(dead_code)]
11900            type UnderlyingSolTuple<'a> = ();
11901            #[doc(hidden)]
11902            type UnderlyingRustTuple<'a> = ();
11903            #[cfg(test)]
11904            #[allow(dead_code, unreachable_patterns)]
11905            fn _type_assertion(
11906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11907            ) {
11908                match _t {
11909                    alloy_sol_types::private::AssertTypeEq::<
11910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11911                    >(_) => {}
11912                }
11913            }
11914            #[automatically_derived]
11915            #[doc(hidden)]
11916            impl ::core::convert::From<transferOwnershipReturn>
11917            for UnderlyingRustTuple<'_> {
11918                fn from(value: transferOwnershipReturn) -> Self {
11919                    ()
11920                }
11921            }
11922            #[automatically_derived]
11923            #[doc(hidden)]
11924            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11925            for transferOwnershipReturn {
11926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11927                    Self {}
11928                }
11929            }
11930        }
11931        impl transferOwnershipReturn {
11932            fn _tokenize(
11933                &self,
11934            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11935                ()
11936            }
11937        }
11938        #[automatically_derived]
11939        impl alloy_sol_types::SolCall for transferOwnershipCall {
11940            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11941            type Token<'a> = <Self::Parameters<
11942                'a,
11943            > as alloy_sol_types::SolType>::Token<'a>;
11944            type Return = transferOwnershipReturn;
11945            type ReturnTuple<'a> = ();
11946            type ReturnToken<'a> = <Self::ReturnTuple<
11947                'a,
11948            > as alloy_sol_types::SolType>::Token<'a>;
11949            const SIGNATURE: &'static str = "transferOwnership(address)";
11950            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11951            #[inline]
11952            fn new<'a>(
11953                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11954            ) -> Self {
11955                tuple.into()
11956            }
11957            #[inline]
11958            fn tokenize(&self) -> Self::Token<'_> {
11959                (
11960                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11961                        &self.newOwner,
11962                    ),
11963                )
11964            }
11965            #[inline]
11966            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11967                transferOwnershipReturn::_tokenize(ret)
11968            }
11969            #[inline]
11970            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11971                <Self::ReturnTuple<
11972                    '_,
11973                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11974                    .map(Into::into)
11975            }
11976            #[inline]
11977            fn abi_decode_returns_with_config(
11978                data: &[u8],
11979                config: alloy_sol_types::abi::AbiDecoderConfig,
11980            ) -> alloy_sol_types::Result<Self::Return> {
11981                <Self::ReturnTuple<
11982                    '_,
11983                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11984                        data,
11985                        config,
11986                    )
11987                    .map(Into::into)
11988            }
11989            #[inline]
11990            fn abi_decode_returns_validate(
11991                data: &[u8],
11992            ) -> alloy_sol_types::Result<Self::Return> {
11993                Self::abi_decode_returns_with_config(
11994                    data,
11995                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11996                )
11997            }
11998        }
11999    };
12000    #[derive(serde::Serialize, serde::Deserialize)]
12001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12002    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
12003```solidity
12004function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
12005```*/
12006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12007    #[derive(Clone)]
12008    pub struct upgradeToAndCallCall {
12009        #[allow(missing_docs)]
12010        pub newImplementation: alloy::sol_types::private::Address,
12011        #[allow(missing_docs)]
12012        pub data: alloy::sol_types::private::Bytes,
12013    }
12014    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
12015    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12016    #[derive(Clone)]
12017    pub struct upgradeToAndCallReturn {}
12018    #[allow(
12019        non_camel_case_types,
12020        non_snake_case,
12021        clippy::pub_underscore_fields,
12022        clippy::style
12023    )]
12024    const _: () = {
12025        use alloy::sol_types as alloy_sol_types;
12026        {
12027            #[doc(hidden)]
12028            #[allow(dead_code)]
12029            type UnderlyingSolTuple<'a> = (
12030                alloy::sol_types::sol_data::Address,
12031                alloy::sol_types::sol_data::Bytes,
12032            );
12033            #[doc(hidden)]
12034            type UnderlyingRustTuple<'a> = (
12035                alloy::sol_types::private::Address,
12036                alloy::sol_types::private::Bytes,
12037            );
12038            #[cfg(test)]
12039            #[allow(dead_code, unreachable_patterns)]
12040            fn _type_assertion(
12041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12042            ) {
12043                match _t {
12044                    alloy_sol_types::private::AssertTypeEq::<
12045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12046                    >(_) => {}
12047                }
12048            }
12049            #[automatically_derived]
12050            #[doc(hidden)]
12051            impl ::core::convert::From<upgradeToAndCallCall>
12052            for UnderlyingRustTuple<'_> {
12053                fn from(value: upgradeToAndCallCall) -> Self {
12054                    (value.newImplementation, value.data)
12055                }
12056            }
12057            #[automatically_derived]
12058            #[doc(hidden)]
12059            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12060            for upgradeToAndCallCall {
12061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12062                    Self {
12063                        newImplementation: tuple.0,
12064                        data: tuple.1,
12065                    }
12066                }
12067            }
12068        }
12069        {
12070            #[doc(hidden)]
12071            #[allow(dead_code)]
12072            type UnderlyingSolTuple<'a> = ();
12073            #[doc(hidden)]
12074            type UnderlyingRustTuple<'a> = ();
12075            #[cfg(test)]
12076            #[allow(dead_code, unreachable_patterns)]
12077            fn _type_assertion(
12078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12079            ) {
12080                match _t {
12081                    alloy_sol_types::private::AssertTypeEq::<
12082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12083                    >(_) => {}
12084                }
12085            }
12086            #[automatically_derived]
12087            #[doc(hidden)]
12088            impl ::core::convert::From<upgradeToAndCallReturn>
12089            for UnderlyingRustTuple<'_> {
12090                fn from(value: upgradeToAndCallReturn) -> Self {
12091                    ()
12092                }
12093            }
12094            #[automatically_derived]
12095            #[doc(hidden)]
12096            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12097            for upgradeToAndCallReturn {
12098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12099                    Self {}
12100                }
12101            }
12102        }
12103        impl upgradeToAndCallReturn {
12104            fn _tokenize(
12105                &self,
12106            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12107                ()
12108            }
12109        }
12110        #[automatically_derived]
12111        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
12112            type Parameters<'a> = (
12113                alloy::sol_types::sol_data::Address,
12114                alloy::sol_types::sol_data::Bytes,
12115            );
12116            type Token<'a> = <Self::Parameters<
12117                'a,
12118            > as alloy_sol_types::SolType>::Token<'a>;
12119            type Return = upgradeToAndCallReturn;
12120            type ReturnTuple<'a> = ();
12121            type ReturnToken<'a> = <Self::ReturnTuple<
12122                'a,
12123            > as alloy_sol_types::SolType>::Token<'a>;
12124            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
12125            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
12126            #[inline]
12127            fn new<'a>(
12128                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12129            ) -> Self {
12130                tuple.into()
12131            }
12132            #[inline]
12133            fn tokenize(&self) -> Self::Token<'_> {
12134                (
12135                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12136                        &self.newImplementation,
12137                    ),
12138                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
12139                        &self.data,
12140                    ),
12141                )
12142            }
12143            #[inline]
12144            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12145                upgradeToAndCallReturn::_tokenize(ret)
12146            }
12147            #[inline]
12148            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12149                <Self::ReturnTuple<
12150                    '_,
12151                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12152                    .map(Into::into)
12153            }
12154            #[inline]
12155            fn abi_decode_returns_with_config(
12156                data: &[u8],
12157                config: alloy_sol_types::abi::AbiDecoderConfig,
12158            ) -> alloy_sol_types::Result<Self::Return> {
12159                <Self::ReturnTuple<
12160                    '_,
12161                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12162                        data,
12163                        config,
12164                    )
12165                    .map(Into::into)
12166            }
12167            #[inline]
12168            fn abi_decode_returns_validate(
12169                data: &[u8],
12170            ) -> alloy_sol_types::Result<Self::Return> {
12171                Self::abi_decode_returns_with_config(
12172                    data,
12173                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12174                )
12175            }
12176        }
12177    };
12178    ///Container for all the [`LightClientMock`](self) function calls.
12179    #[derive(Clone)]
12180    #[derive(serde::Serialize, serde::Deserialize)]
12181    #[derive(Debug, PartialEq, Eq, Hash)]
12182    pub enum LightClientMockCalls {
12183        #[allow(missing_docs)]
12184        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12185        #[allow(missing_docs)]
12186        _getVk(_getVkCall),
12187        #[allow(missing_docs)]
12188        currentBlockNumber(currentBlockNumberCall),
12189        #[allow(missing_docs)]
12190        disablePermissionedProverMode(disablePermissionedProverModeCall),
12191        #[allow(missing_docs)]
12192        finalizedState(finalizedStateCall),
12193        #[allow(missing_docs)]
12194        genesisStakeTableState(genesisStakeTableStateCall),
12195        #[allow(missing_docs)]
12196        genesisState(genesisStateCall),
12197        #[allow(missing_docs)]
12198        getHotShotCommitment(getHotShotCommitmentCall),
12199        #[allow(missing_docs)]
12200        getStateHistoryCount(getStateHistoryCountCall),
12201        #[allow(missing_docs)]
12202        getVersion(getVersionCall),
12203        #[allow(missing_docs)]
12204        initialize(initializeCall),
12205        #[allow(missing_docs)]
12206        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
12207        #[allow(missing_docs)]
12208        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
12209        #[allow(missing_docs)]
12210        newFinalizedState(newFinalizedStateCall),
12211        #[allow(missing_docs)]
12212        owner(ownerCall),
12213        #[allow(missing_docs)]
12214        permissionedProver(permissionedProverCall),
12215        #[allow(missing_docs)]
12216        proxiableUUID(proxiableUUIDCall),
12217        #[allow(missing_docs)]
12218        renounceOwnership(renounceOwnershipCall),
12219        #[allow(missing_docs)]
12220        setFinalizedState(setFinalizedStateCall),
12221        #[allow(missing_docs)]
12222        setHotShotDownSince(setHotShotDownSinceCall),
12223        #[allow(missing_docs)]
12224        setHotShotUp(setHotShotUpCall),
12225        #[allow(missing_docs)]
12226        setPermissionedProver(setPermissionedProverCall),
12227        #[allow(missing_docs)]
12228        setStateHistory(setStateHistoryCall),
12229        #[allow(missing_docs)]
12230        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
12231        #[allow(missing_docs)]
12232        stateHistoryCommitments(stateHistoryCommitmentsCall),
12233        #[allow(missing_docs)]
12234        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
12235        #[allow(missing_docs)]
12236        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
12237        #[allow(missing_docs)]
12238        transferOwnership(transferOwnershipCall),
12239        #[allow(missing_docs)]
12240        upgradeToAndCall(upgradeToAndCallCall),
12241    }
12242    impl LightClientMockCalls {
12243        /// All the selectors of this enum.
12244        ///
12245        /// Note that the selectors might not be in the same order as the variants.
12246        /// No guarantees are made about the order of the selectors.
12247        ///
12248        /// Prefer using `SolInterface` methods instead.
12249        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12250            [1u8, 63u8, 165u8, 252u8],
12251            [2u8, 181u8, 146u8, 243u8],
12252            [13u8, 142u8, 110u8, 44u8],
12253            [18u8, 23u8, 60u8, 44u8],
12254            [32u8, 99u8, 212u8, 247u8],
12255            [45u8, 82u8, 170u8, 214u8],
12256            [47u8, 121u8, 136u8, 157u8],
12257            [49u8, 61u8, 247u8, 177u8],
12258            [55u8, 142u8, 194u8, 59u8],
12259            [66u8, 109u8, 49u8, 148u8],
12260            [79u8, 30u8, 242u8, 134u8],
12261            [82u8, 209u8, 144u8, 45u8],
12262            [105u8, 204u8, 106u8, 4u8],
12263            [113u8, 80u8, 24u8, 166u8],
12264            [130u8, 110u8, 65u8, 252u8],
12265            [133u8, 132u8, 210u8, 63u8],
12266            [141u8, 165u8, 203u8, 91u8],
12267            [150u8, 193u8, 202u8, 97u8],
12268            [155u8, 170u8, 60u8, 201u8],
12269            [159u8, 219u8, 84u8, 167u8],
12270            [173u8, 60u8, 177u8, 204u8],
12271            [181u8, 173u8, 234u8, 60u8],
12272            [194u8, 59u8, 158u8, 158u8],
12273            [200u8, 229u8, 228u8, 152u8],
12274            [210u8, 77u8, 147u8, 61u8],
12275            [224u8, 48u8, 51u8, 1u8],
12276            [242u8, 253u8, 227u8, 139u8],
12277            [245u8, 103u8, 97u8, 96u8],
12278            [249u8, 229u8, 13u8, 25u8],
12279        ];
12280        /// The names of the variants in the same order as `SELECTORS`.
12281        pub const VARIANT_NAMES: &'static [&'static str] = &[
12282            ::core::stringify!(setPermissionedProver),
12283            ::core::stringify!(stateHistoryCommitments),
12284            ::core::stringify!(getVersion),
12285            ::core::stringify!(_getVk),
12286            ::core::stringify!(newFinalizedState),
12287            ::core::stringify!(setHotShotDownSince),
12288            ::core::stringify!(stateHistoryFirstIndex),
12289            ::core::stringify!(permissionedProver),
12290            ::core::stringify!(currentBlockNumber),
12291            ::core::stringify!(genesisStakeTableState),
12292            ::core::stringify!(upgradeToAndCall),
12293            ::core::stringify!(proxiableUUID),
12294            ::core::stringify!(disablePermissionedProverMode),
12295            ::core::stringify!(renounceOwnership),
12296            ::core::stringify!(isPermissionedProverEnabled),
12297            ::core::stringify!(getHotShotCommitment),
12298            ::core::stringify!(owner),
12299            ::core::stringify!(setstateHistoryRetentionPeriod),
12300            ::core::stringify!(initialize),
12301            ::core::stringify!(finalizedState),
12302            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
12303            ::core::stringify!(setFinalizedState),
12304            ::core::stringify!(stateHistoryRetentionPeriod),
12305            ::core::stringify!(setHotShotUp),
12306            ::core::stringify!(genesisState),
12307            ::core::stringify!(lagOverEscapeHatchThreshold),
12308            ::core::stringify!(transferOwnership),
12309            ::core::stringify!(setStateHistory),
12310            ::core::stringify!(getStateHistoryCount),
12311        ];
12312        /// The signatures in the same order as `SELECTORS`.
12313        pub const SIGNATURES: &'static [&'static str] = &[
12314            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
12315            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
12316            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
12317            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
12318            <newFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
12319            <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SIGNATURE,
12320            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
12321            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
12322            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
12323            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
12324            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
12325            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
12326            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
12327            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
12328            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
12329            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
12330            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
12331            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
12332            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
12333            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
12334            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
12335            <setFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
12336            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
12337            <setHotShotUpCall as alloy_sol_types::SolCall>::SIGNATURE,
12338            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
12339            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
12340            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
12341            <setStateHistoryCall as alloy_sol_types::SolCall>::SIGNATURE,
12342            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
12343        ];
12344        /// Returns the signature for the given selector, if known.
12345        #[inline]
12346        pub fn signature_by_selector(
12347            selector: [u8; 4usize],
12348        ) -> ::core::option::Option<&'static str> {
12349            match Self::SELECTORS.binary_search(&selector) {
12350                ::core::result::Result::Ok(idx) => {
12351                    ::core::option::Option::Some(Self::SIGNATURES[idx])
12352                }
12353                ::core::result::Result::Err(_) => ::core::option::Option::None,
12354            }
12355        }
12356        /// Returns the enum variant name for the given selector, if known.
12357        #[inline]
12358        pub fn name_by_selector(
12359            selector: [u8; 4usize],
12360        ) -> ::core::option::Option<&'static str> {
12361            let sig = Self::signature_by_selector(selector)?;
12362            sig.split_once('(').map(|(name, _)| name)
12363        }
12364    }
12365    #[automatically_derived]
12366    impl alloy_sol_types::SolInterface for LightClientMockCalls {
12367        const NAME: &'static str = "LightClientMockCalls";
12368        const MIN_DATA_LENGTH: usize = 0usize;
12369        const COUNT: usize = 29usize;
12370        #[inline]
12371        fn selector(&self) -> [u8; 4] {
12372            match self {
12373                Self::UPGRADE_INTERFACE_VERSION(_) => {
12374                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
12375                }
12376                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
12377                Self::currentBlockNumber(_) => {
12378                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12379                }
12380                Self::disablePermissionedProverMode(_) => {
12381                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
12382                }
12383                Self::finalizedState(_) => {
12384                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12385                }
12386                Self::genesisStakeTableState(_) => {
12387                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12388                }
12389                Self::genesisState(_) => {
12390                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
12391                }
12392                Self::getHotShotCommitment(_) => {
12393                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
12394                }
12395                Self::getStateHistoryCount(_) => {
12396                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
12397                }
12398                Self::getVersion(_) => {
12399                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
12400                }
12401                Self::initialize(_) => {
12402                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
12403                }
12404                Self::isPermissionedProverEnabled(_) => {
12405                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
12406                }
12407                Self::lagOverEscapeHatchThreshold(_) => {
12408                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
12409                }
12410                Self::newFinalizedState(_) => {
12411                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12412                }
12413                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
12414                Self::permissionedProver(_) => {
12415                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12416                }
12417                Self::proxiableUUID(_) => {
12418                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
12419                }
12420                Self::renounceOwnership(_) => {
12421                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12422                }
12423                Self::setFinalizedState(_) => {
12424                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12425                }
12426                Self::setHotShotDownSince(_) => {
12427                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
12428                }
12429                Self::setHotShotUp(_) => {
12430                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
12431                }
12432                Self::setPermissionedProver(_) => {
12433                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12434                }
12435                Self::setStateHistory(_) => {
12436                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
12437                }
12438                Self::setstateHistoryRetentionPeriod(_) => {
12439                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12440                }
12441                Self::stateHistoryCommitments(_) => {
12442                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
12443                }
12444                Self::stateHistoryFirstIndex(_) => {
12445                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
12446                }
12447                Self::stateHistoryRetentionPeriod(_) => {
12448                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12449                }
12450                Self::transferOwnership(_) => {
12451                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12452                }
12453                Self::upgradeToAndCall(_) => {
12454                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
12455                }
12456            }
12457        }
12458        #[inline]
12459        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12460            Self::SELECTORS.get(i).copied()
12461        }
12462        #[inline]
12463        fn valid_selector(selector: [u8; 4]) -> bool {
12464            Self::SELECTORS.binary_search(&selector).is_ok()
12465        }
12466        #[inline]
12467        #[allow(non_snake_case)]
12468        fn abi_decode_raw(
12469            selector: [u8; 4],
12470            data: &[u8],
12471        ) -> alloy_sol_types::Result<Self> {
12472            Self::abi_decode_raw_with_config(
12473                selector,
12474                data,
12475                alloy_sol_types::abi::AbiDecoderConfig::default(),
12476            )
12477        }
12478        #[inline]
12479        #[allow(non_snake_case)]
12480        fn abi_decode_raw_with_config(
12481            selector: [u8; 4],
12482            data: &[u8],
12483            config: alloy_sol_types::abi::AbiDecoderConfig,
12484        ) -> alloy_sol_types::Result<Self> {
12485            static DECODE_SHIMS: &[fn(
12486                &[u8],
12487                alloy_sol_types::abi::AbiDecoderConfig,
12488            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
12489                {
12490                    fn setPermissionedProver(
12491                        data: &[u8],
12492                        config: alloy_sol_types::abi::AbiDecoderConfig,
12493                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12494                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12495                                data,
12496                                config,
12497                            )
12498                            .map(LightClientMockCalls::setPermissionedProver)
12499                    }
12500                    setPermissionedProver
12501                },
12502                {
12503                    fn stateHistoryCommitments(
12504                        data: &[u8],
12505                        config: alloy_sol_types::abi::AbiDecoderConfig,
12506                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12507                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12508                                data,
12509                                config,
12510                            )
12511                            .map(LightClientMockCalls::stateHistoryCommitments)
12512                    }
12513                    stateHistoryCommitments
12514                },
12515                {
12516                    fn getVersion(
12517                        data: &[u8],
12518                        config: alloy_sol_types::abi::AbiDecoderConfig,
12519                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12520                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12521                                data,
12522                                config,
12523                            )
12524                            .map(LightClientMockCalls::getVersion)
12525                    }
12526                    getVersion
12527                },
12528                {
12529                    fn _getVk(
12530                        data: &[u8],
12531                        config: alloy_sol_types::abi::AbiDecoderConfig,
12532                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12533                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12534                                data,
12535                                config,
12536                            )
12537                            .map(LightClientMockCalls::_getVk)
12538                    }
12539                    _getVk
12540                },
12541                {
12542                    fn newFinalizedState(
12543                        data: &[u8],
12544                        config: alloy_sol_types::abi::AbiDecoderConfig,
12545                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12546                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12547                                data,
12548                                config,
12549                            )
12550                            .map(LightClientMockCalls::newFinalizedState)
12551                    }
12552                    newFinalizedState
12553                },
12554                {
12555                    fn setHotShotDownSince(
12556                        data: &[u8],
12557                        config: alloy_sol_types::abi::AbiDecoderConfig,
12558                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12559                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12560                                data,
12561                                config,
12562                            )
12563                            .map(LightClientMockCalls::setHotShotDownSince)
12564                    }
12565                    setHotShotDownSince
12566                },
12567                {
12568                    fn stateHistoryFirstIndex(
12569                        data: &[u8],
12570                        config: alloy_sol_types::abi::AbiDecoderConfig,
12571                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12572                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12573                                data,
12574                                config,
12575                            )
12576                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12577                    }
12578                    stateHistoryFirstIndex
12579                },
12580                {
12581                    fn permissionedProver(
12582                        data: &[u8],
12583                        config: alloy_sol_types::abi::AbiDecoderConfig,
12584                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12585                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12586                                data,
12587                                config,
12588                            )
12589                            .map(LightClientMockCalls::permissionedProver)
12590                    }
12591                    permissionedProver
12592                },
12593                {
12594                    fn currentBlockNumber(
12595                        data: &[u8],
12596                        config: alloy_sol_types::abi::AbiDecoderConfig,
12597                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12598                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12599                                data,
12600                                config,
12601                            )
12602                            .map(LightClientMockCalls::currentBlockNumber)
12603                    }
12604                    currentBlockNumber
12605                },
12606                {
12607                    fn genesisStakeTableState(
12608                        data: &[u8],
12609                        config: alloy_sol_types::abi::AbiDecoderConfig,
12610                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12611                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12612                                data,
12613                                config,
12614                            )
12615                            .map(LightClientMockCalls::genesisStakeTableState)
12616                    }
12617                    genesisStakeTableState
12618                },
12619                {
12620                    fn upgradeToAndCall(
12621                        data: &[u8],
12622                        config: alloy_sol_types::abi::AbiDecoderConfig,
12623                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12624                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12625                                data,
12626                                config,
12627                            )
12628                            .map(LightClientMockCalls::upgradeToAndCall)
12629                    }
12630                    upgradeToAndCall
12631                },
12632                {
12633                    fn proxiableUUID(
12634                        data: &[u8],
12635                        config: alloy_sol_types::abi::AbiDecoderConfig,
12636                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12637                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12638                                data,
12639                                config,
12640                            )
12641                            .map(LightClientMockCalls::proxiableUUID)
12642                    }
12643                    proxiableUUID
12644                },
12645                {
12646                    fn disablePermissionedProverMode(
12647                        data: &[u8],
12648                        config: alloy_sol_types::abi::AbiDecoderConfig,
12649                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12650                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12651                                data,
12652                                config,
12653                            )
12654                            .map(LightClientMockCalls::disablePermissionedProverMode)
12655                    }
12656                    disablePermissionedProverMode
12657                },
12658                {
12659                    fn renounceOwnership(
12660                        data: &[u8],
12661                        config: alloy_sol_types::abi::AbiDecoderConfig,
12662                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12663                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12664                                data,
12665                                config,
12666                            )
12667                            .map(LightClientMockCalls::renounceOwnership)
12668                    }
12669                    renounceOwnership
12670                },
12671                {
12672                    fn isPermissionedProverEnabled(
12673                        data: &[u8],
12674                        config: alloy_sol_types::abi::AbiDecoderConfig,
12675                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12676                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12677                                data,
12678                                config,
12679                            )
12680                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12681                    }
12682                    isPermissionedProverEnabled
12683                },
12684                {
12685                    fn getHotShotCommitment(
12686                        data: &[u8],
12687                        config: alloy_sol_types::abi::AbiDecoderConfig,
12688                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12689                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12690                                data,
12691                                config,
12692                            )
12693                            .map(LightClientMockCalls::getHotShotCommitment)
12694                    }
12695                    getHotShotCommitment
12696                },
12697                {
12698                    fn owner(
12699                        data: &[u8],
12700                        config: alloy_sol_types::abi::AbiDecoderConfig,
12701                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12702                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12703                                data,
12704                                config,
12705                            )
12706                            .map(LightClientMockCalls::owner)
12707                    }
12708                    owner
12709                },
12710                {
12711                    fn setstateHistoryRetentionPeriod(
12712                        data: &[u8],
12713                        config: alloy_sol_types::abi::AbiDecoderConfig,
12714                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12715                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12716                                data,
12717                                config,
12718                            )
12719                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12720                    }
12721                    setstateHistoryRetentionPeriod
12722                },
12723                {
12724                    fn initialize(
12725                        data: &[u8],
12726                        config: alloy_sol_types::abi::AbiDecoderConfig,
12727                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12728                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12729                                data,
12730                                config,
12731                            )
12732                            .map(LightClientMockCalls::initialize)
12733                    }
12734                    initialize
12735                },
12736                {
12737                    fn finalizedState(
12738                        data: &[u8],
12739                        config: alloy_sol_types::abi::AbiDecoderConfig,
12740                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12741                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12742                                data,
12743                                config,
12744                            )
12745                            .map(LightClientMockCalls::finalizedState)
12746                    }
12747                    finalizedState
12748                },
12749                {
12750                    fn UPGRADE_INTERFACE_VERSION(
12751                        data: &[u8],
12752                        config: alloy_sol_types::abi::AbiDecoderConfig,
12753                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12754                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12755                                data,
12756                                config,
12757                            )
12758                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12759                    }
12760                    UPGRADE_INTERFACE_VERSION
12761                },
12762                {
12763                    fn setFinalizedState(
12764                        data: &[u8],
12765                        config: alloy_sol_types::abi::AbiDecoderConfig,
12766                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12767                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12768                                data,
12769                                config,
12770                            )
12771                            .map(LightClientMockCalls::setFinalizedState)
12772                    }
12773                    setFinalizedState
12774                },
12775                {
12776                    fn stateHistoryRetentionPeriod(
12777                        data: &[u8],
12778                        config: alloy_sol_types::abi::AbiDecoderConfig,
12779                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12780                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12781                                data,
12782                                config,
12783                            )
12784                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12785                    }
12786                    stateHistoryRetentionPeriod
12787                },
12788                {
12789                    fn setHotShotUp(
12790                        data: &[u8],
12791                        config: alloy_sol_types::abi::AbiDecoderConfig,
12792                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12793                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12794                                data,
12795                                config,
12796                            )
12797                            .map(LightClientMockCalls::setHotShotUp)
12798                    }
12799                    setHotShotUp
12800                },
12801                {
12802                    fn genesisState(
12803                        data: &[u8],
12804                        config: alloy_sol_types::abi::AbiDecoderConfig,
12805                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12806                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12807                                data,
12808                                config,
12809                            )
12810                            .map(LightClientMockCalls::genesisState)
12811                    }
12812                    genesisState
12813                },
12814                {
12815                    fn lagOverEscapeHatchThreshold(
12816                        data: &[u8],
12817                        config: alloy_sol_types::abi::AbiDecoderConfig,
12818                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12819                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12820                                data,
12821                                config,
12822                            )
12823                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12824                    }
12825                    lagOverEscapeHatchThreshold
12826                },
12827                {
12828                    fn transferOwnership(
12829                        data: &[u8],
12830                        config: alloy_sol_types::abi::AbiDecoderConfig,
12831                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12832                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12833                                data,
12834                                config,
12835                            )
12836                            .map(LightClientMockCalls::transferOwnership)
12837                    }
12838                    transferOwnership
12839                },
12840                {
12841                    fn setStateHistory(
12842                        data: &[u8],
12843                        config: alloy_sol_types::abi::AbiDecoderConfig,
12844                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12845                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12846                                data,
12847                                config,
12848                            )
12849                            .map(LightClientMockCalls::setStateHistory)
12850                    }
12851                    setStateHistory
12852                },
12853                {
12854                    fn getStateHistoryCount(
12855                        data: &[u8],
12856                        config: alloy_sol_types::abi::AbiDecoderConfig,
12857                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12858                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
12859                                data,
12860                                config,
12861                            )
12862                            .map(LightClientMockCalls::getStateHistoryCount)
12863                    }
12864                    getStateHistoryCount
12865                },
12866            ];
12867            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12868                return Err(
12869                    alloy_sol_types::Error::unknown_selector(
12870                        <Self as alloy_sol_types::SolInterface>::NAME,
12871                        selector,
12872                    ),
12873                );
12874            };
12875            DECODE_SHIMS[idx](data, config)
12876        }
12877        #[inline]
12878        #[allow(non_snake_case)]
12879        fn abi_decode_raw_validate(
12880            selector: [u8; 4],
12881            data: &[u8],
12882        ) -> alloy_sol_types::Result<Self> {
12883            Self::abi_decode_raw_with_config(
12884                selector,
12885                data,
12886                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12887            )
12888        }
12889        #[inline]
12890        fn abi_encoded_size(&self) -> usize {
12891            match self {
12892                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12893                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12894                        inner,
12895                    )
12896                }
12897                Self::_getVk(inner) => {
12898                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12899                }
12900                Self::currentBlockNumber(inner) => {
12901                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12902                        inner,
12903                    )
12904                }
12905                Self::disablePermissionedProverMode(inner) => {
12906                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
12907                        inner,
12908                    )
12909                }
12910                Self::finalizedState(inner) => {
12911                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12912                        inner,
12913                    )
12914                }
12915                Self::genesisStakeTableState(inner) => {
12916                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12917                        inner,
12918                    )
12919                }
12920                Self::genesisState(inner) => {
12921                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12922                        inner,
12923                    )
12924                }
12925                Self::getHotShotCommitment(inner) => {
12926                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
12927                        inner,
12928                    )
12929                }
12930                Self::getStateHistoryCount(inner) => {
12931                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
12932                        inner,
12933                    )
12934                }
12935                Self::getVersion(inner) => {
12936                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12937                }
12938                Self::initialize(inner) => {
12939                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12940                }
12941                Self::isPermissionedProverEnabled(inner) => {
12942                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
12943                        inner,
12944                    )
12945                }
12946                Self::lagOverEscapeHatchThreshold(inner) => {
12947                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
12948                        inner,
12949                    )
12950                }
12951                Self::newFinalizedState(inner) => {
12952                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12953                        inner,
12954                    )
12955                }
12956                Self::owner(inner) => {
12957                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12958                }
12959                Self::permissionedProver(inner) => {
12960                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12961                        inner,
12962                    )
12963                }
12964                Self::proxiableUUID(inner) => {
12965                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
12966                        inner,
12967                    )
12968                }
12969                Self::renounceOwnership(inner) => {
12970                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12971                        inner,
12972                    )
12973                }
12974                Self::setFinalizedState(inner) => {
12975                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12976                        inner,
12977                    )
12978                }
12979                Self::setHotShotDownSince(inner) => {
12980                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
12981                        inner,
12982                    )
12983                }
12984                Self::setHotShotUp(inner) => {
12985                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
12986                        inner,
12987                    )
12988                }
12989                Self::setPermissionedProver(inner) => {
12990                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12991                        inner,
12992                    )
12993                }
12994                Self::setStateHistory(inner) => {
12995                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
12996                        inner,
12997                    )
12998                }
12999                Self::setstateHistoryRetentionPeriod(inner) => {
13000                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13001                        inner,
13002                    )
13003                }
13004                Self::stateHistoryCommitments(inner) => {
13005                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
13006                        inner,
13007                    )
13008                }
13009                Self::stateHistoryFirstIndex(inner) => {
13010                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
13011                        inner,
13012                    )
13013                }
13014                Self::stateHistoryRetentionPeriod(inner) => {
13015                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13016                        inner,
13017                    )
13018                }
13019                Self::transferOwnership(inner) => {
13020                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13021                        inner,
13022                    )
13023                }
13024                Self::upgradeToAndCall(inner) => {
13025                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
13026                        inner,
13027                    )
13028                }
13029            }
13030        }
13031        #[inline]
13032        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13033            match self {
13034                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13035                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
13036                        inner,
13037                        out,
13038                    )
13039                }
13040                Self::_getVk(inner) => {
13041                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13042                }
13043                Self::currentBlockNumber(inner) => {
13044                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13045                        inner,
13046                        out,
13047                    )
13048                }
13049                Self::disablePermissionedProverMode(inner) => {
13050                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13051                        inner,
13052                        out,
13053                    )
13054                }
13055                Self::finalizedState(inner) => {
13056                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13057                        inner,
13058                        out,
13059                    )
13060                }
13061                Self::genesisStakeTableState(inner) => {
13062                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13063                        inner,
13064                        out,
13065                    )
13066                }
13067                Self::genesisState(inner) => {
13068                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13069                        inner,
13070                        out,
13071                    )
13072                }
13073                Self::getHotShotCommitment(inner) => {
13074                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
13075                        inner,
13076                        out,
13077                    )
13078                }
13079                Self::getStateHistoryCount(inner) => {
13080                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
13081                        inner,
13082                        out,
13083                    )
13084                }
13085                Self::getVersion(inner) => {
13086                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
13087                        inner,
13088                        out,
13089                    )
13090                }
13091                Self::initialize(inner) => {
13092                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13093                        inner,
13094                        out,
13095                    )
13096                }
13097                Self::isPermissionedProverEnabled(inner) => {
13098                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
13099                        inner,
13100                        out,
13101                    )
13102                }
13103                Self::lagOverEscapeHatchThreshold(inner) => {
13104                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
13105                        inner,
13106                        out,
13107                    )
13108                }
13109                Self::newFinalizedState(inner) => {
13110                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13111                        inner,
13112                        out,
13113                    )
13114                }
13115                Self::owner(inner) => {
13116                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13117                }
13118                Self::permissionedProver(inner) => {
13119                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13120                        inner,
13121                        out,
13122                    )
13123                }
13124                Self::proxiableUUID(inner) => {
13125                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
13126                        inner,
13127                        out,
13128                    )
13129                }
13130                Self::renounceOwnership(inner) => {
13131                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13132                        inner,
13133                        out,
13134                    )
13135                }
13136                Self::setFinalizedState(inner) => {
13137                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13138                        inner,
13139                        out,
13140                    )
13141                }
13142                Self::setHotShotDownSince(inner) => {
13143                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
13144                        inner,
13145                        out,
13146                    )
13147                }
13148                Self::setHotShotUp(inner) => {
13149                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
13150                        inner,
13151                        out,
13152                    )
13153                }
13154                Self::setPermissionedProver(inner) => {
13155                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13156                        inner,
13157                        out,
13158                    )
13159                }
13160                Self::setStateHistory(inner) => {
13161                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
13162                        inner,
13163                        out,
13164                    )
13165                }
13166                Self::setstateHistoryRetentionPeriod(inner) => {
13167                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13168                        inner,
13169                        out,
13170                    )
13171                }
13172                Self::stateHistoryCommitments(inner) => {
13173                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
13174                        inner,
13175                        out,
13176                    )
13177                }
13178                Self::stateHistoryFirstIndex(inner) => {
13179                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
13180                        inner,
13181                        out,
13182                    )
13183                }
13184                Self::stateHistoryRetentionPeriod(inner) => {
13185                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13186                        inner,
13187                        out,
13188                    )
13189                }
13190                Self::transferOwnership(inner) => {
13191                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13192                        inner,
13193                        out,
13194                    )
13195                }
13196                Self::upgradeToAndCall(inner) => {
13197                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
13198                        inner,
13199                        out,
13200                    )
13201                }
13202            }
13203        }
13204    }
13205    ///Container for all the [`LightClientMock`](self) custom errors.
13206    #[derive(Clone)]
13207    #[derive(serde::Serialize, serde::Deserialize)]
13208    #[derive(Debug, PartialEq, Eq, Hash)]
13209    pub enum LightClientMockErrors {
13210        #[allow(missing_docs)]
13211        AddressEmptyCode(AddressEmptyCode),
13212        #[allow(missing_docs)]
13213        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
13214        #[allow(missing_docs)]
13215        ERC1967NonPayable(ERC1967NonPayable),
13216        #[allow(missing_docs)]
13217        FailedInnerCall(FailedInnerCall),
13218        #[allow(missing_docs)]
13219        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
13220        #[allow(missing_docs)]
13221        InvalidAddress(InvalidAddress),
13222        #[allow(missing_docs)]
13223        InvalidArgs(InvalidArgs),
13224        #[allow(missing_docs)]
13225        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
13226        #[allow(missing_docs)]
13227        InvalidInitialization(InvalidInitialization),
13228        #[allow(missing_docs)]
13229        InvalidMaxStateHistory(InvalidMaxStateHistory),
13230        #[allow(missing_docs)]
13231        InvalidProof(InvalidProof),
13232        #[allow(missing_docs)]
13233        InvalidScalar(InvalidScalar),
13234        #[allow(missing_docs)]
13235        NoChangeRequired(NoChangeRequired),
13236        #[allow(missing_docs)]
13237        NotInitializing(NotInitializing),
13238        #[allow(missing_docs)]
13239        OutdatedState(OutdatedState),
13240        #[allow(missing_docs)]
13241        OwnableInvalidOwner(OwnableInvalidOwner),
13242        #[allow(missing_docs)]
13243        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
13244        #[allow(missing_docs)]
13245        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
13246        #[allow(missing_docs)]
13247        ProverNotPermissioned(ProverNotPermissioned),
13248        #[allow(missing_docs)]
13249        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
13250        #[allow(missing_docs)]
13251        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
13252        #[allow(missing_docs)]
13253        WrongStakeTableUsed(WrongStakeTableUsed),
13254    }
13255    impl LightClientMockErrors {
13256        /// All the selectors of this enum.
13257        ///
13258        /// Note that the selectors might not be in the same order as the variants.
13259        /// No guarantees are made about the order of the selectors.
13260        ///
13261        /// Prefer using `SolInterface` methods instead.
13262        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13263            [5u8, 28u8, 70u8, 239u8],
13264            [5u8, 176u8, 92u8, 204u8],
13265            [9u8, 189u8, 227u8, 57u8],
13266            [17u8, 140u8, 218u8, 167u8],
13267            [20u8, 37u8, 234u8, 66u8],
13268            [30u8, 79u8, 189u8, 247u8],
13269            [47u8, 171u8, 146u8, 202u8],
13270            [76u8, 156u8, 140u8, 227u8],
13271            [81u8, 97u8, 128u8, 137u8],
13272            [97u8, 90u8, 146u8, 100u8],
13273            [153u8, 150u8, 179u8, 21u8],
13274            [161u8, 186u8, 7u8, 238u8],
13275            [163u8, 166u8, 71u8, 128u8],
13276            [168u8, 99u8, 174u8, 201u8],
13277            [170u8, 29u8, 73u8, 164u8],
13278            [176u8, 180u8, 56u8, 119u8],
13279            [179u8, 152u8, 151u8, 159u8],
13280            [215u8, 230u8, 188u8, 248u8],
13281            [224u8, 124u8, 141u8, 186u8],
13282            [230u8, 196u8, 36u8, 123u8],
13283            [244u8, 160u8, 238u8, 224u8],
13284            [249u8, 46u8, 232u8, 169u8],
13285        ];
13286        /// The names of the variants in the same order as `SELECTORS`.
13287        pub const VARIANT_NAMES: &'static [&'static str] = &[
13288            ::core::stringify!(OutdatedState),
13289            ::core::stringify!(InvalidScalar),
13290            ::core::stringify!(InvalidProof),
13291            ::core::stringify!(OwnableUnauthorizedAccount),
13292            ::core::stringify!(FailedInnerCall),
13293            ::core::stringify!(OwnableInvalidOwner),
13294            ::core::stringify!(OwnershipCannotBeRenounced),
13295            ::core::stringify!(ERC1967InvalidImplementation),
13296            ::core::stringify!(WrongStakeTableUsed),
13297            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
13298            ::core::stringify!(AddressEmptyCode),
13299            ::core::stringify!(InvalidArgs),
13300            ::core::stringify!(ProverNotPermissioned),
13301            ::core::stringify!(NoChangeRequired),
13302            ::core::stringify!(UUPSUnsupportedProxiableUUID),
13303            ::core::stringify!(InsufficientSnapshotHistory),
13304            ::core::stringify!(ERC1967NonPayable),
13305            ::core::stringify!(NotInitializing),
13306            ::core::stringify!(UUPSUnauthorizedCallContext),
13307            ::core::stringify!(InvalidAddress),
13308            ::core::stringify!(InvalidMaxStateHistory),
13309            ::core::stringify!(InvalidInitialization),
13310        ];
13311        /// The signatures in the same order as `SELECTORS`.
13312        pub const SIGNATURES: &'static [&'static str] = &[
13313            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
13314            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
13315            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
13316            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
13317            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
13318            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
13319            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
13320            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
13321            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
13322            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
13323            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
13324            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
13325            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
13326            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
13327            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
13328            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
13329            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
13330            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
13331            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
13332            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
13333            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
13334            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
13335        ];
13336        /// Returns the signature for the given selector, if known.
13337        #[inline]
13338        pub fn signature_by_selector(
13339            selector: [u8; 4usize],
13340        ) -> ::core::option::Option<&'static str> {
13341            match Self::SELECTORS.binary_search(&selector) {
13342                ::core::result::Result::Ok(idx) => {
13343                    ::core::option::Option::Some(Self::SIGNATURES[idx])
13344                }
13345                ::core::result::Result::Err(_) => ::core::option::Option::None,
13346            }
13347        }
13348        /// Returns the enum variant name for the given selector, if known.
13349        #[inline]
13350        pub fn name_by_selector(
13351            selector: [u8; 4usize],
13352        ) -> ::core::option::Option<&'static str> {
13353            let sig = Self::signature_by_selector(selector)?;
13354            sig.split_once('(').map(|(name, _)| name)
13355        }
13356    }
13357    #[automatically_derived]
13358    impl alloy_sol_types::SolInterface for LightClientMockErrors {
13359        const NAME: &'static str = "LightClientMockErrors";
13360        const MIN_DATA_LENGTH: usize = 0usize;
13361        const COUNT: usize = 22usize;
13362        #[inline]
13363        fn selector(&self) -> [u8; 4] {
13364            match self {
13365                Self::AddressEmptyCode(_) => {
13366                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13367                }
13368                Self::ERC1967InvalidImplementation(_) => {
13369                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13370                }
13371                Self::ERC1967NonPayable(_) => {
13372                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13373                }
13374                Self::FailedInnerCall(_) => {
13375                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13376                }
13377                Self::InsufficientSnapshotHistory(_) => {
13378                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13379                }
13380                Self::InvalidAddress(_) => {
13381                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
13382                }
13383                Self::InvalidArgs(_) => {
13384                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
13385                }
13386                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13387                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13388                }
13389                Self::InvalidInitialization(_) => {
13390                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13391                }
13392                Self::InvalidMaxStateHistory(_) => {
13393                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13394                }
13395                Self::InvalidProof(_) => {
13396                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
13397                }
13398                Self::InvalidScalar(_) => {
13399                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
13400                }
13401                Self::NoChangeRequired(_) => {
13402                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13403                }
13404                Self::NotInitializing(_) => {
13405                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13406                }
13407                Self::OutdatedState(_) => {
13408                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
13409                }
13410                Self::OwnableInvalidOwner(_) => {
13411                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13412                }
13413                Self::OwnableUnauthorizedAccount(_) => {
13414                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13415                }
13416                Self::OwnershipCannotBeRenounced(_) => {
13417                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
13418                }
13419                Self::ProverNotPermissioned(_) => {
13420                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13421                }
13422                Self::UUPSUnauthorizedCallContext(_) => {
13423                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13424                }
13425                Self::UUPSUnsupportedProxiableUUID(_) => {
13426                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13427                }
13428                Self::WrongStakeTableUsed(_) => {
13429                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13430                }
13431            }
13432        }
13433        #[inline]
13434        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13435            Self::SELECTORS.get(i).copied()
13436        }
13437        #[inline]
13438        fn valid_selector(selector: [u8; 4]) -> bool {
13439            Self::SELECTORS.binary_search(&selector).is_ok()
13440        }
13441        #[inline]
13442        #[allow(non_snake_case)]
13443        fn abi_decode_raw(
13444            selector: [u8; 4],
13445            data: &[u8],
13446        ) -> alloy_sol_types::Result<Self> {
13447            Self::abi_decode_raw_with_config(
13448                selector,
13449                data,
13450                alloy_sol_types::abi::AbiDecoderConfig::default(),
13451            )
13452        }
13453        #[inline]
13454        #[allow(non_snake_case)]
13455        fn abi_decode_raw_with_config(
13456            selector: [u8; 4],
13457            data: &[u8],
13458            config: alloy_sol_types::abi::AbiDecoderConfig,
13459        ) -> alloy_sol_types::Result<Self> {
13460            static DECODE_SHIMS: &[fn(
13461                &[u8],
13462                alloy_sol_types::abi::AbiDecoderConfig,
13463            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13464                {
13465                    fn OutdatedState(
13466                        data: &[u8],
13467                        config: alloy_sol_types::abi::AbiDecoderConfig,
13468                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13469                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13470                                data,
13471                                config,
13472                            )
13473                            .map(LightClientMockErrors::OutdatedState)
13474                    }
13475                    OutdatedState
13476                },
13477                {
13478                    fn InvalidScalar(
13479                        data: &[u8],
13480                        config: alloy_sol_types::abi::AbiDecoderConfig,
13481                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13482                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13483                                data,
13484                                config,
13485                            )
13486                            .map(LightClientMockErrors::InvalidScalar)
13487                    }
13488                    InvalidScalar
13489                },
13490                {
13491                    fn InvalidProof(
13492                        data: &[u8],
13493                        config: alloy_sol_types::abi::AbiDecoderConfig,
13494                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13495                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13496                                data,
13497                                config,
13498                            )
13499                            .map(LightClientMockErrors::InvalidProof)
13500                    }
13501                    InvalidProof
13502                },
13503                {
13504                    fn OwnableUnauthorizedAccount(
13505                        data: &[u8],
13506                        config: alloy_sol_types::abi::AbiDecoderConfig,
13507                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13508                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13509                                data,
13510                                config,
13511                            )
13512                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13513                    }
13514                    OwnableUnauthorizedAccount
13515                },
13516                {
13517                    fn FailedInnerCall(
13518                        data: &[u8],
13519                        config: alloy_sol_types::abi::AbiDecoderConfig,
13520                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13521                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13522                                data,
13523                                config,
13524                            )
13525                            .map(LightClientMockErrors::FailedInnerCall)
13526                    }
13527                    FailedInnerCall
13528                },
13529                {
13530                    fn OwnableInvalidOwner(
13531                        data: &[u8],
13532                        config: alloy_sol_types::abi::AbiDecoderConfig,
13533                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13534                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13535                                data,
13536                                config,
13537                            )
13538                            .map(LightClientMockErrors::OwnableInvalidOwner)
13539                    }
13540                    OwnableInvalidOwner
13541                },
13542                {
13543                    fn OwnershipCannotBeRenounced(
13544                        data: &[u8],
13545                        config: alloy_sol_types::abi::AbiDecoderConfig,
13546                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13547                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13548                                data,
13549                                config,
13550                            )
13551                            .map(LightClientMockErrors::OwnershipCannotBeRenounced)
13552                    }
13553                    OwnershipCannotBeRenounced
13554                },
13555                {
13556                    fn ERC1967InvalidImplementation(
13557                        data: &[u8],
13558                        config: alloy_sol_types::abi::AbiDecoderConfig,
13559                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13560                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13561                                data,
13562                                config,
13563                            )
13564                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13565                    }
13566                    ERC1967InvalidImplementation
13567                },
13568                {
13569                    fn WrongStakeTableUsed(
13570                        data: &[u8],
13571                        config: alloy_sol_types::abi::AbiDecoderConfig,
13572                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13573                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13574                                data,
13575                                config,
13576                            )
13577                            .map(LightClientMockErrors::WrongStakeTableUsed)
13578                    }
13579                    WrongStakeTableUsed
13580                },
13581                {
13582                    fn InvalidHotShotBlockForCommitmentCheck(
13583                        data: &[u8],
13584                        config: alloy_sol_types::abi::AbiDecoderConfig,
13585                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13586                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13587                                data,
13588                                config,
13589                            )
13590                            .map(
13591                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13592                            )
13593                    }
13594                    InvalidHotShotBlockForCommitmentCheck
13595                },
13596                {
13597                    fn AddressEmptyCode(
13598                        data: &[u8],
13599                        config: alloy_sol_types::abi::AbiDecoderConfig,
13600                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13601                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13602                                data,
13603                                config,
13604                            )
13605                            .map(LightClientMockErrors::AddressEmptyCode)
13606                    }
13607                    AddressEmptyCode
13608                },
13609                {
13610                    fn InvalidArgs(
13611                        data: &[u8],
13612                        config: alloy_sol_types::abi::AbiDecoderConfig,
13613                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13614                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13615                                data,
13616                                config,
13617                            )
13618                            .map(LightClientMockErrors::InvalidArgs)
13619                    }
13620                    InvalidArgs
13621                },
13622                {
13623                    fn ProverNotPermissioned(
13624                        data: &[u8],
13625                        config: alloy_sol_types::abi::AbiDecoderConfig,
13626                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13627                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13628                                data,
13629                                config,
13630                            )
13631                            .map(LightClientMockErrors::ProverNotPermissioned)
13632                    }
13633                    ProverNotPermissioned
13634                },
13635                {
13636                    fn NoChangeRequired(
13637                        data: &[u8],
13638                        config: alloy_sol_types::abi::AbiDecoderConfig,
13639                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13640                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13641                                data,
13642                                config,
13643                            )
13644                            .map(LightClientMockErrors::NoChangeRequired)
13645                    }
13646                    NoChangeRequired
13647                },
13648                {
13649                    fn UUPSUnsupportedProxiableUUID(
13650                        data: &[u8],
13651                        config: alloy_sol_types::abi::AbiDecoderConfig,
13652                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13653                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13654                                data,
13655                                config,
13656                            )
13657                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13658                    }
13659                    UUPSUnsupportedProxiableUUID
13660                },
13661                {
13662                    fn InsufficientSnapshotHistory(
13663                        data: &[u8],
13664                        config: alloy_sol_types::abi::AbiDecoderConfig,
13665                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13666                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13667                                data,
13668                                config,
13669                            )
13670                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13671                    }
13672                    InsufficientSnapshotHistory
13673                },
13674                {
13675                    fn ERC1967NonPayable(
13676                        data: &[u8],
13677                        config: alloy_sol_types::abi::AbiDecoderConfig,
13678                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13679                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13680                                data,
13681                                config,
13682                            )
13683                            .map(LightClientMockErrors::ERC1967NonPayable)
13684                    }
13685                    ERC1967NonPayable
13686                },
13687                {
13688                    fn NotInitializing(
13689                        data: &[u8],
13690                        config: alloy_sol_types::abi::AbiDecoderConfig,
13691                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13692                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13693                                data,
13694                                config,
13695                            )
13696                            .map(LightClientMockErrors::NotInitializing)
13697                    }
13698                    NotInitializing
13699                },
13700                {
13701                    fn UUPSUnauthorizedCallContext(
13702                        data: &[u8],
13703                        config: alloy_sol_types::abi::AbiDecoderConfig,
13704                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13705                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13706                                data,
13707                                config,
13708                            )
13709                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13710                    }
13711                    UUPSUnauthorizedCallContext
13712                },
13713                {
13714                    fn InvalidAddress(
13715                        data: &[u8],
13716                        config: alloy_sol_types::abi::AbiDecoderConfig,
13717                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13718                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13719                                data,
13720                                config,
13721                            )
13722                            .map(LightClientMockErrors::InvalidAddress)
13723                    }
13724                    InvalidAddress
13725                },
13726                {
13727                    fn InvalidMaxStateHistory(
13728                        data: &[u8],
13729                        config: alloy_sol_types::abi::AbiDecoderConfig,
13730                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13731                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13732                                data,
13733                                config,
13734                            )
13735                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13736                    }
13737                    InvalidMaxStateHistory
13738                },
13739                {
13740                    fn InvalidInitialization(
13741                        data: &[u8],
13742                        config: alloy_sol_types::abi::AbiDecoderConfig,
13743                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13744                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
13745                                data,
13746                                config,
13747                            )
13748                            .map(LightClientMockErrors::InvalidInitialization)
13749                    }
13750                    InvalidInitialization
13751                },
13752            ];
13753            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13754                return Err(
13755                    alloy_sol_types::Error::unknown_selector(
13756                        <Self as alloy_sol_types::SolInterface>::NAME,
13757                        selector,
13758                    ),
13759                );
13760            };
13761            DECODE_SHIMS[idx](data, config)
13762        }
13763        #[inline]
13764        #[allow(non_snake_case)]
13765        fn abi_decode_raw_validate(
13766            selector: [u8; 4],
13767            data: &[u8],
13768        ) -> alloy_sol_types::Result<Self> {
13769            Self::abi_decode_raw_with_config(
13770                selector,
13771                data,
13772                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13773            )
13774        }
13775        #[inline]
13776        fn abi_encoded_size(&self) -> usize {
13777            match self {
13778                Self::AddressEmptyCode(inner) => {
13779                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13780                        inner,
13781                    )
13782                }
13783                Self::ERC1967InvalidImplementation(inner) => {
13784                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13785                        inner,
13786                    )
13787                }
13788                Self::ERC1967NonPayable(inner) => {
13789                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13790                        inner,
13791                    )
13792                }
13793                Self::FailedInnerCall(inner) => {
13794                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13795                        inner,
13796                    )
13797                }
13798                Self::InsufficientSnapshotHistory(inner) => {
13799                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
13800                        inner,
13801                    )
13802                }
13803                Self::InvalidAddress(inner) => {
13804                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
13805                        inner,
13806                    )
13807                }
13808                Self::InvalidArgs(inner) => {
13809                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
13810                }
13811                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13812                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
13813                        inner,
13814                    )
13815                }
13816                Self::InvalidInitialization(inner) => {
13817                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13818                        inner,
13819                    )
13820                }
13821                Self::InvalidMaxStateHistory(inner) => {
13822                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
13823                        inner,
13824                    )
13825                }
13826                Self::InvalidProof(inner) => {
13827                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
13828                }
13829                Self::InvalidScalar(inner) => {
13830                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
13831                }
13832                Self::NoChangeRequired(inner) => {
13833                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
13834                        inner,
13835                    )
13836                }
13837                Self::NotInitializing(inner) => {
13838                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13839                        inner,
13840                    )
13841                }
13842                Self::OutdatedState(inner) => {
13843                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
13844                }
13845                Self::OwnableInvalidOwner(inner) => {
13846                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13847                        inner,
13848                    )
13849                }
13850                Self::OwnableUnauthorizedAccount(inner) => {
13851                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13852                        inner,
13853                    )
13854                }
13855                Self::OwnershipCannotBeRenounced(inner) => {
13856                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
13857                        inner,
13858                    )
13859                }
13860                Self::ProverNotPermissioned(inner) => {
13861                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
13862                        inner,
13863                    )
13864                }
13865                Self::UUPSUnauthorizedCallContext(inner) => {
13866                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13867                        inner,
13868                    )
13869                }
13870                Self::UUPSUnsupportedProxiableUUID(inner) => {
13871                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13872                        inner,
13873                    )
13874                }
13875                Self::WrongStakeTableUsed(inner) => {
13876                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
13877                        inner,
13878                    )
13879                }
13880            }
13881        }
13882        #[inline]
13883        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13884            match self {
13885                Self::AddressEmptyCode(inner) => {
13886                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
13887                        inner,
13888                        out,
13889                    )
13890                }
13891                Self::ERC1967InvalidImplementation(inner) => {
13892                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13893                        inner,
13894                        out,
13895                    )
13896                }
13897                Self::ERC1967NonPayable(inner) => {
13898                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
13899                        inner,
13900                        out,
13901                    )
13902                }
13903                Self::FailedInnerCall(inner) => {
13904                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
13905                        inner,
13906                        out,
13907                    )
13908                }
13909                Self::InsufficientSnapshotHistory(inner) => {
13910                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
13911                        inner,
13912                        out,
13913                    )
13914                }
13915                Self::InvalidAddress(inner) => {
13916                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
13917                        inner,
13918                        out,
13919                    )
13920                }
13921                Self::InvalidArgs(inner) => {
13922                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
13923                        inner,
13924                        out,
13925                    )
13926                }
13927                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13928                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
13929                        inner,
13930                        out,
13931                    )
13932                }
13933                Self::InvalidInitialization(inner) => {
13934                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
13935                        inner,
13936                        out,
13937                    )
13938                }
13939                Self::InvalidMaxStateHistory(inner) => {
13940                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
13941                        inner,
13942                        out,
13943                    )
13944                }
13945                Self::InvalidProof(inner) => {
13946                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
13947                        inner,
13948                        out,
13949                    )
13950                }
13951                Self::InvalidScalar(inner) => {
13952                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
13953                        inner,
13954                        out,
13955                    )
13956                }
13957                Self::NoChangeRequired(inner) => {
13958                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
13959                        inner,
13960                        out,
13961                    )
13962                }
13963                Self::NotInitializing(inner) => {
13964                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
13965                        inner,
13966                        out,
13967                    )
13968                }
13969                Self::OutdatedState(inner) => {
13970                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
13971                        inner,
13972                        out,
13973                    )
13974                }
13975                Self::OwnableInvalidOwner(inner) => {
13976                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
13977                        inner,
13978                        out,
13979                    )
13980                }
13981                Self::OwnableUnauthorizedAccount(inner) => {
13982                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13983                        inner,
13984                        out,
13985                    )
13986                }
13987                Self::OwnershipCannotBeRenounced(inner) => {
13988                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
13989                        inner,
13990                        out,
13991                    )
13992                }
13993                Self::ProverNotPermissioned(inner) => {
13994                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
13995                        inner,
13996                        out,
13997                    )
13998                }
13999                Self::UUPSUnauthorizedCallContext(inner) => {
14000                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
14001                        inner,
14002                        out,
14003                    )
14004                }
14005                Self::UUPSUnsupportedProxiableUUID(inner) => {
14006                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
14007                        inner,
14008                        out,
14009                    )
14010                }
14011                Self::WrongStakeTableUsed(inner) => {
14012                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
14013                        inner,
14014                        out,
14015                    )
14016                }
14017            }
14018        }
14019    }
14020    #[automatically_derived]
14021    impl LightClientMockErrors {
14022        /**Creates a [`AddressEmptyCode`] error.
14023
14024```solidity
14025error AddressEmptyCode(address)
14026```*/
14027        #[inline]
14028        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
14029            Self::AddressEmptyCode(AddressEmptyCode { target: target })
14030        }
14031        /**Creates a [`ERC1967InvalidImplementation`] error.
14032
14033```solidity
14034error ERC1967InvalidImplementation(address)
14035```*/
14036        #[inline]
14037        pub fn erc_1967_invalid_implementation(
14038            implementation: alloy::sol_types::private::Address,
14039        ) -> Self {
14040            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
14041                implementation: implementation,
14042            })
14043        }
14044        /**Creates a [`ERC1967NonPayable`] error.
14045
14046```solidity
14047error ERC1967NonPayable()
14048```*/
14049        #[inline]
14050        pub fn erc_1967_non_payable() -> Self {
14051            Self::ERC1967NonPayable(ERC1967NonPayable)
14052        }
14053        /**Creates a [`FailedInnerCall`] error.
14054
14055```solidity
14056error FailedInnerCall()
14057```*/
14058        #[inline]
14059        pub fn failed_inner_call() -> Self {
14060            Self::FailedInnerCall(FailedInnerCall)
14061        }
14062        /**Creates a [`InsufficientSnapshotHistory`] error.
14063
14064```solidity
14065error InsufficientSnapshotHistory()
14066```*/
14067        #[inline]
14068        pub fn insufficient_snapshot_history() -> Self {
14069            Self::InsufficientSnapshotHistory(InsufficientSnapshotHistory)
14070        }
14071        /**Creates a [`InvalidAddress`] error.
14072
14073```solidity
14074error InvalidAddress()
14075```*/
14076        #[inline]
14077        pub fn invalid_address() -> Self {
14078            Self::InvalidAddress(InvalidAddress)
14079        }
14080        /**Creates a [`InvalidArgs`] error.
14081
14082```solidity
14083error InvalidArgs()
14084```*/
14085        #[inline]
14086        pub fn invalid_args() -> Self {
14087            Self::InvalidArgs(InvalidArgs)
14088        }
14089        /**Creates a [`InvalidHotShotBlockForCommitmentCheck`] error.
14090
14091```solidity
14092error InvalidHotShotBlockForCommitmentCheck()
14093```*/
14094        #[inline]
14095        pub fn invalid_hot_shot_block_for_commitment_check() -> Self {
14096            Self::InvalidHotShotBlockForCommitmentCheck(
14097                InvalidHotShotBlockForCommitmentCheck,
14098            )
14099        }
14100        /**Creates a [`InvalidInitialization`] error.
14101
14102```solidity
14103error InvalidInitialization()
14104```*/
14105        #[inline]
14106        pub fn invalid_initialization() -> Self {
14107            Self::InvalidInitialization(InvalidInitialization)
14108        }
14109        /**Creates a [`InvalidMaxStateHistory`] error.
14110
14111```solidity
14112error InvalidMaxStateHistory()
14113```*/
14114        #[inline]
14115        pub fn invalid_max_state_history() -> Self {
14116            Self::InvalidMaxStateHistory(InvalidMaxStateHistory)
14117        }
14118        /**Creates a [`InvalidProof`] error.
14119
14120```solidity
14121error InvalidProof()
14122```*/
14123        #[inline]
14124        pub fn invalid_proof() -> Self {
14125            Self::InvalidProof(InvalidProof)
14126        }
14127        /**Creates a [`InvalidScalar`] error.
14128
14129```solidity
14130error InvalidScalar()
14131```*/
14132        #[inline]
14133        pub fn invalid_scalar() -> Self {
14134            Self::InvalidScalar(InvalidScalar)
14135        }
14136        /**Creates a [`NoChangeRequired`] error.
14137
14138```solidity
14139error NoChangeRequired()
14140```*/
14141        #[inline]
14142        pub fn no_change_required() -> Self {
14143            Self::NoChangeRequired(NoChangeRequired)
14144        }
14145        /**Creates a [`NotInitializing`] error.
14146
14147```solidity
14148error NotInitializing()
14149```*/
14150        #[inline]
14151        pub fn not_initializing() -> Self {
14152            Self::NotInitializing(NotInitializing)
14153        }
14154        /**Creates a [`OutdatedState`] error.
14155
14156```solidity
14157error OutdatedState()
14158```*/
14159        #[inline]
14160        pub fn outdated_state() -> Self {
14161            Self::OutdatedState(OutdatedState)
14162        }
14163        /**Creates a [`OwnableInvalidOwner`] error.
14164
14165```solidity
14166error OwnableInvalidOwner(address)
14167```*/
14168        #[inline]
14169        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
14170            Self::OwnableInvalidOwner(OwnableInvalidOwner {
14171                owner: owner,
14172            })
14173        }
14174        /**Creates a [`OwnableUnauthorizedAccount`] error.
14175
14176```solidity
14177error OwnableUnauthorizedAccount(address)
14178```*/
14179        #[inline]
14180        pub fn ownable_unauthorized_account(
14181            account: alloy::sol_types::private::Address,
14182        ) -> Self {
14183            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
14184                account: account,
14185            })
14186        }
14187        /**Creates a [`OwnershipCannotBeRenounced`] error.
14188
14189```solidity
14190error OwnershipCannotBeRenounced()
14191```*/
14192        #[inline]
14193        pub fn ownership_cannot_be_renounced() -> Self {
14194            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
14195        }
14196        /**Creates a [`ProverNotPermissioned`] error.
14197
14198```solidity
14199error ProverNotPermissioned()
14200```*/
14201        #[inline]
14202        pub fn prover_not_permissioned() -> Self {
14203            Self::ProverNotPermissioned(ProverNotPermissioned)
14204        }
14205        /**Creates a [`UUPSUnauthorizedCallContext`] error.
14206
14207```solidity
14208error UUPSUnauthorizedCallContext()
14209```*/
14210        #[inline]
14211        pub fn uups_unauthorized_call_context() -> Self {
14212            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
14213        }
14214        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
14215
14216```solidity
14217error UUPSUnsupportedProxiableUUID(bytes32)
14218```*/
14219        #[inline]
14220        pub fn uups_unsupported_proxiable_uuid(
14221            slot: alloy::sol_types::private::FixedBytes<32>,
14222        ) -> Self {
14223            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
14224                slot: slot,
14225            })
14226        }
14227        /**Creates a [`WrongStakeTableUsed`] error.
14228
14229```solidity
14230error WrongStakeTableUsed()
14231```*/
14232        #[inline]
14233        pub fn wrong_stake_table_used() -> Self {
14234            Self::WrongStakeTableUsed(WrongStakeTableUsed)
14235        }
14236    }
14237    ///Container for all the [`LightClientMock`](self) events.
14238    #[derive(Clone)]
14239    #[derive(serde::Serialize, serde::Deserialize)]
14240    #[derive(Debug, PartialEq, Eq, Hash)]
14241    pub enum LightClientMockEvents {
14242        #[allow(missing_docs)]
14243        Initialized(Initialized),
14244        #[allow(missing_docs)]
14245        NewState(NewState),
14246        #[allow(missing_docs)]
14247        OwnershipTransferred(OwnershipTransferred),
14248        #[allow(missing_docs)]
14249        PermissionedProverNotRequired(PermissionedProverNotRequired),
14250        #[allow(missing_docs)]
14251        PermissionedProverRequired(PermissionedProverRequired),
14252        #[allow(missing_docs)]
14253        Upgrade(Upgrade),
14254        #[allow(missing_docs)]
14255        Upgraded(Upgraded),
14256    }
14257    impl LightClientMockEvents {
14258        /// All the selectors of this enum.
14259        ///
14260        /// Note that the selectors might not be in the same order as the variants.
14261        /// No guarantees are made about the order of the selectors.
14262        ///
14263        /// Prefer using `SolInterface` methods instead.
14264        pub const SELECTORS: &'static [[u8; 32usize]] = &[
14265            [
14266                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
14267                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
14268                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
14269            ],
14270            [
14271                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
14272                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
14273                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
14274            ],
14275            [
14276                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
14277                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
14278                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
14279            ],
14280            [
14281                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
14282                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
14283                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
14284            ],
14285            [
14286                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
14287                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
14288                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
14289            ],
14290            [
14291                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
14292                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
14293                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14294            ],
14295            [
14296                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
14297                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
14298                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14299            ],
14300        ];
14301        /// The names of the variants in the same order as `SELECTORS`.
14302        pub const VARIANT_NAMES: &'static [&'static str] = &[
14303            ::core::stringify!(PermissionedProverRequired),
14304            ::core::stringify!(OwnershipTransferred),
14305            ::core::stringify!(PermissionedProverNotRequired),
14306            ::core::stringify!(NewState),
14307            ::core::stringify!(Upgraded),
14308            ::core::stringify!(Initialized),
14309            ::core::stringify!(Upgrade),
14310        ];
14311        /// The signatures in the same order as `SELECTORS`.
14312        pub const SIGNATURES: &'static [&'static str] = &[
14313            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
14314            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
14315            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
14316            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
14317            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
14318            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
14319            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
14320        ];
14321        /// Returns the signature for the given selector, if known.
14322        #[inline]
14323        pub fn signature_by_selector(
14324            selector: [u8; 32usize],
14325        ) -> ::core::option::Option<&'static str> {
14326            match Self::SELECTORS.binary_search(&selector) {
14327                ::core::result::Result::Ok(idx) => {
14328                    ::core::option::Option::Some(Self::SIGNATURES[idx])
14329                }
14330                ::core::result::Result::Err(_) => ::core::option::Option::None,
14331            }
14332        }
14333        /// Returns the enum variant name for the given selector, if known.
14334        #[inline]
14335        pub fn name_by_selector(
14336            selector: [u8; 32usize],
14337        ) -> ::core::option::Option<&'static str> {
14338            let sig = Self::signature_by_selector(selector)?;
14339            sig.split_once('(').map(|(name, _)| name)
14340        }
14341    }
14342    #[automatically_derived]
14343    impl alloy_sol_types::SolEventInterface for LightClientMockEvents {
14344        const NAME: &'static str = "LightClientMockEvents";
14345        const COUNT: usize = 7usize;
14346        fn decode_raw_log(
14347            topics: &[alloy_sol_types::Word],
14348            data: &[u8],
14349        ) -> alloy_sol_types::Result<Self> {
14350            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
14351                topics,
14352                data,
14353                alloy_sol_types::abi::AbiDecoderConfig::default(),
14354            )
14355        }
14356        fn decode_raw_log_with_config(
14357            topics: &[alloy_sol_types::Word],
14358            data: &[u8],
14359            config: alloy_sol_types::abi::AbiDecoderConfig,
14360        ) -> alloy_sol_types::Result<Self> {
14361            match topics.first().copied() {
14362                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14363                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14364                            topics,
14365                            data,
14366                            config,
14367                        )
14368                        .map(Self::Initialized)
14369                }
14370                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14371                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14372                            topics,
14373                            data,
14374                            config,
14375                        )
14376                        .map(Self::NewState)
14377                }
14378                Some(
14379                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14380                ) => {
14381                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14382                            topics,
14383                            data,
14384                            config,
14385                        )
14386                        .map(Self::OwnershipTransferred)
14387                }
14388                Some(
14389                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14390                ) => {
14391                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14392                            topics,
14393                            data,
14394                            config,
14395                        )
14396                        .map(Self::PermissionedProverNotRequired)
14397                }
14398                Some(
14399                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14400                ) => {
14401                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14402                            topics,
14403                            data,
14404                            config,
14405                        )
14406                        .map(Self::PermissionedProverRequired)
14407                }
14408                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14409                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14410                            topics,
14411                            data,
14412                            config,
14413                        )
14414                        .map(Self::Upgrade)
14415                }
14416                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14417                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
14418                            topics,
14419                            data,
14420                            config,
14421                        )
14422                        .map(Self::Upgraded)
14423                }
14424                _ => {
14425                    if topics
14426                        .len()
14427                        .checked_mul(alloy_sol_types::Word::len_bytes())
14428                        .and_then(|len| len.checked_add(data.len()))
14429                        .is_none_or(|len| len > config.get_memory_limit())
14430                    {
14431                        return alloy_sol_types::private::Err(
14432                            alloy_sol_types::Error::MemoryLimitExceeded(
14433                                config.get_memory_limit(),
14434                            ),
14435                        );
14436                    }
14437                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14438                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14439                        log: alloy_sol_types::private::Box::new(
14440                            alloy_sol_types::private::LogData::new_unchecked(
14441                                topics.to_vec(),
14442                                data.to_vec().into(),
14443                            ),
14444                        ),
14445                    })
14446                }
14447            }
14448        }
14449    }
14450    #[automatically_derived]
14451    impl alloy_sol_types::private::IntoLogData for LightClientMockEvents {
14452        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14453            match self {
14454                Self::Initialized(inner) => {
14455                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14456                }
14457                Self::NewState(inner) => {
14458                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14459                }
14460                Self::OwnershipTransferred(inner) => {
14461                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14462                }
14463                Self::PermissionedProverNotRequired(inner) => {
14464                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14465                }
14466                Self::PermissionedProverRequired(inner) => {
14467                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14468                }
14469                Self::Upgrade(inner) => {
14470                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14471                }
14472                Self::Upgraded(inner) => {
14473                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14474                }
14475            }
14476        }
14477        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14478            match self {
14479                Self::Initialized(inner) => {
14480                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14481                }
14482                Self::NewState(inner) => {
14483                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14484                }
14485                Self::OwnershipTransferred(inner) => {
14486                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14487                }
14488                Self::PermissionedProverNotRequired(inner) => {
14489                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14490                }
14491                Self::PermissionedProverRequired(inner) => {
14492                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14493                }
14494                Self::Upgrade(inner) => {
14495                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14496                }
14497                Self::Upgraded(inner) => {
14498                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14499                }
14500            }
14501        }
14502    }
14503    #[automatically_derived]
14504    impl LightClientMockEvents {
14505        /**Creates a [`Initialized`] event.
14506
14507```solidity
14508event Initialized(uint64)
14509```*/
14510        #[inline]
14511        pub fn initialized(version: u64) -> Self {
14512            Self::Initialized(Initialized { version: version })
14513        }
14514        /**Creates a [`NewState`] event.
14515
14516```solidity
14517event NewState(uint64,uint64,uint256)
14518```*/
14519        #[inline]
14520        pub fn new_state(
14521            view_num: u64,
14522            block_height: u64,
14523            block_comm_root: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14524        ) -> Self {
14525            Self::NewState(NewState {
14526                viewNum: view_num,
14527                blockHeight: block_height,
14528                blockCommRoot: block_comm_root,
14529            })
14530        }
14531        /**Creates a [`OwnershipTransferred`] event.
14532
14533```solidity
14534event OwnershipTransferred(address,address)
14535```*/
14536        #[inline]
14537        pub fn ownership_transferred(
14538            previous_owner: alloy::sol_types::private::Address,
14539            new_owner: alloy::sol_types::private::Address,
14540        ) -> Self {
14541            Self::OwnershipTransferred(OwnershipTransferred {
14542                previousOwner: previous_owner,
14543                newOwner: new_owner,
14544            })
14545        }
14546        /**Creates a [`PermissionedProverNotRequired`] event.
14547
14548```solidity
14549event PermissionedProverNotRequired()
14550```*/
14551        #[inline]
14552        pub fn permissioned_prover_not_required() -> Self {
14553            Self::PermissionedProverNotRequired(PermissionedProverNotRequired)
14554        }
14555        /**Creates a [`PermissionedProverRequired`] event.
14556
14557```solidity
14558event PermissionedProverRequired(address)
14559```*/
14560        #[inline]
14561        pub fn permissioned_prover_required(
14562            permissioned_prover: alloy::sol_types::private::Address,
14563        ) -> Self {
14564            Self::PermissionedProverRequired(PermissionedProverRequired {
14565                permissionedProver: permissioned_prover,
14566            })
14567        }
14568        /**Creates a [`Upgrade`] event.
14569
14570```solidity
14571event Upgrade(address)
14572```*/
14573        #[inline]
14574        pub fn upgrade(implementation: alloy::sol_types::private::Address) -> Self {
14575            Self::Upgrade(Upgrade {
14576                implementation: implementation,
14577            })
14578        }
14579        /**Creates a [`Upgraded`] event.
14580
14581```solidity
14582event Upgraded(address)
14583```*/
14584        #[inline]
14585        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
14586            Self::Upgraded(Upgraded {
14587                implementation: implementation,
14588            })
14589        }
14590    }
14591    use alloy::contract as alloy_contract;
14592    /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14593
14594See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14595    #[inline]
14596    pub const fn new<
14597        P: alloy_contract::private::Provider<N>,
14598        N: alloy_contract::private::Network,
14599    >(
14600        address: alloy_sol_types::private::Address,
14601        __provider: P,
14602    ) -> LightClientMockInstance<P, N> {
14603        LightClientMockInstance::<P, N>::new(address, __provider)
14604    }
14605    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14606
14607Returns a new instance of the contract, if the deployment was successful.
14608
14609For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14610    #[inline]
14611    pub fn deploy<
14612        P: alloy_contract::private::Provider<N>,
14613        N: alloy_contract::private::Network,
14614    >(
14615        __provider: P,
14616    ) -> impl ::core::future::Future<
14617        Output = alloy_contract::Result<LightClientMockInstance<P, N>>,
14618    > {
14619        LightClientMockInstance::<P, N>::deploy(__provider)
14620    }
14621    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14622and constructor arguments, if any.
14623
14624This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14625the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14626    #[inline]
14627    pub fn deploy_builder<
14628        P: alloy_contract::private::Provider<N>,
14629        N: alloy_contract::private::Network,
14630    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14631        LightClientMockInstance::<P, N>::deploy_builder(__provider)
14632    }
14633    /**A [`LightClientMock`](self) instance.
14634
14635Contains type-safe methods for interacting with an on-chain instance of the
14636[`LightClientMock`](self) contract located at a given `address`, using a given
14637provider `P`.
14638
14639If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14640documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14641be used to deploy a new instance of the contract.
14642
14643See the [module-level documentation](self) for all the available methods.*/
14644    #[derive(Clone)]
14645    pub struct LightClientMockInstance<P, N = alloy_contract::private::Ethereum> {
14646        address: alloy_sol_types::private::Address,
14647        provider: P,
14648        _network: ::core::marker::PhantomData<N>,
14649    }
14650    #[automatically_derived]
14651    impl<P, N> ::core::fmt::Debug for LightClientMockInstance<P, N> {
14652        #[inline]
14653        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14654            f.debug_tuple("LightClientMockInstance").field(&self.address).finish()
14655        }
14656    }
14657    /// Instantiation and getters/setters.
14658    impl<
14659        P: alloy_contract::private::Provider<N>,
14660        N: alloy_contract::private::Network,
14661    > LightClientMockInstance<P, N> {
14662        /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14663
14664See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14665        #[inline]
14666        pub const fn new(
14667            address: alloy_sol_types::private::Address,
14668            __provider: P,
14669        ) -> Self {
14670            Self {
14671                address,
14672                provider: __provider,
14673                _network: ::core::marker::PhantomData,
14674            }
14675        }
14676        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14677
14678Returns a new instance of the contract, if the deployment was successful.
14679
14680For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14681        #[inline]
14682        pub async fn deploy(
14683            __provider: P,
14684        ) -> alloy_contract::Result<LightClientMockInstance<P, N>> {
14685            let call_builder = Self::deploy_builder(__provider);
14686            let contract_address = call_builder.deploy().await?;
14687            Ok(Self::new(contract_address, call_builder.provider))
14688        }
14689        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14690and constructor arguments, if any.
14691
14692This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14693the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14694        #[inline]
14695        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14696            alloy_contract::RawCallBuilder::new_raw_deploy(
14697                __provider,
14698                ::core::clone::Clone::clone(&BYTECODE),
14699            )
14700        }
14701        /// Returns a reference to the address.
14702        #[inline]
14703        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14704            &self.address
14705        }
14706        /// Sets the address.
14707        #[inline]
14708        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14709            self.address = address;
14710        }
14711        /// Sets the address and returns `self`.
14712        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14713            self.set_address(address);
14714            self
14715        }
14716        /// Returns a reference to the provider.
14717        #[inline]
14718        pub const fn provider(&self) -> &P {
14719            &self.provider
14720        }
14721    }
14722    impl<P: ::core::clone::Clone, N> LightClientMockInstance<&P, N> {
14723        /// Clones the provider and returns a new instance with the cloned provider.
14724        #[inline]
14725        pub fn with_cloned_provider(self) -> LightClientMockInstance<P, N> {
14726            LightClientMockInstance {
14727                address: self.address,
14728                provider: ::core::clone::Clone::clone(&self.provider),
14729                _network: ::core::marker::PhantomData,
14730            }
14731        }
14732    }
14733    /// Function calls.
14734    impl<
14735        P: alloy_contract::private::Provider<N>,
14736        N: alloy_contract::private::Network,
14737    > LightClientMockInstance<P, N> {
14738        /// Creates a new call builder using this contract instance's provider and address.
14739        ///
14740        /// Note that the call can be any function call, not just those defined in this
14741        /// contract. Prefer using the other methods for building type-safe contract calls.
14742        pub fn call_builder<C: alloy_sol_types::SolCall>(
14743            &self,
14744            call: &C,
14745        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
14746            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14747        }
14748        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14749        pub fn UPGRADE_INTERFACE_VERSION(
14750            &self,
14751        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
14752            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
14753        }
14754        ///Creates a new call builder for the [`_getVk`] function.
14755        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
14756            self.call_builder(&_getVkCall)
14757        }
14758        ///Creates a new call builder for the [`currentBlockNumber`] function.
14759        pub fn currentBlockNumber(
14760            &self,
14761        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
14762            self.call_builder(&currentBlockNumberCall)
14763        }
14764        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14765        pub fn disablePermissionedProverMode(
14766            &self,
14767        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
14768            self.call_builder(&disablePermissionedProverModeCall)
14769        }
14770        ///Creates a new call builder for the [`finalizedState`] function.
14771        pub fn finalizedState(
14772            &self,
14773        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
14774            self.call_builder(&finalizedStateCall)
14775        }
14776        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14777        pub fn genesisStakeTableState(
14778            &self,
14779        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
14780            self.call_builder(&genesisStakeTableStateCall)
14781        }
14782        ///Creates a new call builder for the [`genesisState`] function.
14783        pub fn genesisState(
14784            &self,
14785        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
14786            self.call_builder(&genesisStateCall)
14787        }
14788        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14789        pub fn getHotShotCommitment(
14790            &self,
14791            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14792        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
14793            self.call_builder(
14794                &getHotShotCommitmentCall {
14795                    hotShotBlockHeight,
14796                },
14797            )
14798        }
14799        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14800        pub fn getStateHistoryCount(
14801            &self,
14802        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
14803            self.call_builder(&getStateHistoryCountCall)
14804        }
14805        ///Creates a new call builder for the [`getVersion`] function.
14806        pub fn getVersion(
14807            &self,
14808        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
14809            self.call_builder(&getVersionCall)
14810        }
14811        ///Creates a new call builder for the [`initialize`] function.
14812        pub fn initialize(
14813            &self,
14814            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14815            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14816            _stateHistoryRetentionPeriod: u32,
14817            owner: alloy::sol_types::private::Address,
14818        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
14819            self.call_builder(
14820                &initializeCall {
14821                    _genesis,
14822                    _genesisStakeTableState,
14823                    _stateHistoryRetentionPeriod,
14824                    owner,
14825                },
14826            )
14827        }
14828        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14829        pub fn isPermissionedProverEnabled(
14830            &self,
14831        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
14832            self.call_builder(&isPermissionedProverEnabledCall)
14833        }
14834        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14835        pub fn lagOverEscapeHatchThreshold(
14836            &self,
14837            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14838            threshold: alloy::sol_types::private::primitives::aliases::U256,
14839        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
14840            self.call_builder(
14841                &lagOverEscapeHatchThresholdCall {
14842                    blockNumber,
14843                    threshold,
14844                },
14845            )
14846        }
14847        ///Creates a new call builder for the [`newFinalizedState`] function.
14848        pub fn newFinalizedState(
14849            &self,
14850            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14851            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14852        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
14853            self.call_builder(
14854                &newFinalizedStateCall {
14855                    newState,
14856                    proof,
14857                },
14858            )
14859        }
14860        ///Creates a new call builder for the [`owner`] function.
14861        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
14862            self.call_builder(&ownerCall)
14863        }
14864        ///Creates a new call builder for the [`permissionedProver`] function.
14865        pub fn permissionedProver(
14866            &self,
14867        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
14868            self.call_builder(&permissionedProverCall)
14869        }
14870        ///Creates a new call builder for the [`proxiableUUID`] function.
14871        pub fn proxiableUUID(
14872            &self,
14873        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
14874            self.call_builder(&proxiableUUIDCall)
14875        }
14876        ///Creates a new call builder for the [`renounceOwnership`] function.
14877        pub fn renounceOwnership(
14878            &self,
14879        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
14880            self.call_builder(&renounceOwnershipCall)
14881        }
14882        ///Creates a new call builder for the [`setFinalizedState`] function.
14883        pub fn setFinalizedState(
14884            &self,
14885            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14886        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
14887            self.call_builder(&setFinalizedStateCall { state })
14888        }
14889        ///Creates a new call builder for the [`setHotShotDownSince`] function.
14890        pub fn setHotShotDownSince(
14891            &self,
14892            l1Height: alloy::sol_types::private::primitives::aliases::U256,
14893        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
14894            self.call_builder(
14895                &setHotShotDownSinceCall {
14896                    l1Height,
14897                },
14898            )
14899        }
14900        ///Creates a new call builder for the [`setHotShotUp`] function.
14901        pub fn setHotShotUp(
14902            &self,
14903        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
14904            self.call_builder(&setHotShotUpCall)
14905        }
14906        ///Creates a new call builder for the [`setPermissionedProver`] function.
14907        pub fn setPermissionedProver(
14908            &self,
14909            prover: alloy::sol_types::private::Address,
14910        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
14911            self.call_builder(
14912                &setPermissionedProverCall {
14913                    prover,
14914                },
14915            )
14916        }
14917        ///Creates a new call builder for the [`setStateHistory`] function.
14918        pub fn setStateHistory(
14919            &self,
14920            _stateHistoryCommitments: alloy::sol_types::private::Vec<
14921                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14922            >,
14923        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
14924            self.call_builder(
14925                &setStateHistoryCall {
14926                    _stateHistoryCommitments,
14927                },
14928            )
14929        }
14930        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14931        pub fn setstateHistoryRetentionPeriod(
14932            &self,
14933            historySeconds: u32,
14934        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
14935            self.call_builder(
14936                &setstateHistoryRetentionPeriodCall {
14937                    historySeconds,
14938                },
14939            )
14940        }
14941        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14942        pub fn stateHistoryCommitments(
14943            &self,
14944            _0: alloy::sol_types::private::primitives::aliases::U256,
14945        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
14946            self.call_builder(&stateHistoryCommitmentsCall(_0))
14947        }
14948        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14949        pub fn stateHistoryFirstIndex(
14950            &self,
14951        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
14952            self.call_builder(&stateHistoryFirstIndexCall)
14953        }
14954        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14955        pub fn stateHistoryRetentionPeriod(
14956            &self,
14957        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
14958            self.call_builder(&stateHistoryRetentionPeriodCall)
14959        }
14960        ///Creates a new call builder for the [`transferOwnership`] function.
14961        pub fn transferOwnership(
14962            &self,
14963            newOwner: alloy::sol_types::private::Address,
14964        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
14965            self.call_builder(&transferOwnershipCall { newOwner })
14966        }
14967        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14968        pub fn upgradeToAndCall(
14969            &self,
14970            newImplementation: alloy::sol_types::private::Address,
14971            data: alloy::sol_types::private::Bytes,
14972        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
14973            self.call_builder(
14974                &upgradeToAndCallCall {
14975                    newImplementation,
14976                    data,
14977                },
14978            )
14979        }
14980    }
14981    /// Event filters.
14982    impl<
14983        P: alloy_contract::private::Provider<N>,
14984        N: alloy_contract::private::Network,
14985    > LightClientMockInstance<P, N> {
14986        /// Creates a new event filter using this contract instance's provider and address.
14987        ///
14988        /// Note that the type can be any event, not just those defined in this contract.
14989        /// Prefer using the other methods for building type-safe event filters.
14990        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14991            &self,
14992        ) -> alloy_contract::Event<&P, E, N> {
14993            alloy_contract::Event::new_sol(&self.provider, &self.address)
14994        }
14995        ///Creates a new event filter for the [`Initialized`] event.
14996        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
14997            self.event_filter::<Initialized>()
14998        }
14999        ///Creates a new event filter for the [`NewState`] event.
15000        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
15001            self.event_filter::<NewState>()
15002        }
15003        ///Creates a new event filter for the [`OwnershipTransferred`] event.
15004        pub fn OwnershipTransferred_filter(
15005            &self,
15006        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
15007            self.event_filter::<OwnershipTransferred>()
15008        }
15009        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
15010        pub fn PermissionedProverNotRequired_filter(
15011            &self,
15012        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
15013            self.event_filter::<PermissionedProverNotRequired>()
15014        }
15015        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
15016        pub fn PermissionedProverRequired_filter(
15017            &self,
15018        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
15019            self.event_filter::<PermissionedProverRequired>()
15020        }
15021        ///Creates a new event filter for the [`Upgrade`] event.
15022        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
15023            self.event_filter::<Upgrade>()
15024        }
15025        ///Creates a new event filter for the [`Upgraded`] event.
15026        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
15027            self.event_filter::<Upgraded>()
15028        }
15029    }
15030}