hotshot_contract_adapter/bindings/
light_client_arbitrum.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        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    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; }
640    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; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct 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; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
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::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
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::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point 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            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "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)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct 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; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
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            BN254::G1Point,
1457            BN254::G1Point,
1458            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
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            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "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)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239///Module containing a contract's types and functions.
2240/**
2241
2242```solidity
2243library LightClient {
2244    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2245    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2246}
2247```*/
2248#[allow(
2249    non_camel_case_types,
2250    non_snake_case,
2251    clippy::pub_underscore_fields,
2252    clippy::style,
2253    clippy::empty_structs_with_brackets
2254)]
2255pub mod LightClient {
2256    use super::*;
2257    use alloy::sol_types as alloy_sol_types;
2258    #[derive(serde::Serialize, serde::Deserialize)]
2259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2260    /**```solidity
2261struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2262```*/
2263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2264    #[derive(Clone)]
2265    pub struct LightClientState {
2266        #[allow(missing_docs)]
2267        pub viewNum: u64,
2268        #[allow(missing_docs)]
2269        pub blockHeight: u64,
2270        #[allow(missing_docs)]
2271        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2272    }
2273    #[allow(
2274        non_camel_case_types,
2275        non_snake_case,
2276        clippy::pub_underscore_fields,
2277        clippy::style
2278    )]
2279    const _: () = {
2280        use alloy::sol_types as alloy_sol_types;
2281        #[doc(hidden)]
2282        type UnderlyingSolTuple<'a> = (
2283            alloy::sol_types::sol_data::Uint<64>,
2284            alloy::sol_types::sol_data::Uint<64>,
2285            BN254::ScalarField,
2286        );
2287        #[doc(hidden)]
2288        type UnderlyingRustTuple<'a> = (
2289            u64,
2290            u64,
2291            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2292        );
2293        #[cfg(test)]
2294        #[allow(dead_code, unreachable_patterns)]
2295        fn _type_assertion(
2296            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2297        ) {
2298            match _t {
2299                alloy_sol_types::private::AssertTypeEq::<
2300                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2301                >(_) => {}
2302            }
2303        }
2304        #[automatically_derived]
2305        #[doc(hidden)]
2306        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2307            fn from(value: LightClientState) -> Self {
2308                (value.viewNum, value.blockHeight, value.blockCommRoot)
2309            }
2310        }
2311        #[automatically_derived]
2312        #[doc(hidden)]
2313        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2314            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2315                Self {
2316                    viewNum: tuple.0,
2317                    blockHeight: tuple.1,
2318                    blockCommRoot: tuple.2,
2319                }
2320            }
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::SolValue for LightClientState {
2324            type SolType = Self;
2325        }
2326        #[automatically_derived]
2327        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2328            #[inline]
2329            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2330                (
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2334                    <alloy::sol_types::sol_data::Uint<
2335                        64,
2336                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2337                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2338                        &self.blockCommRoot,
2339                    ),
2340                )
2341            }
2342            #[inline]
2343            fn stv_abi_encoded_size(&self) -> usize {
2344                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2345                    return size;
2346                }
2347                let tuple = <UnderlyingRustTuple<
2348                    '_,
2349                > as ::core::convert::From<Self>>::from(self.clone());
2350                <UnderlyingSolTuple<
2351                    '_,
2352                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2353            }
2354            #[inline]
2355            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2356                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2357            }
2358            #[inline]
2359            fn stv_abi_encode_packed_to(
2360                &self,
2361                out: &mut alloy_sol_types::private::Vec<u8>,
2362            ) {
2363                let tuple = <UnderlyingRustTuple<
2364                    '_,
2365                > as ::core::convert::From<Self>>::from(self.clone());
2366                <UnderlyingSolTuple<
2367                    '_,
2368                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2369            }
2370            #[inline]
2371            fn stv_abi_packed_encoded_size(&self) -> usize {
2372                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2373                    return size;
2374                }
2375                let tuple = <UnderlyingRustTuple<
2376                    '_,
2377                > as ::core::convert::From<Self>>::from(self.clone());
2378                <UnderlyingSolTuple<
2379                    '_,
2380                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2381            }
2382        }
2383        #[automatically_derived]
2384        impl alloy_sol_types::SolType for LightClientState {
2385            type RustType = Self;
2386            type Token<'a> = <UnderlyingSolTuple<
2387                'a,
2388            > as alloy_sol_types::SolType>::Token<'a>;
2389            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2390            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2393            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2394                '_,
2395            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2396            #[inline]
2397            fn valid_token(token: &Self::Token<'_>) -> bool {
2398                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2399            }
2400            #[inline]
2401            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2402                let tuple = <UnderlyingSolTuple<
2403                    '_,
2404                > as alloy_sol_types::SolType>::detokenize(token);
2405                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2406            }
2407        }
2408        #[automatically_derived]
2409        impl alloy_sol_types::SolStruct for LightClientState {
2410            const NAME: &'static str = "LightClientState";
2411            #[inline]
2412            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2413                alloy_sol_types::private::Cow::Borrowed(
2414                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2415                )
2416            }
2417            #[inline]
2418            fn eip712_components() -> alloy_sol_types::private::Vec<
2419                alloy_sol_types::private::Cow<'static, str>,
2420            > {
2421                alloy_sol_types::private::Vec::new()
2422            }
2423            #[inline]
2424            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2425                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2426            }
2427            #[inline]
2428            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2429                [
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2433                        .0,
2434                    <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2437                        .0,
2438                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2439                            &self.blockCommRoot,
2440                        )
2441                        .0,
2442                ]
2443                    .concat()
2444            }
2445        }
2446        #[automatically_derived]
2447        impl alloy_sol_types::EventTopic for LightClientState {
2448            #[inline]
2449            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2450                0usize
2451                    + <alloy::sol_types::sol_data::Uint<
2452                        64,
2453                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2454                        &rust.viewNum,
2455                    )
2456                    + <alloy::sol_types::sol_data::Uint<
2457                        64,
2458                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockHeight,
2460                    )
2461                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2462                        &rust.blockCommRoot,
2463                    )
2464            }
2465            #[inline]
2466            fn encode_topic_preimage(
2467                rust: &Self::RustType,
2468                out: &mut alloy_sol_types::private::Vec<u8>,
2469            ) {
2470                out.reserve(
2471                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2472                );
2473                <alloy::sol_types::sol_data::Uint<
2474                    64,
2475                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2476                    &rust.viewNum,
2477                    out,
2478                );
2479                <alloy::sol_types::sol_data::Uint<
2480                    64,
2481                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockHeight,
2483                    out,
2484                );
2485                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2486                    &rust.blockCommRoot,
2487                    out,
2488                );
2489            }
2490            #[inline]
2491            fn encode_topic(
2492                rust: &Self::RustType,
2493            ) -> alloy_sol_types::abi::token::WordToken {
2494                let mut out = alloy_sol_types::private::Vec::new();
2495                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2496                    rust,
2497                    &mut out,
2498                );
2499                alloy_sol_types::abi::token::WordToken(
2500                    alloy_sol_types::private::keccak256(out),
2501                )
2502            }
2503        }
2504    };
2505    #[derive(serde::Serialize, serde::Deserialize)]
2506    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2507    /**```solidity
2508struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2509```*/
2510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2511    #[derive(Clone)]
2512    pub struct StakeTableState {
2513        #[allow(missing_docs)]
2514        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2515        #[allow(missing_docs)]
2516        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517        #[allow(missing_docs)]
2518        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        #[allow(missing_docs)]
2520        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2521    }
2522    #[allow(
2523        non_camel_case_types,
2524        non_snake_case,
2525        clippy::pub_underscore_fields,
2526        clippy::style
2527    )]
2528    const _: () = {
2529        use alloy::sol_types as alloy_sol_types;
2530        #[doc(hidden)]
2531        type UnderlyingSolTuple<'a> = (
2532            alloy::sol_types::sol_data::Uint<256>,
2533            BN254::ScalarField,
2534            BN254::ScalarField,
2535            BN254::ScalarField,
2536        );
2537        #[doc(hidden)]
2538        type UnderlyingRustTuple<'a> = (
2539            alloy::sol_types::private::primitives::aliases::U256,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2542            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2543        );
2544        #[cfg(test)]
2545        #[allow(dead_code, unreachable_patterns)]
2546        fn _type_assertion(
2547            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2548        ) {
2549            match _t {
2550                alloy_sol_types::private::AssertTypeEq::<
2551                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2552                >(_) => {}
2553            }
2554        }
2555        #[automatically_derived]
2556        #[doc(hidden)]
2557        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2558            fn from(value: StakeTableState) -> Self {
2559                (
2560                    value.threshold,
2561                    value.blsKeyComm,
2562                    value.schnorrKeyComm,
2563                    value.amountComm,
2564                )
2565            }
2566        }
2567        #[automatically_derived]
2568        #[doc(hidden)]
2569        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2570            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2571                Self {
2572                    threshold: tuple.0,
2573                    blsKeyComm: tuple.1,
2574                    schnorrKeyComm: tuple.2,
2575                    amountComm: tuple.3,
2576                }
2577            }
2578        }
2579        #[automatically_derived]
2580        impl alloy_sol_types::SolValue for StakeTableState {
2581            type SolType = Self;
2582        }
2583        #[automatically_derived]
2584        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2585            #[inline]
2586            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2587                (
2588                    <alloy::sol_types::sol_data::Uint<
2589                        256,
2590                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.blsKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.schnorrKeyComm,
2596                    ),
2597                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2598                        &self.amountComm,
2599                    ),
2600                )
2601            }
2602            #[inline]
2603            fn stv_abi_encoded_size(&self) -> usize {
2604                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2605                    return size;
2606                }
2607                let tuple = <UnderlyingRustTuple<
2608                    '_,
2609                > as ::core::convert::From<Self>>::from(self.clone());
2610                <UnderlyingSolTuple<
2611                    '_,
2612                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2613            }
2614            #[inline]
2615            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2616                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2617            }
2618            #[inline]
2619            fn stv_abi_encode_packed_to(
2620                &self,
2621                out: &mut alloy_sol_types::private::Vec<u8>,
2622            ) {
2623                let tuple = <UnderlyingRustTuple<
2624                    '_,
2625                > as ::core::convert::From<Self>>::from(self.clone());
2626                <UnderlyingSolTuple<
2627                    '_,
2628                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2629            }
2630            #[inline]
2631            fn stv_abi_packed_encoded_size(&self) -> usize {
2632                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2633                    return size;
2634                }
2635                let tuple = <UnderlyingRustTuple<
2636                    '_,
2637                > as ::core::convert::From<Self>>::from(self.clone());
2638                <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2641            }
2642        }
2643        #[automatically_derived]
2644        impl alloy_sol_types::SolType for StakeTableState {
2645            type RustType = Self;
2646            type Token<'a> = <UnderlyingSolTuple<
2647                'a,
2648            > as alloy_sol_types::SolType>::Token<'a>;
2649            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2650            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2653            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2654                '_,
2655            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2656            #[inline]
2657            fn valid_token(token: &Self::Token<'_>) -> bool {
2658                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2659            }
2660            #[inline]
2661            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2662                let tuple = <UnderlyingSolTuple<
2663                    '_,
2664                > as alloy_sol_types::SolType>::detokenize(token);
2665                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2666            }
2667        }
2668        #[automatically_derived]
2669        impl alloy_sol_types::SolStruct for StakeTableState {
2670            const NAME: &'static str = "StakeTableState";
2671            #[inline]
2672            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2673                alloy_sol_types::private::Cow::Borrowed(
2674                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2675                )
2676            }
2677            #[inline]
2678            fn eip712_components() -> alloy_sol_types::private::Vec<
2679                alloy_sol_types::private::Cow<'static, str>,
2680            > {
2681                alloy_sol_types::private::Vec::new()
2682            }
2683            #[inline]
2684            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2685                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2686            }
2687            #[inline]
2688            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2689                [
2690                    <alloy::sol_types::sol_data::Uint<
2691                        256,
2692                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2693                        .0,
2694                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2695                            &self.blsKeyComm,
2696                        )
2697                        .0,
2698                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2699                            &self.schnorrKeyComm,
2700                        )
2701                        .0,
2702                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2703                            &self.amountComm,
2704                        )
2705                        .0,
2706                ]
2707                    .concat()
2708            }
2709        }
2710        #[automatically_derived]
2711        impl alloy_sol_types::EventTopic for StakeTableState {
2712            #[inline]
2713            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2714                0usize
2715                    + <alloy::sol_types::sol_data::Uint<
2716                        256,
2717                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.threshold,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.blsKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.schnorrKeyComm,
2725                    )
2726                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2727                        &rust.amountComm,
2728                    )
2729            }
2730            #[inline]
2731            fn encode_topic_preimage(
2732                rust: &Self::RustType,
2733                out: &mut alloy_sol_types::private::Vec<u8>,
2734            ) {
2735                out.reserve(
2736                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2737                );
2738                <alloy::sol_types::sol_data::Uint<
2739                    256,
2740                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2741                    &rust.threshold,
2742                    out,
2743                );
2744                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2745                    &rust.blsKeyComm,
2746                    out,
2747                );
2748                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2749                    &rust.schnorrKeyComm,
2750                    out,
2751                );
2752                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2753                    &rust.amountComm,
2754                    out,
2755                );
2756            }
2757            #[inline]
2758            fn encode_topic(
2759                rust: &Self::RustType,
2760            ) -> alloy_sol_types::abi::token::WordToken {
2761                let mut out = alloy_sol_types::private::Vec::new();
2762                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2763                    rust,
2764                    &mut out,
2765                );
2766                alloy_sol_types::abi::token::WordToken(
2767                    alloy_sol_types::private::keccak256(out),
2768                )
2769            }
2770        }
2771    };
2772    use alloy::contract as alloy_contract;
2773    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2774
2775See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2776    #[inline]
2777    pub const fn new<
2778        P: alloy_contract::private::Provider<N>,
2779        N: alloy_contract::private::Network,
2780    >(
2781        address: alloy_sol_types::private::Address,
2782        provider: P,
2783    ) -> LightClientInstance<P, N> {
2784        LightClientInstance::<P, N>::new(address, provider)
2785    }
2786    /**A [`LightClient`](self) instance.
2787
2788Contains type-safe methods for interacting with an on-chain instance of the
2789[`LightClient`](self) contract located at a given `address`, using a given
2790provider `P`.
2791
2792If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2793documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2794be used to deploy a new instance of the contract.
2795
2796See the [module-level documentation](self) for all the available methods.*/
2797    #[derive(Clone)]
2798    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2799        address: alloy_sol_types::private::Address,
2800        provider: P,
2801        _network: ::core::marker::PhantomData<N>,
2802    }
2803    #[automatically_derived]
2804    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2805        #[inline]
2806        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2807            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2808        }
2809    }
2810    /// Instantiation and getters/setters.
2811    #[automatically_derived]
2812    impl<
2813        P: alloy_contract::private::Provider<N>,
2814        N: alloy_contract::private::Network,
2815    > LightClientInstance<P, N> {
2816        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2817
2818See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2819        #[inline]
2820        pub const fn new(
2821            address: alloy_sol_types::private::Address,
2822            provider: P,
2823        ) -> Self {
2824            Self {
2825                address,
2826                provider,
2827                _network: ::core::marker::PhantomData,
2828            }
2829        }
2830        /// Returns a reference to the address.
2831        #[inline]
2832        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2833            &self.address
2834        }
2835        /// Sets the address.
2836        #[inline]
2837        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2838            self.address = address;
2839        }
2840        /// Sets the address and returns `self`.
2841        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2842            self.set_address(address);
2843            self
2844        }
2845        /// Returns a reference to the provider.
2846        #[inline]
2847        pub const fn provider(&self) -> &P {
2848            &self.provider
2849        }
2850    }
2851    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2852        /// Clones the provider and returns a new instance with the cloned provider.
2853        #[inline]
2854        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2855            LightClientInstance {
2856                address: self.address,
2857                provider: ::core::clone::Clone::clone(&self.provider),
2858                _network: ::core::marker::PhantomData,
2859            }
2860        }
2861    }
2862    /// Function calls.
2863    #[automatically_derived]
2864    impl<
2865        P: alloy_contract::private::Provider<N>,
2866        N: alloy_contract::private::Network,
2867    > LightClientInstance<P, N> {
2868        /// Creates a new call builder using this contract instance's provider and address.
2869        ///
2870        /// Note that the call can be any function call, not just those defined in this
2871        /// contract. Prefer using the other methods for building type-safe contract calls.
2872        pub fn call_builder<C: alloy_sol_types::SolCall>(
2873            &self,
2874            call: &C,
2875        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2876            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2877        }
2878    }
2879    /// Event filters.
2880    #[automatically_derived]
2881    impl<
2882        P: alloy_contract::private::Provider<N>,
2883        N: alloy_contract::private::Network,
2884    > LightClientInstance<P, N> {
2885        /// Creates a new event filter using this contract instance's provider and address.
2886        ///
2887        /// Note that the type can be any event, not just those defined in this contract.
2888        /// Prefer using the other methods for building type-safe event filters.
2889        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2890            &self,
2891        ) -> alloy_contract::Event<&P, E, N> {
2892            alloy_contract::Event::new_sol(&self.provider, &self.address)
2893        }
2894    }
2895}
2896/**
2897
2898Generated by the following Solidity interface...
2899```solidity
2900library BN254 {
2901    type BaseField is uint256;
2902    type ScalarField is uint256;
2903    struct G1Point {
2904        BaseField x;
2905        BaseField y;
2906    }
2907}
2908
2909library IPlonkVerifier {
2910    struct PlonkProof {
2911        BN254.G1Point wire0;
2912        BN254.G1Point wire1;
2913        BN254.G1Point wire2;
2914        BN254.G1Point wire3;
2915        BN254.G1Point wire4;
2916        BN254.G1Point prodPerm;
2917        BN254.G1Point split0;
2918        BN254.G1Point split1;
2919        BN254.G1Point split2;
2920        BN254.G1Point split3;
2921        BN254.G1Point split4;
2922        BN254.G1Point zeta;
2923        BN254.G1Point zetaOmega;
2924        BN254.ScalarField wireEval0;
2925        BN254.ScalarField wireEval1;
2926        BN254.ScalarField wireEval2;
2927        BN254.ScalarField wireEval3;
2928        BN254.ScalarField wireEval4;
2929        BN254.ScalarField sigmaEval0;
2930        BN254.ScalarField sigmaEval1;
2931        BN254.ScalarField sigmaEval2;
2932        BN254.ScalarField sigmaEval3;
2933        BN254.ScalarField prodPermZetaOmegaEval;
2934    }
2935    struct VerifyingKey {
2936        uint256 domainSize;
2937        uint256 numInputs;
2938        BN254.G1Point sigma0;
2939        BN254.G1Point sigma1;
2940        BN254.G1Point sigma2;
2941        BN254.G1Point sigma3;
2942        BN254.G1Point sigma4;
2943        BN254.G1Point q1;
2944        BN254.G1Point q2;
2945        BN254.G1Point q3;
2946        BN254.G1Point q4;
2947        BN254.G1Point qM12;
2948        BN254.G1Point qM34;
2949        BN254.G1Point qO;
2950        BN254.G1Point qC;
2951        BN254.G1Point qH1;
2952        BN254.G1Point qH2;
2953        BN254.G1Point qH3;
2954        BN254.G1Point qH4;
2955        BN254.G1Point qEcc;
2956        bytes32 g2LSB;
2957        bytes32 g2MSB;
2958    }
2959}
2960
2961library LightClient {
2962    struct LightClientState {
2963        uint64 viewNum;
2964        uint64 blockHeight;
2965        BN254.ScalarField blockCommRoot;
2966    }
2967    struct StakeTableState {
2968        uint256 threshold;
2969        BN254.ScalarField blsKeyComm;
2970        BN254.ScalarField schnorrKeyComm;
2971        BN254.ScalarField amountComm;
2972    }
2973}
2974
2975interface LightClientArbitrum {
2976    error AddressEmptyCode(address target);
2977    error ERC1967InvalidImplementation(address implementation);
2978    error ERC1967NonPayable();
2979    error FailedInnerCall();
2980    error InsufficientSnapshotHistory();
2981    error InvalidAddress();
2982    error InvalidArgs();
2983    error InvalidHotShotBlockForCommitmentCheck();
2984    error InvalidInitialization();
2985    error InvalidMaxStateHistory();
2986    error InvalidProof();
2987    error InvalidScalar();
2988    error NoChangeRequired();
2989    error NotInitializing();
2990    error OutdatedState();
2991    error OwnableInvalidOwner(address owner);
2992    error OwnableUnauthorizedAccount(address account);
2993    error OwnershipCannotBeRenounced();
2994    error ProverNotPermissioned();
2995    error UUPSUnauthorizedCallContext();
2996    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2997    error WrongStakeTableUsed();
2998
2999    event Initialized(uint64 version);
3000    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3001    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3002    event PermissionedProverNotRequired();
3003    event PermissionedProverRequired(address permissionedProver);
3004    event Upgrade(address implementation);
3005    event Upgraded(address indexed implementation);
3006
3007    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3008    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3009    function currentBlockNumber() external view returns (uint256);
3010    function disablePermissionedProverMode() external;
3011    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3012    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3013    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3014    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3015    function getStateHistoryCount() external view returns (uint256);
3016    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3017    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3018    function isPermissionedProverEnabled() external view returns (bool);
3019    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3020    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3021    function owner() external view returns (address);
3022    function permissionedProver() external view returns (address);
3023    function proxiableUUID() external view returns (bytes32);
3024    function renounceOwnership() external;
3025    function setPermissionedProver(address prover) external;
3026    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3027    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3028    function stateHistoryFirstIndex() external view returns (uint64);
3029    function stateHistoryRetentionPeriod() external view returns (uint32);
3030    function transferOwnership(address newOwner) external;
3031    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3032}
3033```
3034
3035...which was generated by the following JSON ABI:
3036```json
3037[
3038  {
3039    "type": "function",
3040    "name": "UPGRADE_INTERFACE_VERSION",
3041    "inputs": [],
3042    "outputs": [
3043      {
3044        "name": "",
3045        "type": "string",
3046        "internalType": "string"
3047      }
3048    ],
3049    "stateMutability": "view"
3050  },
3051  {
3052    "type": "function",
3053    "name": "_getVk",
3054    "inputs": [],
3055    "outputs": [
3056      {
3057        "name": "vk",
3058        "type": "tuple",
3059        "internalType": "struct IPlonkVerifier.VerifyingKey",
3060        "components": [
3061          {
3062            "name": "domainSize",
3063            "type": "uint256",
3064            "internalType": "uint256"
3065          },
3066          {
3067            "name": "numInputs",
3068            "type": "uint256",
3069            "internalType": "uint256"
3070          },
3071          {
3072            "name": "sigma0",
3073            "type": "tuple",
3074            "internalType": "struct BN254.G1Point",
3075            "components": [
3076              {
3077                "name": "x",
3078                "type": "uint256",
3079                "internalType": "BN254.BaseField"
3080              },
3081              {
3082                "name": "y",
3083                "type": "uint256",
3084                "internalType": "BN254.BaseField"
3085              }
3086            ]
3087          },
3088          {
3089            "name": "sigma1",
3090            "type": "tuple",
3091            "internalType": "struct BN254.G1Point",
3092            "components": [
3093              {
3094                "name": "x",
3095                "type": "uint256",
3096                "internalType": "BN254.BaseField"
3097              },
3098              {
3099                "name": "y",
3100                "type": "uint256",
3101                "internalType": "BN254.BaseField"
3102              }
3103            ]
3104          },
3105          {
3106            "name": "sigma2",
3107            "type": "tuple",
3108            "internalType": "struct BN254.G1Point",
3109            "components": [
3110              {
3111                "name": "x",
3112                "type": "uint256",
3113                "internalType": "BN254.BaseField"
3114              },
3115              {
3116                "name": "y",
3117                "type": "uint256",
3118                "internalType": "BN254.BaseField"
3119              }
3120            ]
3121          },
3122          {
3123            "name": "sigma3",
3124            "type": "tuple",
3125            "internalType": "struct BN254.G1Point",
3126            "components": [
3127              {
3128                "name": "x",
3129                "type": "uint256",
3130                "internalType": "BN254.BaseField"
3131              },
3132              {
3133                "name": "y",
3134                "type": "uint256",
3135                "internalType": "BN254.BaseField"
3136              }
3137            ]
3138          },
3139          {
3140            "name": "sigma4",
3141            "type": "tuple",
3142            "internalType": "struct BN254.G1Point",
3143            "components": [
3144              {
3145                "name": "x",
3146                "type": "uint256",
3147                "internalType": "BN254.BaseField"
3148              },
3149              {
3150                "name": "y",
3151                "type": "uint256",
3152                "internalType": "BN254.BaseField"
3153              }
3154            ]
3155          },
3156          {
3157            "name": "q1",
3158            "type": "tuple",
3159            "internalType": "struct BN254.G1Point",
3160            "components": [
3161              {
3162                "name": "x",
3163                "type": "uint256",
3164                "internalType": "BN254.BaseField"
3165              },
3166              {
3167                "name": "y",
3168                "type": "uint256",
3169                "internalType": "BN254.BaseField"
3170              }
3171            ]
3172          },
3173          {
3174            "name": "q2",
3175            "type": "tuple",
3176            "internalType": "struct BN254.G1Point",
3177            "components": [
3178              {
3179                "name": "x",
3180                "type": "uint256",
3181                "internalType": "BN254.BaseField"
3182              },
3183              {
3184                "name": "y",
3185                "type": "uint256",
3186                "internalType": "BN254.BaseField"
3187              }
3188            ]
3189          },
3190          {
3191            "name": "q3",
3192            "type": "tuple",
3193            "internalType": "struct BN254.G1Point",
3194            "components": [
3195              {
3196                "name": "x",
3197                "type": "uint256",
3198                "internalType": "BN254.BaseField"
3199              },
3200              {
3201                "name": "y",
3202                "type": "uint256",
3203                "internalType": "BN254.BaseField"
3204              }
3205            ]
3206          },
3207          {
3208            "name": "q4",
3209            "type": "tuple",
3210            "internalType": "struct BN254.G1Point",
3211            "components": [
3212              {
3213                "name": "x",
3214                "type": "uint256",
3215                "internalType": "BN254.BaseField"
3216              },
3217              {
3218                "name": "y",
3219                "type": "uint256",
3220                "internalType": "BN254.BaseField"
3221              }
3222            ]
3223          },
3224          {
3225            "name": "qM12",
3226            "type": "tuple",
3227            "internalType": "struct BN254.G1Point",
3228            "components": [
3229              {
3230                "name": "x",
3231                "type": "uint256",
3232                "internalType": "BN254.BaseField"
3233              },
3234              {
3235                "name": "y",
3236                "type": "uint256",
3237                "internalType": "BN254.BaseField"
3238              }
3239            ]
3240          },
3241          {
3242            "name": "qM34",
3243            "type": "tuple",
3244            "internalType": "struct BN254.G1Point",
3245            "components": [
3246              {
3247                "name": "x",
3248                "type": "uint256",
3249                "internalType": "BN254.BaseField"
3250              },
3251              {
3252                "name": "y",
3253                "type": "uint256",
3254                "internalType": "BN254.BaseField"
3255              }
3256            ]
3257          },
3258          {
3259            "name": "qO",
3260            "type": "tuple",
3261            "internalType": "struct BN254.G1Point",
3262            "components": [
3263              {
3264                "name": "x",
3265                "type": "uint256",
3266                "internalType": "BN254.BaseField"
3267              },
3268              {
3269                "name": "y",
3270                "type": "uint256",
3271                "internalType": "BN254.BaseField"
3272              }
3273            ]
3274          },
3275          {
3276            "name": "qC",
3277            "type": "tuple",
3278            "internalType": "struct BN254.G1Point",
3279            "components": [
3280              {
3281                "name": "x",
3282                "type": "uint256",
3283                "internalType": "BN254.BaseField"
3284              },
3285              {
3286                "name": "y",
3287                "type": "uint256",
3288                "internalType": "BN254.BaseField"
3289              }
3290            ]
3291          },
3292          {
3293            "name": "qH1",
3294            "type": "tuple",
3295            "internalType": "struct BN254.G1Point",
3296            "components": [
3297              {
3298                "name": "x",
3299                "type": "uint256",
3300                "internalType": "BN254.BaseField"
3301              },
3302              {
3303                "name": "y",
3304                "type": "uint256",
3305                "internalType": "BN254.BaseField"
3306              }
3307            ]
3308          },
3309          {
3310            "name": "qH2",
3311            "type": "tuple",
3312            "internalType": "struct BN254.G1Point",
3313            "components": [
3314              {
3315                "name": "x",
3316                "type": "uint256",
3317                "internalType": "BN254.BaseField"
3318              },
3319              {
3320                "name": "y",
3321                "type": "uint256",
3322                "internalType": "BN254.BaseField"
3323              }
3324            ]
3325          },
3326          {
3327            "name": "qH3",
3328            "type": "tuple",
3329            "internalType": "struct BN254.G1Point",
3330            "components": [
3331              {
3332                "name": "x",
3333                "type": "uint256",
3334                "internalType": "BN254.BaseField"
3335              },
3336              {
3337                "name": "y",
3338                "type": "uint256",
3339                "internalType": "BN254.BaseField"
3340              }
3341            ]
3342          },
3343          {
3344            "name": "qH4",
3345            "type": "tuple",
3346            "internalType": "struct BN254.G1Point",
3347            "components": [
3348              {
3349                "name": "x",
3350                "type": "uint256",
3351                "internalType": "BN254.BaseField"
3352              },
3353              {
3354                "name": "y",
3355                "type": "uint256",
3356                "internalType": "BN254.BaseField"
3357              }
3358            ]
3359          },
3360          {
3361            "name": "qEcc",
3362            "type": "tuple",
3363            "internalType": "struct BN254.G1Point",
3364            "components": [
3365              {
3366                "name": "x",
3367                "type": "uint256",
3368                "internalType": "BN254.BaseField"
3369              },
3370              {
3371                "name": "y",
3372                "type": "uint256",
3373                "internalType": "BN254.BaseField"
3374              }
3375            ]
3376          },
3377          {
3378            "name": "g2LSB",
3379            "type": "bytes32",
3380            "internalType": "bytes32"
3381          },
3382          {
3383            "name": "g2MSB",
3384            "type": "bytes32",
3385            "internalType": "bytes32"
3386          }
3387        ]
3388      }
3389    ],
3390    "stateMutability": "pure"
3391  },
3392  {
3393    "type": "function",
3394    "name": "currentBlockNumber",
3395    "inputs": [],
3396    "outputs": [
3397      {
3398        "name": "",
3399        "type": "uint256",
3400        "internalType": "uint256"
3401      }
3402    ],
3403    "stateMutability": "view"
3404  },
3405  {
3406    "type": "function",
3407    "name": "disablePermissionedProverMode",
3408    "inputs": [],
3409    "outputs": [],
3410    "stateMutability": "nonpayable"
3411  },
3412  {
3413    "type": "function",
3414    "name": "finalizedState",
3415    "inputs": [],
3416    "outputs": [
3417      {
3418        "name": "viewNum",
3419        "type": "uint64",
3420        "internalType": "uint64"
3421      },
3422      {
3423        "name": "blockHeight",
3424        "type": "uint64",
3425        "internalType": "uint64"
3426      },
3427      {
3428        "name": "blockCommRoot",
3429        "type": "uint256",
3430        "internalType": "BN254.ScalarField"
3431      }
3432    ],
3433    "stateMutability": "view"
3434  },
3435  {
3436    "type": "function",
3437    "name": "genesisStakeTableState",
3438    "inputs": [],
3439    "outputs": [
3440      {
3441        "name": "threshold",
3442        "type": "uint256",
3443        "internalType": "uint256"
3444      },
3445      {
3446        "name": "blsKeyComm",
3447        "type": "uint256",
3448        "internalType": "BN254.ScalarField"
3449      },
3450      {
3451        "name": "schnorrKeyComm",
3452        "type": "uint256",
3453        "internalType": "BN254.ScalarField"
3454      },
3455      {
3456        "name": "amountComm",
3457        "type": "uint256",
3458        "internalType": "BN254.ScalarField"
3459      }
3460    ],
3461    "stateMutability": "view"
3462  },
3463  {
3464    "type": "function",
3465    "name": "genesisState",
3466    "inputs": [],
3467    "outputs": [
3468      {
3469        "name": "viewNum",
3470        "type": "uint64",
3471        "internalType": "uint64"
3472      },
3473      {
3474        "name": "blockHeight",
3475        "type": "uint64",
3476        "internalType": "uint64"
3477      },
3478      {
3479        "name": "blockCommRoot",
3480        "type": "uint256",
3481        "internalType": "BN254.ScalarField"
3482      }
3483    ],
3484    "stateMutability": "view"
3485  },
3486  {
3487    "type": "function",
3488    "name": "getHotShotCommitment",
3489    "inputs": [
3490      {
3491        "name": "hotShotBlockHeight",
3492        "type": "uint256",
3493        "internalType": "uint256"
3494      }
3495    ],
3496    "outputs": [
3497      {
3498        "name": "hotShotBlockCommRoot",
3499        "type": "uint256",
3500        "internalType": "BN254.ScalarField"
3501      },
3502      {
3503        "name": "hotshotBlockHeight",
3504        "type": "uint64",
3505        "internalType": "uint64"
3506      }
3507    ],
3508    "stateMutability": "view"
3509  },
3510  {
3511    "type": "function",
3512    "name": "getStateHistoryCount",
3513    "inputs": [],
3514    "outputs": [
3515      {
3516        "name": "",
3517        "type": "uint256",
3518        "internalType": "uint256"
3519      }
3520    ],
3521    "stateMutability": "view"
3522  },
3523  {
3524    "type": "function",
3525    "name": "getVersion",
3526    "inputs": [],
3527    "outputs": [
3528      {
3529        "name": "majorVersion",
3530        "type": "uint8",
3531        "internalType": "uint8"
3532      },
3533      {
3534        "name": "minorVersion",
3535        "type": "uint8",
3536        "internalType": "uint8"
3537      },
3538      {
3539        "name": "patchVersion",
3540        "type": "uint8",
3541        "internalType": "uint8"
3542      }
3543    ],
3544    "stateMutability": "pure"
3545  },
3546  {
3547    "type": "function",
3548    "name": "initialize",
3549    "inputs": [
3550      {
3551        "name": "_genesis",
3552        "type": "tuple",
3553        "internalType": "struct LightClient.LightClientState",
3554        "components": [
3555          {
3556            "name": "viewNum",
3557            "type": "uint64",
3558            "internalType": "uint64"
3559          },
3560          {
3561            "name": "blockHeight",
3562            "type": "uint64",
3563            "internalType": "uint64"
3564          },
3565          {
3566            "name": "blockCommRoot",
3567            "type": "uint256",
3568            "internalType": "BN254.ScalarField"
3569          }
3570        ]
3571      },
3572      {
3573        "name": "_genesisStakeTableState",
3574        "type": "tuple",
3575        "internalType": "struct LightClient.StakeTableState",
3576        "components": [
3577          {
3578            "name": "threshold",
3579            "type": "uint256",
3580            "internalType": "uint256"
3581          },
3582          {
3583            "name": "blsKeyComm",
3584            "type": "uint256",
3585            "internalType": "BN254.ScalarField"
3586          },
3587          {
3588            "name": "schnorrKeyComm",
3589            "type": "uint256",
3590            "internalType": "BN254.ScalarField"
3591          },
3592          {
3593            "name": "amountComm",
3594            "type": "uint256",
3595            "internalType": "BN254.ScalarField"
3596          }
3597        ]
3598      },
3599      {
3600        "name": "_stateHistoryRetentionPeriod",
3601        "type": "uint32",
3602        "internalType": "uint32"
3603      },
3604      {
3605        "name": "owner",
3606        "type": "address",
3607        "internalType": "address"
3608      }
3609    ],
3610    "outputs": [],
3611    "stateMutability": "nonpayable"
3612  },
3613  {
3614    "type": "function",
3615    "name": "isPermissionedProverEnabled",
3616    "inputs": [],
3617    "outputs": [
3618      {
3619        "name": "",
3620        "type": "bool",
3621        "internalType": "bool"
3622      }
3623    ],
3624    "stateMutability": "view"
3625  },
3626  {
3627    "type": "function",
3628    "name": "lagOverEscapeHatchThreshold",
3629    "inputs": [
3630      {
3631        "name": "blockNumber",
3632        "type": "uint256",
3633        "internalType": "uint256"
3634      },
3635      {
3636        "name": "blockThreshold",
3637        "type": "uint256",
3638        "internalType": "uint256"
3639      }
3640    ],
3641    "outputs": [
3642      {
3643        "name": "",
3644        "type": "bool",
3645        "internalType": "bool"
3646      }
3647    ],
3648    "stateMutability": "view"
3649  },
3650  {
3651    "type": "function",
3652    "name": "newFinalizedState",
3653    "inputs": [
3654      {
3655        "name": "newState",
3656        "type": "tuple",
3657        "internalType": "struct LightClient.LightClientState",
3658        "components": [
3659          {
3660            "name": "viewNum",
3661            "type": "uint64",
3662            "internalType": "uint64"
3663          },
3664          {
3665            "name": "blockHeight",
3666            "type": "uint64",
3667            "internalType": "uint64"
3668          },
3669          {
3670            "name": "blockCommRoot",
3671            "type": "uint256",
3672            "internalType": "BN254.ScalarField"
3673          }
3674        ]
3675      },
3676      {
3677        "name": "proof",
3678        "type": "tuple",
3679        "internalType": "struct IPlonkVerifier.PlonkProof",
3680        "components": [
3681          {
3682            "name": "wire0",
3683            "type": "tuple",
3684            "internalType": "struct BN254.G1Point",
3685            "components": [
3686              {
3687                "name": "x",
3688                "type": "uint256",
3689                "internalType": "BN254.BaseField"
3690              },
3691              {
3692                "name": "y",
3693                "type": "uint256",
3694                "internalType": "BN254.BaseField"
3695              }
3696            ]
3697          },
3698          {
3699            "name": "wire1",
3700            "type": "tuple",
3701            "internalType": "struct BN254.G1Point",
3702            "components": [
3703              {
3704                "name": "x",
3705                "type": "uint256",
3706                "internalType": "BN254.BaseField"
3707              },
3708              {
3709                "name": "y",
3710                "type": "uint256",
3711                "internalType": "BN254.BaseField"
3712              }
3713            ]
3714          },
3715          {
3716            "name": "wire2",
3717            "type": "tuple",
3718            "internalType": "struct BN254.G1Point",
3719            "components": [
3720              {
3721                "name": "x",
3722                "type": "uint256",
3723                "internalType": "BN254.BaseField"
3724              },
3725              {
3726                "name": "y",
3727                "type": "uint256",
3728                "internalType": "BN254.BaseField"
3729              }
3730            ]
3731          },
3732          {
3733            "name": "wire3",
3734            "type": "tuple",
3735            "internalType": "struct BN254.G1Point",
3736            "components": [
3737              {
3738                "name": "x",
3739                "type": "uint256",
3740                "internalType": "BN254.BaseField"
3741              },
3742              {
3743                "name": "y",
3744                "type": "uint256",
3745                "internalType": "BN254.BaseField"
3746              }
3747            ]
3748          },
3749          {
3750            "name": "wire4",
3751            "type": "tuple",
3752            "internalType": "struct BN254.G1Point",
3753            "components": [
3754              {
3755                "name": "x",
3756                "type": "uint256",
3757                "internalType": "BN254.BaseField"
3758              },
3759              {
3760                "name": "y",
3761                "type": "uint256",
3762                "internalType": "BN254.BaseField"
3763              }
3764            ]
3765          },
3766          {
3767            "name": "prodPerm",
3768            "type": "tuple",
3769            "internalType": "struct BN254.G1Point",
3770            "components": [
3771              {
3772                "name": "x",
3773                "type": "uint256",
3774                "internalType": "BN254.BaseField"
3775              },
3776              {
3777                "name": "y",
3778                "type": "uint256",
3779                "internalType": "BN254.BaseField"
3780              }
3781            ]
3782          },
3783          {
3784            "name": "split0",
3785            "type": "tuple",
3786            "internalType": "struct BN254.G1Point",
3787            "components": [
3788              {
3789                "name": "x",
3790                "type": "uint256",
3791                "internalType": "BN254.BaseField"
3792              },
3793              {
3794                "name": "y",
3795                "type": "uint256",
3796                "internalType": "BN254.BaseField"
3797              }
3798            ]
3799          },
3800          {
3801            "name": "split1",
3802            "type": "tuple",
3803            "internalType": "struct BN254.G1Point",
3804            "components": [
3805              {
3806                "name": "x",
3807                "type": "uint256",
3808                "internalType": "BN254.BaseField"
3809              },
3810              {
3811                "name": "y",
3812                "type": "uint256",
3813                "internalType": "BN254.BaseField"
3814              }
3815            ]
3816          },
3817          {
3818            "name": "split2",
3819            "type": "tuple",
3820            "internalType": "struct BN254.G1Point",
3821            "components": [
3822              {
3823                "name": "x",
3824                "type": "uint256",
3825                "internalType": "BN254.BaseField"
3826              },
3827              {
3828                "name": "y",
3829                "type": "uint256",
3830                "internalType": "BN254.BaseField"
3831              }
3832            ]
3833          },
3834          {
3835            "name": "split3",
3836            "type": "tuple",
3837            "internalType": "struct BN254.G1Point",
3838            "components": [
3839              {
3840                "name": "x",
3841                "type": "uint256",
3842                "internalType": "BN254.BaseField"
3843              },
3844              {
3845                "name": "y",
3846                "type": "uint256",
3847                "internalType": "BN254.BaseField"
3848              }
3849            ]
3850          },
3851          {
3852            "name": "split4",
3853            "type": "tuple",
3854            "internalType": "struct BN254.G1Point",
3855            "components": [
3856              {
3857                "name": "x",
3858                "type": "uint256",
3859                "internalType": "BN254.BaseField"
3860              },
3861              {
3862                "name": "y",
3863                "type": "uint256",
3864                "internalType": "BN254.BaseField"
3865              }
3866            ]
3867          },
3868          {
3869            "name": "zeta",
3870            "type": "tuple",
3871            "internalType": "struct BN254.G1Point",
3872            "components": [
3873              {
3874                "name": "x",
3875                "type": "uint256",
3876                "internalType": "BN254.BaseField"
3877              },
3878              {
3879                "name": "y",
3880                "type": "uint256",
3881                "internalType": "BN254.BaseField"
3882              }
3883            ]
3884          },
3885          {
3886            "name": "zetaOmega",
3887            "type": "tuple",
3888            "internalType": "struct BN254.G1Point",
3889            "components": [
3890              {
3891                "name": "x",
3892                "type": "uint256",
3893                "internalType": "BN254.BaseField"
3894              },
3895              {
3896                "name": "y",
3897                "type": "uint256",
3898                "internalType": "BN254.BaseField"
3899              }
3900            ]
3901          },
3902          {
3903            "name": "wireEval0",
3904            "type": "uint256",
3905            "internalType": "BN254.ScalarField"
3906          },
3907          {
3908            "name": "wireEval1",
3909            "type": "uint256",
3910            "internalType": "BN254.ScalarField"
3911          },
3912          {
3913            "name": "wireEval2",
3914            "type": "uint256",
3915            "internalType": "BN254.ScalarField"
3916          },
3917          {
3918            "name": "wireEval3",
3919            "type": "uint256",
3920            "internalType": "BN254.ScalarField"
3921          },
3922          {
3923            "name": "wireEval4",
3924            "type": "uint256",
3925            "internalType": "BN254.ScalarField"
3926          },
3927          {
3928            "name": "sigmaEval0",
3929            "type": "uint256",
3930            "internalType": "BN254.ScalarField"
3931          },
3932          {
3933            "name": "sigmaEval1",
3934            "type": "uint256",
3935            "internalType": "BN254.ScalarField"
3936          },
3937          {
3938            "name": "sigmaEval2",
3939            "type": "uint256",
3940            "internalType": "BN254.ScalarField"
3941          },
3942          {
3943            "name": "sigmaEval3",
3944            "type": "uint256",
3945            "internalType": "BN254.ScalarField"
3946          },
3947          {
3948            "name": "prodPermZetaOmegaEval",
3949            "type": "uint256",
3950            "internalType": "BN254.ScalarField"
3951          }
3952        ]
3953      }
3954    ],
3955    "outputs": [],
3956    "stateMutability": "nonpayable"
3957  },
3958  {
3959    "type": "function",
3960    "name": "owner",
3961    "inputs": [],
3962    "outputs": [
3963      {
3964        "name": "",
3965        "type": "address",
3966        "internalType": "address"
3967      }
3968    ],
3969    "stateMutability": "view"
3970  },
3971  {
3972    "type": "function",
3973    "name": "permissionedProver",
3974    "inputs": [],
3975    "outputs": [
3976      {
3977        "name": "",
3978        "type": "address",
3979        "internalType": "address"
3980      }
3981    ],
3982    "stateMutability": "view"
3983  },
3984  {
3985    "type": "function",
3986    "name": "proxiableUUID",
3987    "inputs": [],
3988    "outputs": [
3989      {
3990        "name": "",
3991        "type": "bytes32",
3992        "internalType": "bytes32"
3993      }
3994    ],
3995    "stateMutability": "view"
3996  },
3997  {
3998    "type": "function",
3999    "name": "renounceOwnership",
4000    "inputs": [],
4001    "outputs": [],
4002    "stateMutability": "nonpayable"
4003  },
4004  {
4005    "type": "function",
4006    "name": "setPermissionedProver",
4007    "inputs": [
4008      {
4009        "name": "prover",
4010        "type": "address",
4011        "internalType": "address"
4012      }
4013    ],
4014    "outputs": [],
4015    "stateMutability": "nonpayable"
4016  },
4017  {
4018    "type": "function",
4019    "name": "setstateHistoryRetentionPeriod",
4020    "inputs": [
4021      {
4022        "name": "historySeconds",
4023        "type": "uint32",
4024        "internalType": "uint32"
4025      }
4026    ],
4027    "outputs": [],
4028    "stateMutability": "nonpayable"
4029  },
4030  {
4031    "type": "function",
4032    "name": "stateHistoryCommitments",
4033    "inputs": [
4034      {
4035        "name": "",
4036        "type": "uint256",
4037        "internalType": "uint256"
4038      }
4039    ],
4040    "outputs": [
4041      {
4042        "name": "l1BlockHeight",
4043        "type": "uint64",
4044        "internalType": "uint64"
4045      },
4046      {
4047        "name": "l1BlockTimestamp",
4048        "type": "uint64",
4049        "internalType": "uint64"
4050      },
4051      {
4052        "name": "hotShotBlockHeight",
4053        "type": "uint64",
4054        "internalType": "uint64"
4055      },
4056      {
4057        "name": "hotShotBlockCommRoot",
4058        "type": "uint256",
4059        "internalType": "BN254.ScalarField"
4060      }
4061    ],
4062    "stateMutability": "view"
4063  },
4064  {
4065    "type": "function",
4066    "name": "stateHistoryFirstIndex",
4067    "inputs": [],
4068    "outputs": [
4069      {
4070        "name": "",
4071        "type": "uint64",
4072        "internalType": "uint64"
4073      }
4074    ],
4075    "stateMutability": "view"
4076  },
4077  {
4078    "type": "function",
4079    "name": "stateHistoryRetentionPeriod",
4080    "inputs": [],
4081    "outputs": [
4082      {
4083        "name": "",
4084        "type": "uint32",
4085        "internalType": "uint32"
4086      }
4087    ],
4088    "stateMutability": "view"
4089  },
4090  {
4091    "type": "function",
4092    "name": "transferOwnership",
4093    "inputs": [
4094      {
4095        "name": "newOwner",
4096        "type": "address",
4097        "internalType": "address"
4098      }
4099    ],
4100    "outputs": [],
4101    "stateMutability": "nonpayable"
4102  },
4103  {
4104    "type": "function",
4105    "name": "upgradeToAndCall",
4106    "inputs": [
4107      {
4108        "name": "newImplementation",
4109        "type": "address",
4110        "internalType": "address"
4111      },
4112      {
4113        "name": "data",
4114        "type": "bytes",
4115        "internalType": "bytes"
4116      }
4117    ],
4118    "outputs": [],
4119    "stateMutability": "payable"
4120  },
4121  {
4122    "type": "event",
4123    "name": "Initialized",
4124    "inputs": [
4125      {
4126        "name": "version",
4127        "type": "uint64",
4128        "indexed": false,
4129        "internalType": "uint64"
4130      }
4131    ],
4132    "anonymous": false
4133  },
4134  {
4135    "type": "event",
4136    "name": "NewState",
4137    "inputs": [
4138      {
4139        "name": "viewNum",
4140        "type": "uint64",
4141        "indexed": true,
4142        "internalType": "uint64"
4143      },
4144      {
4145        "name": "blockHeight",
4146        "type": "uint64",
4147        "indexed": true,
4148        "internalType": "uint64"
4149      },
4150      {
4151        "name": "blockCommRoot",
4152        "type": "uint256",
4153        "indexed": false,
4154        "internalType": "BN254.ScalarField"
4155      }
4156    ],
4157    "anonymous": false
4158  },
4159  {
4160    "type": "event",
4161    "name": "OwnershipTransferred",
4162    "inputs": [
4163      {
4164        "name": "previousOwner",
4165        "type": "address",
4166        "indexed": true,
4167        "internalType": "address"
4168      },
4169      {
4170        "name": "newOwner",
4171        "type": "address",
4172        "indexed": true,
4173        "internalType": "address"
4174      }
4175    ],
4176    "anonymous": false
4177  },
4178  {
4179    "type": "event",
4180    "name": "PermissionedProverNotRequired",
4181    "inputs": [],
4182    "anonymous": false
4183  },
4184  {
4185    "type": "event",
4186    "name": "PermissionedProverRequired",
4187    "inputs": [
4188      {
4189        "name": "permissionedProver",
4190        "type": "address",
4191        "indexed": false,
4192        "internalType": "address"
4193      }
4194    ],
4195    "anonymous": false
4196  },
4197  {
4198    "type": "event",
4199    "name": "Upgrade",
4200    "inputs": [
4201      {
4202        "name": "implementation",
4203        "type": "address",
4204        "indexed": false,
4205        "internalType": "address"
4206      }
4207    ],
4208    "anonymous": false
4209  },
4210  {
4211    "type": "event",
4212    "name": "Upgraded",
4213    "inputs": [
4214      {
4215        "name": "implementation",
4216        "type": "address",
4217        "indexed": true,
4218        "internalType": "address"
4219      }
4220    ],
4221    "anonymous": false
4222  },
4223  {
4224    "type": "error",
4225    "name": "AddressEmptyCode",
4226    "inputs": [
4227      {
4228        "name": "target",
4229        "type": "address",
4230        "internalType": "address"
4231      }
4232    ]
4233  },
4234  {
4235    "type": "error",
4236    "name": "ERC1967InvalidImplementation",
4237    "inputs": [
4238      {
4239        "name": "implementation",
4240        "type": "address",
4241        "internalType": "address"
4242      }
4243    ]
4244  },
4245  {
4246    "type": "error",
4247    "name": "ERC1967NonPayable",
4248    "inputs": []
4249  },
4250  {
4251    "type": "error",
4252    "name": "FailedInnerCall",
4253    "inputs": []
4254  },
4255  {
4256    "type": "error",
4257    "name": "InsufficientSnapshotHistory",
4258    "inputs": []
4259  },
4260  {
4261    "type": "error",
4262    "name": "InvalidAddress",
4263    "inputs": []
4264  },
4265  {
4266    "type": "error",
4267    "name": "InvalidArgs",
4268    "inputs": []
4269  },
4270  {
4271    "type": "error",
4272    "name": "InvalidHotShotBlockForCommitmentCheck",
4273    "inputs": []
4274  },
4275  {
4276    "type": "error",
4277    "name": "InvalidInitialization",
4278    "inputs": []
4279  },
4280  {
4281    "type": "error",
4282    "name": "InvalidMaxStateHistory",
4283    "inputs": []
4284  },
4285  {
4286    "type": "error",
4287    "name": "InvalidProof",
4288    "inputs": []
4289  },
4290  {
4291    "type": "error",
4292    "name": "InvalidScalar",
4293    "inputs": []
4294  },
4295  {
4296    "type": "error",
4297    "name": "NoChangeRequired",
4298    "inputs": []
4299  },
4300  {
4301    "type": "error",
4302    "name": "NotInitializing",
4303    "inputs": []
4304  },
4305  {
4306    "type": "error",
4307    "name": "OutdatedState",
4308    "inputs": []
4309  },
4310  {
4311    "type": "error",
4312    "name": "OwnableInvalidOwner",
4313    "inputs": [
4314      {
4315        "name": "owner",
4316        "type": "address",
4317        "internalType": "address"
4318      }
4319    ]
4320  },
4321  {
4322    "type": "error",
4323    "name": "OwnableUnauthorizedAccount",
4324    "inputs": [
4325      {
4326        "name": "account",
4327        "type": "address",
4328        "internalType": "address"
4329      }
4330    ]
4331  },
4332  {
4333    "type": "error",
4334    "name": "OwnershipCannotBeRenounced",
4335    "inputs": []
4336  },
4337  {
4338    "type": "error",
4339    "name": "ProverNotPermissioned",
4340    "inputs": []
4341  },
4342  {
4343    "type": "error",
4344    "name": "UUPSUnauthorizedCallContext",
4345    "inputs": []
4346  },
4347  {
4348    "type": "error",
4349    "name": "UUPSUnsupportedProxiableUUID",
4350    "inputs": [
4351      {
4352        "name": "slot",
4353        "type": "bytes32",
4354        "internalType": "bytes32"
4355      }
4356    ]
4357  },
4358  {
4359    "type": "error",
4360    "name": "WrongStakeTableUsed",
4361    "inputs": []
4362  }
4363]
4364```*/
4365#[allow(
4366    non_camel_case_types,
4367    non_snake_case,
4368    clippy::pub_underscore_fields,
4369    clippy::style,
4370    clippy::empty_structs_with_brackets
4371)]
4372pub mod LightClientArbitrum {
4373    use super::*;
4374    use alloy::sol_types as alloy_sol_types;
4375    /// The creation / init bytecode of the contract.
4376    ///
4377    /// ```text
4378    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612bad6100f95f395f81816117640152818161178d015261190a0152612bad5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fbd565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611fd6565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da9190611fed565b34801561023a575f5ffd5b50610184610249366004612322565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124d2565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611fd6565b610938565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b50610184610432366004612588565b610a63565b348015610442575f5ffd5b506101846104513660046125a1565b610aec565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da919061264a565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461267f565b610c0e565b348015610579575f5ffd5b50610184610588366004611fbd565b610d6f565b348015610598575f5ffd5b506009546102d7565b6105a9610db1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d1f565b6106ad610e0c565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161143b565b610763828261147c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b4284611570565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061269f565b610877611759565b610880826117fd565b61088a828261183e565b5050565b5f6108976118ff565b505f516020612b815f395f51905f5290565b6108b1610db1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610db1565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f9182919061094c6001836126ca565b8154811061095c5761095c6126dd565b5f918252602090912060029091020154600160801b90046001600160401b0316841061099b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a5c5784600982815481106109cb576109cb6126dd565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a545760098181548110610a0457610a046126dd565b905f5260205f2090600202016001015460098281548110610a2757610a276126dd565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016109af565b5050915091565b610a6b610db1565b610e108163ffffffff161080610a8a57506301e133808163ffffffff16115b80610aa8575060085463ffffffff600160a01b909104811690821611155b15610ac6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b305750825b90505f826001600160401b03166001148015610b4b5750303b155b905081158015610b59575080155b15610b775760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ba157845460ff60401b1916600160401b1785555b610baa86611948565b610bb2611959565b610bbd898989611961565b8315610c0357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c1b61080d565b841180610c26575080155b80610c705750600854600980549091600160c01b90046001600160401b0316908110610c5457610c546126dd565b5f9182526020909120600290910201546001600160401b031684105b15610c8e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c9c6001856126ca565b90505b81610d3857600854600160c01b90046001600160401b03168110610d38578660098281548110610cd157610cd16126dd565b5f9182526020909120600290910201546001600160401b031611610d26576001915060098181548110610d0657610d066126dd565b5f9182526020909120600290910201546001600160401b03169250610d38565b80610d30816126f1565b915050610c9f565b81610d565760405163b0b4387760e01b815260040160405180910390fd5b85610d6184896126ca565b119450505050505b92915050565b610d77610db1565b6001600160a01b038116610da557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610dae81611a8d565b50565b33610de37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d9c565b610e14611d1f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405163016c173360e21b815260040160405180910390fd5b5f61148561069d565b905061148f611f84565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061150e908590859088906004016128e2565b602060405180830381865af4158015611529573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154d9190612b02565b61156a576040516309bde33960e01b815260040160405180910390fd5b50505050565b600954158015906115e5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115b0576115b06126dd565b5f9182526020909120600290910201546115da90600160401b90046001600160401b031684612b21565b6001600160401b0316115b1561167857600854600980549091600160c01b90046001600160401b0316908110611612576116126126dd565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861165283612b40565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117df57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117d35f516020612b815f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611805610db1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611898575060408051601f3d908101601f191682019092526118959181019061269f565b60015b6118c057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d9c565b5f516020612b815f395f51905f5281146118f057604051632a87526960e21b815260048101829052602401610d9c565b6118fa8383611afd565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b611950611b52565b610dae81611b9b565b610915611b52565b82516001600160401b0316151580611985575060208301516001600160401b031615155b8061199257506020820151155b8061199f57506040820151155b806119ac57506060820151155b806119b657508151155b806119c85750610e108163ffffffff16105b806119dc57506301e133808163ffffffff16115b156119fa576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611b0682611ba3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b4a576118fa8282611c06565b61088a611c78565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d77611b52565b806001600160a01b03163b5f03611bd857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d9c565b5f516020612b815f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c229190612b6a565b5f60405180830381855af49150503d805f8114611c5a576040519150601f19603f3d011682016040523d82523d5f602084013e611c5f565b606091505b5091509150611c6f858383611c97565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611cac57611ca782611cf6565b611cef565b8151158015611cc357506001600160a01b0384163b155b15611cec57604051639996b31560e01b81526001600160a01b0385166004820152602401610d9c565b50805b9392505050565b805115611d065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d5260405180604001604052805f81526020015f81525090565b8152602001611d7260405180604001604052805f81526020015f81525090565b8152602001611d9260405180604001604052805f81526020015f81525090565b8152602001611db260405180604001604052805f81526020015f81525090565b8152602001611dd260405180604001604052805f81526020015f81525090565b8152602001611df260405180604001604052805f81526020015f81525090565b8152602001611e1260405180604001604052805f81526020015f81525090565b8152602001611e3260405180604001604052805f81526020015f81525090565b8152602001611e5260405180604001604052805f81526020015f81525090565b8152602001611e7260405180604001604052805f81526020015f81525090565b8152602001611e9260405180604001604052805f81526020015f81525090565b8152602001611eb260405180604001604052805f81526020015f81525090565b8152602001611ed260405180604001604052805f81526020015f81525090565b8152602001611ef260405180604001604052805f81526020015f81525090565b8152602001611f1260405180604001604052805f81526020015f81525090565b8152602001611f3260405180604001604052805f81526020015f81525090565b8152602001611f5260405180604001604052805f81526020015f81525090565b8152602001611f7260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fb8575f5ffd5b919050565b5f60208284031215611fcd575f5ffd5b611cef82611fa2565b5f60208284031215611fe6575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161201f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612225576122256121ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612253576122536121ee565b604052919050565b80356001600160401b0381168114611fb8575f5ffd5b5f60608284031215612281575f5ffd5b604051606081016001600160401b03811182821017156122a3576122a36121ee565b6040529050806122b28361225b565b81526122c06020840161225b565b6020820152604092830135920191909152919050565b5f604082840312156122e6575f5ffd5b604080519081016001600160401b0381118282101715612308576123086121ee565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612335575f5ffd5b61233f8585612271565b9250610480605f1982011215612353575f5ffd5b5061235c612202565b61236985606086016122d6565b81526123788560a086016122d6565b602082015261238a8560e086016122d6565b604082015261239d8561012086016122d6565b60608201526123b08561016086016122d6565b60808201526123c3856101a086016122d6565b60a08201526123d6856101e086016122d6565b60c08201526123e98561022086016122d6565b60e08201526123fc8561026086016122d6565b610100820152612410856102a086016122d6565b610120820152612424856102e086016122d6565b6101408201526124388561032086016122d6565b61016082015261244c8561036086016122d6565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156124e3575f5ffd5b6124ec83611fa2565b915060208301356001600160401b03811115612506575f5ffd5b8301601f81018513612516575f5ffd5b80356001600160401b0381111561252f5761252f6121ee565b612542601f8201601f191660200161222b565b818152866020838501011115612556575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fb8575f5ffd5b5f60208284031215612598575f5ffd5b611cef82612575565b5f5f5f5f8486036101208112156125b6575f5ffd5b6125c08787612271565b94506080605f19820112156125d3575f5ffd5b50604051608081016001600160401b03811182821017156125f6576125f66121ee565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061263060e08601612575565b915061263f6101008601611fa2565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612690575f5ffd5b50508035926020909101359150565b5f602082840312156126af575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d6957610d696126b6565b634e487b7160e01b5f52603260045260245ffd5b5f816126ff576126ff6126b6565b505f190190565b805f5b600781101561156a578151845260209384019390910190600101612709565b61273d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612914604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612aec610500830185612706565b612afa6105e0830184612728565b949350505050565b5f60208284031215612b12575f5ffd5b81518015158114611cef575f5ffd5b6001600160401b038281168282160390811115610d6957610d696126b6565b5f6001600160401b0382166001600160401b038103612b6157612b616126b6565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4379    /// ```
4380    #[rustfmt::skip]
4381    #[allow(clippy::all)]
4382    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4383        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+\xADa\0\xF9_9_\x81\x81a\x17d\x01R\x81\x81a\x17\x8D\x01Ra\x19\n\x01Ra+\xAD_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xBDV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xD6V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a\x1F\xEDV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#\"V[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xD2V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xD6V[a\t8V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\x88V[a\ncV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xA1V[a\n\xECV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&JV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x7FV[a\x0C\x0EV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xBDV[a\roV[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@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\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D\x1FV[a\x06\xADa\x0E\x0CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14;V[a\x07c\x82\x82a\x14|V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15pV[\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\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\x9FV[a\x08wa\x17YV[a\x08\x80\x82a\x17\xFDV[a\x08\x8A\x82\x82a\x18>V[PPV[_a\x08\x97a\x18\xFFV[P_Q` a+\x81_9_Q\x90_R\x90V[a\x08\xB1a\r\xB1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\x1Fa\r\xB1V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\tL`\x01\x83a&\xCAV[\x81T\x81\x10a\t\\Wa\t\\a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x9BW`@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\n\\W\x84`\t\x82\x81T\x81\x10a\t\xCBWa\t\xCBa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nTW`\t\x81\x81T\x81\x10a\n\x04Wa\n\x04a&\xDDV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n'Wa\n'a&\xDDV[\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\t\xAFV[PP\x91P\x91V[a\nka\r\xB1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x8AWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\xA8WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xC6W`@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\x0B0WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0BKWP0;\x15[\x90P\x81\x15\x80\x15a\x0BYWP\x80\x15[\x15a\x0BwW`@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\x0B\xA1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\xAA\x86a\x19HV[a\x0B\xB2a\x19YV[a\x0B\xBD\x89\x89\x89a\x19aV[\x83\x15a\x0C\x03W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x1Ba\x08\rV[\x84\x11\x80a\x0C&WP\x80\x15[\x80a\x0CpWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CTWa\x0CTa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x8EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x9C`\x01\x85a&\xCAV[\x90P[\x81a\r8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r8W\x86`\t\x82\x81T\x81\x10a\x0C\xD1Wa\x0C\xD1a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r&W`\x01\x91P`\t\x81\x81T\x81\x10a\r\x06Wa\r\x06a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r8V[\x80a\r0\x81a&\xF1V[\x91PPa\x0C\x9FV[\x81a\rVW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\ra\x84\x89a&\xCAV[\x11\x94PPPPP[\x92\x91PPV[a\rwa\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\xAE\x81a\x1A\x8DV[PV[3a\r\xE3\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\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x9CV[a\x0E\x14a\x1D\x1FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x85a\x06\x9DV[\x90Pa\x14\x8Fa\x1F\x84V[\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\x0E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(\xE2V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15)W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15M\x91\x90a+\x02V[a\x15jW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\xE5WP`\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\xB0Wa\x15\xB0a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xDA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+!V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16xW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16\x12Wa\x16\x12a&\xDDV[_\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\x16R\x83a+@V[\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\x17\xDFWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\xD3_Q` a+\x81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x05a\r\xB1V[`@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\x06IV[\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\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x95\x91\x81\x01\x90a&\x9FV[`\x01[a\x18\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_9_Q\x90_R\x81\x14a\x18\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x9CV[a\x18\xFA\x83\x83a\x1A\xFDV[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\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19Pa\x1BRV[a\r\xAE\x81a\x1B\x9BV[a\t\x15a\x1BRV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x85WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\x92WP` \x82\x01Q\x15[\x80a\x19\x9FWP`@\x82\x01Q\x15[\x80a\x19\xACWP``\x82\x01Q\x15[\x80a\x19\xB6WP\x81Q\x15[\x80a\x19\xC8WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xDCWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\xFAW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1B\x06\x82a\x1B\xA3V[`@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\x1BJWa\x18\xFA\x82\x82a\x1C\x06V[a\x08\x8Aa\x1CxV[\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\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rwa\x1BRV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_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\x1C\"\x91\x90a+jV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CZW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C_V[``\x91P[P\x91P\x91Pa\x1Co\x85\x83\x83a\x1C\x97V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xACWa\x1C\xA7\x82a\x1C\xF6V[a\x1C\xEFV[\x81Q\x15\x80\x15a\x1C\xC3WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\xECW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D\x06W\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\x1DR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Dr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1ER`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Er`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xCDW__\xFD[a\x1C\xEF\x82a\x1F\xA2V[_` \x82\x84\x03\x12\x15a\x1F\xE6W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa \x1F`@\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\"%Wa\"%a!\xEEV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"SWa\"Sa!\xEEV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[_``\x82\x84\x03\x12\x15a\"\x81W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xA3Wa\"\xA3a!\xEEV[`@R\x90P\x80a\"\xB2\x83a\"[V[\x81Ra\"\xC0` \x84\x01a\"[V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\xE6W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x08Wa#\x08a!\xEEV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#5W__\xFD[a#?\x85\x85a\"qV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#SW__\xFD[Pa#\\a\"\x02V[a#i\x85``\x86\x01a\"\xD6V[\x81Ra#x\x85`\xA0\x86\x01a\"\xD6V[` \x82\x01Ra#\x8A\x85`\xE0\x86\x01a\"\xD6V[`@\x82\x01Ra#\x9D\x85a\x01 \x86\x01a\"\xD6V[``\x82\x01Ra#\xB0\x85a\x01`\x86\x01a\"\xD6V[`\x80\x82\x01Ra#\xC3\x85a\x01\xA0\x86\x01a\"\xD6V[`\xA0\x82\x01Ra#\xD6\x85a\x01\xE0\x86\x01a\"\xD6V[`\xC0\x82\x01Ra#\xE9\x85a\x02 \x86\x01a\"\xD6V[`\xE0\x82\x01Ra#\xFC\x85a\x02`\x86\x01a\"\xD6V[a\x01\0\x82\x01Ra$\x10\x85a\x02\xA0\x86\x01a\"\xD6V[a\x01 \x82\x01Ra$$\x85a\x02\xE0\x86\x01a\"\xD6V[a\x01@\x82\x01Ra$8\x85a\x03 \x86\x01a\"\xD6V[a\x01`\x82\x01Ra$L\x85a\x03`\x86\x01a\"\xD6V[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$\xE3W__\xFD[a$\xEC\x83a\x1F\xA2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x06W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x16W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%/Wa%/a!\xEEV[a%B`\x1F\x82\x01`\x1F\x19\x16` \x01a\"+V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%VW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xB8W__\xFD[_` \x82\x84\x03\x12\x15a%\x98W__\xFD[a\x1C\xEF\x82a%uV[____\x84\x86\x03a\x01 \x81\x12\x15a%\xB6W__\xFD[a%\xC0\x87\x87a\"qV[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xD3W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xF6Wa%\xF6a!\xEEV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&0`\xE0\x86\x01a%uV[\x91Pa&?a\x01\0\x86\x01a\x1F\xA2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\x90W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xAFW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\riWa\ria&\xB6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\xFFWa&\xFFa&\xB6V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15jW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'\tV[a'=\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)\x14`@\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*\xECa\x05\0\x83\x01\x85a'\x06V[a*\xFAa\x05\xE0\x83\x01\x84a'(V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xEFW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\riWa\ria&\xB6V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+aWa+aa&\xB6V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4384    );
4385    /// The runtime bytecode of the contract, as deployed on the network.
4386    ///
4387    /// ```text
4388    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fbd565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611fd6565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da9190611fed565b34801561023a575f5ffd5b50610184610249366004612322565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124d2565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611fd6565b610938565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b50610184610432366004612588565b610a63565b348015610442575f5ffd5b506101846104513660046125a1565b610aec565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da919061264a565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461267f565b610c0e565b348015610579575f5ffd5b50610184610588366004611fbd565b610d6f565b348015610598575f5ffd5b506009546102d7565b6105a9610db1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d1f565b6106ad610e0c565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161143b565b610763828261147c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b4284611570565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061269f565b610877611759565b610880826117fd565b61088a828261183e565b5050565b5f6108976118ff565b505f516020612b815f395f51905f5290565b6108b1610db1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610db1565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f9182919061094c6001836126ca565b8154811061095c5761095c6126dd565b5f918252602090912060029091020154600160801b90046001600160401b0316841061099b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a5c5784600982815481106109cb576109cb6126dd565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a545760098181548110610a0457610a046126dd565b905f5260205f2090600202016001015460098281548110610a2757610a276126dd565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016109af565b5050915091565b610a6b610db1565b610e108163ffffffff161080610a8a57506301e133808163ffffffff16115b80610aa8575060085463ffffffff600160a01b909104811690821611155b15610ac6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b305750825b90505f826001600160401b03166001148015610b4b5750303b155b905081158015610b59575080155b15610b775760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ba157845460ff60401b1916600160401b1785555b610baa86611948565b610bb2611959565b610bbd898989611961565b8315610c0357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c1b61080d565b841180610c26575080155b80610c705750600854600980549091600160c01b90046001600160401b0316908110610c5457610c546126dd565b5f9182526020909120600290910201546001600160401b031684105b15610c8e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c9c6001856126ca565b90505b81610d3857600854600160c01b90046001600160401b03168110610d38578660098281548110610cd157610cd16126dd565b5f9182526020909120600290910201546001600160401b031611610d26576001915060098181548110610d0657610d066126dd565b5f9182526020909120600290910201546001600160401b03169250610d38565b80610d30816126f1565b915050610c9f565b81610d565760405163b0b4387760e01b815260040160405180910390fd5b85610d6184896126ca565b119450505050505b92915050565b610d77610db1565b6001600160a01b038116610da557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610dae81611a8d565b50565b33610de37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d9c565b610e14611d1f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405163016c173360e21b815260040160405180910390fd5b5f61148561069d565b905061148f611f84565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061150e908590859088906004016128e2565b602060405180830381865af4158015611529573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154d9190612b02565b61156a576040516309bde33960e01b815260040160405180910390fd5b50505050565b600954158015906115e5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115b0576115b06126dd565b5f9182526020909120600290910201546115da90600160401b90046001600160401b031684612b21565b6001600160401b0316115b1561167857600854600980549091600160c01b90046001600160401b0316908110611612576116126126dd565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861165283612b40565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117df57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117d35f516020612b815f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611805610db1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611898575060408051601f3d908101601f191682019092526118959181019061269f565b60015b6118c057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d9c565b5f516020612b815f395f51905f5281146118f057604051632a87526960e21b815260048101829052602401610d9c565b6118fa8383611afd565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b611950611b52565b610dae81611b9b565b610915611b52565b82516001600160401b0316151580611985575060208301516001600160401b031615155b8061199257506020820151155b8061199f57506040820151155b806119ac57506060820151155b806119b657508151155b806119c85750610e108163ffffffff16105b806119dc57506301e133808163ffffffff16115b156119fa576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611b0682611ba3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b4a576118fa8282611c06565b61088a611c78565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d77611b52565b806001600160a01b03163b5f03611bd857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d9c565b5f516020612b815f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c229190612b6a565b5f60405180830381855af49150503d805f8114611c5a576040519150601f19603f3d011682016040523d82523d5f602084013e611c5f565b606091505b5091509150611c6f858383611c97565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611cac57611ca782611cf6565b611cef565b8151158015611cc357506001600160a01b0384163b155b15611cec57604051639996b31560e01b81526001600160a01b0385166004820152602401610d9c565b50805b9392505050565b805115611d065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d5260405180604001604052805f81526020015f81525090565b8152602001611d7260405180604001604052805f81526020015f81525090565b8152602001611d9260405180604001604052805f81526020015f81525090565b8152602001611db260405180604001604052805f81526020015f81525090565b8152602001611dd260405180604001604052805f81526020015f81525090565b8152602001611df260405180604001604052805f81526020015f81525090565b8152602001611e1260405180604001604052805f81526020015f81525090565b8152602001611e3260405180604001604052805f81526020015f81525090565b8152602001611e5260405180604001604052805f81526020015f81525090565b8152602001611e7260405180604001604052805f81526020015f81525090565b8152602001611e9260405180604001604052805f81526020015f81525090565b8152602001611eb260405180604001604052805f81526020015f81525090565b8152602001611ed260405180604001604052805f81526020015f81525090565b8152602001611ef260405180604001604052805f81526020015f81525090565b8152602001611f1260405180604001604052805f81526020015f81525090565b8152602001611f3260405180604001604052805f81526020015f81525090565b8152602001611f5260405180604001604052805f81526020015f81525090565b8152602001611f7260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fb8575f5ffd5b919050565b5f60208284031215611fcd575f5ffd5b611cef82611fa2565b5f60208284031215611fe6575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161201f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612225576122256121ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612253576122536121ee565b604052919050565b80356001600160401b0381168114611fb8575f5ffd5b5f60608284031215612281575f5ffd5b604051606081016001600160401b03811182821017156122a3576122a36121ee565b6040529050806122b28361225b565b81526122c06020840161225b565b6020820152604092830135920191909152919050565b5f604082840312156122e6575f5ffd5b604080519081016001600160401b0381118282101715612308576123086121ee565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612335575f5ffd5b61233f8585612271565b9250610480605f1982011215612353575f5ffd5b5061235c612202565b61236985606086016122d6565b81526123788560a086016122d6565b602082015261238a8560e086016122d6565b604082015261239d8561012086016122d6565b60608201526123b08561016086016122d6565b60808201526123c3856101a086016122d6565b60a08201526123d6856101e086016122d6565b60c08201526123e98561022086016122d6565b60e08201526123fc8561026086016122d6565b610100820152612410856102a086016122d6565b610120820152612424856102e086016122d6565b6101408201526124388561032086016122d6565b61016082015261244c8561036086016122d6565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156124e3575f5ffd5b6124ec83611fa2565b915060208301356001600160401b03811115612506575f5ffd5b8301601f81018513612516575f5ffd5b80356001600160401b0381111561252f5761252f6121ee565b612542601f8201601f191660200161222b565b818152866020838501011115612556575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fb8575f5ffd5b5f60208284031215612598575f5ffd5b611cef82612575565b5f5f5f5f8486036101208112156125b6575f5ffd5b6125c08787612271565b94506080605f19820112156125d3575f5ffd5b50604051608081016001600160401b03811182821017156125f6576125f66121ee565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061263060e08601612575565b915061263f6101008601611fa2565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612690575f5ffd5b50508035926020909101359150565b5f602082840312156126af575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d6957610d696126b6565b634e487b7160e01b5f52603260045260245ffd5b5f816126ff576126ff6126b6565b505f190190565b805f5b600781101561156a578151845260209384019390910190600101612709565b61273d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612914604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612aec610500830185612706565b612afa6105e0830184612728565b949350505050565b5f60208284031215612b12575f5ffd5b81518015158114611cef575f5ffd5b6001600160401b038281168282160390811115610d6957610d696126b6565b5f6001600160401b0382166001600160401b038103612b6157612b616126b6565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4389    /// ```
4390    #[rustfmt::skip]
4391    #[allow(clippy::all)]
4392    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4393        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xBDV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xD6V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a\x1F\xEDV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#\"V[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xD2V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xD6V[a\t8V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\x88V[a\ncV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xA1V[a\n\xECV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&JV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x7FV[a\x0C\x0EV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xBDV[a\roV[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@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\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D\x1FV[a\x06\xADa\x0E\x0CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14;V[a\x07c\x82\x82a\x14|V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15pV[\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\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\x9FV[a\x08wa\x17YV[a\x08\x80\x82a\x17\xFDV[a\x08\x8A\x82\x82a\x18>V[PPV[_a\x08\x97a\x18\xFFV[P_Q` a+\x81_9_Q\x90_R\x90V[a\x08\xB1a\r\xB1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\x1Fa\r\xB1V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\tL`\x01\x83a&\xCAV[\x81T\x81\x10a\t\\Wa\t\\a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x9BW`@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\n\\W\x84`\t\x82\x81T\x81\x10a\t\xCBWa\t\xCBa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nTW`\t\x81\x81T\x81\x10a\n\x04Wa\n\x04a&\xDDV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n'Wa\n'a&\xDDV[\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\t\xAFV[PP\x91P\x91V[a\nka\r\xB1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x8AWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\xA8WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xC6W`@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\x0B0WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0BKWP0;\x15[\x90P\x81\x15\x80\x15a\x0BYWP\x80\x15[\x15a\x0BwW`@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\x0B\xA1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\xAA\x86a\x19HV[a\x0B\xB2a\x19YV[a\x0B\xBD\x89\x89\x89a\x19aV[\x83\x15a\x0C\x03W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x1Ba\x08\rV[\x84\x11\x80a\x0C&WP\x80\x15[\x80a\x0CpWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CTWa\x0CTa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x8EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x9C`\x01\x85a&\xCAV[\x90P[\x81a\r8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r8W\x86`\t\x82\x81T\x81\x10a\x0C\xD1Wa\x0C\xD1a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r&W`\x01\x91P`\t\x81\x81T\x81\x10a\r\x06Wa\r\x06a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r8V[\x80a\r0\x81a&\xF1V[\x91PPa\x0C\x9FV[\x81a\rVW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\ra\x84\x89a&\xCAV[\x11\x94PPPPP[\x92\x91PPV[a\rwa\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\xAE\x81a\x1A\x8DV[PV[3a\r\xE3\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\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x9CV[a\x0E\x14a\x1D\x1FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x85a\x06\x9DV[\x90Pa\x14\x8Fa\x1F\x84V[\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\x0E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(\xE2V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15)W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15M\x91\x90a+\x02V[a\x15jW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\xE5WP`\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\xB0Wa\x15\xB0a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xDA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+!V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16xW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16\x12Wa\x16\x12a&\xDDV[_\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\x16R\x83a+@V[\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\x17\xDFWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\xD3_Q` a+\x81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x05a\r\xB1V[`@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\x06IV[\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\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x95\x91\x81\x01\x90a&\x9FV[`\x01[a\x18\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_9_Q\x90_R\x81\x14a\x18\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x9CV[a\x18\xFA\x83\x83a\x1A\xFDV[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\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19Pa\x1BRV[a\r\xAE\x81a\x1B\x9BV[a\t\x15a\x1BRV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x85WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\x92WP` \x82\x01Q\x15[\x80a\x19\x9FWP`@\x82\x01Q\x15[\x80a\x19\xACWP``\x82\x01Q\x15[\x80a\x19\xB6WP\x81Q\x15[\x80a\x19\xC8WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xDCWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\xFAW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1B\x06\x82a\x1B\xA3V[`@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\x1BJWa\x18\xFA\x82\x82a\x1C\x06V[a\x08\x8Aa\x1CxV[\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\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rwa\x1BRV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_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\x1C\"\x91\x90a+jV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CZW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C_V[``\x91P[P\x91P\x91Pa\x1Co\x85\x83\x83a\x1C\x97V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xACWa\x1C\xA7\x82a\x1C\xF6V[a\x1C\xEFV[\x81Q\x15\x80\x15a\x1C\xC3WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\xECW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D\x06W\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\x1DR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Dr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1ER`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Er`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xCDW__\xFD[a\x1C\xEF\x82a\x1F\xA2V[_` \x82\x84\x03\x12\x15a\x1F\xE6W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa \x1F`@\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\"%Wa\"%a!\xEEV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"SWa\"Sa!\xEEV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[_``\x82\x84\x03\x12\x15a\"\x81W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xA3Wa\"\xA3a!\xEEV[`@R\x90P\x80a\"\xB2\x83a\"[V[\x81Ra\"\xC0` \x84\x01a\"[V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\xE6W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x08Wa#\x08a!\xEEV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#5W__\xFD[a#?\x85\x85a\"qV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#SW__\xFD[Pa#\\a\"\x02V[a#i\x85``\x86\x01a\"\xD6V[\x81Ra#x\x85`\xA0\x86\x01a\"\xD6V[` \x82\x01Ra#\x8A\x85`\xE0\x86\x01a\"\xD6V[`@\x82\x01Ra#\x9D\x85a\x01 \x86\x01a\"\xD6V[``\x82\x01Ra#\xB0\x85a\x01`\x86\x01a\"\xD6V[`\x80\x82\x01Ra#\xC3\x85a\x01\xA0\x86\x01a\"\xD6V[`\xA0\x82\x01Ra#\xD6\x85a\x01\xE0\x86\x01a\"\xD6V[`\xC0\x82\x01Ra#\xE9\x85a\x02 \x86\x01a\"\xD6V[`\xE0\x82\x01Ra#\xFC\x85a\x02`\x86\x01a\"\xD6V[a\x01\0\x82\x01Ra$\x10\x85a\x02\xA0\x86\x01a\"\xD6V[a\x01 \x82\x01Ra$$\x85a\x02\xE0\x86\x01a\"\xD6V[a\x01@\x82\x01Ra$8\x85a\x03 \x86\x01a\"\xD6V[a\x01`\x82\x01Ra$L\x85a\x03`\x86\x01a\"\xD6V[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$\xE3W__\xFD[a$\xEC\x83a\x1F\xA2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x06W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x16W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%/Wa%/a!\xEEV[a%B`\x1F\x82\x01`\x1F\x19\x16` \x01a\"+V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%VW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xB8W__\xFD[_` \x82\x84\x03\x12\x15a%\x98W__\xFD[a\x1C\xEF\x82a%uV[____\x84\x86\x03a\x01 \x81\x12\x15a%\xB6W__\xFD[a%\xC0\x87\x87a\"qV[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xD3W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xF6Wa%\xF6a!\xEEV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&0`\xE0\x86\x01a%uV[\x91Pa&?a\x01\0\x86\x01a\x1F\xA2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\x90W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xAFW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\riWa\ria&\xB6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\xFFWa&\xFFa&\xB6V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15jW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'\tV[a'=\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)\x14`@\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*\xECa\x05\0\x83\x01\x85a'\x06V[a*\xFAa\x05\xE0\x83\x01\x84a'(V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xEFW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\riWa\ria&\xB6V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+aWa+aa&\xB6V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4394    );
4395    #[derive(serde::Serialize, serde::Deserialize)]
4396    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4397    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4398```solidity
4399error AddressEmptyCode(address target);
4400```*/
4401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4402    #[derive(Clone)]
4403    pub struct AddressEmptyCode {
4404        #[allow(missing_docs)]
4405        pub target: alloy::sol_types::private::Address,
4406    }
4407    #[allow(
4408        non_camel_case_types,
4409        non_snake_case,
4410        clippy::pub_underscore_fields,
4411        clippy::style
4412    )]
4413    const _: () = {
4414        use alloy::sol_types as alloy_sol_types;
4415        #[doc(hidden)]
4416        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4417        #[doc(hidden)]
4418        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4419        #[cfg(test)]
4420        #[allow(dead_code, unreachable_patterns)]
4421        fn _type_assertion(
4422            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4423        ) {
4424            match _t {
4425                alloy_sol_types::private::AssertTypeEq::<
4426                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4427                >(_) => {}
4428            }
4429        }
4430        #[automatically_derived]
4431        #[doc(hidden)]
4432        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4433            fn from(value: AddressEmptyCode) -> Self {
4434                (value.target,)
4435            }
4436        }
4437        #[automatically_derived]
4438        #[doc(hidden)]
4439        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4440            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4441                Self { target: tuple.0 }
4442            }
4443        }
4444        #[automatically_derived]
4445        impl alloy_sol_types::SolError for AddressEmptyCode {
4446            type Parameters<'a> = UnderlyingSolTuple<'a>;
4447            type Token<'a> = <Self::Parameters<
4448                'a,
4449            > as alloy_sol_types::SolType>::Token<'a>;
4450            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4451            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4452            #[inline]
4453            fn new<'a>(
4454                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4455            ) -> Self {
4456                tuple.into()
4457            }
4458            #[inline]
4459            fn tokenize(&self) -> Self::Token<'_> {
4460                (
4461                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4462                        &self.target,
4463                    ),
4464                )
4465            }
4466            #[inline]
4467            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4468                <Self::Parameters<
4469                    '_,
4470                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4471                    .map(Self::new)
4472            }
4473        }
4474    };
4475    #[derive(serde::Serialize, serde::Deserialize)]
4476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4477    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4478```solidity
4479error ERC1967InvalidImplementation(address implementation);
4480```*/
4481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4482    #[derive(Clone)]
4483    pub struct ERC1967InvalidImplementation {
4484        #[allow(missing_docs)]
4485        pub implementation: alloy::sol_types::private::Address,
4486    }
4487    #[allow(
4488        non_camel_case_types,
4489        non_snake_case,
4490        clippy::pub_underscore_fields,
4491        clippy::style
4492    )]
4493    const _: () = {
4494        use alloy::sol_types as alloy_sol_types;
4495        #[doc(hidden)]
4496        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4497        #[doc(hidden)]
4498        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4499        #[cfg(test)]
4500        #[allow(dead_code, unreachable_patterns)]
4501        fn _type_assertion(
4502            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4503        ) {
4504            match _t {
4505                alloy_sol_types::private::AssertTypeEq::<
4506                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4507                >(_) => {}
4508            }
4509        }
4510        #[automatically_derived]
4511        #[doc(hidden)]
4512        impl ::core::convert::From<ERC1967InvalidImplementation>
4513        for UnderlyingRustTuple<'_> {
4514            fn from(value: ERC1967InvalidImplementation) -> Self {
4515                (value.implementation,)
4516            }
4517        }
4518        #[automatically_derived]
4519        #[doc(hidden)]
4520        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4521        for ERC1967InvalidImplementation {
4522            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4523                Self { implementation: tuple.0 }
4524            }
4525        }
4526        #[automatically_derived]
4527        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4528            type Parameters<'a> = UnderlyingSolTuple<'a>;
4529            type Token<'a> = <Self::Parameters<
4530                'a,
4531            > as alloy_sol_types::SolType>::Token<'a>;
4532            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4533            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4534            #[inline]
4535            fn new<'a>(
4536                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4537            ) -> Self {
4538                tuple.into()
4539            }
4540            #[inline]
4541            fn tokenize(&self) -> Self::Token<'_> {
4542                (
4543                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4544                        &self.implementation,
4545                    ),
4546                )
4547            }
4548            #[inline]
4549            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4550                <Self::Parameters<
4551                    '_,
4552                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4553                    .map(Self::new)
4554            }
4555        }
4556    };
4557    #[derive(serde::Serialize, serde::Deserialize)]
4558    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4559    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4560```solidity
4561error ERC1967NonPayable();
4562```*/
4563    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4564    #[derive(Clone)]
4565    pub struct ERC1967NonPayable;
4566    #[allow(
4567        non_camel_case_types,
4568        non_snake_case,
4569        clippy::pub_underscore_fields,
4570        clippy::style
4571    )]
4572    const _: () = {
4573        use alloy::sol_types as alloy_sol_types;
4574        #[doc(hidden)]
4575        type UnderlyingSolTuple<'a> = ();
4576        #[doc(hidden)]
4577        type UnderlyingRustTuple<'a> = ();
4578        #[cfg(test)]
4579        #[allow(dead_code, unreachable_patterns)]
4580        fn _type_assertion(
4581            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4582        ) {
4583            match _t {
4584                alloy_sol_types::private::AssertTypeEq::<
4585                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4586                >(_) => {}
4587            }
4588        }
4589        #[automatically_derived]
4590        #[doc(hidden)]
4591        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4592            fn from(value: ERC1967NonPayable) -> Self {
4593                ()
4594            }
4595        }
4596        #[automatically_derived]
4597        #[doc(hidden)]
4598        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4599            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4600                Self
4601            }
4602        }
4603        #[automatically_derived]
4604        impl alloy_sol_types::SolError for ERC1967NonPayable {
4605            type Parameters<'a> = UnderlyingSolTuple<'a>;
4606            type Token<'a> = <Self::Parameters<
4607                'a,
4608            > as alloy_sol_types::SolType>::Token<'a>;
4609            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4610            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4611            #[inline]
4612            fn new<'a>(
4613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4614            ) -> Self {
4615                tuple.into()
4616            }
4617            #[inline]
4618            fn tokenize(&self) -> Self::Token<'_> {
4619                ()
4620            }
4621            #[inline]
4622            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4623                <Self::Parameters<
4624                    '_,
4625                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4626                    .map(Self::new)
4627            }
4628        }
4629    };
4630    #[derive(serde::Serialize, serde::Deserialize)]
4631    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4632    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4633```solidity
4634error FailedInnerCall();
4635```*/
4636    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4637    #[derive(Clone)]
4638    pub struct FailedInnerCall;
4639    #[allow(
4640        non_camel_case_types,
4641        non_snake_case,
4642        clippy::pub_underscore_fields,
4643        clippy::style
4644    )]
4645    const _: () = {
4646        use alloy::sol_types as alloy_sol_types;
4647        #[doc(hidden)]
4648        type UnderlyingSolTuple<'a> = ();
4649        #[doc(hidden)]
4650        type UnderlyingRustTuple<'a> = ();
4651        #[cfg(test)]
4652        #[allow(dead_code, unreachable_patterns)]
4653        fn _type_assertion(
4654            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4655        ) {
4656            match _t {
4657                alloy_sol_types::private::AssertTypeEq::<
4658                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4659                >(_) => {}
4660            }
4661        }
4662        #[automatically_derived]
4663        #[doc(hidden)]
4664        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4665            fn from(value: FailedInnerCall) -> Self {
4666                ()
4667            }
4668        }
4669        #[automatically_derived]
4670        #[doc(hidden)]
4671        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4672            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4673                Self
4674            }
4675        }
4676        #[automatically_derived]
4677        impl alloy_sol_types::SolError for FailedInnerCall {
4678            type Parameters<'a> = UnderlyingSolTuple<'a>;
4679            type Token<'a> = <Self::Parameters<
4680                'a,
4681            > as alloy_sol_types::SolType>::Token<'a>;
4682            const SIGNATURE: &'static str = "FailedInnerCall()";
4683            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4684            #[inline]
4685            fn new<'a>(
4686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4687            ) -> Self {
4688                tuple.into()
4689            }
4690            #[inline]
4691            fn tokenize(&self) -> Self::Token<'_> {
4692                ()
4693            }
4694            #[inline]
4695            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4696                <Self::Parameters<
4697                    '_,
4698                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4699                    .map(Self::new)
4700            }
4701        }
4702    };
4703    #[derive(serde::Serialize, serde::Deserialize)]
4704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4705    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4706```solidity
4707error InsufficientSnapshotHistory();
4708```*/
4709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4710    #[derive(Clone)]
4711    pub struct InsufficientSnapshotHistory;
4712    #[allow(
4713        non_camel_case_types,
4714        non_snake_case,
4715        clippy::pub_underscore_fields,
4716        clippy::style
4717    )]
4718    const _: () = {
4719        use alloy::sol_types as alloy_sol_types;
4720        #[doc(hidden)]
4721        type UnderlyingSolTuple<'a> = ();
4722        #[doc(hidden)]
4723        type UnderlyingRustTuple<'a> = ();
4724        #[cfg(test)]
4725        #[allow(dead_code, unreachable_patterns)]
4726        fn _type_assertion(
4727            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4728        ) {
4729            match _t {
4730                alloy_sol_types::private::AssertTypeEq::<
4731                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4732                >(_) => {}
4733            }
4734        }
4735        #[automatically_derived]
4736        #[doc(hidden)]
4737        impl ::core::convert::From<InsufficientSnapshotHistory>
4738        for UnderlyingRustTuple<'_> {
4739            fn from(value: InsufficientSnapshotHistory) -> Self {
4740                ()
4741            }
4742        }
4743        #[automatically_derived]
4744        #[doc(hidden)]
4745        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4746        for InsufficientSnapshotHistory {
4747            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4748                Self
4749            }
4750        }
4751        #[automatically_derived]
4752        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4753            type Parameters<'a> = UnderlyingSolTuple<'a>;
4754            type Token<'a> = <Self::Parameters<
4755                'a,
4756            > as alloy_sol_types::SolType>::Token<'a>;
4757            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4758            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4759            #[inline]
4760            fn new<'a>(
4761                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4762            ) -> Self {
4763                tuple.into()
4764            }
4765            #[inline]
4766            fn tokenize(&self) -> Self::Token<'_> {
4767                ()
4768            }
4769            #[inline]
4770            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4771                <Self::Parameters<
4772                    '_,
4773                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4774                    .map(Self::new)
4775            }
4776        }
4777    };
4778    #[derive(serde::Serialize, serde::Deserialize)]
4779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4780    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4781```solidity
4782error InvalidAddress();
4783```*/
4784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4785    #[derive(Clone)]
4786    pub struct InvalidAddress;
4787    #[allow(
4788        non_camel_case_types,
4789        non_snake_case,
4790        clippy::pub_underscore_fields,
4791        clippy::style
4792    )]
4793    const _: () = {
4794        use alloy::sol_types as alloy_sol_types;
4795        #[doc(hidden)]
4796        type UnderlyingSolTuple<'a> = ();
4797        #[doc(hidden)]
4798        type UnderlyingRustTuple<'a> = ();
4799        #[cfg(test)]
4800        #[allow(dead_code, unreachable_patterns)]
4801        fn _type_assertion(
4802            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4803        ) {
4804            match _t {
4805                alloy_sol_types::private::AssertTypeEq::<
4806                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4807                >(_) => {}
4808            }
4809        }
4810        #[automatically_derived]
4811        #[doc(hidden)]
4812        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4813            fn from(value: InvalidAddress) -> Self {
4814                ()
4815            }
4816        }
4817        #[automatically_derived]
4818        #[doc(hidden)]
4819        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4820            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4821                Self
4822            }
4823        }
4824        #[automatically_derived]
4825        impl alloy_sol_types::SolError for InvalidAddress {
4826            type Parameters<'a> = UnderlyingSolTuple<'a>;
4827            type Token<'a> = <Self::Parameters<
4828                'a,
4829            > as alloy_sol_types::SolType>::Token<'a>;
4830            const SIGNATURE: &'static str = "InvalidAddress()";
4831            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4832            #[inline]
4833            fn new<'a>(
4834                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4835            ) -> Self {
4836                tuple.into()
4837            }
4838            #[inline]
4839            fn tokenize(&self) -> Self::Token<'_> {
4840                ()
4841            }
4842            #[inline]
4843            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4844                <Self::Parameters<
4845                    '_,
4846                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4847                    .map(Self::new)
4848            }
4849        }
4850    };
4851    #[derive(serde::Serialize, serde::Deserialize)]
4852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4853    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4854```solidity
4855error InvalidArgs();
4856```*/
4857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4858    #[derive(Clone)]
4859    pub struct InvalidArgs;
4860    #[allow(
4861        non_camel_case_types,
4862        non_snake_case,
4863        clippy::pub_underscore_fields,
4864        clippy::style
4865    )]
4866    const _: () = {
4867        use alloy::sol_types as alloy_sol_types;
4868        #[doc(hidden)]
4869        type UnderlyingSolTuple<'a> = ();
4870        #[doc(hidden)]
4871        type UnderlyingRustTuple<'a> = ();
4872        #[cfg(test)]
4873        #[allow(dead_code, unreachable_patterns)]
4874        fn _type_assertion(
4875            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4876        ) {
4877            match _t {
4878                alloy_sol_types::private::AssertTypeEq::<
4879                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4880                >(_) => {}
4881            }
4882        }
4883        #[automatically_derived]
4884        #[doc(hidden)]
4885        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4886            fn from(value: InvalidArgs) -> Self {
4887                ()
4888            }
4889        }
4890        #[automatically_derived]
4891        #[doc(hidden)]
4892        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4893            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4894                Self
4895            }
4896        }
4897        #[automatically_derived]
4898        impl alloy_sol_types::SolError for InvalidArgs {
4899            type Parameters<'a> = UnderlyingSolTuple<'a>;
4900            type Token<'a> = <Self::Parameters<
4901                'a,
4902            > as alloy_sol_types::SolType>::Token<'a>;
4903            const SIGNATURE: &'static str = "InvalidArgs()";
4904            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4905            #[inline]
4906            fn new<'a>(
4907                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4908            ) -> Self {
4909                tuple.into()
4910            }
4911            #[inline]
4912            fn tokenize(&self) -> Self::Token<'_> {
4913                ()
4914            }
4915            #[inline]
4916            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4917                <Self::Parameters<
4918                    '_,
4919                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4920                    .map(Self::new)
4921            }
4922        }
4923    };
4924    #[derive(serde::Serialize, serde::Deserialize)]
4925    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4926    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4927```solidity
4928error InvalidHotShotBlockForCommitmentCheck();
4929```*/
4930    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4931    #[derive(Clone)]
4932    pub struct InvalidHotShotBlockForCommitmentCheck;
4933    #[allow(
4934        non_camel_case_types,
4935        non_snake_case,
4936        clippy::pub_underscore_fields,
4937        clippy::style
4938    )]
4939    const _: () = {
4940        use alloy::sol_types as alloy_sol_types;
4941        #[doc(hidden)]
4942        type UnderlyingSolTuple<'a> = ();
4943        #[doc(hidden)]
4944        type UnderlyingRustTuple<'a> = ();
4945        #[cfg(test)]
4946        #[allow(dead_code, unreachable_patterns)]
4947        fn _type_assertion(
4948            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4949        ) {
4950            match _t {
4951                alloy_sol_types::private::AssertTypeEq::<
4952                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4953                >(_) => {}
4954            }
4955        }
4956        #[automatically_derived]
4957        #[doc(hidden)]
4958        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4959        for UnderlyingRustTuple<'_> {
4960            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4961                ()
4962            }
4963        }
4964        #[automatically_derived]
4965        #[doc(hidden)]
4966        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4967        for InvalidHotShotBlockForCommitmentCheck {
4968            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4969                Self
4970            }
4971        }
4972        #[automatically_derived]
4973        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4974            type Parameters<'a> = UnderlyingSolTuple<'a>;
4975            type Token<'a> = <Self::Parameters<
4976                'a,
4977            > as alloy_sol_types::SolType>::Token<'a>;
4978            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4979            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4980            #[inline]
4981            fn new<'a>(
4982                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4983            ) -> Self {
4984                tuple.into()
4985            }
4986            #[inline]
4987            fn tokenize(&self) -> Self::Token<'_> {
4988                ()
4989            }
4990            #[inline]
4991            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4992                <Self::Parameters<
4993                    '_,
4994                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4995                    .map(Self::new)
4996            }
4997        }
4998    };
4999    #[derive(serde::Serialize, serde::Deserialize)]
5000    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5001    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5002```solidity
5003error InvalidInitialization();
5004```*/
5005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5006    #[derive(Clone)]
5007    pub struct InvalidInitialization;
5008    #[allow(
5009        non_camel_case_types,
5010        non_snake_case,
5011        clippy::pub_underscore_fields,
5012        clippy::style
5013    )]
5014    const _: () = {
5015        use alloy::sol_types as alloy_sol_types;
5016        #[doc(hidden)]
5017        type UnderlyingSolTuple<'a> = ();
5018        #[doc(hidden)]
5019        type UnderlyingRustTuple<'a> = ();
5020        #[cfg(test)]
5021        #[allow(dead_code, unreachable_patterns)]
5022        fn _type_assertion(
5023            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5024        ) {
5025            match _t {
5026                alloy_sol_types::private::AssertTypeEq::<
5027                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5028                >(_) => {}
5029            }
5030        }
5031        #[automatically_derived]
5032        #[doc(hidden)]
5033        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5034            fn from(value: InvalidInitialization) -> Self {
5035                ()
5036            }
5037        }
5038        #[automatically_derived]
5039        #[doc(hidden)]
5040        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5041            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5042                Self
5043            }
5044        }
5045        #[automatically_derived]
5046        impl alloy_sol_types::SolError for InvalidInitialization {
5047            type Parameters<'a> = UnderlyingSolTuple<'a>;
5048            type Token<'a> = <Self::Parameters<
5049                'a,
5050            > as alloy_sol_types::SolType>::Token<'a>;
5051            const SIGNATURE: &'static str = "InvalidInitialization()";
5052            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5053            #[inline]
5054            fn new<'a>(
5055                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5056            ) -> Self {
5057                tuple.into()
5058            }
5059            #[inline]
5060            fn tokenize(&self) -> Self::Token<'_> {
5061                ()
5062            }
5063            #[inline]
5064            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5065                <Self::Parameters<
5066                    '_,
5067                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5068                    .map(Self::new)
5069            }
5070        }
5071    };
5072    #[derive(serde::Serialize, serde::Deserialize)]
5073    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5074    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5075```solidity
5076error InvalidMaxStateHistory();
5077```*/
5078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5079    #[derive(Clone)]
5080    pub struct InvalidMaxStateHistory;
5081    #[allow(
5082        non_camel_case_types,
5083        non_snake_case,
5084        clippy::pub_underscore_fields,
5085        clippy::style
5086    )]
5087    const _: () = {
5088        use alloy::sol_types as alloy_sol_types;
5089        #[doc(hidden)]
5090        type UnderlyingSolTuple<'a> = ();
5091        #[doc(hidden)]
5092        type UnderlyingRustTuple<'a> = ();
5093        #[cfg(test)]
5094        #[allow(dead_code, unreachable_patterns)]
5095        fn _type_assertion(
5096            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5097        ) {
5098            match _t {
5099                alloy_sol_types::private::AssertTypeEq::<
5100                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5101                >(_) => {}
5102            }
5103        }
5104        #[automatically_derived]
5105        #[doc(hidden)]
5106        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5107            fn from(value: InvalidMaxStateHistory) -> Self {
5108                ()
5109            }
5110        }
5111        #[automatically_derived]
5112        #[doc(hidden)]
5113        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5114            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5115                Self
5116            }
5117        }
5118        #[automatically_derived]
5119        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5120            type Parameters<'a> = UnderlyingSolTuple<'a>;
5121            type Token<'a> = <Self::Parameters<
5122                'a,
5123            > as alloy_sol_types::SolType>::Token<'a>;
5124            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5125            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5126            #[inline]
5127            fn new<'a>(
5128                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5129            ) -> Self {
5130                tuple.into()
5131            }
5132            #[inline]
5133            fn tokenize(&self) -> Self::Token<'_> {
5134                ()
5135            }
5136            #[inline]
5137            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5138                <Self::Parameters<
5139                    '_,
5140                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5141                    .map(Self::new)
5142            }
5143        }
5144    };
5145    #[derive(serde::Serialize, serde::Deserialize)]
5146    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5147    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5148```solidity
5149error InvalidProof();
5150```*/
5151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5152    #[derive(Clone)]
5153    pub struct InvalidProof;
5154    #[allow(
5155        non_camel_case_types,
5156        non_snake_case,
5157        clippy::pub_underscore_fields,
5158        clippy::style
5159    )]
5160    const _: () = {
5161        use alloy::sol_types as alloy_sol_types;
5162        #[doc(hidden)]
5163        type UnderlyingSolTuple<'a> = ();
5164        #[doc(hidden)]
5165        type UnderlyingRustTuple<'a> = ();
5166        #[cfg(test)]
5167        #[allow(dead_code, unreachable_patterns)]
5168        fn _type_assertion(
5169            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5170        ) {
5171            match _t {
5172                alloy_sol_types::private::AssertTypeEq::<
5173                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5174                >(_) => {}
5175            }
5176        }
5177        #[automatically_derived]
5178        #[doc(hidden)]
5179        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5180            fn from(value: InvalidProof) -> Self {
5181                ()
5182            }
5183        }
5184        #[automatically_derived]
5185        #[doc(hidden)]
5186        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5187            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5188                Self
5189            }
5190        }
5191        #[automatically_derived]
5192        impl alloy_sol_types::SolError for InvalidProof {
5193            type Parameters<'a> = UnderlyingSolTuple<'a>;
5194            type Token<'a> = <Self::Parameters<
5195                'a,
5196            > as alloy_sol_types::SolType>::Token<'a>;
5197            const SIGNATURE: &'static str = "InvalidProof()";
5198            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5199            #[inline]
5200            fn new<'a>(
5201                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5202            ) -> Self {
5203                tuple.into()
5204            }
5205            #[inline]
5206            fn tokenize(&self) -> Self::Token<'_> {
5207                ()
5208            }
5209            #[inline]
5210            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5211                <Self::Parameters<
5212                    '_,
5213                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5214                    .map(Self::new)
5215            }
5216        }
5217    };
5218    #[derive(serde::Serialize, serde::Deserialize)]
5219    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5220    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5221```solidity
5222error InvalidScalar();
5223```*/
5224    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5225    #[derive(Clone)]
5226    pub struct InvalidScalar;
5227    #[allow(
5228        non_camel_case_types,
5229        non_snake_case,
5230        clippy::pub_underscore_fields,
5231        clippy::style
5232    )]
5233    const _: () = {
5234        use alloy::sol_types as alloy_sol_types;
5235        #[doc(hidden)]
5236        type UnderlyingSolTuple<'a> = ();
5237        #[doc(hidden)]
5238        type UnderlyingRustTuple<'a> = ();
5239        #[cfg(test)]
5240        #[allow(dead_code, unreachable_patterns)]
5241        fn _type_assertion(
5242            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5243        ) {
5244            match _t {
5245                alloy_sol_types::private::AssertTypeEq::<
5246                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5247                >(_) => {}
5248            }
5249        }
5250        #[automatically_derived]
5251        #[doc(hidden)]
5252        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5253            fn from(value: InvalidScalar) -> Self {
5254                ()
5255            }
5256        }
5257        #[automatically_derived]
5258        #[doc(hidden)]
5259        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5260            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5261                Self
5262            }
5263        }
5264        #[automatically_derived]
5265        impl alloy_sol_types::SolError for InvalidScalar {
5266            type Parameters<'a> = UnderlyingSolTuple<'a>;
5267            type Token<'a> = <Self::Parameters<
5268                'a,
5269            > as alloy_sol_types::SolType>::Token<'a>;
5270            const SIGNATURE: &'static str = "InvalidScalar()";
5271            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5272            #[inline]
5273            fn new<'a>(
5274                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5275            ) -> Self {
5276                tuple.into()
5277            }
5278            #[inline]
5279            fn tokenize(&self) -> Self::Token<'_> {
5280                ()
5281            }
5282            #[inline]
5283            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5284                <Self::Parameters<
5285                    '_,
5286                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5287                    .map(Self::new)
5288            }
5289        }
5290    };
5291    #[derive(serde::Serialize, serde::Deserialize)]
5292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5293    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5294```solidity
5295error NoChangeRequired();
5296```*/
5297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5298    #[derive(Clone)]
5299    pub struct NoChangeRequired;
5300    #[allow(
5301        non_camel_case_types,
5302        non_snake_case,
5303        clippy::pub_underscore_fields,
5304        clippy::style
5305    )]
5306    const _: () = {
5307        use alloy::sol_types as alloy_sol_types;
5308        #[doc(hidden)]
5309        type UnderlyingSolTuple<'a> = ();
5310        #[doc(hidden)]
5311        type UnderlyingRustTuple<'a> = ();
5312        #[cfg(test)]
5313        #[allow(dead_code, unreachable_patterns)]
5314        fn _type_assertion(
5315            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5316        ) {
5317            match _t {
5318                alloy_sol_types::private::AssertTypeEq::<
5319                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5320                >(_) => {}
5321            }
5322        }
5323        #[automatically_derived]
5324        #[doc(hidden)]
5325        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5326            fn from(value: NoChangeRequired) -> Self {
5327                ()
5328            }
5329        }
5330        #[automatically_derived]
5331        #[doc(hidden)]
5332        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5333            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5334                Self
5335            }
5336        }
5337        #[automatically_derived]
5338        impl alloy_sol_types::SolError for NoChangeRequired {
5339            type Parameters<'a> = UnderlyingSolTuple<'a>;
5340            type Token<'a> = <Self::Parameters<
5341                'a,
5342            > as alloy_sol_types::SolType>::Token<'a>;
5343            const SIGNATURE: &'static str = "NoChangeRequired()";
5344            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5345            #[inline]
5346            fn new<'a>(
5347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5348            ) -> Self {
5349                tuple.into()
5350            }
5351            #[inline]
5352            fn tokenize(&self) -> Self::Token<'_> {
5353                ()
5354            }
5355            #[inline]
5356            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5357                <Self::Parameters<
5358                    '_,
5359                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5360                    .map(Self::new)
5361            }
5362        }
5363    };
5364    #[derive(serde::Serialize, serde::Deserialize)]
5365    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5366    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5367```solidity
5368error NotInitializing();
5369```*/
5370    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5371    #[derive(Clone)]
5372    pub struct NotInitializing;
5373    #[allow(
5374        non_camel_case_types,
5375        non_snake_case,
5376        clippy::pub_underscore_fields,
5377        clippy::style
5378    )]
5379    const _: () = {
5380        use alloy::sol_types as alloy_sol_types;
5381        #[doc(hidden)]
5382        type UnderlyingSolTuple<'a> = ();
5383        #[doc(hidden)]
5384        type UnderlyingRustTuple<'a> = ();
5385        #[cfg(test)]
5386        #[allow(dead_code, unreachable_patterns)]
5387        fn _type_assertion(
5388            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5389        ) {
5390            match _t {
5391                alloy_sol_types::private::AssertTypeEq::<
5392                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5393                >(_) => {}
5394            }
5395        }
5396        #[automatically_derived]
5397        #[doc(hidden)]
5398        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5399            fn from(value: NotInitializing) -> Self {
5400                ()
5401            }
5402        }
5403        #[automatically_derived]
5404        #[doc(hidden)]
5405        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5406            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5407                Self
5408            }
5409        }
5410        #[automatically_derived]
5411        impl alloy_sol_types::SolError for NotInitializing {
5412            type Parameters<'a> = UnderlyingSolTuple<'a>;
5413            type Token<'a> = <Self::Parameters<
5414                'a,
5415            > as alloy_sol_types::SolType>::Token<'a>;
5416            const SIGNATURE: &'static str = "NotInitializing()";
5417            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5418            #[inline]
5419            fn new<'a>(
5420                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5421            ) -> Self {
5422                tuple.into()
5423            }
5424            #[inline]
5425            fn tokenize(&self) -> Self::Token<'_> {
5426                ()
5427            }
5428            #[inline]
5429            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5430                <Self::Parameters<
5431                    '_,
5432                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5433                    .map(Self::new)
5434            }
5435        }
5436    };
5437    #[derive(serde::Serialize, serde::Deserialize)]
5438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5439    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5440```solidity
5441error OutdatedState();
5442```*/
5443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5444    #[derive(Clone)]
5445    pub struct OutdatedState;
5446    #[allow(
5447        non_camel_case_types,
5448        non_snake_case,
5449        clippy::pub_underscore_fields,
5450        clippy::style
5451    )]
5452    const _: () = {
5453        use alloy::sol_types as alloy_sol_types;
5454        #[doc(hidden)]
5455        type UnderlyingSolTuple<'a> = ();
5456        #[doc(hidden)]
5457        type UnderlyingRustTuple<'a> = ();
5458        #[cfg(test)]
5459        #[allow(dead_code, unreachable_patterns)]
5460        fn _type_assertion(
5461            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5462        ) {
5463            match _t {
5464                alloy_sol_types::private::AssertTypeEq::<
5465                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5466                >(_) => {}
5467            }
5468        }
5469        #[automatically_derived]
5470        #[doc(hidden)]
5471        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5472            fn from(value: OutdatedState) -> Self {
5473                ()
5474            }
5475        }
5476        #[automatically_derived]
5477        #[doc(hidden)]
5478        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5479            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5480                Self
5481            }
5482        }
5483        #[automatically_derived]
5484        impl alloy_sol_types::SolError for OutdatedState {
5485            type Parameters<'a> = UnderlyingSolTuple<'a>;
5486            type Token<'a> = <Self::Parameters<
5487                'a,
5488            > as alloy_sol_types::SolType>::Token<'a>;
5489            const SIGNATURE: &'static str = "OutdatedState()";
5490            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5491            #[inline]
5492            fn new<'a>(
5493                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5494            ) -> Self {
5495                tuple.into()
5496            }
5497            #[inline]
5498            fn tokenize(&self) -> Self::Token<'_> {
5499                ()
5500            }
5501            #[inline]
5502            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5503                <Self::Parameters<
5504                    '_,
5505                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5506                    .map(Self::new)
5507            }
5508        }
5509    };
5510    #[derive(serde::Serialize, serde::Deserialize)]
5511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5512    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5513```solidity
5514error OwnableInvalidOwner(address owner);
5515```*/
5516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5517    #[derive(Clone)]
5518    pub struct OwnableInvalidOwner {
5519        #[allow(missing_docs)]
5520        pub owner: alloy::sol_types::private::Address,
5521    }
5522    #[allow(
5523        non_camel_case_types,
5524        non_snake_case,
5525        clippy::pub_underscore_fields,
5526        clippy::style
5527    )]
5528    const _: () = {
5529        use alloy::sol_types as alloy_sol_types;
5530        #[doc(hidden)]
5531        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5532        #[doc(hidden)]
5533        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5534        #[cfg(test)]
5535        #[allow(dead_code, unreachable_patterns)]
5536        fn _type_assertion(
5537            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5538        ) {
5539            match _t {
5540                alloy_sol_types::private::AssertTypeEq::<
5541                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5542                >(_) => {}
5543            }
5544        }
5545        #[automatically_derived]
5546        #[doc(hidden)]
5547        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5548            fn from(value: OwnableInvalidOwner) -> Self {
5549                (value.owner,)
5550            }
5551        }
5552        #[automatically_derived]
5553        #[doc(hidden)]
5554        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5555            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5556                Self { owner: tuple.0 }
5557            }
5558        }
5559        #[automatically_derived]
5560        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5561            type Parameters<'a> = UnderlyingSolTuple<'a>;
5562            type Token<'a> = <Self::Parameters<
5563                'a,
5564            > as alloy_sol_types::SolType>::Token<'a>;
5565            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5566            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5567            #[inline]
5568            fn new<'a>(
5569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5570            ) -> Self {
5571                tuple.into()
5572            }
5573            #[inline]
5574            fn tokenize(&self) -> Self::Token<'_> {
5575                (
5576                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5577                        &self.owner,
5578                    ),
5579                )
5580            }
5581            #[inline]
5582            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5583                <Self::Parameters<
5584                    '_,
5585                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5586                    .map(Self::new)
5587            }
5588        }
5589    };
5590    #[derive(serde::Serialize, serde::Deserialize)]
5591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5592    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5593```solidity
5594error OwnableUnauthorizedAccount(address account);
5595```*/
5596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5597    #[derive(Clone)]
5598    pub struct OwnableUnauthorizedAccount {
5599        #[allow(missing_docs)]
5600        pub account: alloy::sol_types::private::Address,
5601    }
5602    #[allow(
5603        non_camel_case_types,
5604        non_snake_case,
5605        clippy::pub_underscore_fields,
5606        clippy::style
5607    )]
5608    const _: () = {
5609        use alloy::sol_types as alloy_sol_types;
5610        #[doc(hidden)]
5611        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5612        #[doc(hidden)]
5613        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5614        #[cfg(test)]
5615        #[allow(dead_code, unreachable_patterns)]
5616        fn _type_assertion(
5617            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5618        ) {
5619            match _t {
5620                alloy_sol_types::private::AssertTypeEq::<
5621                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5622                >(_) => {}
5623            }
5624        }
5625        #[automatically_derived]
5626        #[doc(hidden)]
5627        impl ::core::convert::From<OwnableUnauthorizedAccount>
5628        for UnderlyingRustTuple<'_> {
5629            fn from(value: OwnableUnauthorizedAccount) -> Self {
5630                (value.account,)
5631            }
5632        }
5633        #[automatically_derived]
5634        #[doc(hidden)]
5635        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5636        for OwnableUnauthorizedAccount {
5637            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5638                Self { account: tuple.0 }
5639            }
5640        }
5641        #[automatically_derived]
5642        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5643            type Parameters<'a> = UnderlyingSolTuple<'a>;
5644            type Token<'a> = <Self::Parameters<
5645                'a,
5646            > as alloy_sol_types::SolType>::Token<'a>;
5647            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5648            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5649            #[inline]
5650            fn new<'a>(
5651                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5652            ) -> Self {
5653                tuple.into()
5654            }
5655            #[inline]
5656            fn tokenize(&self) -> Self::Token<'_> {
5657                (
5658                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5659                        &self.account,
5660                    ),
5661                )
5662            }
5663            #[inline]
5664            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5665                <Self::Parameters<
5666                    '_,
5667                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5668                    .map(Self::new)
5669            }
5670        }
5671    };
5672    #[derive(serde::Serialize, serde::Deserialize)]
5673    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5674    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
5675```solidity
5676error OwnershipCannotBeRenounced();
5677```*/
5678    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5679    #[derive(Clone)]
5680    pub struct OwnershipCannotBeRenounced;
5681    #[allow(
5682        non_camel_case_types,
5683        non_snake_case,
5684        clippy::pub_underscore_fields,
5685        clippy::style
5686    )]
5687    const _: () = {
5688        use alloy::sol_types as alloy_sol_types;
5689        #[doc(hidden)]
5690        type UnderlyingSolTuple<'a> = ();
5691        #[doc(hidden)]
5692        type UnderlyingRustTuple<'a> = ();
5693        #[cfg(test)]
5694        #[allow(dead_code, unreachable_patterns)]
5695        fn _type_assertion(
5696            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5697        ) {
5698            match _t {
5699                alloy_sol_types::private::AssertTypeEq::<
5700                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5701                >(_) => {}
5702            }
5703        }
5704        #[automatically_derived]
5705        #[doc(hidden)]
5706        impl ::core::convert::From<OwnershipCannotBeRenounced>
5707        for UnderlyingRustTuple<'_> {
5708            fn from(value: OwnershipCannotBeRenounced) -> Self {
5709                ()
5710            }
5711        }
5712        #[automatically_derived]
5713        #[doc(hidden)]
5714        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5715        for OwnershipCannotBeRenounced {
5716            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5717                Self
5718            }
5719        }
5720        #[automatically_derived]
5721        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
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 = "OwnershipCannotBeRenounced()";
5727            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
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::Parameters<
5741                    '_,
5742                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5743                    .map(Self::new)
5744            }
5745        }
5746    };
5747    #[derive(serde::Serialize, serde::Deserialize)]
5748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5749    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5750```solidity
5751error ProverNotPermissioned();
5752```*/
5753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5754    #[derive(Clone)]
5755    pub struct ProverNotPermissioned;
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        type UnderlyingSolTuple<'a> = ();
5766        #[doc(hidden)]
5767        type UnderlyingRustTuple<'a> = ();
5768        #[cfg(test)]
5769        #[allow(dead_code, unreachable_patterns)]
5770        fn _type_assertion(
5771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5772        ) {
5773            match _t {
5774                alloy_sol_types::private::AssertTypeEq::<
5775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5776                >(_) => {}
5777            }
5778        }
5779        #[automatically_derived]
5780        #[doc(hidden)]
5781        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5782            fn from(value: ProverNotPermissioned) -> Self {
5783                ()
5784            }
5785        }
5786        #[automatically_derived]
5787        #[doc(hidden)]
5788        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5789            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5790                Self
5791            }
5792        }
5793        #[automatically_derived]
5794        impl alloy_sol_types::SolError for ProverNotPermissioned {
5795            type Parameters<'a> = UnderlyingSolTuple<'a>;
5796            type Token<'a> = <Self::Parameters<
5797                'a,
5798            > as alloy_sol_types::SolType>::Token<'a>;
5799            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5800            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5801            #[inline]
5802            fn new<'a>(
5803                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5804            ) -> Self {
5805                tuple.into()
5806            }
5807            #[inline]
5808            fn tokenize(&self) -> Self::Token<'_> {
5809                ()
5810            }
5811            #[inline]
5812            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5813                <Self::Parameters<
5814                    '_,
5815                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5816                    .map(Self::new)
5817            }
5818        }
5819    };
5820    #[derive(serde::Serialize, serde::Deserialize)]
5821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5822    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5823```solidity
5824error UUPSUnauthorizedCallContext();
5825```*/
5826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5827    #[derive(Clone)]
5828    pub struct UUPSUnauthorizedCallContext;
5829    #[allow(
5830        non_camel_case_types,
5831        non_snake_case,
5832        clippy::pub_underscore_fields,
5833        clippy::style
5834    )]
5835    const _: () = {
5836        use alloy::sol_types as alloy_sol_types;
5837        #[doc(hidden)]
5838        type UnderlyingSolTuple<'a> = ();
5839        #[doc(hidden)]
5840        type UnderlyingRustTuple<'a> = ();
5841        #[cfg(test)]
5842        #[allow(dead_code, unreachable_patterns)]
5843        fn _type_assertion(
5844            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5845        ) {
5846            match _t {
5847                alloy_sol_types::private::AssertTypeEq::<
5848                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5849                >(_) => {}
5850            }
5851        }
5852        #[automatically_derived]
5853        #[doc(hidden)]
5854        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5855        for UnderlyingRustTuple<'_> {
5856            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5857                ()
5858            }
5859        }
5860        #[automatically_derived]
5861        #[doc(hidden)]
5862        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5863        for UUPSUnauthorizedCallContext {
5864            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5865                Self
5866            }
5867        }
5868        #[automatically_derived]
5869        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
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 = "UUPSUnauthorizedCallContext()";
5875            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
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::Parameters<
5889                    '_,
5890                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5891                    .map(Self::new)
5892            }
5893        }
5894    };
5895    #[derive(serde::Serialize, serde::Deserialize)]
5896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5897    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5898```solidity
5899error UUPSUnsupportedProxiableUUID(bytes32 slot);
5900```*/
5901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5902    #[derive(Clone)]
5903    pub struct UUPSUnsupportedProxiableUUID {
5904        #[allow(missing_docs)]
5905        pub slot: alloy::sol_types::private::FixedBytes<32>,
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        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5917        #[doc(hidden)]
5918        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5919        #[cfg(test)]
5920        #[allow(dead_code, unreachable_patterns)]
5921        fn _type_assertion(
5922            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5923        ) {
5924            match _t {
5925                alloy_sol_types::private::AssertTypeEq::<
5926                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5927                >(_) => {}
5928            }
5929        }
5930        #[automatically_derived]
5931        #[doc(hidden)]
5932        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5933        for UnderlyingRustTuple<'_> {
5934            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5935                (value.slot,)
5936            }
5937        }
5938        #[automatically_derived]
5939        #[doc(hidden)]
5940        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5941        for UUPSUnsupportedProxiableUUID {
5942            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5943                Self { slot: tuple.0 }
5944            }
5945        }
5946        #[automatically_derived]
5947        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5948            type Parameters<'a> = UnderlyingSolTuple<'a>;
5949            type Token<'a> = <Self::Parameters<
5950                'a,
5951            > as alloy_sol_types::SolType>::Token<'a>;
5952            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5953            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5954            #[inline]
5955            fn new<'a>(
5956                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5957            ) -> Self {
5958                tuple.into()
5959            }
5960            #[inline]
5961            fn tokenize(&self) -> Self::Token<'_> {
5962                (
5963                    <alloy::sol_types::sol_data::FixedBytes<
5964                        32,
5965                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5966                )
5967            }
5968            #[inline]
5969            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5970                <Self::Parameters<
5971                    '_,
5972                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5973                    .map(Self::new)
5974            }
5975        }
5976    };
5977    #[derive(serde::Serialize, serde::Deserialize)]
5978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5979    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5980```solidity
5981error WrongStakeTableUsed();
5982```*/
5983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5984    #[derive(Clone)]
5985    pub struct WrongStakeTableUsed;
5986    #[allow(
5987        non_camel_case_types,
5988        non_snake_case,
5989        clippy::pub_underscore_fields,
5990        clippy::style
5991    )]
5992    const _: () = {
5993        use alloy::sol_types as alloy_sol_types;
5994        #[doc(hidden)]
5995        type UnderlyingSolTuple<'a> = ();
5996        #[doc(hidden)]
5997        type UnderlyingRustTuple<'a> = ();
5998        #[cfg(test)]
5999        #[allow(dead_code, unreachable_patterns)]
6000        fn _type_assertion(
6001            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6002        ) {
6003            match _t {
6004                alloy_sol_types::private::AssertTypeEq::<
6005                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6006                >(_) => {}
6007            }
6008        }
6009        #[automatically_derived]
6010        #[doc(hidden)]
6011        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6012            fn from(value: WrongStakeTableUsed) -> Self {
6013                ()
6014            }
6015        }
6016        #[automatically_derived]
6017        #[doc(hidden)]
6018        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6019            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6020                Self
6021            }
6022        }
6023        #[automatically_derived]
6024        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6025            type Parameters<'a> = UnderlyingSolTuple<'a>;
6026            type Token<'a> = <Self::Parameters<
6027                'a,
6028            > as alloy_sol_types::SolType>::Token<'a>;
6029            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6030            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6031            #[inline]
6032            fn new<'a>(
6033                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6034            ) -> Self {
6035                tuple.into()
6036            }
6037            #[inline]
6038            fn tokenize(&self) -> Self::Token<'_> {
6039                ()
6040            }
6041            #[inline]
6042            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6043                <Self::Parameters<
6044                    '_,
6045                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6046                    .map(Self::new)
6047            }
6048        }
6049    };
6050    #[derive(serde::Serialize, serde::Deserialize)]
6051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6052    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6053```solidity
6054event Initialized(uint64 version);
6055```*/
6056    #[allow(
6057        non_camel_case_types,
6058        non_snake_case,
6059        clippy::pub_underscore_fields,
6060        clippy::style
6061    )]
6062    #[derive(Clone)]
6063    pub struct Initialized {
6064        #[allow(missing_docs)]
6065        pub version: u64,
6066    }
6067    #[allow(
6068        non_camel_case_types,
6069        non_snake_case,
6070        clippy::pub_underscore_fields,
6071        clippy::style
6072    )]
6073    const _: () = {
6074        use alloy::sol_types as alloy_sol_types;
6075        #[automatically_derived]
6076        impl alloy_sol_types::SolEvent for Initialized {
6077            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6078            type DataToken<'a> = <Self::DataTuple<
6079                'a,
6080            > as alloy_sol_types::SolType>::Token<'a>;
6081            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6082            const SIGNATURE: &'static str = "Initialized(uint64)";
6083            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6084                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6085                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6086                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6087            ]);
6088            const ANONYMOUS: bool = false;
6089            #[allow(unused_variables)]
6090            #[inline]
6091            fn new(
6092                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6093                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6094            ) -> Self {
6095                Self { version: data.0 }
6096            }
6097            #[inline]
6098            fn check_signature(
6099                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6100            ) -> alloy_sol_types::Result<()> {
6101                if topics.0 != Self::SIGNATURE_HASH {
6102                    return Err(
6103                        alloy_sol_types::Error::invalid_event_signature_hash(
6104                            Self::SIGNATURE,
6105                            topics.0,
6106                            Self::SIGNATURE_HASH,
6107                        ),
6108                    );
6109                }
6110                Ok(())
6111            }
6112            #[inline]
6113            fn tokenize_body(&self) -> Self::DataToken<'_> {
6114                (
6115                    <alloy::sol_types::sol_data::Uint<
6116                        64,
6117                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6118                )
6119            }
6120            #[inline]
6121            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6122                (Self::SIGNATURE_HASH.into(),)
6123            }
6124            #[inline]
6125            fn encode_topics_raw(
6126                &self,
6127                out: &mut [alloy_sol_types::abi::token::WordToken],
6128            ) -> alloy_sol_types::Result<()> {
6129                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6130                    return Err(alloy_sol_types::Error::Overrun);
6131                }
6132                out[0usize] = alloy_sol_types::abi::token::WordToken(
6133                    Self::SIGNATURE_HASH,
6134                );
6135                Ok(())
6136            }
6137        }
6138        #[automatically_derived]
6139        impl alloy_sol_types::private::IntoLogData for Initialized {
6140            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6141                From::from(self)
6142            }
6143            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6144                From::from(&self)
6145            }
6146        }
6147        #[automatically_derived]
6148        impl From<&Initialized> for alloy_sol_types::private::LogData {
6149            #[inline]
6150            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6151                alloy_sol_types::SolEvent::encode_log_data(this)
6152            }
6153        }
6154    };
6155    #[derive(serde::Serialize, serde::Deserialize)]
6156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6157    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6158```solidity
6159event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6160```*/
6161    #[allow(
6162        non_camel_case_types,
6163        non_snake_case,
6164        clippy::pub_underscore_fields,
6165        clippy::style
6166    )]
6167    #[derive(Clone)]
6168    pub struct NewState {
6169        #[allow(missing_docs)]
6170        pub viewNum: u64,
6171        #[allow(missing_docs)]
6172        pub blockHeight: u64,
6173        #[allow(missing_docs)]
6174        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6175    }
6176    #[allow(
6177        non_camel_case_types,
6178        non_snake_case,
6179        clippy::pub_underscore_fields,
6180        clippy::style
6181    )]
6182    const _: () = {
6183        use alloy::sol_types as alloy_sol_types;
6184        #[automatically_derived]
6185        impl alloy_sol_types::SolEvent for NewState {
6186            type DataTuple<'a> = (BN254::ScalarField,);
6187            type DataToken<'a> = <Self::DataTuple<
6188                'a,
6189            > as alloy_sol_types::SolType>::Token<'a>;
6190            type TopicList = (
6191                alloy_sol_types::sol_data::FixedBytes<32>,
6192                alloy::sol_types::sol_data::Uint<64>,
6193                alloy::sol_types::sol_data::Uint<64>,
6194            );
6195            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6196            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6197                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6198                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6199                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6200            ]);
6201            const ANONYMOUS: bool = false;
6202            #[allow(unused_variables)]
6203            #[inline]
6204            fn new(
6205                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6206                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6207            ) -> Self {
6208                Self {
6209                    viewNum: topics.1,
6210                    blockHeight: topics.2,
6211                    blockCommRoot: data.0,
6212                }
6213            }
6214            #[inline]
6215            fn check_signature(
6216                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6217            ) -> alloy_sol_types::Result<()> {
6218                if topics.0 != Self::SIGNATURE_HASH {
6219                    return Err(
6220                        alloy_sol_types::Error::invalid_event_signature_hash(
6221                            Self::SIGNATURE,
6222                            topics.0,
6223                            Self::SIGNATURE_HASH,
6224                        ),
6225                    );
6226                }
6227                Ok(())
6228            }
6229            #[inline]
6230            fn tokenize_body(&self) -> Self::DataToken<'_> {
6231                (
6232                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6233                        &self.blockCommRoot,
6234                    ),
6235                )
6236            }
6237            #[inline]
6238            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6239                (
6240                    Self::SIGNATURE_HASH.into(),
6241                    self.viewNum.clone(),
6242                    self.blockHeight.clone(),
6243                )
6244            }
6245            #[inline]
6246            fn encode_topics_raw(
6247                &self,
6248                out: &mut [alloy_sol_types::abi::token::WordToken],
6249            ) -> alloy_sol_types::Result<()> {
6250                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6251                    return Err(alloy_sol_types::Error::Overrun);
6252                }
6253                out[0usize] = alloy_sol_types::abi::token::WordToken(
6254                    Self::SIGNATURE_HASH,
6255                );
6256                out[1usize] = <alloy::sol_types::sol_data::Uint<
6257                    64,
6258                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6259                out[2usize] = <alloy::sol_types::sol_data::Uint<
6260                    64,
6261                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6262                Ok(())
6263            }
6264        }
6265        #[automatically_derived]
6266        impl alloy_sol_types::private::IntoLogData for NewState {
6267            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6268                From::from(self)
6269            }
6270            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6271                From::from(&self)
6272            }
6273        }
6274        #[automatically_derived]
6275        impl From<&NewState> for alloy_sol_types::private::LogData {
6276            #[inline]
6277            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6278                alloy_sol_types::SolEvent::encode_log_data(this)
6279            }
6280        }
6281    };
6282    #[derive(serde::Serialize, serde::Deserialize)]
6283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6284    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6285```solidity
6286event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6287```*/
6288    #[allow(
6289        non_camel_case_types,
6290        non_snake_case,
6291        clippy::pub_underscore_fields,
6292        clippy::style
6293    )]
6294    #[derive(Clone)]
6295    pub struct OwnershipTransferred {
6296        #[allow(missing_docs)]
6297        pub previousOwner: alloy::sol_types::private::Address,
6298        #[allow(missing_docs)]
6299        pub newOwner: alloy::sol_types::private::Address,
6300    }
6301    #[allow(
6302        non_camel_case_types,
6303        non_snake_case,
6304        clippy::pub_underscore_fields,
6305        clippy::style
6306    )]
6307    const _: () = {
6308        use alloy::sol_types as alloy_sol_types;
6309        #[automatically_derived]
6310        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6311            type DataTuple<'a> = ();
6312            type DataToken<'a> = <Self::DataTuple<
6313                'a,
6314            > as alloy_sol_types::SolType>::Token<'a>;
6315            type TopicList = (
6316                alloy_sol_types::sol_data::FixedBytes<32>,
6317                alloy::sol_types::sol_data::Address,
6318                alloy::sol_types::sol_data::Address,
6319            );
6320            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6321            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6322                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6323                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6324                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6325            ]);
6326            const ANONYMOUS: bool = false;
6327            #[allow(unused_variables)]
6328            #[inline]
6329            fn new(
6330                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6331                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6332            ) -> Self {
6333                Self {
6334                    previousOwner: topics.1,
6335                    newOwner: topics.2,
6336                }
6337            }
6338            #[inline]
6339            fn check_signature(
6340                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6341            ) -> alloy_sol_types::Result<()> {
6342                if topics.0 != Self::SIGNATURE_HASH {
6343                    return Err(
6344                        alloy_sol_types::Error::invalid_event_signature_hash(
6345                            Self::SIGNATURE,
6346                            topics.0,
6347                            Self::SIGNATURE_HASH,
6348                        ),
6349                    );
6350                }
6351                Ok(())
6352            }
6353            #[inline]
6354            fn tokenize_body(&self) -> Self::DataToken<'_> {
6355                ()
6356            }
6357            #[inline]
6358            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6359                (
6360                    Self::SIGNATURE_HASH.into(),
6361                    self.previousOwner.clone(),
6362                    self.newOwner.clone(),
6363                )
6364            }
6365            #[inline]
6366            fn encode_topics_raw(
6367                &self,
6368                out: &mut [alloy_sol_types::abi::token::WordToken],
6369            ) -> alloy_sol_types::Result<()> {
6370                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6371                    return Err(alloy_sol_types::Error::Overrun);
6372                }
6373                out[0usize] = alloy_sol_types::abi::token::WordToken(
6374                    Self::SIGNATURE_HASH,
6375                );
6376                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6377                    &self.previousOwner,
6378                );
6379                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6380                    &self.newOwner,
6381                );
6382                Ok(())
6383            }
6384        }
6385        #[automatically_derived]
6386        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6387            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6388                From::from(self)
6389            }
6390            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6391                From::from(&self)
6392            }
6393        }
6394        #[automatically_derived]
6395        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6396            #[inline]
6397            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6398                alloy_sol_types::SolEvent::encode_log_data(this)
6399            }
6400        }
6401    };
6402    #[derive(serde::Serialize, serde::Deserialize)]
6403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6404    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6405```solidity
6406event PermissionedProverNotRequired();
6407```*/
6408    #[allow(
6409        non_camel_case_types,
6410        non_snake_case,
6411        clippy::pub_underscore_fields,
6412        clippy::style
6413    )]
6414    #[derive(Clone)]
6415    pub struct PermissionedProverNotRequired;
6416    #[allow(
6417        non_camel_case_types,
6418        non_snake_case,
6419        clippy::pub_underscore_fields,
6420        clippy::style
6421    )]
6422    const _: () = {
6423        use alloy::sol_types as alloy_sol_types;
6424        #[automatically_derived]
6425        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6426            type DataTuple<'a> = ();
6427            type DataToken<'a> = <Self::DataTuple<
6428                'a,
6429            > as alloy_sol_types::SolType>::Token<'a>;
6430            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6431            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6432            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6433                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6434                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6435                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6436            ]);
6437            const ANONYMOUS: bool = false;
6438            #[allow(unused_variables)]
6439            #[inline]
6440            fn new(
6441                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6442                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6443            ) -> Self {
6444                Self {}
6445            }
6446            #[inline]
6447            fn check_signature(
6448                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6449            ) -> alloy_sol_types::Result<()> {
6450                if topics.0 != Self::SIGNATURE_HASH {
6451                    return Err(
6452                        alloy_sol_types::Error::invalid_event_signature_hash(
6453                            Self::SIGNATURE,
6454                            topics.0,
6455                            Self::SIGNATURE_HASH,
6456                        ),
6457                    );
6458                }
6459                Ok(())
6460            }
6461            #[inline]
6462            fn tokenize_body(&self) -> Self::DataToken<'_> {
6463                ()
6464            }
6465            #[inline]
6466            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6467                (Self::SIGNATURE_HASH.into(),)
6468            }
6469            #[inline]
6470            fn encode_topics_raw(
6471                &self,
6472                out: &mut [alloy_sol_types::abi::token::WordToken],
6473            ) -> alloy_sol_types::Result<()> {
6474                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6475                    return Err(alloy_sol_types::Error::Overrun);
6476                }
6477                out[0usize] = alloy_sol_types::abi::token::WordToken(
6478                    Self::SIGNATURE_HASH,
6479                );
6480                Ok(())
6481            }
6482        }
6483        #[automatically_derived]
6484        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6485            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6486                From::from(self)
6487            }
6488            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6489                From::from(&self)
6490            }
6491        }
6492        #[automatically_derived]
6493        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6494            #[inline]
6495            fn from(
6496                this: &PermissionedProverNotRequired,
6497            ) -> alloy_sol_types::private::LogData {
6498                alloy_sol_types::SolEvent::encode_log_data(this)
6499            }
6500        }
6501    };
6502    #[derive(serde::Serialize, serde::Deserialize)]
6503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6504    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6505```solidity
6506event PermissionedProverRequired(address permissionedProver);
6507```*/
6508    #[allow(
6509        non_camel_case_types,
6510        non_snake_case,
6511        clippy::pub_underscore_fields,
6512        clippy::style
6513    )]
6514    #[derive(Clone)]
6515    pub struct PermissionedProverRequired {
6516        #[allow(missing_docs)]
6517        pub permissionedProver: alloy::sol_types::private::Address,
6518    }
6519    #[allow(
6520        non_camel_case_types,
6521        non_snake_case,
6522        clippy::pub_underscore_fields,
6523        clippy::style
6524    )]
6525    const _: () = {
6526        use alloy::sol_types as alloy_sol_types;
6527        #[automatically_derived]
6528        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6529            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6530            type DataToken<'a> = <Self::DataTuple<
6531                'a,
6532            > as alloy_sol_types::SolType>::Token<'a>;
6533            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6534            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6535            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6536                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6537                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6538                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6539            ]);
6540            const ANONYMOUS: bool = false;
6541            #[allow(unused_variables)]
6542            #[inline]
6543            fn new(
6544                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6545                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6546            ) -> Self {
6547                Self { permissionedProver: data.0 }
6548            }
6549            #[inline]
6550            fn check_signature(
6551                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6552            ) -> alloy_sol_types::Result<()> {
6553                if topics.0 != Self::SIGNATURE_HASH {
6554                    return Err(
6555                        alloy_sol_types::Error::invalid_event_signature_hash(
6556                            Self::SIGNATURE,
6557                            topics.0,
6558                            Self::SIGNATURE_HASH,
6559                        ),
6560                    );
6561                }
6562                Ok(())
6563            }
6564            #[inline]
6565            fn tokenize_body(&self) -> Self::DataToken<'_> {
6566                (
6567                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6568                        &self.permissionedProver,
6569                    ),
6570                )
6571            }
6572            #[inline]
6573            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6574                (Self::SIGNATURE_HASH.into(),)
6575            }
6576            #[inline]
6577            fn encode_topics_raw(
6578                &self,
6579                out: &mut [alloy_sol_types::abi::token::WordToken],
6580            ) -> alloy_sol_types::Result<()> {
6581                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6582                    return Err(alloy_sol_types::Error::Overrun);
6583                }
6584                out[0usize] = alloy_sol_types::abi::token::WordToken(
6585                    Self::SIGNATURE_HASH,
6586                );
6587                Ok(())
6588            }
6589        }
6590        #[automatically_derived]
6591        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6592            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6593                From::from(self)
6594            }
6595            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6596                From::from(&self)
6597            }
6598        }
6599        #[automatically_derived]
6600        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6601            #[inline]
6602            fn from(
6603                this: &PermissionedProverRequired,
6604            ) -> alloy_sol_types::private::LogData {
6605                alloy_sol_types::SolEvent::encode_log_data(this)
6606            }
6607        }
6608    };
6609    #[derive(serde::Serialize, serde::Deserialize)]
6610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6611    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6612```solidity
6613event Upgrade(address implementation);
6614```*/
6615    #[allow(
6616        non_camel_case_types,
6617        non_snake_case,
6618        clippy::pub_underscore_fields,
6619        clippy::style
6620    )]
6621    #[derive(Clone)]
6622    pub struct Upgrade {
6623        #[allow(missing_docs)]
6624        pub implementation: alloy::sol_types::private::Address,
6625    }
6626    #[allow(
6627        non_camel_case_types,
6628        non_snake_case,
6629        clippy::pub_underscore_fields,
6630        clippy::style
6631    )]
6632    const _: () = {
6633        use alloy::sol_types as alloy_sol_types;
6634        #[automatically_derived]
6635        impl alloy_sol_types::SolEvent for Upgrade {
6636            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6637            type DataToken<'a> = <Self::DataTuple<
6638                'a,
6639            > as alloy_sol_types::SolType>::Token<'a>;
6640            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6641            const SIGNATURE: &'static str = "Upgrade(address)";
6642            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6643                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6644                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6645                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6646            ]);
6647            const ANONYMOUS: bool = false;
6648            #[allow(unused_variables)]
6649            #[inline]
6650            fn new(
6651                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6652                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6653            ) -> Self {
6654                Self { implementation: data.0 }
6655            }
6656            #[inline]
6657            fn check_signature(
6658                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6659            ) -> alloy_sol_types::Result<()> {
6660                if topics.0 != Self::SIGNATURE_HASH {
6661                    return Err(
6662                        alloy_sol_types::Error::invalid_event_signature_hash(
6663                            Self::SIGNATURE,
6664                            topics.0,
6665                            Self::SIGNATURE_HASH,
6666                        ),
6667                    );
6668                }
6669                Ok(())
6670            }
6671            #[inline]
6672            fn tokenize_body(&self) -> Self::DataToken<'_> {
6673                (
6674                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6675                        &self.implementation,
6676                    ),
6677                )
6678            }
6679            #[inline]
6680            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6681                (Self::SIGNATURE_HASH.into(),)
6682            }
6683            #[inline]
6684            fn encode_topics_raw(
6685                &self,
6686                out: &mut [alloy_sol_types::abi::token::WordToken],
6687            ) -> alloy_sol_types::Result<()> {
6688                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6689                    return Err(alloy_sol_types::Error::Overrun);
6690                }
6691                out[0usize] = alloy_sol_types::abi::token::WordToken(
6692                    Self::SIGNATURE_HASH,
6693                );
6694                Ok(())
6695            }
6696        }
6697        #[automatically_derived]
6698        impl alloy_sol_types::private::IntoLogData for Upgrade {
6699            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6700                From::from(self)
6701            }
6702            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6703                From::from(&self)
6704            }
6705        }
6706        #[automatically_derived]
6707        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6708            #[inline]
6709            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6710                alloy_sol_types::SolEvent::encode_log_data(this)
6711            }
6712        }
6713    };
6714    #[derive(serde::Serialize, serde::Deserialize)]
6715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6716    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6717```solidity
6718event Upgraded(address indexed implementation);
6719```*/
6720    #[allow(
6721        non_camel_case_types,
6722        non_snake_case,
6723        clippy::pub_underscore_fields,
6724        clippy::style
6725    )]
6726    #[derive(Clone)]
6727    pub struct Upgraded {
6728        #[allow(missing_docs)]
6729        pub implementation: alloy::sol_types::private::Address,
6730    }
6731    #[allow(
6732        non_camel_case_types,
6733        non_snake_case,
6734        clippy::pub_underscore_fields,
6735        clippy::style
6736    )]
6737    const _: () = {
6738        use alloy::sol_types as alloy_sol_types;
6739        #[automatically_derived]
6740        impl alloy_sol_types::SolEvent for Upgraded {
6741            type DataTuple<'a> = ();
6742            type DataToken<'a> = <Self::DataTuple<
6743                'a,
6744            > as alloy_sol_types::SolType>::Token<'a>;
6745            type TopicList = (
6746                alloy_sol_types::sol_data::FixedBytes<32>,
6747                alloy::sol_types::sol_data::Address,
6748            );
6749            const SIGNATURE: &'static str = "Upgraded(address)";
6750            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6751                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6752                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6753                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6754            ]);
6755            const ANONYMOUS: bool = false;
6756            #[allow(unused_variables)]
6757            #[inline]
6758            fn new(
6759                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6760                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6761            ) -> Self {
6762                Self { implementation: topics.1 }
6763            }
6764            #[inline]
6765            fn check_signature(
6766                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6767            ) -> alloy_sol_types::Result<()> {
6768                if topics.0 != Self::SIGNATURE_HASH {
6769                    return Err(
6770                        alloy_sol_types::Error::invalid_event_signature_hash(
6771                            Self::SIGNATURE,
6772                            topics.0,
6773                            Self::SIGNATURE_HASH,
6774                        ),
6775                    );
6776                }
6777                Ok(())
6778            }
6779            #[inline]
6780            fn tokenize_body(&self) -> Self::DataToken<'_> {
6781                ()
6782            }
6783            #[inline]
6784            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6785                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6786            }
6787            #[inline]
6788            fn encode_topics_raw(
6789                &self,
6790                out: &mut [alloy_sol_types::abi::token::WordToken],
6791            ) -> alloy_sol_types::Result<()> {
6792                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6793                    return Err(alloy_sol_types::Error::Overrun);
6794                }
6795                out[0usize] = alloy_sol_types::abi::token::WordToken(
6796                    Self::SIGNATURE_HASH,
6797                );
6798                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6799                    &self.implementation,
6800                );
6801                Ok(())
6802            }
6803        }
6804        #[automatically_derived]
6805        impl alloy_sol_types::private::IntoLogData for Upgraded {
6806            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6807                From::from(self)
6808            }
6809            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6810                From::from(&self)
6811            }
6812        }
6813        #[automatically_derived]
6814        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6815            #[inline]
6816            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6817                alloy_sol_types::SolEvent::encode_log_data(this)
6818            }
6819        }
6820    };
6821    #[derive(serde::Serialize, serde::Deserialize)]
6822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6823    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6824```solidity
6825function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6826```*/
6827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6828    #[derive(Clone)]
6829    pub struct UPGRADE_INTERFACE_VERSIONCall;
6830    #[derive(serde::Serialize, serde::Deserialize)]
6831    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6832    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6833    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6834    #[derive(Clone)]
6835    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6836        #[allow(missing_docs)]
6837        pub _0: alloy::sol_types::private::String,
6838    }
6839    #[allow(
6840        non_camel_case_types,
6841        non_snake_case,
6842        clippy::pub_underscore_fields,
6843        clippy::style
6844    )]
6845    const _: () = {
6846        use alloy::sol_types as alloy_sol_types;
6847        {
6848            #[doc(hidden)]
6849            type UnderlyingSolTuple<'a> = ();
6850            #[doc(hidden)]
6851            type UnderlyingRustTuple<'a> = ();
6852            #[cfg(test)]
6853            #[allow(dead_code, unreachable_patterns)]
6854            fn _type_assertion(
6855                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6856            ) {
6857                match _t {
6858                    alloy_sol_types::private::AssertTypeEq::<
6859                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6860                    >(_) => {}
6861                }
6862            }
6863            #[automatically_derived]
6864            #[doc(hidden)]
6865            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6866            for UnderlyingRustTuple<'_> {
6867                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6868                    ()
6869                }
6870            }
6871            #[automatically_derived]
6872            #[doc(hidden)]
6873            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6874            for UPGRADE_INTERFACE_VERSIONCall {
6875                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6876                    Self
6877                }
6878            }
6879        }
6880        {
6881            #[doc(hidden)]
6882            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6883            #[doc(hidden)]
6884            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6885            #[cfg(test)]
6886            #[allow(dead_code, unreachable_patterns)]
6887            fn _type_assertion(
6888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6889            ) {
6890                match _t {
6891                    alloy_sol_types::private::AssertTypeEq::<
6892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6893                    >(_) => {}
6894                }
6895            }
6896            #[automatically_derived]
6897            #[doc(hidden)]
6898            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6899            for UnderlyingRustTuple<'_> {
6900                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6901                    (value._0,)
6902                }
6903            }
6904            #[automatically_derived]
6905            #[doc(hidden)]
6906            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6907            for UPGRADE_INTERFACE_VERSIONReturn {
6908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6909                    Self { _0: tuple.0 }
6910                }
6911            }
6912        }
6913        #[automatically_derived]
6914        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6915            type Parameters<'a> = ();
6916            type Token<'a> = <Self::Parameters<
6917                'a,
6918            > as alloy_sol_types::SolType>::Token<'a>;
6919            type Return = alloy::sol_types::private::String;
6920            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6921            type ReturnToken<'a> = <Self::ReturnTuple<
6922                'a,
6923            > as alloy_sol_types::SolType>::Token<'a>;
6924            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6925            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6926            #[inline]
6927            fn new<'a>(
6928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6929            ) -> Self {
6930                tuple.into()
6931            }
6932            #[inline]
6933            fn tokenize(&self) -> Self::Token<'_> {
6934                ()
6935            }
6936            #[inline]
6937            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6938                (
6939                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6940                        ret,
6941                    ),
6942                )
6943            }
6944            #[inline]
6945            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6946                <Self::ReturnTuple<
6947                    '_,
6948                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6949                    .map(|r| {
6950                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6951                        r._0
6952                    })
6953            }
6954            #[inline]
6955            fn abi_decode_returns_validate(
6956                data: &[u8],
6957            ) -> alloy_sol_types::Result<Self::Return> {
6958                <Self::ReturnTuple<
6959                    '_,
6960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6961                    .map(|r| {
6962                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6963                        r._0
6964                    })
6965            }
6966        }
6967    };
6968    #[derive(serde::Serialize, serde::Deserialize)]
6969    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6970    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6971```solidity
6972function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6973```*/
6974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6975    #[derive(Clone)]
6976    pub struct _getVkCall;
6977    #[derive(serde::Serialize, serde::Deserialize)]
6978    #[derive()]
6979    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6980    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6981    #[derive(Clone)]
6982    pub struct _getVkReturn {
6983        #[allow(missing_docs)]
6984        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6985    }
6986    #[allow(
6987        non_camel_case_types,
6988        non_snake_case,
6989        clippy::pub_underscore_fields,
6990        clippy::style
6991    )]
6992    const _: () = {
6993        use alloy::sol_types as alloy_sol_types;
6994        {
6995            #[doc(hidden)]
6996            type UnderlyingSolTuple<'a> = ();
6997            #[doc(hidden)]
6998            type UnderlyingRustTuple<'a> = ();
6999            #[cfg(test)]
7000            #[allow(dead_code, unreachable_patterns)]
7001            fn _type_assertion(
7002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7003            ) {
7004                match _t {
7005                    alloy_sol_types::private::AssertTypeEq::<
7006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7007                    >(_) => {}
7008                }
7009            }
7010            #[automatically_derived]
7011            #[doc(hidden)]
7012            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7013                fn from(value: _getVkCall) -> Self {
7014                    ()
7015                }
7016            }
7017            #[automatically_derived]
7018            #[doc(hidden)]
7019            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7020                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7021                    Self
7022                }
7023            }
7024        }
7025        {
7026            #[doc(hidden)]
7027            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7028            #[doc(hidden)]
7029            type UnderlyingRustTuple<'a> = (
7030                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7031            );
7032            #[cfg(test)]
7033            #[allow(dead_code, unreachable_patterns)]
7034            fn _type_assertion(
7035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7036            ) {
7037                match _t {
7038                    alloy_sol_types::private::AssertTypeEq::<
7039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7040                    >(_) => {}
7041                }
7042            }
7043            #[automatically_derived]
7044            #[doc(hidden)]
7045            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7046                fn from(value: _getVkReturn) -> Self {
7047                    (value.vk,)
7048                }
7049            }
7050            #[automatically_derived]
7051            #[doc(hidden)]
7052            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7054                    Self { vk: tuple.0 }
7055                }
7056            }
7057        }
7058        #[automatically_derived]
7059        impl alloy_sol_types::SolCall for _getVkCall {
7060            type Parameters<'a> = ();
7061            type Token<'a> = <Self::Parameters<
7062                'a,
7063            > as alloy_sol_types::SolType>::Token<'a>;
7064            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7065            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7066            type ReturnToken<'a> = <Self::ReturnTuple<
7067                'a,
7068            > as alloy_sol_types::SolType>::Token<'a>;
7069            const SIGNATURE: &'static str = "_getVk()";
7070            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7071            #[inline]
7072            fn new<'a>(
7073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7074            ) -> Self {
7075                tuple.into()
7076            }
7077            #[inline]
7078            fn tokenize(&self) -> Self::Token<'_> {
7079                ()
7080            }
7081            #[inline]
7082            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7083                (
7084                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7085                        ret,
7086                    ),
7087                )
7088            }
7089            #[inline]
7090            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7091                <Self::ReturnTuple<
7092                    '_,
7093                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7094                    .map(|r| {
7095                        let r: _getVkReturn = r.into();
7096                        r.vk
7097                    })
7098            }
7099            #[inline]
7100            fn abi_decode_returns_validate(
7101                data: &[u8],
7102            ) -> alloy_sol_types::Result<Self::Return> {
7103                <Self::ReturnTuple<
7104                    '_,
7105                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7106                    .map(|r| {
7107                        let r: _getVkReturn = r.into();
7108                        r.vk
7109                    })
7110            }
7111        }
7112    };
7113    #[derive(serde::Serialize, serde::Deserialize)]
7114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7115    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7116```solidity
7117function currentBlockNumber() external view returns (uint256);
7118```*/
7119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7120    #[derive(Clone)]
7121    pub struct currentBlockNumberCall;
7122    #[derive(serde::Serialize, serde::Deserialize)]
7123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7124    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7126    #[derive(Clone)]
7127    pub struct currentBlockNumberReturn {
7128        #[allow(missing_docs)]
7129        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7130    }
7131    #[allow(
7132        non_camel_case_types,
7133        non_snake_case,
7134        clippy::pub_underscore_fields,
7135        clippy::style
7136    )]
7137    const _: () = {
7138        use alloy::sol_types as alloy_sol_types;
7139        {
7140            #[doc(hidden)]
7141            type UnderlyingSolTuple<'a> = ();
7142            #[doc(hidden)]
7143            type UnderlyingRustTuple<'a> = ();
7144            #[cfg(test)]
7145            #[allow(dead_code, unreachable_patterns)]
7146            fn _type_assertion(
7147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7148            ) {
7149                match _t {
7150                    alloy_sol_types::private::AssertTypeEq::<
7151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7152                    >(_) => {}
7153                }
7154            }
7155            #[automatically_derived]
7156            #[doc(hidden)]
7157            impl ::core::convert::From<currentBlockNumberCall>
7158            for UnderlyingRustTuple<'_> {
7159                fn from(value: currentBlockNumberCall) -> Self {
7160                    ()
7161                }
7162            }
7163            #[automatically_derived]
7164            #[doc(hidden)]
7165            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7166            for currentBlockNumberCall {
7167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7168                    Self
7169                }
7170            }
7171        }
7172        {
7173            #[doc(hidden)]
7174            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7175            #[doc(hidden)]
7176            type UnderlyingRustTuple<'a> = (
7177                alloy::sol_types::private::primitives::aliases::U256,
7178            );
7179            #[cfg(test)]
7180            #[allow(dead_code, unreachable_patterns)]
7181            fn _type_assertion(
7182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7183            ) {
7184                match _t {
7185                    alloy_sol_types::private::AssertTypeEq::<
7186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7187                    >(_) => {}
7188                }
7189            }
7190            #[automatically_derived]
7191            #[doc(hidden)]
7192            impl ::core::convert::From<currentBlockNumberReturn>
7193            for UnderlyingRustTuple<'_> {
7194                fn from(value: currentBlockNumberReturn) -> Self {
7195                    (value._0,)
7196                }
7197            }
7198            #[automatically_derived]
7199            #[doc(hidden)]
7200            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7201            for currentBlockNumberReturn {
7202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7203                    Self { _0: tuple.0 }
7204                }
7205            }
7206        }
7207        #[automatically_derived]
7208        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7209            type Parameters<'a> = ();
7210            type Token<'a> = <Self::Parameters<
7211                'a,
7212            > as alloy_sol_types::SolType>::Token<'a>;
7213            type Return = alloy::sol_types::private::primitives::aliases::U256;
7214            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7215            type ReturnToken<'a> = <Self::ReturnTuple<
7216                'a,
7217            > as alloy_sol_types::SolType>::Token<'a>;
7218            const SIGNATURE: &'static str = "currentBlockNumber()";
7219            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7220            #[inline]
7221            fn new<'a>(
7222                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7223            ) -> Self {
7224                tuple.into()
7225            }
7226            #[inline]
7227            fn tokenize(&self) -> Self::Token<'_> {
7228                ()
7229            }
7230            #[inline]
7231            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7232                (
7233                    <alloy::sol_types::sol_data::Uint<
7234                        256,
7235                    > as alloy_sol_types::SolType>::tokenize(ret),
7236                )
7237            }
7238            #[inline]
7239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7240                <Self::ReturnTuple<
7241                    '_,
7242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7243                    .map(|r| {
7244                        let r: currentBlockNumberReturn = r.into();
7245                        r._0
7246                    })
7247            }
7248            #[inline]
7249            fn abi_decode_returns_validate(
7250                data: &[u8],
7251            ) -> alloy_sol_types::Result<Self::Return> {
7252                <Self::ReturnTuple<
7253                    '_,
7254                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7255                    .map(|r| {
7256                        let r: currentBlockNumberReturn = r.into();
7257                        r._0
7258                    })
7259            }
7260        }
7261    };
7262    #[derive(serde::Serialize, serde::Deserialize)]
7263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7264    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7265```solidity
7266function disablePermissionedProverMode() external;
7267```*/
7268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7269    #[derive(Clone)]
7270    pub struct disablePermissionedProverModeCall;
7271    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7273    #[derive(Clone)]
7274    pub struct disablePermissionedProverModeReturn {}
7275    #[allow(
7276        non_camel_case_types,
7277        non_snake_case,
7278        clippy::pub_underscore_fields,
7279        clippy::style
7280    )]
7281    const _: () = {
7282        use alloy::sol_types as alloy_sol_types;
7283        {
7284            #[doc(hidden)]
7285            type UnderlyingSolTuple<'a> = ();
7286            #[doc(hidden)]
7287            type UnderlyingRustTuple<'a> = ();
7288            #[cfg(test)]
7289            #[allow(dead_code, unreachable_patterns)]
7290            fn _type_assertion(
7291                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7292            ) {
7293                match _t {
7294                    alloy_sol_types::private::AssertTypeEq::<
7295                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7296                    >(_) => {}
7297                }
7298            }
7299            #[automatically_derived]
7300            #[doc(hidden)]
7301            impl ::core::convert::From<disablePermissionedProverModeCall>
7302            for UnderlyingRustTuple<'_> {
7303                fn from(value: disablePermissionedProverModeCall) -> Self {
7304                    ()
7305                }
7306            }
7307            #[automatically_derived]
7308            #[doc(hidden)]
7309            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7310            for disablePermissionedProverModeCall {
7311                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7312                    Self
7313                }
7314            }
7315        }
7316        {
7317            #[doc(hidden)]
7318            type UnderlyingSolTuple<'a> = ();
7319            #[doc(hidden)]
7320            type UnderlyingRustTuple<'a> = ();
7321            #[cfg(test)]
7322            #[allow(dead_code, unreachable_patterns)]
7323            fn _type_assertion(
7324                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7325            ) {
7326                match _t {
7327                    alloy_sol_types::private::AssertTypeEq::<
7328                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7329                    >(_) => {}
7330                }
7331            }
7332            #[automatically_derived]
7333            #[doc(hidden)]
7334            impl ::core::convert::From<disablePermissionedProverModeReturn>
7335            for UnderlyingRustTuple<'_> {
7336                fn from(value: disablePermissionedProverModeReturn) -> Self {
7337                    ()
7338                }
7339            }
7340            #[automatically_derived]
7341            #[doc(hidden)]
7342            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7343            for disablePermissionedProverModeReturn {
7344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7345                    Self {}
7346                }
7347            }
7348        }
7349        impl disablePermissionedProverModeReturn {
7350            fn _tokenize(
7351                &self,
7352            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7353                '_,
7354            > {
7355                ()
7356            }
7357        }
7358        #[automatically_derived]
7359        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7360            type Parameters<'a> = ();
7361            type Token<'a> = <Self::Parameters<
7362                'a,
7363            > as alloy_sol_types::SolType>::Token<'a>;
7364            type Return = disablePermissionedProverModeReturn;
7365            type ReturnTuple<'a> = ();
7366            type ReturnToken<'a> = <Self::ReturnTuple<
7367                'a,
7368            > as alloy_sol_types::SolType>::Token<'a>;
7369            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7370            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7371            #[inline]
7372            fn new<'a>(
7373                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7374            ) -> Self {
7375                tuple.into()
7376            }
7377            #[inline]
7378            fn tokenize(&self) -> Self::Token<'_> {
7379                ()
7380            }
7381            #[inline]
7382            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7383                disablePermissionedProverModeReturn::_tokenize(ret)
7384            }
7385            #[inline]
7386            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7387                <Self::ReturnTuple<
7388                    '_,
7389                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7390                    .map(Into::into)
7391            }
7392            #[inline]
7393            fn abi_decode_returns_validate(
7394                data: &[u8],
7395            ) -> alloy_sol_types::Result<Self::Return> {
7396                <Self::ReturnTuple<
7397                    '_,
7398                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7399                    .map(Into::into)
7400            }
7401        }
7402    };
7403    #[derive(serde::Serialize, serde::Deserialize)]
7404    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7405    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7406```solidity
7407function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7408```*/
7409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7410    #[derive(Clone)]
7411    pub struct finalizedStateCall;
7412    #[derive(serde::Serialize, serde::Deserialize)]
7413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7414    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7416    #[derive(Clone)]
7417    pub struct finalizedStateReturn {
7418        #[allow(missing_docs)]
7419        pub viewNum: u64,
7420        #[allow(missing_docs)]
7421        pub blockHeight: u64,
7422        #[allow(missing_docs)]
7423        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7424    }
7425    #[allow(
7426        non_camel_case_types,
7427        non_snake_case,
7428        clippy::pub_underscore_fields,
7429        clippy::style
7430    )]
7431    const _: () = {
7432        use alloy::sol_types as alloy_sol_types;
7433        {
7434            #[doc(hidden)]
7435            type UnderlyingSolTuple<'a> = ();
7436            #[doc(hidden)]
7437            type UnderlyingRustTuple<'a> = ();
7438            #[cfg(test)]
7439            #[allow(dead_code, unreachable_patterns)]
7440            fn _type_assertion(
7441                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7442            ) {
7443                match _t {
7444                    alloy_sol_types::private::AssertTypeEq::<
7445                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7446                    >(_) => {}
7447                }
7448            }
7449            #[automatically_derived]
7450            #[doc(hidden)]
7451            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7452                fn from(value: finalizedStateCall) -> Self {
7453                    ()
7454                }
7455            }
7456            #[automatically_derived]
7457            #[doc(hidden)]
7458            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7460                    Self
7461                }
7462            }
7463        }
7464        {
7465            #[doc(hidden)]
7466            type UnderlyingSolTuple<'a> = (
7467                alloy::sol_types::sol_data::Uint<64>,
7468                alloy::sol_types::sol_data::Uint<64>,
7469                BN254::ScalarField,
7470            );
7471            #[doc(hidden)]
7472            type UnderlyingRustTuple<'a> = (
7473                u64,
7474                u64,
7475                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7476            );
7477            #[cfg(test)]
7478            #[allow(dead_code, unreachable_patterns)]
7479            fn _type_assertion(
7480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7481            ) {
7482                match _t {
7483                    alloy_sol_types::private::AssertTypeEq::<
7484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7485                    >(_) => {}
7486                }
7487            }
7488            #[automatically_derived]
7489            #[doc(hidden)]
7490            impl ::core::convert::From<finalizedStateReturn>
7491            for UnderlyingRustTuple<'_> {
7492                fn from(value: finalizedStateReturn) -> Self {
7493                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7494                }
7495            }
7496            #[automatically_derived]
7497            #[doc(hidden)]
7498            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7499            for finalizedStateReturn {
7500                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7501                    Self {
7502                        viewNum: tuple.0,
7503                        blockHeight: tuple.1,
7504                        blockCommRoot: tuple.2,
7505                    }
7506                }
7507            }
7508        }
7509        impl finalizedStateReturn {
7510            fn _tokenize(
7511                &self,
7512            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7513                (
7514                    <alloy::sol_types::sol_data::Uint<
7515                        64,
7516                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7517                    <alloy::sol_types::sol_data::Uint<
7518                        64,
7519                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7520                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7521                        &self.blockCommRoot,
7522                    ),
7523                )
7524            }
7525        }
7526        #[automatically_derived]
7527        impl alloy_sol_types::SolCall for finalizedStateCall {
7528            type Parameters<'a> = ();
7529            type Token<'a> = <Self::Parameters<
7530                'a,
7531            > as alloy_sol_types::SolType>::Token<'a>;
7532            type Return = finalizedStateReturn;
7533            type ReturnTuple<'a> = (
7534                alloy::sol_types::sol_data::Uint<64>,
7535                alloy::sol_types::sol_data::Uint<64>,
7536                BN254::ScalarField,
7537            );
7538            type ReturnToken<'a> = <Self::ReturnTuple<
7539                'a,
7540            > as alloy_sol_types::SolType>::Token<'a>;
7541            const SIGNATURE: &'static str = "finalizedState()";
7542            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7543            #[inline]
7544            fn new<'a>(
7545                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7546            ) -> Self {
7547                tuple.into()
7548            }
7549            #[inline]
7550            fn tokenize(&self) -> Self::Token<'_> {
7551                ()
7552            }
7553            #[inline]
7554            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7555                finalizedStateReturn::_tokenize(ret)
7556            }
7557            #[inline]
7558            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7559                <Self::ReturnTuple<
7560                    '_,
7561                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7562                    .map(Into::into)
7563            }
7564            #[inline]
7565            fn abi_decode_returns_validate(
7566                data: &[u8],
7567            ) -> alloy_sol_types::Result<Self::Return> {
7568                <Self::ReturnTuple<
7569                    '_,
7570                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7571                    .map(Into::into)
7572            }
7573        }
7574    };
7575    #[derive(serde::Serialize, serde::Deserialize)]
7576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7577    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7578```solidity
7579function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7580```*/
7581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7582    #[derive(Clone)]
7583    pub struct genesisStakeTableStateCall;
7584    #[derive(serde::Serialize, serde::Deserialize)]
7585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7586    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7588    #[derive(Clone)]
7589    pub struct genesisStakeTableStateReturn {
7590        #[allow(missing_docs)]
7591        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7592        #[allow(missing_docs)]
7593        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7594        #[allow(missing_docs)]
7595        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7596        #[allow(missing_docs)]
7597        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7598    }
7599    #[allow(
7600        non_camel_case_types,
7601        non_snake_case,
7602        clippy::pub_underscore_fields,
7603        clippy::style
7604    )]
7605    const _: () = {
7606        use alloy::sol_types as alloy_sol_types;
7607        {
7608            #[doc(hidden)]
7609            type UnderlyingSolTuple<'a> = ();
7610            #[doc(hidden)]
7611            type UnderlyingRustTuple<'a> = ();
7612            #[cfg(test)]
7613            #[allow(dead_code, unreachable_patterns)]
7614            fn _type_assertion(
7615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7616            ) {
7617                match _t {
7618                    alloy_sol_types::private::AssertTypeEq::<
7619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7620                    >(_) => {}
7621                }
7622            }
7623            #[automatically_derived]
7624            #[doc(hidden)]
7625            impl ::core::convert::From<genesisStakeTableStateCall>
7626            for UnderlyingRustTuple<'_> {
7627                fn from(value: genesisStakeTableStateCall) -> Self {
7628                    ()
7629                }
7630            }
7631            #[automatically_derived]
7632            #[doc(hidden)]
7633            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7634            for genesisStakeTableStateCall {
7635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7636                    Self
7637                }
7638            }
7639        }
7640        {
7641            #[doc(hidden)]
7642            type UnderlyingSolTuple<'a> = (
7643                alloy::sol_types::sol_data::Uint<256>,
7644                BN254::ScalarField,
7645                BN254::ScalarField,
7646                BN254::ScalarField,
7647            );
7648            #[doc(hidden)]
7649            type UnderlyingRustTuple<'a> = (
7650                alloy::sol_types::private::primitives::aliases::U256,
7651                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7652                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7653                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7654            );
7655            #[cfg(test)]
7656            #[allow(dead_code, unreachable_patterns)]
7657            fn _type_assertion(
7658                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7659            ) {
7660                match _t {
7661                    alloy_sol_types::private::AssertTypeEq::<
7662                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7663                    >(_) => {}
7664                }
7665            }
7666            #[automatically_derived]
7667            #[doc(hidden)]
7668            impl ::core::convert::From<genesisStakeTableStateReturn>
7669            for UnderlyingRustTuple<'_> {
7670                fn from(value: genesisStakeTableStateReturn) -> Self {
7671                    (
7672                        value.threshold,
7673                        value.blsKeyComm,
7674                        value.schnorrKeyComm,
7675                        value.amountComm,
7676                    )
7677                }
7678            }
7679            #[automatically_derived]
7680            #[doc(hidden)]
7681            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7682            for genesisStakeTableStateReturn {
7683                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7684                    Self {
7685                        threshold: tuple.0,
7686                        blsKeyComm: tuple.1,
7687                        schnorrKeyComm: tuple.2,
7688                        amountComm: tuple.3,
7689                    }
7690                }
7691            }
7692        }
7693        impl genesisStakeTableStateReturn {
7694            fn _tokenize(
7695                &self,
7696            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7697                '_,
7698            > {
7699                (
7700                    <alloy::sol_types::sol_data::Uint<
7701                        256,
7702                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7703                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7704                        &self.blsKeyComm,
7705                    ),
7706                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7707                        &self.schnorrKeyComm,
7708                    ),
7709                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7710                        &self.amountComm,
7711                    ),
7712                )
7713            }
7714        }
7715        #[automatically_derived]
7716        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7717            type Parameters<'a> = ();
7718            type Token<'a> = <Self::Parameters<
7719                'a,
7720            > as alloy_sol_types::SolType>::Token<'a>;
7721            type Return = genesisStakeTableStateReturn;
7722            type ReturnTuple<'a> = (
7723                alloy::sol_types::sol_data::Uint<256>,
7724                BN254::ScalarField,
7725                BN254::ScalarField,
7726                BN254::ScalarField,
7727            );
7728            type ReturnToken<'a> = <Self::ReturnTuple<
7729                'a,
7730            > as alloy_sol_types::SolType>::Token<'a>;
7731            const SIGNATURE: &'static str = "genesisStakeTableState()";
7732            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7733            #[inline]
7734            fn new<'a>(
7735                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7736            ) -> Self {
7737                tuple.into()
7738            }
7739            #[inline]
7740            fn tokenize(&self) -> Self::Token<'_> {
7741                ()
7742            }
7743            #[inline]
7744            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7745                genesisStakeTableStateReturn::_tokenize(ret)
7746            }
7747            #[inline]
7748            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7749                <Self::ReturnTuple<
7750                    '_,
7751                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7752                    .map(Into::into)
7753            }
7754            #[inline]
7755            fn abi_decode_returns_validate(
7756                data: &[u8],
7757            ) -> alloy_sol_types::Result<Self::Return> {
7758                <Self::ReturnTuple<
7759                    '_,
7760                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7761                    .map(Into::into)
7762            }
7763        }
7764    };
7765    #[derive(serde::Serialize, serde::Deserialize)]
7766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7767    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7768```solidity
7769function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7770```*/
7771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7772    #[derive(Clone)]
7773    pub struct genesisStateCall;
7774    #[derive(serde::Serialize, serde::Deserialize)]
7775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7776    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7778    #[derive(Clone)]
7779    pub struct genesisStateReturn {
7780        #[allow(missing_docs)]
7781        pub viewNum: u64,
7782        #[allow(missing_docs)]
7783        pub blockHeight: u64,
7784        #[allow(missing_docs)]
7785        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7786    }
7787    #[allow(
7788        non_camel_case_types,
7789        non_snake_case,
7790        clippy::pub_underscore_fields,
7791        clippy::style
7792    )]
7793    const _: () = {
7794        use alloy::sol_types as alloy_sol_types;
7795        {
7796            #[doc(hidden)]
7797            type UnderlyingSolTuple<'a> = ();
7798            #[doc(hidden)]
7799            type UnderlyingRustTuple<'a> = ();
7800            #[cfg(test)]
7801            #[allow(dead_code, unreachable_patterns)]
7802            fn _type_assertion(
7803                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7804            ) {
7805                match _t {
7806                    alloy_sol_types::private::AssertTypeEq::<
7807                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7808                    >(_) => {}
7809                }
7810            }
7811            #[automatically_derived]
7812            #[doc(hidden)]
7813            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7814                fn from(value: genesisStateCall) -> Self {
7815                    ()
7816                }
7817            }
7818            #[automatically_derived]
7819            #[doc(hidden)]
7820            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7822                    Self
7823                }
7824            }
7825        }
7826        {
7827            #[doc(hidden)]
7828            type UnderlyingSolTuple<'a> = (
7829                alloy::sol_types::sol_data::Uint<64>,
7830                alloy::sol_types::sol_data::Uint<64>,
7831                BN254::ScalarField,
7832            );
7833            #[doc(hidden)]
7834            type UnderlyingRustTuple<'a> = (
7835                u64,
7836                u64,
7837                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7838            );
7839            #[cfg(test)]
7840            #[allow(dead_code, unreachable_patterns)]
7841            fn _type_assertion(
7842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7843            ) {
7844                match _t {
7845                    alloy_sol_types::private::AssertTypeEq::<
7846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7847                    >(_) => {}
7848                }
7849            }
7850            #[automatically_derived]
7851            #[doc(hidden)]
7852            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7853                fn from(value: genesisStateReturn) -> Self {
7854                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7855                }
7856            }
7857            #[automatically_derived]
7858            #[doc(hidden)]
7859            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7860                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7861                    Self {
7862                        viewNum: tuple.0,
7863                        blockHeight: tuple.1,
7864                        blockCommRoot: tuple.2,
7865                    }
7866                }
7867            }
7868        }
7869        impl genesisStateReturn {
7870            fn _tokenize(
7871                &self,
7872            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7873                (
7874                    <alloy::sol_types::sol_data::Uint<
7875                        64,
7876                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7877                    <alloy::sol_types::sol_data::Uint<
7878                        64,
7879                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7880                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7881                        &self.blockCommRoot,
7882                    ),
7883                )
7884            }
7885        }
7886        #[automatically_derived]
7887        impl alloy_sol_types::SolCall for genesisStateCall {
7888            type Parameters<'a> = ();
7889            type Token<'a> = <Self::Parameters<
7890                'a,
7891            > as alloy_sol_types::SolType>::Token<'a>;
7892            type Return = genesisStateReturn;
7893            type ReturnTuple<'a> = (
7894                alloy::sol_types::sol_data::Uint<64>,
7895                alloy::sol_types::sol_data::Uint<64>,
7896                BN254::ScalarField,
7897            );
7898            type ReturnToken<'a> = <Self::ReturnTuple<
7899                'a,
7900            > as alloy_sol_types::SolType>::Token<'a>;
7901            const SIGNATURE: &'static str = "genesisState()";
7902            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7903            #[inline]
7904            fn new<'a>(
7905                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7906            ) -> Self {
7907                tuple.into()
7908            }
7909            #[inline]
7910            fn tokenize(&self) -> Self::Token<'_> {
7911                ()
7912            }
7913            #[inline]
7914            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7915                genesisStateReturn::_tokenize(ret)
7916            }
7917            #[inline]
7918            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7919                <Self::ReturnTuple<
7920                    '_,
7921                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7922                    .map(Into::into)
7923            }
7924            #[inline]
7925            fn abi_decode_returns_validate(
7926                data: &[u8],
7927            ) -> alloy_sol_types::Result<Self::Return> {
7928                <Self::ReturnTuple<
7929                    '_,
7930                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7931                    .map(Into::into)
7932            }
7933        }
7934    };
7935    #[derive(serde::Serialize, serde::Deserialize)]
7936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7937    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7938```solidity
7939function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7940```*/
7941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7942    #[derive(Clone)]
7943    pub struct getHotShotCommitmentCall {
7944        #[allow(missing_docs)]
7945        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7946    }
7947    #[derive(serde::Serialize, serde::Deserialize)]
7948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7949    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7951    #[derive(Clone)]
7952    pub struct getHotShotCommitmentReturn {
7953        #[allow(missing_docs)]
7954        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7955        #[allow(missing_docs)]
7956        pub hotshotBlockHeight: u64,
7957    }
7958    #[allow(
7959        non_camel_case_types,
7960        non_snake_case,
7961        clippy::pub_underscore_fields,
7962        clippy::style
7963    )]
7964    const _: () = {
7965        use alloy::sol_types as alloy_sol_types;
7966        {
7967            #[doc(hidden)]
7968            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7969            #[doc(hidden)]
7970            type UnderlyingRustTuple<'a> = (
7971                alloy::sol_types::private::primitives::aliases::U256,
7972            );
7973            #[cfg(test)]
7974            #[allow(dead_code, unreachable_patterns)]
7975            fn _type_assertion(
7976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7977            ) {
7978                match _t {
7979                    alloy_sol_types::private::AssertTypeEq::<
7980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7981                    >(_) => {}
7982                }
7983            }
7984            #[automatically_derived]
7985            #[doc(hidden)]
7986            impl ::core::convert::From<getHotShotCommitmentCall>
7987            for UnderlyingRustTuple<'_> {
7988                fn from(value: getHotShotCommitmentCall) -> Self {
7989                    (value.hotShotBlockHeight,)
7990                }
7991            }
7992            #[automatically_derived]
7993            #[doc(hidden)]
7994            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7995            for getHotShotCommitmentCall {
7996                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7997                    Self {
7998                        hotShotBlockHeight: tuple.0,
7999                    }
8000                }
8001            }
8002        }
8003        {
8004            #[doc(hidden)]
8005            type UnderlyingSolTuple<'a> = (
8006                BN254::ScalarField,
8007                alloy::sol_types::sol_data::Uint<64>,
8008            );
8009            #[doc(hidden)]
8010            type UnderlyingRustTuple<'a> = (
8011                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8012                u64,
8013            );
8014            #[cfg(test)]
8015            #[allow(dead_code, unreachable_patterns)]
8016            fn _type_assertion(
8017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8018            ) {
8019                match _t {
8020                    alloy_sol_types::private::AssertTypeEq::<
8021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8022                    >(_) => {}
8023                }
8024            }
8025            #[automatically_derived]
8026            #[doc(hidden)]
8027            impl ::core::convert::From<getHotShotCommitmentReturn>
8028            for UnderlyingRustTuple<'_> {
8029                fn from(value: getHotShotCommitmentReturn) -> Self {
8030                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8031                }
8032            }
8033            #[automatically_derived]
8034            #[doc(hidden)]
8035            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8036            for getHotShotCommitmentReturn {
8037                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8038                    Self {
8039                        hotShotBlockCommRoot: tuple.0,
8040                        hotshotBlockHeight: tuple.1,
8041                    }
8042                }
8043            }
8044        }
8045        impl getHotShotCommitmentReturn {
8046            fn _tokenize(
8047                &self,
8048            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8049                '_,
8050            > {
8051                (
8052                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8053                        &self.hotShotBlockCommRoot,
8054                    ),
8055                    <alloy::sol_types::sol_data::Uint<
8056                        64,
8057                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8058                )
8059            }
8060        }
8061        #[automatically_derived]
8062        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8063            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8064            type Token<'a> = <Self::Parameters<
8065                'a,
8066            > as alloy_sol_types::SolType>::Token<'a>;
8067            type Return = getHotShotCommitmentReturn;
8068            type ReturnTuple<'a> = (
8069                BN254::ScalarField,
8070                alloy::sol_types::sol_data::Uint<64>,
8071            );
8072            type ReturnToken<'a> = <Self::ReturnTuple<
8073                'a,
8074            > as alloy_sol_types::SolType>::Token<'a>;
8075            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8076            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8077            #[inline]
8078            fn new<'a>(
8079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8080            ) -> Self {
8081                tuple.into()
8082            }
8083            #[inline]
8084            fn tokenize(&self) -> Self::Token<'_> {
8085                (
8086                    <alloy::sol_types::sol_data::Uint<
8087                        256,
8088                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8089                )
8090            }
8091            #[inline]
8092            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8093                getHotShotCommitmentReturn::_tokenize(ret)
8094            }
8095            #[inline]
8096            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8097                <Self::ReturnTuple<
8098                    '_,
8099                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8100                    .map(Into::into)
8101            }
8102            #[inline]
8103            fn abi_decode_returns_validate(
8104                data: &[u8],
8105            ) -> alloy_sol_types::Result<Self::Return> {
8106                <Self::ReturnTuple<
8107                    '_,
8108                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8109                    .map(Into::into)
8110            }
8111        }
8112    };
8113    #[derive(serde::Serialize, serde::Deserialize)]
8114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8115    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8116```solidity
8117function getStateHistoryCount() external view returns (uint256);
8118```*/
8119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8120    #[derive(Clone)]
8121    pub struct getStateHistoryCountCall;
8122    #[derive(serde::Serialize, serde::Deserialize)]
8123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8124    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8126    #[derive(Clone)]
8127    pub struct getStateHistoryCountReturn {
8128        #[allow(missing_docs)]
8129        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8130    }
8131    #[allow(
8132        non_camel_case_types,
8133        non_snake_case,
8134        clippy::pub_underscore_fields,
8135        clippy::style
8136    )]
8137    const _: () = {
8138        use alloy::sol_types as alloy_sol_types;
8139        {
8140            #[doc(hidden)]
8141            type UnderlyingSolTuple<'a> = ();
8142            #[doc(hidden)]
8143            type UnderlyingRustTuple<'a> = ();
8144            #[cfg(test)]
8145            #[allow(dead_code, unreachable_patterns)]
8146            fn _type_assertion(
8147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8148            ) {
8149                match _t {
8150                    alloy_sol_types::private::AssertTypeEq::<
8151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8152                    >(_) => {}
8153                }
8154            }
8155            #[automatically_derived]
8156            #[doc(hidden)]
8157            impl ::core::convert::From<getStateHistoryCountCall>
8158            for UnderlyingRustTuple<'_> {
8159                fn from(value: getStateHistoryCountCall) -> Self {
8160                    ()
8161                }
8162            }
8163            #[automatically_derived]
8164            #[doc(hidden)]
8165            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8166            for getStateHistoryCountCall {
8167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8168                    Self
8169                }
8170            }
8171        }
8172        {
8173            #[doc(hidden)]
8174            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8175            #[doc(hidden)]
8176            type UnderlyingRustTuple<'a> = (
8177                alloy::sol_types::private::primitives::aliases::U256,
8178            );
8179            #[cfg(test)]
8180            #[allow(dead_code, unreachable_patterns)]
8181            fn _type_assertion(
8182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8183            ) {
8184                match _t {
8185                    alloy_sol_types::private::AssertTypeEq::<
8186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8187                    >(_) => {}
8188                }
8189            }
8190            #[automatically_derived]
8191            #[doc(hidden)]
8192            impl ::core::convert::From<getStateHistoryCountReturn>
8193            for UnderlyingRustTuple<'_> {
8194                fn from(value: getStateHistoryCountReturn) -> Self {
8195                    (value._0,)
8196                }
8197            }
8198            #[automatically_derived]
8199            #[doc(hidden)]
8200            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8201            for getStateHistoryCountReturn {
8202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8203                    Self { _0: tuple.0 }
8204                }
8205            }
8206        }
8207        #[automatically_derived]
8208        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8209            type Parameters<'a> = ();
8210            type Token<'a> = <Self::Parameters<
8211                'a,
8212            > as alloy_sol_types::SolType>::Token<'a>;
8213            type Return = alloy::sol_types::private::primitives::aliases::U256;
8214            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8215            type ReturnToken<'a> = <Self::ReturnTuple<
8216                'a,
8217            > as alloy_sol_types::SolType>::Token<'a>;
8218            const SIGNATURE: &'static str = "getStateHistoryCount()";
8219            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8220            #[inline]
8221            fn new<'a>(
8222                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8223            ) -> Self {
8224                tuple.into()
8225            }
8226            #[inline]
8227            fn tokenize(&self) -> Self::Token<'_> {
8228                ()
8229            }
8230            #[inline]
8231            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8232                (
8233                    <alloy::sol_types::sol_data::Uint<
8234                        256,
8235                    > as alloy_sol_types::SolType>::tokenize(ret),
8236                )
8237            }
8238            #[inline]
8239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8240                <Self::ReturnTuple<
8241                    '_,
8242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8243                    .map(|r| {
8244                        let r: getStateHistoryCountReturn = r.into();
8245                        r._0
8246                    })
8247            }
8248            #[inline]
8249            fn abi_decode_returns_validate(
8250                data: &[u8],
8251            ) -> alloy_sol_types::Result<Self::Return> {
8252                <Self::ReturnTuple<
8253                    '_,
8254                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8255                    .map(|r| {
8256                        let r: getStateHistoryCountReturn = r.into();
8257                        r._0
8258                    })
8259            }
8260        }
8261    };
8262    #[derive(serde::Serialize, serde::Deserialize)]
8263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8264    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8265```solidity
8266function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8267```*/
8268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8269    #[derive(Clone)]
8270    pub struct getVersionCall;
8271    #[derive(serde::Serialize, serde::Deserialize)]
8272    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8273    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8274    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8275    #[derive(Clone)]
8276    pub struct getVersionReturn {
8277        #[allow(missing_docs)]
8278        pub majorVersion: u8,
8279        #[allow(missing_docs)]
8280        pub minorVersion: u8,
8281        #[allow(missing_docs)]
8282        pub patchVersion: u8,
8283    }
8284    #[allow(
8285        non_camel_case_types,
8286        non_snake_case,
8287        clippy::pub_underscore_fields,
8288        clippy::style
8289    )]
8290    const _: () = {
8291        use alloy::sol_types as alloy_sol_types;
8292        {
8293            #[doc(hidden)]
8294            type UnderlyingSolTuple<'a> = ();
8295            #[doc(hidden)]
8296            type UnderlyingRustTuple<'a> = ();
8297            #[cfg(test)]
8298            #[allow(dead_code, unreachable_patterns)]
8299            fn _type_assertion(
8300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8301            ) {
8302                match _t {
8303                    alloy_sol_types::private::AssertTypeEq::<
8304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8305                    >(_) => {}
8306                }
8307            }
8308            #[automatically_derived]
8309            #[doc(hidden)]
8310            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8311                fn from(value: getVersionCall) -> Self {
8312                    ()
8313                }
8314            }
8315            #[automatically_derived]
8316            #[doc(hidden)]
8317            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8318                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8319                    Self
8320                }
8321            }
8322        }
8323        {
8324            #[doc(hidden)]
8325            type UnderlyingSolTuple<'a> = (
8326                alloy::sol_types::sol_data::Uint<8>,
8327                alloy::sol_types::sol_data::Uint<8>,
8328                alloy::sol_types::sol_data::Uint<8>,
8329            );
8330            #[doc(hidden)]
8331            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8332            #[cfg(test)]
8333            #[allow(dead_code, unreachable_patterns)]
8334            fn _type_assertion(
8335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8336            ) {
8337                match _t {
8338                    alloy_sol_types::private::AssertTypeEq::<
8339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8340                    >(_) => {}
8341                }
8342            }
8343            #[automatically_derived]
8344            #[doc(hidden)]
8345            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8346                fn from(value: getVersionReturn) -> Self {
8347                    (value.majorVersion, value.minorVersion, value.patchVersion)
8348                }
8349            }
8350            #[automatically_derived]
8351            #[doc(hidden)]
8352            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8354                    Self {
8355                        majorVersion: tuple.0,
8356                        minorVersion: tuple.1,
8357                        patchVersion: tuple.2,
8358                    }
8359                }
8360            }
8361        }
8362        impl getVersionReturn {
8363            fn _tokenize(
8364                &self,
8365            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8366                (
8367                    <alloy::sol_types::sol_data::Uint<
8368                        8,
8369                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8370                    <alloy::sol_types::sol_data::Uint<
8371                        8,
8372                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8373                    <alloy::sol_types::sol_data::Uint<
8374                        8,
8375                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8376                )
8377            }
8378        }
8379        #[automatically_derived]
8380        impl alloy_sol_types::SolCall for getVersionCall {
8381            type Parameters<'a> = ();
8382            type Token<'a> = <Self::Parameters<
8383                'a,
8384            > as alloy_sol_types::SolType>::Token<'a>;
8385            type Return = getVersionReturn;
8386            type ReturnTuple<'a> = (
8387                alloy::sol_types::sol_data::Uint<8>,
8388                alloy::sol_types::sol_data::Uint<8>,
8389                alloy::sol_types::sol_data::Uint<8>,
8390            );
8391            type ReturnToken<'a> = <Self::ReturnTuple<
8392                'a,
8393            > as alloy_sol_types::SolType>::Token<'a>;
8394            const SIGNATURE: &'static str = "getVersion()";
8395            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8396            #[inline]
8397            fn new<'a>(
8398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8399            ) -> Self {
8400                tuple.into()
8401            }
8402            #[inline]
8403            fn tokenize(&self) -> Self::Token<'_> {
8404                ()
8405            }
8406            #[inline]
8407            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8408                getVersionReturn::_tokenize(ret)
8409            }
8410            #[inline]
8411            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8412                <Self::ReturnTuple<
8413                    '_,
8414                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8415                    .map(Into::into)
8416            }
8417            #[inline]
8418            fn abi_decode_returns_validate(
8419                data: &[u8],
8420            ) -> alloy_sol_types::Result<Self::Return> {
8421                <Self::ReturnTuple<
8422                    '_,
8423                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8424                    .map(Into::into)
8425            }
8426        }
8427    };
8428    #[derive(serde::Serialize, serde::Deserialize)]
8429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8430    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8431```solidity
8432function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8433```*/
8434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8435    #[derive(Clone)]
8436    pub struct initializeCall {
8437        #[allow(missing_docs)]
8438        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8439        #[allow(missing_docs)]
8440        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8441        #[allow(missing_docs)]
8442        pub _stateHistoryRetentionPeriod: u32,
8443        #[allow(missing_docs)]
8444        pub owner: alloy::sol_types::private::Address,
8445    }
8446    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8448    #[derive(Clone)]
8449    pub struct initializeReturn {}
8450    #[allow(
8451        non_camel_case_types,
8452        non_snake_case,
8453        clippy::pub_underscore_fields,
8454        clippy::style
8455    )]
8456    const _: () = {
8457        use alloy::sol_types as alloy_sol_types;
8458        {
8459            #[doc(hidden)]
8460            type UnderlyingSolTuple<'a> = (
8461                LightClient::LightClientState,
8462                LightClient::StakeTableState,
8463                alloy::sol_types::sol_data::Uint<32>,
8464                alloy::sol_types::sol_data::Address,
8465            );
8466            #[doc(hidden)]
8467            type UnderlyingRustTuple<'a> = (
8468                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8469                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8470                u32,
8471                alloy::sol_types::private::Address,
8472            );
8473            #[cfg(test)]
8474            #[allow(dead_code, unreachable_patterns)]
8475            fn _type_assertion(
8476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8477            ) {
8478                match _t {
8479                    alloy_sol_types::private::AssertTypeEq::<
8480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8481                    >(_) => {}
8482                }
8483            }
8484            #[automatically_derived]
8485            #[doc(hidden)]
8486            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8487                fn from(value: initializeCall) -> Self {
8488                    (
8489                        value._genesis,
8490                        value._genesisStakeTableState,
8491                        value._stateHistoryRetentionPeriod,
8492                        value.owner,
8493                    )
8494                }
8495            }
8496            #[automatically_derived]
8497            #[doc(hidden)]
8498            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8499                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8500                    Self {
8501                        _genesis: tuple.0,
8502                        _genesisStakeTableState: tuple.1,
8503                        _stateHistoryRetentionPeriod: tuple.2,
8504                        owner: tuple.3,
8505                    }
8506                }
8507            }
8508        }
8509        {
8510            #[doc(hidden)]
8511            type UnderlyingSolTuple<'a> = ();
8512            #[doc(hidden)]
8513            type UnderlyingRustTuple<'a> = ();
8514            #[cfg(test)]
8515            #[allow(dead_code, unreachable_patterns)]
8516            fn _type_assertion(
8517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8518            ) {
8519                match _t {
8520                    alloy_sol_types::private::AssertTypeEq::<
8521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8522                    >(_) => {}
8523                }
8524            }
8525            #[automatically_derived]
8526            #[doc(hidden)]
8527            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8528                fn from(value: initializeReturn) -> Self {
8529                    ()
8530                }
8531            }
8532            #[automatically_derived]
8533            #[doc(hidden)]
8534            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8536                    Self {}
8537                }
8538            }
8539        }
8540        impl initializeReturn {
8541            fn _tokenize(
8542                &self,
8543            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8544                ()
8545            }
8546        }
8547        #[automatically_derived]
8548        impl alloy_sol_types::SolCall for initializeCall {
8549            type Parameters<'a> = (
8550                LightClient::LightClientState,
8551                LightClient::StakeTableState,
8552                alloy::sol_types::sol_data::Uint<32>,
8553                alloy::sol_types::sol_data::Address,
8554            );
8555            type Token<'a> = <Self::Parameters<
8556                'a,
8557            > as alloy_sol_types::SolType>::Token<'a>;
8558            type Return = initializeReturn;
8559            type ReturnTuple<'a> = ();
8560            type ReturnToken<'a> = <Self::ReturnTuple<
8561                'a,
8562            > as alloy_sol_types::SolType>::Token<'a>;
8563            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8564            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8565            #[inline]
8566            fn new<'a>(
8567                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8568            ) -> Self {
8569                tuple.into()
8570            }
8571            #[inline]
8572            fn tokenize(&self) -> Self::Token<'_> {
8573                (
8574                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8575                        &self._genesis,
8576                    ),
8577                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8578                        &self._genesisStakeTableState,
8579                    ),
8580                    <alloy::sol_types::sol_data::Uint<
8581                        32,
8582                    > as alloy_sol_types::SolType>::tokenize(
8583                        &self._stateHistoryRetentionPeriod,
8584                    ),
8585                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8586                        &self.owner,
8587                    ),
8588                )
8589            }
8590            #[inline]
8591            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8592                initializeReturn::_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_validate(
8603                data: &[u8],
8604            ) -> alloy_sol_types::Result<Self::Return> {
8605                <Self::ReturnTuple<
8606                    '_,
8607                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8608                    .map(Into::into)
8609            }
8610        }
8611    };
8612    #[derive(serde::Serialize, serde::Deserialize)]
8613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8614    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8615```solidity
8616function isPermissionedProverEnabled() external view returns (bool);
8617```*/
8618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8619    #[derive(Clone)]
8620    pub struct isPermissionedProverEnabledCall;
8621    #[derive(serde::Serialize, serde::Deserialize)]
8622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8623    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8625    #[derive(Clone)]
8626    pub struct isPermissionedProverEnabledReturn {
8627        #[allow(missing_docs)]
8628        pub _0: bool,
8629    }
8630    #[allow(
8631        non_camel_case_types,
8632        non_snake_case,
8633        clippy::pub_underscore_fields,
8634        clippy::style
8635    )]
8636    const _: () = {
8637        use alloy::sol_types as alloy_sol_types;
8638        {
8639            #[doc(hidden)]
8640            type UnderlyingSolTuple<'a> = ();
8641            #[doc(hidden)]
8642            type UnderlyingRustTuple<'a> = ();
8643            #[cfg(test)]
8644            #[allow(dead_code, unreachable_patterns)]
8645            fn _type_assertion(
8646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8647            ) {
8648                match _t {
8649                    alloy_sol_types::private::AssertTypeEq::<
8650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8651                    >(_) => {}
8652                }
8653            }
8654            #[automatically_derived]
8655            #[doc(hidden)]
8656            impl ::core::convert::From<isPermissionedProverEnabledCall>
8657            for UnderlyingRustTuple<'_> {
8658                fn from(value: isPermissionedProverEnabledCall) -> Self {
8659                    ()
8660                }
8661            }
8662            #[automatically_derived]
8663            #[doc(hidden)]
8664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8665            for isPermissionedProverEnabledCall {
8666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8667                    Self
8668                }
8669            }
8670        }
8671        {
8672            #[doc(hidden)]
8673            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8674            #[doc(hidden)]
8675            type UnderlyingRustTuple<'a> = (bool,);
8676            #[cfg(test)]
8677            #[allow(dead_code, unreachable_patterns)]
8678            fn _type_assertion(
8679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8680            ) {
8681                match _t {
8682                    alloy_sol_types::private::AssertTypeEq::<
8683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8684                    >(_) => {}
8685                }
8686            }
8687            #[automatically_derived]
8688            #[doc(hidden)]
8689            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8690            for UnderlyingRustTuple<'_> {
8691                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8692                    (value._0,)
8693                }
8694            }
8695            #[automatically_derived]
8696            #[doc(hidden)]
8697            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8698            for isPermissionedProverEnabledReturn {
8699                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8700                    Self { _0: tuple.0 }
8701                }
8702            }
8703        }
8704        #[automatically_derived]
8705        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8706            type Parameters<'a> = ();
8707            type Token<'a> = <Self::Parameters<
8708                'a,
8709            > as alloy_sol_types::SolType>::Token<'a>;
8710            type Return = bool;
8711            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8712            type ReturnToken<'a> = <Self::ReturnTuple<
8713                'a,
8714            > as alloy_sol_types::SolType>::Token<'a>;
8715            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8716            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8717            #[inline]
8718            fn new<'a>(
8719                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8720            ) -> Self {
8721                tuple.into()
8722            }
8723            #[inline]
8724            fn tokenize(&self) -> Self::Token<'_> {
8725                ()
8726            }
8727            #[inline]
8728            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8729                (
8730                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8731                        ret,
8732                    ),
8733                )
8734            }
8735            #[inline]
8736            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8737                <Self::ReturnTuple<
8738                    '_,
8739                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8740                    .map(|r| {
8741                        let r: isPermissionedProverEnabledReturn = r.into();
8742                        r._0
8743                    })
8744            }
8745            #[inline]
8746            fn abi_decode_returns_validate(
8747                data: &[u8],
8748            ) -> alloy_sol_types::Result<Self::Return> {
8749                <Self::ReturnTuple<
8750                    '_,
8751                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8752                    .map(|r| {
8753                        let r: isPermissionedProverEnabledReturn = r.into();
8754                        r._0
8755                    })
8756            }
8757        }
8758    };
8759    #[derive(serde::Serialize, serde::Deserialize)]
8760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8761    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8762```solidity
8763function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8764```*/
8765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8766    #[derive(Clone)]
8767    pub struct lagOverEscapeHatchThresholdCall {
8768        #[allow(missing_docs)]
8769        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8770        #[allow(missing_docs)]
8771        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8772    }
8773    #[derive(serde::Serialize, serde::Deserialize)]
8774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8775    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8777    #[derive(Clone)]
8778    pub struct lagOverEscapeHatchThresholdReturn {
8779        #[allow(missing_docs)]
8780        pub _0: bool,
8781    }
8782    #[allow(
8783        non_camel_case_types,
8784        non_snake_case,
8785        clippy::pub_underscore_fields,
8786        clippy::style
8787    )]
8788    const _: () = {
8789        use alloy::sol_types as alloy_sol_types;
8790        {
8791            #[doc(hidden)]
8792            type UnderlyingSolTuple<'a> = (
8793                alloy::sol_types::sol_data::Uint<256>,
8794                alloy::sol_types::sol_data::Uint<256>,
8795            );
8796            #[doc(hidden)]
8797            type UnderlyingRustTuple<'a> = (
8798                alloy::sol_types::private::primitives::aliases::U256,
8799                alloy::sol_types::private::primitives::aliases::U256,
8800            );
8801            #[cfg(test)]
8802            #[allow(dead_code, unreachable_patterns)]
8803            fn _type_assertion(
8804                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8805            ) {
8806                match _t {
8807                    alloy_sol_types::private::AssertTypeEq::<
8808                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8809                    >(_) => {}
8810                }
8811            }
8812            #[automatically_derived]
8813            #[doc(hidden)]
8814            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8815            for UnderlyingRustTuple<'_> {
8816                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8817                    (value.blockNumber, value.blockThreshold)
8818                }
8819            }
8820            #[automatically_derived]
8821            #[doc(hidden)]
8822            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8823            for lagOverEscapeHatchThresholdCall {
8824                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8825                    Self {
8826                        blockNumber: tuple.0,
8827                        blockThreshold: tuple.1,
8828                    }
8829                }
8830            }
8831        }
8832        {
8833            #[doc(hidden)]
8834            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8835            #[doc(hidden)]
8836            type UnderlyingRustTuple<'a> = (bool,);
8837            #[cfg(test)]
8838            #[allow(dead_code, unreachable_patterns)]
8839            fn _type_assertion(
8840                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8841            ) {
8842                match _t {
8843                    alloy_sol_types::private::AssertTypeEq::<
8844                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8845                    >(_) => {}
8846                }
8847            }
8848            #[automatically_derived]
8849            #[doc(hidden)]
8850            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8851            for UnderlyingRustTuple<'_> {
8852                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8853                    (value._0,)
8854                }
8855            }
8856            #[automatically_derived]
8857            #[doc(hidden)]
8858            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8859            for lagOverEscapeHatchThresholdReturn {
8860                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8861                    Self { _0: tuple.0 }
8862                }
8863            }
8864        }
8865        #[automatically_derived]
8866        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8867            type Parameters<'a> = (
8868                alloy::sol_types::sol_data::Uint<256>,
8869                alloy::sol_types::sol_data::Uint<256>,
8870            );
8871            type Token<'a> = <Self::Parameters<
8872                'a,
8873            > as alloy_sol_types::SolType>::Token<'a>;
8874            type Return = bool;
8875            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8876            type ReturnToken<'a> = <Self::ReturnTuple<
8877                'a,
8878            > as alloy_sol_types::SolType>::Token<'a>;
8879            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8880            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8881            #[inline]
8882            fn new<'a>(
8883                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8884            ) -> Self {
8885                tuple.into()
8886            }
8887            #[inline]
8888            fn tokenize(&self) -> Self::Token<'_> {
8889                (
8890                    <alloy::sol_types::sol_data::Uint<
8891                        256,
8892                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8893                    <alloy::sol_types::sol_data::Uint<
8894                        256,
8895                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8896                )
8897            }
8898            #[inline]
8899            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8900                (
8901                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8902                        ret,
8903                    ),
8904                )
8905            }
8906            #[inline]
8907            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8908                <Self::ReturnTuple<
8909                    '_,
8910                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8911                    .map(|r| {
8912                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8913                        r._0
8914                    })
8915            }
8916            #[inline]
8917            fn abi_decode_returns_validate(
8918                data: &[u8],
8919            ) -> alloy_sol_types::Result<Self::Return> {
8920                <Self::ReturnTuple<
8921                    '_,
8922                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8923                    .map(|r| {
8924                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8925                        r._0
8926                    })
8927            }
8928        }
8929    };
8930    #[derive(serde::Serialize, serde::Deserialize)]
8931    #[derive()]
8932    /**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`.
8933```solidity
8934function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8935```*/
8936    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8937    #[derive(Clone)]
8938    pub struct newFinalizedStateCall {
8939        #[allow(missing_docs)]
8940        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8941        #[allow(missing_docs)]
8942        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8943    }
8944    ///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.
8945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8946    #[derive(Clone)]
8947    pub struct newFinalizedStateReturn {}
8948    #[allow(
8949        non_camel_case_types,
8950        non_snake_case,
8951        clippy::pub_underscore_fields,
8952        clippy::style
8953    )]
8954    const _: () = {
8955        use alloy::sol_types as alloy_sol_types;
8956        {
8957            #[doc(hidden)]
8958            type UnderlyingSolTuple<'a> = (
8959                LightClient::LightClientState,
8960                IPlonkVerifier::PlonkProof,
8961            );
8962            #[doc(hidden)]
8963            type UnderlyingRustTuple<'a> = (
8964                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8965                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8966            );
8967            #[cfg(test)]
8968            #[allow(dead_code, unreachable_patterns)]
8969            fn _type_assertion(
8970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8971            ) {
8972                match _t {
8973                    alloy_sol_types::private::AssertTypeEq::<
8974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8975                    >(_) => {}
8976                }
8977            }
8978            #[automatically_derived]
8979            #[doc(hidden)]
8980            impl ::core::convert::From<newFinalizedStateCall>
8981            for UnderlyingRustTuple<'_> {
8982                fn from(value: newFinalizedStateCall) -> Self {
8983                    (value.newState, value.proof)
8984                }
8985            }
8986            #[automatically_derived]
8987            #[doc(hidden)]
8988            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8989            for newFinalizedStateCall {
8990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8991                    Self {
8992                        newState: tuple.0,
8993                        proof: tuple.1,
8994                    }
8995                }
8996            }
8997        }
8998        {
8999            #[doc(hidden)]
9000            type UnderlyingSolTuple<'a> = ();
9001            #[doc(hidden)]
9002            type UnderlyingRustTuple<'a> = ();
9003            #[cfg(test)]
9004            #[allow(dead_code, unreachable_patterns)]
9005            fn _type_assertion(
9006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9007            ) {
9008                match _t {
9009                    alloy_sol_types::private::AssertTypeEq::<
9010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9011                    >(_) => {}
9012                }
9013            }
9014            #[automatically_derived]
9015            #[doc(hidden)]
9016            impl ::core::convert::From<newFinalizedStateReturn>
9017            for UnderlyingRustTuple<'_> {
9018                fn from(value: newFinalizedStateReturn) -> Self {
9019                    ()
9020                }
9021            }
9022            #[automatically_derived]
9023            #[doc(hidden)]
9024            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9025            for newFinalizedStateReturn {
9026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9027                    Self {}
9028                }
9029            }
9030        }
9031        impl newFinalizedStateReturn {
9032            fn _tokenize(
9033                &self,
9034            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9035                ()
9036            }
9037        }
9038        #[automatically_derived]
9039        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9040            type Parameters<'a> = (
9041                LightClient::LightClientState,
9042                IPlonkVerifier::PlonkProof,
9043            );
9044            type Token<'a> = <Self::Parameters<
9045                'a,
9046            > as alloy_sol_types::SolType>::Token<'a>;
9047            type Return = newFinalizedStateReturn;
9048            type ReturnTuple<'a> = ();
9049            type ReturnToken<'a> = <Self::ReturnTuple<
9050                'a,
9051            > as alloy_sol_types::SolType>::Token<'a>;
9052            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))";
9053            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9054            #[inline]
9055            fn new<'a>(
9056                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9057            ) -> Self {
9058                tuple.into()
9059            }
9060            #[inline]
9061            fn tokenize(&self) -> Self::Token<'_> {
9062                (
9063                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9064                        &self.newState,
9065                    ),
9066                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9067                        &self.proof,
9068                    ),
9069                )
9070            }
9071            #[inline]
9072            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9073                newFinalizedStateReturn::_tokenize(ret)
9074            }
9075            #[inline]
9076            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9077                <Self::ReturnTuple<
9078                    '_,
9079                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9080                    .map(Into::into)
9081            }
9082            #[inline]
9083            fn abi_decode_returns_validate(
9084                data: &[u8],
9085            ) -> alloy_sol_types::Result<Self::Return> {
9086                <Self::ReturnTuple<
9087                    '_,
9088                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9089                    .map(Into::into)
9090            }
9091        }
9092    };
9093    #[derive(serde::Serialize, serde::Deserialize)]
9094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9095    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9096```solidity
9097function owner() external view returns (address);
9098```*/
9099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9100    #[derive(Clone)]
9101    pub struct ownerCall;
9102    #[derive(serde::Serialize, serde::Deserialize)]
9103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9104    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9106    #[derive(Clone)]
9107    pub struct ownerReturn {
9108        #[allow(missing_docs)]
9109        pub _0: alloy::sol_types::private::Address,
9110    }
9111    #[allow(
9112        non_camel_case_types,
9113        non_snake_case,
9114        clippy::pub_underscore_fields,
9115        clippy::style
9116    )]
9117    const _: () = {
9118        use alloy::sol_types as alloy_sol_types;
9119        {
9120            #[doc(hidden)]
9121            type UnderlyingSolTuple<'a> = ();
9122            #[doc(hidden)]
9123            type UnderlyingRustTuple<'a> = ();
9124            #[cfg(test)]
9125            #[allow(dead_code, unreachable_patterns)]
9126            fn _type_assertion(
9127                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9128            ) {
9129                match _t {
9130                    alloy_sol_types::private::AssertTypeEq::<
9131                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9132                    >(_) => {}
9133                }
9134            }
9135            #[automatically_derived]
9136            #[doc(hidden)]
9137            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9138                fn from(value: ownerCall) -> Self {
9139                    ()
9140                }
9141            }
9142            #[automatically_derived]
9143            #[doc(hidden)]
9144            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9145                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9146                    Self
9147                }
9148            }
9149        }
9150        {
9151            #[doc(hidden)]
9152            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9153            #[doc(hidden)]
9154            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9155            #[cfg(test)]
9156            #[allow(dead_code, unreachable_patterns)]
9157            fn _type_assertion(
9158                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9159            ) {
9160                match _t {
9161                    alloy_sol_types::private::AssertTypeEq::<
9162                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9163                    >(_) => {}
9164                }
9165            }
9166            #[automatically_derived]
9167            #[doc(hidden)]
9168            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9169                fn from(value: ownerReturn) -> Self {
9170                    (value._0,)
9171                }
9172            }
9173            #[automatically_derived]
9174            #[doc(hidden)]
9175            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9176                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9177                    Self { _0: tuple.0 }
9178                }
9179            }
9180        }
9181        #[automatically_derived]
9182        impl alloy_sol_types::SolCall for ownerCall {
9183            type Parameters<'a> = ();
9184            type Token<'a> = <Self::Parameters<
9185                'a,
9186            > as alloy_sol_types::SolType>::Token<'a>;
9187            type Return = alloy::sol_types::private::Address;
9188            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9189            type ReturnToken<'a> = <Self::ReturnTuple<
9190                'a,
9191            > as alloy_sol_types::SolType>::Token<'a>;
9192            const SIGNATURE: &'static str = "owner()";
9193            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9194            #[inline]
9195            fn new<'a>(
9196                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9197            ) -> Self {
9198                tuple.into()
9199            }
9200            #[inline]
9201            fn tokenize(&self) -> Self::Token<'_> {
9202                ()
9203            }
9204            #[inline]
9205            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9206                (
9207                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9208                        ret,
9209                    ),
9210                )
9211            }
9212            #[inline]
9213            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9214                <Self::ReturnTuple<
9215                    '_,
9216                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9217                    .map(|r| {
9218                        let r: ownerReturn = r.into();
9219                        r._0
9220                    })
9221            }
9222            #[inline]
9223            fn abi_decode_returns_validate(
9224                data: &[u8],
9225            ) -> alloy_sol_types::Result<Self::Return> {
9226                <Self::ReturnTuple<
9227                    '_,
9228                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9229                    .map(|r| {
9230                        let r: ownerReturn = r.into();
9231                        r._0
9232                    })
9233            }
9234        }
9235    };
9236    #[derive(serde::Serialize, serde::Deserialize)]
9237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9238    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9239```solidity
9240function permissionedProver() external view returns (address);
9241```*/
9242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9243    #[derive(Clone)]
9244    pub struct permissionedProverCall;
9245    #[derive(serde::Serialize, serde::Deserialize)]
9246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9247    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9249    #[derive(Clone)]
9250    pub struct permissionedProverReturn {
9251        #[allow(missing_docs)]
9252        pub _0: alloy::sol_types::private::Address,
9253    }
9254    #[allow(
9255        non_camel_case_types,
9256        non_snake_case,
9257        clippy::pub_underscore_fields,
9258        clippy::style
9259    )]
9260    const _: () = {
9261        use alloy::sol_types as alloy_sol_types;
9262        {
9263            #[doc(hidden)]
9264            type UnderlyingSolTuple<'a> = ();
9265            #[doc(hidden)]
9266            type UnderlyingRustTuple<'a> = ();
9267            #[cfg(test)]
9268            #[allow(dead_code, unreachable_patterns)]
9269            fn _type_assertion(
9270                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9271            ) {
9272                match _t {
9273                    alloy_sol_types::private::AssertTypeEq::<
9274                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9275                    >(_) => {}
9276                }
9277            }
9278            #[automatically_derived]
9279            #[doc(hidden)]
9280            impl ::core::convert::From<permissionedProverCall>
9281            for UnderlyingRustTuple<'_> {
9282                fn from(value: permissionedProverCall) -> Self {
9283                    ()
9284                }
9285            }
9286            #[automatically_derived]
9287            #[doc(hidden)]
9288            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9289            for permissionedProverCall {
9290                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9291                    Self
9292                }
9293            }
9294        }
9295        {
9296            #[doc(hidden)]
9297            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9298            #[doc(hidden)]
9299            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9300            #[cfg(test)]
9301            #[allow(dead_code, unreachable_patterns)]
9302            fn _type_assertion(
9303                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9304            ) {
9305                match _t {
9306                    alloy_sol_types::private::AssertTypeEq::<
9307                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9308                    >(_) => {}
9309                }
9310            }
9311            #[automatically_derived]
9312            #[doc(hidden)]
9313            impl ::core::convert::From<permissionedProverReturn>
9314            for UnderlyingRustTuple<'_> {
9315                fn from(value: permissionedProverReturn) -> Self {
9316                    (value._0,)
9317                }
9318            }
9319            #[automatically_derived]
9320            #[doc(hidden)]
9321            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9322            for permissionedProverReturn {
9323                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9324                    Self { _0: tuple.0 }
9325                }
9326            }
9327        }
9328        #[automatically_derived]
9329        impl alloy_sol_types::SolCall for permissionedProverCall {
9330            type Parameters<'a> = ();
9331            type Token<'a> = <Self::Parameters<
9332                'a,
9333            > as alloy_sol_types::SolType>::Token<'a>;
9334            type Return = alloy::sol_types::private::Address;
9335            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9336            type ReturnToken<'a> = <Self::ReturnTuple<
9337                'a,
9338            > as alloy_sol_types::SolType>::Token<'a>;
9339            const SIGNATURE: &'static str = "permissionedProver()";
9340            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9341            #[inline]
9342            fn new<'a>(
9343                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9344            ) -> Self {
9345                tuple.into()
9346            }
9347            #[inline]
9348            fn tokenize(&self) -> Self::Token<'_> {
9349                ()
9350            }
9351            #[inline]
9352            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9353                (
9354                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9355                        ret,
9356                    ),
9357                )
9358            }
9359            #[inline]
9360            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9361                <Self::ReturnTuple<
9362                    '_,
9363                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9364                    .map(|r| {
9365                        let r: permissionedProverReturn = r.into();
9366                        r._0
9367                    })
9368            }
9369            #[inline]
9370            fn abi_decode_returns_validate(
9371                data: &[u8],
9372            ) -> alloy_sol_types::Result<Self::Return> {
9373                <Self::ReturnTuple<
9374                    '_,
9375                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9376                    .map(|r| {
9377                        let r: permissionedProverReturn = r.into();
9378                        r._0
9379                    })
9380            }
9381        }
9382    };
9383    #[derive(serde::Serialize, serde::Deserialize)]
9384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9385    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9386```solidity
9387function proxiableUUID() external view returns (bytes32);
9388```*/
9389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9390    #[derive(Clone)]
9391    pub struct proxiableUUIDCall;
9392    #[derive(serde::Serialize, serde::Deserialize)]
9393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9394    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9396    #[derive(Clone)]
9397    pub struct proxiableUUIDReturn {
9398        #[allow(missing_docs)]
9399        pub _0: alloy::sol_types::private::FixedBytes<32>,
9400    }
9401    #[allow(
9402        non_camel_case_types,
9403        non_snake_case,
9404        clippy::pub_underscore_fields,
9405        clippy::style
9406    )]
9407    const _: () = {
9408        use alloy::sol_types as alloy_sol_types;
9409        {
9410            #[doc(hidden)]
9411            type UnderlyingSolTuple<'a> = ();
9412            #[doc(hidden)]
9413            type UnderlyingRustTuple<'a> = ();
9414            #[cfg(test)]
9415            #[allow(dead_code, unreachable_patterns)]
9416            fn _type_assertion(
9417                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9418            ) {
9419                match _t {
9420                    alloy_sol_types::private::AssertTypeEq::<
9421                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9422                    >(_) => {}
9423                }
9424            }
9425            #[automatically_derived]
9426            #[doc(hidden)]
9427            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9428                fn from(value: proxiableUUIDCall) -> Self {
9429                    ()
9430                }
9431            }
9432            #[automatically_derived]
9433            #[doc(hidden)]
9434            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9435                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9436                    Self
9437                }
9438            }
9439        }
9440        {
9441            #[doc(hidden)]
9442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9443            #[doc(hidden)]
9444            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9445            #[cfg(test)]
9446            #[allow(dead_code, unreachable_patterns)]
9447            fn _type_assertion(
9448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9449            ) {
9450                match _t {
9451                    alloy_sol_types::private::AssertTypeEq::<
9452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9453                    >(_) => {}
9454                }
9455            }
9456            #[automatically_derived]
9457            #[doc(hidden)]
9458            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9459                fn from(value: proxiableUUIDReturn) -> Self {
9460                    (value._0,)
9461                }
9462            }
9463            #[automatically_derived]
9464            #[doc(hidden)]
9465            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9467                    Self { _0: tuple.0 }
9468                }
9469            }
9470        }
9471        #[automatically_derived]
9472        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9473            type Parameters<'a> = ();
9474            type Token<'a> = <Self::Parameters<
9475                'a,
9476            > as alloy_sol_types::SolType>::Token<'a>;
9477            type Return = alloy::sol_types::private::FixedBytes<32>;
9478            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9479            type ReturnToken<'a> = <Self::ReturnTuple<
9480                'a,
9481            > as alloy_sol_types::SolType>::Token<'a>;
9482            const SIGNATURE: &'static str = "proxiableUUID()";
9483            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9484            #[inline]
9485            fn new<'a>(
9486                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9487            ) -> Self {
9488                tuple.into()
9489            }
9490            #[inline]
9491            fn tokenize(&self) -> Self::Token<'_> {
9492                ()
9493            }
9494            #[inline]
9495            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9496                (
9497                    <alloy::sol_types::sol_data::FixedBytes<
9498                        32,
9499                    > as alloy_sol_types::SolType>::tokenize(ret),
9500                )
9501            }
9502            #[inline]
9503            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9504                <Self::ReturnTuple<
9505                    '_,
9506                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9507                    .map(|r| {
9508                        let r: proxiableUUIDReturn = r.into();
9509                        r._0
9510                    })
9511            }
9512            #[inline]
9513            fn abi_decode_returns_validate(
9514                data: &[u8],
9515            ) -> alloy_sol_types::Result<Self::Return> {
9516                <Self::ReturnTuple<
9517                    '_,
9518                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9519                    .map(|r| {
9520                        let r: proxiableUUIDReturn = r.into();
9521                        r._0
9522                    })
9523            }
9524        }
9525    };
9526    #[derive(serde::Serialize, serde::Deserialize)]
9527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9528    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9529```solidity
9530function renounceOwnership() external;
9531```*/
9532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9533    #[derive(Clone)]
9534    pub struct renounceOwnershipCall;
9535    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9536    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9537    #[derive(Clone)]
9538    pub struct renounceOwnershipReturn {}
9539    #[allow(
9540        non_camel_case_types,
9541        non_snake_case,
9542        clippy::pub_underscore_fields,
9543        clippy::style
9544    )]
9545    const _: () = {
9546        use alloy::sol_types as alloy_sol_types;
9547        {
9548            #[doc(hidden)]
9549            type UnderlyingSolTuple<'a> = ();
9550            #[doc(hidden)]
9551            type UnderlyingRustTuple<'a> = ();
9552            #[cfg(test)]
9553            #[allow(dead_code, unreachable_patterns)]
9554            fn _type_assertion(
9555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9556            ) {
9557                match _t {
9558                    alloy_sol_types::private::AssertTypeEq::<
9559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9560                    >(_) => {}
9561                }
9562            }
9563            #[automatically_derived]
9564            #[doc(hidden)]
9565            impl ::core::convert::From<renounceOwnershipCall>
9566            for UnderlyingRustTuple<'_> {
9567                fn from(value: renounceOwnershipCall) -> Self {
9568                    ()
9569                }
9570            }
9571            #[automatically_derived]
9572            #[doc(hidden)]
9573            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9574            for renounceOwnershipCall {
9575                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9576                    Self
9577                }
9578            }
9579        }
9580        {
9581            #[doc(hidden)]
9582            type UnderlyingSolTuple<'a> = ();
9583            #[doc(hidden)]
9584            type UnderlyingRustTuple<'a> = ();
9585            #[cfg(test)]
9586            #[allow(dead_code, unreachable_patterns)]
9587            fn _type_assertion(
9588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9589            ) {
9590                match _t {
9591                    alloy_sol_types::private::AssertTypeEq::<
9592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9593                    >(_) => {}
9594                }
9595            }
9596            #[automatically_derived]
9597            #[doc(hidden)]
9598            impl ::core::convert::From<renounceOwnershipReturn>
9599            for UnderlyingRustTuple<'_> {
9600                fn from(value: renounceOwnershipReturn) -> Self {
9601                    ()
9602                }
9603            }
9604            #[automatically_derived]
9605            #[doc(hidden)]
9606            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9607            for renounceOwnershipReturn {
9608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9609                    Self {}
9610                }
9611            }
9612        }
9613        impl renounceOwnershipReturn {
9614            fn _tokenize(
9615                &self,
9616            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9617                ()
9618            }
9619        }
9620        #[automatically_derived]
9621        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9622            type Parameters<'a> = ();
9623            type Token<'a> = <Self::Parameters<
9624                'a,
9625            > as alloy_sol_types::SolType>::Token<'a>;
9626            type Return = renounceOwnershipReturn;
9627            type ReturnTuple<'a> = ();
9628            type ReturnToken<'a> = <Self::ReturnTuple<
9629                'a,
9630            > as alloy_sol_types::SolType>::Token<'a>;
9631            const SIGNATURE: &'static str = "renounceOwnership()";
9632            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9633            #[inline]
9634            fn new<'a>(
9635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9636            ) -> Self {
9637                tuple.into()
9638            }
9639            #[inline]
9640            fn tokenize(&self) -> Self::Token<'_> {
9641                ()
9642            }
9643            #[inline]
9644            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9645                renounceOwnershipReturn::_tokenize(ret)
9646            }
9647            #[inline]
9648            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9649                <Self::ReturnTuple<
9650                    '_,
9651                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9652                    .map(Into::into)
9653            }
9654            #[inline]
9655            fn abi_decode_returns_validate(
9656                data: &[u8],
9657            ) -> alloy_sol_types::Result<Self::Return> {
9658                <Self::ReturnTuple<
9659                    '_,
9660                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9661                    .map(Into::into)
9662            }
9663        }
9664    };
9665    #[derive(serde::Serialize, serde::Deserialize)]
9666    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9667    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9668```solidity
9669function setPermissionedProver(address prover) external;
9670```*/
9671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9672    #[derive(Clone)]
9673    pub struct setPermissionedProverCall {
9674        #[allow(missing_docs)]
9675        pub prover: alloy::sol_types::private::Address,
9676    }
9677    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9678    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9679    #[derive(Clone)]
9680    pub struct setPermissionedProverReturn {}
9681    #[allow(
9682        non_camel_case_types,
9683        non_snake_case,
9684        clippy::pub_underscore_fields,
9685        clippy::style
9686    )]
9687    const _: () = {
9688        use alloy::sol_types as alloy_sol_types;
9689        {
9690            #[doc(hidden)]
9691            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9692            #[doc(hidden)]
9693            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9694            #[cfg(test)]
9695            #[allow(dead_code, unreachable_patterns)]
9696            fn _type_assertion(
9697                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9698            ) {
9699                match _t {
9700                    alloy_sol_types::private::AssertTypeEq::<
9701                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9702                    >(_) => {}
9703                }
9704            }
9705            #[automatically_derived]
9706            #[doc(hidden)]
9707            impl ::core::convert::From<setPermissionedProverCall>
9708            for UnderlyingRustTuple<'_> {
9709                fn from(value: setPermissionedProverCall) -> Self {
9710                    (value.prover,)
9711                }
9712            }
9713            #[automatically_derived]
9714            #[doc(hidden)]
9715            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9716            for setPermissionedProverCall {
9717                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9718                    Self { prover: tuple.0 }
9719                }
9720            }
9721        }
9722        {
9723            #[doc(hidden)]
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<setPermissionedProverReturn>
9741            for UnderlyingRustTuple<'_> {
9742                fn from(value: setPermissionedProverReturn) -> Self {
9743                    ()
9744                }
9745            }
9746            #[automatically_derived]
9747            #[doc(hidden)]
9748            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9749            for setPermissionedProverReturn {
9750                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9751                    Self {}
9752                }
9753            }
9754        }
9755        impl setPermissionedProverReturn {
9756            fn _tokenize(
9757                &self,
9758            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9759                '_,
9760            > {
9761                ()
9762            }
9763        }
9764        #[automatically_derived]
9765        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9766            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9767            type Token<'a> = <Self::Parameters<
9768                'a,
9769            > as alloy_sol_types::SolType>::Token<'a>;
9770            type Return = setPermissionedProverReturn;
9771            type ReturnTuple<'a> = ();
9772            type ReturnToken<'a> = <Self::ReturnTuple<
9773                'a,
9774            > as alloy_sol_types::SolType>::Token<'a>;
9775            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9776            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9777            #[inline]
9778            fn new<'a>(
9779                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9780            ) -> Self {
9781                tuple.into()
9782            }
9783            #[inline]
9784            fn tokenize(&self) -> Self::Token<'_> {
9785                (
9786                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9787                        &self.prover,
9788                    ),
9789                )
9790            }
9791            #[inline]
9792            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9793                setPermissionedProverReturn::_tokenize(ret)
9794            }
9795            #[inline]
9796            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9797                <Self::ReturnTuple<
9798                    '_,
9799                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9800                    .map(Into::into)
9801            }
9802            #[inline]
9803            fn abi_decode_returns_validate(
9804                data: &[u8],
9805            ) -> alloy_sol_types::Result<Self::Return> {
9806                <Self::ReturnTuple<
9807                    '_,
9808                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9809                    .map(Into::into)
9810            }
9811        }
9812    };
9813    #[derive(serde::Serialize, serde::Deserialize)]
9814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9815    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9816```solidity
9817function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9818```*/
9819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9820    #[derive(Clone)]
9821    pub struct setstateHistoryRetentionPeriodCall {
9822        #[allow(missing_docs)]
9823        pub historySeconds: u32,
9824    }
9825    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9827    #[derive(Clone)]
9828    pub struct setstateHistoryRetentionPeriodReturn {}
9829    #[allow(
9830        non_camel_case_types,
9831        non_snake_case,
9832        clippy::pub_underscore_fields,
9833        clippy::style
9834    )]
9835    const _: () = {
9836        use alloy::sol_types as alloy_sol_types;
9837        {
9838            #[doc(hidden)]
9839            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9840            #[doc(hidden)]
9841            type UnderlyingRustTuple<'a> = (u32,);
9842            #[cfg(test)]
9843            #[allow(dead_code, unreachable_patterns)]
9844            fn _type_assertion(
9845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9846            ) {
9847                match _t {
9848                    alloy_sol_types::private::AssertTypeEq::<
9849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9850                    >(_) => {}
9851                }
9852            }
9853            #[automatically_derived]
9854            #[doc(hidden)]
9855            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9856            for UnderlyingRustTuple<'_> {
9857                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9858                    (value.historySeconds,)
9859                }
9860            }
9861            #[automatically_derived]
9862            #[doc(hidden)]
9863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9864            for setstateHistoryRetentionPeriodCall {
9865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9866                    Self { historySeconds: tuple.0 }
9867                }
9868            }
9869        }
9870        {
9871            #[doc(hidden)]
9872            type UnderlyingSolTuple<'a> = ();
9873            #[doc(hidden)]
9874            type UnderlyingRustTuple<'a> = ();
9875            #[cfg(test)]
9876            #[allow(dead_code, unreachable_patterns)]
9877            fn _type_assertion(
9878                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9879            ) {
9880                match _t {
9881                    alloy_sol_types::private::AssertTypeEq::<
9882                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9883                    >(_) => {}
9884                }
9885            }
9886            #[automatically_derived]
9887            #[doc(hidden)]
9888            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9889            for UnderlyingRustTuple<'_> {
9890                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9891                    ()
9892                }
9893            }
9894            #[automatically_derived]
9895            #[doc(hidden)]
9896            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9897            for setstateHistoryRetentionPeriodReturn {
9898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9899                    Self {}
9900                }
9901            }
9902        }
9903        impl setstateHistoryRetentionPeriodReturn {
9904            fn _tokenize(
9905                &self,
9906            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
9907                '_,
9908            > {
9909                ()
9910            }
9911        }
9912        #[automatically_derived]
9913        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9914            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9915            type Token<'a> = <Self::Parameters<
9916                'a,
9917            > as alloy_sol_types::SolType>::Token<'a>;
9918            type Return = setstateHistoryRetentionPeriodReturn;
9919            type ReturnTuple<'a> = ();
9920            type ReturnToken<'a> = <Self::ReturnTuple<
9921                'a,
9922            > as alloy_sol_types::SolType>::Token<'a>;
9923            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9924            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9925            #[inline]
9926            fn new<'a>(
9927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9928            ) -> Self {
9929                tuple.into()
9930            }
9931            #[inline]
9932            fn tokenize(&self) -> Self::Token<'_> {
9933                (
9934                    <alloy::sol_types::sol_data::Uint<
9935                        32,
9936                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9937                )
9938            }
9939            #[inline]
9940            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9941                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
9942            }
9943            #[inline]
9944            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9945                <Self::ReturnTuple<
9946                    '_,
9947                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9948                    .map(Into::into)
9949            }
9950            #[inline]
9951            fn abi_decode_returns_validate(
9952                data: &[u8],
9953            ) -> alloy_sol_types::Result<Self::Return> {
9954                <Self::ReturnTuple<
9955                    '_,
9956                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9957                    .map(Into::into)
9958            }
9959        }
9960    };
9961    #[derive(serde::Serialize, serde::Deserialize)]
9962    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9963    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9964```solidity
9965function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9966```*/
9967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9968    #[derive(Clone)]
9969    pub struct stateHistoryCommitmentsCall(
9970        pub alloy::sol_types::private::primitives::aliases::U256,
9971    );
9972    #[derive(serde::Serialize, serde::Deserialize)]
9973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9974    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9976    #[derive(Clone)]
9977    pub struct stateHistoryCommitmentsReturn {
9978        #[allow(missing_docs)]
9979        pub l1BlockHeight: u64,
9980        #[allow(missing_docs)]
9981        pub l1BlockTimestamp: u64,
9982        #[allow(missing_docs)]
9983        pub hotShotBlockHeight: u64,
9984        #[allow(missing_docs)]
9985        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9986    }
9987    #[allow(
9988        non_camel_case_types,
9989        non_snake_case,
9990        clippy::pub_underscore_fields,
9991        clippy::style
9992    )]
9993    const _: () = {
9994        use alloy::sol_types as alloy_sol_types;
9995        {
9996            #[doc(hidden)]
9997            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9998            #[doc(hidden)]
9999            type UnderlyingRustTuple<'a> = (
10000                alloy::sol_types::private::primitives::aliases::U256,
10001            );
10002            #[cfg(test)]
10003            #[allow(dead_code, unreachable_patterns)]
10004            fn _type_assertion(
10005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10006            ) {
10007                match _t {
10008                    alloy_sol_types::private::AssertTypeEq::<
10009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10010                    >(_) => {}
10011                }
10012            }
10013            #[automatically_derived]
10014            #[doc(hidden)]
10015            impl ::core::convert::From<stateHistoryCommitmentsCall>
10016            for UnderlyingRustTuple<'_> {
10017                fn from(value: stateHistoryCommitmentsCall) -> Self {
10018                    (value.0,)
10019                }
10020            }
10021            #[automatically_derived]
10022            #[doc(hidden)]
10023            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10024            for stateHistoryCommitmentsCall {
10025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10026                    Self(tuple.0)
10027                }
10028            }
10029        }
10030        {
10031            #[doc(hidden)]
10032            type UnderlyingSolTuple<'a> = (
10033                alloy::sol_types::sol_data::Uint<64>,
10034                alloy::sol_types::sol_data::Uint<64>,
10035                alloy::sol_types::sol_data::Uint<64>,
10036                BN254::ScalarField,
10037            );
10038            #[doc(hidden)]
10039            type UnderlyingRustTuple<'a> = (
10040                u64,
10041                u64,
10042                u64,
10043                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10044            );
10045            #[cfg(test)]
10046            #[allow(dead_code, unreachable_patterns)]
10047            fn _type_assertion(
10048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10049            ) {
10050                match _t {
10051                    alloy_sol_types::private::AssertTypeEq::<
10052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10053                    >(_) => {}
10054                }
10055            }
10056            #[automatically_derived]
10057            #[doc(hidden)]
10058            impl ::core::convert::From<stateHistoryCommitmentsReturn>
10059            for UnderlyingRustTuple<'_> {
10060                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10061                    (
10062                        value.l1BlockHeight,
10063                        value.l1BlockTimestamp,
10064                        value.hotShotBlockHeight,
10065                        value.hotShotBlockCommRoot,
10066                    )
10067                }
10068            }
10069            #[automatically_derived]
10070            #[doc(hidden)]
10071            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10072            for stateHistoryCommitmentsReturn {
10073                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10074                    Self {
10075                        l1BlockHeight: tuple.0,
10076                        l1BlockTimestamp: tuple.1,
10077                        hotShotBlockHeight: tuple.2,
10078                        hotShotBlockCommRoot: tuple.3,
10079                    }
10080                }
10081            }
10082        }
10083        impl stateHistoryCommitmentsReturn {
10084            fn _tokenize(
10085                &self,
10086            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
10087                '_,
10088            > {
10089                (
10090                    <alloy::sol_types::sol_data::Uint<
10091                        64,
10092                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
10093                    <alloy::sol_types::sol_data::Uint<
10094                        64,
10095                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
10096                    <alloy::sol_types::sol_data::Uint<
10097                        64,
10098                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10099                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10100                        &self.hotShotBlockCommRoot,
10101                    ),
10102                )
10103            }
10104        }
10105        #[automatically_derived]
10106        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10107            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10108            type Token<'a> = <Self::Parameters<
10109                'a,
10110            > as alloy_sol_types::SolType>::Token<'a>;
10111            type Return = stateHistoryCommitmentsReturn;
10112            type ReturnTuple<'a> = (
10113                alloy::sol_types::sol_data::Uint<64>,
10114                alloy::sol_types::sol_data::Uint<64>,
10115                alloy::sol_types::sol_data::Uint<64>,
10116                BN254::ScalarField,
10117            );
10118            type ReturnToken<'a> = <Self::ReturnTuple<
10119                'a,
10120            > as alloy_sol_types::SolType>::Token<'a>;
10121            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10122            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10123            #[inline]
10124            fn new<'a>(
10125                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10126            ) -> Self {
10127                tuple.into()
10128            }
10129            #[inline]
10130            fn tokenize(&self) -> Self::Token<'_> {
10131                (
10132                    <alloy::sol_types::sol_data::Uint<
10133                        256,
10134                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10135                )
10136            }
10137            #[inline]
10138            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10139                stateHistoryCommitmentsReturn::_tokenize(ret)
10140            }
10141            #[inline]
10142            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10143                <Self::ReturnTuple<
10144                    '_,
10145                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10146                    .map(Into::into)
10147            }
10148            #[inline]
10149            fn abi_decode_returns_validate(
10150                data: &[u8],
10151            ) -> alloy_sol_types::Result<Self::Return> {
10152                <Self::ReturnTuple<
10153                    '_,
10154                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10155                    .map(Into::into)
10156            }
10157        }
10158    };
10159    #[derive(serde::Serialize, serde::Deserialize)]
10160    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10161    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10162```solidity
10163function stateHistoryFirstIndex() external view returns (uint64);
10164```*/
10165    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10166    #[derive(Clone)]
10167    pub struct stateHistoryFirstIndexCall;
10168    #[derive(serde::Serialize, serde::Deserialize)]
10169    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10170    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10172    #[derive(Clone)]
10173    pub struct stateHistoryFirstIndexReturn {
10174        #[allow(missing_docs)]
10175        pub _0: u64,
10176    }
10177    #[allow(
10178        non_camel_case_types,
10179        non_snake_case,
10180        clippy::pub_underscore_fields,
10181        clippy::style
10182    )]
10183    const _: () = {
10184        use alloy::sol_types as alloy_sol_types;
10185        {
10186            #[doc(hidden)]
10187            type UnderlyingSolTuple<'a> = ();
10188            #[doc(hidden)]
10189            type UnderlyingRustTuple<'a> = ();
10190            #[cfg(test)]
10191            #[allow(dead_code, unreachable_patterns)]
10192            fn _type_assertion(
10193                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10194            ) {
10195                match _t {
10196                    alloy_sol_types::private::AssertTypeEq::<
10197                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10198                    >(_) => {}
10199                }
10200            }
10201            #[automatically_derived]
10202            #[doc(hidden)]
10203            impl ::core::convert::From<stateHistoryFirstIndexCall>
10204            for UnderlyingRustTuple<'_> {
10205                fn from(value: stateHistoryFirstIndexCall) -> Self {
10206                    ()
10207                }
10208            }
10209            #[automatically_derived]
10210            #[doc(hidden)]
10211            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10212            for stateHistoryFirstIndexCall {
10213                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10214                    Self
10215                }
10216            }
10217        }
10218        {
10219            #[doc(hidden)]
10220            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10221            #[doc(hidden)]
10222            type UnderlyingRustTuple<'a> = (u64,);
10223            #[cfg(test)]
10224            #[allow(dead_code, unreachable_patterns)]
10225            fn _type_assertion(
10226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10227            ) {
10228                match _t {
10229                    alloy_sol_types::private::AssertTypeEq::<
10230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10231                    >(_) => {}
10232                }
10233            }
10234            #[automatically_derived]
10235            #[doc(hidden)]
10236            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10237            for UnderlyingRustTuple<'_> {
10238                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10239                    (value._0,)
10240                }
10241            }
10242            #[automatically_derived]
10243            #[doc(hidden)]
10244            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10245            for stateHistoryFirstIndexReturn {
10246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10247                    Self { _0: tuple.0 }
10248                }
10249            }
10250        }
10251        #[automatically_derived]
10252        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10253            type Parameters<'a> = ();
10254            type Token<'a> = <Self::Parameters<
10255                'a,
10256            > as alloy_sol_types::SolType>::Token<'a>;
10257            type Return = u64;
10258            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10259            type ReturnToken<'a> = <Self::ReturnTuple<
10260                'a,
10261            > as alloy_sol_types::SolType>::Token<'a>;
10262            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10263            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10264            #[inline]
10265            fn new<'a>(
10266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10267            ) -> Self {
10268                tuple.into()
10269            }
10270            #[inline]
10271            fn tokenize(&self) -> Self::Token<'_> {
10272                ()
10273            }
10274            #[inline]
10275            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10276                (
10277                    <alloy::sol_types::sol_data::Uint<
10278                        64,
10279                    > as alloy_sol_types::SolType>::tokenize(ret),
10280                )
10281            }
10282            #[inline]
10283            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10284                <Self::ReturnTuple<
10285                    '_,
10286                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10287                    .map(|r| {
10288                        let r: stateHistoryFirstIndexReturn = r.into();
10289                        r._0
10290                    })
10291            }
10292            #[inline]
10293            fn abi_decode_returns_validate(
10294                data: &[u8],
10295            ) -> alloy_sol_types::Result<Self::Return> {
10296                <Self::ReturnTuple<
10297                    '_,
10298                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10299                    .map(|r| {
10300                        let r: stateHistoryFirstIndexReturn = r.into();
10301                        r._0
10302                    })
10303            }
10304        }
10305    };
10306    #[derive(serde::Serialize, serde::Deserialize)]
10307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10308    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10309```solidity
10310function stateHistoryRetentionPeriod() external view returns (uint32);
10311```*/
10312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10313    #[derive(Clone)]
10314    pub struct stateHistoryRetentionPeriodCall;
10315    #[derive(serde::Serialize, serde::Deserialize)]
10316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10317    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10319    #[derive(Clone)]
10320    pub struct stateHistoryRetentionPeriodReturn {
10321        #[allow(missing_docs)]
10322        pub _0: u32,
10323    }
10324    #[allow(
10325        non_camel_case_types,
10326        non_snake_case,
10327        clippy::pub_underscore_fields,
10328        clippy::style
10329    )]
10330    const _: () = {
10331        use alloy::sol_types as alloy_sol_types;
10332        {
10333            #[doc(hidden)]
10334            type UnderlyingSolTuple<'a> = ();
10335            #[doc(hidden)]
10336            type UnderlyingRustTuple<'a> = ();
10337            #[cfg(test)]
10338            #[allow(dead_code, unreachable_patterns)]
10339            fn _type_assertion(
10340                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10341            ) {
10342                match _t {
10343                    alloy_sol_types::private::AssertTypeEq::<
10344                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10345                    >(_) => {}
10346                }
10347            }
10348            #[automatically_derived]
10349            #[doc(hidden)]
10350            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10351            for UnderlyingRustTuple<'_> {
10352                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10353                    ()
10354                }
10355            }
10356            #[automatically_derived]
10357            #[doc(hidden)]
10358            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10359            for stateHistoryRetentionPeriodCall {
10360                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10361                    Self
10362                }
10363            }
10364        }
10365        {
10366            #[doc(hidden)]
10367            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10368            #[doc(hidden)]
10369            type UnderlyingRustTuple<'a> = (u32,);
10370            #[cfg(test)]
10371            #[allow(dead_code, unreachable_patterns)]
10372            fn _type_assertion(
10373                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10374            ) {
10375                match _t {
10376                    alloy_sol_types::private::AssertTypeEq::<
10377                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10378                    >(_) => {}
10379                }
10380            }
10381            #[automatically_derived]
10382            #[doc(hidden)]
10383            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10384            for UnderlyingRustTuple<'_> {
10385                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10386                    (value._0,)
10387                }
10388            }
10389            #[automatically_derived]
10390            #[doc(hidden)]
10391            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10392            for stateHistoryRetentionPeriodReturn {
10393                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10394                    Self { _0: tuple.0 }
10395                }
10396            }
10397        }
10398        #[automatically_derived]
10399        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10400            type Parameters<'a> = ();
10401            type Token<'a> = <Self::Parameters<
10402                'a,
10403            > as alloy_sol_types::SolType>::Token<'a>;
10404            type Return = u32;
10405            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10406            type ReturnToken<'a> = <Self::ReturnTuple<
10407                'a,
10408            > as alloy_sol_types::SolType>::Token<'a>;
10409            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10410            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10411            #[inline]
10412            fn new<'a>(
10413                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10414            ) -> Self {
10415                tuple.into()
10416            }
10417            #[inline]
10418            fn tokenize(&self) -> Self::Token<'_> {
10419                ()
10420            }
10421            #[inline]
10422            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10423                (
10424                    <alloy::sol_types::sol_data::Uint<
10425                        32,
10426                    > as alloy_sol_types::SolType>::tokenize(ret),
10427                )
10428            }
10429            #[inline]
10430            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10431                <Self::ReturnTuple<
10432                    '_,
10433                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10434                    .map(|r| {
10435                        let r: stateHistoryRetentionPeriodReturn = r.into();
10436                        r._0
10437                    })
10438            }
10439            #[inline]
10440            fn abi_decode_returns_validate(
10441                data: &[u8],
10442            ) -> alloy_sol_types::Result<Self::Return> {
10443                <Self::ReturnTuple<
10444                    '_,
10445                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10446                    .map(|r| {
10447                        let r: stateHistoryRetentionPeriodReturn = r.into();
10448                        r._0
10449                    })
10450            }
10451        }
10452    };
10453    #[derive(serde::Serialize, serde::Deserialize)]
10454    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10455    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10456```solidity
10457function transferOwnership(address newOwner) external;
10458```*/
10459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10460    #[derive(Clone)]
10461    pub struct transferOwnershipCall {
10462        #[allow(missing_docs)]
10463        pub newOwner: alloy::sol_types::private::Address,
10464    }
10465    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10466    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10467    #[derive(Clone)]
10468    pub struct transferOwnershipReturn {}
10469    #[allow(
10470        non_camel_case_types,
10471        non_snake_case,
10472        clippy::pub_underscore_fields,
10473        clippy::style
10474    )]
10475    const _: () = {
10476        use alloy::sol_types as alloy_sol_types;
10477        {
10478            #[doc(hidden)]
10479            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10480            #[doc(hidden)]
10481            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10482            #[cfg(test)]
10483            #[allow(dead_code, unreachable_patterns)]
10484            fn _type_assertion(
10485                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10486            ) {
10487                match _t {
10488                    alloy_sol_types::private::AssertTypeEq::<
10489                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10490                    >(_) => {}
10491                }
10492            }
10493            #[automatically_derived]
10494            #[doc(hidden)]
10495            impl ::core::convert::From<transferOwnershipCall>
10496            for UnderlyingRustTuple<'_> {
10497                fn from(value: transferOwnershipCall) -> Self {
10498                    (value.newOwner,)
10499                }
10500            }
10501            #[automatically_derived]
10502            #[doc(hidden)]
10503            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10504            for transferOwnershipCall {
10505                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10506                    Self { newOwner: tuple.0 }
10507                }
10508            }
10509        }
10510        {
10511            #[doc(hidden)]
10512            type UnderlyingSolTuple<'a> = ();
10513            #[doc(hidden)]
10514            type UnderlyingRustTuple<'a> = ();
10515            #[cfg(test)]
10516            #[allow(dead_code, unreachable_patterns)]
10517            fn _type_assertion(
10518                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10519            ) {
10520                match _t {
10521                    alloy_sol_types::private::AssertTypeEq::<
10522                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10523                    >(_) => {}
10524                }
10525            }
10526            #[automatically_derived]
10527            #[doc(hidden)]
10528            impl ::core::convert::From<transferOwnershipReturn>
10529            for UnderlyingRustTuple<'_> {
10530                fn from(value: transferOwnershipReturn) -> Self {
10531                    ()
10532                }
10533            }
10534            #[automatically_derived]
10535            #[doc(hidden)]
10536            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10537            for transferOwnershipReturn {
10538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10539                    Self {}
10540                }
10541            }
10542        }
10543        impl transferOwnershipReturn {
10544            fn _tokenize(
10545                &self,
10546            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10547                ()
10548            }
10549        }
10550        #[automatically_derived]
10551        impl alloy_sol_types::SolCall for transferOwnershipCall {
10552            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10553            type Token<'a> = <Self::Parameters<
10554                'a,
10555            > as alloy_sol_types::SolType>::Token<'a>;
10556            type Return = transferOwnershipReturn;
10557            type ReturnTuple<'a> = ();
10558            type ReturnToken<'a> = <Self::ReturnTuple<
10559                'a,
10560            > as alloy_sol_types::SolType>::Token<'a>;
10561            const SIGNATURE: &'static str = "transferOwnership(address)";
10562            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10563            #[inline]
10564            fn new<'a>(
10565                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10566            ) -> Self {
10567                tuple.into()
10568            }
10569            #[inline]
10570            fn tokenize(&self) -> Self::Token<'_> {
10571                (
10572                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10573                        &self.newOwner,
10574                    ),
10575                )
10576            }
10577            #[inline]
10578            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10579                transferOwnershipReturn::_tokenize(ret)
10580            }
10581            #[inline]
10582            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10583                <Self::ReturnTuple<
10584                    '_,
10585                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10586                    .map(Into::into)
10587            }
10588            #[inline]
10589            fn abi_decode_returns_validate(
10590                data: &[u8],
10591            ) -> alloy_sol_types::Result<Self::Return> {
10592                <Self::ReturnTuple<
10593                    '_,
10594                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10595                    .map(Into::into)
10596            }
10597        }
10598    };
10599    #[derive(serde::Serialize, serde::Deserialize)]
10600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10601    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10602```solidity
10603function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10604```*/
10605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10606    #[derive(Clone)]
10607    pub struct upgradeToAndCallCall {
10608        #[allow(missing_docs)]
10609        pub newImplementation: alloy::sol_types::private::Address,
10610        #[allow(missing_docs)]
10611        pub data: alloy::sol_types::private::Bytes,
10612    }
10613    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10615    #[derive(Clone)]
10616    pub struct upgradeToAndCallReturn {}
10617    #[allow(
10618        non_camel_case_types,
10619        non_snake_case,
10620        clippy::pub_underscore_fields,
10621        clippy::style
10622    )]
10623    const _: () = {
10624        use alloy::sol_types as alloy_sol_types;
10625        {
10626            #[doc(hidden)]
10627            type UnderlyingSolTuple<'a> = (
10628                alloy::sol_types::sol_data::Address,
10629                alloy::sol_types::sol_data::Bytes,
10630            );
10631            #[doc(hidden)]
10632            type UnderlyingRustTuple<'a> = (
10633                alloy::sol_types::private::Address,
10634                alloy::sol_types::private::Bytes,
10635            );
10636            #[cfg(test)]
10637            #[allow(dead_code, unreachable_patterns)]
10638            fn _type_assertion(
10639                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10640            ) {
10641                match _t {
10642                    alloy_sol_types::private::AssertTypeEq::<
10643                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10644                    >(_) => {}
10645                }
10646            }
10647            #[automatically_derived]
10648            #[doc(hidden)]
10649            impl ::core::convert::From<upgradeToAndCallCall>
10650            for UnderlyingRustTuple<'_> {
10651                fn from(value: upgradeToAndCallCall) -> Self {
10652                    (value.newImplementation, value.data)
10653                }
10654            }
10655            #[automatically_derived]
10656            #[doc(hidden)]
10657            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10658            for upgradeToAndCallCall {
10659                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10660                    Self {
10661                        newImplementation: tuple.0,
10662                        data: tuple.1,
10663                    }
10664                }
10665            }
10666        }
10667        {
10668            #[doc(hidden)]
10669            type UnderlyingSolTuple<'a> = ();
10670            #[doc(hidden)]
10671            type UnderlyingRustTuple<'a> = ();
10672            #[cfg(test)]
10673            #[allow(dead_code, unreachable_patterns)]
10674            fn _type_assertion(
10675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10676            ) {
10677                match _t {
10678                    alloy_sol_types::private::AssertTypeEq::<
10679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10680                    >(_) => {}
10681                }
10682            }
10683            #[automatically_derived]
10684            #[doc(hidden)]
10685            impl ::core::convert::From<upgradeToAndCallReturn>
10686            for UnderlyingRustTuple<'_> {
10687                fn from(value: upgradeToAndCallReturn) -> Self {
10688                    ()
10689                }
10690            }
10691            #[automatically_derived]
10692            #[doc(hidden)]
10693            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10694            for upgradeToAndCallReturn {
10695                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10696                    Self {}
10697                }
10698            }
10699        }
10700        impl upgradeToAndCallReturn {
10701            fn _tokenize(
10702                &self,
10703            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10704                ()
10705            }
10706        }
10707        #[automatically_derived]
10708        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10709            type Parameters<'a> = (
10710                alloy::sol_types::sol_data::Address,
10711                alloy::sol_types::sol_data::Bytes,
10712            );
10713            type Token<'a> = <Self::Parameters<
10714                'a,
10715            > as alloy_sol_types::SolType>::Token<'a>;
10716            type Return = upgradeToAndCallReturn;
10717            type ReturnTuple<'a> = ();
10718            type ReturnToken<'a> = <Self::ReturnTuple<
10719                'a,
10720            > as alloy_sol_types::SolType>::Token<'a>;
10721            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10722            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10723            #[inline]
10724            fn new<'a>(
10725                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10726            ) -> Self {
10727                tuple.into()
10728            }
10729            #[inline]
10730            fn tokenize(&self) -> Self::Token<'_> {
10731                (
10732                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10733                        &self.newImplementation,
10734                    ),
10735                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10736                        &self.data,
10737                    ),
10738                )
10739            }
10740            #[inline]
10741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10742                upgradeToAndCallReturn::_tokenize(ret)
10743            }
10744            #[inline]
10745            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10746                <Self::ReturnTuple<
10747                    '_,
10748                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10749                    .map(Into::into)
10750            }
10751            #[inline]
10752            fn abi_decode_returns_validate(
10753                data: &[u8],
10754            ) -> alloy_sol_types::Result<Self::Return> {
10755                <Self::ReturnTuple<
10756                    '_,
10757                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10758                    .map(Into::into)
10759            }
10760        }
10761    };
10762    ///Container for all the [`LightClientArbitrum`](self) function calls.
10763    #[derive(serde::Serialize, serde::Deserialize)]
10764    #[derive()]
10765    pub enum LightClientArbitrumCalls {
10766        #[allow(missing_docs)]
10767        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10768        #[allow(missing_docs)]
10769        _getVk(_getVkCall),
10770        #[allow(missing_docs)]
10771        currentBlockNumber(currentBlockNumberCall),
10772        #[allow(missing_docs)]
10773        disablePermissionedProverMode(disablePermissionedProverModeCall),
10774        #[allow(missing_docs)]
10775        finalizedState(finalizedStateCall),
10776        #[allow(missing_docs)]
10777        genesisStakeTableState(genesisStakeTableStateCall),
10778        #[allow(missing_docs)]
10779        genesisState(genesisStateCall),
10780        #[allow(missing_docs)]
10781        getHotShotCommitment(getHotShotCommitmentCall),
10782        #[allow(missing_docs)]
10783        getStateHistoryCount(getStateHistoryCountCall),
10784        #[allow(missing_docs)]
10785        getVersion(getVersionCall),
10786        #[allow(missing_docs)]
10787        initialize(initializeCall),
10788        #[allow(missing_docs)]
10789        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10790        #[allow(missing_docs)]
10791        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10792        #[allow(missing_docs)]
10793        newFinalizedState(newFinalizedStateCall),
10794        #[allow(missing_docs)]
10795        owner(ownerCall),
10796        #[allow(missing_docs)]
10797        permissionedProver(permissionedProverCall),
10798        #[allow(missing_docs)]
10799        proxiableUUID(proxiableUUIDCall),
10800        #[allow(missing_docs)]
10801        renounceOwnership(renounceOwnershipCall),
10802        #[allow(missing_docs)]
10803        setPermissionedProver(setPermissionedProverCall),
10804        #[allow(missing_docs)]
10805        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10806        #[allow(missing_docs)]
10807        stateHistoryCommitments(stateHistoryCommitmentsCall),
10808        #[allow(missing_docs)]
10809        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10810        #[allow(missing_docs)]
10811        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10812        #[allow(missing_docs)]
10813        transferOwnership(transferOwnershipCall),
10814        #[allow(missing_docs)]
10815        upgradeToAndCall(upgradeToAndCallCall),
10816    }
10817    #[automatically_derived]
10818    impl LightClientArbitrumCalls {
10819        /// All the selectors of this enum.
10820        ///
10821        /// Note that the selectors might not be in the same order as the variants.
10822        /// No guarantees are made about the order of the selectors.
10823        ///
10824        /// Prefer using `SolInterface` methods instead.
10825        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10826            [1u8, 63u8, 165u8, 252u8],
10827            [2u8, 181u8, 146u8, 243u8],
10828            [13u8, 142u8, 110u8, 44u8],
10829            [18u8, 23u8, 60u8, 44u8],
10830            [32u8, 99u8, 212u8, 247u8],
10831            [47u8, 121u8, 136u8, 157u8],
10832            [49u8, 61u8, 247u8, 177u8],
10833            [55u8, 142u8, 194u8, 59u8],
10834            [66u8, 109u8, 49u8, 148u8],
10835            [79u8, 30u8, 242u8, 134u8],
10836            [82u8, 209u8, 144u8, 45u8],
10837            [105u8, 204u8, 106u8, 4u8],
10838            [113u8, 80u8, 24u8, 166u8],
10839            [130u8, 110u8, 65u8, 252u8],
10840            [133u8, 132u8, 210u8, 63u8],
10841            [141u8, 165u8, 203u8, 91u8],
10842            [150u8, 193u8, 202u8, 97u8],
10843            [155u8, 170u8, 60u8, 201u8],
10844            [159u8, 219u8, 84u8, 167u8],
10845            [173u8, 60u8, 177u8, 204u8],
10846            [194u8, 59u8, 158u8, 158u8],
10847            [210u8, 77u8, 147u8, 61u8],
10848            [224u8, 48u8, 51u8, 1u8],
10849            [242u8, 253u8, 227u8, 139u8],
10850            [249u8, 229u8, 13u8, 25u8],
10851        ];
10852    }
10853    #[automatically_derived]
10854    impl alloy_sol_types::SolInterface for LightClientArbitrumCalls {
10855        const NAME: &'static str = "LightClientArbitrumCalls";
10856        const MIN_DATA_LENGTH: usize = 0usize;
10857        const COUNT: usize = 25usize;
10858        #[inline]
10859        fn selector(&self) -> [u8; 4] {
10860            match self {
10861                Self::UPGRADE_INTERFACE_VERSION(_) => {
10862                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10863                }
10864                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
10865                Self::currentBlockNumber(_) => {
10866                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10867                }
10868                Self::disablePermissionedProverMode(_) => {
10869                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
10870                }
10871                Self::finalizedState(_) => {
10872                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10873                }
10874                Self::genesisStakeTableState(_) => {
10875                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
10876                }
10877                Self::genesisState(_) => {
10878                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
10879                }
10880                Self::getHotShotCommitment(_) => {
10881                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
10882                }
10883                Self::getStateHistoryCount(_) => {
10884                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
10885                }
10886                Self::getVersion(_) => {
10887                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10888                }
10889                Self::initialize(_) => {
10890                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10891                }
10892                Self::isPermissionedProverEnabled(_) => {
10893                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
10894                }
10895                Self::lagOverEscapeHatchThreshold(_) => {
10896                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
10897                }
10898                Self::newFinalizedState(_) => {
10899                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10900                }
10901                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10902                Self::permissionedProver(_) => {
10903                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10904                }
10905                Self::proxiableUUID(_) => {
10906                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10907                }
10908                Self::renounceOwnership(_) => {
10909                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10910                }
10911                Self::setPermissionedProver(_) => {
10912                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10913                }
10914                Self::setstateHistoryRetentionPeriod(_) => {
10915                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10916                }
10917                Self::stateHistoryCommitments(_) => {
10918                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10919                }
10920                Self::stateHistoryFirstIndex(_) => {
10921                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10922                }
10923                Self::stateHistoryRetentionPeriod(_) => {
10924                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10925                }
10926                Self::transferOwnership(_) => {
10927                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10928                }
10929                Self::upgradeToAndCall(_) => {
10930                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10931                }
10932            }
10933        }
10934        #[inline]
10935        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10936            Self::SELECTORS.get(i).copied()
10937        }
10938        #[inline]
10939        fn valid_selector(selector: [u8; 4]) -> bool {
10940            Self::SELECTORS.binary_search(&selector).is_ok()
10941        }
10942        #[inline]
10943        #[allow(non_snake_case)]
10944        fn abi_decode_raw(
10945            selector: [u8; 4],
10946            data: &[u8],
10947        ) -> alloy_sol_types::Result<Self> {
10948            static DECODE_SHIMS: &[fn(
10949                &[u8],
10950            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
10951                {
10952                    fn setPermissionedProver(
10953                        data: &[u8],
10954                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10955                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10956                                data,
10957                            )
10958                            .map(LightClientArbitrumCalls::setPermissionedProver)
10959                    }
10960                    setPermissionedProver
10961                },
10962                {
10963                    fn stateHistoryCommitments(
10964                        data: &[u8],
10965                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10966                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10967                                data,
10968                            )
10969                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
10970                    }
10971                    stateHistoryCommitments
10972                },
10973                {
10974                    fn getVersion(
10975                        data: &[u8],
10976                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10977                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10978                                data,
10979                            )
10980                            .map(LightClientArbitrumCalls::getVersion)
10981                    }
10982                    getVersion
10983                },
10984                {
10985                    fn _getVk(
10986                        data: &[u8],
10987                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10988                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10989                            .map(LightClientArbitrumCalls::_getVk)
10990                    }
10991                    _getVk
10992                },
10993                {
10994                    fn newFinalizedState(
10995                        data: &[u8],
10996                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10997                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10998                                data,
10999                            )
11000                            .map(LightClientArbitrumCalls::newFinalizedState)
11001                    }
11002                    newFinalizedState
11003                },
11004                {
11005                    fn stateHistoryFirstIndex(
11006                        data: &[u8],
11007                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11008                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
11009                                data,
11010                            )
11011                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
11012                    }
11013                    stateHistoryFirstIndex
11014                },
11015                {
11016                    fn permissionedProver(
11017                        data: &[u8],
11018                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11019                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11020                                data,
11021                            )
11022                            .map(LightClientArbitrumCalls::permissionedProver)
11023                    }
11024                    permissionedProver
11025                },
11026                {
11027                    fn currentBlockNumber(
11028                        data: &[u8],
11029                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11030                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11031                                data,
11032                            )
11033                            .map(LightClientArbitrumCalls::currentBlockNumber)
11034                    }
11035                    currentBlockNumber
11036                },
11037                {
11038                    fn genesisStakeTableState(
11039                        data: &[u8],
11040                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11041                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11042                                data,
11043                            )
11044                            .map(LightClientArbitrumCalls::genesisStakeTableState)
11045                    }
11046                    genesisStakeTableState
11047                },
11048                {
11049                    fn upgradeToAndCall(
11050                        data: &[u8],
11051                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11052                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
11053                                data,
11054                            )
11055                            .map(LightClientArbitrumCalls::upgradeToAndCall)
11056                    }
11057                    upgradeToAndCall
11058                },
11059                {
11060                    fn proxiableUUID(
11061                        data: &[u8],
11062                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11063                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
11064                                data,
11065                            )
11066                            .map(LightClientArbitrumCalls::proxiableUUID)
11067                    }
11068                    proxiableUUID
11069                },
11070                {
11071                    fn disablePermissionedProverMode(
11072                        data: &[u8],
11073                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11074                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11075                                data,
11076                            )
11077                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
11078                    }
11079                    disablePermissionedProverMode
11080                },
11081                {
11082                    fn renounceOwnership(
11083                        data: &[u8],
11084                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11085                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11086                                data,
11087                            )
11088                            .map(LightClientArbitrumCalls::renounceOwnership)
11089                    }
11090                    renounceOwnership
11091                },
11092                {
11093                    fn isPermissionedProverEnabled(
11094                        data: &[u8],
11095                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11096                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11097                                data,
11098                            )
11099                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
11100                    }
11101                    isPermissionedProverEnabled
11102                },
11103                {
11104                    fn getHotShotCommitment(
11105                        data: &[u8],
11106                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11107                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11108                                data,
11109                            )
11110                            .map(LightClientArbitrumCalls::getHotShotCommitment)
11111                    }
11112                    getHotShotCommitment
11113                },
11114                {
11115                    fn owner(
11116                        data: &[u8],
11117                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11118                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11119                            .map(LightClientArbitrumCalls::owner)
11120                    }
11121                    owner
11122                },
11123                {
11124                    fn setstateHistoryRetentionPeriod(
11125                        data: &[u8],
11126                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11127                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11128                                data,
11129                            )
11130                            .map(
11131                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
11132                            )
11133                    }
11134                    setstateHistoryRetentionPeriod
11135                },
11136                {
11137                    fn initialize(
11138                        data: &[u8],
11139                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11140                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11141                                data,
11142                            )
11143                            .map(LightClientArbitrumCalls::initialize)
11144                    }
11145                    initialize
11146                },
11147                {
11148                    fn finalizedState(
11149                        data: &[u8],
11150                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11151                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11152                                data,
11153                            )
11154                            .map(LightClientArbitrumCalls::finalizedState)
11155                    }
11156                    finalizedState
11157                },
11158                {
11159                    fn UPGRADE_INTERFACE_VERSION(
11160                        data: &[u8],
11161                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11162                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11163                                data,
11164                            )
11165                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
11166                    }
11167                    UPGRADE_INTERFACE_VERSION
11168                },
11169                {
11170                    fn stateHistoryRetentionPeriod(
11171                        data: &[u8],
11172                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11173                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11174                                data,
11175                            )
11176                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
11177                    }
11178                    stateHistoryRetentionPeriod
11179                },
11180                {
11181                    fn genesisState(
11182                        data: &[u8],
11183                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11184                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11185                                data,
11186                            )
11187                            .map(LightClientArbitrumCalls::genesisState)
11188                    }
11189                    genesisState
11190                },
11191                {
11192                    fn lagOverEscapeHatchThreshold(
11193                        data: &[u8],
11194                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11195                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11196                                data,
11197                            )
11198                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
11199                    }
11200                    lagOverEscapeHatchThreshold
11201                },
11202                {
11203                    fn transferOwnership(
11204                        data: &[u8],
11205                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11206                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11207                                data,
11208                            )
11209                            .map(LightClientArbitrumCalls::transferOwnership)
11210                    }
11211                    transferOwnership
11212                },
11213                {
11214                    fn getStateHistoryCount(
11215                        data: &[u8],
11216                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11217                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11218                                data,
11219                            )
11220                            .map(LightClientArbitrumCalls::getStateHistoryCount)
11221                    }
11222                    getStateHistoryCount
11223                },
11224            ];
11225            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11226                return Err(
11227                    alloy_sol_types::Error::unknown_selector(
11228                        <Self as alloy_sol_types::SolInterface>::NAME,
11229                        selector,
11230                    ),
11231                );
11232            };
11233            DECODE_SHIMS[idx](data)
11234        }
11235        #[inline]
11236        #[allow(non_snake_case)]
11237        fn abi_decode_raw_validate(
11238            selector: [u8; 4],
11239            data: &[u8],
11240        ) -> alloy_sol_types::Result<Self> {
11241            static DECODE_VALIDATE_SHIMS: &[fn(
11242                &[u8],
11243            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
11244                {
11245                    fn setPermissionedProver(
11246                        data: &[u8],
11247                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11248                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11249                                data,
11250                            )
11251                            .map(LightClientArbitrumCalls::setPermissionedProver)
11252                    }
11253                    setPermissionedProver
11254                },
11255                {
11256                    fn stateHistoryCommitments(
11257                        data: &[u8],
11258                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11259                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11260                                data,
11261                            )
11262                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
11263                    }
11264                    stateHistoryCommitments
11265                },
11266                {
11267                    fn getVersion(
11268                        data: &[u8],
11269                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11270                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11271                                data,
11272                            )
11273                            .map(LightClientArbitrumCalls::getVersion)
11274                    }
11275                    getVersion
11276                },
11277                {
11278                    fn _getVk(
11279                        data: &[u8],
11280                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11281                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11282                                data,
11283                            )
11284                            .map(LightClientArbitrumCalls::_getVk)
11285                    }
11286                    _getVk
11287                },
11288                {
11289                    fn newFinalizedState(
11290                        data: &[u8],
11291                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11292                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11293                                data,
11294                            )
11295                            .map(LightClientArbitrumCalls::newFinalizedState)
11296                    }
11297                    newFinalizedState
11298                },
11299                {
11300                    fn stateHistoryFirstIndex(
11301                        data: &[u8],
11302                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11303                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11304                                data,
11305                            )
11306                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
11307                    }
11308                    stateHistoryFirstIndex
11309                },
11310                {
11311                    fn permissionedProver(
11312                        data: &[u8],
11313                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11314                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11315                                data,
11316                            )
11317                            .map(LightClientArbitrumCalls::permissionedProver)
11318                    }
11319                    permissionedProver
11320                },
11321                {
11322                    fn currentBlockNumber(
11323                        data: &[u8],
11324                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11325                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11326                                data,
11327                            )
11328                            .map(LightClientArbitrumCalls::currentBlockNumber)
11329                    }
11330                    currentBlockNumber
11331                },
11332                {
11333                    fn genesisStakeTableState(
11334                        data: &[u8],
11335                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11336                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11337                                data,
11338                            )
11339                            .map(LightClientArbitrumCalls::genesisStakeTableState)
11340                    }
11341                    genesisStakeTableState
11342                },
11343                {
11344                    fn upgradeToAndCall(
11345                        data: &[u8],
11346                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11347                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11348                                data,
11349                            )
11350                            .map(LightClientArbitrumCalls::upgradeToAndCall)
11351                    }
11352                    upgradeToAndCall
11353                },
11354                {
11355                    fn proxiableUUID(
11356                        data: &[u8],
11357                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11358                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11359                                data,
11360                            )
11361                            .map(LightClientArbitrumCalls::proxiableUUID)
11362                    }
11363                    proxiableUUID
11364                },
11365                {
11366                    fn disablePermissionedProverMode(
11367                        data: &[u8],
11368                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11369                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11370                                data,
11371                            )
11372                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
11373                    }
11374                    disablePermissionedProverMode
11375                },
11376                {
11377                    fn renounceOwnership(
11378                        data: &[u8],
11379                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11380                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11381                                data,
11382                            )
11383                            .map(LightClientArbitrumCalls::renounceOwnership)
11384                    }
11385                    renounceOwnership
11386                },
11387                {
11388                    fn isPermissionedProverEnabled(
11389                        data: &[u8],
11390                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11391                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11392                                data,
11393                            )
11394                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
11395                    }
11396                    isPermissionedProverEnabled
11397                },
11398                {
11399                    fn getHotShotCommitment(
11400                        data: &[u8],
11401                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11402                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11403                                data,
11404                            )
11405                            .map(LightClientArbitrumCalls::getHotShotCommitment)
11406                    }
11407                    getHotShotCommitment
11408                },
11409                {
11410                    fn owner(
11411                        data: &[u8],
11412                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11413                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11414                                data,
11415                            )
11416                            .map(LightClientArbitrumCalls::owner)
11417                    }
11418                    owner
11419                },
11420                {
11421                    fn setstateHistoryRetentionPeriod(
11422                        data: &[u8],
11423                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11424                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11425                                data,
11426                            )
11427                            .map(
11428                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
11429                            )
11430                    }
11431                    setstateHistoryRetentionPeriod
11432                },
11433                {
11434                    fn initialize(
11435                        data: &[u8],
11436                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11437                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11438                                data,
11439                            )
11440                            .map(LightClientArbitrumCalls::initialize)
11441                    }
11442                    initialize
11443                },
11444                {
11445                    fn finalizedState(
11446                        data: &[u8],
11447                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11448                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11449                                data,
11450                            )
11451                            .map(LightClientArbitrumCalls::finalizedState)
11452                    }
11453                    finalizedState
11454                },
11455                {
11456                    fn UPGRADE_INTERFACE_VERSION(
11457                        data: &[u8],
11458                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11459                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11460                                data,
11461                            )
11462                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
11463                    }
11464                    UPGRADE_INTERFACE_VERSION
11465                },
11466                {
11467                    fn stateHistoryRetentionPeriod(
11468                        data: &[u8],
11469                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11470                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11471                                data,
11472                            )
11473                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
11474                    }
11475                    stateHistoryRetentionPeriod
11476                },
11477                {
11478                    fn genesisState(
11479                        data: &[u8],
11480                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11481                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11482                                data,
11483                            )
11484                            .map(LightClientArbitrumCalls::genesisState)
11485                    }
11486                    genesisState
11487                },
11488                {
11489                    fn lagOverEscapeHatchThreshold(
11490                        data: &[u8],
11491                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11492                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11493                                data,
11494                            )
11495                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
11496                    }
11497                    lagOverEscapeHatchThreshold
11498                },
11499                {
11500                    fn transferOwnership(
11501                        data: &[u8],
11502                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11503                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11504                                data,
11505                            )
11506                            .map(LightClientArbitrumCalls::transferOwnership)
11507                    }
11508                    transferOwnership
11509                },
11510                {
11511                    fn getStateHistoryCount(
11512                        data: &[u8],
11513                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11514                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11515                                data,
11516                            )
11517                            .map(LightClientArbitrumCalls::getStateHistoryCount)
11518                    }
11519                    getStateHistoryCount
11520                },
11521            ];
11522            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11523                return Err(
11524                    alloy_sol_types::Error::unknown_selector(
11525                        <Self as alloy_sol_types::SolInterface>::NAME,
11526                        selector,
11527                    ),
11528                );
11529            };
11530            DECODE_VALIDATE_SHIMS[idx](data)
11531        }
11532        #[inline]
11533        fn abi_encoded_size(&self) -> usize {
11534            match self {
11535                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11536                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11537                        inner,
11538                    )
11539                }
11540                Self::_getVk(inner) => {
11541                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11542                }
11543                Self::currentBlockNumber(inner) => {
11544                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11545                        inner,
11546                    )
11547                }
11548                Self::disablePermissionedProverMode(inner) => {
11549                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11550                        inner,
11551                    )
11552                }
11553                Self::finalizedState(inner) => {
11554                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11555                        inner,
11556                    )
11557                }
11558                Self::genesisStakeTableState(inner) => {
11559                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11560                        inner,
11561                    )
11562                }
11563                Self::genesisState(inner) => {
11564                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11565                        inner,
11566                    )
11567                }
11568                Self::getHotShotCommitment(inner) => {
11569                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11570                        inner,
11571                    )
11572                }
11573                Self::getStateHistoryCount(inner) => {
11574                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11575                        inner,
11576                    )
11577                }
11578                Self::getVersion(inner) => {
11579                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11580                }
11581                Self::initialize(inner) => {
11582                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11583                }
11584                Self::isPermissionedProverEnabled(inner) => {
11585                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11586                        inner,
11587                    )
11588                }
11589                Self::lagOverEscapeHatchThreshold(inner) => {
11590                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11591                        inner,
11592                    )
11593                }
11594                Self::newFinalizedState(inner) => {
11595                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11596                        inner,
11597                    )
11598                }
11599                Self::owner(inner) => {
11600                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11601                }
11602                Self::permissionedProver(inner) => {
11603                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11604                        inner,
11605                    )
11606                }
11607                Self::proxiableUUID(inner) => {
11608                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11609                        inner,
11610                    )
11611                }
11612                Self::renounceOwnership(inner) => {
11613                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11614                        inner,
11615                    )
11616                }
11617                Self::setPermissionedProver(inner) => {
11618                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11619                        inner,
11620                    )
11621                }
11622                Self::setstateHistoryRetentionPeriod(inner) => {
11623                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11624                        inner,
11625                    )
11626                }
11627                Self::stateHistoryCommitments(inner) => {
11628                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11629                        inner,
11630                    )
11631                }
11632                Self::stateHistoryFirstIndex(inner) => {
11633                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11634                        inner,
11635                    )
11636                }
11637                Self::stateHistoryRetentionPeriod(inner) => {
11638                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11639                        inner,
11640                    )
11641                }
11642                Self::transferOwnership(inner) => {
11643                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11644                        inner,
11645                    )
11646                }
11647                Self::upgradeToAndCall(inner) => {
11648                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11649                        inner,
11650                    )
11651                }
11652            }
11653        }
11654        #[inline]
11655        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11656            match self {
11657                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11658                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11659                        inner,
11660                        out,
11661                    )
11662                }
11663                Self::_getVk(inner) => {
11664                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11665                }
11666                Self::currentBlockNumber(inner) => {
11667                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11668                        inner,
11669                        out,
11670                    )
11671                }
11672                Self::disablePermissionedProverMode(inner) => {
11673                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11674                        inner,
11675                        out,
11676                    )
11677                }
11678                Self::finalizedState(inner) => {
11679                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11680                        inner,
11681                        out,
11682                    )
11683                }
11684                Self::genesisStakeTableState(inner) => {
11685                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11686                        inner,
11687                        out,
11688                    )
11689                }
11690                Self::genesisState(inner) => {
11691                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11692                        inner,
11693                        out,
11694                    )
11695                }
11696                Self::getHotShotCommitment(inner) => {
11697                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11698                        inner,
11699                        out,
11700                    )
11701                }
11702                Self::getStateHistoryCount(inner) => {
11703                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11704                        inner,
11705                        out,
11706                    )
11707                }
11708                Self::getVersion(inner) => {
11709                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11710                        inner,
11711                        out,
11712                    )
11713                }
11714                Self::initialize(inner) => {
11715                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11716                        inner,
11717                        out,
11718                    )
11719                }
11720                Self::isPermissionedProverEnabled(inner) => {
11721                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11722                        inner,
11723                        out,
11724                    )
11725                }
11726                Self::lagOverEscapeHatchThreshold(inner) => {
11727                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11728                        inner,
11729                        out,
11730                    )
11731                }
11732                Self::newFinalizedState(inner) => {
11733                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11734                        inner,
11735                        out,
11736                    )
11737                }
11738                Self::owner(inner) => {
11739                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11740                }
11741                Self::permissionedProver(inner) => {
11742                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11743                        inner,
11744                        out,
11745                    )
11746                }
11747                Self::proxiableUUID(inner) => {
11748                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11749                        inner,
11750                        out,
11751                    )
11752                }
11753                Self::renounceOwnership(inner) => {
11754                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11755                        inner,
11756                        out,
11757                    )
11758                }
11759                Self::setPermissionedProver(inner) => {
11760                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11761                        inner,
11762                        out,
11763                    )
11764                }
11765                Self::setstateHistoryRetentionPeriod(inner) => {
11766                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11767                        inner,
11768                        out,
11769                    )
11770                }
11771                Self::stateHistoryCommitments(inner) => {
11772                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11773                        inner,
11774                        out,
11775                    )
11776                }
11777                Self::stateHistoryFirstIndex(inner) => {
11778                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11779                        inner,
11780                        out,
11781                    )
11782                }
11783                Self::stateHistoryRetentionPeriod(inner) => {
11784                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11785                        inner,
11786                        out,
11787                    )
11788                }
11789                Self::transferOwnership(inner) => {
11790                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11791                        inner,
11792                        out,
11793                    )
11794                }
11795                Self::upgradeToAndCall(inner) => {
11796                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11797                        inner,
11798                        out,
11799                    )
11800                }
11801            }
11802        }
11803    }
11804    ///Container for all the [`LightClientArbitrum`](self) custom errors.
11805    #[derive(serde::Serialize, serde::Deserialize)]
11806    #[derive(Debug, PartialEq, Eq, Hash)]
11807    pub enum LightClientArbitrumErrors {
11808        #[allow(missing_docs)]
11809        AddressEmptyCode(AddressEmptyCode),
11810        #[allow(missing_docs)]
11811        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11812        #[allow(missing_docs)]
11813        ERC1967NonPayable(ERC1967NonPayable),
11814        #[allow(missing_docs)]
11815        FailedInnerCall(FailedInnerCall),
11816        #[allow(missing_docs)]
11817        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11818        #[allow(missing_docs)]
11819        InvalidAddress(InvalidAddress),
11820        #[allow(missing_docs)]
11821        InvalidArgs(InvalidArgs),
11822        #[allow(missing_docs)]
11823        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11824        #[allow(missing_docs)]
11825        InvalidInitialization(InvalidInitialization),
11826        #[allow(missing_docs)]
11827        InvalidMaxStateHistory(InvalidMaxStateHistory),
11828        #[allow(missing_docs)]
11829        InvalidProof(InvalidProof),
11830        #[allow(missing_docs)]
11831        InvalidScalar(InvalidScalar),
11832        #[allow(missing_docs)]
11833        NoChangeRequired(NoChangeRequired),
11834        #[allow(missing_docs)]
11835        NotInitializing(NotInitializing),
11836        #[allow(missing_docs)]
11837        OutdatedState(OutdatedState),
11838        #[allow(missing_docs)]
11839        OwnableInvalidOwner(OwnableInvalidOwner),
11840        #[allow(missing_docs)]
11841        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11842        #[allow(missing_docs)]
11843        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
11844        #[allow(missing_docs)]
11845        ProverNotPermissioned(ProverNotPermissioned),
11846        #[allow(missing_docs)]
11847        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11848        #[allow(missing_docs)]
11849        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11850        #[allow(missing_docs)]
11851        WrongStakeTableUsed(WrongStakeTableUsed),
11852    }
11853    #[automatically_derived]
11854    impl LightClientArbitrumErrors {
11855        /// All the selectors of this enum.
11856        ///
11857        /// Note that the selectors might not be in the same order as the variants.
11858        /// No guarantees are made about the order of the selectors.
11859        ///
11860        /// Prefer using `SolInterface` methods instead.
11861        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11862            [5u8, 28u8, 70u8, 239u8],
11863            [5u8, 176u8, 92u8, 204u8],
11864            [9u8, 189u8, 227u8, 57u8],
11865            [17u8, 140u8, 218u8, 167u8],
11866            [20u8, 37u8, 234u8, 66u8],
11867            [30u8, 79u8, 189u8, 247u8],
11868            [47u8, 171u8, 146u8, 202u8],
11869            [76u8, 156u8, 140u8, 227u8],
11870            [81u8, 97u8, 128u8, 137u8],
11871            [97u8, 90u8, 146u8, 100u8],
11872            [153u8, 150u8, 179u8, 21u8],
11873            [161u8, 186u8, 7u8, 238u8],
11874            [163u8, 166u8, 71u8, 128u8],
11875            [168u8, 99u8, 174u8, 201u8],
11876            [170u8, 29u8, 73u8, 164u8],
11877            [176u8, 180u8, 56u8, 119u8],
11878            [179u8, 152u8, 151u8, 159u8],
11879            [215u8, 230u8, 188u8, 248u8],
11880            [224u8, 124u8, 141u8, 186u8],
11881            [230u8, 196u8, 36u8, 123u8],
11882            [244u8, 160u8, 238u8, 224u8],
11883            [249u8, 46u8, 232u8, 169u8],
11884        ];
11885    }
11886    #[automatically_derived]
11887    impl alloy_sol_types::SolInterface for LightClientArbitrumErrors {
11888        const NAME: &'static str = "LightClientArbitrumErrors";
11889        const MIN_DATA_LENGTH: usize = 0usize;
11890        const COUNT: usize = 22usize;
11891        #[inline]
11892        fn selector(&self) -> [u8; 4] {
11893            match self {
11894                Self::AddressEmptyCode(_) => {
11895                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
11896                }
11897                Self::ERC1967InvalidImplementation(_) => {
11898                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
11899                }
11900                Self::ERC1967NonPayable(_) => {
11901                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
11902                }
11903                Self::FailedInnerCall(_) => {
11904                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11905                }
11906                Self::InsufficientSnapshotHistory(_) => {
11907                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
11908                }
11909                Self::InvalidAddress(_) => {
11910                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
11911                }
11912                Self::InvalidArgs(_) => {
11913                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
11914                }
11915                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
11916                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
11917                }
11918                Self::InvalidInitialization(_) => {
11919                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11920                }
11921                Self::InvalidMaxStateHistory(_) => {
11922                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
11923                }
11924                Self::InvalidProof(_) => {
11925                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
11926                }
11927                Self::InvalidScalar(_) => {
11928                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
11929                }
11930                Self::NoChangeRequired(_) => {
11931                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
11932                }
11933                Self::NotInitializing(_) => {
11934                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11935                }
11936                Self::OutdatedState(_) => {
11937                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
11938                }
11939                Self::OwnableInvalidOwner(_) => {
11940                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11941                }
11942                Self::OwnableUnauthorizedAccount(_) => {
11943                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11944                }
11945                Self::OwnershipCannotBeRenounced(_) => {
11946                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
11947                }
11948                Self::ProverNotPermissioned(_) => {
11949                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
11950                }
11951                Self::UUPSUnauthorizedCallContext(_) => {
11952                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11953                }
11954                Self::UUPSUnsupportedProxiableUUID(_) => {
11955                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11956                }
11957                Self::WrongStakeTableUsed(_) => {
11958                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
11959                }
11960            }
11961        }
11962        #[inline]
11963        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11964            Self::SELECTORS.get(i).copied()
11965        }
11966        #[inline]
11967        fn valid_selector(selector: [u8; 4]) -> bool {
11968            Self::SELECTORS.binary_search(&selector).is_ok()
11969        }
11970        #[inline]
11971        #[allow(non_snake_case)]
11972        fn abi_decode_raw(
11973            selector: [u8; 4],
11974            data: &[u8],
11975        ) -> alloy_sol_types::Result<Self> {
11976            static DECODE_SHIMS: &[fn(
11977                &[u8],
11978            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
11979                {
11980                    fn OutdatedState(
11981                        data: &[u8],
11982                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11983                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
11984                                data,
11985                            )
11986                            .map(LightClientArbitrumErrors::OutdatedState)
11987                    }
11988                    OutdatedState
11989                },
11990                {
11991                    fn InvalidScalar(
11992                        data: &[u8],
11993                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11994                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
11995                                data,
11996                            )
11997                            .map(LightClientArbitrumErrors::InvalidScalar)
11998                    }
11999                    InvalidScalar
12000                },
12001                {
12002                    fn InvalidProof(
12003                        data: &[u8],
12004                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12005                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
12006                            .map(LightClientArbitrumErrors::InvalidProof)
12007                    }
12008                    InvalidProof
12009                },
12010                {
12011                    fn OwnableUnauthorizedAccount(
12012                        data: &[u8],
12013                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12014                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
12015                                data,
12016                            )
12017                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
12018                    }
12019                    OwnableUnauthorizedAccount
12020                },
12021                {
12022                    fn FailedInnerCall(
12023                        data: &[u8],
12024                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12025                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
12026                                data,
12027                            )
12028                            .map(LightClientArbitrumErrors::FailedInnerCall)
12029                    }
12030                    FailedInnerCall
12031                },
12032                {
12033                    fn OwnableInvalidOwner(
12034                        data: &[u8],
12035                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12036                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
12037                                data,
12038                            )
12039                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
12040                    }
12041                    OwnableInvalidOwner
12042                },
12043                {
12044                    fn OwnershipCannotBeRenounced(
12045                        data: &[u8],
12046                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12047                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
12048                                data,
12049                            )
12050                            .map(LightClientArbitrumErrors::OwnershipCannotBeRenounced)
12051                    }
12052                    OwnershipCannotBeRenounced
12053                },
12054                {
12055                    fn ERC1967InvalidImplementation(
12056                        data: &[u8],
12057                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12058                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
12059                                data,
12060                            )
12061                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
12062                    }
12063                    ERC1967InvalidImplementation
12064                },
12065                {
12066                    fn WrongStakeTableUsed(
12067                        data: &[u8],
12068                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12069                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
12070                                data,
12071                            )
12072                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
12073                    }
12074                    WrongStakeTableUsed
12075                },
12076                {
12077                    fn InvalidHotShotBlockForCommitmentCheck(
12078                        data: &[u8],
12079                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12080                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
12081                                data,
12082                            )
12083                            .map(
12084                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
12085                            )
12086                    }
12087                    InvalidHotShotBlockForCommitmentCheck
12088                },
12089                {
12090                    fn AddressEmptyCode(
12091                        data: &[u8],
12092                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12093                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
12094                                data,
12095                            )
12096                            .map(LightClientArbitrumErrors::AddressEmptyCode)
12097                    }
12098                    AddressEmptyCode
12099                },
12100                {
12101                    fn InvalidArgs(
12102                        data: &[u8],
12103                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12104                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
12105                            .map(LightClientArbitrumErrors::InvalidArgs)
12106                    }
12107                    InvalidArgs
12108                },
12109                {
12110                    fn ProverNotPermissioned(
12111                        data: &[u8],
12112                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12113                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
12114                                data,
12115                            )
12116                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
12117                    }
12118                    ProverNotPermissioned
12119                },
12120                {
12121                    fn NoChangeRequired(
12122                        data: &[u8],
12123                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12124                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12125                                data,
12126                            )
12127                            .map(LightClientArbitrumErrors::NoChangeRequired)
12128                    }
12129                    NoChangeRequired
12130                },
12131                {
12132                    fn UUPSUnsupportedProxiableUUID(
12133                        data: &[u8],
12134                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12135                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12136                                data,
12137                            )
12138                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
12139                    }
12140                    UUPSUnsupportedProxiableUUID
12141                },
12142                {
12143                    fn InsufficientSnapshotHistory(
12144                        data: &[u8],
12145                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12146                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12147                                data,
12148                            )
12149                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
12150                    }
12151                    InsufficientSnapshotHistory
12152                },
12153                {
12154                    fn ERC1967NonPayable(
12155                        data: &[u8],
12156                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12157                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12158                                data,
12159                            )
12160                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
12161                    }
12162                    ERC1967NonPayable
12163                },
12164                {
12165                    fn NotInitializing(
12166                        data: &[u8],
12167                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12168                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12169                                data,
12170                            )
12171                            .map(LightClientArbitrumErrors::NotInitializing)
12172                    }
12173                    NotInitializing
12174                },
12175                {
12176                    fn UUPSUnauthorizedCallContext(
12177                        data: &[u8],
12178                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12179                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12180                                data,
12181                            )
12182                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
12183                    }
12184                    UUPSUnauthorizedCallContext
12185                },
12186                {
12187                    fn InvalidAddress(
12188                        data: &[u8],
12189                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12190                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12191                                data,
12192                            )
12193                            .map(LightClientArbitrumErrors::InvalidAddress)
12194                    }
12195                    InvalidAddress
12196                },
12197                {
12198                    fn InvalidMaxStateHistory(
12199                        data: &[u8],
12200                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12201                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12202                                data,
12203                            )
12204                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
12205                    }
12206                    InvalidMaxStateHistory
12207                },
12208                {
12209                    fn InvalidInitialization(
12210                        data: &[u8],
12211                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12212                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12213                                data,
12214                            )
12215                            .map(LightClientArbitrumErrors::InvalidInitialization)
12216                    }
12217                    InvalidInitialization
12218                },
12219            ];
12220            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12221                return Err(
12222                    alloy_sol_types::Error::unknown_selector(
12223                        <Self as alloy_sol_types::SolInterface>::NAME,
12224                        selector,
12225                    ),
12226                );
12227            };
12228            DECODE_SHIMS[idx](data)
12229        }
12230        #[inline]
12231        #[allow(non_snake_case)]
12232        fn abi_decode_raw_validate(
12233            selector: [u8; 4],
12234            data: &[u8],
12235        ) -> alloy_sol_types::Result<Self> {
12236            static DECODE_VALIDATE_SHIMS: &[fn(
12237                &[u8],
12238            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
12239                {
12240                    fn OutdatedState(
12241                        data: &[u8],
12242                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12243                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
12244                                data,
12245                            )
12246                            .map(LightClientArbitrumErrors::OutdatedState)
12247                    }
12248                    OutdatedState
12249                },
12250                {
12251                    fn InvalidScalar(
12252                        data: &[u8],
12253                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12254                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
12255                                data,
12256                            )
12257                            .map(LightClientArbitrumErrors::InvalidScalar)
12258                    }
12259                    InvalidScalar
12260                },
12261                {
12262                    fn InvalidProof(
12263                        data: &[u8],
12264                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12265                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12266                                data,
12267                            )
12268                            .map(LightClientArbitrumErrors::InvalidProof)
12269                    }
12270                    InvalidProof
12271                },
12272                {
12273                    fn OwnableUnauthorizedAccount(
12274                        data: &[u8],
12275                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12276                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
12277                                data,
12278                            )
12279                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
12280                    }
12281                    OwnableUnauthorizedAccount
12282                },
12283                {
12284                    fn FailedInnerCall(
12285                        data: &[u8],
12286                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12287                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
12288                                data,
12289                            )
12290                            .map(LightClientArbitrumErrors::FailedInnerCall)
12291                    }
12292                    FailedInnerCall
12293                },
12294                {
12295                    fn OwnableInvalidOwner(
12296                        data: &[u8],
12297                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12298                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12299                                data,
12300                            )
12301                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
12302                    }
12303                    OwnableInvalidOwner
12304                },
12305                {
12306                    fn OwnershipCannotBeRenounced(
12307                        data: &[u8],
12308                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12309                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
12310                                data,
12311                            )
12312                            .map(LightClientArbitrumErrors::OwnershipCannotBeRenounced)
12313                    }
12314                    OwnershipCannotBeRenounced
12315                },
12316                {
12317                    fn ERC1967InvalidImplementation(
12318                        data: &[u8],
12319                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12320                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
12321                                data,
12322                            )
12323                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
12324                    }
12325                    ERC1967InvalidImplementation
12326                },
12327                {
12328                    fn WrongStakeTableUsed(
12329                        data: &[u8],
12330                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12331                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
12332                                data,
12333                            )
12334                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
12335                    }
12336                    WrongStakeTableUsed
12337                },
12338                {
12339                    fn InvalidHotShotBlockForCommitmentCheck(
12340                        data: &[u8],
12341                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12342                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
12343                                data,
12344                            )
12345                            .map(
12346                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
12347                            )
12348                    }
12349                    InvalidHotShotBlockForCommitmentCheck
12350                },
12351                {
12352                    fn AddressEmptyCode(
12353                        data: &[u8],
12354                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12355                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
12356                                data,
12357                            )
12358                            .map(LightClientArbitrumErrors::AddressEmptyCode)
12359                    }
12360                    AddressEmptyCode
12361                },
12362                {
12363                    fn InvalidArgs(
12364                        data: &[u8],
12365                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12366                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
12367                                data,
12368                            )
12369                            .map(LightClientArbitrumErrors::InvalidArgs)
12370                    }
12371                    InvalidArgs
12372                },
12373                {
12374                    fn ProverNotPermissioned(
12375                        data: &[u8],
12376                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12377                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
12378                                data,
12379                            )
12380                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
12381                    }
12382                    ProverNotPermissioned
12383                },
12384                {
12385                    fn NoChangeRequired(
12386                        data: &[u8],
12387                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12388                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
12389                                data,
12390                            )
12391                            .map(LightClientArbitrumErrors::NoChangeRequired)
12392                    }
12393                    NoChangeRequired
12394                },
12395                {
12396                    fn UUPSUnsupportedProxiableUUID(
12397                        data: &[u8],
12398                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12399                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
12400                                data,
12401                            )
12402                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
12403                    }
12404                    UUPSUnsupportedProxiableUUID
12405                },
12406                {
12407                    fn InsufficientSnapshotHistory(
12408                        data: &[u8],
12409                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12410                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12411                                data,
12412                            )
12413                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
12414                    }
12415                    InsufficientSnapshotHistory
12416                },
12417                {
12418                    fn ERC1967NonPayable(
12419                        data: &[u8],
12420                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12421                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12422                                data,
12423                            )
12424                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
12425                    }
12426                    ERC1967NonPayable
12427                },
12428                {
12429                    fn NotInitializing(
12430                        data: &[u8],
12431                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12432                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
12433                                data,
12434                            )
12435                            .map(LightClientArbitrumErrors::NotInitializing)
12436                    }
12437                    NotInitializing
12438                },
12439                {
12440                    fn UUPSUnauthorizedCallContext(
12441                        data: &[u8],
12442                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12443                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
12444                                data,
12445                            )
12446                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
12447                    }
12448                    UUPSUnauthorizedCallContext
12449                },
12450                {
12451                    fn InvalidAddress(
12452                        data: &[u8],
12453                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12454                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
12455                                data,
12456                            )
12457                            .map(LightClientArbitrumErrors::InvalidAddress)
12458                    }
12459                    InvalidAddress
12460                },
12461                {
12462                    fn InvalidMaxStateHistory(
12463                        data: &[u8],
12464                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12465                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12466                                data,
12467                            )
12468                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
12469                    }
12470                    InvalidMaxStateHistory
12471                },
12472                {
12473                    fn InvalidInitialization(
12474                        data: &[u8],
12475                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12476                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
12477                                data,
12478                            )
12479                            .map(LightClientArbitrumErrors::InvalidInitialization)
12480                    }
12481                    InvalidInitialization
12482                },
12483            ];
12484            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12485                return Err(
12486                    alloy_sol_types::Error::unknown_selector(
12487                        <Self as alloy_sol_types::SolInterface>::NAME,
12488                        selector,
12489                    ),
12490                );
12491            };
12492            DECODE_VALIDATE_SHIMS[idx](data)
12493        }
12494        #[inline]
12495        fn abi_encoded_size(&self) -> usize {
12496            match self {
12497                Self::AddressEmptyCode(inner) => {
12498                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12499                        inner,
12500                    )
12501                }
12502                Self::ERC1967InvalidImplementation(inner) => {
12503                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12504                        inner,
12505                    )
12506                }
12507                Self::ERC1967NonPayable(inner) => {
12508                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12509                        inner,
12510                    )
12511                }
12512                Self::FailedInnerCall(inner) => {
12513                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12514                        inner,
12515                    )
12516                }
12517                Self::InsufficientSnapshotHistory(inner) => {
12518                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12519                        inner,
12520                    )
12521                }
12522                Self::InvalidAddress(inner) => {
12523                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12524                        inner,
12525                    )
12526                }
12527                Self::InvalidArgs(inner) => {
12528                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12529                }
12530                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12531                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12532                        inner,
12533                    )
12534                }
12535                Self::InvalidInitialization(inner) => {
12536                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12537                        inner,
12538                    )
12539                }
12540                Self::InvalidMaxStateHistory(inner) => {
12541                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12542                        inner,
12543                    )
12544                }
12545                Self::InvalidProof(inner) => {
12546                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12547                }
12548                Self::InvalidScalar(inner) => {
12549                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12550                }
12551                Self::NoChangeRequired(inner) => {
12552                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12553                        inner,
12554                    )
12555                }
12556                Self::NotInitializing(inner) => {
12557                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12558                        inner,
12559                    )
12560                }
12561                Self::OutdatedState(inner) => {
12562                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12563                }
12564                Self::OwnableInvalidOwner(inner) => {
12565                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12566                        inner,
12567                    )
12568                }
12569                Self::OwnableUnauthorizedAccount(inner) => {
12570                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12571                        inner,
12572                    )
12573                }
12574                Self::OwnershipCannotBeRenounced(inner) => {
12575                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
12576                        inner,
12577                    )
12578                }
12579                Self::ProverNotPermissioned(inner) => {
12580                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12581                        inner,
12582                    )
12583                }
12584                Self::UUPSUnauthorizedCallContext(inner) => {
12585                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12586                        inner,
12587                    )
12588                }
12589                Self::UUPSUnsupportedProxiableUUID(inner) => {
12590                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12591                        inner,
12592                    )
12593                }
12594                Self::WrongStakeTableUsed(inner) => {
12595                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12596                        inner,
12597                    )
12598                }
12599            }
12600        }
12601        #[inline]
12602        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12603            match self {
12604                Self::AddressEmptyCode(inner) => {
12605                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12606                        inner,
12607                        out,
12608                    )
12609                }
12610                Self::ERC1967InvalidImplementation(inner) => {
12611                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12612                        inner,
12613                        out,
12614                    )
12615                }
12616                Self::ERC1967NonPayable(inner) => {
12617                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12618                        inner,
12619                        out,
12620                    )
12621                }
12622                Self::FailedInnerCall(inner) => {
12623                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12624                        inner,
12625                        out,
12626                    )
12627                }
12628                Self::InsufficientSnapshotHistory(inner) => {
12629                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12630                        inner,
12631                        out,
12632                    )
12633                }
12634                Self::InvalidAddress(inner) => {
12635                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12636                        inner,
12637                        out,
12638                    )
12639                }
12640                Self::InvalidArgs(inner) => {
12641                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12642                        inner,
12643                        out,
12644                    )
12645                }
12646                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12647                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12648                        inner,
12649                        out,
12650                    )
12651                }
12652                Self::InvalidInitialization(inner) => {
12653                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12654                        inner,
12655                        out,
12656                    )
12657                }
12658                Self::InvalidMaxStateHistory(inner) => {
12659                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12660                        inner,
12661                        out,
12662                    )
12663                }
12664                Self::InvalidProof(inner) => {
12665                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12666                        inner,
12667                        out,
12668                    )
12669                }
12670                Self::InvalidScalar(inner) => {
12671                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12672                        inner,
12673                        out,
12674                    )
12675                }
12676                Self::NoChangeRequired(inner) => {
12677                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12678                        inner,
12679                        out,
12680                    )
12681                }
12682                Self::NotInitializing(inner) => {
12683                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12684                        inner,
12685                        out,
12686                    )
12687                }
12688                Self::OutdatedState(inner) => {
12689                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12690                        inner,
12691                        out,
12692                    )
12693                }
12694                Self::OwnableInvalidOwner(inner) => {
12695                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12696                        inner,
12697                        out,
12698                    )
12699                }
12700                Self::OwnableUnauthorizedAccount(inner) => {
12701                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12702                        inner,
12703                        out,
12704                    )
12705                }
12706                Self::OwnershipCannotBeRenounced(inner) => {
12707                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12708                        inner,
12709                        out,
12710                    )
12711                }
12712                Self::ProverNotPermissioned(inner) => {
12713                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12714                        inner,
12715                        out,
12716                    )
12717                }
12718                Self::UUPSUnauthorizedCallContext(inner) => {
12719                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12720                        inner,
12721                        out,
12722                    )
12723                }
12724                Self::UUPSUnsupportedProxiableUUID(inner) => {
12725                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12726                        inner,
12727                        out,
12728                    )
12729                }
12730                Self::WrongStakeTableUsed(inner) => {
12731                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12732                        inner,
12733                        out,
12734                    )
12735                }
12736            }
12737        }
12738    }
12739    ///Container for all the [`LightClientArbitrum`](self) events.
12740    #[derive(serde::Serialize, serde::Deserialize)]
12741    #[derive(Debug, PartialEq, Eq, Hash)]
12742    pub enum LightClientArbitrumEvents {
12743        #[allow(missing_docs)]
12744        Initialized(Initialized),
12745        #[allow(missing_docs)]
12746        NewState(NewState),
12747        #[allow(missing_docs)]
12748        OwnershipTransferred(OwnershipTransferred),
12749        #[allow(missing_docs)]
12750        PermissionedProverNotRequired(PermissionedProverNotRequired),
12751        #[allow(missing_docs)]
12752        PermissionedProverRequired(PermissionedProverRequired),
12753        #[allow(missing_docs)]
12754        Upgrade(Upgrade),
12755        #[allow(missing_docs)]
12756        Upgraded(Upgraded),
12757    }
12758    #[automatically_derived]
12759    impl LightClientArbitrumEvents {
12760        /// All the selectors of this enum.
12761        ///
12762        /// Note that the selectors might not be in the same order as the variants.
12763        /// No guarantees are made about the order of the selectors.
12764        ///
12765        /// Prefer using `SolInterface` methods instead.
12766        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12767            [
12768                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12769                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12770                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12771            ],
12772            [
12773                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12774                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12775                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12776            ],
12777            [
12778                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12779                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12780                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12781            ],
12782            [
12783                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12784                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12785                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12786            ],
12787            [
12788                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12789                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12790                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12791            ],
12792            [
12793                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12794                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12795                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12796            ],
12797            [
12798                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
12799                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
12800                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12801            ],
12802        ];
12803    }
12804    #[automatically_derived]
12805    impl alloy_sol_types::SolEventInterface for LightClientArbitrumEvents {
12806        const NAME: &'static str = "LightClientArbitrumEvents";
12807        const COUNT: usize = 7usize;
12808        fn decode_raw_log(
12809            topics: &[alloy_sol_types::Word],
12810            data: &[u8],
12811        ) -> alloy_sol_types::Result<Self> {
12812            match topics.first().copied() {
12813                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12814                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12815                            topics,
12816                            data,
12817                        )
12818                        .map(Self::Initialized)
12819                }
12820                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12821                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12822                        .map(Self::NewState)
12823                }
12824                Some(
12825                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12826                ) => {
12827                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12828                            topics,
12829                            data,
12830                        )
12831                        .map(Self::OwnershipTransferred)
12832                }
12833                Some(
12834                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12835                ) => {
12836                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12837                            topics,
12838                            data,
12839                        )
12840                        .map(Self::PermissionedProverNotRequired)
12841                }
12842                Some(
12843                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12844                ) => {
12845                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12846                            topics,
12847                            data,
12848                        )
12849                        .map(Self::PermissionedProverRequired)
12850                }
12851                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12852                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12853                        .map(Self::Upgrade)
12854                }
12855                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12856                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12857                        .map(Self::Upgraded)
12858                }
12859                _ => {
12860                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12861                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12862                        log: alloy_sol_types::private::Box::new(
12863                            alloy_sol_types::private::LogData::new_unchecked(
12864                                topics.to_vec(),
12865                                data.to_vec().into(),
12866                            ),
12867                        ),
12868                    })
12869                }
12870            }
12871        }
12872    }
12873    #[automatically_derived]
12874    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumEvents {
12875        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12876            match self {
12877                Self::Initialized(inner) => {
12878                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12879                }
12880                Self::NewState(inner) => {
12881                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12882                }
12883                Self::OwnershipTransferred(inner) => {
12884                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12885                }
12886                Self::PermissionedProverNotRequired(inner) => {
12887                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12888                }
12889                Self::PermissionedProverRequired(inner) => {
12890                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12891                }
12892                Self::Upgrade(inner) => {
12893                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12894                }
12895                Self::Upgraded(inner) => {
12896                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12897                }
12898            }
12899        }
12900        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12901            match self {
12902                Self::Initialized(inner) => {
12903                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12904                }
12905                Self::NewState(inner) => {
12906                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12907                }
12908                Self::OwnershipTransferred(inner) => {
12909                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12910                }
12911                Self::PermissionedProverNotRequired(inner) => {
12912                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12913                }
12914                Self::PermissionedProverRequired(inner) => {
12915                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12916                }
12917                Self::Upgrade(inner) => {
12918                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12919                }
12920                Self::Upgraded(inner) => {
12921                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12922                }
12923            }
12924        }
12925    }
12926    use alloy::contract as alloy_contract;
12927    /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
12928
12929See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
12930    #[inline]
12931    pub const fn new<
12932        P: alloy_contract::private::Provider<N>,
12933        N: alloy_contract::private::Network,
12934    >(
12935        address: alloy_sol_types::private::Address,
12936        provider: P,
12937    ) -> LightClientArbitrumInstance<P, N> {
12938        LightClientArbitrumInstance::<P, N>::new(address, provider)
12939    }
12940    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12941
12942Returns a new instance of the contract, if the deployment was successful.
12943
12944For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12945    #[inline]
12946    pub fn deploy<
12947        P: alloy_contract::private::Provider<N>,
12948        N: alloy_contract::private::Network,
12949    >(
12950        provider: P,
12951    ) -> impl ::core::future::Future<
12952        Output = alloy_contract::Result<LightClientArbitrumInstance<P, N>>,
12953    > {
12954        LightClientArbitrumInstance::<P, N>::deploy(provider)
12955    }
12956    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12957and constructor arguments, if any.
12958
12959This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12960the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12961    #[inline]
12962    pub fn deploy_builder<
12963        P: alloy_contract::private::Provider<N>,
12964        N: alloy_contract::private::Network,
12965    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12966        LightClientArbitrumInstance::<P, N>::deploy_builder(provider)
12967    }
12968    /**A [`LightClientArbitrum`](self) instance.
12969
12970Contains type-safe methods for interacting with an on-chain instance of the
12971[`LightClientArbitrum`](self) contract located at a given `address`, using a given
12972provider `P`.
12973
12974If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12975documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12976be used to deploy a new instance of the contract.
12977
12978See the [module-level documentation](self) for all the available methods.*/
12979    #[derive(Clone)]
12980    pub struct LightClientArbitrumInstance<P, N = alloy_contract::private::Ethereum> {
12981        address: alloy_sol_types::private::Address,
12982        provider: P,
12983        _network: ::core::marker::PhantomData<N>,
12984    }
12985    #[automatically_derived]
12986    impl<P, N> ::core::fmt::Debug for LightClientArbitrumInstance<P, N> {
12987        #[inline]
12988        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12989            f.debug_tuple("LightClientArbitrumInstance").field(&self.address).finish()
12990        }
12991    }
12992    /// Instantiation and getters/setters.
12993    #[automatically_derived]
12994    impl<
12995        P: alloy_contract::private::Provider<N>,
12996        N: alloy_contract::private::Network,
12997    > LightClientArbitrumInstance<P, N> {
12998        /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
12999
13000See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
13001        #[inline]
13002        pub const fn new(
13003            address: alloy_sol_types::private::Address,
13004            provider: P,
13005        ) -> Self {
13006            Self {
13007                address,
13008                provider,
13009                _network: ::core::marker::PhantomData,
13010            }
13011        }
13012        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13013
13014Returns a new instance of the contract, if the deployment was successful.
13015
13016For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13017        #[inline]
13018        pub async fn deploy(
13019            provider: P,
13020        ) -> alloy_contract::Result<LightClientArbitrumInstance<P, N>> {
13021            let call_builder = Self::deploy_builder(provider);
13022            let contract_address = call_builder.deploy().await?;
13023            Ok(Self::new(contract_address, call_builder.provider))
13024        }
13025        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13026and constructor arguments, if any.
13027
13028This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13029the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13030        #[inline]
13031        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13032            alloy_contract::RawCallBuilder::new_raw_deploy(
13033                provider,
13034                ::core::clone::Clone::clone(&BYTECODE),
13035            )
13036        }
13037        /// Returns a reference to the address.
13038        #[inline]
13039        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13040            &self.address
13041        }
13042        /// Sets the address.
13043        #[inline]
13044        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13045            self.address = address;
13046        }
13047        /// Sets the address and returns `self`.
13048        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13049            self.set_address(address);
13050            self
13051        }
13052        /// Returns a reference to the provider.
13053        #[inline]
13054        pub const fn provider(&self) -> &P {
13055            &self.provider
13056        }
13057    }
13058    impl<P: ::core::clone::Clone, N> LightClientArbitrumInstance<&P, N> {
13059        /// Clones the provider and returns a new instance with the cloned provider.
13060        #[inline]
13061        pub fn with_cloned_provider(self) -> LightClientArbitrumInstance<P, N> {
13062            LightClientArbitrumInstance {
13063                address: self.address,
13064                provider: ::core::clone::Clone::clone(&self.provider),
13065                _network: ::core::marker::PhantomData,
13066            }
13067        }
13068    }
13069    /// Function calls.
13070    #[automatically_derived]
13071    impl<
13072        P: alloy_contract::private::Provider<N>,
13073        N: alloy_contract::private::Network,
13074    > LightClientArbitrumInstance<P, N> {
13075        /// Creates a new call builder using this contract instance's provider and address.
13076        ///
13077        /// Note that the call can be any function call, not just those defined in this
13078        /// contract. Prefer using the other methods for building type-safe contract calls.
13079        pub fn call_builder<C: alloy_sol_types::SolCall>(
13080            &self,
13081            call: &C,
13082        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13083            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13084        }
13085        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13086        pub fn UPGRADE_INTERFACE_VERSION(
13087            &self,
13088        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
13089            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
13090        }
13091        ///Creates a new call builder for the [`_getVk`] function.
13092        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
13093            self.call_builder(&_getVkCall)
13094        }
13095        ///Creates a new call builder for the [`currentBlockNumber`] function.
13096        pub fn currentBlockNumber(
13097            &self,
13098        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
13099            self.call_builder(&currentBlockNumberCall)
13100        }
13101        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13102        pub fn disablePermissionedProverMode(
13103            &self,
13104        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
13105            self.call_builder(&disablePermissionedProverModeCall)
13106        }
13107        ///Creates a new call builder for the [`finalizedState`] function.
13108        pub fn finalizedState(
13109            &self,
13110        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
13111            self.call_builder(&finalizedStateCall)
13112        }
13113        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13114        pub fn genesisStakeTableState(
13115            &self,
13116        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
13117            self.call_builder(&genesisStakeTableStateCall)
13118        }
13119        ///Creates a new call builder for the [`genesisState`] function.
13120        pub fn genesisState(
13121            &self,
13122        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
13123            self.call_builder(&genesisStateCall)
13124        }
13125        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13126        pub fn getHotShotCommitment(
13127            &self,
13128            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13129        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
13130            self.call_builder(
13131                &getHotShotCommitmentCall {
13132                    hotShotBlockHeight,
13133                },
13134            )
13135        }
13136        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13137        pub fn getStateHistoryCount(
13138            &self,
13139        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
13140            self.call_builder(&getStateHistoryCountCall)
13141        }
13142        ///Creates a new call builder for the [`getVersion`] function.
13143        pub fn getVersion(
13144            &self,
13145        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13146            self.call_builder(&getVersionCall)
13147        }
13148        ///Creates a new call builder for the [`initialize`] function.
13149        pub fn initialize(
13150            &self,
13151            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13152            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13153            _stateHistoryRetentionPeriod: u32,
13154            owner: alloy::sol_types::private::Address,
13155        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13156            self.call_builder(
13157                &initializeCall {
13158                    _genesis,
13159                    _genesisStakeTableState,
13160                    _stateHistoryRetentionPeriod,
13161                    owner,
13162                },
13163            )
13164        }
13165        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13166        pub fn isPermissionedProverEnabled(
13167            &self,
13168        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13169            self.call_builder(&isPermissionedProverEnabledCall)
13170        }
13171        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13172        pub fn lagOverEscapeHatchThreshold(
13173            &self,
13174            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13175            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13176        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13177            self.call_builder(
13178                &lagOverEscapeHatchThresholdCall {
13179                    blockNumber,
13180                    blockThreshold,
13181                },
13182            )
13183        }
13184        ///Creates a new call builder for the [`newFinalizedState`] function.
13185        pub fn newFinalizedState(
13186            &self,
13187            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13188            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13189        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13190            self.call_builder(
13191                &newFinalizedStateCall {
13192                    newState,
13193                    proof,
13194                },
13195            )
13196        }
13197        ///Creates a new call builder for the [`owner`] function.
13198        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13199            self.call_builder(&ownerCall)
13200        }
13201        ///Creates a new call builder for the [`permissionedProver`] function.
13202        pub fn permissionedProver(
13203            &self,
13204        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13205            self.call_builder(&permissionedProverCall)
13206        }
13207        ///Creates a new call builder for the [`proxiableUUID`] function.
13208        pub fn proxiableUUID(
13209            &self,
13210        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13211            self.call_builder(&proxiableUUIDCall)
13212        }
13213        ///Creates a new call builder for the [`renounceOwnership`] function.
13214        pub fn renounceOwnership(
13215            &self,
13216        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13217            self.call_builder(&renounceOwnershipCall)
13218        }
13219        ///Creates a new call builder for the [`setPermissionedProver`] function.
13220        pub fn setPermissionedProver(
13221            &self,
13222            prover: alloy::sol_types::private::Address,
13223        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13224            self.call_builder(
13225                &setPermissionedProverCall {
13226                    prover,
13227                },
13228            )
13229        }
13230        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13231        pub fn setstateHistoryRetentionPeriod(
13232            &self,
13233            historySeconds: u32,
13234        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13235            self.call_builder(
13236                &setstateHistoryRetentionPeriodCall {
13237                    historySeconds,
13238                },
13239            )
13240        }
13241        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13242        pub fn stateHistoryCommitments(
13243            &self,
13244            _0: alloy::sol_types::private::primitives::aliases::U256,
13245        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13246            self.call_builder(&stateHistoryCommitmentsCall(_0))
13247        }
13248        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13249        pub fn stateHistoryFirstIndex(
13250            &self,
13251        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13252            self.call_builder(&stateHistoryFirstIndexCall)
13253        }
13254        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13255        pub fn stateHistoryRetentionPeriod(
13256            &self,
13257        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13258            self.call_builder(&stateHistoryRetentionPeriodCall)
13259        }
13260        ///Creates a new call builder for the [`transferOwnership`] function.
13261        pub fn transferOwnership(
13262            &self,
13263            newOwner: alloy::sol_types::private::Address,
13264        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13265            self.call_builder(&transferOwnershipCall { newOwner })
13266        }
13267        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13268        pub fn upgradeToAndCall(
13269            &self,
13270            newImplementation: alloy::sol_types::private::Address,
13271            data: alloy::sol_types::private::Bytes,
13272        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13273            self.call_builder(
13274                &upgradeToAndCallCall {
13275                    newImplementation,
13276                    data,
13277                },
13278            )
13279        }
13280    }
13281    /// Event filters.
13282    #[automatically_derived]
13283    impl<
13284        P: alloy_contract::private::Provider<N>,
13285        N: alloy_contract::private::Network,
13286    > LightClientArbitrumInstance<P, N> {
13287        /// Creates a new event filter using this contract instance's provider and address.
13288        ///
13289        /// Note that the type can be any event, not just those defined in this contract.
13290        /// Prefer using the other methods for building type-safe event filters.
13291        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13292            &self,
13293        ) -> alloy_contract::Event<&P, E, N> {
13294            alloy_contract::Event::new_sol(&self.provider, &self.address)
13295        }
13296        ///Creates a new event filter for the [`Initialized`] event.
13297        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13298            self.event_filter::<Initialized>()
13299        }
13300        ///Creates a new event filter for the [`NewState`] event.
13301        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13302            self.event_filter::<NewState>()
13303        }
13304        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13305        pub fn OwnershipTransferred_filter(
13306            &self,
13307        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13308            self.event_filter::<OwnershipTransferred>()
13309        }
13310        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13311        pub fn PermissionedProverNotRequired_filter(
13312            &self,
13313        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13314            self.event_filter::<PermissionedProverNotRequired>()
13315        }
13316        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13317        pub fn PermissionedProverRequired_filter(
13318            &self,
13319        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13320            self.event_filter::<PermissionedProverRequired>()
13321        }
13322        ///Creates a new event filter for the [`Upgrade`] event.
13323        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13324            self.event_filter::<Upgrade>()
13325        }
13326        ///Creates a new event filter for the [`Upgraded`] event.
13327        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13328            self.event_filter::<Upgraded>()
13329        }
13330    }
13331}