hotshot_contract_adapter/bindings/
light_client_arbitrum_v2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
636    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive()]
651    /**```solidity
652struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive()]
1374    /**```solidity
1375struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241}
2242```*/
2243#[allow(
2244    non_camel_case_types,
2245    non_snake_case,
2246    clippy::pub_underscore_fields,
2247    clippy::style,
2248    clippy::empty_structs_with_brackets
2249)]
2250pub mod LightClient {
2251    use super::*;
2252    use alloy::sol_types as alloy_sol_types;
2253    #[derive(serde::Serialize, serde::Deserialize)]
2254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2255    /**```solidity
2256struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2257```*/
2258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2259    #[derive(Clone)]
2260    pub struct LightClientState {
2261        #[allow(missing_docs)]
2262        pub viewNum: u64,
2263        #[allow(missing_docs)]
2264        pub blockHeight: u64,
2265        #[allow(missing_docs)]
2266        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2267    }
2268    #[allow(
2269        non_camel_case_types,
2270        non_snake_case,
2271        clippy::pub_underscore_fields,
2272        clippy::style
2273    )]
2274    const _: () = {
2275        use alloy::sol_types as alloy_sol_types;
2276        #[doc(hidden)]
2277        #[allow(dead_code)]
2278        type UnderlyingSolTuple<'a> = (
2279            alloy::sol_types::sol_data::Uint<64>,
2280            alloy::sol_types::sol_data::Uint<64>,
2281            BN254::ScalarField,
2282        );
2283        #[doc(hidden)]
2284        type UnderlyingRustTuple<'a> = (
2285            u64,
2286            u64,
2287            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2288        );
2289        #[cfg(test)]
2290        #[allow(dead_code, unreachable_patterns)]
2291        fn _type_assertion(
2292            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2293        ) {
2294            match _t {
2295                alloy_sol_types::private::AssertTypeEq::<
2296                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2297                >(_) => {}
2298            }
2299        }
2300        #[automatically_derived]
2301        #[doc(hidden)]
2302        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2303            fn from(value: LightClientState) -> Self {
2304                (value.viewNum, value.blockHeight, value.blockCommRoot)
2305            }
2306        }
2307        #[automatically_derived]
2308        #[doc(hidden)]
2309        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2310            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2311                Self {
2312                    viewNum: tuple.0,
2313                    blockHeight: tuple.1,
2314                    blockCommRoot: tuple.2,
2315                }
2316            }
2317        }
2318        #[automatically_derived]
2319        impl alloy_sol_types::SolValue for LightClientState {
2320            type SolType = Self;
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2324            #[inline]
2325            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2326                (
2327                    <alloy::sol_types::sol_data::Uint<
2328                        64,
2329                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2330                    <alloy::sol_types::sol_data::Uint<
2331                        64,
2332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2333                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2334                        &self.blockCommRoot,
2335                    ),
2336                )
2337            }
2338            #[inline]
2339            fn stv_abi_encoded_size(&self) -> usize {
2340                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2341                    return size;
2342                }
2343                let tuple = <UnderlyingRustTuple<
2344                    '_,
2345                > as ::core::convert::From<Self>>::from(self.clone());
2346                <UnderlyingSolTuple<
2347                    '_,
2348                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2349            }
2350            #[inline]
2351            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2352                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2353            }
2354            #[inline]
2355            fn stv_abi_encode_packed_to(
2356                &self,
2357                out: &mut alloy_sol_types::private::Vec<u8>,
2358            ) {
2359                let tuple = <UnderlyingRustTuple<
2360                    '_,
2361                > as ::core::convert::From<Self>>::from(self.clone());
2362                <UnderlyingSolTuple<
2363                    '_,
2364                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2365            }
2366            #[inline]
2367            fn stv_abi_packed_encoded_size(&self) -> usize {
2368                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2369                    return size;
2370                }
2371                let tuple = <UnderlyingRustTuple<
2372                    '_,
2373                > as ::core::convert::From<Self>>::from(self.clone());
2374                <UnderlyingSolTuple<
2375                    '_,
2376                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2377            }
2378        }
2379        #[automatically_derived]
2380        impl alloy_sol_types::SolType for LightClientState {
2381            type RustType = Self;
2382            type Token<'a> = <UnderlyingSolTuple<
2383                'a,
2384            > as alloy_sol_types::SolType>::Token<'a>;
2385            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2386            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2387                '_,
2388            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2389            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2390                '_,
2391            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2392            #[inline]
2393            fn valid_token(token: &Self::Token<'_>) -> bool {
2394                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2395            }
2396            #[inline]
2397            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2398                let tuple = <UnderlyingSolTuple<
2399                    '_,
2400                > as alloy_sol_types::SolType>::detokenize(token);
2401                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2402            }
2403        }
2404        #[automatically_derived]
2405        impl alloy_sol_types::SolStruct for LightClientState {
2406            const NAME: &'static str = "LightClientState";
2407            #[inline]
2408            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2409                alloy_sol_types::private::Cow::Borrowed(
2410                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2411                )
2412            }
2413            #[inline]
2414            fn eip712_components() -> alloy_sol_types::private::Vec<
2415                alloy_sol_types::private::Cow<'static, str>,
2416            > {
2417                alloy_sol_types::private::Vec::new()
2418            }
2419            #[inline]
2420            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2421                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2422            }
2423            #[inline]
2424            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2425                [
2426                    <alloy::sol_types::sol_data::Uint<
2427                        64,
2428                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2429                        .0,
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2433                        .0,
2434                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2435                            &self.blockCommRoot,
2436                        )
2437                        .0,
2438                ]
2439                    .concat()
2440            }
2441        }
2442        #[automatically_derived]
2443        impl alloy_sol_types::EventTopic for LightClientState {
2444            #[inline]
2445            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2446                0usize
2447                    + <alloy::sol_types::sol_data::Uint<
2448                        64,
2449                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2450                        &rust.viewNum,
2451                    )
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.blockHeight,
2456                    )
2457                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.blockCommRoot,
2459                    )
2460            }
2461            #[inline]
2462            fn encode_topic_preimage(
2463                rust: &Self::RustType,
2464                out: &mut alloy_sol_types::private::Vec<u8>,
2465            ) {
2466                out.reserve(
2467                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2468                );
2469                <alloy::sol_types::sol_data::Uint<
2470                    64,
2471                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2472                    &rust.viewNum,
2473                    out,
2474                );
2475                <alloy::sol_types::sol_data::Uint<
2476                    64,
2477                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2478                    &rust.blockHeight,
2479                    out,
2480                );
2481                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockCommRoot,
2483                    out,
2484                );
2485            }
2486            #[inline]
2487            fn encode_topic(
2488                rust: &Self::RustType,
2489            ) -> alloy_sol_types::abi::token::WordToken {
2490                let mut out = alloy_sol_types::private::Vec::new();
2491                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2492                    rust,
2493                    &mut out,
2494                );
2495                alloy_sol_types::abi::token::WordToken(
2496                    alloy_sol_types::private::keccak256(out),
2497                )
2498            }
2499        }
2500    };
2501    #[derive(serde::Serialize, serde::Deserialize)]
2502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2503    /**```solidity
2504struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2505```*/
2506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2507    #[derive(Clone)]
2508    pub struct StakeTableState {
2509        #[allow(missing_docs)]
2510        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2511        #[allow(missing_docs)]
2512        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2513        #[allow(missing_docs)]
2514        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2515        #[allow(missing_docs)]
2516        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517    }
2518    #[allow(
2519        non_camel_case_types,
2520        non_snake_case,
2521        clippy::pub_underscore_fields,
2522        clippy::style
2523    )]
2524    const _: () = {
2525        use alloy::sol_types as alloy_sol_types;
2526        #[doc(hidden)]
2527        #[allow(dead_code)]
2528        type UnderlyingSolTuple<'a> = (
2529            alloy::sol_types::sol_data::Uint<256>,
2530            BN254::ScalarField,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533        );
2534        #[doc(hidden)]
2535        type UnderlyingRustTuple<'a> = (
2536            alloy::sol_types::private::primitives::aliases::U256,
2537            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540        );
2541        #[cfg(test)]
2542        #[allow(dead_code, unreachable_patterns)]
2543        fn _type_assertion(
2544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2545        ) {
2546            match _t {
2547                alloy_sol_types::private::AssertTypeEq::<
2548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2549                >(_) => {}
2550            }
2551        }
2552        #[automatically_derived]
2553        #[doc(hidden)]
2554        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2555            fn from(value: StakeTableState) -> Self {
2556                (
2557                    value.threshold,
2558                    value.blsKeyComm,
2559                    value.schnorrKeyComm,
2560                    value.amountComm,
2561                )
2562            }
2563        }
2564        #[automatically_derived]
2565        #[doc(hidden)]
2566        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2567            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2568                Self {
2569                    threshold: tuple.0,
2570                    blsKeyComm: tuple.1,
2571                    schnorrKeyComm: tuple.2,
2572                    amountComm: tuple.3,
2573                }
2574            }
2575        }
2576        #[automatically_derived]
2577        impl alloy_sol_types::SolValue for StakeTableState {
2578            type SolType = Self;
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2582            #[inline]
2583            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2584                (
2585                    <alloy::sol_types::sol_data::Uint<
2586                        256,
2587                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2588                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2589                        &self.blsKeyComm,
2590                    ),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.schnorrKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.amountComm,
2596                    ),
2597                )
2598            }
2599            #[inline]
2600            fn stv_abi_encoded_size(&self) -> usize {
2601                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2602                    return size;
2603                }
2604                let tuple = <UnderlyingRustTuple<
2605                    '_,
2606                > as ::core::convert::From<Self>>::from(self.clone());
2607                <UnderlyingSolTuple<
2608                    '_,
2609                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2610            }
2611            #[inline]
2612            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2613                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2614            }
2615            #[inline]
2616            fn stv_abi_encode_packed_to(
2617                &self,
2618                out: &mut alloy_sol_types::private::Vec<u8>,
2619            ) {
2620                let tuple = <UnderlyingRustTuple<
2621                    '_,
2622                > as ::core::convert::From<Self>>::from(self.clone());
2623                <UnderlyingSolTuple<
2624                    '_,
2625                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2626            }
2627            #[inline]
2628            fn stv_abi_packed_encoded_size(&self) -> usize {
2629                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2630                    return size;
2631                }
2632                let tuple = <UnderlyingRustTuple<
2633                    '_,
2634                > as ::core::convert::From<Self>>::from(self.clone());
2635                <UnderlyingSolTuple<
2636                    '_,
2637                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2638            }
2639        }
2640        #[automatically_derived]
2641        impl alloy_sol_types::SolType for StakeTableState {
2642            type RustType = Self;
2643            type Token<'a> = <UnderlyingSolTuple<
2644                'a,
2645            > as alloy_sol_types::SolType>::Token<'a>;
2646            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2647            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2648                '_,
2649            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2650            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2653            #[inline]
2654            fn valid_token(token: &Self::Token<'_>) -> bool {
2655                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2656            }
2657            #[inline]
2658            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2659                let tuple = <UnderlyingSolTuple<
2660                    '_,
2661                > as alloy_sol_types::SolType>::detokenize(token);
2662                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2663            }
2664        }
2665        #[automatically_derived]
2666        impl alloy_sol_types::SolStruct for StakeTableState {
2667            const NAME: &'static str = "StakeTableState";
2668            #[inline]
2669            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2670                alloy_sol_types::private::Cow::Borrowed(
2671                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2672                )
2673            }
2674            #[inline]
2675            fn eip712_components() -> alloy_sol_types::private::Vec<
2676                alloy_sol_types::private::Cow<'static, str>,
2677            > {
2678                alloy_sol_types::private::Vec::new()
2679            }
2680            #[inline]
2681            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2682                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2683            }
2684            #[inline]
2685            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2686                [
2687                    <alloy::sol_types::sol_data::Uint<
2688                        256,
2689                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2690                        .0,
2691                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2692                            &self.blsKeyComm,
2693                        )
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.schnorrKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.amountComm,
2701                        )
2702                        .0,
2703                ]
2704                    .concat()
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::EventTopic for StakeTableState {
2709            #[inline]
2710            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2711                0usize
2712                    + <alloy::sol_types::sol_data::Uint<
2713                        256,
2714                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2715                        &rust.threshold,
2716                    )
2717                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.blsKeyComm,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.schnorrKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.amountComm,
2725                    )
2726            }
2727            #[inline]
2728            fn encode_topic_preimage(
2729                rust: &Self::RustType,
2730                out: &mut alloy_sol_types::private::Vec<u8>,
2731            ) {
2732                out.reserve(
2733                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2734                );
2735                <alloy::sol_types::sol_data::Uint<
2736                    256,
2737                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2738                    &rust.threshold,
2739                    out,
2740                );
2741                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.blsKeyComm,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.schnorrKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.amountComm,
2751                    out,
2752                );
2753            }
2754            #[inline]
2755            fn encode_topic(
2756                rust: &Self::RustType,
2757            ) -> alloy_sol_types::abi::token::WordToken {
2758                let mut out = alloy_sol_types::private::Vec::new();
2759                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2760                    rust,
2761                    &mut out,
2762                );
2763                alloy_sol_types::abi::token::WordToken(
2764                    alloy_sol_types::private::keccak256(out),
2765                )
2766            }
2767        }
2768    };
2769    use alloy::contract as alloy_contract;
2770    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2771
2772See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2773    #[inline]
2774    pub const fn new<
2775        P: alloy_contract::private::Provider<N>,
2776        N: alloy_contract::private::Network,
2777    >(
2778        address: alloy_sol_types::private::Address,
2779        __provider: P,
2780    ) -> LightClientInstance<P, N> {
2781        LightClientInstance::<P, N>::new(address, __provider)
2782    }
2783    /**A [`LightClient`](self) instance.
2784
2785Contains type-safe methods for interacting with an on-chain instance of the
2786[`LightClient`](self) contract located at a given `address`, using a given
2787provider `P`.
2788
2789If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2790documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2791be used to deploy a new instance of the contract.
2792
2793See the [module-level documentation](self) for all the available methods.*/
2794    #[derive(Clone)]
2795    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2796        address: alloy_sol_types::private::Address,
2797        provider: P,
2798        _network: ::core::marker::PhantomData<N>,
2799    }
2800    #[automatically_derived]
2801    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2802        #[inline]
2803        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2804            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2805        }
2806    }
2807    /// Instantiation and getters/setters.
2808    impl<
2809        P: alloy_contract::private::Provider<N>,
2810        N: alloy_contract::private::Network,
2811    > LightClientInstance<P, N> {
2812        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2813
2814See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2815        #[inline]
2816        pub const fn new(
2817            address: alloy_sol_types::private::Address,
2818            __provider: P,
2819        ) -> Self {
2820            Self {
2821                address,
2822                provider: __provider,
2823                _network: ::core::marker::PhantomData,
2824            }
2825        }
2826        /// Returns a reference to the address.
2827        #[inline]
2828        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2829            &self.address
2830        }
2831        /// Sets the address.
2832        #[inline]
2833        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2834            self.address = address;
2835        }
2836        /// Sets the address and returns `self`.
2837        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2838            self.set_address(address);
2839            self
2840        }
2841        /// Returns a reference to the provider.
2842        #[inline]
2843        pub const fn provider(&self) -> &P {
2844            &self.provider
2845        }
2846    }
2847    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2848        /// Clones the provider and returns a new instance with the cloned provider.
2849        #[inline]
2850        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2851            LightClientInstance {
2852                address: self.address,
2853                provider: ::core::clone::Clone::clone(&self.provider),
2854                _network: ::core::marker::PhantomData,
2855            }
2856        }
2857    }
2858    /// Function calls.
2859    impl<
2860        P: alloy_contract::private::Provider<N>,
2861        N: alloy_contract::private::Network,
2862    > LightClientInstance<P, N> {
2863        /// Creates a new call builder using this contract instance's provider and address.
2864        ///
2865        /// Note that the call can be any function call, not just those defined in this
2866        /// contract. Prefer using the other methods for building type-safe contract calls.
2867        pub fn call_builder<C: alloy_sol_types::SolCall>(
2868            &self,
2869            call: &C,
2870        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2871            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2872        }
2873    }
2874    /// Event filters.
2875    impl<
2876        P: alloy_contract::private::Provider<N>,
2877        N: alloy_contract::private::Network,
2878    > LightClientInstance<P, N> {
2879        /// Creates a new event filter using this contract instance's provider and address.
2880        ///
2881        /// Note that the type can be any event, not just those defined in this contract.
2882        /// Prefer using the other methods for building type-safe event filters.
2883        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2884            &self,
2885        ) -> alloy_contract::Event<&P, E, N> {
2886            alloy_contract::Event::new_sol(&self.provider, &self.address)
2887        }
2888    }
2889}
2890/**
2891
2892Generated by the following Solidity interface...
2893```solidity
2894library BN254 {
2895    type BaseField is uint256;
2896    type ScalarField is uint256;
2897    struct G1Point {
2898        BaseField x;
2899        BaseField y;
2900    }
2901}
2902
2903library IPlonkVerifier {
2904    struct PlonkProof {
2905        BN254.G1Point wire0;
2906        BN254.G1Point wire1;
2907        BN254.G1Point wire2;
2908        BN254.G1Point wire3;
2909        BN254.G1Point wire4;
2910        BN254.G1Point prodPerm;
2911        BN254.G1Point split0;
2912        BN254.G1Point split1;
2913        BN254.G1Point split2;
2914        BN254.G1Point split3;
2915        BN254.G1Point split4;
2916        BN254.G1Point zeta;
2917        BN254.G1Point zetaOmega;
2918        BN254.ScalarField wireEval0;
2919        BN254.ScalarField wireEval1;
2920        BN254.ScalarField wireEval2;
2921        BN254.ScalarField wireEval3;
2922        BN254.ScalarField wireEval4;
2923        BN254.ScalarField sigmaEval0;
2924        BN254.ScalarField sigmaEval1;
2925        BN254.ScalarField sigmaEval2;
2926        BN254.ScalarField sigmaEval3;
2927        BN254.ScalarField prodPermZetaOmegaEval;
2928    }
2929    struct VerifyingKey {
2930        uint256 domainSize;
2931        uint256 numInputs;
2932        BN254.G1Point sigma0;
2933        BN254.G1Point sigma1;
2934        BN254.G1Point sigma2;
2935        BN254.G1Point sigma3;
2936        BN254.G1Point sigma4;
2937        BN254.G1Point q1;
2938        BN254.G1Point q2;
2939        BN254.G1Point q3;
2940        BN254.G1Point q4;
2941        BN254.G1Point qM12;
2942        BN254.G1Point qM34;
2943        BN254.G1Point qO;
2944        BN254.G1Point qC;
2945        BN254.G1Point qH1;
2946        BN254.G1Point qH2;
2947        BN254.G1Point qH3;
2948        BN254.G1Point qH4;
2949        BN254.G1Point qEcc;
2950        bytes32 g2LSB;
2951        bytes32 g2MSB;
2952    }
2953}
2954
2955library LightClient {
2956    struct LightClientState {
2957        uint64 viewNum;
2958        uint64 blockHeight;
2959        BN254.ScalarField blockCommRoot;
2960    }
2961    struct StakeTableState {
2962        uint256 threshold;
2963        BN254.ScalarField blsKeyComm;
2964        BN254.ScalarField schnorrKeyComm;
2965        BN254.ScalarField amountComm;
2966    }
2967}
2968
2969interface LightClientArbitrumV2 {
2970    error AddressEmptyCode(address target);
2971    error DeprecatedApi();
2972    error ERC1967InvalidImplementation(address implementation);
2973    error ERC1967NonPayable();
2974    error FailedInnerCall();
2975    error InsufficientSnapshotHistory();
2976    error InvalidAddress();
2977    error InvalidArgs();
2978    error InvalidHotShotBlockForCommitmentCheck();
2979    error InvalidInitialization();
2980    error InvalidMaxStateHistory();
2981    error InvalidProof();
2982    error InvalidScalar();
2983    error MissingEpochRootUpdate();
2984    error NoChangeRequired();
2985    error NotInitializing();
2986    error OutdatedState();
2987    error OwnableInvalidOwner(address owner);
2988    error OwnableUnauthorizedAccount(address account);
2989    error OwnershipCannotBeRenounced();
2990    error ProverNotPermissioned();
2991    error UUPSUnauthorizedCallContext();
2992    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2993    error WrongStakeTableUsed();
2994
2995    event Initialized(uint64 version);
2996    event NewEpoch(uint64 epoch);
2997    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2998    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2999    event PermissionedProverNotRequired();
3000    event PermissionedProverRequired(address permissionedProver);
3001    event Upgrade(address implementation);
3002    event Upgraded(address indexed implementation);
3003
3004    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3005    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3006    function blocksPerEpoch() external view returns (uint64);
3007    function currentBlockNumber() external view returns (uint256);
3008    function currentEpoch() external view returns (uint64);
3009    function disablePermissionedProverMode() external;
3010    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3011    function epochStartBlock() external view returns (uint64);
3012    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3013    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3014    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3015    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3016    function getStateHistoryCount() external view returns (uint256);
3017    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3018    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3019    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3020    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3021    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3022    function isPermissionedProverEnabled() external view returns (bool);
3023    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3024    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3025    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3026    function owner() external view returns (address);
3027    function permissionedProver() external view returns (address);
3028    function proxiableUUID() external view returns (bytes32);
3029    function renounceOwnership() external;
3030    function setPermissionedProver(address prover) external;
3031    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3032    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3033    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3034    function stateHistoryFirstIndex() external view returns (uint64);
3035    function stateHistoryRetentionPeriod() external view returns (uint32);
3036    function transferOwnership(address newOwner) external;
3037    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3038    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3039    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3040}
3041```
3042
3043...which was generated by the following JSON ABI:
3044```json
3045[
3046  {
3047    "type": "function",
3048    "name": "UPGRADE_INTERFACE_VERSION",
3049    "inputs": [],
3050    "outputs": [
3051      {
3052        "name": "",
3053        "type": "string",
3054        "internalType": "string"
3055      }
3056    ],
3057    "stateMutability": "view"
3058  },
3059  {
3060    "type": "function",
3061    "name": "_getVk",
3062    "inputs": [],
3063    "outputs": [
3064      {
3065        "name": "vk",
3066        "type": "tuple",
3067        "internalType": "struct IPlonkVerifier.VerifyingKey",
3068        "components": [
3069          {
3070            "name": "domainSize",
3071            "type": "uint256",
3072            "internalType": "uint256"
3073          },
3074          {
3075            "name": "numInputs",
3076            "type": "uint256",
3077            "internalType": "uint256"
3078          },
3079          {
3080            "name": "sigma0",
3081            "type": "tuple",
3082            "internalType": "struct BN254.G1Point",
3083            "components": [
3084              {
3085                "name": "x",
3086                "type": "uint256",
3087                "internalType": "BN254.BaseField"
3088              },
3089              {
3090                "name": "y",
3091                "type": "uint256",
3092                "internalType": "BN254.BaseField"
3093              }
3094            ]
3095          },
3096          {
3097            "name": "sigma1",
3098            "type": "tuple",
3099            "internalType": "struct BN254.G1Point",
3100            "components": [
3101              {
3102                "name": "x",
3103                "type": "uint256",
3104                "internalType": "BN254.BaseField"
3105              },
3106              {
3107                "name": "y",
3108                "type": "uint256",
3109                "internalType": "BN254.BaseField"
3110              }
3111            ]
3112          },
3113          {
3114            "name": "sigma2",
3115            "type": "tuple",
3116            "internalType": "struct BN254.G1Point",
3117            "components": [
3118              {
3119                "name": "x",
3120                "type": "uint256",
3121                "internalType": "BN254.BaseField"
3122              },
3123              {
3124                "name": "y",
3125                "type": "uint256",
3126                "internalType": "BN254.BaseField"
3127              }
3128            ]
3129          },
3130          {
3131            "name": "sigma3",
3132            "type": "tuple",
3133            "internalType": "struct BN254.G1Point",
3134            "components": [
3135              {
3136                "name": "x",
3137                "type": "uint256",
3138                "internalType": "BN254.BaseField"
3139              },
3140              {
3141                "name": "y",
3142                "type": "uint256",
3143                "internalType": "BN254.BaseField"
3144              }
3145            ]
3146          },
3147          {
3148            "name": "sigma4",
3149            "type": "tuple",
3150            "internalType": "struct BN254.G1Point",
3151            "components": [
3152              {
3153                "name": "x",
3154                "type": "uint256",
3155                "internalType": "BN254.BaseField"
3156              },
3157              {
3158                "name": "y",
3159                "type": "uint256",
3160                "internalType": "BN254.BaseField"
3161              }
3162            ]
3163          },
3164          {
3165            "name": "q1",
3166            "type": "tuple",
3167            "internalType": "struct BN254.G1Point",
3168            "components": [
3169              {
3170                "name": "x",
3171                "type": "uint256",
3172                "internalType": "BN254.BaseField"
3173              },
3174              {
3175                "name": "y",
3176                "type": "uint256",
3177                "internalType": "BN254.BaseField"
3178              }
3179            ]
3180          },
3181          {
3182            "name": "q2",
3183            "type": "tuple",
3184            "internalType": "struct BN254.G1Point",
3185            "components": [
3186              {
3187                "name": "x",
3188                "type": "uint256",
3189                "internalType": "BN254.BaseField"
3190              },
3191              {
3192                "name": "y",
3193                "type": "uint256",
3194                "internalType": "BN254.BaseField"
3195              }
3196            ]
3197          },
3198          {
3199            "name": "q3",
3200            "type": "tuple",
3201            "internalType": "struct BN254.G1Point",
3202            "components": [
3203              {
3204                "name": "x",
3205                "type": "uint256",
3206                "internalType": "BN254.BaseField"
3207              },
3208              {
3209                "name": "y",
3210                "type": "uint256",
3211                "internalType": "BN254.BaseField"
3212              }
3213            ]
3214          },
3215          {
3216            "name": "q4",
3217            "type": "tuple",
3218            "internalType": "struct BN254.G1Point",
3219            "components": [
3220              {
3221                "name": "x",
3222                "type": "uint256",
3223                "internalType": "BN254.BaseField"
3224              },
3225              {
3226                "name": "y",
3227                "type": "uint256",
3228                "internalType": "BN254.BaseField"
3229              }
3230            ]
3231          },
3232          {
3233            "name": "qM12",
3234            "type": "tuple",
3235            "internalType": "struct BN254.G1Point",
3236            "components": [
3237              {
3238                "name": "x",
3239                "type": "uint256",
3240                "internalType": "BN254.BaseField"
3241              },
3242              {
3243                "name": "y",
3244                "type": "uint256",
3245                "internalType": "BN254.BaseField"
3246              }
3247            ]
3248          },
3249          {
3250            "name": "qM34",
3251            "type": "tuple",
3252            "internalType": "struct BN254.G1Point",
3253            "components": [
3254              {
3255                "name": "x",
3256                "type": "uint256",
3257                "internalType": "BN254.BaseField"
3258              },
3259              {
3260                "name": "y",
3261                "type": "uint256",
3262                "internalType": "BN254.BaseField"
3263              }
3264            ]
3265          },
3266          {
3267            "name": "qO",
3268            "type": "tuple",
3269            "internalType": "struct BN254.G1Point",
3270            "components": [
3271              {
3272                "name": "x",
3273                "type": "uint256",
3274                "internalType": "BN254.BaseField"
3275              },
3276              {
3277                "name": "y",
3278                "type": "uint256",
3279                "internalType": "BN254.BaseField"
3280              }
3281            ]
3282          },
3283          {
3284            "name": "qC",
3285            "type": "tuple",
3286            "internalType": "struct BN254.G1Point",
3287            "components": [
3288              {
3289                "name": "x",
3290                "type": "uint256",
3291                "internalType": "BN254.BaseField"
3292              },
3293              {
3294                "name": "y",
3295                "type": "uint256",
3296                "internalType": "BN254.BaseField"
3297              }
3298            ]
3299          },
3300          {
3301            "name": "qH1",
3302            "type": "tuple",
3303            "internalType": "struct BN254.G1Point",
3304            "components": [
3305              {
3306                "name": "x",
3307                "type": "uint256",
3308                "internalType": "BN254.BaseField"
3309              },
3310              {
3311                "name": "y",
3312                "type": "uint256",
3313                "internalType": "BN254.BaseField"
3314              }
3315            ]
3316          },
3317          {
3318            "name": "qH2",
3319            "type": "tuple",
3320            "internalType": "struct BN254.G1Point",
3321            "components": [
3322              {
3323                "name": "x",
3324                "type": "uint256",
3325                "internalType": "BN254.BaseField"
3326              },
3327              {
3328                "name": "y",
3329                "type": "uint256",
3330                "internalType": "BN254.BaseField"
3331              }
3332            ]
3333          },
3334          {
3335            "name": "qH3",
3336            "type": "tuple",
3337            "internalType": "struct BN254.G1Point",
3338            "components": [
3339              {
3340                "name": "x",
3341                "type": "uint256",
3342                "internalType": "BN254.BaseField"
3343              },
3344              {
3345                "name": "y",
3346                "type": "uint256",
3347                "internalType": "BN254.BaseField"
3348              }
3349            ]
3350          },
3351          {
3352            "name": "qH4",
3353            "type": "tuple",
3354            "internalType": "struct BN254.G1Point",
3355            "components": [
3356              {
3357                "name": "x",
3358                "type": "uint256",
3359                "internalType": "BN254.BaseField"
3360              },
3361              {
3362                "name": "y",
3363                "type": "uint256",
3364                "internalType": "BN254.BaseField"
3365              }
3366            ]
3367          },
3368          {
3369            "name": "qEcc",
3370            "type": "tuple",
3371            "internalType": "struct BN254.G1Point",
3372            "components": [
3373              {
3374                "name": "x",
3375                "type": "uint256",
3376                "internalType": "BN254.BaseField"
3377              },
3378              {
3379                "name": "y",
3380                "type": "uint256",
3381                "internalType": "BN254.BaseField"
3382              }
3383            ]
3384          },
3385          {
3386            "name": "g2LSB",
3387            "type": "bytes32",
3388            "internalType": "bytes32"
3389          },
3390          {
3391            "name": "g2MSB",
3392            "type": "bytes32",
3393            "internalType": "bytes32"
3394          }
3395        ]
3396      }
3397    ],
3398    "stateMutability": "pure"
3399  },
3400  {
3401    "type": "function",
3402    "name": "blocksPerEpoch",
3403    "inputs": [],
3404    "outputs": [
3405      {
3406        "name": "",
3407        "type": "uint64",
3408        "internalType": "uint64"
3409      }
3410    ],
3411    "stateMutability": "view"
3412  },
3413  {
3414    "type": "function",
3415    "name": "currentBlockNumber",
3416    "inputs": [],
3417    "outputs": [
3418      {
3419        "name": "",
3420        "type": "uint256",
3421        "internalType": "uint256"
3422      }
3423    ],
3424    "stateMutability": "view"
3425  },
3426  {
3427    "type": "function",
3428    "name": "currentEpoch",
3429    "inputs": [],
3430    "outputs": [
3431      {
3432        "name": "",
3433        "type": "uint64",
3434        "internalType": "uint64"
3435      }
3436    ],
3437    "stateMutability": "view"
3438  },
3439  {
3440    "type": "function",
3441    "name": "disablePermissionedProverMode",
3442    "inputs": [],
3443    "outputs": [],
3444    "stateMutability": "nonpayable"
3445  },
3446  {
3447    "type": "function",
3448    "name": "epochFromBlockNumber",
3449    "inputs": [
3450      {
3451        "name": "_blockNum",
3452        "type": "uint64",
3453        "internalType": "uint64"
3454      },
3455      {
3456        "name": "_blocksPerEpoch",
3457        "type": "uint64",
3458        "internalType": "uint64"
3459      }
3460    ],
3461    "outputs": [
3462      {
3463        "name": "",
3464        "type": "uint64",
3465        "internalType": "uint64"
3466      }
3467    ],
3468    "stateMutability": "pure"
3469  },
3470  {
3471    "type": "function",
3472    "name": "epochStartBlock",
3473    "inputs": [],
3474    "outputs": [
3475      {
3476        "name": "",
3477        "type": "uint64",
3478        "internalType": "uint64"
3479      }
3480    ],
3481    "stateMutability": "view"
3482  },
3483  {
3484    "type": "function",
3485    "name": "finalizedState",
3486    "inputs": [],
3487    "outputs": [
3488      {
3489        "name": "viewNum",
3490        "type": "uint64",
3491        "internalType": "uint64"
3492      },
3493      {
3494        "name": "blockHeight",
3495        "type": "uint64",
3496        "internalType": "uint64"
3497      },
3498      {
3499        "name": "blockCommRoot",
3500        "type": "uint256",
3501        "internalType": "BN254.ScalarField"
3502      }
3503    ],
3504    "stateMutability": "view"
3505  },
3506  {
3507    "type": "function",
3508    "name": "genesisStakeTableState",
3509    "inputs": [],
3510    "outputs": [
3511      {
3512        "name": "threshold",
3513        "type": "uint256",
3514        "internalType": "uint256"
3515      },
3516      {
3517        "name": "blsKeyComm",
3518        "type": "uint256",
3519        "internalType": "BN254.ScalarField"
3520      },
3521      {
3522        "name": "schnorrKeyComm",
3523        "type": "uint256",
3524        "internalType": "BN254.ScalarField"
3525      },
3526      {
3527        "name": "amountComm",
3528        "type": "uint256",
3529        "internalType": "BN254.ScalarField"
3530      }
3531    ],
3532    "stateMutability": "view"
3533  },
3534  {
3535    "type": "function",
3536    "name": "genesisState",
3537    "inputs": [],
3538    "outputs": [
3539      {
3540        "name": "viewNum",
3541        "type": "uint64",
3542        "internalType": "uint64"
3543      },
3544      {
3545        "name": "blockHeight",
3546        "type": "uint64",
3547        "internalType": "uint64"
3548      },
3549      {
3550        "name": "blockCommRoot",
3551        "type": "uint256",
3552        "internalType": "BN254.ScalarField"
3553      }
3554    ],
3555    "stateMutability": "view"
3556  },
3557  {
3558    "type": "function",
3559    "name": "getHotShotCommitment",
3560    "inputs": [
3561      {
3562        "name": "hotShotBlockHeight",
3563        "type": "uint256",
3564        "internalType": "uint256"
3565      }
3566    ],
3567    "outputs": [
3568      {
3569        "name": "hotShotBlockCommRoot",
3570        "type": "uint256",
3571        "internalType": "BN254.ScalarField"
3572      },
3573      {
3574        "name": "hotshotBlockHeight",
3575        "type": "uint64",
3576        "internalType": "uint64"
3577      }
3578    ],
3579    "stateMutability": "view"
3580  },
3581  {
3582    "type": "function",
3583    "name": "getStateHistoryCount",
3584    "inputs": [],
3585    "outputs": [
3586      {
3587        "name": "",
3588        "type": "uint256",
3589        "internalType": "uint256"
3590      }
3591    ],
3592    "stateMutability": "view"
3593  },
3594  {
3595    "type": "function",
3596    "name": "getVersion",
3597    "inputs": [],
3598    "outputs": [
3599      {
3600        "name": "majorVersion",
3601        "type": "uint8",
3602        "internalType": "uint8"
3603      },
3604      {
3605        "name": "minorVersion",
3606        "type": "uint8",
3607        "internalType": "uint8"
3608      },
3609      {
3610        "name": "patchVersion",
3611        "type": "uint8",
3612        "internalType": "uint8"
3613      }
3614    ],
3615    "stateMutability": "pure"
3616  },
3617  {
3618    "type": "function",
3619    "name": "initialize",
3620    "inputs": [
3621      {
3622        "name": "_genesis",
3623        "type": "tuple",
3624        "internalType": "struct LightClient.LightClientState",
3625        "components": [
3626          {
3627            "name": "viewNum",
3628            "type": "uint64",
3629            "internalType": "uint64"
3630          },
3631          {
3632            "name": "blockHeight",
3633            "type": "uint64",
3634            "internalType": "uint64"
3635          },
3636          {
3637            "name": "blockCommRoot",
3638            "type": "uint256",
3639            "internalType": "BN254.ScalarField"
3640          }
3641        ]
3642      },
3643      {
3644        "name": "_genesisStakeTableState",
3645        "type": "tuple",
3646        "internalType": "struct LightClient.StakeTableState",
3647        "components": [
3648          {
3649            "name": "threshold",
3650            "type": "uint256",
3651            "internalType": "uint256"
3652          },
3653          {
3654            "name": "blsKeyComm",
3655            "type": "uint256",
3656            "internalType": "BN254.ScalarField"
3657          },
3658          {
3659            "name": "schnorrKeyComm",
3660            "type": "uint256",
3661            "internalType": "BN254.ScalarField"
3662          },
3663          {
3664            "name": "amountComm",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          }
3668        ]
3669      },
3670      {
3671        "name": "_stateHistoryRetentionPeriod",
3672        "type": "uint32",
3673        "internalType": "uint32"
3674      },
3675      {
3676        "name": "owner",
3677        "type": "address",
3678        "internalType": "address"
3679      }
3680    ],
3681    "outputs": [],
3682    "stateMutability": "nonpayable"
3683  },
3684  {
3685    "type": "function",
3686    "name": "initializeV2",
3687    "inputs": [
3688      {
3689        "name": "_blocksPerEpoch",
3690        "type": "uint64",
3691        "internalType": "uint64"
3692      },
3693      {
3694        "name": "_epochStartBlock",
3695        "type": "uint64",
3696        "internalType": "uint64"
3697      }
3698    ],
3699    "outputs": [],
3700    "stateMutability": "nonpayable"
3701  },
3702  {
3703    "type": "function",
3704    "name": "isEpochRoot",
3705    "inputs": [
3706      {
3707        "name": "blockHeight",
3708        "type": "uint64",
3709        "internalType": "uint64"
3710      }
3711    ],
3712    "outputs": [
3713      {
3714        "name": "",
3715        "type": "bool",
3716        "internalType": "bool"
3717      }
3718    ],
3719    "stateMutability": "view"
3720  },
3721  {
3722    "type": "function",
3723    "name": "isGtEpochRoot",
3724    "inputs": [
3725      {
3726        "name": "blockHeight",
3727        "type": "uint64",
3728        "internalType": "uint64"
3729      }
3730    ],
3731    "outputs": [
3732      {
3733        "name": "",
3734        "type": "bool",
3735        "internalType": "bool"
3736      }
3737    ],
3738    "stateMutability": "view"
3739  },
3740  {
3741    "type": "function",
3742    "name": "isPermissionedProverEnabled",
3743    "inputs": [],
3744    "outputs": [
3745      {
3746        "name": "",
3747        "type": "bool",
3748        "internalType": "bool"
3749      }
3750    ],
3751    "stateMutability": "view"
3752  },
3753  {
3754    "type": "function",
3755    "name": "lagOverEscapeHatchThreshold",
3756    "inputs": [
3757      {
3758        "name": "blockNumber",
3759        "type": "uint256",
3760        "internalType": "uint256"
3761      },
3762      {
3763        "name": "blockThreshold",
3764        "type": "uint256",
3765        "internalType": "uint256"
3766      }
3767    ],
3768    "outputs": [
3769      {
3770        "name": "",
3771        "type": "bool",
3772        "internalType": "bool"
3773      }
3774    ],
3775    "stateMutability": "view"
3776  },
3777  {
3778    "type": "function",
3779    "name": "newFinalizedState",
3780    "inputs": [
3781      {
3782        "name": "",
3783        "type": "tuple",
3784        "internalType": "struct LightClient.LightClientState",
3785        "components": [
3786          {
3787            "name": "viewNum",
3788            "type": "uint64",
3789            "internalType": "uint64"
3790          },
3791          {
3792            "name": "blockHeight",
3793            "type": "uint64",
3794            "internalType": "uint64"
3795          },
3796          {
3797            "name": "blockCommRoot",
3798            "type": "uint256",
3799            "internalType": "BN254.ScalarField"
3800          }
3801        ]
3802      },
3803      {
3804        "name": "",
3805        "type": "tuple",
3806        "internalType": "struct IPlonkVerifier.PlonkProof",
3807        "components": [
3808          {
3809            "name": "wire0",
3810            "type": "tuple",
3811            "internalType": "struct BN254.G1Point",
3812            "components": [
3813              {
3814                "name": "x",
3815                "type": "uint256",
3816                "internalType": "BN254.BaseField"
3817              },
3818              {
3819                "name": "y",
3820                "type": "uint256",
3821                "internalType": "BN254.BaseField"
3822              }
3823            ]
3824          },
3825          {
3826            "name": "wire1",
3827            "type": "tuple",
3828            "internalType": "struct BN254.G1Point",
3829            "components": [
3830              {
3831                "name": "x",
3832                "type": "uint256",
3833                "internalType": "BN254.BaseField"
3834              },
3835              {
3836                "name": "y",
3837                "type": "uint256",
3838                "internalType": "BN254.BaseField"
3839              }
3840            ]
3841          },
3842          {
3843            "name": "wire2",
3844            "type": "tuple",
3845            "internalType": "struct BN254.G1Point",
3846            "components": [
3847              {
3848                "name": "x",
3849                "type": "uint256",
3850                "internalType": "BN254.BaseField"
3851              },
3852              {
3853                "name": "y",
3854                "type": "uint256",
3855                "internalType": "BN254.BaseField"
3856              }
3857            ]
3858          },
3859          {
3860            "name": "wire3",
3861            "type": "tuple",
3862            "internalType": "struct BN254.G1Point",
3863            "components": [
3864              {
3865                "name": "x",
3866                "type": "uint256",
3867                "internalType": "BN254.BaseField"
3868              },
3869              {
3870                "name": "y",
3871                "type": "uint256",
3872                "internalType": "BN254.BaseField"
3873              }
3874            ]
3875          },
3876          {
3877            "name": "wire4",
3878            "type": "tuple",
3879            "internalType": "struct BN254.G1Point",
3880            "components": [
3881              {
3882                "name": "x",
3883                "type": "uint256",
3884                "internalType": "BN254.BaseField"
3885              },
3886              {
3887                "name": "y",
3888                "type": "uint256",
3889                "internalType": "BN254.BaseField"
3890              }
3891            ]
3892          },
3893          {
3894            "name": "prodPerm",
3895            "type": "tuple",
3896            "internalType": "struct BN254.G1Point",
3897            "components": [
3898              {
3899                "name": "x",
3900                "type": "uint256",
3901                "internalType": "BN254.BaseField"
3902              },
3903              {
3904                "name": "y",
3905                "type": "uint256",
3906                "internalType": "BN254.BaseField"
3907              }
3908            ]
3909          },
3910          {
3911            "name": "split0",
3912            "type": "tuple",
3913            "internalType": "struct BN254.G1Point",
3914            "components": [
3915              {
3916                "name": "x",
3917                "type": "uint256",
3918                "internalType": "BN254.BaseField"
3919              },
3920              {
3921                "name": "y",
3922                "type": "uint256",
3923                "internalType": "BN254.BaseField"
3924              }
3925            ]
3926          },
3927          {
3928            "name": "split1",
3929            "type": "tuple",
3930            "internalType": "struct BN254.G1Point",
3931            "components": [
3932              {
3933                "name": "x",
3934                "type": "uint256",
3935                "internalType": "BN254.BaseField"
3936              },
3937              {
3938                "name": "y",
3939                "type": "uint256",
3940                "internalType": "BN254.BaseField"
3941              }
3942            ]
3943          },
3944          {
3945            "name": "split2",
3946            "type": "tuple",
3947            "internalType": "struct BN254.G1Point",
3948            "components": [
3949              {
3950                "name": "x",
3951                "type": "uint256",
3952                "internalType": "BN254.BaseField"
3953              },
3954              {
3955                "name": "y",
3956                "type": "uint256",
3957                "internalType": "BN254.BaseField"
3958              }
3959            ]
3960          },
3961          {
3962            "name": "split3",
3963            "type": "tuple",
3964            "internalType": "struct BN254.G1Point",
3965            "components": [
3966              {
3967                "name": "x",
3968                "type": "uint256",
3969                "internalType": "BN254.BaseField"
3970              },
3971              {
3972                "name": "y",
3973                "type": "uint256",
3974                "internalType": "BN254.BaseField"
3975              }
3976            ]
3977          },
3978          {
3979            "name": "split4",
3980            "type": "tuple",
3981            "internalType": "struct BN254.G1Point",
3982            "components": [
3983              {
3984                "name": "x",
3985                "type": "uint256",
3986                "internalType": "BN254.BaseField"
3987              },
3988              {
3989                "name": "y",
3990                "type": "uint256",
3991                "internalType": "BN254.BaseField"
3992              }
3993            ]
3994          },
3995          {
3996            "name": "zeta",
3997            "type": "tuple",
3998            "internalType": "struct BN254.G1Point",
3999            "components": [
4000              {
4001                "name": "x",
4002                "type": "uint256",
4003                "internalType": "BN254.BaseField"
4004              },
4005              {
4006                "name": "y",
4007                "type": "uint256",
4008                "internalType": "BN254.BaseField"
4009              }
4010            ]
4011          },
4012          {
4013            "name": "zetaOmega",
4014            "type": "tuple",
4015            "internalType": "struct BN254.G1Point",
4016            "components": [
4017              {
4018                "name": "x",
4019                "type": "uint256",
4020                "internalType": "BN254.BaseField"
4021              },
4022              {
4023                "name": "y",
4024                "type": "uint256",
4025                "internalType": "BN254.BaseField"
4026              }
4027            ]
4028          },
4029          {
4030            "name": "wireEval0",
4031            "type": "uint256",
4032            "internalType": "BN254.ScalarField"
4033          },
4034          {
4035            "name": "wireEval1",
4036            "type": "uint256",
4037            "internalType": "BN254.ScalarField"
4038          },
4039          {
4040            "name": "wireEval2",
4041            "type": "uint256",
4042            "internalType": "BN254.ScalarField"
4043          },
4044          {
4045            "name": "wireEval3",
4046            "type": "uint256",
4047            "internalType": "BN254.ScalarField"
4048          },
4049          {
4050            "name": "wireEval4",
4051            "type": "uint256",
4052            "internalType": "BN254.ScalarField"
4053          },
4054          {
4055            "name": "sigmaEval0",
4056            "type": "uint256",
4057            "internalType": "BN254.ScalarField"
4058          },
4059          {
4060            "name": "sigmaEval1",
4061            "type": "uint256",
4062            "internalType": "BN254.ScalarField"
4063          },
4064          {
4065            "name": "sigmaEval2",
4066            "type": "uint256",
4067            "internalType": "BN254.ScalarField"
4068          },
4069          {
4070            "name": "sigmaEval3",
4071            "type": "uint256",
4072            "internalType": "BN254.ScalarField"
4073          },
4074          {
4075            "name": "prodPermZetaOmegaEval",
4076            "type": "uint256",
4077            "internalType": "BN254.ScalarField"
4078          }
4079        ]
4080      }
4081    ],
4082    "outputs": [],
4083    "stateMutability": "pure"
4084  },
4085  {
4086    "type": "function",
4087    "name": "newFinalizedState",
4088    "inputs": [
4089      {
4090        "name": "newState",
4091        "type": "tuple",
4092        "internalType": "struct LightClient.LightClientState",
4093        "components": [
4094          {
4095            "name": "viewNum",
4096            "type": "uint64",
4097            "internalType": "uint64"
4098          },
4099          {
4100            "name": "blockHeight",
4101            "type": "uint64",
4102            "internalType": "uint64"
4103          },
4104          {
4105            "name": "blockCommRoot",
4106            "type": "uint256",
4107            "internalType": "BN254.ScalarField"
4108          }
4109        ]
4110      },
4111      {
4112        "name": "nextStakeTable",
4113        "type": "tuple",
4114        "internalType": "struct LightClient.StakeTableState",
4115        "components": [
4116          {
4117            "name": "threshold",
4118            "type": "uint256",
4119            "internalType": "uint256"
4120          },
4121          {
4122            "name": "blsKeyComm",
4123            "type": "uint256",
4124            "internalType": "BN254.ScalarField"
4125          },
4126          {
4127            "name": "schnorrKeyComm",
4128            "type": "uint256",
4129            "internalType": "BN254.ScalarField"
4130          },
4131          {
4132            "name": "amountComm",
4133            "type": "uint256",
4134            "internalType": "BN254.ScalarField"
4135          }
4136        ]
4137      },
4138      {
4139        "name": "proof",
4140        "type": "tuple",
4141        "internalType": "struct IPlonkVerifier.PlonkProof",
4142        "components": [
4143          {
4144            "name": "wire0",
4145            "type": "tuple",
4146            "internalType": "struct BN254.G1Point",
4147            "components": [
4148              {
4149                "name": "x",
4150                "type": "uint256",
4151                "internalType": "BN254.BaseField"
4152              },
4153              {
4154                "name": "y",
4155                "type": "uint256",
4156                "internalType": "BN254.BaseField"
4157              }
4158            ]
4159          },
4160          {
4161            "name": "wire1",
4162            "type": "tuple",
4163            "internalType": "struct BN254.G1Point",
4164            "components": [
4165              {
4166                "name": "x",
4167                "type": "uint256",
4168                "internalType": "BN254.BaseField"
4169              },
4170              {
4171                "name": "y",
4172                "type": "uint256",
4173                "internalType": "BN254.BaseField"
4174              }
4175            ]
4176          },
4177          {
4178            "name": "wire2",
4179            "type": "tuple",
4180            "internalType": "struct BN254.G1Point",
4181            "components": [
4182              {
4183                "name": "x",
4184                "type": "uint256",
4185                "internalType": "BN254.BaseField"
4186              },
4187              {
4188                "name": "y",
4189                "type": "uint256",
4190                "internalType": "BN254.BaseField"
4191              }
4192            ]
4193          },
4194          {
4195            "name": "wire3",
4196            "type": "tuple",
4197            "internalType": "struct BN254.G1Point",
4198            "components": [
4199              {
4200                "name": "x",
4201                "type": "uint256",
4202                "internalType": "BN254.BaseField"
4203              },
4204              {
4205                "name": "y",
4206                "type": "uint256",
4207                "internalType": "BN254.BaseField"
4208              }
4209            ]
4210          },
4211          {
4212            "name": "wire4",
4213            "type": "tuple",
4214            "internalType": "struct BN254.G1Point",
4215            "components": [
4216              {
4217                "name": "x",
4218                "type": "uint256",
4219                "internalType": "BN254.BaseField"
4220              },
4221              {
4222                "name": "y",
4223                "type": "uint256",
4224                "internalType": "BN254.BaseField"
4225              }
4226            ]
4227          },
4228          {
4229            "name": "prodPerm",
4230            "type": "tuple",
4231            "internalType": "struct BN254.G1Point",
4232            "components": [
4233              {
4234                "name": "x",
4235                "type": "uint256",
4236                "internalType": "BN254.BaseField"
4237              },
4238              {
4239                "name": "y",
4240                "type": "uint256",
4241                "internalType": "BN254.BaseField"
4242              }
4243            ]
4244          },
4245          {
4246            "name": "split0",
4247            "type": "tuple",
4248            "internalType": "struct BN254.G1Point",
4249            "components": [
4250              {
4251                "name": "x",
4252                "type": "uint256",
4253                "internalType": "BN254.BaseField"
4254              },
4255              {
4256                "name": "y",
4257                "type": "uint256",
4258                "internalType": "BN254.BaseField"
4259              }
4260            ]
4261          },
4262          {
4263            "name": "split1",
4264            "type": "tuple",
4265            "internalType": "struct BN254.G1Point",
4266            "components": [
4267              {
4268                "name": "x",
4269                "type": "uint256",
4270                "internalType": "BN254.BaseField"
4271              },
4272              {
4273                "name": "y",
4274                "type": "uint256",
4275                "internalType": "BN254.BaseField"
4276              }
4277            ]
4278          },
4279          {
4280            "name": "split2",
4281            "type": "tuple",
4282            "internalType": "struct BN254.G1Point",
4283            "components": [
4284              {
4285                "name": "x",
4286                "type": "uint256",
4287                "internalType": "BN254.BaseField"
4288              },
4289              {
4290                "name": "y",
4291                "type": "uint256",
4292                "internalType": "BN254.BaseField"
4293              }
4294            ]
4295          },
4296          {
4297            "name": "split3",
4298            "type": "tuple",
4299            "internalType": "struct BN254.G1Point",
4300            "components": [
4301              {
4302                "name": "x",
4303                "type": "uint256",
4304                "internalType": "BN254.BaseField"
4305              },
4306              {
4307                "name": "y",
4308                "type": "uint256",
4309                "internalType": "BN254.BaseField"
4310              }
4311            ]
4312          },
4313          {
4314            "name": "split4",
4315            "type": "tuple",
4316            "internalType": "struct BN254.G1Point",
4317            "components": [
4318              {
4319                "name": "x",
4320                "type": "uint256",
4321                "internalType": "BN254.BaseField"
4322              },
4323              {
4324                "name": "y",
4325                "type": "uint256",
4326                "internalType": "BN254.BaseField"
4327              }
4328            ]
4329          },
4330          {
4331            "name": "zeta",
4332            "type": "tuple",
4333            "internalType": "struct BN254.G1Point",
4334            "components": [
4335              {
4336                "name": "x",
4337                "type": "uint256",
4338                "internalType": "BN254.BaseField"
4339              },
4340              {
4341                "name": "y",
4342                "type": "uint256",
4343                "internalType": "BN254.BaseField"
4344              }
4345            ]
4346          },
4347          {
4348            "name": "zetaOmega",
4349            "type": "tuple",
4350            "internalType": "struct BN254.G1Point",
4351            "components": [
4352              {
4353                "name": "x",
4354                "type": "uint256",
4355                "internalType": "BN254.BaseField"
4356              },
4357              {
4358                "name": "y",
4359                "type": "uint256",
4360                "internalType": "BN254.BaseField"
4361              }
4362            ]
4363          },
4364          {
4365            "name": "wireEval0",
4366            "type": "uint256",
4367            "internalType": "BN254.ScalarField"
4368          },
4369          {
4370            "name": "wireEval1",
4371            "type": "uint256",
4372            "internalType": "BN254.ScalarField"
4373          },
4374          {
4375            "name": "wireEval2",
4376            "type": "uint256",
4377            "internalType": "BN254.ScalarField"
4378          },
4379          {
4380            "name": "wireEval3",
4381            "type": "uint256",
4382            "internalType": "BN254.ScalarField"
4383          },
4384          {
4385            "name": "wireEval4",
4386            "type": "uint256",
4387            "internalType": "BN254.ScalarField"
4388          },
4389          {
4390            "name": "sigmaEval0",
4391            "type": "uint256",
4392            "internalType": "BN254.ScalarField"
4393          },
4394          {
4395            "name": "sigmaEval1",
4396            "type": "uint256",
4397            "internalType": "BN254.ScalarField"
4398          },
4399          {
4400            "name": "sigmaEval2",
4401            "type": "uint256",
4402            "internalType": "BN254.ScalarField"
4403          },
4404          {
4405            "name": "sigmaEval3",
4406            "type": "uint256",
4407            "internalType": "BN254.ScalarField"
4408          },
4409          {
4410            "name": "prodPermZetaOmegaEval",
4411            "type": "uint256",
4412            "internalType": "BN254.ScalarField"
4413          }
4414        ]
4415      }
4416    ],
4417    "outputs": [],
4418    "stateMutability": "nonpayable"
4419  },
4420  {
4421    "type": "function",
4422    "name": "owner",
4423    "inputs": [],
4424    "outputs": [
4425      {
4426        "name": "",
4427        "type": "address",
4428        "internalType": "address"
4429      }
4430    ],
4431    "stateMutability": "view"
4432  },
4433  {
4434    "type": "function",
4435    "name": "permissionedProver",
4436    "inputs": [],
4437    "outputs": [
4438      {
4439        "name": "",
4440        "type": "address",
4441        "internalType": "address"
4442      }
4443    ],
4444    "stateMutability": "view"
4445  },
4446  {
4447    "type": "function",
4448    "name": "proxiableUUID",
4449    "inputs": [],
4450    "outputs": [
4451      {
4452        "name": "",
4453        "type": "bytes32",
4454        "internalType": "bytes32"
4455      }
4456    ],
4457    "stateMutability": "view"
4458  },
4459  {
4460    "type": "function",
4461    "name": "renounceOwnership",
4462    "inputs": [],
4463    "outputs": [],
4464    "stateMutability": "nonpayable"
4465  },
4466  {
4467    "type": "function",
4468    "name": "setPermissionedProver",
4469    "inputs": [
4470      {
4471        "name": "prover",
4472        "type": "address",
4473        "internalType": "address"
4474      }
4475    ],
4476    "outputs": [],
4477    "stateMutability": "nonpayable"
4478  },
4479  {
4480    "type": "function",
4481    "name": "setStateHistoryRetentionPeriod",
4482    "inputs": [
4483      {
4484        "name": "historySeconds",
4485        "type": "uint32",
4486        "internalType": "uint32"
4487      }
4488    ],
4489    "outputs": [],
4490    "stateMutability": "nonpayable"
4491  },
4492  {
4493    "type": "function",
4494    "name": "setstateHistoryRetentionPeriod",
4495    "inputs": [
4496      {
4497        "name": "historySeconds",
4498        "type": "uint32",
4499        "internalType": "uint32"
4500      }
4501    ],
4502    "outputs": [],
4503    "stateMutability": "nonpayable"
4504  },
4505  {
4506    "type": "function",
4507    "name": "stateHistoryCommitments",
4508    "inputs": [
4509      {
4510        "name": "",
4511        "type": "uint256",
4512        "internalType": "uint256"
4513      }
4514    ],
4515    "outputs": [
4516      {
4517        "name": "l1BlockHeight",
4518        "type": "uint64",
4519        "internalType": "uint64"
4520      },
4521      {
4522        "name": "l1BlockTimestamp",
4523        "type": "uint64",
4524        "internalType": "uint64"
4525      },
4526      {
4527        "name": "hotShotBlockHeight",
4528        "type": "uint64",
4529        "internalType": "uint64"
4530      },
4531      {
4532        "name": "hotShotBlockCommRoot",
4533        "type": "uint256",
4534        "internalType": "BN254.ScalarField"
4535      }
4536    ],
4537    "stateMutability": "view"
4538  },
4539  {
4540    "type": "function",
4541    "name": "stateHistoryFirstIndex",
4542    "inputs": [],
4543    "outputs": [
4544      {
4545        "name": "",
4546        "type": "uint64",
4547        "internalType": "uint64"
4548      }
4549    ],
4550    "stateMutability": "view"
4551  },
4552  {
4553    "type": "function",
4554    "name": "stateHistoryRetentionPeriod",
4555    "inputs": [],
4556    "outputs": [
4557      {
4558        "name": "",
4559        "type": "uint32",
4560        "internalType": "uint32"
4561      }
4562    ],
4563    "stateMutability": "view"
4564  },
4565  {
4566    "type": "function",
4567    "name": "transferOwnership",
4568    "inputs": [
4569      {
4570        "name": "newOwner",
4571        "type": "address",
4572        "internalType": "address"
4573      }
4574    ],
4575    "outputs": [],
4576    "stateMutability": "nonpayable"
4577  },
4578  {
4579    "type": "function",
4580    "name": "updateEpochStartBlock",
4581    "inputs": [
4582      {
4583        "name": "newEpochStartBlock",
4584        "type": "uint64",
4585        "internalType": "uint64"
4586      }
4587    ],
4588    "outputs": [],
4589    "stateMutability": "nonpayable"
4590  },
4591  {
4592    "type": "function",
4593    "name": "upgradeToAndCall",
4594    "inputs": [
4595      {
4596        "name": "newImplementation",
4597        "type": "address",
4598        "internalType": "address"
4599      },
4600      {
4601        "name": "data",
4602        "type": "bytes",
4603        "internalType": "bytes"
4604      }
4605    ],
4606    "outputs": [],
4607    "stateMutability": "payable"
4608  },
4609  {
4610    "type": "function",
4611    "name": "votingStakeTableState",
4612    "inputs": [],
4613    "outputs": [
4614      {
4615        "name": "threshold",
4616        "type": "uint256",
4617        "internalType": "uint256"
4618      },
4619      {
4620        "name": "blsKeyComm",
4621        "type": "uint256",
4622        "internalType": "BN254.ScalarField"
4623      },
4624      {
4625        "name": "schnorrKeyComm",
4626        "type": "uint256",
4627        "internalType": "BN254.ScalarField"
4628      },
4629      {
4630        "name": "amountComm",
4631        "type": "uint256",
4632        "internalType": "BN254.ScalarField"
4633      }
4634    ],
4635    "stateMutability": "view"
4636  },
4637  {
4638    "type": "event",
4639    "name": "Initialized",
4640    "inputs": [
4641      {
4642        "name": "version",
4643        "type": "uint64",
4644        "indexed": false,
4645        "internalType": "uint64"
4646      }
4647    ],
4648    "anonymous": false
4649  },
4650  {
4651    "type": "event",
4652    "name": "NewEpoch",
4653    "inputs": [
4654      {
4655        "name": "epoch",
4656        "type": "uint64",
4657        "indexed": false,
4658        "internalType": "uint64"
4659      }
4660    ],
4661    "anonymous": false
4662  },
4663  {
4664    "type": "event",
4665    "name": "NewState",
4666    "inputs": [
4667      {
4668        "name": "viewNum",
4669        "type": "uint64",
4670        "indexed": true,
4671        "internalType": "uint64"
4672      },
4673      {
4674        "name": "blockHeight",
4675        "type": "uint64",
4676        "indexed": true,
4677        "internalType": "uint64"
4678      },
4679      {
4680        "name": "blockCommRoot",
4681        "type": "uint256",
4682        "indexed": false,
4683        "internalType": "BN254.ScalarField"
4684      }
4685    ],
4686    "anonymous": false
4687  },
4688  {
4689    "type": "event",
4690    "name": "OwnershipTransferred",
4691    "inputs": [
4692      {
4693        "name": "previousOwner",
4694        "type": "address",
4695        "indexed": true,
4696        "internalType": "address"
4697      },
4698      {
4699        "name": "newOwner",
4700        "type": "address",
4701        "indexed": true,
4702        "internalType": "address"
4703      }
4704    ],
4705    "anonymous": false
4706  },
4707  {
4708    "type": "event",
4709    "name": "PermissionedProverNotRequired",
4710    "inputs": [],
4711    "anonymous": false
4712  },
4713  {
4714    "type": "event",
4715    "name": "PermissionedProverRequired",
4716    "inputs": [
4717      {
4718        "name": "permissionedProver",
4719        "type": "address",
4720        "indexed": false,
4721        "internalType": "address"
4722      }
4723    ],
4724    "anonymous": false
4725  },
4726  {
4727    "type": "event",
4728    "name": "Upgrade",
4729    "inputs": [
4730      {
4731        "name": "implementation",
4732        "type": "address",
4733        "indexed": false,
4734        "internalType": "address"
4735      }
4736    ],
4737    "anonymous": false
4738  },
4739  {
4740    "type": "event",
4741    "name": "Upgraded",
4742    "inputs": [
4743      {
4744        "name": "implementation",
4745        "type": "address",
4746        "indexed": true,
4747        "internalType": "address"
4748      }
4749    ],
4750    "anonymous": false
4751  },
4752  {
4753    "type": "error",
4754    "name": "AddressEmptyCode",
4755    "inputs": [
4756      {
4757        "name": "target",
4758        "type": "address",
4759        "internalType": "address"
4760      }
4761    ]
4762  },
4763  {
4764    "type": "error",
4765    "name": "DeprecatedApi",
4766    "inputs": []
4767  },
4768  {
4769    "type": "error",
4770    "name": "ERC1967InvalidImplementation",
4771    "inputs": [
4772      {
4773        "name": "implementation",
4774        "type": "address",
4775        "internalType": "address"
4776      }
4777    ]
4778  },
4779  {
4780    "type": "error",
4781    "name": "ERC1967NonPayable",
4782    "inputs": []
4783  },
4784  {
4785    "type": "error",
4786    "name": "FailedInnerCall",
4787    "inputs": []
4788  },
4789  {
4790    "type": "error",
4791    "name": "InsufficientSnapshotHistory",
4792    "inputs": []
4793  },
4794  {
4795    "type": "error",
4796    "name": "InvalidAddress",
4797    "inputs": []
4798  },
4799  {
4800    "type": "error",
4801    "name": "InvalidArgs",
4802    "inputs": []
4803  },
4804  {
4805    "type": "error",
4806    "name": "InvalidHotShotBlockForCommitmentCheck",
4807    "inputs": []
4808  },
4809  {
4810    "type": "error",
4811    "name": "InvalidInitialization",
4812    "inputs": []
4813  },
4814  {
4815    "type": "error",
4816    "name": "InvalidMaxStateHistory",
4817    "inputs": []
4818  },
4819  {
4820    "type": "error",
4821    "name": "InvalidProof",
4822    "inputs": []
4823  },
4824  {
4825    "type": "error",
4826    "name": "InvalidScalar",
4827    "inputs": []
4828  },
4829  {
4830    "type": "error",
4831    "name": "MissingEpochRootUpdate",
4832    "inputs": []
4833  },
4834  {
4835    "type": "error",
4836    "name": "NoChangeRequired",
4837    "inputs": []
4838  },
4839  {
4840    "type": "error",
4841    "name": "NotInitializing",
4842    "inputs": []
4843  },
4844  {
4845    "type": "error",
4846    "name": "OutdatedState",
4847    "inputs": []
4848  },
4849  {
4850    "type": "error",
4851    "name": "OwnableInvalidOwner",
4852    "inputs": [
4853      {
4854        "name": "owner",
4855        "type": "address",
4856        "internalType": "address"
4857      }
4858    ]
4859  },
4860  {
4861    "type": "error",
4862    "name": "OwnableUnauthorizedAccount",
4863    "inputs": [
4864      {
4865        "name": "account",
4866        "type": "address",
4867        "internalType": "address"
4868      }
4869    ]
4870  },
4871  {
4872    "type": "error",
4873    "name": "OwnershipCannotBeRenounced",
4874    "inputs": []
4875  },
4876  {
4877    "type": "error",
4878    "name": "ProverNotPermissioned",
4879    "inputs": []
4880  },
4881  {
4882    "type": "error",
4883    "name": "UUPSUnauthorizedCallContext",
4884    "inputs": []
4885  },
4886  {
4887    "type": "error",
4888    "name": "UUPSUnsupportedProxiableUUID",
4889    "inputs": [
4890      {
4891        "name": "slot",
4892        "type": "bytes32",
4893        "internalType": "bytes32"
4894      }
4895    ]
4896  },
4897  {
4898    "type": "error",
4899    "name": "WrongStakeTableUsed",
4900    "inputs": []
4901  }
4902]
4903```*/
4904#[allow(
4905    non_camel_case_types,
4906    non_snake_case,
4907    clippy::pub_underscore_fields,
4908    clippy::style,
4909    clippy::empty_structs_with_brackets
4910)]
4911pub mod LightClientArbitrumV2 {
4912    use super::*;
4913    use alloy::sol_types as alloy_sol_types;
4914    /// The creation / init bytecode of the contract.
4915    ///
4916    /// ```text
4917    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134ce6100f95f395f8181611bb501528181611bde0152611d5b01526134ce5ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127ab565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127c4565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127db565b348015610322575f5ffd5b5061022a6103313660046129f2565b6108b0565b348015610341575f5ffd5b5061022a610350366004612cb4565b610927565b348015610360575f5ffd5b5061037461036f3660046129f2565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc3660046129f2565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a37565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612cfb565b610a99565b61022a6104ae366004612d14565b610aad565b3480156104be575f5ffd5b5061042c610acc565b3480156104d2575f5ffd5b5061022a610ae7565b3480156104e6575f5ffd5b5061022a610b55565b3480156104fa575f5ffd5b5061022a610509366004612e17565b610b76565b348015610519575f5ffd5b506103aa610eb0565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127c4565b610ed5565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e5b565b611000565b3480156105e3575f5ffd5b5061022a6105f2366004612cfb565b61106f565b348015610602575f5ffd5b5061022a610611366004612e83565b6110f8565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612ed8565b3480156106b3575f5ffd5b5061022a6106c2366004612e5b565b61121a565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f0d565b611386565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127ab565b6114e5565b348015610796575f5ffd5b5060095461042c565b6107a7611524565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612511565b6108ab61157f565b905090565b6108b8611524565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617611000565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f41565b61098d9190612f74565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e4906001600160401b031683612f74565b6001600160401b03161580610a315750600a54610a0c906005906001600160401b0316612fa1565b600a546001600160401b0391821691610a26911684612f74565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fc0565b610aa1611524565b610aaa8161106f565b50565b610ab5611baa565b610abe82611c4e565b610ac88282611c8f565b5050565b5f610ad5611d50565b505f5160206134a25f395f51905f5290565b610aef611524565b6008546001600160a01b031615610b3a57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b5d611524565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b9b57506008546001600160a01b03163314155b15610bb9576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610bf2575060065460208401516001600160401b03600160401b9092048216911611155b15610c105760405163051c46ef60e01b815260040160405180910390fd5b610c1d8360400151611d99565b610c2a8260200151611d99565b610c378260400151611d99565b610c448260600151611d99565b5f610c4d610eb0565b6020850151600a549192505f91610c6d91906001600160401b0316611000565b600a549091506001600160401b03600160801b909104811690821610610cb857610c9a85602001516109a2565b15610cb85760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d6b576002610ce28383612fa1565b6001600160401b031610610d095760405163080ae8d960e01b815260040160405180910390fd5b610d14826001612f41565b6001600160401b0316816001600160401b0316148015610d4d5750600654610d4b90600160401b90046001600160401b0316610940565b155b15610d6b5760405163080ae8d960e01b815260040160405180910390fd5b610d76858585611dda565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610dd55750610dd58560200151610940565b15610e3f578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610e23826001612f41565b6040516001600160401b03909116815260200160405180910390a15b610e51610e4a610a37565b4287611f51565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610ea191815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116611000565b600980545f91829190610ee9600183612fd7565b81548110610ef957610ef9612fea565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610ff9578460098281548110610f6857610f68612fea565b5f918252602090912060029091020154600160801b90046001600160401b03161115610ff15760098181548110610fa157610fa1612fea565b905f5260205f2090600202016001015460098281548110610fc457610fc4612fea565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f4c565b5050915091565b5f816001600160401b03165f0361101857505f610a31565b826001600160401b03165f0361103057506001610a31565b61103a8284612f74565b6001600160401b03165f0361105a576110538284612ffe565b9050610a31565b6110648284612ffe565b611053906001612f41565b611077611524565b610e108163ffffffff16108061109657506301e133808163ffffffff16115b806110b4575060085463ffffffff600160a01b909104811690821611155b156110d2576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561113c5750825b90505f826001600160401b031660011480156111575750303b155b905081158015611165575080155b156111835760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156111ad57845460ff60401b1916600160401b1785555b6111b68661213a565b6111be61214b565b6111c9898989612153565b831561120f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611222611524565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061126b575080546001600160401b03808416911610155b156112895760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116112d1576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b03199092169087161717905561131a8385611000565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f90611393610a37565b84118061139e575080155b806113e85750600854600980549091600160c01b90046001600160401b03169081106113cc576113cc612fea565b5f9182526020909120600290910201546001600160401b031684105b156114065760405163b0b4387760e01b815260040160405180910390fd5b5f8080611414600185612fd7565b90505b816114b057600854600160c01b90046001600160401b031681106114b057866009828154811061144957611449612fea565b5f9182526020909120600290910201546001600160401b03161161149e57600191506009818154811061147e5761147e612fea565b5f9182526020909120600290910201546001600160401b031692506114b0565b806114a88161302b565b915050611417565b816114ce5760405163b0b4387760e01b815260040160405180910390fd5b856114d98489612fd7565b11979650505050505050565b6114ed611524565b6001600160a01b03811661151b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aaa8161227f565b336115567f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b535760405163118cdaa760e01b8152336004820152602401611512565b611587612511565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c3057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c245f5160206134a25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b611c56611524565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ce9575060408051601f3d908101601f19168201909252611ce691810190612fc0565b60015b611d1157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611512565b5f5160206134a25f395f51905f528114611d4157604051632a87526960e21b815260048101829052602401611512565b611d4b83836122ef565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610ac85760405163016c173360e21b815260040160405180910390fd5b5f611de361089b565b9050611ded612776565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e5d5750611e5d8560200151610940565b15611e8f57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611eb3565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611eee90859085908890600401613222565b602060405180830381865af4158015611f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2d9190613442565b611f4a576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fc6575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f9157611f91612fea565b5f918252602090912060029091020154611fbb90600160401b90046001600160401b031684612fa1565b6001600160401b0316115b1561205957600854600980549091600160c01b90046001600160401b0316908110611ff357611ff3612fea565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861203383613461565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612142612344565b610aaa8161238d565b610b53612344565b82516001600160401b0316151580612177575060208301516001600160401b031615155b8061218457506020820151155b8061219157506040820151155b8061219e57506060820151155b806121a857508151155b806121ba5750610e108163ffffffff16105b806121ce57506301e133808163ffffffff16115b156121ec576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122f882612395565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561233c57611d4b82826123f8565b610ac861246a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b6114ed612344565b806001600160a01b03163b5f036123ca57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611512565b5f5160206134a25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612414919061348b565b5f60405180830381855af49150503d805f811461244c576040519150601f19603f3d011682016040523d82523d5f602084013e612451565b606091505b5091509150612461858383612489565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b60608261249e57612499826124e8565b6124e1565b81511580156124b557506001600160a01b0384163b155b156124de57604051639996b31560e01b81526001600160a01b0385166004820152602401611512565b50805b9392505050565b8051156124f85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161254460405180604001604052805f81526020015f81525090565b815260200161256460405180604001604052805f81526020015f81525090565b815260200161258460405180604001604052805f81526020015f81525090565b81526020016125a460405180604001604052805f81526020015f81525090565b81526020016125c460405180604001604052805f81526020015f81525090565b81526020016125e460405180604001604052805f81526020015f81525090565b815260200161260460405180604001604052805f81526020015f81525090565b815260200161262460405180604001604052805f81526020015f81525090565b815260200161264460405180604001604052805f81526020015f81525090565b815260200161266460405180604001604052805f81526020015f81525090565b815260200161268460405180604001604052805f81526020015f81525090565b81526020016126a460405180604001604052805f81526020015f81525090565b81526020016126c460405180604001604052805f81526020015f81525090565b81526020016126e460405180604001604052805f81526020015f81525090565b815260200161270460405180604001604052805f81526020015f81525090565b815260200161272460405180604001604052805f81526020015f81525090565b815260200161274460405180604001604052805f81526020015f81525090565b815260200161276460405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127bb575f5ffd5b6124e182612795565b5f602082840312156127d4575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161280d604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f60208284031215612a02575f5ffd5b6124e1826129dc565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a4257612a42612a0b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a7057612a70612a0b565b604052919050565b5f60608284031215612a88575f5ffd5b604051606081016001600160401b0381118282101715612aaa57612aaa612a0b565b604052905080612ab9836129dc565b8152612ac7602084016129dc565b6020820152604092830135920191909152919050565b5f60408284031215612aed575f5ffd5b604080519081016001600160401b0381118282101715612b0f57612b0f612a0b565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b3a575f5ffd5b612b42612a1f565b9050612b4e8383612add565b8152612b5d8360408401612add565b6020820152612b6f8360808401612add565b6040820152612b818360c08401612add565b6060820152612b94836101008401612add565b6080820152612ba7836101408401612add565b60a0820152612bba836101808401612add565b60c0820152612bcd836101c08401612add565b60e0820152612be0836102008401612add565b610100820152612bf4836102408401612add565b610120820152612c08836102808401612add565b610140820152612c1c836102c08401612add565b610160820152612c30836103008401612add565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cc6575f5ffd5b612cd08484612a78565b9150612cdf8460608501612b29565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d0b575f5ffd5b6124e182612ce8565b5f5f60408385031215612d25575f5ffd5b612d2e83612795565b915060208301356001600160401b03811115612d48575f5ffd5b8301601f81018513612d58575f5ffd5b80356001600160401b03811115612d7157612d71612a0b565b612d84601f8201601f1916602001612a48565b818152866020838501011115612d98575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dc7575f5ffd5b604051608081016001600160401b0381118282101715612de957612de9612a0b565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e2a575f5ffd5b612e348585612a78565b9250612e438560608601612db7565b9150612e528560e08601612b29565b90509250925092565b5f5f60408385031215612e6c575f5ffd5b612e75836129dc565b9150612cdf602084016129dc565b5f5f5f5f6101208587031215612e97575f5ffd5b612ea18686612a78565b9350612eb08660608701612db7565b9250612ebe60e08601612ce8565b9150612ecd6101008601612795565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f1e575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a3157610a31612f2d565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f8c57612f8c612f60565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a3157610a31612f2d565b5f60208284031215612fd0575f5ffd5b5051919050565b81810381811115610a3157610a31612f2d565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061301657613016612f60565b806001600160401b0384160491505092915050565b5f8161303957613039612f2d565b505f190190565b805f5b600b811015613062578151845260209384019390910190600101613043565b50505050565b61307d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae08201905084518252602085015160208301526040850151613254604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261342c610500830185613040565b61343a610660830184613068565b949350505050565b5f60208284031215613452575f5ffd5b815180151581146124e1575f5ffd5b5f6001600160401b0382166001600160401b03810361348257613482612f2d565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4918    /// ```
4919    #[rustfmt::skip]
4920    #[allow(clippy::all)]
4921    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4922        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[`\x80Qa4\xCEa\0\xF9_9_\x81\x81a\x1B\xB5\x01R\x81\x81a\x1B\xDE\x01Ra\x1D[\x01Ra4\xCE_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\xABV[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xC4V[a\x08RV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x9BV[`@Qa\x02\x80\x91\x90a'\xDBV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\xF2V[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xB4V[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\xF2V[a\t@V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)\xF2V[a\t\xA2V[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[Pa\x04,a\n7V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a,\xFBV[a\n\x99V[a\x02*a\x04\xAE6`\x04a-\x14V[a\n\xADV[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xCCV[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xE7V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0BUV[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a.\x17V[a\x0BvV[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0E\xB0V[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xC4V[a\x0E\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\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\x04\0V[4\x80\x15a\x05\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.[V[a\x10\0V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a,\xFBV[a\x10oV[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.\x83V[a\x10\xF8V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xD8V[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.[V[a\x12\x1AV[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/\rV[a\x13\x86V[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xABV[a\x14\xE5V[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xFDW`@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\x08aW_\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\x08\xA3a%\x11V[a\x08\xABa\x15\x7FV[\x90P\x90V[a\x08\xB8a\x15$V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x10\0V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/AV[a\t\x8D\x91\x90a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE4\x90`\x01`\x01`@\x1B\x03\x16\x83a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n1WP`\nTa\n\x0C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\xA1V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n&\x91\x16\x84a/tV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`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\nuW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xC0V[a\n\xA1a\x15$V[a\n\xAA\x81a\x10oV[PV[a\n\xB5a\x1B\xAAV[a\n\xBE\x82a\x1CNV[a\n\xC8\x82\x82a\x1C\x8FV[PPV[_a\n\xD5a\x1DPV[P_Q` a4\xA2_9_Q\x90_R\x90V[a\n\xEFa\x15$V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B:W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0B]a\x15$V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B\x9BWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\xB9W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\xF2WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0C\x10W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x1D\x83`@\x01Qa\x1D\x99V[a\x0C*\x82` \x01Qa\x1D\x99V[a\x0C7\x82`@\x01Qa\x1D\x99V[a\x0CD\x82``\x01Qa\x1D\x99V[_a\x0CMa\x0E\xB0V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0Cm\x91\x90`\x01`\x01`@\x1B\x03\x16a\x10\0V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\xB8Wa\x0C\x9A\x85` \x01Qa\t\xA2V[\x15a\x0C\xB8W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\rkW`\x02a\x0C\xE2\x83\x83a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x10a\r\tW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x14\x82`\x01a/AV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\rMWP`\x06Ta\rK\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\rkW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rv\x85\x85\x85a\x1D\xDAV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\xD5WPa\r\xD5\x85` \x01Qa\t@V[\x15a\x0E?W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x0E#\x82`\x01a/AV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0EQa\x0EJa\n7V[B\x87a\x1FQV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E\xA1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x10\0V[`\t\x80T_\x91\x82\x91\x90a\x0E\xE9`\x01\x83a/\xD7V[\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F8W`@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\x0F\xF9W\x84`\t\x82\x81T\x81\x10a\x0FhWa\x0Fha/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xF1W`\t\x81\x81T\x81\x10a\x0F\xA1Wa\x0F\xA1a/\xEAV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\xC4Wa\x0F\xC4a/\xEAV[\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\x0FLV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x10\x18WP_a\n1V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x100WP`\x01a\n1V[a\x10:\x82\x84a/tV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10ZWa\x10S\x82\x84a/\xFEV[\x90Pa\n1V[a\x10d\x82\x84a/\xFEV[a\x10S\x90`\x01a/AV[a\x10wa\x15$V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x96WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\xB4WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xD2W`@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\x11<WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11WWP0;\x15[\x90P\x81\x15\x80\x15a\x11eWP\x80\x15[\x15a\x11\x83W`@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\x11\xADW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\xB6\x86a!:V[a\x11\xBEa!KV[a\x11\xC9\x89\x89\x89a!SV[\x83\x15a\x12\x0FW\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[a\x12\"a\x15$V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12kWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x89W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12\xD1W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\x1A\x83\x85a\x10\0V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90a\x13\x93a\n7V[\x84\x11\x80a\x13\x9EWP\x80\x15[\x80a\x13\xE8WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\xCCWa\x13\xCCa/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x06W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\x14`\x01\x85a/\xD7V[\x90P[\x81a\x14\xB0W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\xB0W\x86`\t\x82\x81T\x81\x10a\x14IWa\x14Ia/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x9EW`\x01\x91P`\t\x81\x81T\x81\x10a\x14~Wa\x14~a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\xB0V[\x80a\x14\xA8\x81a0+V[\x91PPa\x14\x17V[\x81a\x14\xCEW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xD9\x84\x89a/\xD7V[\x11\x97\x96PPPPPPPV[a\x14\xEDa\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\x1BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\xAA\x81a\"\x7FV[3a\x15V\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\x0BSW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\x12V[a\x15\x87a%\x11V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` 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[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\x1C0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C$_Q` a4\xA2_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1CVa\x15$V[`@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\x08GV[\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\x1C\xE9WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xE6\x91\x81\x01\x90a/\xC0V[`\x01[a\x1D\x11W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_9_Q\x90_R\x81\x14a\x1DAW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\x12V[a\x1DK\x83\x83a\"\xEFV[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\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n\xC8W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1D\xE3a\x08\x9BV[\x90Pa\x1D\xEDa'vV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E]WPa\x1E]\x85` \x01Qa\t@V[\x15a\x1E\x8FW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\xB3V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1E\xEE\x90\x85\x90\x85\x90\x88\x90`\x04\x01a2\"V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\tW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F-\x91\x90a4BV[a\x1FJW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xC6WP`\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\x1F\x91Wa\x1F\x91a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\xBB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a YW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xF3Wa\x1F\xF3a/\xEAV[_\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 3\x83a4aV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a!Ba#DV[a\n\xAA\x81a#\x8DV[a\x0BSa#DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!wWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x84WP` \x82\x01Q\x15[\x80a!\x91WP`@\x82\x01Q\x15[\x80a!\x9EWP``\x82\x01Q\x15[\x80a!\xA8WP\x81Q\x15[\x80a!\xBAWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xCEWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xECW`@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\"\xF8\x82a#\x95V[`@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#<Wa\x1DK\x82\x82a#\xF8V[a\n\xC8a$jV[\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\x0BSW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xEDa#DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xCAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_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$\x14\x91\x90a4\x8BV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$LW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$QV[``\x91P[P\x91P\x91Pa$a\x85\x83\x83a$\x89V[\x95\x94PPPPPV[4\x15a\x0BSW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x9EWa$\x99\x82a$\xE8V[a$\xE1V[\x81Q\x15\x80\x15a$\xB5WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xDEW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\x12V[P\x80[\x93\x92PPPV[\x80Q\x15a$\xF8W\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%D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'd`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xBBW__\xFD[a$\xE1\x82a'\x95V[_` \x82\x84\x03\x12\x15a'\xD4W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa(\r`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a*\x02W__\xFD[a$\xE1\x82a)\xDCV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*BWa*Ba*\x0BV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*pWa*pa*\x0BV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x88W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xAAWa*\xAAa*\x0BV[`@R\x90P\x80a*\xB9\x83a)\xDCV[\x81Ra*\xC7` \x84\x01a)\xDCV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\xEDW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x0FWa+\x0Fa*\x0BV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+:W__\xFD[a+Ba*\x1FV[\x90Pa+N\x83\x83a*\xDDV[\x81Ra+]\x83`@\x84\x01a*\xDDV[` \x82\x01Ra+o\x83`\x80\x84\x01a*\xDDV[`@\x82\x01Ra+\x81\x83`\xC0\x84\x01a*\xDDV[``\x82\x01Ra+\x94\x83a\x01\0\x84\x01a*\xDDV[`\x80\x82\x01Ra+\xA7\x83a\x01@\x84\x01a*\xDDV[`\xA0\x82\x01Ra+\xBA\x83a\x01\x80\x84\x01a*\xDDV[`\xC0\x82\x01Ra+\xCD\x83a\x01\xC0\x84\x01a*\xDDV[`\xE0\x82\x01Ra+\xE0\x83a\x02\0\x84\x01a*\xDDV[a\x01\0\x82\x01Ra+\xF4\x83a\x02@\x84\x01a*\xDDV[a\x01 \x82\x01Ra,\x08\x83a\x02\x80\x84\x01a*\xDDV[a\x01@\x82\x01Ra,\x1C\x83a\x02\xC0\x84\x01a*\xDDV[a\x01`\x82\x01Ra,0\x83a\x03\0\x84\x01a*\xDDV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,\xC6W__\xFD[a,\xD0\x84\x84a*xV[\x91Pa,\xDF\x84``\x85\x01a+)V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\x0BW__\xFD[a$\xE1\x82a,\xE8V[__`@\x83\x85\x03\x12\x15a-%W__\xFD[a-.\x83a'\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-HW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-XW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-qWa-qa*\x0BV[a-\x84`\x1F\x82\x01`\x1F\x19\x16` \x01a*HV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\x98W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xC7W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xE9Wa-\xE9a*\x0BV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a.*W__\xFD[a.4\x85\x85a*xV[\x92Pa.C\x85``\x86\x01a-\xB7V[\x91Pa.R\x85`\xE0\x86\x01a+)V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.lW__\xFD[a.u\x83a)\xDCV[\x91Pa,\xDF` \x84\x01a)\xDCV[____a\x01 \x85\x87\x03\x12\x15a.\x97W__\xFD[a.\xA1\x86\x86a*xV[\x93Pa.\xB0\x86``\x87\x01a-\xB7V[\x92Pa.\xBE`\xE0\x86\x01a,\xE8V[\x91Pa.\xCDa\x01\0\x86\x01a'\x95V[\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/\x1EW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x8CWa/\x8Ca/`V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n1Wa\n1a/-V[_` \x82\x84\x03\x12\x15a/\xD0W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0\x16Wa0\x16a/`V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a09Wa09a/-V[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0bW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a0CV[PPPPV[a0}\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa2T`@\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\x01Ra4,a\x05\0\x83\x01\x85a0@V[a4:a\x06`\x83\x01\x84a0hV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4RW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xE1W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x82Wa4\x82a/-V[`\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",
4923    );
4924    /// The runtime bytecode of the contract, as deployed on the network.
4925    ///
4926    /// ```text
4927    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127ab565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127c4565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127db565b348015610322575f5ffd5b5061022a6103313660046129f2565b6108b0565b348015610341575f5ffd5b5061022a610350366004612cb4565b610927565b348015610360575f5ffd5b5061037461036f3660046129f2565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc3660046129f2565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a37565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612cfb565b610a99565b61022a6104ae366004612d14565b610aad565b3480156104be575f5ffd5b5061042c610acc565b3480156104d2575f5ffd5b5061022a610ae7565b3480156104e6575f5ffd5b5061022a610b55565b3480156104fa575f5ffd5b5061022a610509366004612e17565b610b76565b348015610519575f5ffd5b506103aa610eb0565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127c4565b610ed5565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e5b565b611000565b3480156105e3575f5ffd5b5061022a6105f2366004612cfb565b61106f565b348015610602575f5ffd5b5061022a610611366004612e83565b6110f8565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612ed8565b3480156106b3575f5ffd5b5061022a6106c2366004612e5b565b61121a565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f0d565b611386565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127ab565b6114e5565b348015610796575f5ffd5b5060095461042c565b6107a7611524565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612511565b6108ab61157f565b905090565b6108b8611524565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617611000565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f41565b61098d9190612f74565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e4906001600160401b031683612f74565b6001600160401b03161580610a315750600a54610a0c906005906001600160401b0316612fa1565b600a546001600160401b0391821691610a26911684612f74565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fc0565b610aa1611524565b610aaa8161106f565b50565b610ab5611baa565b610abe82611c4e565b610ac88282611c8f565b5050565b5f610ad5611d50565b505f5160206134a25f395f51905f5290565b610aef611524565b6008546001600160a01b031615610b3a57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b5d611524565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b9b57506008546001600160a01b03163314155b15610bb9576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610bf2575060065460208401516001600160401b03600160401b9092048216911611155b15610c105760405163051c46ef60e01b815260040160405180910390fd5b610c1d8360400151611d99565b610c2a8260200151611d99565b610c378260400151611d99565b610c448260600151611d99565b5f610c4d610eb0565b6020850151600a549192505f91610c6d91906001600160401b0316611000565b600a549091506001600160401b03600160801b909104811690821610610cb857610c9a85602001516109a2565b15610cb85760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d6b576002610ce28383612fa1565b6001600160401b031610610d095760405163080ae8d960e01b815260040160405180910390fd5b610d14826001612f41565b6001600160401b0316816001600160401b0316148015610d4d5750600654610d4b90600160401b90046001600160401b0316610940565b155b15610d6b5760405163080ae8d960e01b815260040160405180910390fd5b610d76858585611dda565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610dd55750610dd58560200151610940565b15610e3f578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610e23826001612f41565b6040516001600160401b03909116815260200160405180910390a15b610e51610e4a610a37565b4287611f51565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610ea191815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116611000565b600980545f91829190610ee9600183612fd7565b81548110610ef957610ef9612fea565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610ff9578460098281548110610f6857610f68612fea565b5f918252602090912060029091020154600160801b90046001600160401b03161115610ff15760098181548110610fa157610fa1612fea565b905f5260205f2090600202016001015460098281548110610fc457610fc4612fea565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f4c565b5050915091565b5f816001600160401b03165f0361101857505f610a31565b826001600160401b03165f0361103057506001610a31565b61103a8284612f74565b6001600160401b03165f0361105a576110538284612ffe565b9050610a31565b6110648284612ffe565b611053906001612f41565b611077611524565b610e108163ffffffff16108061109657506301e133808163ffffffff16115b806110b4575060085463ffffffff600160a01b909104811690821611155b156110d2576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561113c5750825b90505f826001600160401b031660011480156111575750303b155b905081158015611165575080155b156111835760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156111ad57845460ff60401b1916600160401b1785555b6111b68661213a565b6111be61214b565b6111c9898989612153565b831561120f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611222611524565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061126b575080546001600160401b03808416911610155b156112895760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116112d1576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b03199092169087161717905561131a8385611000565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f90611393610a37565b84118061139e575080155b806113e85750600854600980549091600160c01b90046001600160401b03169081106113cc576113cc612fea565b5f9182526020909120600290910201546001600160401b031684105b156114065760405163b0b4387760e01b815260040160405180910390fd5b5f8080611414600185612fd7565b90505b816114b057600854600160c01b90046001600160401b031681106114b057866009828154811061144957611449612fea565b5f9182526020909120600290910201546001600160401b03161161149e57600191506009818154811061147e5761147e612fea565b5f9182526020909120600290910201546001600160401b031692506114b0565b806114a88161302b565b915050611417565b816114ce5760405163b0b4387760e01b815260040160405180910390fd5b856114d98489612fd7565b11979650505050505050565b6114ed611524565b6001600160a01b03811661151b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aaa8161227f565b336115567f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b535760405163118cdaa760e01b8152336004820152602401611512565b611587612511565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c3057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c245f5160206134a25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b611c56611524565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ce9575060408051601f3d908101601f19168201909252611ce691810190612fc0565b60015b611d1157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611512565b5f5160206134a25f395f51905f528114611d4157604051632a87526960e21b815260048101829052602401611512565b611d4b83836122ef565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610ac85760405163016c173360e21b815260040160405180910390fd5b5f611de361089b565b9050611ded612776565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e5d5750611e5d8560200151610940565b15611e8f57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611eb3565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611eee90859085908890600401613222565b602060405180830381865af4158015611f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2d9190613442565b611f4a576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fc6575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f9157611f91612fea565b5f918252602090912060029091020154611fbb90600160401b90046001600160401b031684612fa1565b6001600160401b0316115b1561205957600854600980549091600160c01b90046001600160401b0316908110611ff357611ff3612fea565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861203383613461565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612142612344565b610aaa8161238d565b610b53612344565b82516001600160401b0316151580612177575060208301516001600160401b031615155b8061218457506020820151155b8061219157506040820151155b8061219e57506060820151155b806121a857508151155b806121ba5750610e108163ffffffff16105b806121ce57506301e133808163ffffffff16115b156121ec576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122f882612395565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561233c57611d4b82826123f8565b610ac861246a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b6114ed612344565b806001600160a01b03163b5f036123ca57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611512565b5f5160206134a25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612414919061348b565b5f60405180830381855af49150503d805f811461244c576040519150601f19603f3d011682016040523d82523d5f602084013e612451565b606091505b5091509150612461858383612489565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b60608261249e57612499826124e8565b6124e1565b81511580156124b557506001600160a01b0384163b155b156124de57604051639996b31560e01b81526001600160a01b0385166004820152602401611512565b50805b9392505050565b8051156124f85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161254460405180604001604052805f81526020015f81525090565b815260200161256460405180604001604052805f81526020015f81525090565b815260200161258460405180604001604052805f81526020015f81525090565b81526020016125a460405180604001604052805f81526020015f81525090565b81526020016125c460405180604001604052805f81526020015f81525090565b81526020016125e460405180604001604052805f81526020015f81525090565b815260200161260460405180604001604052805f81526020015f81525090565b815260200161262460405180604001604052805f81526020015f81525090565b815260200161264460405180604001604052805f81526020015f81525090565b815260200161266460405180604001604052805f81526020015f81525090565b815260200161268460405180604001604052805f81526020015f81525090565b81526020016126a460405180604001604052805f81526020015f81525090565b81526020016126c460405180604001604052805f81526020015f81525090565b81526020016126e460405180604001604052805f81526020015f81525090565b815260200161270460405180604001604052805f81526020015f81525090565b815260200161272460405180604001604052805f81526020015f81525090565b815260200161274460405180604001604052805f81526020015f81525090565b815260200161276460405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127bb575f5ffd5b6124e182612795565b5f602082840312156127d4575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161280d604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f60208284031215612a02575f5ffd5b6124e1826129dc565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a4257612a42612a0b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a7057612a70612a0b565b604052919050565b5f60608284031215612a88575f5ffd5b604051606081016001600160401b0381118282101715612aaa57612aaa612a0b565b604052905080612ab9836129dc565b8152612ac7602084016129dc565b6020820152604092830135920191909152919050565b5f60408284031215612aed575f5ffd5b604080519081016001600160401b0381118282101715612b0f57612b0f612a0b565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b3a575f5ffd5b612b42612a1f565b9050612b4e8383612add565b8152612b5d8360408401612add565b6020820152612b6f8360808401612add565b6040820152612b818360c08401612add565b6060820152612b94836101008401612add565b6080820152612ba7836101408401612add565b60a0820152612bba836101808401612add565b60c0820152612bcd836101c08401612add565b60e0820152612be0836102008401612add565b610100820152612bf4836102408401612add565b610120820152612c08836102808401612add565b610140820152612c1c836102c08401612add565b610160820152612c30836103008401612add565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cc6575f5ffd5b612cd08484612a78565b9150612cdf8460608501612b29565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d0b575f5ffd5b6124e182612ce8565b5f5f60408385031215612d25575f5ffd5b612d2e83612795565b915060208301356001600160401b03811115612d48575f5ffd5b8301601f81018513612d58575f5ffd5b80356001600160401b03811115612d7157612d71612a0b565b612d84601f8201601f1916602001612a48565b818152866020838501011115612d98575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dc7575f5ffd5b604051608081016001600160401b0381118282101715612de957612de9612a0b565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e2a575f5ffd5b612e348585612a78565b9250612e438560608601612db7565b9150612e528560e08601612b29565b90509250925092565b5f5f60408385031215612e6c575f5ffd5b612e75836129dc565b9150612cdf602084016129dc565b5f5f5f5f6101208587031215612e97575f5ffd5b612ea18686612a78565b9350612eb08660608701612db7565b9250612ebe60e08601612ce8565b9150612ecd6101008601612795565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f1e575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a3157610a31612f2d565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f8c57612f8c612f60565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a3157610a31612f2d565b5f60208284031215612fd0575f5ffd5b5051919050565b81810381811115610a3157610a31612f2d565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061301657613016612f60565b806001600160401b0384160491505092915050565b5f8161303957613039612f2d565b505f190190565b805f5b600b811015613062578151845260209384019390910190600101613043565b50505050565b61307d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae08201905084518252602085015160208301526040850151613254604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261342c610500830185613040565b61343a610660830184613068565b949350505050565b5f60208284031215613452575f5ffd5b815180151581146124e1575f5ffd5b5f6001600160401b0382166001600160401b03810361348257613482612f2d565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4928    /// ```
4929    #[rustfmt::skip]
4930    #[allow(clippy::all)]
4931    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4932        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\xABV[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xC4V[a\x08RV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x9BV[`@Qa\x02\x80\x91\x90a'\xDBV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\xF2V[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xB4V[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\xF2V[a\t@V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)\xF2V[a\t\xA2V[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[Pa\x04,a\n7V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a,\xFBV[a\n\x99V[a\x02*a\x04\xAE6`\x04a-\x14V[a\n\xADV[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xCCV[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xE7V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0BUV[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a.\x17V[a\x0BvV[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0E\xB0V[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xC4V[a\x0E\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\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\x04\0V[4\x80\x15a\x05\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.[V[a\x10\0V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a,\xFBV[a\x10oV[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.\x83V[a\x10\xF8V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xD8V[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.[V[a\x12\x1AV[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/\rV[a\x13\x86V[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xABV[a\x14\xE5V[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xFDW`@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\x08aW_\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\x08\xA3a%\x11V[a\x08\xABa\x15\x7FV[\x90P\x90V[a\x08\xB8a\x15$V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x10\0V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/AV[a\t\x8D\x91\x90a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE4\x90`\x01`\x01`@\x1B\x03\x16\x83a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n1WP`\nTa\n\x0C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\xA1V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n&\x91\x16\x84a/tV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`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\nuW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xC0V[a\n\xA1a\x15$V[a\n\xAA\x81a\x10oV[PV[a\n\xB5a\x1B\xAAV[a\n\xBE\x82a\x1CNV[a\n\xC8\x82\x82a\x1C\x8FV[PPV[_a\n\xD5a\x1DPV[P_Q` a4\xA2_9_Q\x90_R\x90V[a\n\xEFa\x15$V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B:W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0B]a\x15$V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B\x9BWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\xB9W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\xF2WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0C\x10W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x1D\x83`@\x01Qa\x1D\x99V[a\x0C*\x82` \x01Qa\x1D\x99V[a\x0C7\x82`@\x01Qa\x1D\x99V[a\x0CD\x82``\x01Qa\x1D\x99V[_a\x0CMa\x0E\xB0V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0Cm\x91\x90`\x01`\x01`@\x1B\x03\x16a\x10\0V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\xB8Wa\x0C\x9A\x85` \x01Qa\t\xA2V[\x15a\x0C\xB8W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\rkW`\x02a\x0C\xE2\x83\x83a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x10a\r\tW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x14\x82`\x01a/AV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\rMWP`\x06Ta\rK\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\rkW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rv\x85\x85\x85a\x1D\xDAV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\xD5WPa\r\xD5\x85` \x01Qa\t@V[\x15a\x0E?W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x0E#\x82`\x01a/AV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0EQa\x0EJa\n7V[B\x87a\x1FQV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E\xA1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x10\0V[`\t\x80T_\x91\x82\x91\x90a\x0E\xE9`\x01\x83a/\xD7V[\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F8W`@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\x0F\xF9W\x84`\t\x82\x81T\x81\x10a\x0FhWa\x0Fha/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xF1W`\t\x81\x81T\x81\x10a\x0F\xA1Wa\x0F\xA1a/\xEAV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\xC4Wa\x0F\xC4a/\xEAV[\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\x0FLV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x10\x18WP_a\n1V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x100WP`\x01a\n1V[a\x10:\x82\x84a/tV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10ZWa\x10S\x82\x84a/\xFEV[\x90Pa\n1V[a\x10d\x82\x84a/\xFEV[a\x10S\x90`\x01a/AV[a\x10wa\x15$V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x96WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\xB4WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xD2W`@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\x11<WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11WWP0;\x15[\x90P\x81\x15\x80\x15a\x11eWP\x80\x15[\x15a\x11\x83W`@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\x11\xADW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\xB6\x86a!:V[a\x11\xBEa!KV[a\x11\xC9\x89\x89\x89a!SV[\x83\x15a\x12\x0FW\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[a\x12\"a\x15$V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12kWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x89W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12\xD1W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\x1A\x83\x85a\x10\0V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90a\x13\x93a\n7V[\x84\x11\x80a\x13\x9EWP\x80\x15[\x80a\x13\xE8WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\xCCWa\x13\xCCa/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x06W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\x14`\x01\x85a/\xD7V[\x90P[\x81a\x14\xB0W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\xB0W\x86`\t\x82\x81T\x81\x10a\x14IWa\x14Ia/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x9EW`\x01\x91P`\t\x81\x81T\x81\x10a\x14~Wa\x14~a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\xB0V[\x80a\x14\xA8\x81a0+V[\x91PPa\x14\x17V[\x81a\x14\xCEW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xD9\x84\x89a/\xD7V[\x11\x97\x96PPPPPPPV[a\x14\xEDa\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\x1BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\xAA\x81a\"\x7FV[3a\x15V\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\x0BSW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\x12V[a\x15\x87a%\x11V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` 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[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\x1C0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C$_Q` a4\xA2_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1CVa\x15$V[`@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\x08GV[\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\x1C\xE9WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xE6\x91\x81\x01\x90a/\xC0V[`\x01[a\x1D\x11W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_9_Q\x90_R\x81\x14a\x1DAW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\x12V[a\x1DK\x83\x83a\"\xEFV[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\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n\xC8W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1D\xE3a\x08\x9BV[\x90Pa\x1D\xEDa'vV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E]WPa\x1E]\x85` \x01Qa\t@V[\x15a\x1E\x8FW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\xB3V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1E\xEE\x90\x85\x90\x85\x90\x88\x90`\x04\x01a2\"V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\tW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F-\x91\x90a4BV[a\x1FJW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xC6WP`\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\x1F\x91Wa\x1F\x91a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\xBB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a YW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xF3Wa\x1F\xF3a/\xEAV[_\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 3\x83a4aV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a!Ba#DV[a\n\xAA\x81a#\x8DV[a\x0BSa#DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!wWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x84WP` \x82\x01Q\x15[\x80a!\x91WP`@\x82\x01Q\x15[\x80a!\x9EWP``\x82\x01Q\x15[\x80a!\xA8WP\x81Q\x15[\x80a!\xBAWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xCEWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xECW`@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\"\xF8\x82a#\x95V[`@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#<Wa\x1DK\x82\x82a#\xF8V[a\n\xC8a$jV[\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\x0BSW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xEDa#DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xCAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_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$\x14\x91\x90a4\x8BV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$LW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$QV[``\x91P[P\x91P\x91Pa$a\x85\x83\x83a$\x89V[\x95\x94PPPPPV[4\x15a\x0BSW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x9EWa$\x99\x82a$\xE8V[a$\xE1V[\x81Q\x15\x80\x15a$\xB5WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xDEW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\x12V[P\x80[\x93\x92PPPV[\x80Q\x15a$\xF8W\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%D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'd`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xBBW__\xFD[a$\xE1\x82a'\x95V[_` \x82\x84\x03\x12\x15a'\xD4W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa(\r`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a*\x02W__\xFD[a$\xE1\x82a)\xDCV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*BWa*Ba*\x0BV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*pWa*pa*\x0BV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x88W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xAAWa*\xAAa*\x0BV[`@R\x90P\x80a*\xB9\x83a)\xDCV[\x81Ra*\xC7` \x84\x01a)\xDCV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\xEDW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x0FWa+\x0Fa*\x0BV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+:W__\xFD[a+Ba*\x1FV[\x90Pa+N\x83\x83a*\xDDV[\x81Ra+]\x83`@\x84\x01a*\xDDV[` \x82\x01Ra+o\x83`\x80\x84\x01a*\xDDV[`@\x82\x01Ra+\x81\x83`\xC0\x84\x01a*\xDDV[``\x82\x01Ra+\x94\x83a\x01\0\x84\x01a*\xDDV[`\x80\x82\x01Ra+\xA7\x83a\x01@\x84\x01a*\xDDV[`\xA0\x82\x01Ra+\xBA\x83a\x01\x80\x84\x01a*\xDDV[`\xC0\x82\x01Ra+\xCD\x83a\x01\xC0\x84\x01a*\xDDV[`\xE0\x82\x01Ra+\xE0\x83a\x02\0\x84\x01a*\xDDV[a\x01\0\x82\x01Ra+\xF4\x83a\x02@\x84\x01a*\xDDV[a\x01 \x82\x01Ra,\x08\x83a\x02\x80\x84\x01a*\xDDV[a\x01@\x82\x01Ra,\x1C\x83a\x02\xC0\x84\x01a*\xDDV[a\x01`\x82\x01Ra,0\x83a\x03\0\x84\x01a*\xDDV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,\xC6W__\xFD[a,\xD0\x84\x84a*xV[\x91Pa,\xDF\x84``\x85\x01a+)V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\x0BW__\xFD[a$\xE1\x82a,\xE8V[__`@\x83\x85\x03\x12\x15a-%W__\xFD[a-.\x83a'\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-HW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-XW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-qWa-qa*\x0BV[a-\x84`\x1F\x82\x01`\x1F\x19\x16` \x01a*HV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\x98W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xC7W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xE9Wa-\xE9a*\x0BV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a.*W__\xFD[a.4\x85\x85a*xV[\x92Pa.C\x85``\x86\x01a-\xB7V[\x91Pa.R\x85`\xE0\x86\x01a+)V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.lW__\xFD[a.u\x83a)\xDCV[\x91Pa,\xDF` \x84\x01a)\xDCV[____a\x01 \x85\x87\x03\x12\x15a.\x97W__\xFD[a.\xA1\x86\x86a*xV[\x93Pa.\xB0\x86``\x87\x01a-\xB7V[\x92Pa.\xBE`\xE0\x86\x01a,\xE8V[\x91Pa.\xCDa\x01\0\x86\x01a'\x95V[\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/\x1EW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x8CWa/\x8Ca/`V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n1Wa\n1a/-V[_` \x82\x84\x03\x12\x15a/\xD0W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0\x16Wa0\x16a/`V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a09Wa09a/-V[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0bW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a0CV[PPPPV[a0}\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa2T`@\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\x01Ra4,a\x05\0\x83\x01\x85a0@V[a4:a\x06`\x83\x01\x84a0hV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4RW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xE1W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x82Wa4\x82a/-V[`\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",
4933    );
4934    #[derive(serde::Serialize, serde::Deserialize)]
4935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4936    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4937```solidity
4938error AddressEmptyCode(address target);
4939```*/
4940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4941    #[derive(Clone)]
4942    pub struct AddressEmptyCode {
4943        #[allow(missing_docs)]
4944        pub target: alloy::sol_types::private::Address,
4945    }
4946    #[allow(
4947        non_camel_case_types,
4948        non_snake_case,
4949        clippy::pub_underscore_fields,
4950        clippy::style
4951    )]
4952    const _: () = {
4953        use alloy::sol_types as alloy_sol_types;
4954        #[doc(hidden)]
4955        #[allow(dead_code)]
4956        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4957        #[doc(hidden)]
4958        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4959        #[cfg(test)]
4960        #[allow(dead_code, unreachable_patterns)]
4961        fn _type_assertion(
4962            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4963        ) {
4964            match _t {
4965                alloy_sol_types::private::AssertTypeEq::<
4966                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4967                >(_) => {}
4968            }
4969        }
4970        #[automatically_derived]
4971        #[doc(hidden)]
4972        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4973            fn from(value: AddressEmptyCode) -> Self {
4974                (value.target,)
4975            }
4976        }
4977        #[automatically_derived]
4978        #[doc(hidden)]
4979        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4980            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4981                Self { target: tuple.0 }
4982            }
4983        }
4984        #[automatically_derived]
4985        impl alloy_sol_types::SolError for AddressEmptyCode {
4986            type Parameters<'a> = UnderlyingSolTuple<'a>;
4987            type Token<'a> = <Self::Parameters<
4988                'a,
4989            > as alloy_sol_types::SolType>::Token<'a>;
4990            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4991            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4992            #[inline]
4993            fn new<'a>(
4994                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4995            ) -> Self {
4996                tuple.into()
4997            }
4998            #[inline]
4999            fn tokenize(&self) -> Self::Token<'_> {
5000                (
5001                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5002                        &self.target,
5003                    ),
5004                )
5005            }
5006            #[inline]
5007            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5008                <Self::Parameters<
5009                    '_,
5010                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5011                    .map(Self::new)
5012            }
5013        }
5014    };
5015    #[derive(serde::Serialize, serde::Deserialize)]
5016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5017    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5018```solidity
5019error DeprecatedApi();
5020```*/
5021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5022    #[derive(Clone)]
5023    pub struct DeprecatedApi;
5024    #[allow(
5025        non_camel_case_types,
5026        non_snake_case,
5027        clippy::pub_underscore_fields,
5028        clippy::style
5029    )]
5030    const _: () = {
5031        use alloy::sol_types as alloy_sol_types;
5032        #[doc(hidden)]
5033        #[allow(dead_code)]
5034        type UnderlyingSolTuple<'a> = ();
5035        #[doc(hidden)]
5036        type UnderlyingRustTuple<'a> = ();
5037        #[cfg(test)]
5038        #[allow(dead_code, unreachable_patterns)]
5039        fn _type_assertion(
5040            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5041        ) {
5042            match _t {
5043                alloy_sol_types::private::AssertTypeEq::<
5044                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5045                >(_) => {}
5046            }
5047        }
5048        #[automatically_derived]
5049        #[doc(hidden)]
5050        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5051            fn from(value: DeprecatedApi) -> Self {
5052                ()
5053            }
5054        }
5055        #[automatically_derived]
5056        #[doc(hidden)]
5057        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5058            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5059                Self
5060            }
5061        }
5062        #[automatically_derived]
5063        impl alloy_sol_types::SolError for DeprecatedApi {
5064            type Parameters<'a> = UnderlyingSolTuple<'a>;
5065            type Token<'a> = <Self::Parameters<
5066                'a,
5067            > as alloy_sol_types::SolType>::Token<'a>;
5068            const SIGNATURE: &'static str = "DeprecatedApi()";
5069            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5070            #[inline]
5071            fn new<'a>(
5072                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5073            ) -> Self {
5074                tuple.into()
5075            }
5076            #[inline]
5077            fn tokenize(&self) -> Self::Token<'_> {
5078                ()
5079            }
5080            #[inline]
5081            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5082                <Self::Parameters<
5083                    '_,
5084                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5085                    .map(Self::new)
5086            }
5087        }
5088    };
5089    #[derive(serde::Serialize, serde::Deserialize)]
5090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5091    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5092```solidity
5093error ERC1967InvalidImplementation(address implementation);
5094```*/
5095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5096    #[derive(Clone)]
5097    pub struct ERC1967InvalidImplementation {
5098        #[allow(missing_docs)]
5099        pub implementation: alloy::sol_types::private::Address,
5100    }
5101    #[allow(
5102        non_camel_case_types,
5103        non_snake_case,
5104        clippy::pub_underscore_fields,
5105        clippy::style
5106    )]
5107    const _: () = {
5108        use alloy::sol_types as alloy_sol_types;
5109        #[doc(hidden)]
5110        #[allow(dead_code)]
5111        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5112        #[doc(hidden)]
5113        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5114        #[cfg(test)]
5115        #[allow(dead_code, unreachable_patterns)]
5116        fn _type_assertion(
5117            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5118        ) {
5119            match _t {
5120                alloy_sol_types::private::AssertTypeEq::<
5121                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5122                >(_) => {}
5123            }
5124        }
5125        #[automatically_derived]
5126        #[doc(hidden)]
5127        impl ::core::convert::From<ERC1967InvalidImplementation>
5128        for UnderlyingRustTuple<'_> {
5129            fn from(value: ERC1967InvalidImplementation) -> Self {
5130                (value.implementation,)
5131            }
5132        }
5133        #[automatically_derived]
5134        #[doc(hidden)]
5135        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5136        for ERC1967InvalidImplementation {
5137            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5138                Self { implementation: tuple.0 }
5139            }
5140        }
5141        #[automatically_derived]
5142        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5143            type Parameters<'a> = UnderlyingSolTuple<'a>;
5144            type Token<'a> = <Self::Parameters<
5145                'a,
5146            > as alloy_sol_types::SolType>::Token<'a>;
5147            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5148            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5149            #[inline]
5150            fn new<'a>(
5151                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5152            ) -> Self {
5153                tuple.into()
5154            }
5155            #[inline]
5156            fn tokenize(&self) -> Self::Token<'_> {
5157                (
5158                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5159                        &self.implementation,
5160                    ),
5161                )
5162            }
5163            #[inline]
5164            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5165                <Self::Parameters<
5166                    '_,
5167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5168                    .map(Self::new)
5169            }
5170        }
5171    };
5172    #[derive(serde::Serialize, serde::Deserialize)]
5173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5174    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5175```solidity
5176error ERC1967NonPayable();
5177```*/
5178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5179    #[derive(Clone)]
5180    pub struct ERC1967NonPayable;
5181    #[allow(
5182        non_camel_case_types,
5183        non_snake_case,
5184        clippy::pub_underscore_fields,
5185        clippy::style
5186    )]
5187    const _: () = {
5188        use alloy::sol_types as alloy_sol_types;
5189        #[doc(hidden)]
5190        #[allow(dead_code)]
5191        type UnderlyingSolTuple<'a> = ();
5192        #[doc(hidden)]
5193        type UnderlyingRustTuple<'a> = ();
5194        #[cfg(test)]
5195        #[allow(dead_code, unreachable_patterns)]
5196        fn _type_assertion(
5197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5198        ) {
5199            match _t {
5200                alloy_sol_types::private::AssertTypeEq::<
5201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5202                >(_) => {}
5203            }
5204        }
5205        #[automatically_derived]
5206        #[doc(hidden)]
5207        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5208            fn from(value: ERC1967NonPayable) -> Self {
5209                ()
5210            }
5211        }
5212        #[automatically_derived]
5213        #[doc(hidden)]
5214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5216                Self
5217            }
5218        }
5219        #[automatically_derived]
5220        impl alloy_sol_types::SolError for ERC1967NonPayable {
5221            type Parameters<'a> = UnderlyingSolTuple<'a>;
5222            type Token<'a> = <Self::Parameters<
5223                'a,
5224            > as alloy_sol_types::SolType>::Token<'a>;
5225            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5226            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5227            #[inline]
5228            fn new<'a>(
5229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5230            ) -> Self {
5231                tuple.into()
5232            }
5233            #[inline]
5234            fn tokenize(&self) -> Self::Token<'_> {
5235                ()
5236            }
5237            #[inline]
5238            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5239                <Self::Parameters<
5240                    '_,
5241                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5242                    .map(Self::new)
5243            }
5244        }
5245    };
5246    #[derive(serde::Serialize, serde::Deserialize)]
5247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5248    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5249```solidity
5250error FailedInnerCall();
5251```*/
5252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5253    #[derive(Clone)]
5254    pub struct FailedInnerCall;
5255    #[allow(
5256        non_camel_case_types,
5257        non_snake_case,
5258        clippy::pub_underscore_fields,
5259        clippy::style
5260    )]
5261    const _: () = {
5262        use alloy::sol_types as alloy_sol_types;
5263        #[doc(hidden)]
5264        #[allow(dead_code)]
5265        type UnderlyingSolTuple<'a> = ();
5266        #[doc(hidden)]
5267        type UnderlyingRustTuple<'a> = ();
5268        #[cfg(test)]
5269        #[allow(dead_code, unreachable_patterns)]
5270        fn _type_assertion(
5271            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5272        ) {
5273            match _t {
5274                alloy_sol_types::private::AssertTypeEq::<
5275                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5276                >(_) => {}
5277            }
5278        }
5279        #[automatically_derived]
5280        #[doc(hidden)]
5281        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5282            fn from(value: FailedInnerCall) -> Self {
5283                ()
5284            }
5285        }
5286        #[automatically_derived]
5287        #[doc(hidden)]
5288        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5289            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5290                Self
5291            }
5292        }
5293        #[automatically_derived]
5294        impl alloy_sol_types::SolError for FailedInnerCall {
5295            type Parameters<'a> = UnderlyingSolTuple<'a>;
5296            type Token<'a> = <Self::Parameters<
5297                'a,
5298            > as alloy_sol_types::SolType>::Token<'a>;
5299            const SIGNATURE: &'static str = "FailedInnerCall()";
5300            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5301            #[inline]
5302            fn new<'a>(
5303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5304            ) -> Self {
5305                tuple.into()
5306            }
5307            #[inline]
5308            fn tokenize(&self) -> Self::Token<'_> {
5309                ()
5310            }
5311            #[inline]
5312            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5313                <Self::Parameters<
5314                    '_,
5315                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5316                    .map(Self::new)
5317            }
5318        }
5319    };
5320    #[derive(serde::Serialize, serde::Deserialize)]
5321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5322    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5323```solidity
5324error InsufficientSnapshotHistory();
5325```*/
5326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5327    #[derive(Clone)]
5328    pub struct InsufficientSnapshotHistory;
5329    #[allow(
5330        non_camel_case_types,
5331        non_snake_case,
5332        clippy::pub_underscore_fields,
5333        clippy::style
5334    )]
5335    const _: () = {
5336        use alloy::sol_types as alloy_sol_types;
5337        #[doc(hidden)]
5338        #[allow(dead_code)]
5339        type UnderlyingSolTuple<'a> = ();
5340        #[doc(hidden)]
5341        type UnderlyingRustTuple<'a> = ();
5342        #[cfg(test)]
5343        #[allow(dead_code, unreachable_patterns)]
5344        fn _type_assertion(
5345            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5346        ) {
5347            match _t {
5348                alloy_sol_types::private::AssertTypeEq::<
5349                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5350                >(_) => {}
5351            }
5352        }
5353        #[automatically_derived]
5354        #[doc(hidden)]
5355        impl ::core::convert::From<InsufficientSnapshotHistory>
5356        for UnderlyingRustTuple<'_> {
5357            fn from(value: InsufficientSnapshotHistory) -> Self {
5358                ()
5359            }
5360        }
5361        #[automatically_derived]
5362        #[doc(hidden)]
5363        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5364        for InsufficientSnapshotHistory {
5365            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5366                Self
5367            }
5368        }
5369        #[automatically_derived]
5370        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5371            type Parameters<'a> = UnderlyingSolTuple<'a>;
5372            type Token<'a> = <Self::Parameters<
5373                'a,
5374            > as alloy_sol_types::SolType>::Token<'a>;
5375            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5376            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5377            #[inline]
5378            fn new<'a>(
5379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5380            ) -> Self {
5381                tuple.into()
5382            }
5383            #[inline]
5384            fn tokenize(&self) -> Self::Token<'_> {
5385                ()
5386            }
5387            #[inline]
5388            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5389                <Self::Parameters<
5390                    '_,
5391                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5392                    .map(Self::new)
5393            }
5394        }
5395    };
5396    #[derive(serde::Serialize, serde::Deserialize)]
5397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5398    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5399```solidity
5400error InvalidAddress();
5401```*/
5402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5403    #[derive(Clone)]
5404    pub struct InvalidAddress;
5405    #[allow(
5406        non_camel_case_types,
5407        non_snake_case,
5408        clippy::pub_underscore_fields,
5409        clippy::style
5410    )]
5411    const _: () = {
5412        use alloy::sol_types as alloy_sol_types;
5413        #[doc(hidden)]
5414        #[allow(dead_code)]
5415        type UnderlyingSolTuple<'a> = ();
5416        #[doc(hidden)]
5417        type UnderlyingRustTuple<'a> = ();
5418        #[cfg(test)]
5419        #[allow(dead_code, unreachable_patterns)]
5420        fn _type_assertion(
5421            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5422        ) {
5423            match _t {
5424                alloy_sol_types::private::AssertTypeEq::<
5425                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5426                >(_) => {}
5427            }
5428        }
5429        #[automatically_derived]
5430        #[doc(hidden)]
5431        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5432            fn from(value: InvalidAddress) -> Self {
5433                ()
5434            }
5435        }
5436        #[automatically_derived]
5437        #[doc(hidden)]
5438        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5439            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5440                Self
5441            }
5442        }
5443        #[automatically_derived]
5444        impl alloy_sol_types::SolError for InvalidAddress {
5445            type Parameters<'a> = UnderlyingSolTuple<'a>;
5446            type Token<'a> = <Self::Parameters<
5447                'a,
5448            > as alloy_sol_types::SolType>::Token<'a>;
5449            const SIGNATURE: &'static str = "InvalidAddress()";
5450            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5451            #[inline]
5452            fn new<'a>(
5453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5454            ) -> Self {
5455                tuple.into()
5456            }
5457            #[inline]
5458            fn tokenize(&self) -> Self::Token<'_> {
5459                ()
5460            }
5461            #[inline]
5462            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5463                <Self::Parameters<
5464                    '_,
5465                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5466                    .map(Self::new)
5467            }
5468        }
5469    };
5470    #[derive(serde::Serialize, serde::Deserialize)]
5471    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5472    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5473```solidity
5474error InvalidArgs();
5475```*/
5476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5477    #[derive(Clone)]
5478    pub struct InvalidArgs;
5479    #[allow(
5480        non_camel_case_types,
5481        non_snake_case,
5482        clippy::pub_underscore_fields,
5483        clippy::style
5484    )]
5485    const _: () = {
5486        use alloy::sol_types as alloy_sol_types;
5487        #[doc(hidden)]
5488        #[allow(dead_code)]
5489        type UnderlyingSolTuple<'a> = ();
5490        #[doc(hidden)]
5491        type UnderlyingRustTuple<'a> = ();
5492        #[cfg(test)]
5493        #[allow(dead_code, unreachable_patterns)]
5494        fn _type_assertion(
5495            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5496        ) {
5497            match _t {
5498                alloy_sol_types::private::AssertTypeEq::<
5499                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5500                >(_) => {}
5501            }
5502        }
5503        #[automatically_derived]
5504        #[doc(hidden)]
5505        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5506            fn from(value: InvalidArgs) -> Self {
5507                ()
5508            }
5509        }
5510        #[automatically_derived]
5511        #[doc(hidden)]
5512        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5513            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                Self
5515            }
5516        }
5517        #[automatically_derived]
5518        impl alloy_sol_types::SolError for InvalidArgs {
5519            type Parameters<'a> = UnderlyingSolTuple<'a>;
5520            type Token<'a> = <Self::Parameters<
5521                'a,
5522            > as alloy_sol_types::SolType>::Token<'a>;
5523            const SIGNATURE: &'static str = "InvalidArgs()";
5524            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5525            #[inline]
5526            fn new<'a>(
5527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5528            ) -> Self {
5529                tuple.into()
5530            }
5531            #[inline]
5532            fn tokenize(&self) -> Self::Token<'_> {
5533                ()
5534            }
5535            #[inline]
5536            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5537                <Self::Parameters<
5538                    '_,
5539                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5540                    .map(Self::new)
5541            }
5542        }
5543    };
5544    #[derive(serde::Serialize, serde::Deserialize)]
5545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5546    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5547```solidity
5548error InvalidHotShotBlockForCommitmentCheck();
5549```*/
5550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5551    #[derive(Clone)]
5552    pub struct InvalidHotShotBlockForCommitmentCheck;
5553    #[allow(
5554        non_camel_case_types,
5555        non_snake_case,
5556        clippy::pub_underscore_fields,
5557        clippy::style
5558    )]
5559    const _: () = {
5560        use alloy::sol_types as alloy_sol_types;
5561        #[doc(hidden)]
5562        #[allow(dead_code)]
5563        type UnderlyingSolTuple<'a> = ();
5564        #[doc(hidden)]
5565        type UnderlyingRustTuple<'a> = ();
5566        #[cfg(test)]
5567        #[allow(dead_code, unreachable_patterns)]
5568        fn _type_assertion(
5569            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5570        ) {
5571            match _t {
5572                alloy_sol_types::private::AssertTypeEq::<
5573                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5574                >(_) => {}
5575            }
5576        }
5577        #[automatically_derived]
5578        #[doc(hidden)]
5579        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5580        for UnderlyingRustTuple<'_> {
5581            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5582                ()
5583            }
5584        }
5585        #[automatically_derived]
5586        #[doc(hidden)]
5587        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5588        for InvalidHotShotBlockForCommitmentCheck {
5589            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5590                Self
5591            }
5592        }
5593        #[automatically_derived]
5594        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5595            type Parameters<'a> = UnderlyingSolTuple<'a>;
5596            type Token<'a> = <Self::Parameters<
5597                'a,
5598            > as alloy_sol_types::SolType>::Token<'a>;
5599            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5600            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5601            #[inline]
5602            fn new<'a>(
5603                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5604            ) -> Self {
5605                tuple.into()
5606            }
5607            #[inline]
5608            fn tokenize(&self) -> Self::Token<'_> {
5609                ()
5610            }
5611            #[inline]
5612            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5613                <Self::Parameters<
5614                    '_,
5615                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5616                    .map(Self::new)
5617            }
5618        }
5619    };
5620    #[derive(serde::Serialize, serde::Deserialize)]
5621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5622    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5623```solidity
5624error InvalidInitialization();
5625```*/
5626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5627    #[derive(Clone)]
5628    pub struct InvalidInitialization;
5629    #[allow(
5630        non_camel_case_types,
5631        non_snake_case,
5632        clippy::pub_underscore_fields,
5633        clippy::style
5634    )]
5635    const _: () = {
5636        use alloy::sol_types as alloy_sol_types;
5637        #[doc(hidden)]
5638        #[allow(dead_code)]
5639        type UnderlyingSolTuple<'a> = ();
5640        #[doc(hidden)]
5641        type UnderlyingRustTuple<'a> = ();
5642        #[cfg(test)]
5643        #[allow(dead_code, unreachable_patterns)]
5644        fn _type_assertion(
5645            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5646        ) {
5647            match _t {
5648                alloy_sol_types::private::AssertTypeEq::<
5649                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5650                >(_) => {}
5651            }
5652        }
5653        #[automatically_derived]
5654        #[doc(hidden)]
5655        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5656            fn from(value: InvalidInitialization) -> Self {
5657                ()
5658            }
5659        }
5660        #[automatically_derived]
5661        #[doc(hidden)]
5662        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5663            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5664                Self
5665            }
5666        }
5667        #[automatically_derived]
5668        impl alloy_sol_types::SolError for InvalidInitialization {
5669            type Parameters<'a> = UnderlyingSolTuple<'a>;
5670            type Token<'a> = <Self::Parameters<
5671                'a,
5672            > as alloy_sol_types::SolType>::Token<'a>;
5673            const SIGNATURE: &'static str = "InvalidInitialization()";
5674            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5675            #[inline]
5676            fn new<'a>(
5677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5678            ) -> Self {
5679                tuple.into()
5680            }
5681            #[inline]
5682            fn tokenize(&self) -> Self::Token<'_> {
5683                ()
5684            }
5685            #[inline]
5686            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5687                <Self::Parameters<
5688                    '_,
5689                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5690                    .map(Self::new)
5691            }
5692        }
5693    };
5694    #[derive(serde::Serialize, serde::Deserialize)]
5695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5696    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5697```solidity
5698error InvalidMaxStateHistory();
5699```*/
5700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5701    #[derive(Clone)]
5702    pub struct InvalidMaxStateHistory;
5703    #[allow(
5704        non_camel_case_types,
5705        non_snake_case,
5706        clippy::pub_underscore_fields,
5707        clippy::style
5708    )]
5709    const _: () = {
5710        use alloy::sol_types as alloy_sol_types;
5711        #[doc(hidden)]
5712        #[allow(dead_code)]
5713        type UnderlyingSolTuple<'a> = ();
5714        #[doc(hidden)]
5715        type UnderlyingRustTuple<'a> = ();
5716        #[cfg(test)]
5717        #[allow(dead_code, unreachable_patterns)]
5718        fn _type_assertion(
5719            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5720        ) {
5721            match _t {
5722                alloy_sol_types::private::AssertTypeEq::<
5723                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5724                >(_) => {}
5725            }
5726        }
5727        #[automatically_derived]
5728        #[doc(hidden)]
5729        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5730            fn from(value: InvalidMaxStateHistory) -> Self {
5731                ()
5732            }
5733        }
5734        #[automatically_derived]
5735        #[doc(hidden)]
5736        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5737            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5738                Self
5739            }
5740        }
5741        #[automatically_derived]
5742        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5743            type Parameters<'a> = UnderlyingSolTuple<'a>;
5744            type Token<'a> = <Self::Parameters<
5745                'a,
5746            > as alloy_sol_types::SolType>::Token<'a>;
5747            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5748            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5749            #[inline]
5750            fn new<'a>(
5751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5752            ) -> Self {
5753                tuple.into()
5754            }
5755            #[inline]
5756            fn tokenize(&self) -> Self::Token<'_> {
5757                ()
5758            }
5759            #[inline]
5760            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5761                <Self::Parameters<
5762                    '_,
5763                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5764                    .map(Self::new)
5765            }
5766        }
5767    };
5768    #[derive(serde::Serialize, serde::Deserialize)]
5769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5770    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5771```solidity
5772error InvalidProof();
5773```*/
5774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5775    #[derive(Clone)]
5776    pub struct InvalidProof;
5777    #[allow(
5778        non_camel_case_types,
5779        non_snake_case,
5780        clippy::pub_underscore_fields,
5781        clippy::style
5782    )]
5783    const _: () = {
5784        use alloy::sol_types as alloy_sol_types;
5785        #[doc(hidden)]
5786        #[allow(dead_code)]
5787        type UnderlyingSolTuple<'a> = ();
5788        #[doc(hidden)]
5789        type UnderlyingRustTuple<'a> = ();
5790        #[cfg(test)]
5791        #[allow(dead_code, unreachable_patterns)]
5792        fn _type_assertion(
5793            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5794        ) {
5795            match _t {
5796                alloy_sol_types::private::AssertTypeEq::<
5797                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5798                >(_) => {}
5799            }
5800        }
5801        #[automatically_derived]
5802        #[doc(hidden)]
5803        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5804            fn from(value: InvalidProof) -> Self {
5805                ()
5806            }
5807        }
5808        #[automatically_derived]
5809        #[doc(hidden)]
5810        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5811            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5812                Self
5813            }
5814        }
5815        #[automatically_derived]
5816        impl alloy_sol_types::SolError for InvalidProof {
5817            type Parameters<'a> = UnderlyingSolTuple<'a>;
5818            type Token<'a> = <Self::Parameters<
5819                'a,
5820            > as alloy_sol_types::SolType>::Token<'a>;
5821            const SIGNATURE: &'static str = "InvalidProof()";
5822            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5823            #[inline]
5824            fn new<'a>(
5825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5826            ) -> Self {
5827                tuple.into()
5828            }
5829            #[inline]
5830            fn tokenize(&self) -> Self::Token<'_> {
5831                ()
5832            }
5833            #[inline]
5834            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5835                <Self::Parameters<
5836                    '_,
5837                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5838                    .map(Self::new)
5839            }
5840        }
5841    };
5842    #[derive(serde::Serialize, serde::Deserialize)]
5843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5844    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5845```solidity
5846error InvalidScalar();
5847```*/
5848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5849    #[derive(Clone)]
5850    pub struct InvalidScalar;
5851    #[allow(
5852        non_camel_case_types,
5853        non_snake_case,
5854        clippy::pub_underscore_fields,
5855        clippy::style
5856    )]
5857    const _: () = {
5858        use alloy::sol_types as alloy_sol_types;
5859        #[doc(hidden)]
5860        #[allow(dead_code)]
5861        type UnderlyingSolTuple<'a> = ();
5862        #[doc(hidden)]
5863        type UnderlyingRustTuple<'a> = ();
5864        #[cfg(test)]
5865        #[allow(dead_code, unreachable_patterns)]
5866        fn _type_assertion(
5867            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5868        ) {
5869            match _t {
5870                alloy_sol_types::private::AssertTypeEq::<
5871                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5872                >(_) => {}
5873            }
5874        }
5875        #[automatically_derived]
5876        #[doc(hidden)]
5877        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5878            fn from(value: InvalidScalar) -> Self {
5879                ()
5880            }
5881        }
5882        #[automatically_derived]
5883        #[doc(hidden)]
5884        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5885            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5886                Self
5887            }
5888        }
5889        #[automatically_derived]
5890        impl alloy_sol_types::SolError for InvalidScalar {
5891            type Parameters<'a> = UnderlyingSolTuple<'a>;
5892            type Token<'a> = <Self::Parameters<
5893                'a,
5894            > as alloy_sol_types::SolType>::Token<'a>;
5895            const SIGNATURE: &'static str = "InvalidScalar()";
5896            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5897            #[inline]
5898            fn new<'a>(
5899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5900            ) -> Self {
5901                tuple.into()
5902            }
5903            #[inline]
5904            fn tokenize(&self) -> Self::Token<'_> {
5905                ()
5906            }
5907            #[inline]
5908            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5909                <Self::Parameters<
5910                    '_,
5911                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5912                    .map(Self::new)
5913            }
5914        }
5915    };
5916    #[derive(serde::Serialize, serde::Deserialize)]
5917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5918    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5919```solidity
5920error MissingEpochRootUpdate();
5921```*/
5922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5923    #[derive(Clone)]
5924    pub struct MissingEpochRootUpdate;
5925    #[allow(
5926        non_camel_case_types,
5927        non_snake_case,
5928        clippy::pub_underscore_fields,
5929        clippy::style
5930    )]
5931    const _: () = {
5932        use alloy::sol_types as alloy_sol_types;
5933        #[doc(hidden)]
5934        #[allow(dead_code)]
5935        type UnderlyingSolTuple<'a> = ();
5936        #[doc(hidden)]
5937        type UnderlyingRustTuple<'a> = ();
5938        #[cfg(test)]
5939        #[allow(dead_code, unreachable_patterns)]
5940        fn _type_assertion(
5941            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5942        ) {
5943            match _t {
5944                alloy_sol_types::private::AssertTypeEq::<
5945                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5946                >(_) => {}
5947            }
5948        }
5949        #[automatically_derived]
5950        #[doc(hidden)]
5951        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5952            fn from(value: MissingEpochRootUpdate) -> Self {
5953                ()
5954            }
5955        }
5956        #[automatically_derived]
5957        #[doc(hidden)]
5958        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5959            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5960                Self
5961            }
5962        }
5963        #[automatically_derived]
5964        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5965            type Parameters<'a> = UnderlyingSolTuple<'a>;
5966            type Token<'a> = <Self::Parameters<
5967                'a,
5968            > as alloy_sol_types::SolType>::Token<'a>;
5969            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5970            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5971            #[inline]
5972            fn new<'a>(
5973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5974            ) -> Self {
5975                tuple.into()
5976            }
5977            #[inline]
5978            fn tokenize(&self) -> Self::Token<'_> {
5979                ()
5980            }
5981            #[inline]
5982            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5983                <Self::Parameters<
5984                    '_,
5985                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5986                    .map(Self::new)
5987            }
5988        }
5989    };
5990    #[derive(serde::Serialize, serde::Deserialize)]
5991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5992    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5993```solidity
5994error NoChangeRequired();
5995```*/
5996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5997    #[derive(Clone)]
5998    pub struct NoChangeRequired;
5999    #[allow(
6000        non_camel_case_types,
6001        non_snake_case,
6002        clippy::pub_underscore_fields,
6003        clippy::style
6004    )]
6005    const _: () = {
6006        use alloy::sol_types as alloy_sol_types;
6007        #[doc(hidden)]
6008        #[allow(dead_code)]
6009        type UnderlyingSolTuple<'a> = ();
6010        #[doc(hidden)]
6011        type UnderlyingRustTuple<'a> = ();
6012        #[cfg(test)]
6013        #[allow(dead_code, unreachable_patterns)]
6014        fn _type_assertion(
6015            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6016        ) {
6017            match _t {
6018                alloy_sol_types::private::AssertTypeEq::<
6019                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6020                >(_) => {}
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6026            fn from(value: NoChangeRequired) -> Self {
6027                ()
6028            }
6029        }
6030        #[automatically_derived]
6031        #[doc(hidden)]
6032        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6033            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6034                Self
6035            }
6036        }
6037        #[automatically_derived]
6038        impl alloy_sol_types::SolError for NoChangeRequired {
6039            type Parameters<'a> = UnderlyingSolTuple<'a>;
6040            type Token<'a> = <Self::Parameters<
6041                'a,
6042            > as alloy_sol_types::SolType>::Token<'a>;
6043            const SIGNATURE: &'static str = "NoChangeRequired()";
6044            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6045            #[inline]
6046            fn new<'a>(
6047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6048            ) -> Self {
6049                tuple.into()
6050            }
6051            #[inline]
6052            fn tokenize(&self) -> Self::Token<'_> {
6053                ()
6054            }
6055            #[inline]
6056            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6057                <Self::Parameters<
6058                    '_,
6059                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6060                    .map(Self::new)
6061            }
6062        }
6063    };
6064    #[derive(serde::Serialize, serde::Deserialize)]
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6067```solidity
6068error NotInitializing();
6069```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct NotInitializing;
6073    #[allow(
6074        non_camel_case_types,
6075        non_snake_case,
6076        clippy::pub_underscore_fields,
6077        clippy::style
6078    )]
6079    const _: () = {
6080        use alloy::sol_types as alloy_sol_types;
6081        #[doc(hidden)]
6082        #[allow(dead_code)]
6083        type UnderlyingSolTuple<'a> = ();
6084        #[doc(hidden)]
6085        type UnderlyingRustTuple<'a> = ();
6086        #[cfg(test)]
6087        #[allow(dead_code, unreachable_patterns)]
6088        fn _type_assertion(
6089            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6090        ) {
6091            match _t {
6092                alloy_sol_types::private::AssertTypeEq::<
6093                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6094                >(_) => {}
6095            }
6096        }
6097        #[automatically_derived]
6098        #[doc(hidden)]
6099        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6100            fn from(value: NotInitializing) -> Self {
6101                ()
6102            }
6103        }
6104        #[automatically_derived]
6105        #[doc(hidden)]
6106        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6107            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6108                Self
6109            }
6110        }
6111        #[automatically_derived]
6112        impl alloy_sol_types::SolError for NotInitializing {
6113            type Parameters<'a> = UnderlyingSolTuple<'a>;
6114            type Token<'a> = <Self::Parameters<
6115                'a,
6116            > as alloy_sol_types::SolType>::Token<'a>;
6117            const SIGNATURE: &'static str = "NotInitializing()";
6118            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6119            #[inline]
6120            fn new<'a>(
6121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6122            ) -> Self {
6123                tuple.into()
6124            }
6125            #[inline]
6126            fn tokenize(&self) -> Self::Token<'_> {
6127                ()
6128            }
6129            #[inline]
6130            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6131                <Self::Parameters<
6132                    '_,
6133                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6134                    .map(Self::new)
6135            }
6136        }
6137    };
6138    #[derive(serde::Serialize, serde::Deserialize)]
6139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6140    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6141```solidity
6142error OutdatedState();
6143```*/
6144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6145    #[derive(Clone)]
6146    pub struct OutdatedState;
6147    #[allow(
6148        non_camel_case_types,
6149        non_snake_case,
6150        clippy::pub_underscore_fields,
6151        clippy::style
6152    )]
6153    const _: () = {
6154        use alloy::sol_types as alloy_sol_types;
6155        #[doc(hidden)]
6156        #[allow(dead_code)]
6157        type UnderlyingSolTuple<'a> = ();
6158        #[doc(hidden)]
6159        type UnderlyingRustTuple<'a> = ();
6160        #[cfg(test)]
6161        #[allow(dead_code, unreachable_patterns)]
6162        fn _type_assertion(
6163            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6164        ) {
6165            match _t {
6166                alloy_sol_types::private::AssertTypeEq::<
6167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6168                >(_) => {}
6169            }
6170        }
6171        #[automatically_derived]
6172        #[doc(hidden)]
6173        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6174            fn from(value: OutdatedState) -> Self {
6175                ()
6176            }
6177        }
6178        #[automatically_derived]
6179        #[doc(hidden)]
6180        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6181            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6182                Self
6183            }
6184        }
6185        #[automatically_derived]
6186        impl alloy_sol_types::SolError for OutdatedState {
6187            type Parameters<'a> = UnderlyingSolTuple<'a>;
6188            type Token<'a> = <Self::Parameters<
6189                'a,
6190            > as alloy_sol_types::SolType>::Token<'a>;
6191            const SIGNATURE: &'static str = "OutdatedState()";
6192            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6193            #[inline]
6194            fn new<'a>(
6195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6196            ) -> Self {
6197                tuple.into()
6198            }
6199            #[inline]
6200            fn tokenize(&self) -> Self::Token<'_> {
6201                ()
6202            }
6203            #[inline]
6204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6205                <Self::Parameters<
6206                    '_,
6207                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6208                    .map(Self::new)
6209            }
6210        }
6211    };
6212    #[derive(serde::Serialize, serde::Deserialize)]
6213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6214    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6215```solidity
6216error OwnableInvalidOwner(address owner);
6217```*/
6218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6219    #[derive(Clone)]
6220    pub struct OwnableInvalidOwner {
6221        #[allow(missing_docs)]
6222        pub owner: alloy::sol_types::private::Address,
6223    }
6224    #[allow(
6225        non_camel_case_types,
6226        non_snake_case,
6227        clippy::pub_underscore_fields,
6228        clippy::style
6229    )]
6230    const _: () = {
6231        use alloy::sol_types as alloy_sol_types;
6232        #[doc(hidden)]
6233        #[allow(dead_code)]
6234        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6235        #[doc(hidden)]
6236        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6237        #[cfg(test)]
6238        #[allow(dead_code, unreachable_patterns)]
6239        fn _type_assertion(
6240            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6241        ) {
6242            match _t {
6243                alloy_sol_types::private::AssertTypeEq::<
6244                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6245                >(_) => {}
6246            }
6247        }
6248        #[automatically_derived]
6249        #[doc(hidden)]
6250        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6251            fn from(value: OwnableInvalidOwner) -> Self {
6252                (value.owner,)
6253            }
6254        }
6255        #[automatically_derived]
6256        #[doc(hidden)]
6257        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6258            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6259                Self { owner: tuple.0 }
6260            }
6261        }
6262        #[automatically_derived]
6263        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6264            type Parameters<'a> = UnderlyingSolTuple<'a>;
6265            type Token<'a> = <Self::Parameters<
6266                'a,
6267            > as alloy_sol_types::SolType>::Token<'a>;
6268            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6269            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6270            #[inline]
6271            fn new<'a>(
6272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6273            ) -> Self {
6274                tuple.into()
6275            }
6276            #[inline]
6277            fn tokenize(&self) -> Self::Token<'_> {
6278                (
6279                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6280                        &self.owner,
6281                    ),
6282                )
6283            }
6284            #[inline]
6285            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6286                <Self::Parameters<
6287                    '_,
6288                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6289                    .map(Self::new)
6290            }
6291        }
6292    };
6293    #[derive(serde::Serialize, serde::Deserialize)]
6294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6295    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6296```solidity
6297error OwnableUnauthorizedAccount(address account);
6298```*/
6299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6300    #[derive(Clone)]
6301    pub struct OwnableUnauthorizedAccount {
6302        #[allow(missing_docs)]
6303        pub account: alloy::sol_types::private::Address,
6304    }
6305    #[allow(
6306        non_camel_case_types,
6307        non_snake_case,
6308        clippy::pub_underscore_fields,
6309        clippy::style
6310    )]
6311    const _: () = {
6312        use alloy::sol_types as alloy_sol_types;
6313        #[doc(hidden)]
6314        #[allow(dead_code)]
6315        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6316        #[doc(hidden)]
6317        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6318        #[cfg(test)]
6319        #[allow(dead_code, unreachable_patterns)]
6320        fn _type_assertion(
6321            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6322        ) {
6323            match _t {
6324                alloy_sol_types::private::AssertTypeEq::<
6325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6326                >(_) => {}
6327            }
6328        }
6329        #[automatically_derived]
6330        #[doc(hidden)]
6331        impl ::core::convert::From<OwnableUnauthorizedAccount>
6332        for UnderlyingRustTuple<'_> {
6333            fn from(value: OwnableUnauthorizedAccount) -> Self {
6334                (value.account,)
6335            }
6336        }
6337        #[automatically_derived]
6338        #[doc(hidden)]
6339        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6340        for OwnableUnauthorizedAccount {
6341            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6342                Self { account: tuple.0 }
6343            }
6344        }
6345        #[automatically_derived]
6346        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6347            type Parameters<'a> = UnderlyingSolTuple<'a>;
6348            type Token<'a> = <Self::Parameters<
6349                'a,
6350            > as alloy_sol_types::SolType>::Token<'a>;
6351            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6352            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6353            #[inline]
6354            fn new<'a>(
6355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6356            ) -> Self {
6357                tuple.into()
6358            }
6359            #[inline]
6360            fn tokenize(&self) -> Self::Token<'_> {
6361                (
6362                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6363                        &self.account,
6364                    ),
6365                )
6366            }
6367            #[inline]
6368            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6369                <Self::Parameters<
6370                    '_,
6371                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6372                    .map(Self::new)
6373            }
6374        }
6375    };
6376    #[derive(serde::Serialize, serde::Deserialize)]
6377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6378    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6379```solidity
6380error OwnershipCannotBeRenounced();
6381```*/
6382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6383    #[derive(Clone)]
6384    pub struct OwnershipCannotBeRenounced;
6385    #[allow(
6386        non_camel_case_types,
6387        non_snake_case,
6388        clippy::pub_underscore_fields,
6389        clippy::style
6390    )]
6391    const _: () = {
6392        use alloy::sol_types as alloy_sol_types;
6393        #[doc(hidden)]
6394        #[allow(dead_code)]
6395        type UnderlyingSolTuple<'a> = ();
6396        #[doc(hidden)]
6397        type UnderlyingRustTuple<'a> = ();
6398        #[cfg(test)]
6399        #[allow(dead_code, unreachable_patterns)]
6400        fn _type_assertion(
6401            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6402        ) {
6403            match _t {
6404                alloy_sol_types::private::AssertTypeEq::<
6405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6406                >(_) => {}
6407            }
6408        }
6409        #[automatically_derived]
6410        #[doc(hidden)]
6411        impl ::core::convert::From<OwnershipCannotBeRenounced>
6412        for UnderlyingRustTuple<'_> {
6413            fn from(value: OwnershipCannotBeRenounced) -> Self {
6414                ()
6415            }
6416        }
6417        #[automatically_derived]
6418        #[doc(hidden)]
6419        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6420        for OwnershipCannotBeRenounced {
6421            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6422                Self
6423            }
6424        }
6425        #[automatically_derived]
6426        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6427            type Parameters<'a> = UnderlyingSolTuple<'a>;
6428            type Token<'a> = <Self::Parameters<
6429                'a,
6430            > as alloy_sol_types::SolType>::Token<'a>;
6431            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6432            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6433            #[inline]
6434            fn new<'a>(
6435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6436            ) -> Self {
6437                tuple.into()
6438            }
6439            #[inline]
6440            fn tokenize(&self) -> Self::Token<'_> {
6441                ()
6442            }
6443            #[inline]
6444            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6445                <Self::Parameters<
6446                    '_,
6447                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6448                    .map(Self::new)
6449            }
6450        }
6451    };
6452    #[derive(serde::Serialize, serde::Deserialize)]
6453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6454    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6455```solidity
6456error ProverNotPermissioned();
6457```*/
6458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6459    #[derive(Clone)]
6460    pub struct ProverNotPermissioned;
6461    #[allow(
6462        non_camel_case_types,
6463        non_snake_case,
6464        clippy::pub_underscore_fields,
6465        clippy::style
6466    )]
6467    const _: () = {
6468        use alloy::sol_types as alloy_sol_types;
6469        #[doc(hidden)]
6470        #[allow(dead_code)]
6471        type UnderlyingSolTuple<'a> = ();
6472        #[doc(hidden)]
6473        type UnderlyingRustTuple<'a> = ();
6474        #[cfg(test)]
6475        #[allow(dead_code, unreachable_patterns)]
6476        fn _type_assertion(
6477            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6478        ) {
6479            match _t {
6480                alloy_sol_types::private::AssertTypeEq::<
6481                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6482                >(_) => {}
6483            }
6484        }
6485        #[automatically_derived]
6486        #[doc(hidden)]
6487        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6488            fn from(value: ProverNotPermissioned) -> Self {
6489                ()
6490            }
6491        }
6492        #[automatically_derived]
6493        #[doc(hidden)]
6494        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6495            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6496                Self
6497            }
6498        }
6499        #[automatically_derived]
6500        impl alloy_sol_types::SolError for ProverNotPermissioned {
6501            type Parameters<'a> = UnderlyingSolTuple<'a>;
6502            type Token<'a> = <Self::Parameters<
6503                'a,
6504            > as alloy_sol_types::SolType>::Token<'a>;
6505            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6506            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6507            #[inline]
6508            fn new<'a>(
6509                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6510            ) -> Self {
6511                tuple.into()
6512            }
6513            #[inline]
6514            fn tokenize(&self) -> Self::Token<'_> {
6515                ()
6516            }
6517            #[inline]
6518            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6519                <Self::Parameters<
6520                    '_,
6521                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6522                    .map(Self::new)
6523            }
6524        }
6525    };
6526    #[derive(serde::Serialize, serde::Deserialize)]
6527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6528    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6529```solidity
6530error UUPSUnauthorizedCallContext();
6531```*/
6532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6533    #[derive(Clone)]
6534    pub struct UUPSUnauthorizedCallContext;
6535    #[allow(
6536        non_camel_case_types,
6537        non_snake_case,
6538        clippy::pub_underscore_fields,
6539        clippy::style
6540    )]
6541    const _: () = {
6542        use alloy::sol_types as alloy_sol_types;
6543        #[doc(hidden)]
6544        #[allow(dead_code)]
6545        type UnderlyingSolTuple<'a> = ();
6546        #[doc(hidden)]
6547        type UnderlyingRustTuple<'a> = ();
6548        #[cfg(test)]
6549        #[allow(dead_code, unreachable_patterns)]
6550        fn _type_assertion(
6551            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6552        ) {
6553            match _t {
6554                alloy_sol_types::private::AssertTypeEq::<
6555                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6556                >(_) => {}
6557            }
6558        }
6559        #[automatically_derived]
6560        #[doc(hidden)]
6561        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6562        for UnderlyingRustTuple<'_> {
6563            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6564                ()
6565            }
6566        }
6567        #[automatically_derived]
6568        #[doc(hidden)]
6569        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6570        for UUPSUnauthorizedCallContext {
6571            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6572                Self
6573            }
6574        }
6575        #[automatically_derived]
6576        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6577            type Parameters<'a> = UnderlyingSolTuple<'a>;
6578            type Token<'a> = <Self::Parameters<
6579                'a,
6580            > as alloy_sol_types::SolType>::Token<'a>;
6581            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6582            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6583            #[inline]
6584            fn new<'a>(
6585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6586            ) -> Self {
6587                tuple.into()
6588            }
6589            #[inline]
6590            fn tokenize(&self) -> Self::Token<'_> {
6591                ()
6592            }
6593            #[inline]
6594            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6595                <Self::Parameters<
6596                    '_,
6597                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6598                    .map(Self::new)
6599            }
6600        }
6601    };
6602    #[derive(serde::Serialize, serde::Deserialize)]
6603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6604    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6605```solidity
6606error UUPSUnsupportedProxiableUUID(bytes32 slot);
6607```*/
6608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6609    #[derive(Clone)]
6610    pub struct UUPSUnsupportedProxiableUUID {
6611        #[allow(missing_docs)]
6612        pub slot: alloy::sol_types::private::FixedBytes<32>,
6613    }
6614    #[allow(
6615        non_camel_case_types,
6616        non_snake_case,
6617        clippy::pub_underscore_fields,
6618        clippy::style
6619    )]
6620    const _: () = {
6621        use alloy::sol_types as alloy_sol_types;
6622        #[doc(hidden)]
6623        #[allow(dead_code)]
6624        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6625        #[doc(hidden)]
6626        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6627        #[cfg(test)]
6628        #[allow(dead_code, unreachable_patterns)]
6629        fn _type_assertion(
6630            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6631        ) {
6632            match _t {
6633                alloy_sol_types::private::AssertTypeEq::<
6634                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6635                >(_) => {}
6636            }
6637        }
6638        #[automatically_derived]
6639        #[doc(hidden)]
6640        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6641        for UnderlyingRustTuple<'_> {
6642            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6643                (value.slot,)
6644            }
6645        }
6646        #[automatically_derived]
6647        #[doc(hidden)]
6648        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6649        for UUPSUnsupportedProxiableUUID {
6650            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6651                Self { slot: tuple.0 }
6652            }
6653        }
6654        #[automatically_derived]
6655        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6656            type Parameters<'a> = UnderlyingSolTuple<'a>;
6657            type Token<'a> = <Self::Parameters<
6658                'a,
6659            > as alloy_sol_types::SolType>::Token<'a>;
6660            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6661            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6662            #[inline]
6663            fn new<'a>(
6664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6665            ) -> Self {
6666                tuple.into()
6667            }
6668            #[inline]
6669            fn tokenize(&self) -> Self::Token<'_> {
6670                (
6671                    <alloy::sol_types::sol_data::FixedBytes<
6672                        32,
6673                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6674                )
6675            }
6676            #[inline]
6677            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6678                <Self::Parameters<
6679                    '_,
6680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6681                    .map(Self::new)
6682            }
6683        }
6684    };
6685    #[derive(serde::Serialize, serde::Deserialize)]
6686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6687    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6688```solidity
6689error WrongStakeTableUsed();
6690```*/
6691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6692    #[derive(Clone)]
6693    pub struct WrongStakeTableUsed;
6694    #[allow(
6695        non_camel_case_types,
6696        non_snake_case,
6697        clippy::pub_underscore_fields,
6698        clippy::style
6699    )]
6700    const _: () = {
6701        use alloy::sol_types as alloy_sol_types;
6702        #[doc(hidden)]
6703        #[allow(dead_code)]
6704        type UnderlyingSolTuple<'a> = ();
6705        #[doc(hidden)]
6706        type UnderlyingRustTuple<'a> = ();
6707        #[cfg(test)]
6708        #[allow(dead_code, unreachable_patterns)]
6709        fn _type_assertion(
6710            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6711        ) {
6712            match _t {
6713                alloy_sol_types::private::AssertTypeEq::<
6714                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6715                >(_) => {}
6716            }
6717        }
6718        #[automatically_derived]
6719        #[doc(hidden)]
6720        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6721            fn from(value: WrongStakeTableUsed) -> Self {
6722                ()
6723            }
6724        }
6725        #[automatically_derived]
6726        #[doc(hidden)]
6727        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6729                Self
6730            }
6731        }
6732        #[automatically_derived]
6733        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6734            type Parameters<'a> = UnderlyingSolTuple<'a>;
6735            type Token<'a> = <Self::Parameters<
6736                'a,
6737            > as alloy_sol_types::SolType>::Token<'a>;
6738            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6739            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6740            #[inline]
6741            fn new<'a>(
6742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6743            ) -> Self {
6744                tuple.into()
6745            }
6746            #[inline]
6747            fn tokenize(&self) -> Self::Token<'_> {
6748                ()
6749            }
6750            #[inline]
6751            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6752                <Self::Parameters<
6753                    '_,
6754                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6755                    .map(Self::new)
6756            }
6757        }
6758    };
6759    #[derive(serde::Serialize, serde::Deserialize)]
6760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6761    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6762```solidity
6763event Initialized(uint64 version);
6764```*/
6765    #[allow(
6766        non_camel_case_types,
6767        non_snake_case,
6768        clippy::pub_underscore_fields,
6769        clippy::style
6770    )]
6771    #[derive(Clone)]
6772    pub struct Initialized {
6773        #[allow(missing_docs)]
6774        pub version: u64,
6775    }
6776    #[allow(
6777        non_camel_case_types,
6778        non_snake_case,
6779        clippy::pub_underscore_fields,
6780        clippy::style
6781    )]
6782    const _: () = {
6783        use alloy::sol_types as alloy_sol_types;
6784        #[automatically_derived]
6785        impl alloy_sol_types::SolEvent for Initialized {
6786            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6787            type DataToken<'a> = <Self::DataTuple<
6788                'a,
6789            > as alloy_sol_types::SolType>::Token<'a>;
6790            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6791            const SIGNATURE: &'static str = "Initialized(uint64)";
6792            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6793                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6794                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6795                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6796            ]);
6797            const ANONYMOUS: bool = false;
6798            #[allow(unused_variables)]
6799            #[inline]
6800            fn new(
6801                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6802                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6803            ) -> Self {
6804                Self { version: data.0 }
6805            }
6806            #[inline]
6807            fn check_signature(
6808                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6809            ) -> alloy_sol_types::Result<()> {
6810                if topics.0 != Self::SIGNATURE_HASH {
6811                    return Err(
6812                        alloy_sol_types::Error::invalid_event_signature_hash(
6813                            Self::SIGNATURE,
6814                            topics.0,
6815                            Self::SIGNATURE_HASH,
6816                        ),
6817                    );
6818                }
6819                Ok(())
6820            }
6821            #[inline]
6822            fn tokenize_body(&self) -> Self::DataToken<'_> {
6823                (
6824                    <alloy::sol_types::sol_data::Uint<
6825                        64,
6826                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6827                )
6828            }
6829            #[inline]
6830            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6831                (Self::SIGNATURE_HASH.into(),)
6832            }
6833            #[inline]
6834            fn encode_topics_raw(
6835                &self,
6836                out: &mut [alloy_sol_types::abi::token::WordToken],
6837            ) -> alloy_sol_types::Result<()> {
6838                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6839                    return Err(alloy_sol_types::Error::Overrun);
6840                }
6841                out[0usize] = alloy_sol_types::abi::token::WordToken(
6842                    Self::SIGNATURE_HASH,
6843                );
6844                Ok(())
6845            }
6846        }
6847        #[automatically_derived]
6848        impl alloy_sol_types::private::IntoLogData for Initialized {
6849            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6850                From::from(self)
6851            }
6852            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6853                From::from(&self)
6854            }
6855        }
6856        #[automatically_derived]
6857        impl From<&Initialized> for alloy_sol_types::private::LogData {
6858            #[inline]
6859            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6860                alloy_sol_types::SolEvent::encode_log_data(this)
6861            }
6862        }
6863    };
6864    #[derive(serde::Serialize, serde::Deserialize)]
6865    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6866    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6867```solidity
6868event NewEpoch(uint64 epoch);
6869```*/
6870    #[allow(
6871        non_camel_case_types,
6872        non_snake_case,
6873        clippy::pub_underscore_fields,
6874        clippy::style
6875    )]
6876    #[derive(Clone)]
6877    pub struct NewEpoch {
6878        #[allow(missing_docs)]
6879        pub epoch: u64,
6880    }
6881    #[allow(
6882        non_camel_case_types,
6883        non_snake_case,
6884        clippy::pub_underscore_fields,
6885        clippy::style
6886    )]
6887    const _: () = {
6888        use alloy::sol_types as alloy_sol_types;
6889        #[automatically_derived]
6890        impl alloy_sol_types::SolEvent for NewEpoch {
6891            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6892            type DataToken<'a> = <Self::DataTuple<
6893                'a,
6894            > as alloy_sol_types::SolType>::Token<'a>;
6895            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6896            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6897            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6898                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6899                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6900                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6901            ]);
6902            const ANONYMOUS: bool = false;
6903            #[allow(unused_variables)]
6904            #[inline]
6905            fn new(
6906                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6907                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6908            ) -> Self {
6909                Self { epoch: data.0 }
6910            }
6911            #[inline]
6912            fn check_signature(
6913                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6914            ) -> alloy_sol_types::Result<()> {
6915                if topics.0 != Self::SIGNATURE_HASH {
6916                    return Err(
6917                        alloy_sol_types::Error::invalid_event_signature_hash(
6918                            Self::SIGNATURE,
6919                            topics.0,
6920                            Self::SIGNATURE_HASH,
6921                        ),
6922                    );
6923                }
6924                Ok(())
6925            }
6926            #[inline]
6927            fn tokenize_body(&self) -> Self::DataToken<'_> {
6928                (
6929                    <alloy::sol_types::sol_data::Uint<
6930                        64,
6931                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6932                )
6933            }
6934            #[inline]
6935            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6936                (Self::SIGNATURE_HASH.into(),)
6937            }
6938            #[inline]
6939            fn encode_topics_raw(
6940                &self,
6941                out: &mut [alloy_sol_types::abi::token::WordToken],
6942            ) -> alloy_sol_types::Result<()> {
6943                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6944                    return Err(alloy_sol_types::Error::Overrun);
6945                }
6946                out[0usize] = alloy_sol_types::abi::token::WordToken(
6947                    Self::SIGNATURE_HASH,
6948                );
6949                Ok(())
6950            }
6951        }
6952        #[automatically_derived]
6953        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6954            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6955                From::from(self)
6956            }
6957            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6958                From::from(&self)
6959            }
6960        }
6961        #[automatically_derived]
6962        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6963            #[inline]
6964            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6965                alloy_sol_types::SolEvent::encode_log_data(this)
6966            }
6967        }
6968    };
6969    #[derive(serde::Serialize, serde::Deserialize)]
6970    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6971    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6972```solidity
6973event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6974```*/
6975    #[allow(
6976        non_camel_case_types,
6977        non_snake_case,
6978        clippy::pub_underscore_fields,
6979        clippy::style
6980    )]
6981    #[derive(Clone)]
6982    pub struct NewState {
6983        #[allow(missing_docs)]
6984        pub viewNum: u64,
6985        #[allow(missing_docs)]
6986        pub blockHeight: u64,
6987        #[allow(missing_docs)]
6988        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6989    }
6990    #[allow(
6991        non_camel_case_types,
6992        non_snake_case,
6993        clippy::pub_underscore_fields,
6994        clippy::style
6995    )]
6996    const _: () = {
6997        use alloy::sol_types as alloy_sol_types;
6998        #[automatically_derived]
6999        impl alloy_sol_types::SolEvent for NewState {
7000            type DataTuple<'a> = (BN254::ScalarField,);
7001            type DataToken<'a> = <Self::DataTuple<
7002                'a,
7003            > as alloy_sol_types::SolType>::Token<'a>;
7004            type TopicList = (
7005                alloy_sol_types::sol_data::FixedBytes<32>,
7006                alloy::sol_types::sol_data::Uint<64>,
7007                alloy::sol_types::sol_data::Uint<64>,
7008            );
7009            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7010            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7011                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7012                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7013                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7014            ]);
7015            const ANONYMOUS: bool = false;
7016            #[allow(unused_variables)]
7017            #[inline]
7018            fn new(
7019                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7020                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7021            ) -> Self {
7022                Self {
7023                    viewNum: topics.1,
7024                    blockHeight: topics.2,
7025                    blockCommRoot: data.0,
7026                }
7027            }
7028            #[inline]
7029            fn check_signature(
7030                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7031            ) -> alloy_sol_types::Result<()> {
7032                if topics.0 != Self::SIGNATURE_HASH {
7033                    return Err(
7034                        alloy_sol_types::Error::invalid_event_signature_hash(
7035                            Self::SIGNATURE,
7036                            topics.0,
7037                            Self::SIGNATURE_HASH,
7038                        ),
7039                    );
7040                }
7041                Ok(())
7042            }
7043            #[inline]
7044            fn tokenize_body(&self) -> Self::DataToken<'_> {
7045                (
7046                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7047                        &self.blockCommRoot,
7048                    ),
7049                )
7050            }
7051            #[inline]
7052            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7053                (
7054                    Self::SIGNATURE_HASH.into(),
7055                    self.viewNum.clone(),
7056                    self.blockHeight.clone(),
7057                )
7058            }
7059            #[inline]
7060            fn encode_topics_raw(
7061                &self,
7062                out: &mut [alloy_sol_types::abi::token::WordToken],
7063            ) -> alloy_sol_types::Result<()> {
7064                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7065                    return Err(alloy_sol_types::Error::Overrun);
7066                }
7067                out[0usize] = alloy_sol_types::abi::token::WordToken(
7068                    Self::SIGNATURE_HASH,
7069                );
7070                out[1usize] = <alloy::sol_types::sol_data::Uint<
7071                    64,
7072                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7073                out[2usize] = <alloy::sol_types::sol_data::Uint<
7074                    64,
7075                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7076                Ok(())
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::private::IntoLogData for NewState {
7081            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7082                From::from(self)
7083            }
7084            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7085                From::from(&self)
7086            }
7087        }
7088        #[automatically_derived]
7089        impl From<&NewState> for alloy_sol_types::private::LogData {
7090            #[inline]
7091            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7092                alloy_sol_types::SolEvent::encode_log_data(this)
7093            }
7094        }
7095    };
7096    #[derive(serde::Serialize, serde::Deserialize)]
7097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7098    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7099```solidity
7100event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7101```*/
7102    #[allow(
7103        non_camel_case_types,
7104        non_snake_case,
7105        clippy::pub_underscore_fields,
7106        clippy::style
7107    )]
7108    #[derive(Clone)]
7109    pub struct OwnershipTransferred {
7110        #[allow(missing_docs)]
7111        pub previousOwner: alloy::sol_types::private::Address,
7112        #[allow(missing_docs)]
7113        pub newOwner: alloy::sol_types::private::Address,
7114    }
7115    #[allow(
7116        non_camel_case_types,
7117        non_snake_case,
7118        clippy::pub_underscore_fields,
7119        clippy::style
7120    )]
7121    const _: () = {
7122        use alloy::sol_types as alloy_sol_types;
7123        #[automatically_derived]
7124        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7125            type DataTuple<'a> = ();
7126            type DataToken<'a> = <Self::DataTuple<
7127                'a,
7128            > as alloy_sol_types::SolType>::Token<'a>;
7129            type TopicList = (
7130                alloy_sol_types::sol_data::FixedBytes<32>,
7131                alloy::sol_types::sol_data::Address,
7132                alloy::sol_types::sol_data::Address,
7133            );
7134            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7135            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7136                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7137                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7138                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7139            ]);
7140            const ANONYMOUS: bool = false;
7141            #[allow(unused_variables)]
7142            #[inline]
7143            fn new(
7144                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7145                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7146            ) -> Self {
7147                Self {
7148                    previousOwner: topics.1,
7149                    newOwner: topics.2,
7150                }
7151            }
7152            #[inline]
7153            fn check_signature(
7154                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7155            ) -> alloy_sol_types::Result<()> {
7156                if topics.0 != Self::SIGNATURE_HASH {
7157                    return Err(
7158                        alloy_sol_types::Error::invalid_event_signature_hash(
7159                            Self::SIGNATURE,
7160                            topics.0,
7161                            Self::SIGNATURE_HASH,
7162                        ),
7163                    );
7164                }
7165                Ok(())
7166            }
7167            #[inline]
7168            fn tokenize_body(&self) -> Self::DataToken<'_> {
7169                ()
7170            }
7171            #[inline]
7172            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7173                (
7174                    Self::SIGNATURE_HASH.into(),
7175                    self.previousOwner.clone(),
7176                    self.newOwner.clone(),
7177                )
7178            }
7179            #[inline]
7180            fn encode_topics_raw(
7181                &self,
7182                out: &mut [alloy_sol_types::abi::token::WordToken],
7183            ) -> alloy_sol_types::Result<()> {
7184                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7185                    return Err(alloy_sol_types::Error::Overrun);
7186                }
7187                out[0usize] = alloy_sol_types::abi::token::WordToken(
7188                    Self::SIGNATURE_HASH,
7189                );
7190                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7191                    &self.previousOwner,
7192                );
7193                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7194                    &self.newOwner,
7195                );
7196                Ok(())
7197            }
7198        }
7199        #[automatically_derived]
7200        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7201            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7202                From::from(self)
7203            }
7204            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7205                From::from(&self)
7206            }
7207        }
7208        #[automatically_derived]
7209        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7210            #[inline]
7211            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7212                alloy_sol_types::SolEvent::encode_log_data(this)
7213            }
7214        }
7215    };
7216    #[derive(serde::Serialize, serde::Deserialize)]
7217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7218    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7219```solidity
7220event PermissionedProverNotRequired();
7221```*/
7222    #[allow(
7223        non_camel_case_types,
7224        non_snake_case,
7225        clippy::pub_underscore_fields,
7226        clippy::style
7227    )]
7228    #[derive(Clone)]
7229    pub struct PermissionedProverNotRequired;
7230    #[allow(
7231        non_camel_case_types,
7232        non_snake_case,
7233        clippy::pub_underscore_fields,
7234        clippy::style
7235    )]
7236    const _: () = {
7237        use alloy::sol_types as alloy_sol_types;
7238        #[automatically_derived]
7239        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7240            type DataTuple<'a> = ();
7241            type DataToken<'a> = <Self::DataTuple<
7242                'a,
7243            > as alloy_sol_types::SolType>::Token<'a>;
7244            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7245            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7246            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7247                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7248                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7249                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7250            ]);
7251            const ANONYMOUS: bool = false;
7252            #[allow(unused_variables)]
7253            #[inline]
7254            fn new(
7255                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7256                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7257            ) -> Self {
7258                Self {}
7259            }
7260            #[inline]
7261            fn check_signature(
7262                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7263            ) -> alloy_sol_types::Result<()> {
7264                if topics.0 != Self::SIGNATURE_HASH {
7265                    return Err(
7266                        alloy_sol_types::Error::invalid_event_signature_hash(
7267                            Self::SIGNATURE,
7268                            topics.0,
7269                            Self::SIGNATURE_HASH,
7270                        ),
7271                    );
7272                }
7273                Ok(())
7274            }
7275            #[inline]
7276            fn tokenize_body(&self) -> Self::DataToken<'_> {
7277                ()
7278            }
7279            #[inline]
7280            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7281                (Self::SIGNATURE_HASH.into(),)
7282            }
7283            #[inline]
7284            fn encode_topics_raw(
7285                &self,
7286                out: &mut [alloy_sol_types::abi::token::WordToken],
7287            ) -> alloy_sol_types::Result<()> {
7288                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7289                    return Err(alloy_sol_types::Error::Overrun);
7290                }
7291                out[0usize] = alloy_sol_types::abi::token::WordToken(
7292                    Self::SIGNATURE_HASH,
7293                );
7294                Ok(())
7295            }
7296        }
7297        #[automatically_derived]
7298        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7299            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7300                From::from(self)
7301            }
7302            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7303                From::from(&self)
7304            }
7305        }
7306        #[automatically_derived]
7307        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7308            #[inline]
7309            fn from(
7310                this: &PermissionedProverNotRequired,
7311            ) -> alloy_sol_types::private::LogData {
7312                alloy_sol_types::SolEvent::encode_log_data(this)
7313            }
7314        }
7315    };
7316    #[derive(serde::Serialize, serde::Deserialize)]
7317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7318    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7319```solidity
7320event PermissionedProverRequired(address permissionedProver);
7321```*/
7322    #[allow(
7323        non_camel_case_types,
7324        non_snake_case,
7325        clippy::pub_underscore_fields,
7326        clippy::style
7327    )]
7328    #[derive(Clone)]
7329    pub struct PermissionedProverRequired {
7330        #[allow(missing_docs)]
7331        pub permissionedProver: alloy::sol_types::private::Address,
7332    }
7333    #[allow(
7334        non_camel_case_types,
7335        non_snake_case,
7336        clippy::pub_underscore_fields,
7337        clippy::style
7338    )]
7339    const _: () = {
7340        use alloy::sol_types as alloy_sol_types;
7341        #[automatically_derived]
7342        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7343            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7344            type DataToken<'a> = <Self::DataTuple<
7345                'a,
7346            > as alloy_sol_types::SolType>::Token<'a>;
7347            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7348            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7349            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7350                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7351                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7352                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7353            ]);
7354            const ANONYMOUS: bool = false;
7355            #[allow(unused_variables)]
7356            #[inline]
7357            fn new(
7358                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7359                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7360            ) -> Self {
7361                Self { permissionedProver: data.0 }
7362            }
7363            #[inline]
7364            fn check_signature(
7365                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7366            ) -> alloy_sol_types::Result<()> {
7367                if topics.0 != Self::SIGNATURE_HASH {
7368                    return Err(
7369                        alloy_sol_types::Error::invalid_event_signature_hash(
7370                            Self::SIGNATURE,
7371                            topics.0,
7372                            Self::SIGNATURE_HASH,
7373                        ),
7374                    );
7375                }
7376                Ok(())
7377            }
7378            #[inline]
7379            fn tokenize_body(&self) -> Self::DataToken<'_> {
7380                (
7381                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7382                        &self.permissionedProver,
7383                    ),
7384                )
7385            }
7386            #[inline]
7387            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7388                (Self::SIGNATURE_HASH.into(),)
7389            }
7390            #[inline]
7391            fn encode_topics_raw(
7392                &self,
7393                out: &mut [alloy_sol_types::abi::token::WordToken],
7394            ) -> alloy_sol_types::Result<()> {
7395                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7396                    return Err(alloy_sol_types::Error::Overrun);
7397                }
7398                out[0usize] = alloy_sol_types::abi::token::WordToken(
7399                    Self::SIGNATURE_HASH,
7400                );
7401                Ok(())
7402            }
7403        }
7404        #[automatically_derived]
7405        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7406            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7407                From::from(self)
7408            }
7409            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7410                From::from(&self)
7411            }
7412        }
7413        #[automatically_derived]
7414        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7415            #[inline]
7416            fn from(
7417                this: &PermissionedProverRequired,
7418            ) -> alloy_sol_types::private::LogData {
7419                alloy_sol_types::SolEvent::encode_log_data(this)
7420            }
7421        }
7422    };
7423    #[derive(serde::Serialize, serde::Deserialize)]
7424    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7425    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7426```solidity
7427event Upgrade(address implementation);
7428```*/
7429    #[allow(
7430        non_camel_case_types,
7431        non_snake_case,
7432        clippy::pub_underscore_fields,
7433        clippy::style
7434    )]
7435    #[derive(Clone)]
7436    pub struct Upgrade {
7437        #[allow(missing_docs)]
7438        pub implementation: alloy::sol_types::private::Address,
7439    }
7440    #[allow(
7441        non_camel_case_types,
7442        non_snake_case,
7443        clippy::pub_underscore_fields,
7444        clippy::style
7445    )]
7446    const _: () = {
7447        use alloy::sol_types as alloy_sol_types;
7448        #[automatically_derived]
7449        impl alloy_sol_types::SolEvent for Upgrade {
7450            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7451            type DataToken<'a> = <Self::DataTuple<
7452                'a,
7453            > as alloy_sol_types::SolType>::Token<'a>;
7454            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7455            const SIGNATURE: &'static str = "Upgrade(address)";
7456            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7457                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7458                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7459                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7460            ]);
7461            const ANONYMOUS: bool = false;
7462            #[allow(unused_variables)]
7463            #[inline]
7464            fn new(
7465                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7466                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7467            ) -> Self {
7468                Self { implementation: data.0 }
7469            }
7470            #[inline]
7471            fn check_signature(
7472                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7473            ) -> alloy_sol_types::Result<()> {
7474                if topics.0 != Self::SIGNATURE_HASH {
7475                    return Err(
7476                        alloy_sol_types::Error::invalid_event_signature_hash(
7477                            Self::SIGNATURE,
7478                            topics.0,
7479                            Self::SIGNATURE_HASH,
7480                        ),
7481                    );
7482                }
7483                Ok(())
7484            }
7485            #[inline]
7486            fn tokenize_body(&self) -> Self::DataToken<'_> {
7487                (
7488                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7489                        &self.implementation,
7490                    ),
7491                )
7492            }
7493            #[inline]
7494            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7495                (Self::SIGNATURE_HASH.into(),)
7496            }
7497            #[inline]
7498            fn encode_topics_raw(
7499                &self,
7500                out: &mut [alloy_sol_types::abi::token::WordToken],
7501            ) -> alloy_sol_types::Result<()> {
7502                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7503                    return Err(alloy_sol_types::Error::Overrun);
7504                }
7505                out[0usize] = alloy_sol_types::abi::token::WordToken(
7506                    Self::SIGNATURE_HASH,
7507                );
7508                Ok(())
7509            }
7510        }
7511        #[automatically_derived]
7512        impl alloy_sol_types::private::IntoLogData for Upgrade {
7513            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7514                From::from(self)
7515            }
7516            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7517                From::from(&self)
7518            }
7519        }
7520        #[automatically_derived]
7521        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7522            #[inline]
7523            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7524                alloy_sol_types::SolEvent::encode_log_data(this)
7525            }
7526        }
7527    };
7528    #[derive(serde::Serialize, serde::Deserialize)]
7529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7530    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7531```solidity
7532event Upgraded(address indexed implementation);
7533```*/
7534    #[allow(
7535        non_camel_case_types,
7536        non_snake_case,
7537        clippy::pub_underscore_fields,
7538        clippy::style
7539    )]
7540    #[derive(Clone)]
7541    pub struct Upgraded {
7542        #[allow(missing_docs)]
7543        pub implementation: alloy::sol_types::private::Address,
7544    }
7545    #[allow(
7546        non_camel_case_types,
7547        non_snake_case,
7548        clippy::pub_underscore_fields,
7549        clippy::style
7550    )]
7551    const _: () = {
7552        use alloy::sol_types as alloy_sol_types;
7553        #[automatically_derived]
7554        impl alloy_sol_types::SolEvent for Upgraded {
7555            type DataTuple<'a> = ();
7556            type DataToken<'a> = <Self::DataTuple<
7557                'a,
7558            > as alloy_sol_types::SolType>::Token<'a>;
7559            type TopicList = (
7560                alloy_sol_types::sol_data::FixedBytes<32>,
7561                alloy::sol_types::sol_data::Address,
7562            );
7563            const SIGNATURE: &'static str = "Upgraded(address)";
7564            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7565                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7566                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7567                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7568            ]);
7569            const ANONYMOUS: bool = false;
7570            #[allow(unused_variables)]
7571            #[inline]
7572            fn new(
7573                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7574                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7575            ) -> Self {
7576                Self { implementation: topics.1 }
7577            }
7578            #[inline]
7579            fn check_signature(
7580                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7581            ) -> alloy_sol_types::Result<()> {
7582                if topics.0 != Self::SIGNATURE_HASH {
7583                    return Err(
7584                        alloy_sol_types::Error::invalid_event_signature_hash(
7585                            Self::SIGNATURE,
7586                            topics.0,
7587                            Self::SIGNATURE_HASH,
7588                        ),
7589                    );
7590                }
7591                Ok(())
7592            }
7593            #[inline]
7594            fn tokenize_body(&self) -> Self::DataToken<'_> {
7595                ()
7596            }
7597            #[inline]
7598            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7599                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7600            }
7601            #[inline]
7602            fn encode_topics_raw(
7603                &self,
7604                out: &mut [alloy_sol_types::abi::token::WordToken],
7605            ) -> alloy_sol_types::Result<()> {
7606                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7607                    return Err(alloy_sol_types::Error::Overrun);
7608                }
7609                out[0usize] = alloy_sol_types::abi::token::WordToken(
7610                    Self::SIGNATURE_HASH,
7611                );
7612                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7613                    &self.implementation,
7614                );
7615                Ok(())
7616            }
7617        }
7618        #[automatically_derived]
7619        impl alloy_sol_types::private::IntoLogData for Upgraded {
7620            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7621                From::from(self)
7622            }
7623            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7624                From::from(&self)
7625            }
7626        }
7627        #[automatically_derived]
7628        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7629            #[inline]
7630            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7631                alloy_sol_types::SolEvent::encode_log_data(this)
7632            }
7633        }
7634    };
7635    #[derive(serde::Serialize, serde::Deserialize)]
7636    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7637    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7638```solidity
7639function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7640```*/
7641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7642    #[derive(Clone)]
7643    pub struct UPGRADE_INTERFACE_VERSIONCall;
7644    #[derive(serde::Serialize, serde::Deserialize)]
7645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7646    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7648    #[derive(Clone)]
7649    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7650        #[allow(missing_docs)]
7651        pub _0: alloy::sol_types::private::String,
7652    }
7653    #[allow(
7654        non_camel_case_types,
7655        non_snake_case,
7656        clippy::pub_underscore_fields,
7657        clippy::style
7658    )]
7659    const _: () = {
7660        use alloy::sol_types as alloy_sol_types;
7661        {
7662            #[doc(hidden)]
7663            #[allow(dead_code)]
7664            type UnderlyingSolTuple<'a> = ();
7665            #[doc(hidden)]
7666            type UnderlyingRustTuple<'a> = ();
7667            #[cfg(test)]
7668            #[allow(dead_code, unreachable_patterns)]
7669            fn _type_assertion(
7670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7671            ) {
7672                match _t {
7673                    alloy_sol_types::private::AssertTypeEq::<
7674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7675                    >(_) => {}
7676                }
7677            }
7678            #[automatically_derived]
7679            #[doc(hidden)]
7680            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7681            for UnderlyingRustTuple<'_> {
7682                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7683                    ()
7684                }
7685            }
7686            #[automatically_derived]
7687            #[doc(hidden)]
7688            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7689            for UPGRADE_INTERFACE_VERSIONCall {
7690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7691                    Self
7692                }
7693            }
7694        }
7695        {
7696            #[doc(hidden)]
7697            #[allow(dead_code)]
7698            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7699            #[doc(hidden)]
7700            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7701            #[cfg(test)]
7702            #[allow(dead_code, unreachable_patterns)]
7703            fn _type_assertion(
7704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7705            ) {
7706                match _t {
7707                    alloy_sol_types::private::AssertTypeEq::<
7708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7709                    >(_) => {}
7710                }
7711            }
7712            #[automatically_derived]
7713            #[doc(hidden)]
7714            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7715            for UnderlyingRustTuple<'_> {
7716                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7717                    (value._0,)
7718                }
7719            }
7720            #[automatically_derived]
7721            #[doc(hidden)]
7722            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7723            for UPGRADE_INTERFACE_VERSIONReturn {
7724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7725                    Self { _0: tuple.0 }
7726                }
7727            }
7728        }
7729        #[automatically_derived]
7730        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7731            type Parameters<'a> = ();
7732            type Token<'a> = <Self::Parameters<
7733                'a,
7734            > as alloy_sol_types::SolType>::Token<'a>;
7735            type Return = alloy::sol_types::private::String;
7736            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7737            type ReturnToken<'a> = <Self::ReturnTuple<
7738                'a,
7739            > as alloy_sol_types::SolType>::Token<'a>;
7740            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7741            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7742            #[inline]
7743            fn new<'a>(
7744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7745            ) -> Self {
7746                tuple.into()
7747            }
7748            #[inline]
7749            fn tokenize(&self) -> Self::Token<'_> {
7750                ()
7751            }
7752            #[inline]
7753            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7754                (
7755                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7756                        ret,
7757                    ),
7758                )
7759            }
7760            #[inline]
7761            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7762                <Self::ReturnTuple<
7763                    '_,
7764                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7765                    .map(|r| {
7766                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7767                        r._0
7768                    })
7769            }
7770            #[inline]
7771            fn abi_decode_returns_validate(
7772                data: &[u8],
7773            ) -> alloy_sol_types::Result<Self::Return> {
7774                <Self::ReturnTuple<
7775                    '_,
7776                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7777                    .map(|r| {
7778                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7779                        r._0
7780                    })
7781            }
7782        }
7783    };
7784    #[derive(serde::Serialize, serde::Deserialize)]
7785    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7786    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7787```solidity
7788function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7789```*/
7790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7791    #[derive(Clone)]
7792    pub struct _getVkCall;
7793    #[derive(serde::Serialize, serde::Deserialize)]
7794    #[derive()]
7795    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7797    #[derive(Clone)]
7798    pub struct _getVkReturn {
7799        #[allow(missing_docs)]
7800        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7801    }
7802    #[allow(
7803        non_camel_case_types,
7804        non_snake_case,
7805        clippy::pub_underscore_fields,
7806        clippy::style
7807    )]
7808    const _: () = {
7809        use alloy::sol_types as alloy_sol_types;
7810        {
7811            #[doc(hidden)]
7812            #[allow(dead_code)]
7813            type UnderlyingSolTuple<'a> = ();
7814            #[doc(hidden)]
7815            type UnderlyingRustTuple<'a> = ();
7816            #[cfg(test)]
7817            #[allow(dead_code, unreachable_patterns)]
7818            fn _type_assertion(
7819                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7820            ) {
7821                match _t {
7822                    alloy_sol_types::private::AssertTypeEq::<
7823                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7824                    >(_) => {}
7825                }
7826            }
7827            #[automatically_derived]
7828            #[doc(hidden)]
7829            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7830                fn from(value: _getVkCall) -> Self {
7831                    ()
7832                }
7833            }
7834            #[automatically_derived]
7835            #[doc(hidden)]
7836            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7837                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7838                    Self
7839                }
7840            }
7841        }
7842        {
7843            #[doc(hidden)]
7844            #[allow(dead_code)]
7845            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7846            #[doc(hidden)]
7847            type UnderlyingRustTuple<'a> = (
7848                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7849            );
7850            #[cfg(test)]
7851            #[allow(dead_code, unreachable_patterns)]
7852            fn _type_assertion(
7853                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7854            ) {
7855                match _t {
7856                    alloy_sol_types::private::AssertTypeEq::<
7857                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7858                    >(_) => {}
7859                }
7860            }
7861            #[automatically_derived]
7862            #[doc(hidden)]
7863            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7864                fn from(value: _getVkReturn) -> Self {
7865                    (value.vk,)
7866                }
7867            }
7868            #[automatically_derived]
7869            #[doc(hidden)]
7870            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7872                    Self { vk: tuple.0 }
7873                }
7874            }
7875        }
7876        #[automatically_derived]
7877        impl alloy_sol_types::SolCall for _getVkCall {
7878            type Parameters<'a> = ();
7879            type Token<'a> = <Self::Parameters<
7880                'a,
7881            > as alloy_sol_types::SolType>::Token<'a>;
7882            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7883            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7884            type ReturnToken<'a> = <Self::ReturnTuple<
7885                'a,
7886            > as alloy_sol_types::SolType>::Token<'a>;
7887            const SIGNATURE: &'static str = "_getVk()";
7888            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7889            #[inline]
7890            fn new<'a>(
7891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7892            ) -> Self {
7893                tuple.into()
7894            }
7895            #[inline]
7896            fn tokenize(&self) -> Self::Token<'_> {
7897                ()
7898            }
7899            #[inline]
7900            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7901                (
7902                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7903                        ret,
7904                    ),
7905                )
7906            }
7907            #[inline]
7908            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7909                <Self::ReturnTuple<
7910                    '_,
7911                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7912                    .map(|r| {
7913                        let r: _getVkReturn = r.into();
7914                        r.vk
7915                    })
7916            }
7917            #[inline]
7918            fn abi_decode_returns_validate(
7919                data: &[u8],
7920            ) -> alloy_sol_types::Result<Self::Return> {
7921                <Self::ReturnTuple<
7922                    '_,
7923                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7924                    .map(|r| {
7925                        let r: _getVkReturn = r.into();
7926                        r.vk
7927                    })
7928            }
7929        }
7930    };
7931    #[derive(serde::Serialize, serde::Deserialize)]
7932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7933    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7934```solidity
7935function blocksPerEpoch() external view returns (uint64);
7936```*/
7937    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7938    #[derive(Clone)]
7939    pub struct blocksPerEpochCall;
7940    #[derive(serde::Serialize, serde::Deserialize)]
7941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7942    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7944    #[derive(Clone)]
7945    pub struct blocksPerEpochReturn {
7946        #[allow(missing_docs)]
7947        pub _0: u64,
7948    }
7949    #[allow(
7950        non_camel_case_types,
7951        non_snake_case,
7952        clippy::pub_underscore_fields,
7953        clippy::style
7954    )]
7955    const _: () = {
7956        use alloy::sol_types as alloy_sol_types;
7957        {
7958            #[doc(hidden)]
7959            #[allow(dead_code)]
7960            type UnderlyingSolTuple<'a> = ();
7961            #[doc(hidden)]
7962            type UnderlyingRustTuple<'a> = ();
7963            #[cfg(test)]
7964            #[allow(dead_code, unreachable_patterns)]
7965            fn _type_assertion(
7966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7967            ) {
7968                match _t {
7969                    alloy_sol_types::private::AssertTypeEq::<
7970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7971                    >(_) => {}
7972                }
7973            }
7974            #[automatically_derived]
7975            #[doc(hidden)]
7976            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7977                fn from(value: blocksPerEpochCall) -> Self {
7978                    ()
7979                }
7980            }
7981            #[automatically_derived]
7982            #[doc(hidden)]
7983            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7985                    Self
7986                }
7987            }
7988        }
7989        {
7990            #[doc(hidden)]
7991            #[allow(dead_code)]
7992            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7993            #[doc(hidden)]
7994            type UnderlyingRustTuple<'a> = (u64,);
7995            #[cfg(test)]
7996            #[allow(dead_code, unreachable_patterns)]
7997            fn _type_assertion(
7998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7999            ) {
8000                match _t {
8001                    alloy_sol_types::private::AssertTypeEq::<
8002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8003                    >(_) => {}
8004                }
8005            }
8006            #[automatically_derived]
8007            #[doc(hidden)]
8008            impl ::core::convert::From<blocksPerEpochReturn>
8009            for UnderlyingRustTuple<'_> {
8010                fn from(value: blocksPerEpochReturn) -> Self {
8011                    (value._0,)
8012                }
8013            }
8014            #[automatically_derived]
8015            #[doc(hidden)]
8016            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8017            for blocksPerEpochReturn {
8018                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8019                    Self { _0: tuple.0 }
8020                }
8021            }
8022        }
8023        #[automatically_derived]
8024        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8025            type Parameters<'a> = ();
8026            type Token<'a> = <Self::Parameters<
8027                'a,
8028            > as alloy_sol_types::SolType>::Token<'a>;
8029            type Return = u64;
8030            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8031            type ReturnToken<'a> = <Self::ReturnTuple<
8032                'a,
8033            > as alloy_sol_types::SolType>::Token<'a>;
8034            const SIGNATURE: &'static str = "blocksPerEpoch()";
8035            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8036            #[inline]
8037            fn new<'a>(
8038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8039            ) -> Self {
8040                tuple.into()
8041            }
8042            #[inline]
8043            fn tokenize(&self) -> Self::Token<'_> {
8044                ()
8045            }
8046            #[inline]
8047            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8048                (
8049                    <alloy::sol_types::sol_data::Uint<
8050                        64,
8051                    > as alloy_sol_types::SolType>::tokenize(ret),
8052                )
8053            }
8054            #[inline]
8055            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8056                <Self::ReturnTuple<
8057                    '_,
8058                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8059                    .map(|r| {
8060                        let r: blocksPerEpochReturn = r.into();
8061                        r._0
8062                    })
8063            }
8064            #[inline]
8065            fn abi_decode_returns_validate(
8066                data: &[u8],
8067            ) -> alloy_sol_types::Result<Self::Return> {
8068                <Self::ReturnTuple<
8069                    '_,
8070                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8071                    .map(|r| {
8072                        let r: blocksPerEpochReturn = r.into();
8073                        r._0
8074                    })
8075            }
8076        }
8077    };
8078    #[derive(serde::Serialize, serde::Deserialize)]
8079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8080    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8081```solidity
8082function currentBlockNumber() external view returns (uint256);
8083```*/
8084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8085    #[derive(Clone)]
8086    pub struct currentBlockNumberCall;
8087    #[derive(serde::Serialize, serde::Deserialize)]
8088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8089    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8090    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8091    #[derive(Clone)]
8092    pub struct currentBlockNumberReturn {
8093        #[allow(missing_docs)]
8094        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8095    }
8096    #[allow(
8097        non_camel_case_types,
8098        non_snake_case,
8099        clippy::pub_underscore_fields,
8100        clippy::style
8101    )]
8102    const _: () = {
8103        use alloy::sol_types as alloy_sol_types;
8104        {
8105            #[doc(hidden)]
8106            #[allow(dead_code)]
8107            type UnderlyingSolTuple<'a> = ();
8108            #[doc(hidden)]
8109            type UnderlyingRustTuple<'a> = ();
8110            #[cfg(test)]
8111            #[allow(dead_code, unreachable_patterns)]
8112            fn _type_assertion(
8113                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8114            ) {
8115                match _t {
8116                    alloy_sol_types::private::AssertTypeEq::<
8117                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8118                    >(_) => {}
8119                }
8120            }
8121            #[automatically_derived]
8122            #[doc(hidden)]
8123            impl ::core::convert::From<currentBlockNumberCall>
8124            for UnderlyingRustTuple<'_> {
8125                fn from(value: currentBlockNumberCall) -> Self {
8126                    ()
8127                }
8128            }
8129            #[automatically_derived]
8130            #[doc(hidden)]
8131            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8132            for currentBlockNumberCall {
8133                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8134                    Self
8135                }
8136            }
8137        }
8138        {
8139            #[doc(hidden)]
8140            #[allow(dead_code)]
8141            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8142            #[doc(hidden)]
8143            type UnderlyingRustTuple<'a> = (
8144                alloy::sol_types::private::primitives::aliases::U256,
8145            );
8146            #[cfg(test)]
8147            #[allow(dead_code, unreachable_patterns)]
8148            fn _type_assertion(
8149                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8150            ) {
8151                match _t {
8152                    alloy_sol_types::private::AssertTypeEq::<
8153                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8154                    >(_) => {}
8155                }
8156            }
8157            #[automatically_derived]
8158            #[doc(hidden)]
8159            impl ::core::convert::From<currentBlockNumberReturn>
8160            for UnderlyingRustTuple<'_> {
8161                fn from(value: currentBlockNumberReturn) -> Self {
8162                    (value._0,)
8163                }
8164            }
8165            #[automatically_derived]
8166            #[doc(hidden)]
8167            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8168            for currentBlockNumberReturn {
8169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8170                    Self { _0: tuple.0 }
8171                }
8172            }
8173        }
8174        #[automatically_derived]
8175        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8176            type Parameters<'a> = ();
8177            type Token<'a> = <Self::Parameters<
8178                'a,
8179            > as alloy_sol_types::SolType>::Token<'a>;
8180            type Return = alloy::sol_types::private::primitives::aliases::U256;
8181            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8182            type ReturnToken<'a> = <Self::ReturnTuple<
8183                'a,
8184            > as alloy_sol_types::SolType>::Token<'a>;
8185            const SIGNATURE: &'static str = "currentBlockNumber()";
8186            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8187            #[inline]
8188            fn new<'a>(
8189                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8190            ) -> Self {
8191                tuple.into()
8192            }
8193            #[inline]
8194            fn tokenize(&self) -> Self::Token<'_> {
8195                ()
8196            }
8197            #[inline]
8198            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8199                (
8200                    <alloy::sol_types::sol_data::Uint<
8201                        256,
8202                    > as alloy_sol_types::SolType>::tokenize(ret),
8203                )
8204            }
8205            #[inline]
8206            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8207                <Self::ReturnTuple<
8208                    '_,
8209                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8210                    .map(|r| {
8211                        let r: currentBlockNumberReturn = r.into();
8212                        r._0
8213                    })
8214            }
8215            #[inline]
8216            fn abi_decode_returns_validate(
8217                data: &[u8],
8218            ) -> alloy_sol_types::Result<Self::Return> {
8219                <Self::ReturnTuple<
8220                    '_,
8221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8222                    .map(|r| {
8223                        let r: currentBlockNumberReturn = r.into();
8224                        r._0
8225                    })
8226            }
8227        }
8228    };
8229    #[derive(serde::Serialize, serde::Deserialize)]
8230    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8231    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8232```solidity
8233function currentEpoch() external view returns (uint64);
8234```*/
8235    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8236    #[derive(Clone)]
8237    pub struct currentEpochCall;
8238    #[derive(serde::Serialize, serde::Deserialize)]
8239    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8240    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8242    #[derive(Clone)]
8243    pub struct currentEpochReturn {
8244        #[allow(missing_docs)]
8245        pub _0: u64,
8246    }
8247    #[allow(
8248        non_camel_case_types,
8249        non_snake_case,
8250        clippy::pub_underscore_fields,
8251        clippy::style
8252    )]
8253    const _: () = {
8254        use alloy::sol_types as alloy_sol_types;
8255        {
8256            #[doc(hidden)]
8257            #[allow(dead_code)]
8258            type UnderlyingSolTuple<'a> = ();
8259            #[doc(hidden)]
8260            type UnderlyingRustTuple<'a> = ();
8261            #[cfg(test)]
8262            #[allow(dead_code, unreachable_patterns)]
8263            fn _type_assertion(
8264                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8265            ) {
8266                match _t {
8267                    alloy_sol_types::private::AssertTypeEq::<
8268                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8269                    >(_) => {}
8270                }
8271            }
8272            #[automatically_derived]
8273            #[doc(hidden)]
8274            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8275                fn from(value: currentEpochCall) -> Self {
8276                    ()
8277                }
8278            }
8279            #[automatically_derived]
8280            #[doc(hidden)]
8281            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8282                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8283                    Self
8284                }
8285            }
8286        }
8287        {
8288            #[doc(hidden)]
8289            #[allow(dead_code)]
8290            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8291            #[doc(hidden)]
8292            type UnderlyingRustTuple<'a> = (u64,);
8293            #[cfg(test)]
8294            #[allow(dead_code, unreachable_patterns)]
8295            fn _type_assertion(
8296                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8297            ) {
8298                match _t {
8299                    alloy_sol_types::private::AssertTypeEq::<
8300                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8301                    >(_) => {}
8302                }
8303            }
8304            #[automatically_derived]
8305            #[doc(hidden)]
8306            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8307                fn from(value: currentEpochReturn) -> Self {
8308                    (value._0,)
8309                }
8310            }
8311            #[automatically_derived]
8312            #[doc(hidden)]
8313            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8315                    Self { _0: tuple.0 }
8316                }
8317            }
8318        }
8319        #[automatically_derived]
8320        impl alloy_sol_types::SolCall for currentEpochCall {
8321            type Parameters<'a> = ();
8322            type Token<'a> = <Self::Parameters<
8323                'a,
8324            > as alloy_sol_types::SolType>::Token<'a>;
8325            type Return = u64;
8326            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8327            type ReturnToken<'a> = <Self::ReturnTuple<
8328                'a,
8329            > as alloy_sol_types::SolType>::Token<'a>;
8330            const SIGNATURE: &'static str = "currentEpoch()";
8331            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8332            #[inline]
8333            fn new<'a>(
8334                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8335            ) -> Self {
8336                tuple.into()
8337            }
8338            #[inline]
8339            fn tokenize(&self) -> Self::Token<'_> {
8340                ()
8341            }
8342            #[inline]
8343            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8344                (
8345                    <alloy::sol_types::sol_data::Uint<
8346                        64,
8347                    > as alloy_sol_types::SolType>::tokenize(ret),
8348                )
8349            }
8350            #[inline]
8351            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8352                <Self::ReturnTuple<
8353                    '_,
8354                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8355                    .map(|r| {
8356                        let r: currentEpochReturn = r.into();
8357                        r._0
8358                    })
8359            }
8360            #[inline]
8361            fn abi_decode_returns_validate(
8362                data: &[u8],
8363            ) -> alloy_sol_types::Result<Self::Return> {
8364                <Self::ReturnTuple<
8365                    '_,
8366                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8367                    .map(|r| {
8368                        let r: currentEpochReturn = r.into();
8369                        r._0
8370                    })
8371            }
8372        }
8373    };
8374    #[derive(serde::Serialize, serde::Deserialize)]
8375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8376    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8377```solidity
8378function disablePermissionedProverMode() external;
8379```*/
8380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8381    #[derive(Clone)]
8382    pub struct disablePermissionedProverModeCall;
8383    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8385    #[derive(Clone)]
8386    pub struct disablePermissionedProverModeReturn {}
8387    #[allow(
8388        non_camel_case_types,
8389        non_snake_case,
8390        clippy::pub_underscore_fields,
8391        clippy::style
8392    )]
8393    const _: () = {
8394        use alloy::sol_types as alloy_sol_types;
8395        {
8396            #[doc(hidden)]
8397            #[allow(dead_code)]
8398            type UnderlyingSolTuple<'a> = ();
8399            #[doc(hidden)]
8400            type UnderlyingRustTuple<'a> = ();
8401            #[cfg(test)]
8402            #[allow(dead_code, unreachable_patterns)]
8403            fn _type_assertion(
8404                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8405            ) {
8406                match _t {
8407                    alloy_sol_types::private::AssertTypeEq::<
8408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8409                    >(_) => {}
8410                }
8411            }
8412            #[automatically_derived]
8413            #[doc(hidden)]
8414            impl ::core::convert::From<disablePermissionedProverModeCall>
8415            for UnderlyingRustTuple<'_> {
8416                fn from(value: disablePermissionedProverModeCall) -> Self {
8417                    ()
8418                }
8419            }
8420            #[automatically_derived]
8421            #[doc(hidden)]
8422            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8423            for disablePermissionedProverModeCall {
8424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8425                    Self
8426                }
8427            }
8428        }
8429        {
8430            #[doc(hidden)]
8431            #[allow(dead_code)]
8432            type UnderlyingSolTuple<'a> = ();
8433            #[doc(hidden)]
8434            type UnderlyingRustTuple<'a> = ();
8435            #[cfg(test)]
8436            #[allow(dead_code, unreachable_patterns)]
8437            fn _type_assertion(
8438                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8439            ) {
8440                match _t {
8441                    alloy_sol_types::private::AssertTypeEq::<
8442                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8443                    >(_) => {}
8444                }
8445            }
8446            #[automatically_derived]
8447            #[doc(hidden)]
8448            impl ::core::convert::From<disablePermissionedProverModeReturn>
8449            for UnderlyingRustTuple<'_> {
8450                fn from(value: disablePermissionedProverModeReturn) -> Self {
8451                    ()
8452                }
8453            }
8454            #[automatically_derived]
8455            #[doc(hidden)]
8456            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8457            for disablePermissionedProverModeReturn {
8458                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8459                    Self {}
8460                }
8461            }
8462        }
8463        impl disablePermissionedProverModeReturn {
8464            fn _tokenize(
8465                &self,
8466            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8467                '_,
8468            > {
8469                ()
8470            }
8471        }
8472        #[automatically_derived]
8473        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8474            type Parameters<'a> = ();
8475            type Token<'a> = <Self::Parameters<
8476                'a,
8477            > as alloy_sol_types::SolType>::Token<'a>;
8478            type Return = disablePermissionedProverModeReturn;
8479            type ReturnTuple<'a> = ();
8480            type ReturnToken<'a> = <Self::ReturnTuple<
8481                'a,
8482            > as alloy_sol_types::SolType>::Token<'a>;
8483            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8484            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8485            #[inline]
8486            fn new<'a>(
8487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8488            ) -> Self {
8489                tuple.into()
8490            }
8491            #[inline]
8492            fn tokenize(&self) -> Self::Token<'_> {
8493                ()
8494            }
8495            #[inline]
8496            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8497                disablePermissionedProverModeReturn::_tokenize(ret)
8498            }
8499            #[inline]
8500            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8501                <Self::ReturnTuple<
8502                    '_,
8503                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8504                    .map(Into::into)
8505            }
8506            #[inline]
8507            fn abi_decode_returns_validate(
8508                data: &[u8],
8509            ) -> alloy_sol_types::Result<Self::Return> {
8510                <Self::ReturnTuple<
8511                    '_,
8512                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8513                    .map(Into::into)
8514            }
8515        }
8516    };
8517    #[derive(serde::Serialize, serde::Deserialize)]
8518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8519    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8520```solidity
8521function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8522```*/
8523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8524    #[derive(Clone)]
8525    pub struct epochFromBlockNumberCall {
8526        #[allow(missing_docs)]
8527        pub _blockNum: u64,
8528        #[allow(missing_docs)]
8529        pub _blocksPerEpoch: u64,
8530    }
8531    #[derive(serde::Serialize, serde::Deserialize)]
8532    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8533    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8535    #[derive(Clone)]
8536    pub struct epochFromBlockNumberReturn {
8537        #[allow(missing_docs)]
8538        pub _0: u64,
8539    }
8540    #[allow(
8541        non_camel_case_types,
8542        non_snake_case,
8543        clippy::pub_underscore_fields,
8544        clippy::style
8545    )]
8546    const _: () = {
8547        use alloy::sol_types as alloy_sol_types;
8548        {
8549            #[doc(hidden)]
8550            #[allow(dead_code)]
8551            type UnderlyingSolTuple<'a> = (
8552                alloy::sol_types::sol_data::Uint<64>,
8553                alloy::sol_types::sol_data::Uint<64>,
8554            );
8555            #[doc(hidden)]
8556            type UnderlyingRustTuple<'a> = (u64, u64);
8557            #[cfg(test)]
8558            #[allow(dead_code, unreachable_patterns)]
8559            fn _type_assertion(
8560                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8561            ) {
8562                match _t {
8563                    alloy_sol_types::private::AssertTypeEq::<
8564                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8565                    >(_) => {}
8566                }
8567            }
8568            #[automatically_derived]
8569            #[doc(hidden)]
8570            impl ::core::convert::From<epochFromBlockNumberCall>
8571            for UnderlyingRustTuple<'_> {
8572                fn from(value: epochFromBlockNumberCall) -> Self {
8573                    (value._blockNum, value._blocksPerEpoch)
8574                }
8575            }
8576            #[automatically_derived]
8577            #[doc(hidden)]
8578            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8579            for epochFromBlockNumberCall {
8580                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8581                    Self {
8582                        _blockNum: tuple.0,
8583                        _blocksPerEpoch: tuple.1,
8584                    }
8585                }
8586            }
8587        }
8588        {
8589            #[doc(hidden)]
8590            #[allow(dead_code)]
8591            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8592            #[doc(hidden)]
8593            type UnderlyingRustTuple<'a> = (u64,);
8594            #[cfg(test)]
8595            #[allow(dead_code, unreachable_patterns)]
8596            fn _type_assertion(
8597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8598            ) {
8599                match _t {
8600                    alloy_sol_types::private::AssertTypeEq::<
8601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8602                    >(_) => {}
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<epochFromBlockNumberReturn>
8608            for UnderlyingRustTuple<'_> {
8609                fn from(value: epochFromBlockNumberReturn) -> Self {
8610                    (value._0,)
8611                }
8612            }
8613            #[automatically_derived]
8614            #[doc(hidden)]
8615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8616            for epochFromBlockNumberReturn {
8617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8618                    Self { _0: tuple.0 }
8619                }
8620            }
8621        }
8622        #[automatically_derived]
8623        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8624            type Parameters<'a> = (
8625                alloy::sol_types::sol_data::Uint<64>,
8626                alloy::sol_types::sol_data::Uint<64>,
8627            );
8628            type Token<'a> = <Self::Parameters<
8629                'a,
8630            > as alloy_sol_types::SolType>::Token<'a>;
8631            type Return = u64;
8632            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8633            type ReturnToken<'a> = <Self::ReturnTuple<
8634                'a,
8635            > as alloy_sol_types::SolType>::Token<'a>;
8636            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8637            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8638            #[inline]
8639            fn new<'a>(
8640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8641            ) -> Self {
8642                tuple.into()
8643            }
8644            #[inline]
8645            fn tokenize(&self) -> Self::Token<'_> {
8646                (
8647                    <alloy::sol_types::sol_data::Uint<
8648                        64,
8649                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8650                    <alloy::sol_types::sol_data::Uint<
8651                        64,
8652                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8653                )
8654            }
8655            #[inline]
8656            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8657                (
8658                    <alloy::sol_types::sol_data::Uint<
8659                        64,
8660                    > as alloy_sol_types::SolType>::tokenize(ret),
8661                )
8662            }
8663            #[inline]
8664            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8665                <Self::ReturnTuple<
8666                    '_,
8667                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8668                    .map(|r| {
8669                        let r: epochFromBlockNumberReturn = r.into();
8670                        r._0
8671                    })
8672            }
8673            #[inline]
8674            fn abi_decode_returns_validate(
8675                data: &[u8],
8676            ) -> alloy_sol_types::Result<Self::Return> {
8677                <Self::ReturnTuple<
8678                    '_,
8679                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8680                    .map(|r| {
8681                        let r: epochFromBlockNumberReturn = r.into();
8682                        r._0
8683                    })
8684            }
8685        }
8686    };
8687    #[derive(serde::Serialize, serde::Deserialize)]
8688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8689    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8690```solidity
8691function epochStartBlock() external view returns (uint64);
8692```*/
8693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8694    #[derive(Clone)]
8695    pub struct epochStartBlockCall;
8696    #[derive(serde::Serialize, serde::Deserialize)]
8697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8698    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8700    #[derive(Clone)]
8701    pub struct epochStartBlockReturn {
8702        #[allow(missing_docs)]
8703        pub _0: u64,
8704    }
8705    #[allow(
8706        non_camel_case_types,
8707        non_snake_case,
8708        clippy::pub_underscore_fields,
8709        clippy::style
8710    )]
8711    const _: () = {
8712        use alloy::sol_types as alloy_sol_types;
8713        {
8714            #[doc(hidden)]
8715            #[allow(dead_code)]
8716            type UnderlyingSolTuple<'a> = ();
8717            #[doc(hidden)]
8718            type UnderlyingRustTuple<'a> = ();
8719            #[cfg(test)]
8720            #[allow(dead_code, unreachable_patterns)]
8721            fn _type_assertion(
8722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8723            ) {
8724                match _t {
8725                    alloy_sol_types::private::AssertTypeEq::<
8726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8727                    >(_) => {}
8728                }
8729            }
8730            #[automatically_derived]
8731            #[doc(hidden)]
8732            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8733                fn from(value: epochStartBlockCall) -> Self {
8734                    ()
8735                }
8736            }
8737            #[automatically_derived]
8738            #[doc(hidden)]
8739            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8740                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8741                    Self
8742                }
8743            }
8744        }
8745        {
8746            #[doc(hidden)]
8747            #[allow(dead_code)]
8748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8749            #[doc(hidden)]
8750            type UnderlyingRustTuple<'a> = (u64,);
8751            #[cfg(test)]
8752            #[allow(dead_code, unreachable_patterns)]
8753            fn _type_assertion(
8754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8755            ) {
8756                match _t {
8757                    alloy_sol_types::private::AssertTypeEq::<
8758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8759                    >(_) => {}
8760                }
8761            }
8762            #[automatically_derived]
8763            #[doc(hidden)]
8764            impl ::core::convert::From<epochStartBlockReturn>
8765            for UnderlyingRustTuple<'_> {
8766                fn from(value: epochStartBlockReturn) -> Self {
8767                    (value._0,)
8768                }
8769            }
8770            #[automatically_derived]
8771            #[doc(hidden)]
8772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8773            for epochStartBlockReturn {
8774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8775                    Self { _0: tuple.0 }
8776                }
8777            }
8778        }
8779        #[automatically_derived]
8780        impl alloy_sol_types::SolCall for epochStartBlockCall {
8781            type Parameters<'a> = ();
8782            type Token<'a> = <Self::Parameters<
8783                'a,
8784            > as alloy_sol_types::SolType>::Token<'a>;
8785            type Return = u64;
8786            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8787            type ReturnToken<'a> = <Self::ReturnTuple<
8788                'a,
8789            > as alloy_sol_types::SolType>::Token<'a>;
8790            const SIGNATURE: &'static str = "epochStartBlock()";
8791            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8792            #[inline]
8793            fn new<'a>(
8794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8795            ) -> Self {
8796                tuple.into()
8797            }
8798            #[inline]
8799            fn tokenize(&self) -> Self::Token<'_> {
8800                ()
8801            }
8802            #[inline]
8803            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8804                (
8805                    <alloy::sol_types::sol_data::Uint<
8806                        64,
8807                    > as alloy_sol_types::SolType>::tokenize(ret),
8808                )
8809            }
8810            #[inline]
8811            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8812                <Self::ReturnTuple<
8813                    '_,
8814                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8815                    .map(|r| {
8816                        let r: epochStartBlockReturn = r.into();
8817                        r._0
8818                    })
8819            }
8820            #[inline]
8821            fn abi_decode_returns_validate(
8822                data: &[u8],
8823            ) -> alloy_sol_types::Result<Self::Return> {
8824                <Self::ReturnTuple<
8825                    '_,
8826                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8827                    .map(|r| {
8828                        let r: epochStartBlockReturn = r.into();
8829                        r._0
8830                    })
8831            }
8832        }
8833    };
8834    #[derive(serde::Serialize, serde::Deserialize)]
8835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8836    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8837```solidity
8838function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8839```*/
8840    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8841    #[derive(Clone)]
8842    pub struct finalizedStateCall;
8843    #[derive(serde::Serialize, serde::Deserialize)]
8844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8845    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8847    #[derive(Clone)]
8848    pub struct finalizedStateReturn {
8849        #[allow(missing_docs)]
8850        pub viewNum: u64,
8851        #[allow(missing_docs)]
8852        pub blockHeight: u64,
8853        #[allow(missing_docs)]
8854        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8855    }
8856    #[allow(
8857        non_camel_case_types,
8858        non_snake_case,
8859        clippy::pub_underscore_fields,
8860        clippy::style
8861    )]
8862    const _: () = {
8863        use alloy::sol_types as alloy_sol_types;
8864        {
8865            #[doc(hidden)]
8866            #[allow(dead_code)]
8867            type UnderlyingSolTuple<'a> = ();
8868            #[doc(hidden)]
8869            type UnderlyingRustTuple<'a> = ();
8870            #[cfg(test)]
8871            #[allow(dead_code, unreachable_patterns)]
8872            fn _type_assertion(
8873                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8874            ) {
8875                match _t {
8876                    alloy_sol_types::private::AssertTypeEq::<
8877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8878                    >(_) => {}
8879                }
8880            }
8881            #[automatically_derived]
8882            #[doc(hidden)]
8883            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8884                fn from(value: finalizedStateCall) -> Self {
8885                    ()
8886                }
8887            }
8888            #[automatically_derived]
8889            #[doc(hidden)]
8890            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8892                    Self
8893                }
8894            }
8895        }
8896        {
8897            #[doc(hidden)]
8898            #[allow(dead_code)]
8899            type UnderlyingSolTuple<'a> = (
8900                alloy::sol_types::sol_data::Uint<64>,
8901                alloy::sol_types::sol_data::Uint<64>,
8902                BN254::ScalarField,
8903            );
8904            #[doc(hidden)]
8905            type UnderlyingRustTuple<'a> = (
8906                u64,
8907                u64,
8908                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8909            );
8910            #[cfg(test)]
8911            #[allow(dead_code, unreachable_patterns)]
8912            fn _type_assertion(
8913                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8914            ) {
8915                match _t {
8916                    alloy_sol_types::private::AssertTypeEq::<
8917                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8918                    >(_) => {}
8919                }
8920            }
8921            #[automatically_derived]
8922            #[doc(hidden)]
8923            impl ::core::convert::From<finalizedStateReturn>
8924            for UnderlyingRustTuple<'_> {
8925                fn from(value: finalizedStateReturn) -> Self {
8926                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8927                }
8928            }
8929            #[automatically_derived]
8930            #[doc(hidden)]
8931            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8932            for finalizedStateReturn {
8933                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8934                    Self {
8935                        viewNum: tuple.0,
8936                        blockHeight: tuple.1,
8937                        blockCommRoot: tuple.2,
8938                    }
8939                }
8940            }
8941        }
8942        impl finalizedStateReturn {
8943            fn _tokenize(
8944                &self,
8945            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8946                (
8947                    <alloy::sol_types::sol_data::Uint<
8948                        64,
8949                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8950                    <alloy::sol_types::sol_data::Uint<
8951                        64,
8952                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8953                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8954                        &self.blockCommRoot,
8955                    ),
8956                )
8957            }
8958        }
8959        #[automatically_derived]
8960        impl alloy_sol_types::SolCall for finalizedStateCall {
8961            type Parameters<'a> = ();
8962            type Token<'a> = <Self::Parameters<
8963                'a,
8964            > as alloy_sol_types::SolType>::Token<'a>;
8965            type Return = finalizedStateReturn;
8966            type ReturnTuple<'a> = (
8967                alloy::sol_types::sol_data::Uint<64>,
8968                alloy::sol_types::sol_data::Uint<64>,
8969                BN254::ScalarField,
8970            );
8971            type ReturnToken<'a> = <Self::ReturnTuple<
8972                'a,
8973            > as alloy_sol_types::SolType>::Token<'a>;
8974            const SIGNATURE: &'static str = "finalizedState()";
8975            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8976            #[inline]
8977            fn new<'a>(
8978                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8979            ) -> Self {
8980                tuple.into()
8981            }
8982            #[inline]
8983            fn tokenize(&self) -> Self::Token<'_> {
8984                ()
8985            }
8986            #[inline]
8987            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8988                finalizedStateReturn::_tokenize(ret)
8989            }
8990            #[inline]
8991            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8992                <Self::ReturnTuple<
8993                    '_,
8994                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8995                    .map(Into::into)
8996            }
8997            #[inline]
8998            fn abi_decode_returns_validate(
8999                data: &[u8],
9000            ) -> alloy_sol_types::Result<Self::Return> {
9001                <Self::ReturnTuple<
9002                    '_,
9003                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9004                    .map(Into::into)
9005            }
9006        }
9007    };
9008    #[derive(serde::Serialize, serde::Deserialize)]
9009    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9010    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9011```solidity
9012function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9013```*/
9014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9015    #[derive(Clone)]
9016    pub struct genesisStakeTableStateCall;
9017    #[derive(serde::Serialize, serde::Deserialize)]
9018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9019    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9021    #[derive(Clone)]
9022    pub struct genesisStakeTableStateReturn {
9023        #[allow(missing_docs)]
9024        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9025        #[allow(missing_docs)]
9026        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9027        #[allow(missing_docs)]
9028        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9029        #[allow(missing_docs)]
9030        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9031    }
9032    #[allow(
9033        non_camel_case_types,
9034        non_snake_case,
9035        clippy::pub_underscore_fields,
9036        clippy::style
9037    )]
9038    const _: () = {
9039        use alloy::sol_types as alloy_sol_types;
9040        {
9041            #[doc(hidden)]
9042            #[allow(dead_code)]
9043            type UnderlyingSolTuple<'a> = ();
9044            #[doc(hidden)]
9045            type UnderlyingRustTuple<'a> = ();
9046            #[cfg(test)]
9047            #[allow(dead_code, unreachable_patterns)]
9048            fn _type_assertion(
9049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9050            ) {
9051                match _t {
9052                    alloy_sol_types::private::AssertTypeEq::<
9053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9054                    >(_) => {}
9055                }
9056            }
9057            #[automatically_derived]
9058            #[doc(hidden)]
9059            impl ::core::convert::From<genesisStakeTableStateCall>
9060            for UnderlyingRustTuple<'_> {
9061                fn from(value: genesisStakeTableStateCall) -> Self {
9062                    ()
9063                }
9064            }
9065            #[automatically_derived]
9066            #[doc(hidden)]
9067            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9068            for genesisStakeTableStateCall {
9069                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9070                    Self
9071                }
9072            }
9073        }
9074        {
9075            #[doc(hidden)]
9076            #[allow(dead_code)]
9077            type UnderlyingSolTuple<'a> = (
9078                alloy::sol_types::sol_data::Uint<256>,
9079                BN254::ScalarField,
9080                BN254::ScalarField,
9081                BN254::ScalarField,
9082            );
9083            #[doc(hidden)]
9084            type UnderlyingRustTuple<'a> = (
9085                alloy::sol_types::private::primitives::aliases::U256,
9086                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9087                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9088                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9089            );
9090            #[cfg(test)]
9091            #[allow(dead_code, unreachable_patterns)]
9092            fn _type_assertion(
9093                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9094            ) {
9095                match _t {
9096                    alloy_sol_types::private::AssertTypeEq::<
9097                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9098                    >(_) => {}
9099                }
9100            }
9101            #[automatically_derived]
9102            #[doc(hidden)]
9103            impl ::core::convert::From<genesisStakeTableStateReturn>
9104            for UnderlyingRustTuple<'_> {
9105                fn from(value: genesisStakeTableStateReturn) -> Self {
9106                    (
9107                        value.threshold,
9108                        value.blsKeyComm,
9109                        value.schnorrKeyComm,
9110                        value.amountComm,
9111                    )
9112                }
9113            }
9114            #[automatically_derived]
9115            #[doc(hidden)]
9116            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9117            for genesisStakeTableStateReturn {
9118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9119                    Self {
9120                        threshold: tuple.0,
9121                        blsKeyComm: tuple.1,
9122                        schnorrKeyComm: tuple.2,
9123                        amountComm: tuple.3,
9124                    }
9125                }
9126            }
9127        }
9128        impl genesisStakeTableStateReturn {
9129            fn _tokenize(
9130                &self,
9131            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9132                '_,
9133            > {
9134                (
9135                    <alloy::sol_types::sol_data::Uint<
9136                        256,
9137                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9138                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9139                        &self.blsKeyComm,
9140                    ),
9141                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9142                        &self.schnorrKeyComm,
9143                    ),
9144                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9145                        &self.amountComm,
9146                    ),
9147                )
9148            }
9149        }
9150        #[automatically_derived]
9151        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9152            type Parameters<'a> = ();
9153            type Token<'a> = <Self::Parameters<
9154                'a,
9155            > as alloy_sol_types::SolType>::Token<'a>;
9156            type Return = genesisStakeTableStateReturn;
9157            type ReturnTuple<'a> = (
9158                alloy::sol_types::sol_data::Uint<256>,
9159                BN254::ScalarField,
9160                BN254::ScalarField,
9161                BN254::ScalarField,
9162            );
9163            type ReturnToken<'a> = <Self::ReturnTuple<
9164                'a,
9165            > as alloy_sol_types::SolType>::Token<'a>;
9166            const SIGNATURE: &'static str = "genesisStakeTableState()";
9167            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9168            #[inline]
9169            fn new<'a>(
9170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9171            ) -> Self {
9172                tuple.into()
9173            }
9174            #[inline]
9175            fn tokenize(&self) -> Self::Token<'_> {
9176                ()
9177            }
9178            #[inline]
9179            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9180                genesisStakeTableStateReturn::_tokenize(ret)
9181            }
9182            #[inline]
9183            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9184                <Self::ReturnTuple<
9185                    '_,
9186                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9187                    .map(Into::into)
9188            }
9189            #[inline]
9190            fn abi_decode_returns_validate(
9191                data: &[u8],
9192            ) -> alloy_sol_types::Result<Self::Return> {
9193                <Self::ReturnTuple<
9194                    '_,
9195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9196                    .map(Into::into)
9197            }
9198        }
9199    };
9200    #[derive(serde::Serialize, serde::Deserialize)]
9201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9202    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9203```solidity
9204function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9205```*/
9206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9207    #[derive(Clone)]
9208    pub struct genesisStateCall;
9209    #[derive(serde::Serialize, serde::Deserialize)]
9210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9211    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9212    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9213    #[derive(Clone)]
9214    pub struct genesisStateReturn {
9215        #[allow(missing_docs)]
9216        pub viewNum: u64,
9217        #[allow(missing_docs)]
9218        pub blockHeight: u64,
9219        #[allow(missing_docs)]
9220        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9221    }
9222    #[allow(
9223        non_camel_case_types,
9224        non_snake_case,
9225        clippy::pub_underscore_fields,
9226        clippy::style
9227    )]
9228    const _: () = {
9229        use alloy::sol_types as alloy_sol_types;
9230        {
9231            #[doc(hidden)]
9232            #[allow(dead_code)]
9233            type UnderlyingSolTuple<'a> = ();
9234            #[doc(hidden)]
9235            type UnderlyingRustTuple<'a> = ();
9236            #[cfg(test)]
9237            #[allow(dead_code, unreachable_patterns)]
9238            fn _type_assertion(
9239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9240            ) {
9241                match _t {
9242                    alloy_sol_types::private::AssertTypeEq::<
9243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9244                    >(_) => {}
9245                }
9246            }
9247            #[automatically_derived]
9248            #[doc(hidden)]
9249            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9250                fn from(value: genesisStateCall) -> Self {
9251                    ()
9252                }
9253            }
9254            #[automatically_derived]
9255            #[doc(hidden)]
9256            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9257                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9258                    Self
9259                }
9260            }
9261        }
9262        {
9263            #[doc(hidden)]
9264            #[allow(dead_code)]
9265            type UnderlyingSolTuple<'a> = (
9266                alloy::sol_types::sol_data::Uint<64>,
9267                alloy::sol_types::sol_data::Uint<64>,
9268                BN254::ScalarField,
9269            );
9270            #[doc(hidden)]
9271            type UnderlyingRustTuple<'a> = (
9272                u64,
9273                u64,
9274                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9275            );
9276            #[cfg(test)]
9277            #[allow(dead_code, unreachable_patterns)]
9278            fn _type_assertion(
9279                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9280            ) {
9281                match _t {
9282                    alloy_sol_types::private::AssertTypeEq::<
9283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9284                    >(_) => {}
9285                }
9286            }
9287            #[automatically_derived]
9288            #[doc(hidden)]
9289            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9290                fn from(value: genesisStateReturn) -> Self {
9291                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9292                }
9293            }
9294            #[automatically_derived]
9295            #[doc(hidden)]
9296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9298                    Self {
9299                        viewNum: tuple.0,
9300                        blockHeight: tuple.1,
9301                        blockCommRoot: tuple.2,
9302                    }
9303                }
9304            }
9305        }
9306        impl genesisStateReturn {
9307            fn _tokenize(
9308                &self,
9309            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9310                (
9311                    <alloy::sol_types::sol_data::Uint<
9312                        64,
9313                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9314                    <alloy::sol_types::sol_data::Uint<
9315                        64,
9316                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9317                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9318                        &self.blockCommRoot,
9319                    ),
9320                )
9321            }
9322        }
9323        #[automatically_derived]
9324        impl alloy_sol_types::SolCall for genesisStateCall {
9325            type Parameters<'a> = ();
9326            type Token<'a> = <Self::Parameters<
9327                'a,
9328            > as alloy_sol_types::SolType>::Token<'a>;
9329            type Return = genesisStateReturn;
9330            type ReturnTuple<'a> = (
9331                alloy::sol_types::sol_data::Uint<64>,
9332                alloy::sol_types::sol_data::Uint<64>,
9333                BN254::ScalarField,
9334            );
9335            type ReturnToken<'a> = <Self::ReturnTuple<
9336                'a,
9337            > as alloy_sol_types::SolType>::Token<'a>;
9338            const SIGNATURE: &'static str = "genesisState()";
9339            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9340            #[inline]
9341            fn new<'a>(
9342                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9343            ) -> Self {
9344                tuple.into()
9345            }
9346            #[inline]
9347            fn tokenize(&self) -> Self::Token<'_> {
9348                ()
9349            }
9350            #[inline]
9351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9352                genesisStateReturn::_tokenize(ret)
9353            }
9354            #[inline]
9355            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9356                <Self::ReturnTuple<
9357                    '_,
9358                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9359                    .map(Into::into)
9360            }
9361            #[inline]
9362            fn abi_decode_returns_validate(
9363                data: &[u8],
9364            ) -> alloy_sol_types::Result<Self::Return> {
9365                <Self::ReturnTuple<
9366                    '_,
9367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9368                    .map(Into::into)
9369            }
9370        }
9371    };
9372    #[derive(serde::Serialize, serde::Deserialize)]
9373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9374    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9375```solidity
9376function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9377```*/
9378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9379    #[derive(Clone)]
9380    pub struct getHotShotCommitmentCall {
9381        #[allow(missing_docs)]
9382        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9383    }
9384    #[derive(serde::Serialize, serde::Deserialize)]
9385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9386    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9388    #[derive(Clone)]
9389    pub struct getHotShotCommitmentReturn {
9390        #[allow(missing_docs)]
9391        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9392        #[allow(missing_docs)]
9393        pub hotshotBlockHeight: u64,
9394    }
9395    #[allow(
9396        non_camel_case_types,
9397        non_snake_case,
9398        clippy::pub_underscore_fields,
9399        clippy::style
9400    )]
9401    const _: () = {
9402        use alloy::sol_types as alloy_sol_types;
9403        {
9404            #[doc(hidden)]
9405            #[allow(dead_code)]
9406            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9407            #[doc(hidden)]
9408            type UnderlyingRustTuple<'a> = (
9409                alloy::sol_types::private::primitives::aliases::U256,
9410            );
9411            #[cfg(test)]
9412            #[allow(dead_code, unreachable_patterns)]
9413            fn _type_assertion(
9414                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9415            ) {
9416                match _t {
9417                    alloy_sol_types::private::AssertTypeEq::<
9418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9419                    >(_) => {}
9420                }
9421            }
9422            #[automatically_derived]
9423            #[doc(hidden)]
9424            impl ::core::convert::From<getHotShotCommitmentCall>
9425            for UnderlyingRustTuple<'_> {
9426                fn from(value: getHotShotCommitmentCall) -> Self {
9427                    (value.hotShotBlockHeight,)
9428                }
9429            }
9430            #[automatically_derived]
9431            #[doc(hidden)]
9432            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9433            for getHotShotCommitmentCall {
9434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9435                    Self {
9436                        hotShotBlockHeight: tuple.0,
9437                    }
9438                }
9439            }
9440        }
9441        {
9442            #[doc(hidden)]
9443            #[allow(dead_code)]
9444            type UnderlyingSolTuple<'a> = (
9445                BN254::ScalarField,
9446                alloy::sol_types::sol_data::Uint<64>,
9447            );
9448            #[doc(hidden)]
9449            type UnderlyingRustTuple<'a> = (
9450                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9451                u64,
9452            );
9453            #[cfg(test)]
9454            #[allow(dead_code, unreachable_patterns)]
9455            fn _type_assertion(
9456                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9457            ) {
9458                match _t {
9459                    alloy_sol_types::private::AssertTypeEq::<
9460                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9461                    >(_) => {}
9462                }
9463            }
9464            #[automatically_derived]
9465            #[doc(hidden)]
9466            impl ::core::convert::From<getHotShotCommitmentReturn>
9467            for UnderlyingRustTuple<'_> {
9468                fn from(value: getHotShotCommitmentReturn) -> Self {
9469                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9470                }
9471            }
9472            #[automatically_derived]
9473            #[doc(hidden)]
9474            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9475            for getHotShotCommitmentReturn {
9476                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9477                    Self {
9478                        hotShotBlockCommRoot: tuple.0,
9479                        hotshotBlockHeight: tuple.1,
9480                    }
9481                }
9482            }
9483        }
9484        impl getHotShotCommitmentReturn {
9485            fn _tokenize(
9486                &self,
9487            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9488                '_,
9489            > {
9490                (
9491                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9492                        &self.hotShotBlockCommRoot,
9493                    ),
9494                    <alloy::sol_types::sol_data::Uint<
9495                        64,
9496                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9497                )
9498            }
9499        }
9500        #[automatically_derived]
9501        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9502            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9503            type Token<'a> = <Self::Parameters<
9504                'a,
9505            > as alloy_sol_types::SolType>::Token<'a>;
9506            type Return = getHotShotCommitmentReturn;
9507            type ReturnTuple<'a> = (
9508                BN254::ScalarField,
9509                alloy::sol_types::sol_data::Uint<64>,
9510            );
9511            type ReturnToken<'a> = <Self::ReturnTuple<
9512                'a,
9513            > as alloy_sol_types::SolType>::Token<'a>;
9514            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9515            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9516            #[inline]
9517            fn new<'a>(
9518                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9519            ) -> Self {
9520                tuple.into()
9521            }
9522            #[inline]
9523            fn tokenize(&self) -> Self::Token<'_> {
9524                (
9525                    <alloy::sol_types::sol_data::Uint<
9526                        256,
9527                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9528                )
9529            }
9530            #[inline]
9531            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9532                getHotShotCommitmentReturn::_tokenize(ret)
9533            }
9534            #[inline]
9535            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9536                <Self::ReturnTuple<
9537                    '_,
9538                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9539                    .map(Into::into)
9540            }
9541            #[inline]
9542            fn abi_decode_returns_validate(
9543                data: &[u8],
9544            ) -> alloy_sol_types::Result<Self::Return> {
9545                <Self::ReturnTuple<
9546                    '_,
9547                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9548                    .map(Into::into)
9549            }
9550        }
9551    };
9552    #[derive(serde::Serialize, serde::Deserialize)]
9553    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9554    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9555```solidity
9556function getStateHistoryCount() external view returns (uint256);
9557```*/
9558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9559    #[derive(Clone)]
9560    pub struct getStateHistoryCountCall;
9561    #[derive(serde::Serialize, serde::Deserialize)]
9562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9563    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9564    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9565    #[derive(Clone)]
9566    pub struct getStateHistoryCountReturn {
9567        #[allow(missing_docs)]
9568        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9569    }
9570    #[allow(
9571        non_camel_case_types,
9572        non_snake_case,
9573        clippy::pub_underscore_fields,
9574        clippy::style
9575    )]
9576    const _: () = {
9577        use alloy::sol_types as alloy_sol_types;
9578        {
9579            #[doc(hidden)]
9580            #[allow(dead_code)]
9581            type UnderlyingSolTuple<'a> = ();
9582            #[doc(hidden)]
9583            type UnderlyingRustTuple<'a> = ();
9584            #[cfg(test)]
9585            #[allow(dead_code, unreachable_patterns)]
9586            fn _type_assertion(
9587                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9588            ) {
9589                match _t {
9590                    alloy_sol_types::private::AssertTypeEq::<
9591                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9592                    >(_) => {}
9593                }
9594            }
9595            #[automatically_derived]
9596            #[doc(hidden)]
9597            impl ::core::convert::From<getStateHistoryCountCall>
9598            for UnderlyingRustTuple<'_> {
9599                fn from(value: getStateHistoryCountCall) -> Self {
9600                    ()
9601                }
9602            }
9603            #[automatically_derived]
9604            #[doc(hidden)]
9605            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9606            for getStateHistoryCountCall {
9607                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9608                    Self
9609                }
9610            }
9611        }
9612        {
9613            #[doc(hidden)]
9614            #[allow(dead_code)]
9615            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9616            #[doc(hidden)]
9617            type UnderlyingRustTuple<'a> = (
9618                alloy::sol_types::private::primitives::aliases::U256,
9619            );
9620            #[cfg(test)]
9621            #[allow(dead_code, unreachable_patterns)]
9622            fn _type_assertion(
9623                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9624            ) {
9625                match _t {
9626                    alloy_sol_types::private::AssertTypeEq::<
9627                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9628                    >(_) => {}
9629                }
9630            }
9631            #[automatically_derived]
9632            #[doc(hidden)]
9633            impl ::core::convert::From<getStateHistoryCountReturn>
9634            for UnderlyingRustTuple<'_> {
9635                fn from(value: getStateHistoryCountReturn) -> Self {
9636                    (value._0,)
9637                }
9638            }
9639            #[automatically_derived]
9640            #[doc(hidden)]
9641            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9642            for getStateHistoryCountReturn {
9643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9644                    Self { _0: tuple.0 }
9645                }
9646            }
9647        }
9648        #[automatically_derived]
9649        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9650            type Parameters<'a> = ();
9651            type Token<'a> = <Self::Parameters<
9652                'a,
9653            > as alloy_sol_types::SolType>::Token<'a>;
9654            type Return = alloy::sol_types::private::primitives::aliases::U256;
9655            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9656            type ReturnToken<'a> = <Self::ReturnTuple<
9657                'a,
9658            > as alloy_sol_types::SolType>::Token<'a>;
9659            const SIGNATURE: &'static str = "getStateHistoryCount()";
9660            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9661            #[inline]
9662            fn new<'a>(
9663                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9664            ) -> Self {
9665                tuple.into()
9666            }
9667            #[inline]
9668            fn tokenize(&self) -> Self::Token<'_> {
9669                ()
9670            }
9671            #[inline]
9672            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9673                (
9674                    <alloy::sol_types::sol_data::Uint<
9675                        256,
9676                    > as alloy_sol_types::SolType>::tokenize(ret),
9677                )
9678            }
9679            #[inline]
9680            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9681                <Self::ReturnTuple<
9682                    '_,
9683                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9684                    .map(|r| {
9685                        let r: getStateHistoryCountReturn = r.into();
9686                        r._0
9687                    })
9688            }
9689            #[inline]
9690            fn abi_decode_returns_validate(
9691                data: &[u8],
9692            ) -> alloy_sol_types::Result<Self::Return> {
9693                <Self::ReturnTuple<
9694                    '_,
9695                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9696                    .map(|r| {
9697                        let r: getStateHistoryCountReturn = r.into();
9698                        r._0
9699                    })
9700            }
9701        }
9702    };
9703    #[derive(serde::Serialize, serde::Deserialize)]
9704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9705    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9706```solidity
9707function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9708```*/
9709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9710    #[derive(Clone)]
9711    pub struct getVersionCall;
9712    #[derive(serde::Serialize, serde::Deserialize)]
9713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9714    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9716    #[derive(Clone)]
9717    pub struct getVersionReturn {
9718        #[allow(missing_docs)]
9719        pub majorVersion: u8,
9720        #[allow(missing_docs)]
9721        pub minorVersion: u8,
9722        #[allow(missing_docs)]
9723        pub patchVersion: u8,
9724    }
9725    #[allow(
9726        non_camel_case_types,
9727        non_snake_case,
9728        clippy::pub_underscore_fields,
9729        clippy::style
9730    )]
9731    const _: () = {
9732        use alloy::sol_types as alloy_sol_types;
9733        {
9734            #[doc(hidden)]
9735            #[allow(dead_code)]
9736            type UnderlyingSolTuple<'a> = ();
9737            #[doc(hidden)]
9738            type UnderlyingRustTuple<'a> = ();
9739            #[cfg(test)]
9740            #[allow(dead_code, unreachable_patterns)]
9741            fn _type_assertion(
9742                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9743            ) {
9744                match _t {
9745                    alloy_sol_types::private::AssertTypeEq::<
9746                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9747                    >(_) => {}
9748                }
9749            }
9750            #[automatically_derived]
9751            #[doc(hidden)]
9752            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9753                fn from(value: getVersionCall) -> Self {
9754                    ()
9755                }
9756            }
9757            #[automatically_derived]
9758            #[doc(hidden)]
9759            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9761                    Self
9762                }
9763            }
9764        }
9765        {
9766            #[doc(hidden)]
9767            #[allow(dead_code)]
9768            type UnderlyingSolTuple<'a> = (
9769                alloy::sol_types::sol_data::Uint<8>,
9770                alloy::sol_types::sol_data::Uint<8>,
9771                alloy::sol_types::sol_data::Uint<8>,
9772            );
9773            #[doc(hidden)]
9774            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9775            #[cfg(test)]
9776            #[allow(dead_code, unreachable_patterns)]
9777            fn _type_assertion(
9778                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9779            ) {
9780                match _t {
9781                    alloy_sol_types::private::AssertTypeEq::<
9782                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9783                    >(_) => {}
9784                }
9785            }
9786            #[automatically_derived]
9787            #[doc(hidden)]
9788            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9789                fn from(value: getVersionReturn) -> Self {
9790                    (value.majorVersion, value.minorVersion, value.patchVersion)
9791                }
9792            }
9793            #[automatically_derived]
9794            #[doc(hidden)]
9795            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9796                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9797                    Self {
9798                        majorVersion: tuple.0,
9799                        minorVersion: tuple.1,
9800                        patchVersion: tuple.2,
9801                    }
9802                }
9803            }
9804        }
9805        impl getVersionReturn {
9806            fn _tokenize(
9807                &self,
9808            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9809                (
9810                    <alloy::sol_types::sol_data::Uint<
9811                        8,
9812                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
9813                    <alloy::sol_types::sol_data::Uint<
9814                        8,
9815                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
9816                    <alloy::sol_types::sol_data::Uint<
9817                        8,
9818                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
9819                )
9820            }
9821        }
9822        #[automatically_derived]
9823        impl alloy_sol_types::SolCall for getVersionCall {
9824            type Parameters<'a> = ();
9825            type Token<'a> = <Self::Parameters<
9826                'a,
9827            > as alloy_sol_types::SolType>::Token<'a>;
9828            type Return = getVersionReturn;
9829            type ReturnTuple<'a> = (
9830                alloy::sol_types::sol_data::Uint<8>,
9831                alloy::sol_types::sol_data::Uint<8>,
9832                alloy::sol_types::sol_data::Uint<8>,
9833            );
9834            type ReturnToken<'a> = <Self::ReturnTuple<
9835                'a,
9836            > as alloy_sol_types::SolType>::Token<'a>;
9837            const SIGNATURE: &'static str = "getVersion()";
9838            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9839            #[inline]
9840            fn new<'a>(
9841                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9842            ) -> Self {
9843                tuple.into()
9844            }
9845            #[inline]
9846            fn tokenize(&self) -> Self::Token<'_> {
9847                ()
9848            }
9849            #[inline]
9850            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9851                getVersionReturn::_tokenize(ret)
9852            }
9853            #[inline]
9854            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9855                <Self::ReturnTuple<
9856                    '_,
9857                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9858                    .map(Into::into)
9859            }
9860            #[inline]
9861            fn abi_decode_returns_validate(
9862                data: &[u8],
9863            ) -> alloy_sol_types::Result<Self::Return> {
9864                <Self::ReturnTuple<
9865                    '_,
9866                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9867                    .map(Into::into)
9868            }
9869        }
9870    };
9871    #[derive(serde::Serialize, serde::Deserialize)]
9872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9873    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9874```solidity
9875function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9876```*/
9877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9878    #[derive(Clone)]
9879    pub struct initializeCall {
9880        #[allow(missing_docs)]
9881        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9882        #[allow(missing_docs)]
9883        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9884        #[allow(missing_docs)]
9885        pub _stateHistoryRetentionPeriod: u32,
9886        #[allow(missing_docs)]
9887        pub owner: alloy::sol_types::private::Address,
9888    }
9889    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9890    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9891    #[derive(Clone)]
9892    pub struct initializeReturn {}
9893    #[allow(
9894        non_camel_case_types,
9895        non_snake_case,
9896        clippy::pub_underscore_fields,
9897        clippy::style
9898    )]
9899    const _: () = {
9900        use alloy::sol_types as alloy_sol_types;
9901        {
9902            #[doc(hidden)]
9903            #[allow(dead_code)]
9904            type UnderlyingSolTuple<'a> = (
9905                LightClient::LightClientState,
9906                LightClient::StakeTableState,
9907                alloy::sol_types::sol_data::Uint<32>,
9908                alloy::sol_types::sol_data::Address,
9909            );
9910            #[doc(hidden)]
9911            type UnderlyingRustTuple<'a> = (
9912                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9913                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9914                u32,
9915                alloy::sol_types::private::Address,
9916            );
9917            #[cfg(test)]
9918            #[allow(dead_code, unreachable_patterns)]
9919            fn _type_assertion(
9920                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9921            ) {
9922                match _t {
9923                    alloy_sol_types::private::AssertTypeEq::<
9924                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9925                    >(_) => {}
9926                }
9927            }
9928            #[automatically_derived]
9929            #[doc(hidden)]
9930            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9931                fn from(value: initializeCall) -> Self {
9932                    (
9933                        value._genesis,
9934                        value._genesisStakeTableState,
9935                        value._stateHistoryRetentionPeriod,
9936                        value.owner,
9937                    )
9938                }
9939            }
9940            #[automatically_derived]
9941            #[doc(hidden)]
9942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9944                    Self {
9945                        _genesis: tuple.0,
9946                        _genesisStakeTableState: tuple.1,
9947                        _stateHistoryRetentionPeriod: tuple.2,
9948                        owner: tuple.3,
9949                    }
9950                }
9951            }
9952        }
9953        {
9954            #[doc(hidden)]
9955            #[allow(dead_code)]
9956            type UnderlyingSolTuple<'a> = ();
9957            #[doc(hidden)]
9958            type UnderlyingRustTuple<'a> = ();
9959            #[cfg(test)]
9960            #[allow(dead_code, unreachable_patterns)]
9961            fn _type_assertion(
9962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9963            ) {
9964                match _t {
9965                    alloy_sol_types::private::AssertTypeEq::<
9966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9967                    >(_) => {}
9968                }
9969            }
9970            #[automatically_derived]
9971            #[doc(hidden)]
9972            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9973                fn from(value: initializeReturn) -> Self {
9974                    ()
9975                }
9976            }
9977            #[automatically_derived]
9978            #[doc(hidden)]
9979            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9981                    Self {}
9982                }
9983            }
9984        }
9985        impl initializeReturn {
9986            fn _tokenize(
9987                &self,
9988            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9989                ()
9990            }
9991        }
9992        #[automatically_derived]
9993        impl alloy_sol_types::SolCall for initializeCall {
9994            type Parameters<'a> = (
9995                LightClient::LightClientState,
9996                LightClient::StakeTableState,
9997                alloy::sol_types::sol_data::Uint<32>,
9998                alloy::sol_types::sol_data::Address,
9999            );
10000            type Token<'a> = <Self::Parameters<
10001                'a,
10002            > as alloy_sol_types::SolType>::Token<'a>;
10003            type Return = initializeReturn;
10004            type ReturnTuple<'a> = ();
10005            type ReturnToken<'a> = <Self::ReturnTuple<
10006                'a,
10007            > as alloy_sol_types::SolType>::Token<'a>;
10008            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10009            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10010            #[inline]
10011            fn new<'a>(
10012                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10013            ) -> Self {
10014                tuple.into()
10015            }
10016            #[inline]
10017            fn tokenize(&self) -> Self::Token<'_> {
10018                (
10019                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10020                        &self._genesis,
10021                    ),
10022                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10023                        &self._genesisStakeTableState,
10024                    ),
10025                    <alloy::sol_types::sol_data::Uint<
10026                        32,
10027                    > as alloy_sol_types::SolType>::tokenize(
10028                        &self._stateHistoryRetentionPeriod,
10029                    ),
10030                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10031                        &self.owner,
10032                    ),
10033                )
10034            }
10035            #[inline]
10036            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10037                initializeReturn::_tokenize(ret)
10038            }
10039            #[inline]
10040            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10041                <Self::ReturnTuple<
10042                    '_,
10043                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10044                    .map(Into::into)
10045            }
10046            #[inline]
10047            fn abi_decode_returns_validate(
10048                data: &[u8],
10049            ) -> alloy_sol_types::Result<Self::Return> {
10050                <Self::ReturnTuple<
10051                    '_,
10052                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10053                    .map(Into::into)
10054            }
10055        }
10056    };
10057    #[derive(serde::Serialize, serde::Deserialize)]
10058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10059    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10060```solidity
10061function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10062```*/
10063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10064    #[derive(Clone)]
10065    pub struct initializeV2Call {
10066        #[allow(missing_docs)]
10067        pub _blocksPerEpoch: u64,
10068        #[allow(missing_docs)]
10069        pub _epochStartBlock: u64,
10070    }
10071    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10073    #[derive(Clone)]
10074    pub struct initializeV2Return {}
10075    #[allow(
10076        non_camel_case_types,
10077        non_snake_case,
10078        clippy::pub_underscore_fields,
10079        clippy::style
10080    )]
10081    const _: () = {
10082        use alloy::sol_types as alloy_sol_types;
10083        {
10084            #[doc(hidden)]
10085            #[allow(dead_code)]
10086            type UnderlyingSolTuple<'a> = (
10087                alloy::sol_types::sol_data::Uint<64>,
10088                alloy::sol_types::sol_data::Uint<64>,
10089            );
10090            #[doc(hidden)]
10091            type UnderlyingRustTuple<'a> = (u64, u64);
10092            #[cfg(test)]
10093            #[allow(dead_code, unreachable_patterns)]
10094            fn _type_assertion(
10095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10096            ) {
10097                match _t {
10098                    alloy_sol_types::private::AssertTypeEq::<
10099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10100                    >(_) => {}
10101                }
10102            }
10103            #[automatically_derived]
10104            #[doc(hidden)]
10105            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10106                fn from(value: initializeV2Call) -> Self {
10107                    (value._blocksPerEpoch, value._epochStartBlock)
10108                }
10109            }
10110            #[automatically_derived]
10111            #[doc(hidden)]
10112            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10114                    Self {
10115                        _blocksPerEpoch: tuple.0,
10116                        _epochStartBlock: tuple.1,
10117                    }
10118                }
10119            }
10120        }
10121        {
10122            #[doc(hidden)]
10123            #[allow(dead_code)]
10124            type UnderlyingSolTuple<'a> = ();
10125            #[doc(hidden)]
10126            type UnderlyingRustTuple<'a> = ();
10127            #[cfg(test)]
10128            #[allow(dead_code, unreachable_patterns)]
10129            fn _type_assertion(
10130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10131            ) {
10132                match _t {
10133                    alloy_sol_types::private::AssertTypeEq::<
10134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10135                    >(_) => {}
10136                }
10137            }
10138            #[automatically_derived]
10139            #[doc(hidden)]
10140            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10141                fn from(value: initializeV2Return) -> Self {
10142                    ()
10143                }
10144            }
10145            #[automatically_derived]
10146            #[doc(hidden)]
10147            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10149                    Self {}
10150                }
10151            }
10152        }
10153        impl initializeV2Return {
10154            fn _tokenize(
10155                &self,
10156            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10157                ()
10158            }
10159        }
10160        #[automatically_derived]
10161        impl alloy_sol_types::SolCall for initializeV2Call {
10162            type Parameters<'a> = (
10163                alloy::sol_types::sol_data::Uint<64>,
10164                alloy::sol_types::sol_data::Uint<64>,
10165            );
10166            type Token<'a> = <Self::Parameters<
10167                'a,
10168            > as alloy_sol_types::SolType>::Token<'a>;
10169            type Return = initializeV2Return;
10170            type ReturnTuple<'a> = ();
10171            type ReturnToken<'a> = <Self::ReturnTuple<
10172                'a,
10173            > as alloy_sol_types::SolType>::Token<'a>;
10174            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10175            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10176            #[inline]
10177            fn new<'a>(
10178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10179            ) -> Self {
10180                tuple.into()
10181            }
10182            #[inline]
10183            fn tokenize(&self) -> Self::Token<'_> {
10184                (
10185                    <alloy::sol_types::sol_data::Uint<
10186                        64,
10187                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10188                    <alloy::sol_types::sol_data::Uint<
10189                        64,
10190                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10191                )
10192            }
10193            #[inline]
10194            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10195                initializeV2Return::_tokenize(ret)
10196            }
10197            #[inline]
10198            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10199                <Self::ReturnTuple<
10200                    '_,
10201                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10202                    .map(Into::into)
10203            }
10204            #[inline]
10205            fn abi_decode_returns_validate(
10206                data: &[u8],
10207            ) -> alloy_sol_types::Result<Self::Return> {
10208                <Self::ReturnTuple<
10209                    '_,
10210                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10211                    .map(Into::into)
10212            }
10213        }
10214    };
10215    #[derive(serde::Serialize, serde::Deserialize)]
10216    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10217    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10218```solidity
10219function isEpochRoot(uint64 blockHeight) external view returns (bool);
10220```*/
10221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10222    #[derive(Clone)]
10223    pub struct isEpochRootCall {
10224        #[allow(missing_docs)]
10225        pub blockHeight: u64,
10226    }
10227    #[derive(serde::Serialize, serde::Deserialize)]
10228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10229    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10231    #[derive(Clone)]
10232    pub struct isEpochRootReturn {
10233        #[allow(missing_docs)]
10234        pub _0: bool,
10235    }
10236    #[allow(
10237        non_camel_case_types,
10238        non_snake_case,
10239        clippy::pub_underscore_fields,
10240        clippy::style
10241    )]
10242    const _: () = {
10243        use alloy::sol_types as alloy_sol_types;
10244        {
10245            #[doc(hidden)]
10246            #[allow(dead_code)]
10247            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10248            #[doc(hidden)]
10249            type UnderlyingRustTuple<'a> = (u64,);
10250            #[cfg(test)]
10251            #[allow(dead_code, unreachable_patterns)]
10252            fn _type_assertion(
10253                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10254            ) {
10255                match _t {
10256                    alloy_sol_types::private::AssertTypeEq::<
10257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10258                    >(_) => {}
10259                }
10260            }
10261            #[automatically_derived]
10262            #[doc(hidden)]
10263            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10264                fn from(value: isEpochRootCall) -> Self {
10265                    (value.blockHeight,)
10266                }
10267            }
10268            #[automatically_derived]
10269            #[doc(hidden)]
10270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10272                    Self { blockHeight: tuple.0 }
10273                }
10274            }
10275        }
10276        {
10277            #[doc(hidden)]
10278            #[allow(dead_code)]
10279            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10280            #[doc(hidden)]
10281            type UnderlyingRustTuple<'a> = (bool,);
10282            #[cfg(test)]
10283            #[allow(dead_code, unreachable_patterns)]
10284            fn _type_assertion(
10285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10286            ) {
10287                match _t {
10288                    alloy_sol_types::private::AssertTypeEq::<
10289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10290                    >(_) => {}
10291                }
10292            }
10293            #[automatically_derived]
10294            #[doc(hidden)]
10295            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10296                fn from(value: isEpochRootReturn) -> Self {
10297                    (value._0,)
10298                }
10299            }
10300            #[automatically_derived]
10301            #[doc(hidden)]
10302            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10304                    Self { _0: tuple.0 }
10305                }
10306            }
10307        }
10308        #[automatically_derived]
10309        impl alloy_sol_types::SolCall for isEpochRootCall {
10310            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10311            type Token<'a> = <Self::Parameters<
10312                'a,
10313            > as alloy_sol_types::SolType>::Token<'a>;
10314            type Return = bool;
10315            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10316            type ReturnToken<'a> = <Self::ReturnTuple<
10317                'a,
10318            > as alloy_sol_types::SolType>::Token<'a>;
10319            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10320            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10321            #[inline]
10322            fn new<'a>(
10323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10324            ) -> Self {
10325                tuple.into()
10326            }
10327            #[inline]
10328            fn tokenize(&self) -> Self::Token<'_> {
10329                (
10330                    <alloy::sol_types::sol_data::Uint<
10331                        64,
10332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10333                )
10334            }
10335            #[inline]
10336            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10337                (
10338                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10339                        ret,
10340                    ),
10341                )
10342            }
10343            #[inline]
10344            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10345                <Self::ReturnTuple<
10346                    '_,
10347                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10348                    .map(|r| {
10349                        let r: isEpochRootReturn = r.into();
10350                        r._0
10351                    })
10352            }
10353            #[inline]
10354            fn abi_decode_returns_validate(
10355                data: &[u8],
10356            ) -> alloy_sol_types::Result<Self::Return> {
10357                <Self::ReturnTuple<
10358                    '_,
10359                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10360                    .map(|r| {
10361                        let r: isEpochRootReturn = r.into();
10362                        r._0
10363                    })
10364            }
10365        }
10366    };
10367    #[derive(serde::Serialize, serde::Deserialize)]
10368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10369    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10370```solidity
10371function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10372```*/
10373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10374    #[derive(Clone)]
10375    pub struct isGtEpochRootCall {
10376        #[allow(missing_docs)]
10377        pub blockHeight: u64,
10378    }
10379    #[derive(serde::Serialize, serde::Deserialize)]
10380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10381    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10383    #[derive(Clone)]
10384    pub struct isGtEpochRootReturn {
10385        #[allow(missing_docs)]
10386        pub _0: bool,
10387    }
10388    #[allow(
10389        non_camel_case_types,
10390        non_snake_case,
10391        clippy::pub_underscore_fields,
10392        clippy::style
10393    )]
10394    const _: () = {
10395        use alloy::sol_types as alloy_sol_types;
10396        {
10397            #[doc(hidden)]
10398            #[allow(dead_code)]
10399            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10400            #[doc(hidden)]
10401            type UnderlyingRustTuple<'a> = (u64,);
10402            #[cfg(test)]
10403            #[allow(dead_code, unreachable_patterns)]
10404            fn _type_assertion(
10405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10406            ) {
10407                match _t {
10408                    alloy_sol_types::private::AssertTypeEq::<
10409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10410                    >(_) => {}
10411                }
10412            }
10413            #[automatically_derived]
10414            #[doc(hidden)]
10415            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10416                fn from(value: isGtEpochRootCall) -> Self {
10417                    (value.blockHeight,)
10418                }
10419            }
10420            #[automatically_derived]
10421            #[doc(hidden)]
10422            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10423                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10424                    Self { blockHeight: tuple.0 }
10425                }
10426            }
10427        }
10428        {
10429            #[doc(hidden)]
10430            #[allow(dead_code)]
10431            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10432            #[doc(hidden)]
10433            type UnderlyingRustTuple<'a> = (bool,);
10434            #[cfg(test)]
10435            #[allow(dead_code, unreachable_patterns)]
10436            fn _type_assertion(
10437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10438            ) {
10439                match _t {
10440                    alloy_sol_types::private::AssertTypeEq::<
10441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10442                    >(_) => {}
10443                }
10444            }
10445            #[automatically_derived]
10446            #[doc(hidden)]
10447            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10448                fn from(value: isGtEpochRootReturn) -> Self {
10449                    (value._0,)
10450                }
10451            }
10452            #[automatically_derived]
10453            #[doc(hidden)]
10454            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10456                    Self { _0: tuple.0 }
10457                }
10458            }
10459        }
10460        #[automatically_derived]
10461        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10462            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10463            type Token<'a> = <Self::Parameters<
10464                'a,
10465            > as alloy_sol_types::SolType>::Token<'a>;
10466            type Return = bool;
10467            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10468            type ReturnToken<'a> = <Self::ReturnTuple<
10469                'a,
10470            > as alloy_sol_types::SolType>::Token<'a>;
10471            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10472            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10473            #[inline]
10474            fn new<'a>(
10475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10476            ) -> Self {
10477                tuple.into()
10478            }
10479            #[inline]
10480            fn tokenize(&self) -> Self::Token<'_> {
10481                (
10482                    <alloy::sol_types::sol_data::Uint<
10483                        64,
10484                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10485                )
10486            }
10487            #[inline]
10488            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10489                (
10490                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10491                        ret,
10492                    ),
10493                )
10494            }
10495            #[inline]
10496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10497                <Self::ReturnTuple<
10498                    '_,
10499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10500                    .map(|r| {
10501                        let r: isGtEpochRootReturn = r.into();
10502                        r._0
10503                    })
10504            }
10505            #[inline]
10506            fn abi_decode_returns_validate(
10507                data: &[u8],
10508            ) -> alloy_sol_types::Result<Self::Return> {
10509                <Self::ReturnTuple<
10510                    '_,
10511                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10512                    .map(|r| {
10513                        let r: isGtEpochRootReturn = r.into();
10514                        r._0
10515                    })
10516            }
10517        }
10518    };
10519    #[derive(serde::Serialize, serde::Deserialize)]
10520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10521    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10522```solidity
10523function isPermissionedProverEnabled() external view returns (bool);
10524```*/
10525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10526    #[derive(Clone)]
10527    pub struct isPermissionedProverEnabledCall;
10528    #[derive(serde::Serialize, serde::Deserialize)]
10529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10530    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10532    #[derive(Clone)]
10533    pub struct isPermissionedProverEnabledReturn {
10534        #[allow(missing_docs)]
10535        pub _0: bool,
10536    }
10537    #[allow(
10538        non_camel_case_types,
10539        non_snake_case,
10540        clippy::pub_underscore_fields,
10541        clippy::style
10542    )]
10543    const _: () = {
10544        use alloy::sol_types as alloy_sol_types;
10545        {
10546            #[doc(hidden)]
10547            #[allow(dead_code)]
10548            type UnderlyingSolTuple<'a> = ();
10549            #[doc(hidden)]
10550            type UnderlyingRustTuple<'a> = ();
10551            #[cfg(test)]
10552            #[allow(dead_code, unreachable_patterns)]
10553            fn _type_assertion(
10554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10555            ) {
10556                match _t {
10557                    alloy_sol_types::private::AssertTypeEq::<
10558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10559                    >(_) => {}
10560                }
10561            }
10562            #[automatically_derived]
10563            #[doc(hidden)]
10564            impl ::core::convert::From<isPermissionedProverEnabledCall>
10565            for UnderlyingRustTuple<'_> {
10566                fn from(value: isPermissionedProverEnabledCall) -> Self {
10567                    ()
10568                }
10569            }
10570            #[automatically_derived]
10571            #[doc(hidden)]
10572            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10573            for isPermissionedProverEnabledCall {
10574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10575                    Self
10576                }
10577            }
10578        }
10579        {
10580            #[doc(hidden)]
10581            #[allow(dead_code)]
10582            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10583            #[doc(hidden)]
10584            type UnderlyingRustTuple<'a> = (bool,);
10585            #[cfg(test)]
10586            #[allow(dead_code, unreachable_patterns)]
10587            fn _type_assertion(
10588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10589            ) {
10590                match _t {
10591                    alloy_sol_types::private::AssertTypeEq::<
10592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10593                    >(_) => {}
10594                }
10595            }
10596            #[automatically_derived]
10597            #[doc(hidden)]
10598            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10599            for UnderlyingRustTuple<'_> {
10600                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10601                    (value._0,)
10602                }
10603            }
10604            #[automatically_derived]
10605            #[doc(hidden)]
10606            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10607            for isPermissionedProverEnabledReturn {
10608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10609                    Self { _0: tuple.0 }
10610                }
10611            }
10612        }
10613        #[automatically_derived]
10614        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10615            type Parameters<'a> = ();
10616            type Token<'a> = <Self::Parameters<
10617                'a,
10618            > as alloy_sol_types::SolType>::Token<'a>;
10619            type Return = bool;
10620            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10621            type ReturnToken<'a> = <Self::ReturnTuple<
10622                'a,
10623            > as alloy_sol_types::SolType>::Token<'a>;
10624            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10625            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10626            #[inline]
10627            fn new<'a>(
10628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10629            ) -> Self {
10630                tuple.into()
10631            }
10632            #[inline]
10633            fn tokenize(&self) -> Self::Token<'_> {
10634                ()
10635            }
10636            #[inline]
10637            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10638                (
10639                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10640                        ret,
10641                    ),
10642                )
10643            }
10644            #[inline]
10645            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10646                <Self::ReturnTuple<
10647                    '_,
10648                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10649                    .map(|r| {
10650                        let r: isPermissionedProverEnabledReturn = r.into();
10651                        r._0
10652                    })
10653            }
10654            #[inline]
10655            fn abi_decode_returns_validate(
10656                data: &[u8],
10657            ) -> alloy_sol_types::Result<Self::Return> {
10658                <Self::ReturnTuple<
10659                    '_,
10660                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10661                    .map(|r| {
10662                        let r: isPermissionedProverEnabledReturn = r.into();
10663                        r._0
10664                    })
10665            }
10666        }
10667    };
10668    #[derive(serde::Serialize, serde::Deserialize)]
10669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10670    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10671```solidity
10672function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
10673```*/
10674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10675    #[derive(Clone)]
10676    pub struct lagOverEscapeHatchThresholdCall {
10677        #[allow(missing_docs)]
10678        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10679        #[allow(missing_docs)]
10680        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10681    }
10682    #[derive(serde::Serialize, serde::Deserialize)]
10683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10684    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10686    #[derive(Clone)]
10687    pub struct lagOverEscapeHatchThresholdReturn {
10688        #[allow(missing_docs)]
10689        pub _0: bool,
10690    }
10691    #[allow(
10692        non_camel_case_types,
10693        non_snake_case,
10694        clippy::pub_underscore_fields,
10695        clippy::style
10696    )]
10697    const _: () = {
10698        use alloy::sol_types as alloy_sol_types;
10699        {
10700            #[doc(hidden)]
10701            #[allow(dead_code)]
10702            type UnderlyingSolTuple<'a> = (
10703                alloy::sol_types::sol_data::Uint<256>,
10704                alloy::sol_types::sol_data::Uint<256>,
10705            );
10706            #[doc(hidden)]
10707            type UnderlyingRustTuple<'a> = (
10708                alloy::sol_types::private::primitives::aliases::U256,
10709                alloy::sol_types::private::primitives::aliases::U256,
10710            );
10711            #[cfg(test)]
10712            #[allow(dead_code, unreachable_patterns)]
10713            fn _type_assertion(
10714                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10715            ) {
10716                match _t {
10717                    alloy_sol_types::private::AssertTypeEq::<
10718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10719                    >(_) => {}
10720                }
10721            }
10722            #[automatically_derived]
10723            #[doc(hidden)]
10724            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10725            for UnderlyingRustTuple<'_> {
10726                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10727                    (value.blockNumber, value.blockThreshold)
10728                }
10729            }
10730            #[automatically_derived]
10731            #[doc(hidden)]
10732            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10733            for lagOverEscapeHatchThresholdCall {
10734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10735                    Self {
10736                        blockNumber: tuple.0,
10737                        blockThreshold: tuple.1,
10738                    }
10739                }
10740            }
10741        }
10742        {
10743            #[doc(hidden)]
10744            #[allow(dead_code)]
10745            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10746            #[doc(hidden)]
10747            type UnderlyingRustTuple<'a> = (bool,);
10748            #[cfg(test)]
10749            #[allow(dead_code, unreachable_patterns)]
10750            fn _type_assertion(
10751                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10752            ) {
10753                match _t {
10754                    alloy_sol_types::private::AssertTypeEq::<
10755                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10756                    >(_) => {}
10757                }
10758            }
10759            #[automatically_derived]
10760            #[doc(hidden)]
10761            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
10762            for UnderlyingRustTuple<'_> {
10763                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
10764                    (value._0,)
10765                }
10766            }
10767            #[automatically_derived]
10768            #[doc(hidden)]
10769            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10770            for lagOverEscapeHatchThresholdReturn {
10771                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10772                    Self { _0: tuple.0 }
10773                }
10774            }
10775        }
10776        #[automatically_derived]
10777        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
10778            type Parameters<'a> = (
10779                alloy::sol_types::sol_data::Uint<256>,
10780                alloy::sol_types::sol_data::Uint<256>,
10781            );
10782            type Token<'a> = <Self::Parameters<
10783                'a,
10784            > as alloy_sol_types::SolType>::Token<'a>;
10785            type Return = bool;
10786            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10787            type ReturnToken<'a> = <Self::ReturnTuple<
10788                'a,
10789            > as alloy_sol_types::SolType>::Token<'a>;
10790            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
10791            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
10792            #[inline]
10793            fn new<'a>(
10794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10795            ) -> Self {
10796                tuple.into()
10797            }
10798            #[inline]
10799            fn tokenize(&self) -> Self::Token<'_> {
10800                (
10801                    <alloy::sol_types::sol_data::Uint<
10802                        256,
10803                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
10804                    <alloy::sol_types::sol_data::Uint<
10805                        256,
10806                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
10807                )
10808            }
10809            #[inline]
10810            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10811                (
10812                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10813                        ret,
10814                    ),
10815                )
10816            }
10817            #[inline]
10818            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10819                <Self::ReturnTuple<
10820                    '_,
10821                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10822                    .map(|r| {
10823                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10824                        r._0
10825                    })
10826            }
10827            #[inline]
10828            fn abi_decode_returns_validate(
10829                data: &[u8],
10830            ) -> alloy_sol_types::Result<Self::Return> {
10831                <Self::ReturnTuple<
10832                    '_,
10833                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10834                    .map(|r| {
10835                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10836                        r._0
10837                    })
10838            }
10839        }
10840    };
10841    #[derive(serde::Serialize, serde::Deserialize)]
10842    #[derive()]
10843    /**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`.
10844```solidity
10845function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
10846```*/
10847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10848    #[derive(Clone)]
10849    pub struct newFinalizedState_0Call {
10850        #[allow(missing_docs)]
10851        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10852        #[allow(missing_docs)]
10853        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10854    }
10855    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
10856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10857    #[derive(Clone)]
10858    pub struct newFinalizedState_0Return {}
10859    #[allow(
10860        non_camel_case_types,
10861        non_snake_case,
10862        clippy::pub_underscore_fields,
10863        clippy::style
10864    )]
10865    const _: () = {
10866        use alloy::sol_types as alloy_sol_types;
10867        {
10868            #[doc(hidden)]
10869            #[allow(dead_code)]
10870            type UnderlyingSolTuple<'a> = (
10871                LightClient::LightClientState,
10872                IPlonkVerifier::PlonkProof,
10873            );
10874            #[doc(hidden)]
10875            type UnderlyingRustTuple<'a> = (
10876                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10877                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10878            );
10879            #[cfg(test)]
10880            #[allow(dead_code, unreachable_patterns)]
10881            fn _type_assertion(
10882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10883            ) {
10884                match _t {
10885                    alloy_sol_types::private::AssertTypeEq::<
10886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10887                    >(_) => {}
10888                }
10889            }
10890            #[automatically_derived]
10891            #[doc(hidden)]
10892            impl ::core::convert::From<newFinalizedState_0Call>
10893            for UnderlyingRustTuple<'_> {
10894                fn from(value: newFinalizedState_0Call) -> Self {
10895                    (value._0, value._1)
10896                }
10897            }
10898            #[automatically_derived]
10899            #[doc(hidden)]
10900            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10901            for newFinalizedState_0Call {
10902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10903                    Self { _0: tuple.0, _1: tuple.1 }
10904                }
10905            }
10906        }
10907        {
10908            #[doc(hidden)]
10909            #[allow(dead_code)]
10910            type UnderlyingSolTuple<'a> = ();
10911            #[doc(hidden)]
10912            type UnderlyingRustTuple<'a> = ();
10913            #[cfg(test)]
10914            #[allow(dead_code, unreachable_patterns)]
10915            fn _type_assertion(
10916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10917            ) {
10918                match _t {
10919                    alloy_sol_types::private::AssertTypeEq::<
10920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10921                    >(_) => {}
10922                }
10923            }
10924            #[automatically_derived]
10925            #[doc(hidden)]
10926            impl ::core::convert::From<newFinalizedState_0Return>
10927            for UnderlyingRustTuple<'_> {
10928                fn from(value: newFinalizedState_0Return) -> Self {
10929                    ()
10930                }
10931            }
10932            #[automatically_derived]
10933            #[doc(hidden)]
10934            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10935            for newFinalizedState_0Return {
10936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10937                    Self {}
10938                }
10939            }
10940        }
10941        impl newFinalizedState_0Return {
10942            fn _tokenize(
10943                &self,
10944            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10945                ()
10946            }
10947        }
10948        #[automatically_derived]
10949        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10950            type Parameters<'a> = (
10951                LightClient::LightClientState,
10952                IPlonkVerifier::PlonkProof,
10953            );
10954            type Token<'a> = <Self::Parameters<
10955                'a,
10956            > as alloy_sol_types::SolType>::Token<'a>;
10957            type Return = newFinalizedState_0Return;
10958            type ReturnTuple<'a> = ();
10959            type ReturnToken<'a> = <Self::ReturnTuple<
10960                'a,
10961            > as alloy_sol_types::SolType>::Token<'a>;
10962            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))";
10963            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10964            #[inline]
10965            fn new<'a>(
10966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10967            ) -> Self {
10968                tuple.into()
10969            }
10970            #[inline]
10971            fn tokenize(&self) -> Self::Token<'_> {
10972                (
10973                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10974                        &self._0,
10975                    ),
10976                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10977                        &self._1,
10978                    ),
10979                )
10980            }
10981            #[inline]
10982            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10983                newFinalizedState_0Return::_tokenize(ret)
10984            }
10985            #[inline]
10986            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10987                <Self::ReturnTuple<
10988                    '_,
10989                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10990                    .map(Into::into)
10991            }
10992            #[inline]
10993            fn abi_decode_returns_validate(
10994                data: &[u8],
10995            ) -> alloy_sol_types::Result<Self::Return> {
10996                <Self::ReturnTuple<
10997                    '_,
10998                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10999                    .map(Into::into)
11000            }
11001        }
11002    };
11003    #[derive(serde::Serialize, serde::Deserialize)]
11004    #[derive()]
11005    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
11006```solidity
11007function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11008```*/
11009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11010    #[derive(Clone)]
11011    pub struct newFinalizedState_1Call {
11012        #[allow(missing_docs)]
11013        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11014        #[allow(missing_docs)]
11015        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11016        #[allow(missing_docs)]
11017        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11018    }
11019    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
11020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11021    #[derive(Clone)]
11022    pub struct newFinalizedState_1Return {}
11023    #[allow(
11024        non_camel_case_types,
11025        non_snake_case,
11026        clippy::pub_underscore_fields,
11027        clippy::style
11028    )]
11029    const _: () = {
11030        use alloy::sol_types as alloy_sol_types;
11031        {
11032            #[doc(hidden)]
11033            #[allow(dead_code)]
11034            type UnderlyingSolTuple<'a> = (
11035                LightClient::LightClientState,
11036                LightClient::StakeTableState,
11037                IPlonkVerifier::PlonkProof,
11038            );
11039            #[doc(hidden)]
11040            type UnderlyingRustTuple<'a> = (
11041                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11042                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11043                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11044            );
11045            #[cfg(test)]
11046            #[allow(dead_code, unreachable_patterns)]
11047            fn _type_assertion(
11048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11049            ) {
11050                match _t {
11051                    alloy_sol_types::private::AssertTypeEq::<
11052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11053                    >(_) => {}
11054                }
11055            }
11056            #[automatically_derived]
11057            #[doc(hidden)]
11058            impl ::core::convert::From<newFinalizedState_1Call>
11059            for UnderlyingRustTuple<'_> {
11060                fn from(value: newFinalizedState_1Call) -> Self {
11061                    (value.newState, value.nextStakeTable, value.proof)
11062                }
11063            }
11064            #[automatically_derived]
11065            #[doc(hidden)]
11066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11067            for newFinalizedState_1Call {
11068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11069                    Self {
11070                        newState: tuple.0,
11071                        nextStakeTable: tuple.1,
11072                        proof: tuple.2,
11073                    }
11074                }
11075            }
11076        }
11077        {
11078            #[doc(hidden)]
11079            #[allow(dead_code)]
11080            type UnderlyingSolTuple<'a> = ();
11081            #[doc(hidden)]
11082            type UnderlyingRustTuple<'a> = ();
11083            #[cfg(test)]
11084            #[allow(dead_code, unreachable_patterns)]
11085            fn _type_assertion(
11086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11087            ) {
11088                match _t {
11089                    alloy_sol_types::private::AssertTypeEq::<
11090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11091                    >(_) => {}
11092                }
11093            }
11094            #[automatically_derived]
11095            #[doc(hidden)]
11096            impl ::core::convert::From<newFinalizedState_1Return>
11097            for UnderlyingRustTuple<'_> {
11098                fn from(value: newFinalizedState_1Return) -> Self {
11099                    ()
11100                }
11101            }
11102            #[automatically_derived]
11103            #[doc(hidden)]
11104            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11105            for newFinalizedState_1Return {
11106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11107                    Self {}
11108                }
11109            }
11110        }
11111        impl newFinalizedState_1Return {
11112            fn _tokenize(
11113                &self,
11114            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11115                ()
11116            }
11117        }
11118        #[automatically_derived]
11119        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11120            type Parameters<'a> = (
11121                LightClient::LightClientState,
11122                LightClient::StakeTableState,
11123                IPlonkVerifier::PlonkProof,
11124            );
11125            type Token<'a> = <Self::Parameters<
11126                'a,
11127            > as alloy_sol_types::SolType>::Token<'a>;
11128            type Return = newFinalizedState_1Return;
11129            type ReturnTuple<'a> = ();
11130            type ReturnToken<'a> = <Self::ReturnTuple<
11131                'a,
11132            > as alloy_sol_types::SolType>::Token<'a>;
11133            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11134            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11135            #[inline]
11136            fn new<'a>(
11137                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11138            ) -> Self {
11139                tuple.into()
11140            }
11141            #[inline]
11142            fn tokenize(&self) -> Self::Token<'_> {
11143                (
11144                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11145                        &self.newState,
11146                    ),
11147                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11148                        &self.nextStakeTable,
11149                    ),
11150                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11151                        &self.proof,
11152                    ),
11153                )
11154            }
11155            #[inline]
11156            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11157                newFinalizedState_1Return::_tokenize(ret)
11158            }
11159            #[inline]
11160            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11161                <Self::ReturnTuple<
11162                    '_,
11163                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11164                    .map(Into::into)
11165            }
11166            #[inline]
11167            fn abi_decode_returns_validate(
11168                data: &[u8],
11169            ) -> alloy_sol_types::Result<Self::Return> {
11170                <Self::ReturnTuple<
11171                    '_,
11172                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11173                    .map(Into::into)
11174            }
11175        }
11176    };
11177    #[derive(serde::Serialize, serde::Deserialize)]
11178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11179    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11180```solidity
11181function owner() external view returns (address);
11182```*/
11183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11184    #[derive(Clone)]
11185    pub struct ownerCall;
11186    #[derive(serde::Serialize, serde::Deserialize)]
11187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11188    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11190    #[derive(Clone)]
11191    pub struct ownerReturn {
11192        #[allow(missing_docs)]
11193        pub _0: alloy::sol_types::private::Address,
11194    }
11195    #[allow(
11196        non_camel_case_types,
11197        non_snake_case,
11198        clippy::pub_underscore_fields,
11199        clippy::style
11200    )]
11201    const _: () = {
11202        use alloy::sol_types as alloy_sol_types;
11203        {
11204            #[doc(hidden)]
11205            #[allow(dead_code)]
11206            type UnderlyingSolTuple<'a> = ();
11207            #[doc(hidden)]
11208            type UnderlyingRustTuple<'a> = ();
11209            #[cfg(test)]
11210            #[allow(dead_code, unreachable_patterns)]
11211            fn _type_assertion(
11212                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11213            ) {
11214                match _t {
11215                    alloy_sol_types::private::AssertTypeEq::<
11216                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11217                    >(_) => {}
11218                }
11219            }
11220            #[automatically_derived]
11221            #[doc(hidden)]
11222            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11223                fn from(value: ownerCall) -> Self {
11224                    ()
11225                }
11226            }
11227            #[automatically_derived]
11228            #[doc(hidden)]
11229            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11231                    Self
11232                }
11233            }
11234        }
11235        {
11236            #[doc(hidden)]
11237            #[allow(dead_code)]
11238            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11239            #[doc(hidden)]
11240            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11241            #[cfg(test)]
11242            #[allow(dead_code, unreachable_patterns)]
11243            fn _type_assertion(
11244                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11245            ) {
11246                match _t {
11247                    alloy_sol_types::private::AssertTypeEq::<
11248                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11249                    >(_) => {}
11250                }
11251            }
11252            #[automatically_derived]
11253            #[doc(hidden)]
11254            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11255                fn from(value: ownerReturn) -> Self {
11256                    (value._0,)
11257                }
11258            }
11259            #[automatically_derived]
11260            #[doc(hidden)]
11261            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11262                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11263                    Self { _0: tuple.0 }
11264                }
11265            }
11266        }
11267        #[automatically_derived]
11268        impl alloy_sol_types::SolCall for ownerCall {
11269            type Parameters<'a> = ();
11270            type Token<'a> = <Self::Parameters<
11271                'a,
11272            > as alloy_sol_types::SolType>::Token<'a>;
11273            type Return = alloy::sol_types::private::Address;
11274            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11275            type ReturnToken<'a> = <Self::ReturnTuple<
11276                'a,
11277            > as alloy_sol_types::SolType>::Token<'a>;
11278            const SIGNATURE: &'static str = "owner()";
11279            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11280            #[inline]
11281            fn new<'a>(
11282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11283            ) -> Self {
11284                tuple.into()
11285            }
11286            #[inline]
11287            fn tokenize(&self) -> Self::Token<'_> {
11288                ()
11289            }
11290            #[inline]
11291            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11292                (
11293                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11294                        ret,
11295                    ),
11296                )
11297            }
11298            #[inline]
11299            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11300                <Self::ReturnTuple<
11301                    '_,
11302                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11303                    .map(|r| {
11304                        let r: ownerReturn = r.into();
11305                        r._0
11306                    })
11307            }
11308            #[inline]
11309            fn abi_decode_returns_validate(
11310                data: &[u8],
11311            ) -> alloy_sol_types::Result<Self::Return> {
11312                <Self::ReturnTuple<
11313                    '_,
11314                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11315                    .map(|r| {
11316                        let r: ownerReturn = r.into();
11317                        r._0
11318                    })
11319            }
11320        }
11321    };
11322    #[derive(serde::Serialize, serde::Deserialize)]
11323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11324    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11325```solidity
11326function permissionedProver() external view returns (address);
11327```*/
11328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11329    #[derive(Clone)]
11330    pub struct permissionedProverCall;
11331    #[derive(serde::Serialize, serde::Deserialize)]
11332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11333    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11335    #[derive(Clone)]
11336    pub struct permissionedProverReturn {
11337        #[allow(missing_docs)]
11338        pub _0: alloy::sol_types::private::Address,
11339    }
11340    #[allow(
11341        non_camel_case_types,
11342        non_snake_case,
11343        clippy::pub_underscore_fields,
11344        clippy::style
11345    )]
11346    const _: () = {
11347        use alloy::sol_types as alloy_sol_types;
11348        {
11349            #[doc(hidden)]
11350            #[allow(dead_code)]
11351            type UnderlyingSolTuple<'a> = ();
11352            #[doc(hidden)]
11353            type UnderlyingRustTuple<'a> = ();
11354            #[cfg(test)]
11355            #[allow(dead_code, unreachable_patterns)]
11356            fn _type_assertion(
11357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11358            ) {
11359                match _t {
11360                    alloy_sol_types::private::AssertTypeEq::<
11361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11362                    >(_) => {}
11363                }
11364            }
11365            #[automatically_derived]
11366            #[doc(hidden)]
11367            impl ::core::convert::From<permissionedProverCall>
11368            for UnderlyingRustTuple<'_> {
11369                fn from(value: permissionedProverCall) -> Self {
11370                    ()
11371                }
11372            }
11373            #[automatically_derived]
11374            #[doc(hidden)]
11375            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11376            for permissionedProverCall {
11377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11378                    Self
11379                }
11380            }
11381        }
11382        {
11383            #[doc(hidden)]
11384            #[allow(dead_code)]
11385            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11386            #[doc(hidden)]
11387            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11388            #[cfg(test)]
11389            #[allow(dead_code, unreachable_patterns)]
11390            fn _type_assertion(
11391                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11392            ) {
11393                match _t {
11394                    alloy_sol_types::private::AssertTypeEq::<
11395                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11396                    >(_) => {}
11397                }
11398            }
11399            #[automatically_derived]
11400            #[doc(hidden)]
11401            impl ::core::convert::From<permissionedProverReturn>
11402            for UnderlyingRustTuple<'_> {
11403                fn from(value: permissionedProverReturn) -> Self {
11404                    (value._0,)
11405                }
11406            }
11407            #[automatically_derived]
11408            #[doc(hidden)]
11409            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11410            for permissionedProverReturn {
11411                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11412                    Self { _0: tuple.0 }
11413                }
11414            }
11415        }
11416        #[automatically_derived]
11417        impl alloy_sol_types::SolCall for permissionedProverCall {
11418            type Parameters<'a> = ();
11419            type Token<'a> = <Self::Parameters<
11420                'a,
11421            > as alloy_sol_types::SolType>::Token<'a>;
11422            type Return = alloy::sol_types::private::Address;
11423            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11424            type ReturnToken<'a> = <Self::ReturnTuple<
11425                'a,
11426            > as alloy_sol_types::SolType>::Token<'a>;
11427            const SIGNATURE: &'static str = "permissionedProver()";
11428            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11429            #[inline]
11430            fn new<'a>(
11431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11432            ) -> Self {
11433                tuple.into()
11434            }
11435            #[inline]
11436            fn tokenize(&self) -> Self::Token<'_> {
11437                ()
11438            }
11439            #[inline]
11440            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11441                (
11442                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11443                        ret,
11444                    ),
11445                )
11446            }
11447            #[inline]
11448            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11449                <Self::ReturnTuple<
11450                    '_,
11451                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11452                    .map(|r| {
11453                        let r: permissionedProverReturn = r.into();
11454                        r._0
11455                    })
11456            }
11457            #[inline]
11458            fn abi_decode_returns_validate(
11459                data: &[u8],
11460            ) -> alloy_sol_types::Result<Self::Return> {
11461                <Self::ReturnTuple<
11462                    '_,
11463                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11464                    .map(|r| {
11465                        let r: permissionedProverReturn = r.into();
11466                        r._0
11467                    })
11468            }
11469        }
11470    };
11471    #[derive(serde::Serialize, serde::Deserialize)]
11472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11473    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11474```solidity
11475function proxiableUUID() external view returns (bytes32);
11476```*/
11477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11478    #[derive(Clone)]
11479    pub struct proxiableUUIDCall;
11480    #[derive(serde::Serialize, serde::Deserialize)]
11481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11482    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11484    #[derive(Clone)]
11485    pub struct proxiableUUIDReturn {
11486        #[allow(missing_docs)]
11487        pub _0: alloy::sol_types::private::FixedBytes<32>,
11488    }
11489    #[allow(
11490        non_camel_case_types,
11491        non_snake_case,
11492        clippy::pub_underscore_fields,
11493        clippy::style
11494    )]
11495    const _: () = {
11496        use alloy::sol_types as alloy_sol_types;
11497        {
11498            #[doc(hidden)]
11499            #[allow(dead_code)]
11500            type UnderlyingSolTuple<'a> = ();
11501            #[doc(hidden)]
11502            type UnderlyingRustTuple<'a> = ();
11503            #[cfg(test)]
11504            #[allow(dead_code, unreachable_patterns)]
11505            fn _type_assertion(
11506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11507            ) {
11508                match _t {
11509                    alloy_sol_types::private::AssertTypeEq::<
11510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11511                    >(_) => {}
11512                }
11513            }
11514            #[automatically_derived]
11515            #[doc(hidden)]
11516            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11517                fn from(value: proxiableUUIDCall) -> Self {
11518                    ()
11519                }
11520            }
11521            #[automatically_derived]
11522            #[doc(hidden)]
11523            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11524                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11525                    Self
11526                }
11527            }
11528        }
11529        {
11530            #[doc(hidden)]
11531            #[allow(dead_code)]
11532            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11533            #[doc(hidden)]
11534            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11535            #[cfg(test)]
11536            #[allow(dead_code, unreachable_patterns)]
11537            fn _type_assertion(
11538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11539            ) {
11540                match _t {
11541                    alloy_sol_types::private::AssertTypeEq::<
11542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11543                    >(_) => {}
11544                }
11545            }
11546            #[automatically_derived]
11547            #[doc(hidden)]
11548            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11549                fn from(value: proxiableUUIDReturn) -> Self {
11550                    (value._0,)
11551                }
11552            }
11553            #[automatically_derived]
11554            #[doc(hidden)]
11555            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11557                    Self { _0: tuple.0 }
11558                }
11559            }
11560        }
11561        #[automatically_derived]
11562        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11563            type Parameters<'a> = ();
11564            type Token<'a> = <Self::Parameters<
11565                'a,
11566            > as alloy_sol_types::SolType>::Token<'a>;
11567            type Return = alloy::sol_types::private::FixedBytes<32>;
11568            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11569            type ReturnToken<'a> = <Self::ReturnTuple<
11570                'a,
11571            > as alloy_sol_types::SolType>::Token<'a>;
11572            const SIGNATURE: &'static str = "proxiableUUID()";
11573            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11574            #[inline]
11575            fn new<'a>(
11576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11577            ) -> Self {
11578                tuple.into()
11579            }
11580            #[inline]
11581            fn tokenize(&self) -> Self::Token<'_> {
11582                ()
11583            }
11584            #[inline]
11585            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11586                (
11587                    <alloy::sol_types::sol_data::FixedBytes<
11588                        32,
11589                    > as alloy_sol_types::SolType>::tokenize(ret),
11590                )
11591            }
11592            #[inline]
11593            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11594                <Self::ReturnTuple<
11595                    '_,
11596                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11597                    .map(|r| {
11598                        let r: proxiableUUIDReturn = r.into();
11599                        r._0
11600                    })
11601            }
11602            #[inline]
11603            fn abi_decode_returns_validate(
11604                data: &[u8],
11605            ) -> alloy_sol_types::Result<Self::Return> {
11606                <Self::ReturnTuple<
11607                    '_,
11608                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11609                    .map(|r| {
11610                        let r: proxiableUUIDReturn = r.into();
11611                        r._0
11612                    })
11613            }
11614        }
11615    };
11616    #[derive(serde::Serialize, serde::Deserialize)]
11617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11618    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11619```solidity
11620function renounceOwnership() external;
11621```*/
11622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11623    #[derive(Clone)]
11624    pub struct renounceOwnershipCall;
11625    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11627    #[derive(Clone)]
11628    pub struct renounceOwnershipReturn {}
11629    #[allow(
11630        non_camel_case_types,
11631        non_snake_case,
11632        clippy::pub_underscore_fields,
11633        clippy::style
11634    )]
11635    const _: () = {
11636        use alloy::sol_types as alloy_sol_types;
11637        {
11638            #[doc(hidden)]
11639            #[allow(dead_code)]
11640            type UnderlyingSolTuple<'a> = ();
11641            #[doc(hidden)]
11642            type UnderlyingRustTuple<'a> = ();
11643            #[cfg(test)]
11644            #[allow(dead_code, unreachable_patterns)]
11645            fn _type_assertion(
11646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11647            ) {
11648                match _t {
11649                    alloy_sol_types::private::AssertTypeEq::<
11650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11651                    >(_) => {}
11652                }
11653            }
11654            #[automatically_derived]
11655            #[doc(hidden)]
11656            impl ::core::convert::From<renounceOwnershipCall>
11657            for UnderlyingRustTuple<'_> {
11658                fn from(value: renounceOwnershipCall) -> Self {
11659                    ()
11660                }
11661            }
11662            #[automatically_derived]
11663            #[doc(hidden)]
11664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11665            for renounceOwnershipCall {
11666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11667                    Self
11668                }
11669            }
11670        }
11671        {
11672            #[doc(hidden)]
11673            #[allow(dead_code)]
11674            type UnderlyingSolTuple<'a> = ();
11675            #[doc(hidden)]
11676            type UnderlyingRustTuple<'a> = ();
11677            #[cfg(test)]
11678            #[allow(dead_code, unreachable_patterns)]
11679            fn _type_assertion(
11680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11681            ) {
11682                match _t {
11683                    alloy_sol_types::private::AssertTypeEq::<
11684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11685                    >(_) => {}
11686                }
11687            }
11688            #[automatically_derived]
11689            #[doc(hidden)]
11690            impl ::core::convert::From<renounceOwnershipReturn>
11691            for UnderlyingRustTuple<'_> {
11692                fn from(value: renounceOwnershipReturn) -> Self {
11693                    ()
11694                }
11695            }
11696            #[automatically_derived]
11697            #[doc(hidden)]
11698            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11699            for renounceOwnershipReturn {
11700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11701                    Self {}
11702                }
11703            }
11704        }
11705        impl renounceOwnershipReturn {
11706            fn _tokenize(
11707                &self,
11708            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11709                ()
11710            }
11711        }
11712        #[automatically_derived]
11713        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11714            type Parameters<'a> = ();
11715            type Token<'a> = <Self::Parameters<
11716                'a,
11717            > as alloy_sol_types::SolType>::Token<'a>;
11718            type Return = renounceOwnershipReturn;
11719            type ReturnTuple<'a> = ();
11720            type ReturnToken<'a> = <Self::ReturnTuple<
11721                'a,
11722            > as alloy_sol_types::SolType>::Token<'a>;
11723            const SIGNATURE: &'static str = "renounceOwnership()";
11724            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11725            #[inline]
11726            fn new<'a>(
11727                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11728            ) -> Self {
11729                tuple.into()
11730            }
11731            #[inline]
11732            fn tokenize(&self) -> Self::Token<'_> {
11733                ()
11734            }
11735            #[inline]
11736            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11737                renounceOwnershipReturn::_tokenize(ret)
11738            }
11739            #[inline]
11740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11741                <Self::ReturnTuple<
11742                    '_,
11743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11744                    .map(Into::into)
11745            }
11746            #[inline]
11747            fn abi_decode_returns_validate(
11748                data: &[u8],
11749            ) -> alloy_sol_types::Result<Self::Return> {
11750                <Self::ReturnTuple<
11751                    '_,
11752                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11753                    .map(Into::into)
11754            }
11755        }
11756    };
11757    #[derive(serde::Serialize, serde::Deserialize)]
11758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11759    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
11760```solidity
11761function setPermissionedProver(address prover) external;
11762```*/
11763    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11764    #[derive(Clone)]
11765    pub struct setPermissionedProverCall {
11766        #[allow(missing_docs)]
11767        pub prover: alloy::sol_types::private::Address,
11768    }
11769    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
11770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11771    #[derive(Clone)]
11772    pub struct setPermissionedProverReturn {}
11773    #[allow(
11774        non_camel_case_types,
11775        non_snake_case,
11776        clippy::pub_underscore_fields,
11777        clippy::style
11778    )]
11779    const _: () = {
11780        use alloy::sol_types as alloy_sol_types;
11781        {
11782            #[doc(hidden)]
11783            #[allow(dead_code)]
11784            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11785            #[doc(hidden)]
11786            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11787            #[cfg(test)]
11788            #[allow(dead_code, unreachable_patterns)]
11789            fn _type_assertion(
11790                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11791            ) {
11792                match _t {
11793                    alloy_sol_types::private::AssertTypeEq::<
11794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11795                    >(_) => {}
11796                }
11797            }
11798            #[automatically_derived]
11799            #[doc(hidden)]
11800            impl ::core::convert::From<setPermissionedProverCall>
11801            for UnderlyingRustTuple<'_> {
11802                fn from(value: setPermissionedProverCall) -> Self {
11803                    (value.prover,)
11804                }
11805            }
11806            #[automatically_derived]
11807            #[doc(hidden)]
11808            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11809            for setPermissionedProverCall {
11810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11811                    Self { prover: tuple.0 }
11812                }
11813            }
11814        }
11815        {
11816            #[doc(hidden)]
11817            #[allow(dead_code)]
11818            type UnderlyingSolTuple<'a> = ();
11819            #[doc(hidden)]
11820            type UnderlyingRustTuple<'a> = ();
11821            #[cfg(test)]
11822            #[allow(dead_code, unreachable_patterns)]
11823            fn _type_assertion(
11824                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11825            ) {
11826                match _t {
11827                    alloy_sol_types::private::AssertTypeEq::<
11828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11829                    >(_) => {}
11830                }
11831            }
11832            #[automatically_derived]
11833            #[doc(hidden)]
11834            impl ::core::convert::From<setPermissionedProverReturn>
11835            for UnderlyingRustTuple<'_> {
11836                fn from(value: setPermissionedProverReturn) -> Self {
11837                    ()
11838                }
11839            }
11840            #[automatically_derived]
11841            #[doc(hidden)]
11842            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11843            for setPermissionedProverReturn {
11844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11845                    Self {}
11846                }
11847            }
11848        }
11849        impl setPermissionedProverReturn {
11850            fn _tokenize(
11851                &self,
11852            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
11853                '_,
11854            > {
11855                ()
11856            }
11857        }
11858        #[automatically_derived]
11859        impl alloy_sol_types::SolCall for setPermissionedProverCall {
11860            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11861            type Token<'a> = <Self::Parameters<
11862                'a,
11863            > as alloy_sol_types::SolType>::Token<'a>;
11864            type Return = setPermissionedProverReturn;
11865            type ReturnTuple<'a> = ();
11866            type ReturnToken<'a> = <Self::ReturnTuple<
11867                'a,
11868            > as alloy_sol_types::SolType>::Token<'a>;
11869            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11870            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11871            #[inline]
11872            fn new<'a>(
11873                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11874            ) -> Self {
11875                tuple.into()
11876            }
11877            #[inline]
11878            fn tokenize(&self) -> Self::Token<'_> {
11879                (
11880                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11881                        &self.prover,
11882                    ),
11883                )
11884            }
11885            #[inline]
11886            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11887                setPermissionedProverReturn::_tokenize(ret)
11888            }
11889            #[inline]
11890            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11891                <Self::ReturnTuple<
11892                    '_,
11893                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11894                    .map(Into::into)
11895            }
11896            #[inline]
11897            fn abi_decode_returns_validate(
11898                data: &[u8],
11899            ) -> alloy_sol_types::Result<Self::Return> {
11900                <Self::ReturnTuple<
11901                    '_,
11902                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11903                    .map(Into::into)
11904            }
11905        }
11906    };
11907    #[derive(serde::Serialize, serde::Deserialize)]
11908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11909    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
11910```solidity
11911function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
11912```*/
11913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11914    #[derive(Clone)]
11915    pub struct setStateHistoryRetentionPeriodCall {
11916        #[allow(missing_docs)]
11917        pub historySeconds: u32,
11918    }
11919    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
11920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11921    #[derive(Clone)]
11922    pub struct setStateHistoryRetentionPeriodReturn {}
11923    #[allow(
11924        non_camel_case_types,
11925        non_snake_case,
11926        clippy::pub_underscore_fields,
11927        clippy::style
11928    )]
11929    const _: () = {
11930        use alloy::sol_types as alloy_sol_types;
11931        {
11932            #[doc(hidden)]
11933            #[allow(dead_code)]
11934            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11935            #[doc(hidden)]
11936            type UnderlyingRustTuple<'a> = (u32,);
11937            #[cfg(test)]
11938            #[allow(dead_code, unreachable_patterns)]
11939            fn _type_assertion(
11940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11941            ) {
11942                match _t {
11943                    alloy_sol_types::private::AssertTypeEq::<
11944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11945                    >(_) => {}
11946                }
11947            }
11948            #[automatically_derived]
11949            #[doc(hidden)]
11950            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
11951            for UnderlyingRustTuple<'_> {
11952                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
11953                    (value.historySeconds,)
11954                }
11955            }
11956            #[automatically_derived]
11957            #[doc(hidden)]
11958            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11959            for setStateHistoryRetentionPeriodCall {
11960                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11961                    Self { historySeconds: tuple.0 }
11962                }
11963            }
11964        }
11965        {
11966            #[doc(hidden)]
11967            #[allow(dead_code)]
11968            type UnderlyingSolTuple<'a> = ();
11969            #[doc(hidden)]
11970            type UnderlyingRustTuple<'a> = ();
11971            #[cfg(test)]
11972            #[allow(dead_code, unreachable_patterns)]
11973            fn _type_assertion(
11974                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11975            ) {
11976                match _t {
11977                    alloy_sol_types::private::AssertTypeEq::<
11978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11979                    >(_) => {}
11980                }
11981            }
11982            #[automatically_derived]
11983            #[doc(hidden)]
11984            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
11985            for UnderlyingRustTuple<'_> {
11986                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
11987                    ()
11988                }
11989            }
11990            #[automatically_derived]
11991            #[doc(hidden)]
11992            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11993            for setStateHistoryRetentionPeriodReturn {
11994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11995                    Self {}
11996                }
11997            }
11998        }
11999        impl setStateHistoryRetentionPeriodReturn {
12000            fn _tokenize(
12001                &self,
12002            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12003                '_,
12004            > {
12005                ()
12006            }
12007        }
12008        #[automatically_derived]
12009        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12010            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12011            type Token<'a> = <Self::Parameters<
12012                'a,
12013            > as alloy_sol_types::SolType>::Token<'a>;
12014            type Return = setStateHistoryRetentionPeriodReturn;
12015            type ReturnTuple<'a> = ();
12016            type ReturnToken<'a> = <Self::ReturnTuple<
12017                'a,
12018            > as alloy_sol_types::SolType>::Token<'a>;
12019            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12020            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12021            #[inline]
12022            fn new<'a>(
12023                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12024            ) -> Self {
12025                tuple.into()
12026            }
12027            #[inline]
12028            fn tokenize(&self) -> Self::Token<'_> {
12029                (
12030                    <alloy::sol_types::sol_data::Uint<
12031                        32,
12032                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12033                )
12034            }
12035            #[inline]
12036            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12037                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
12038            }
12039            #[inline]
12040            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12041                <Self::ReturnTuple<
12042                    '_,
12043                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12044                    .map(Into::into)
12045            }
12046            #[inline]
12047            fn abi_decode_returns_validate(
12048                data: &[u8],
12049            ) -> alloy_sol_types::Result<Self::Return> {
12050                <Self::ReturnTuple<
12051                    '_,
12052                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12053                    .map(Into::into)
12054            }
12055        }
12056    };
12057    #[derive(serde::Serialize, serde::Deserialize)]
12058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12059    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12060```solidity
12061function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12062```*/
12063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12064    #[derive(Clone)]
12065    pub struct setstateHistoryRetentionPeriodCall {
12066        #[allow(missing_docs)]
12067        pub historySeconds: u32,
12068    }
12069    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12071    #[derive(Clone)]
12072    pub struct setstateHistoryRetentionPeriodReturn {}
12073    #[allow(
12074        non_camel_case_types,
12075        non_snake_case,
12076        clippy::pub_underscore_fields,
12077        clippy::style
12078    )]
12079    const _: () = {
12080        use alloy::sol_types as alloy_sol_types;
12081        {
12082            #[doc(hidden)]
12083            #[allow(dead_code)]
12084            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12085            #[doc(hidden)]
12086            type UnderlyingRustTuple<'a> = (u32,);
12087            #[cfg(test)]
12088            #[allow(dead_code, unreachable_patterns)]
12089            fn _type_assertion(
12090                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12091            ) {
12092                match _t {
12093                    alloy_sol_types::private::AssertTypeEq::<
12094                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12095                    >(_) => {}
12096                }
12097            }
12098            #[automatically_derived]
12099            #[doc(hidden)]
12100            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12101            for UnderlyingRustTuple<'_> {
12102                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12103                    (value.historySeconds,)
12104                }
12105            }
12106            #[automatically_derived]
12107            #[doc(hidden)]
12108            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12109            for setstateHistoryRetentionPeriodCall {
12110                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12111                    Self { historySeconds: tuple.0 }
12112                }
12113            }
12114        }
12115        {
12116            #[doc(hidden)]
12117            #[allow(dead_code)]
12118            type UnderlyingSolTuple<'a> = ();
12119            #[doc(hidden)]
12120            type UnderlyingRustTuple<'a> = ();
12121            #[cfg(test)]
12122            #[allow(dead_code, unreachable_patterns)]
12123            fn _type_assertion(
12124                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12125            ) {
12126                match _t {
12127                    alloy_sol_types::private::AssertTypeEq::<
12128                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12129                    >(_) => {}
12130                }
12131            }
12132            #[automatically_derived]
12133            #[doc(hidden)]
12134            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12135            for UnderlyingRustTuple<'_> {
12136                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12137                    ()
12138                }
12139            }
12140            #[automatically_derived]
12141            #[doc(hidden)]
12142            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12143            for setstateHistoryRetentionPeriodReturn {
12144                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12145                    Self {}
12146                }
12147            }
12148        }
12149        impl setstateHistoryRetentionPeriodReturn {
12150            fn _tokenize(
12151                &self,
12152            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12153                '_,
12154            > {
12155                ()
12156            }
12157        }
12158        #[automatically_derived]
12159        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12160            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12161            type Token<'a> = <Self::Parameters<
12162                'a,
12163            > as alloy_sol_types::SolType>::Token<'a>;
12164            type Return = setstateHistoryRetentionPeriodReturn;
12165            type ReturnTuple<'a> = ();
12166            type ReturnToken<'a> = <Self::ReturnTuple<
12167                'a,
12168            > as alloy_sol_types::SolType>::Token<'a>;
12169            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12170            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12171            #[inline]
12172            fn new<'a>(
12173                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12174            ) -> Self {
12175                tuple.into()
12176            }
12177            #[inline]
12178            fn tokenize(&self) -> Self::Token<'_> {
12179                (
12180                    <alloy::sol_types::sol_data::Uint<
12181                        32,
12182                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12183                )
12184            }
12185            #[inline]
12186            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12187                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12188            }
12189            #[inline]
12190            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12191                <Self::ReturnTuple<
12192                    '_,
12193                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12194                    .map(Into::into)
12195            }
12196            #[inline]
12197            fn abi_decode_returns_validate(
12198                data: &[u8],
12199            ) -> alloy_sol_types::Result<Self::Return> {
12200                <Self::ReturnTuple<
12201                    '_,
12202                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12203                    .map(Into::into)
12204            }
12205        }
12206    };
12207    #[derive(serde::Serialize, serde::Deserialize)]
12208    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12209    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12210```solidity
12211function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12212```*/
12213    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12214    #[derive(Clone)]
12215    pub struct stateHistoryCommitmentsCall(
12216        pub alloy::sol_types::private::primitives::aliases::U256,
12217    );
12218    #[derive(serde::Serialize, serde::Deserialize)]
12219    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12220    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12222    #[derive(Clone)]
12223    pub struct stateHistoryCommitmentsReturn {
12224        #[allow(missing_docs)]
12225        pub l1BlockHeight: u64,
12226        #[allow(missing_docs)]
12227        pub l1BlockTimestamp: u64,
12228        #[allow(missing_docs)]
12229        pub hotShotBlockHeight: u64,
12230        #[allow(missing_docs)]
12231        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12232    }
12233    #[allow(
12234        non_camel_case_types,
12235        non_snake_case,
12236        clippy::pub_underscore_fields,
12237        clippy::style
12238    )]
12239    const _: () = {
12240        use alloy::sol_types as alloy_sol_types;
12241        {
12242            #[doc(hidden)]
12243            #[allow(dead_code)]
12244            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12245            #[doc(hidden)]
12246            type UnderlyingRustTuple<'a> = (
12247                alloy::sol_types::private::primitives::aliases::U256,
12248            );
12249            #[cfg(test)]
12250            #[allow(dead_code, unreachable_patterns)]
12251            fn _type_assertion(
12252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12253            ) {
12254                match _t {
12255                    alloy_sol_types::private::AssertTypeEq::<
12256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12257                    >(_) => {}
12258                }
12259            }
12260            #[automatically_derived]
12261            #[doc(hidden)]
12262            impl ::core::convert::From<stateHistoryCommitmentsCall>
12263            for UnderlyingRustTuple<'_> {
12264                fn from(value: stateHistoryCommitmentsCall) -> Self {
12265                    (value.0,)
12266                }
12267            }
12268            #[automatically_derived]
12269            #[doc(hidden)]
12270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12271            for stateHistoryCommitmentsCall {
12272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12273                    Self(tuple.0)
12274                }
12275            }
12276        }
12277        {
12278            #[doc(hidden)]
12279            #[allow(dead_code)]
12280            type UnderlyingSolTuple<'a> = (
12281                alloy::sol_types::sol_data::Uint<64>,
12282                alloy::sol_types::sol_data::Uint<64>,
12283                alloy::sol_types::sol_data::Uint<64>,
12284                BN254::ScalarField,
12285            );
12286            #[doc(hidden)]
12287            type UnderlyingRustTuple<'a> = (
12288                u64,
12289                u64,
12290                u64,
12291                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12292            );
12293            #[cfg(test)]
12294            #[allow(dead_code, unreachable_patterns)]
12295            fn _type_assertion(
12296                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12297            ) {
12298                match _t {
12299                    alloy_sol_types::private::AssertTypeEq::<
12300                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12301                    >(_) => {}
12302                }
12303            }
12304            #[automatically_derived]
12305            #[doc(hidden)]
12306            impl ::core::convert::From<stateHistoryCommitmentsReturn>
12307            for UnderlyingRustTuple<'_> {
12308                fn from(value: stateHistoryCommitmentsReturn) -> Self {
12309                    (
12310                        value.l1BlockHeight,
12311                        value.l1BlockTimestamp,
12312                        value.hotShotBlockHeight,
12313                        value.hotShotBlockCommRoot,
12314                    )
12315                }
12316            }
12317            #[automatically_derived]
12318            #[doc(hidden)]
12319            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12320            for stateHistoryCommitmentsReturn {
12321                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12322                    Self {
12323                        l1BlockHeight: tuple.0,
12324                        l1BlockTimestamp: tuple.1,
12325                        hotShotBlockHeight: tuple.2,
12326                        hotShotBlockCommRoot: tuple.3,
12327                    }
12328                }
12329            }
12330        }
12331        impl stateHistoryCommitmentsReturn {
12332            fn _tokenize(
12333                &self,
12334            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
12335                '_,
12336            > {
12337                (
12338                    <alloy::sol_types::sol_data::Uint<
12339                        64,
12340                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
12341                    <alloy::sol_types::sol_data::Uint<
12342                        64,
12343                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
12344                    <alloy::sol_types::sol_data::Uint<
12345                        64,
12346                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
12347                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
12348                        &self.hotShotBlockCommRoot,
12349                    ),
12350                )
12351            }
12352        }
12353        #[automatically_derived]
12354        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12355            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12356            type Token<'a> = <Self::Parameters<
12357                'a,
12358            > as alloy_sol_types::SolType>::Token<'a>;
12359            type Return = stateHistoryCommitmentsReturn;
12360            type ReturnTuple<'a> = (
12361                alloy::sol_types::sol_data::Uint<64>,
12362                alloy::sol_types::sol_data::Uint<64>,
12363                alloy::sol_types::sol_data::Uint<64>,
12364                BN254::ScalarField,
12365            );
12366            type ReturnToken<'a> = <Self::ReturnTuple<
12367                'a,
12368            > as alloy_sol_types::SolType>::Token<'a>;
12369            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12370            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12371            #[inline]
12372            fn new<'a>(
12373                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12374            ) -> Self {
12375                tuple.into()
12376            }
12377            #[inline]
12378            fn tokenize(&self) -> Self::Token<'_> {
12379                (
12380                    <alloy::sol_types::sol_data::Uint<
12381                        256,
12382                    > as alloy_sol_types::SolType>::tokenize(&self.0),
12383                )
12384            }
12385            #[inline]
12386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12387                stateHistoryCommitmentsReturn::_tokenize(ret)
12388            }
12389            #[inline]
12390            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12391                <Self::ReturnTuple<
12392                    '_,
12393                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12394                    .map(Into::into)
12395            }
12396            #[inline]
12397            fn abi_decode_returns_validate(
12398                data: &[u8],
12399            ) -> alloy_sol_types::Result<Self::Return> {
12400                <Self::ReturnTuple<
12401                    '_,
12402                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12403                    .map(Into::into)
12404            }
12405        }
12406    };
12407    #[derive(serde::Serialize, serde::Deserialize)]
12408    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12409    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12410```solidity
12411function stateHistoryFirstIndex() external view returns (uint64);
12412```*/
12413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12414    #[derive(Clone)]
12415    pub struct stateHistoryFirstIndexCall;
12416    #[derive(serde::Serialize, serde::Deserialize)]
12417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12418    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12420    #[derive(Clone)]
12421    pub struct stateHistoryFirstIndexReturn {
12422        #[allow(missing_docs)]
12423        pub _0: u64,
12424    }
12425    #[allow(
12426        non_camel_case_types,
12427        non_snake_case,
12428        clippy::pub_underscore_fields,
12429        clippy::style
12430    )]
12431    const _: () = {
12432        use alloy::sol_types as alloy_sol_types;
12433        {
12434            #[doc(hidden)]
12435            #[allow(dead_code)]
12436            type UnderlyingSolTuple<'a> = ();
12437            #[doc(hidden)]
12438            type UnderlyingRustTuple<'a> = ();
12439            #[cfg(test)]
12440            #[allow(dead_code, unreachable_patterns)]
12441            fn _type_assertion(
12442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12443            ) {
12444                match _t {
12445                    alloy_sol_types::private::AssertTypeEq::<
12446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12447                    >(_) => {}
12448                }
12449            }
12450            #[automatically_derived]
12451            #[doc(hidden)]
12452            impl ::core::convert::From<stateHistoryFirstIndexCall>
12453            for UnderlyingRustTuple<'_> {
12454                fn from(value: stateHistoryFirstIndexCall) -> Self {
12455                    ()
12456                }
12457            }
12458            #[automatically_derived]
12459            #[doc(hidden)]
12460            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12461            for stateHistoryFirstIndexCall {
12462                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12463                    Self
12464                }
12465            }
12466        }
12467        {
12468            #[doc(hidden)]
12469            #[allow(dead_code)]
12470            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12471            #[doc(hidden)]
12472            type UnderlyingRustTuple<'a> = (u64,);
12473            #[cfg(test)]
12474            #[allow(dead_code, unreachable_patterns)]
12475            fn _type_assertion(
12476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12477            ) {
12478                match _t {
12479                    alloy_sol_types::private::AssertTypeEq::<
12480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12481                    >(_) => {}
12482                }
12483            }
12484            #[automatically_derived]
12485            #[doc(hidden)]
12486            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12487            for UnderlyingRustTuple<'_> {
12488                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12489                    (value._0,)
12490                }
12491            }
12492            #[automatically_derived]
12493            #[doc(hidden)]
12494            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12495            for stateHistoryFirstIndexReturn {
12496                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12497                    Self { _0: tuple.0 }
12498                }
12499            }
12500        }
12501        #[automatically_derived]
12502        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12503            type Parameters<'a> = ();
12504            type Token<'a> = <Self::Parameters<
12505                'a,
12506            > as alloy_sol_types::SolType>::Token<'a>;
12507            type Return = u64;
12508            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12509            type ReturnToken<'a> = <Self::ReturnTuple<
12510                'a,
12511            > as alloy_sol_types::SolType>::Token<'a>;
12512            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12513            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12514            #[inline]
12515            fn new<'a>(
12516                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12517            ) -> Self {
12518                tuple.into()
12519            }
12520            #[inline]
12521            fn tokenize(&self) -> Self::Token<'_> {
12522                ()
12523            }
12524            #[inline]
12525            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12526                (
12527                    <alloy::sol_types::sol_data::Uint<
12528                        64,
12529                    > as alloy_sol_types::SolType>::tokenize(ret),
12530                )
12531            }
12532            #[inline]
12533            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12534                <Self::ReturnTuple<
12535                    '_,
12536                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12537                    .map(|r| {
12538                        let r: stateHistoryFirstIndexReturn = r.into();
12539                        r._0
12540                    })
12541            }
12542            #[inline]
12543            fn abi_decode_returns_validate(
12544                data: &[u8],
12545            ) -> alloy_sol_types::Result<Self::Return> {
12546                <Self::ReturnTuple<
12547                    '_,
12548                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12549                    .map(|r| {
12550                        let r: stateHistoryFirstIndexReturn = r.into();
12551                        r._0
12552                    })
12553            }
12554        }
12555    };
12556    #[derive(serde::Serialize, serde::Deserialize)]
12557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12558    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12559```solidity
12560function stateHistoryRetentionPeriod() external view returns (uint32);
12561```*/
12562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12563    #[derive(Clone)]
12564    pub struct stateHistoryRetentionPeriodCall;
12565    #[derive(serde::Serialize, serde::Deserialize)]
12566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12567    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12569    #[derive(Clone)]
12570    pub struct stateHistoryRetentionPeriodReturn {
12571        #[allow(missing_docs)]
12572        pub _0: u32,
12573    }
12574    #[allow(
12575        non_camel_case_types,
12576        non_snake_case,
12577        clippy::pub_underscore_fields,
12578        clippy::style
12579    )]
12580    const _: () = {
12581        use alloy::sol_types as alloy_sol_types;
12582        {
12583            #[doc(hidden)]
12584            #[allow(dead_code)]
12585            type UnderlyingSolTuple<'a> = ();
12586            #[doc(hidden)]
12587            type UnderlyingRustTuple<'a> = ();
12588            #[cfg(test)]
12589            #[allow(dead_code, unreachable_patterns)]
12590            fn _type_assertion(
12591                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12592            ) {
12593                match _t {
12594                    alloy_sol_types::private::AssertTypeEq::<
12595                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12596                    >(_) => {}
12597                }
12598            }
12599            #[automatically_derived]
12600            #[doc(hidden)]
12601            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
12602            for UnderlyingRustTuple<'_> {
12603                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
12604                    ()
12605                }
12606            }
12607            #[automatically_derived]
12608            #[doc(hidden)]
12609            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12610            for stateHistoryRetentionPeriodCall {
12611                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12612                    Self
12613                }
12614            }
12615        }
12616        {
12617            #[doc(hidden)]
12618            #[allow(dead_code)]
12619            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12620            #[doc(hidden)]
12621            type UnderlyingRustTuple<'a> = (u32,);
12622            #[cfg(test)]
12623            #[allow(dead_code, unreachable_patterns)]
12624            fn _type_assertion(
12625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12626            ) {
12627                match _t {
12628                    alloy_sol_types::private::AssertTypeEq::<
12629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12630                    >(_) => {}
12631                }
12632            }
12633            #[automatically_derived]
12634            #[doc(hidden)]
12635            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
12636            for UnderlyingRustTuple<'_> {
12637                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
12638                    (value._0,)
12639                }
12640            }
12641            #[automatically_derived]
12642            #[doc(hidden)]
12643            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12644            for stateHistoryRetentionPeriodReturn {
12645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12646                    Self { _0: tuple.0 }
12647                }
12648            }
12649        }
12650        #[automatically_derived]
12651        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
12652            type Parameters<'a> = ();
12653            type Token<'a> = <Self::Parameters<
12654                'a,
12655            > as alloy_sol_types::SolType>::Token<'a>;
12656            type Return = u32;
12657            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12658            type ReturnToken<'a> = <Self::ReturnTuple<
12659                'a,
12660            > as alloy_sol_types::SolType>::Token<'a>;
12661            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
12662            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
12663            #[inline]
12664            fn new<'a>(
12665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12666            ) -> Self {
12667                tuple.into()
12668            }
12669            #[inline]
12670            fn tokenize(&self) -> Self::Token<'_> {
12671                ()
12672            }
12673            #[inline]
12674            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12675                (
12676                    <alloy::sol_types::sol_data::Uint<
12677                        32,
12678                    > as alloy_sol_types::SolType>::tokenize(ret),
12679                )
12680            }
12681            #[inline]
12682            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12683                <Self::ReturnTuple<
12684                    '_,
12685                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12686                    .map(|r| {
12687                        let r: stateHistoryRetentionPeriodReturn = r.into();
12688                        r._0
12689                    })
12690            }
12691            #[inline]
12692            fn abi_decode_returns_validate(
12693                data: &[u8],
12694            ) -> alloy_sol_types::Result<Self::Return> {
12695                <Self::ReturnTuple<
12696                    '_,
12697                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12698                    .map(|r| {
12699                        let r: stateHistoryRetentionPeriodReturn = r.into();
12700                        r._0
12701                    })
12702            }
12703        }
12704    };
12705    #[derive(serde::Serialize, serde::Deserialize)]
12706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12707    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12708```solidity
12709function transferOwnership(address newOwner) external;
12710```*/
12711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12712    #[derive(Clone)]
12713    pub struct transferOwnershipCall {
12714        #[allow(missing_docs)]
12715        pub newOwner: alloy::sol_types::private::Address,
12716    }
12717    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12719    #[derive(Clone)]
12720    pub struct transferOwnershipReturn {}
12721    #[allow(
12722        non_camel_case_types,
12723        non_snake_case,
12724        clippy::pub_underscore_fields,
12725        clippy::style
12726    )]
12727    const _: () = {
12728        use alloy::sol_types as alloy_sol_types;
12729        {
12730            #[doc(hidden)]
12731            #[allow(dead_code)]
12732            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12733            #[doc(hidden)]
12734            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12735            #[cfg(test)]
12736            #[allow(dead_code, unreachable_patterns)]
12737            fn _type_assertion(
12738                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12739            ) {
12740                match _t {
12741                    alloy_sol_types::private::AssertTypeEq::<
12742                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12743                    >(_) => {}
12744                }
12745            }
12746            #[automatically_derived]
12747            #[doc(hidden)]
12748            impl ::core::convert::From<transferOwnershipCall>
12749            for UnderlyingRustTuple<'_> {
12750                fn from(value: transferOwnershipCall) -> Self {
12751                    (value.newOwner,)
12752                }
12753            }
12754            #[automatically_derived]
12755            #[doc(hidden)]
12756            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12757            for transferOwnershipCall {
12758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12759                    Self { newOwner: tuple.0 }
12760                }
12761            }
12762        }
12763        {
12764            #[doc(hidden)]
12765            #[allow(dead_code)]
12766            type UnderlyingSolTuple<'a> = ();
12767            #[doc(hidden)]
12768            type UnderlyingRustTuple<'a> = ();
12769            #[cfg(test)]
12770            #[allow(dead_code, unreachable_patterns)]
12771            fn _type_assertion(
12772                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12773            ) {
12774                match _t {
12775                    alloy_sol_types::private::AssertTypeEq::<
12776                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12777                    >(_) => {}
12778                }
12779            }
12780            #[automatically_derived]
12781            #[doc(hidden)]
12782            impl ::core::convert::From<transferOwnershipReturn>
12783            for UnderlyingRustTuple<'_> {
12784                fn from(value: transferOwnershipReturn) -> Self {
12785                    ()
12786                }
12787            }
12788            #[automatically_derived]
12789            #[doc(hidden)]
12790            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12791            for transferOwnershipReturn {
12792                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12793                    Self {}
12794                }
12795            }
12796        }
12797        impl transferOwnershipReturn {
12798            fn _tokenize(
12799                &self,
12800            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12801                ()
12802            }
12803        }
12804        #[automatically_derived]
12805        impl alloy_sol_types::SolCall for transferOwnershipCall {
12806            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12807            type Token<'a> = <Self::Parameters<
12808                'a,
12809            > as alloy_sol_types::SolType>::Token<'a>;
12810            type Return = transferOwnershipReturn;
12811            type ReturnTuple<'a> = ();
12812            type ReturnToken<'a> = <Self::ReturnTuple<
12813                'a,
12814            > as alloy_sol_types::SolType>::Token<'a>;
12815            const SIGNATURE: &'static str = "transferOwnership(address)";
12816            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12817            #[inline]
12818            fn new<'a>(
12819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12820            ) -> Self {
12821                tuple.into()
12822            }
12823            #[inline]
12824            fn tokenize(&self) -> Self::Token<'_> {
12825                (
12826                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12827                        &self.newOwner,
12828                    ),
12829                )
12830            }
12831            #[inline]
12832            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12833                transferOwnershipReturn::_tokenize(ret)
12834            }
12835            #[inline]
12836            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12837                <Self::ReturnTuple<
12838                    '_,
12839                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12840                    .map(Into::into)
12841            }
12842            #[inline]
12843            fn abi_decode_returns_validate(
12844                data: &[u8],
12845            ) -> alloy_sol_types::Result<Self::Return> {
12846                <Self::ReturnTuple<
12847                    '_,
12848                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12849                    .map(Into::into)
12850            }
12851        }
12852    };
12853    #[derive(serde::Serialize, serde::Deserialize)]
12854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12855    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12856```solidity
12857function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12858```*/
12859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12860    #[derive(Clone)]
12861    pub struct updateEpochStartBlockCall {
12862        #[allow(missing_docs)]
12863        pub newEpochStartBlock: u64,
12864    }
12865    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
12866    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12867    #[derive(Clone)]
12868    pub struct updateEpochStartBlockReturn {}
12869    #[allow(
12870        non_camel_case_types,
12871        non_snake_case,
12872        clippy::pub_underscore_fields,
12873        clippy::style
12874    )]
12875    const _: () = {
12876        use alloy::sol_types as alloy_sol_types;
12877        {
12878            #[doc(hidden)]
12879            #[allow(dead_code)]
12880            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12881            #[doc(hidden)]
12882            type UnderlyingRustTuple<'a> = (u64,);
12883            #[cfg(test)]
12884            #[allow(dead_code, unreachable_patterns)]
12885            fn _type_assertion(
12886                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12887            ) {
12888                match _t {
12889                    alloy_sol_types::private::AssertTypeEq::<
12890                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12891                    >(_) => {}
12892                }
12893            }
12894            #[automatically_derived]
12895            #[doc(hidden)]
12896            impl ::core::convert::From<updateEpochStartBlockCall>
12897            for UnderlyingRustTuple<'_> {
12898                fn from(value: updateEpochStartBlockCall) -> Self {
12899                    (value.newEpochStartBlock,)
12900                }
12901            }
12902            #[automatically_derived]
12903            #[doc(hidden)]
12904            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12905            for updateEpochStartBlockCall {
12906                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12907                    Self {
12908                        newEpochStartBlock: tuple.0,
12909                    }
12910                }
12911            }
12912        }
12913        {
12914            #[doc(hidden)]
12915            #[allow(dead_code)]
12916            type UnderlyingSolTuple<'a> = ();
12917            #[doc(hidden)]
12918            type UnderlyingRustTuple<'a> = ();
12919            #[cfg(test)]
12920            #[allow(dead_code, unreachable_patterns)]
12921            fn _type_assertion(
12922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12923            ) {
12924                match _t {
12925                    alloy_sol_types::private::AssertTypeEq::<
12926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12927                    >(_) => {}
12928                }
12929            }
12930            #[automatically_derived]
12931            #[doc(hidden)]
12932            impl ::core::convert::From<updateEpochStartBlockReturn>
12933            for UnderlyingRustTuple<'_> {
12934                fn from(value: updateEpochStartBlockReturn) -> Self {
12935                    ()
12936                }
12937            }
12938            #[automatically_derived]
12939            #[doc(hidden)]
12940            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12941            for updateEpochStartBlockReturn {
12942                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12943                    Self {}
12944                }
12945            }
12946        }
12947        impl updateEpochStartBlockReturn {
12948            fn _tokenize(
12949                &self,
12950            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
12951                '_,
12952            > {
12953                ()
12954            }
12955        }
12956        #[automatically_derived]
12957        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
12958            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12959            type Token<'a> = <Self::Parameters<
12960                'a,
12961            > as alloy_sol_types::SolType>::Token<'a>;
12962            type Return = updateEpochStartBlockReturn;
12963            type ReturnTuple<'a> = ();
12964            type ReturnToken<'a> = <Self::ReturnTuple<
12965                'a,
12966            > as alloy_sol_types::SolType>::Token<'a>;
12967            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
12968            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
12969            #[inline]
12970            fn new<'a>(
12971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12972            ) -> Self {
12973                tuple.into()
12974            }
12975            #[inline]
12976            fn tokenize(&self) -> Self::Token<'_> {
12977                (
12978                    <alloy::sol_types::sol_data::Uint<
12979                        64,
12980                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
12981                )
12982            }
12983            #[inline]
12984            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12985                updateEpochStartBlockReturn::_tokenize(ret)
12986            }
12987            #[inline]
12988            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12989                <Self::ReturnTuple<
12990                    '_,
12991                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12992                    .map(Into::into)
12993            }
12994            #[inline]
12995            fn abi_decode_returns_validate(
12996                data: &[u8],
12997            ) -> alloy_sol_types::Result<Self::Return> {
12998                <Self::ReturnTuple<
12999                    '_,
13000                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13001                    .map(Into::into)
13002            }
13003        }
13004    };
13005    #[derive(serde::Serialize, serde::Deserialize)]
13006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13007    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13008```solidity
13009function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13010```*/
13011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13012    #[derive(Clone)]
13013    pub struct upgradeToAndCallCall {
13014        #[allow(missing_docs)]
13015        pub newImplementation: alloy::sol_types::private::Address,
13016        #[allow(missing_docs)]
13017        pub data: alloy::sol_types::private::Bytes,
13018    }
13019    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13021    #[derive(Clone)]
13022    pub struct upgradeToAndCallReturn {}
13023    #[allow(
13024        non_camel_case_types,
13025        non_snake_case,
13026        clippy::pub_underscore_fields,
13027        clippy::style
13028    )]
13029    const _: () = {
13030        use alloy::sol_types as alloy_sol_types;
13031        {
13032            #[doc(hidden)]
13033            #[allow(dead_code)]
13034            type UnderlyingSolTuple<'a> = (
13035                alloy::sol_types::sol_data::Address,
13036                alloy::sol_types::sol_data::Bytes,
13037            );
13038            #[doc(hidden)]
13039            type UnderlyingRustTuple<'a> = (
13040                alloy::sol_types::private::Address,
13041                alloy::sol_types::private::Bytes,
13042            );
13043            #[cfg(test)]
13044            #[allow(dead_code, unreachable_patterns)]
13045            fn _type_assertion(
13046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13047            ) {
13048                match _t {
13049                    alloy_sol_types::private::AssertTypeEq::<
13050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13051                    >(_) => {}
13052                }
13053            }
13054            #[automatically_derived]
13055            #[doc(hidden)]
13056            impl ::core::convert::From<upgradeToAndCallCall>
13057            for UnderlyingRustTuple<'_> {
13058                fn from(value: upgradeToAndCallCall) -> Self {
13059                    (value.newImplementation, value.data)
13060                }
13061            }
13062            #[automatically_derived]
13063            #[doc(hidden)]
13064            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13065            for upgradeToAndCallCall {
13066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13067                    Self {
13068                        newImplementation: tuple.0,
13069                        data: tuple.1,
13070                    }
13071                }
13072            }
13073        }
13074        {
13075            #[doc(hidden)]
13076            #[allow(dead_code)]
13077            type UnderlyingSolTuple<'a> = ();
13078            #[doc(hidden)]
13079            type UnderlyingRustTuple<'a> = ();
13080            #[cfg(test)]
13081            #[allow(dead_code, unreachable_patterns)]
13082            fn _type_assertion(
13083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13084            ) {
13085                match _t {
13086                    alloy_sol_types::private::AssertTypeEq::<
13087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13088                    >(_) => {}
13089                }
13090            }
13091            #[automatically_derived]
13092            #[doc(hidden)]
13093            impl ::core::convert::From<upgradeToAndCallReturn>
13094            for UnderlyingRustTuple<'_> {
13095                fn from(value: upgradeToAndCallReturn) -> Self {
13096                    ()
13097                }
13098            }
13099            #[automatically_derived]
13100            #[doc(hidden)]
13101            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13102            for upgradeToAndCallReturn {
13103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13104                    Self {}
13105                }
13106            }
13107        }
13108        impl upgradeToAndCallReturn {
13109            fn _tokenize(
13110                &self,
13111            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13112                ()
13113            }
13114        }
13115        #[automatically_derived]
13116        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13117            type Parameters<'a> = (
13118                alloy::sol_types::sol_data::Address,
13119                alloy::sol_types::sol_data::Bytes,
13120            );
13121            type Token<'a> = <Self::Parameters<
13122                'a,
13123            > as alloy_sol_types::SolType>::Token<'a>;
13124            type Return = upgradeToAndCallReturn;
13125            type ReturnTuple<'a> = ();
13126            type ReturnToken<'a> = <Self::ReturnTuple<
13127                'a,
13128            > as alloy_sol_types::SolType>::Token<'a>;
13129            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13130            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13131            #[inline]
13132            fn new<'a>(
13133                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13134            ) -> Self {
13135                tuple.into()
13136            }
13137            #[inline]
13138            fn tokenize(&self) -> Self::Token<'_> {
13139                (
13140                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13141                        &self.newImplementation,
13142                    ),
13143                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13144                        &self.data,
13145                    ),
13146                )
13147            }
13148            #[inline]
13149            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13150                upgradeToAndCallReturn::_tokenize(ret)
13151            }
13152            #[inline]
13153            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13154                <Self::ReturnTuple<
13155                    '_,
13156                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13157                    .map(Into::into)
13158            }
13159            #[inline]
13160            fn abi_decode_returns_validate(
13161                data: &[u8],
13162            ) -> alloy_sol_types::Result<Self::Return> {
13163                <Self::ReturnTuple<
13164                    '_,
13165                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13166                    .map(Into::into)
13167            }
13168        }
13169    };
13170    #[derive(serde::Serialize, serde::Deserialize)]
13171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13172    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13173```solidity
13174function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13175```*/
13176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13177    #[derive(Clone)]
13178    pub struct votingStakeTableStateCall;
13179    #[derive(serde::Serialize, serde::Deserialize)]
13180    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13181    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13182    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13183    #[derive(Clone)]
13184    pub struct votingStakeTableStateReturn {
13185        #[allow(missing_docs)]
13186        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13187        #[allow(missing_docs)]
13188        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13189        #[allow(missing_docs)]
13190        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13191        #[allow(missing_docs)]
13192        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13193    }
13194    #[allow(
13195        non_camel_case_types,
13196        non_snake_case,
13197        clippy::pub_underscore_fields,
13198        clippy::style
13199    )]
13200    const _: () = {
13201        use alloy::sol_types as alloy_sol_types;
13202        {
13203            #[doc(hidden)]
13204            #[allow(dead_code)]
13205            type UnderlyingSolTuple<'a> = ();
13206            #[doc(hidden)]
13207            type UnderlyingRustTuple<'a> = ();
13208            #[cfg(test)]
13209            #[allow(dead_code, unreachable_patterns)]
13210            fn _type_assertion(
13211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13212            ) {
13213                match _t {
13214                    alloy_sol_types::private::AssertTypeEq::<
13215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13216                    >(_) => {}
13217                }
13218            }
13219            #[automatically_derived]
13220            #[doc(hidden)]
13221            impl ::core::convert::From<votingStakeTableStateCall>
13222            for UnderlyingRustTuple<'_> {
13223                fn from(value: votingStakeTableStateCall) -> Self {
13224                    ()
13225                }
13226            }
13227            #[automatically_derived]
13228            #[doc(hidden)]
13229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13230            for votingStakeTableStateCall {
13231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13232                    Self
13233                }
13234            }
13235        }
13236        {
13237            #[doc(hidden)]
13238            #[allow(dead_code)]
13239            type UnderlyingSolTuple<'a> = (
13240                alloy::sol_types::sol_data::Uint<256>,
13241                BN254::ScalarField,
13242                BN254::ScalarField,
13243                BN254::ScalarField,
13244            );
13245            #[doc(hidden)]
13246            type UnderlyingRustTuple<'a> = (
13247                alloy::sol_types::private::primitives::aliases::U256,
13248                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13249                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13250                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13251            );
13252            #[cfg(test)]
13253            #[allow(dead_code, unreachable_patterns)]
13254            fn _type_assertion(
13255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13256            ) {
13257                match _t {
13258                    alloy_sol_types::private::AssertTypeEq::<
13259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13260                    >(_) => {}
13261                }
13262            }
13263            #[automatically_derived]
13264            #[doc(hidden)]
13265            impl ::core::convert::From<votingStakeTableStateReturn>
13266            for UnderlyingRustTuple<'_> {
13267                fn from(value: votingStakeTableStateReturn) -> Self {
13268                    (
13269                        value.threshold,
13270                        value.blsKeyComm,
13271                        value.schnorrKeyComm,
13272                        value.amountComm,
13273                    )
13274                }
13275            }
13276            #[automatically_derived]
13277            #[doc(hidden)]
13278            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13279            for votingStakeTableStateReturn {
13280                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13281                    Self {
13282                        threshold: tuple.0,
13283                        blsKeyComm: tuple.1,
13284                        schnorrKeyComm: tuple.2,
13285                        amountComm: tuple.3,
13286                    }
13287                }
13288            }
13289        }
13290        impl votingStakeTableStateReturn {
13291            fn _tokenize(
13292                &self,
13293            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13294                '_,
13295            > {
13296                (
13297                    <alloy::sol_types::sol_data::Uint<
13298                        256,
13299                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
13300                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13301                        &self.blsKeyComm,
13302                    ),
13303                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13304                        &self.schnorrKeyComm,
13305                    ),
13306                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13307                        &self.amountComm,
13308                    ),
13309                )
13310            }
13311        }
13312        #[automatically_derived]
13313        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
13314            type Parameters<'a> = ();
13315            type Token<'a> = <Self::Parameters<
13316                'a,
13317            > as alloy_sol_types::SolType>::Token<'a>;
13318            type Return = votingStakeTableStateReturn;
13319            type ReturnTuple<'a> = (
13320                alloy::sol_types::sol_data::Uint<256>,
13321                BN254::ScalarField,
13322                BN254::ScalarField,
13323                BN254::ScalarField,
13324            );
13325            type ReturnToken<'a> = <Self::ReturnTuple<
13326                'a,
13327            > as alloy_sol_types::SolType>::Token<'a>;
13328            const SIGNATURE: &'static str = "votingStakeTableState()";
13329            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
13330            #[inline]
13331            fn new<'a>(
13332                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13333            ) -> Self {
13334                tuple.into()
13335            }
13336            #[inline]
13337            fn tokenize(&self) -> Self::Token<'_> {
13338                ()
13339            }
13340            #[inline]
13341            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13342                votingStakeTableStateReturn::_tokenize(ret)
13343            }
13344            #[inline]
13345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13346                <Self::ReturnTuple<
13347                    '_,
13348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13349                    .map(Into::into)
13350            }
13351            #[inline]
13352            fn abi_decode_returns_validate(
13353                data: &[u8],
13354            ) -> alloy_sol_types::Result<Self::Return> {
13355                <Self::ReturnTuple<
13356                    '_,
13357                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13358                    .map(Into::into)
13359            }
13360        }
13361    };
13362    ///Container for all the [`LightClientArbitrumV2`](self) function calls.
13363    #[derive(Clone)]
13364    #[derive(serde::Serialize, serde::Deserialize)]
13365    #[derive()]
13366    pub enum LightClientArbitrumV2Calls {
13367        #[allow(missing_docs)]
13368        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
13369        #[allow(missing_docs)]
13370        _getVk(_getVkCall),
13371        #[allow(missing_docs)]
13372        blocksPerEpoch(blocksPerEpochCall),
13373        #[allow(missing_docs)]
13374        currentBlockNumber(currentBlockNumberCall),
13375        #[allow(missing_docs)]
13376        currentEpoch(currentEpochCall),
13377        #[allow(missing_docs)]
13378        disablePermissionedProverMode(disablePermissionedProverModeCall),
13379        #[allow(missing_docs)]
13380        epochFromBlockNumber(epochFromBlockNumberCall),
13381        #[allow(missing_docs)]
13382        epochStartBlock(epochStartBlockCall),
13383        #[allow(missing_docs)]
13384        finalizedState(finalizedStateCall),
13385        #[allow(missing_docs)]
13386        genesisStakeTableState(genesisStakeTableStateCall),
13387        #[allow(missing_docs)]
13388        genesisState(genesisStateCall),
13389        #[allow(missing_docs)]
13390        getHotShotCommitment(getHotShotCommitmentCall),
13391        #[allow(missing_docs)]
13392        getStateHistoryCount(getStateHistoryCountCall),
13393        #[allow(missing_docs)]
13394        getVersion(getVersionCall),
13395        #[allow(missing_docs)]
13396        initialize(initializeCall),
13397        #[allow(missing_docs)]
13398        initializeV2(initializeV2Call),
13399        #[allow(missing_docs)]
13400        isEpochRoot(isEpochRootCall),
13401        #[allow(missing_docs)]
13402        isGtEpochRoot(isGtEpochRootCall),
13403        #[allow(missing_docs)]
13404        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
13405        #[allow(missing_docs)]
13406        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
13407        #[allow(missing_docs)]
13408        newFinalizedState_0(newFinalizedState_0Call),
13409        #[allow(missing_docs)]
13410        newFinalizedState_1(newFinalizedState_1Call),
13411        #[allow(missing_docs)]
13412        owner(ownerCall),
13413        #[allow(missing_docs)]
13414        permissionedProver(permissionedProverCall),
13415        #[allow(missing_docs)]
13416        proxiableUUID(proxiableUUIDCall),
13417        #[allow(missing_docs)]
13418        renounceOwnership(renounceOwnershipCall),
13419        #[allow(missing_docs)]
13420        setPermissionedProver(setPermissionedProverCall),
13421        #[allow(missing_docs)]
13422        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
13423        #[allow(missing_docs)]
13424        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
13425        #[allow(missing_docs)]
13426        stateHistoryCommitments(stateHistoryCommitmentsCall),
13427        #[allow(missing_docs)]
13428        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
13429        #[allow(missing_docs)]
13430        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
13431        #[allow(missing_docs)]
13432        transferOwnership(transferOwnershipCall),
13433        #[allow(missing_docs)]
13434        updateEpochStartBlock(updateEpochStartBlockCall),
13435        #[allow(missing_docs)]
13436        upgradeToAndCall(upgradeToAndCallCall),
13437        #[allow(missing_docs)]
13438        votingStakeTableState(votingStakeTableStateCall),
13439    }
13440    impl LightClientArbitrumV2Calls {
13441        /// All the selectors of this enum.
13442        ///
13443        /// Note that the selectors might not be in the same order as the variants.
13444        /// No guarantees are made about the order of the selectors.
13445        ///
13446        /// Prefer using `SolInterface` methods instead.
13447        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13448            [1u8, 63u8, 165u8, 252u8],
13449            [2u8, 181u8, 146u8, 243u8],
13450            [6u8, 37u8, 225u8, 155u8],
13451            [13u8, 142u8, 110u8, 44u8],
13452            [18u8, 23u8, 60u8, 44u8],
13453            [22u8, 122u8, 198u8, 24u8],
13454            [32u8, 99u8, 212u8, 247u8],
13455            [37u8, 41u8, 116u8, 39u8],
13456            [47u8, 121u8, 136u8, 157u8],
13457            [48u8, 12u8, 137u8, 221u8],
13458            [49u8, 61u8, 247u8, 177u8],
13459            [55u8, 142u8, 194u8, 59u8],
13460            [62u8, 213u8, 91u8, 123u8],
13461            [66u8, 109u8, 49u8, 148u8],
13462            [67u8, 61u8, 186u8, 159u8],
13463            [79u8, 30u8, 242u8, 134u8],
13464            [82u8, 209u8, 144u8, 45u8],
13465            [105u8, 204u8, 106u8, 4u8],
13466            [113u8, 80u8, 24u8, 166u8],
13467            [117u8, 124u8, 55u8, 173u8],
13468            [118u8, 103u8, 24u8, 8u8],
13469            [130u8, 110u8, 65u8, 252u8],
13470            [133u8, 132u8, 210u8, 63u8],
13471            [141u8, 165u8, 203u8, 91u8],
13472            [144u8, 193u8, 67u8, 144u8],
13473            [150u8, 193u8, 202u8, 97u8],
13474            [155u8, 170u8, 60u8, 201u8],
13475            [159u8, 219u8, 84u8, 167u8],
13476            [173u8, 60u8, 177u8, 204u8],
13477            [179u8, 59u8, 196u8, 145u8],
13478            [194u8, 59u8, 158u8, 158u8],
13479            [210u8, 77u8, 147u8, 61u8],
13480            [224u8, 48u8, 51u8, 1u8],
13481            [240u8, 104u8, 32u8, 84u8],
13482            [242u8, 253u8, 227u8, 139u8],
13483            [249u8, 229u8, 13u8, 25u8],
13484        ];
13485        /// The names of the variants in the same order as `SELECTORS`.
13486        pub const VARIANT_NAMES: &'static [&'static str] = &[
13487            ::core::stringify!(setPermissionedProver),
13488            ::core::stringify!(stateHistoryCommitments),
13489            ::core::stringify!(votingStakeTableState),
13490            ::core::stringify!(getVersion),
13491            ::core::stringify!(_getVk),
13492            ::core::stringify!(updateEpochStartBlock),
13493            ::core::stringify!(newFinalizedState_0),
13494            ::core::stringify!(isEpochRoot),
13495            ::core::stringify!(stateHistoryFirstIndex),
13496            ::core::stringify!(isGtEpochRoot),
13497            ::core::stringify!(permissionedProver),
13498            ::core::stringify!(currentBlockNumber),
13499            ::core::stringify!(epochStartBlock),
13500            ::core::stringify!(genesisStakeTableState),
13501            ::core::stringify!(setStateHistoryRetentionPeriod),
13502            ::core::stringify!(upgradeToAndCall),
13503            ::core::stringify!(proxiableUUID),
13504            ::core::stringify!(disablePermissionedProverMode),
13505            ::core::stringify!(renounceOwnership),
13506            ::core::stringify!(newFinalizedState_1),
13507            ::core::stringify!(currentEpoch),
13508            ::core::stringify!(isPermissionedProverEnabled),
13509            ::core::stringify!(getHotShotCommitment),
13510            ::core::stringify!(owner),
13511            ::core::stringify!(epochFromBlockNumber),
13512            ::core::stringify!(setstateHistoryRetentionPeriod),
13513            ::core::stringify!(initialize),
13514            ::core::stringify!(finalizedState),
13515            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
13516            ::core::stringify!(initializeV2),
13517            ::core::stringify!(stateHistoryRetentionPeriod),
13518            ::core::stringify!(genesisState),
13519            ::core::stringify!(lagOverEscapeHatchThreshold),
13520            ::core::stringify!(blocksPerEpoch),
13521            ::core::stringify!(transferOwnership),
13522            ::core::stringify!(getStateHistoryCount),
13523        ];
13524        /// The signatures in the same order as `SELECTORS`.
13525        pub const SIGNATURES: &'static [&'static str] = &[
13526            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
13527            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
13528            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13529            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
13530            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
13531            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
13532            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
13533            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
13534            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
13535            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
13536            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
13537            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
13538            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
13539            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13540            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
13541            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
13542            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
13543            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
13544            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
13545            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
13546            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
13547            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
13548            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
13549            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
13550            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
13551            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
13552            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
13553            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13554            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
13555            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
13556            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
13557            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13558            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
13559            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
13560            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
13561            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
13562        ];
13563        /// Returns the signature for the given selector, if known.
13564        #[inline]
13565        pub fn signature_by_selector(
13566            selector: [u8; 4usize],
13567        ) -> ::core::option::Option<&'static str> {
13568            match Self::SELECTORS.binary_search(&selector) {
13569                ::core::result::Result::Ok(idx) => {
13570                    ::core::option::Option::Some(Self::SIGNATURES[idx])
13571                }
13572                ::core::result::Result::Err(_) => ::core::option::Option::None,
13573            }
13574        }
13575        /// Returns the enum variant name for the given selector, if known.
13576        #[inline]
13577        pub fn name_by_selector(
13578            selector: [u8; 4usize],
13579        ) -> ::core::option::Option<&'static str> {
13580            let sig = Self::signature_by_selector(selector)?;
13581            sig.split_once('(').map(|(name, _)| name)
13582        }
13583    }
13584    #[automatically_derived]
13585    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Calls {
13586        const NAME: &'static str = "LightClientArbitrumV2Calls";
13587        const MIN_DATA_LENGTH: usize = 0usize;
13588        const COUNT: usize = 36usize;
13589        #[inline]
13590        fn selector(&self) -> [u8; 4] {
13591            match self {
13592                Self::UPGRADE_INTERFACE_VERSION(_) => {
13593                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13594                }
13595                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
13596                Self::blocksPerEpoch(_) => {
13597                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13598                }
13599                Self::currentBlockNumber(_) => {
13600                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13601                }
13602                Self::currentEpoch(_) => {
13603                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
13604                }
13605                Self::disablePermissionedProverMode(_) => {
13606                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
13607                }
13608                Self::epochFromBlockNumber(_) => {
13609                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13610                }
13611                Self::epochStartBlock(_) => {
13612                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13613                }
13614                Self::finalizedState(_) => {
13615                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13616                }
13617                Self::genesisStakeTableState(_) => {
13618                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13619                }
13620                Self::genesisState(_) => {
13621                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
13622                }
13623                Self::getHotShotCommitment(_) => {
13624                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
13625                }
13626                Self::getStateHistoryCount(_) => {
13627                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
13628                }
13629                Self::getVersion(_) => {
13630                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13631                }
13632                Self::initialize(_) => {
13633                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13634                }
13635                Self::initializeV2(_) => {
13636                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13637                }
13638                Self::isEpochRoot(_) => {
13639                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13640                }
13641                Self::isGtEpochRoot(_) => {
13642                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13643                }
13644                Self::isPermissionedProverEnabled(_) => {
13645                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
13646                }
13647                Self::lagOverEscapeHatchThreshold(_) => {
13648                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
13649                }
13650                Self::newFinalizedState_0(_) => {
13651                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
13652                }
13653                Self::newFinalizedState_1(_) => {
13654                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
13655                }
13656                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13657                Self::permissionedProver(_) => {
13658                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13659                }
13660                Self::proxiableUUID(_) => {
13661                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13662                }
13663                Self::renounceOwnership(_) => {
13664                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13665                }
13666                Self::setPermissionedProver(_) => {
13667                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13668                }
13669                Self::setStateHistoryRetentionPeriod(_) => {
13670                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13671                }
13672                Self::setstateHistoryRetentionPeriod(_) => {
13673                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13674                }
13675                Self::stateHistoryCommitments(_) => {
13676                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
13677                }
13678                Self::stateHistoryFirstIndex(_) => {
13679                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
13680                }
13681                Self::stateHistoryRetentionPeriod(_) => {
13682                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13683                }
13684                Self::transferOwnership(_) => {
13685                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13686                }
13687                Self::updateEpochStartBlock(_) => {
13688                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13689                }
13690                Self::upgradeToAndCall(_) => {
13691                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13692                }
13693                Self::votingStakeTableState(_) => {
13694                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13695                }
13696            }
13697        }
13698        #[inline]
13699        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13700            Self::SELECTORS.get(i).copied()
13701        }
13702        #[inline]
13703        fn valid_selector(selector: [u8; 4]) -> bool {
13704            Self::SELECTORS.binary_search(&selector).is_ok()
13705        }
13706        #[inline]
13707        #[allow(non_snake_case)]
13708        fn abi_decode_raw(
13709            selector: [u8; 4],
13710            data: &[u8],
13711        ) -> alloy_sol_types::Result<Self> {
13712            static DECODE_SHIMS: &[fn(
13713                &[u8],
13714            ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls>] = &[
13715                {
13716                    fn setPermissionedProver(
13717                        data: &[u8],
13718                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13719                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13720                                data,
13721                            )
13722                            .map(LightClientArbitrumV2Calls::setPermissionedProver)
13723                    }
13724                    setPermissionedProver
13725                },
13726                {
13727                    fn stateHistoryCommitments(
13728                        data: &[u8],
13729                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13730                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13731                                data,
13732                            )
13733                            .map(LightClientArbitrumV2Calls::stateHistoryCommitments)
13734                    }
13735                    stateHistoryCommitments
13736                },
13737                {
13738                    fn votingStakeTableState(
13739                        data: &[u8],
13740                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13741                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13742                                data,
13743                            )
13744                            .map(LightClientArbitrumV2Calls::votingStakeTableState)
13745                    }
13746                    votingStakeTableState
13747                },
13748                {
13749                    fn getVersion(
13750                        data: &[u8],
13751                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13752                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13753                                data,
13754                            )
13755                            .map(LightClientArbitrumV2Calls::getVersion)
13756                    }
13757                    getVersion
13758                },
13759                {
13760                    fn _getVk(
13761                        data: &[u8],
13762                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13763                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13764                            .map(LightClientArbitrumV2Calls::_getVk)
13765                    }
13766                    _getVk
13767                },
13768                {
13769                    fn updateEpochStartBlock(
13770                        data: &[u8],
13771                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13772                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13773                                data,
13774                            )
13775                            .map(LightClientArbitrumV2Calls::updateEpochStartBlock)
13776                    }
13777                    updateEpochStartBlock
13778                },
13779                {
13780                    fn newFinalizedState_0(
13781                        data: &[u8],
13782                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13783                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13784                                data,
13785                            )
13786                            .map(LightClientArbitrumV2Calls::newFinalizedState_0)
13787                    }
13788                    newFinalizedState_0
13789                },
13790                {
13791                    fn isEpochRoot(
13792                        data: &[u8],
13793                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13794                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13795                                data,
13796                            )
13797                            .map(LightClientArbitrumV2Calls::isEpochRoot)
13798                    }
13799                    isEpochRoot
13800                },
13801                {
13802                    fn stateHistoryFirstIndex(
13803                        data: &[u8],
13804                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13805                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13806                                data,
13807                            )
13808                            .map(LightClientArbitrumV2Calls::stateHistoryFirstIndex)
13809                    }
13810                    stateHistoryFirstIndex
13811                },
13812                {
13813                    fn isGtEpochRoot(
13814                        data: &[u8],
13815                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13816                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13817                                data,
13818                            )
13819                            .map(LightClientArbitrumV2Calls::isGtEpochRoot)
13820                    }
13821                    isGtEpochRoot
13822                },
13823                {
13824                    fn permissionedProver(
13825                        data: &[u8],
13826                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13827                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13828                                data,
13829                            )
13830                            .map(LightClientArbitrumV2Calls::permissionedProver)
13831                    }
13832                    permissionedProver
13833                },
13834                {
13835                    fn currentBlockNumber(
13836                        data: &[u8],
13837                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13838                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13839                                data,
13840                            )
13841                            .map(LightClientArbitrumV2Calls::currentBlockNumber)
13842                    }
13843                    currentBlockNumber
13844                },
13845                {
13846                    fn epochStartBlock(
13847                        data: &[u8],
13848                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13849                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13850                                data,
13851                            )
13852                            .map(LightClientArbitrumV2Calls::epochStartBlock)
13853                    }
13854                    epochStartBlock
13855                },
13856                {
13857                    fn genesisStakeTableState(
13858                        data: &[u8],
13859                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13860                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13861                                data,
13862                            )
13863                            .map(LightClientArbitrumV2Calls::genesisStakeTableState)
13864                    }
13865                    genesisStakeTableState
13866                },
13867                {
13868                    fn setStateHistoryRetentionPeriod(
13869                        data: &[u8],
13870                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13871                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13872                                data,
13873                            )
13874                            .map(
13875                                LightClientArbitrumV2Calls::setStateHistoryRetentionPeriod,
13876                            )
13877                    }
13878                    setStateHistoryRetentionPeriod
13879                },
13880                {
13881                    fn upgradeToAndCall(
13882                        data: &[u8],
13883                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13884                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13885                                data,
13886                            )
13887                            .map(LightClientArbitrumV2Calls::upgradeToAndCall)
13888                    }
13889                    upgradeToAndCall
13890                },
13891                {
13892                    fn proxiableUUID(
13893                        data: &[u8],
13894                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13895                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13896                                data,
13897                            )
13898                            .map(LightClientArbitrumV2Calls::proxiableUUID)
13899                    }
13900                    proxiableUUID
13901                },
13902                {
13903                    fn disablePermissionedProverMode(
13904                        data: &[u8],
13905                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13906                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13907                                data,
13908                            )
13909                            .map(
13910                                LightClientArbitrumV2Calls::disablePermissionedProverMode,
13911                            )
13912                    }
13913                    disablePermissionedProverMode
13914                },
13915                {
13916                    fn renounceOwnership(
13917                        data: &[u8],
13918                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13919                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13920                                data,
13921                            )
13922                            .map(LightClientArbitrumV2Calls::renounceOwnership)
13923                    }
13924                    renounceOwnership
13925                },
13926                {
13927                    fn newFinalizedState_1(
13928                        data: &[u8],
13929                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13930                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
13931                                data,
13932                            )
13933                            .map(LightClientArbitrumV2Calls::newFinalizedState_1)
13934                    }
13935                    newFinalizedState_1
13936                },
13937                {
13938                    fn currentEpoch(
13939                        data: &[u8],
13940                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13941                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13942                                data,
13943                            )
13944                            .map(LightClientArbitrumV2Calls::currentEpoch)
13945                    }
13946                    currentEpoch
13947                },
13948                {
13949                    fn isPermissionedProverEnabled(
13950                        data: &[u8],
13951                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13952                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
13953                                data,
13954                            )
13955                            .map(LightClientArbitrumV2Calls::isPermissionedProverEnabled)
13956                    }
13957                    isPermissionedProverEnabled
13958                },
13959                {
13960                    fn getHotShotCommitment(
13961                        data: &[u8],
13962                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13963                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13964                                data,
13965                            )
13966                            .map(LightClientArbitrumV2Calls::getHotShotCommitment)
13967                    }
13968                    getHotShotCommitment
13969                },
13970                {
13971                    fn owner(
13972                        data: &[u8],
13973                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13974                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13975                            .map(LightClientArbitrumV2Calls::owner)
13976                    }
13977                    owner
13978                },
13979                {
13980                    fn epochFromBlockNumber(
13981                        data: &[u8],
13982                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13983                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13984                                data,
13985                            )
13986                            .map(LightClientArbitrumV2Calls::epochFromBlockNumber)
13987                    }
13988                    epochFromBlockNumber
13989                },
13990                {
13991                    fn setstateHistoryRetentionPeriod(
13992                        data: &[u8],
13993                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13994                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13995                                data,
13996                            )
13997                            .map(
13998                                LightClientArbitrumV2Calls::setstateHistoryRetentionPeriod,
13999                            )
14000                    }
14001                    setstateHistoryRetentionPeriod
14002                },
14003                {
14004                    fn initialize(
14005                        data: &[u8],
14006                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14007                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14008                                data,
14009                            )
14010                            .map(LightClientArbitrumV2Calls::initialize)
14011                    }
14012                    initialize
14013                },
14014                {
14015                    fn finalizedState(
14016                        data: &[u8],
14017                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14018                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14019                                data,
14020                            )
14021                            .map(LightClientArbitrumV2Calls::finalizedState)
14022                    }
14023                    finalizedState
14024                },
14025                {
14026                    fn UPGRADE_INTERFACE_VERSION(
14027                        data: &[u8],
14028                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14029                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14030                                data,
14031                            )
14032                            .map(LightClientArbitrumV2Calls::UPGRADE_INTERFACE_VERSION)
14033                    }
14034                    UPGRADE_INTERFACE_VERSION
14035                },
14036                {
14037                    fn initializeV2(
14038                        data: &[u8],
14039                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14040                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14041                                data,
14042                            )
14043                            .map(LightClientArbitrumV2Calls::initializeV2)
14044                    }
14045                    initializeV2
14046                },
14047                {
14048                    fn stateHistoryRetentionPeriod(
14049                        data: &[u8],
14050                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14051                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14052                                data,
14053                            )
14054                            .map(LightClientArbitrumV2Calls::stateHistoryRetentionPeriod)
14055                    }
14056                    stateHistoryRetentionPeriod
14057                },
14058                {
14059                    fn genesisState(
14060                        data: &[u8],
14061                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14062                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14063                                data,
14064                            )
14065                            .map(LightClientArbitrumV2Calls::genesisState)
14066                    }
14067                    genesisState
14068                },
14069                {
14070                    fn lagOverEscapeHatchThreshold(
14071                        data: &[u8],
14072                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14073                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14074                                data,
14075                            )
14076                            .map(LightClientArbitrumV2Calls::lagOverEscapeHatchThreshold)
14077                    }
14078                    lagOverEscapeHatchThreshold
14079                },
14080                {
14081                    fn blocksPerEpoch(
14082                        data: &[u8],
14083                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14084                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14085                                data,
14086                            )
14087                            .map(LightClientArbitrumV2Calls::blocksPerEpoch)
14088                    }
14089                    blocksPerEpoch
14090                },
14091                {
14092                    fn transferOwnership(
14093                        data: &[u8],
14094                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14095                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14096                                data,
14097                            )
14098                            .map(LightClientArbitrumV2Calls::transferOwnership)
14099                    }
14100                    transferOwnership
14101                },
14102                {
14103                    fn getStateHistoryCount(
14104                        data: &[u8],
14105                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14106                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14107                                data,
14108                            )
14109                            .map(LightClientArbitrumV2Calls::getStateHistoryCount)
14110                    }
14111                    getStateHistoryCount
14112                },
14113            ];
14114            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14115                return Err(
14116                    alloy_sol_types::Error::unknown_selector(
14117                        <Self as alloy_sol_types::SolInterface>::NAME,
14118                        selector,
14119                    ),
14120                );
14121            };
14122            DECODE_SHIMS[idx](data)
14123        }
14124        #[inline]
14125        #[allow(non_snake_case)]
14126        fn abi_decode_raw_validate(
14127            selector: [u8; 4],
14128            data: &[u8],
14129        ) -> alloy_sol_types::Result<Self> {
14130            static DECODE_VALIDATE_SHIMS: &[fn(
14131                &[u8],
14132            ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls>] = &[
14133                {
14134                    fn setPermissionedProver(
14135                        data: &[u8],
14136                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14137                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14138                                data,
14139                            )
14140                            .map(LightClientArbitrumV2Calls::setPermissionedProver)
14141                    }
14142                    setPermissionedProver
14143                },
14144                {
14145                    fn stateHistoryCommitments(
14146                        data: &[u8],
14147                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14148                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14149                                data,
14150                            )
14151                            .map(LightClientArbitrumV2Calls::stateHistoryCommitments)
14152                    }
14153                    stateHistoryCommitments
14154                },
14155                {
14156                    fn votingStakeTableState(
14157                        data: &[u8],
14158                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14159                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14160                                data,
14161                            )
14162                            .map(LightClientArbitrumV2Calls::votingStakeTableState)
14163                    }
14164                    votingStakeTableState
14165                },
14166                {
14167                    fn getVersion(
14168                        data: &[u8],
14169                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14170                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14171                                data,
14172                            )
14173                            .map(LightClientArbitrumV2Calls::getVersion)
14174                    }
14175                    getVersion
14176                },
14177                {
14178                    fn _getVk(
14179                        data: &[u8],
14180                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14181                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14182                                data,
14183                            )
14184                            .map(LightClientArbitrumV2Calls::_getVk)
14185                    }
14186                    _getVk
14187                },
14188                {
14189                    fn updateEpochStartBlock(
14190                        data: &[u8],
14191                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14192                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14193                                data,
14194                            )
14195                            .map(LightClientArbitrumV2Calls::updateEpochStartBlock)
14196                    }
14197                    updateEpochStartBlock
14198                },
14199                {
14200                    fn newFinalizedState_0(
14201                        data: &[u8],
14202                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14203                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14204                                data,
14205                            )
14206                            .map(LightClientArbitrumV2Calls::newFinalizedState_0)
14207                    }
14208                    newFinalizedState_0
14209                },
14210                {
14211                    fn isEpochRoot(
14212                        data: &[u8],
14213                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14214                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14215                                data,
14216                            )
14217                            .map(LightClientArbitrumV2Calls::isEpochRoot)
14218                    }
14219                    isEpochRoot
14220                },
14221                {
14222                    fn stateHistoryFirstIndex(
14223                        data: &[u8],
14224                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14225                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14226                                data,
14227                            )
14228                            .map(LightClientArbitrumV2Calls::stateHistoryFirstIndex)
14229                    }
14230                    stateHistoryFirstIndex
14231                },
14232                {
14233                    fn isGtEpochRoot(
14234                        data: &[u8],
14235                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14236                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14237                                data,
14238                            )
14239                            .map(LightClientArbitrumV2Calls::isGtEpochRoot)
14240                    }
14241                    isGtEpochRoot
14242                },
14243                {
14244                    fn permissionedProver(
14245                        data: &[u8],
14246                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14247                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14248                                data,
14249                            )
14250                            .map(LightClientArbitrumV2Calls::permissionedProver)
14251                    }
14252                    permissionedProver
14253                },
14254                {
14255                    fn currentBlockNumber(
14256                        data: &[u8],
14257                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14258                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14259                                data,
14260                            )
14261                            .map(LightClientArbitrumV2Calls::currentBlockNumber)
14262                    }
14263                    currentBlockNumber
14264                },
14265                {
14266                    fn epochStartBlock(
14267                        data: &[u8],
14268                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14269                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14270                                data,
14271                            )
14272                            .map(LightClientArbitrumV2Calls::epochStartBlock)
14273                    }
14274                    epochStartBlock
14275                },
14276                {
14277                    fn genesisStakeTableState(
14278                        data: &[u8],
14279                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14280                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14281                                data,
14282                            )
14283                            .map(LightClientArbitrumV2Calls::genesisStakeTableState)
14284                    }
14285                    genesisStakeTableState
14286                },
14287                {
14288                    fn setStateHistoryRetentionPeriod(
14289                        data: &[u8],
14290                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14291                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14292                                data,
14293                            )
14294                            .map(
14295                                LightClientArbitrumV2Calls::setStateHistoryRetentionPeriod,
14296                            )
14297                    }
14298                    setStateHistoryRetentionPeriod
14299                },
14300                {
14301                    fn upgradeToAndCall(
14302                        data: &[u8],
14303                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14304                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14305                                data,
14306                            )
14307                            .map(LightClientArbitrumV2Calls::upgradeToAndCall)
14308                    }
14309                    upgradeToAndCall
14310                },
14311                {
14312                    fn proxiableUUID(
14313                        data: &[u8],
14314                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14315                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14316                                data,
14317                            )
14318                            .map(LightClientArbitrumV2Calls::proxiableUUID)
14319                    }
14320                    proxiableUUID
14321                },
14322                {
14323                    fn disablePermissionedProverMode(
14324                        data: &[u8],
14325                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14326                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14327                                data,
14328                            )
14329                            .map(
14330                                LightClientArbitrumV2Calls::disablePermissionedProverMode,
14331                            )
14332                    }
14333                    disablePermissionedProverMode
14334                },
14335                {
14336                    fn renounceOwnership(
14337                        data: &[u8],
14338                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14339                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14340                                data,
14341                            )
14342                            .map(LightClientArbitrumV2Calls::renounceOwnership)
14343                    }
14344                    renounceOwnership
14345                },
14346                {
14347                    fn newFinalizedState_1(
14348                        data: &[u8],
14349                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14350                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14351                                data,
14352                            )
14353                            .map(LightClientArbitrumV2Calls::newFinalizedState_1)
14354                    }
14355                    newFinalizedState_1
14356                },
14357                {
14358                    fn currentEpoch(
14359                        data: &[u8],
14360                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14361                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14362                                data,
14363                            )
14364                            .map(LightClientArbitrumV2Calls::currentEpoch)
14365                    }
14366                    currentEpoch
14367                },
14368                {
14369                    fn isPermissionedProverEnabled(
14370                        data: &[u8],
14371                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14372                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14373                                data,
14374                            )
14375                            .map(LightClientArbitrumV2Calls::isPermissionedProverEnabled)
14376                    }
14377                    isPermissionedProverEnabled
14378                },
14379                {
14380                    fn getHotShotCommitment(
14381                        data: &[u8],
14382                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14383                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14384                                data,
14385                            )
14386                            .map(LightClientArbitrumV2Calls::getHotShotCommitment)
14387                    }
14388                    getHotShotCommitment
14389                },
14390                {
14391                    fn owner(
14392                        data: &[u8],
14393                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14394                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14395                                data,
14396                            )
14397                            .map(LightClientArbitrumV2Calls::owner)
14398                    }
14399                    owner
14400                },
14401                {
14402                    fn epochFromBlockNumber(
14403                        data: &[u8],
14404                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14405                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14406                                data,
14407                            )
14408                            .map(LightClientArbitrumV2Calls::epochFromBlockNumber)
14409                    }
14410                    epochFromBlockNumber
14411                },
14412                {
14413                    fn setstateHistoryRetentionPeriod(
14414                        data: &[u8],
14415                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14416                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14417                                data,
14418                            )
14419                            .map(
14420                                LightClientArbitrumV2Calls::setstateHistoryRetentionPeriod,
14421                            )
14422                    }
14423                    setstateHistoryRetentionPeriod
14424                },
14425                {
14426                    fn initialize(
14427                        data: &[u8],
14428                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14429                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14430                                data,
14431                            )
14432                            .map(LightClientArbitrumV2Calls::initialize)
14433                    }
14434                    initialize
14435                },
14436                {
14437                    fn finalizedState(
14438                        data: &[u8],
14439                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14440                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14441                                data,
14442                            )
14443                            .map(LightClientArbitrumV2Calls::finalizedState)
14444                    }
14445                    finalizedState
14446                },
14447                {
14448                    fn UPGRADE_INTERFACE_VERSION(
14449                        data: &[u8],
14450                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14451                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14452                                data,
14453                            )
14454                            .map(LightClientArbitrumV2Calls::UPGRADE_INTERFACE_VERSION)
14455                    }
14456                    UPGRADE_INTERFACE_VERSION
14457                },
14458                {
14459                    fn initializeV2(
14460                        data: &[u8],
14461                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14462                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14463                                data,
14464                            )
14465                            .map(LightClientArbitrumV2Calls::initializeV2)
14466                    }
14467                    initializeV2
14468                },
14469                {
14470                    fn stateHistoryRetentionPeriod(
14471                        data: &[u8],
14472                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14473                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14474                                data,
14475                            )
14476                            .map(LightClientArbitrumV2Calls::stateHistoryRetentionPeriod)
14477                    }
14478                    stateHistoryRetentionPeriod
14479                },
14480                {
14481                    fn genesisState(
14482                        data: &[u8],
14483                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14484                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14485                                data,
14486                            )
14487                            .map(LightClientArbitrumV2Calls::genesisState)
14488                    }
14489                    genesisState
14490                },
14491                {
14492                    fn lagOverEscapeHatchThreshold(
14493                        data: &[u8],
14494                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14495                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14496                                data,
14497                            )
14498                            .map(LightClientArbitrumV2Calls::lagOverEscapeHatchThreshold)
14499                    }
14500                    lagOverEscapeHatchThreshold
14501                },
14502                {
14503                    fn blocksPerEpoch(
14504                        data: &[u8],
14505                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14506                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14507                                data,
14508                            )
14509                            .map(LightClientArbitrumV2Calls::blocksPerEpoch)
14510                    }
14511                    blocksPerEpoch
14512                },
14513                {
14514                    fn transferOwnership(
14515                        data: &[u8],
14516                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14517                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14518                                data,
14519                            )
14520                            .map(LightClientArbitrumV2Calls::transferOwnership)
14521                    }
14522                    transferOwnership
14523                },
14524                {
14525                    fn getStateHistoryCount(
14526                        data: &[u8],
14527                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14528                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14529                                data,
14530                            )
14531                            .map(LightClientArbitrumV2Calls::getStateHistoryCount)
14532                    }
14533                    getStateHistoryCount
14534                },
14535            ];
14536            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14537                return Err(
14538                    alloy_sol_types::Error::unknown_selector(
14539                        <Self as alloy_sol_types::SolInterface>::NAME,
14540                        selector,
14541                    ),
14542                );
14543            };
14544            DECODE_VALIDATE_SHIMS[idx](data)
14545        }
14546        #[inline]
14547        fn abi_encoded_size(&self) -> usize {
14548            match self {
14549                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14550                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14551                        inner,
14552                    )
14553                }
14554                Self::_getVk(inner) => {
14555                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14556                }
14557                Self::blocksPerEpoch(inner) => {
14558                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14559                        inner,
14560                    )
14561                }
14562                Self::currentBlockNumber(inner) => {
14563                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14564                        inner,
14565                    )
14566                }
14567                Self::currentEpoch(inner) => {
14568                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14569                        inner,
14570                    )
14571                }
14572                Self::disablePermissionedProverMode(inner) => {
14573                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14574                        inner,
14575                    )
14576                }
14577                Self::epochFromBlockNumber(inner) => {
14578                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14579                        inner,
14580                    )
14581                }
14582                Self::epochStartBlock(inner) => {
14583                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14584                        inner,
14585                    )
14586                }
14587                Self::finalizedState(inner) => {
14588                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14589                        inner,
14590                    )
14591                }
14592                Self::genesisStakeTableState(inner) => {
14593                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14594                        inner,
14595                    )
14596                }
14597                Self::genesisState(inner) => {
14598                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14599                        inner,
14600                    )
14601                }
14602                Self::getHotShotCommitment(inner) => {
14603                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14604                        inner,
14605                    )
14606                }
14607                Self::getStateHistoryCount(inner) => {
14608                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14609                        inner,
14610                    )
14611                }
14612                Self::getVersion(inner) => {
14613                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14614                }
14615                Self::initialize(inner) => {
14616                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14617                }
14618                Self::initializeV2(inner) => {
14619                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14620                        inner,
14621                    )
14622                }
14623                Self::isEpochRoot(inner) => {
14624                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14625                        inner,
14626                    )
14627                }
14628                Self::isGtEpochRoot(inner) => {
14629                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14630                        inner,
14631                    )
14632                }
14633                Self::isPermissionedProverEnabled(inner) => {
14634                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14635                        inner,
14636                    )
14637                }
14638                Self::lagOverEscapeHatchThreshold(inner) => {
14639                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14640                        inner,
14641                    )
14642                }
14643                Self::newFinalizedState_0(inner) => {
14644                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14645                        inner,
14646                    )
14647                }
14648                Self::newFinalizedState_1(inner) => {
14649                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14650                        inner,
14651                    )
14652                }
14653                Self::owner(inner) => {
14654                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14655                }
14656                Self::permissionedProver(inner) => {
14657                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14658                        inner,
14659                    )
14660                }
14661                Self::proxiableUUID(inner) => {
14662                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14663                        inner,
14664                    )
14665                }
14666                Self::renounceOwnership(inner) => {
14667                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14668                        inner,
14669                    )
14670                }
14671                Self::setPermissionedProver(inner) => {
14672                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14673                        inner,
14674                    )
14675                }
14676                Self::setStateHistoryRetentionPeriod(inner) => {
14677                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14678                        inner,
14679                    )
14680                }
14681                Self::setstateHistoryRetentionPeriod(inner) => {
14682                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14683                        inner,
14684                    )
14685                }
14686                Self::stateHistoryCommitments(inner) => {
14687                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14688                        inner,
14689                    )
14690                }
14691                Self::stateHistoryFirstIndex(inner) => {
14692                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14693                        inner,
14694                    )
14695                }
14696                Self::stateHistoryRetentionPeriod(inner) => {
14697                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14698                        inner,
14699                    )
14700                }
14701                Self::transferOwnership(inner) => {
14702                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14703                        inner,
14704                    )
14705                }
14706                Self::updateEpochStartBlock(inner) => {
14707                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14708                        inner,
14709                    )
14710                }
14711                Self::upgradeToAndCall(inner) => {
14712                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14713                        inner,
14714                    )
14715                }
14716                Self::votingStakeTableState(inner) => {
14717                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14718                        inner,
14719                    )
14720                }
14721            }
14722        }
14723        #[inline]
14724        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14725            match self {
14726                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14727                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14728                        inner,
14729                        out,
14730                    )
14731                }
14732                Self::_getVk(inner) => {
14733                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14734                }
14735                Self::blocksPerEpoch(inner) => {
14736                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14737                        inner,
14738                        out,
14739                    )
14740                }
14741                Self::currentBlockNumber(inner) => {
14742                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14743                        inner,
14744                        out,
14745                    )
14746                }
14747                Self::currentEpoch(inner) => {
14748                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14749                        inner,
14750                        out,
14751                    )
14752                }
14753                Self::disablePermissionedProverMode(inner) => {
14754                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14755                        inner,
14756                        out,
14757                    )
14758                }
14759                Self::epochFromBlockNumber(inner) => {
14760                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14761                        inner,
14762                        out,
14763                    )
14764                }
14765                Self::epochStartBlock(inner) => {
14766                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14767                        inner,
14768                        out,
14769                    )
14770                }
14771                Self::finalizedState(inner) => {
14772                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14773                        inner,
14774                        out,
14775                    )
14776                }
14777                Self::genesisStakeTableState(inner) => {
14778                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14779                        inner,
14780                        out,
14781                    )
14782                }
14783                Self::genesisState(inner) => {
14784                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14785                        inner,
14786                        out,
14787                    )
14788                }
14789                Self::getHotShotCommitment(inner) => {
14790                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14791                        inner,
14792                        out,
14793                    )
14794                }
14795                Self::getStateHistoryCount(inner) => {
14796                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14797                        inner,
14798                        out,
14799                    )
14800                }
14801                Self::getVersion(inner) => {
14802                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14803                        inner,
14804                        out,
14805                    )
14806                }
14807                Self::initialize(inner) => {
14808                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14809                        inner,
14810                        out,
14811                    )
14812                }
14813                Self::initializeV2(inner) => {
14814                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14815                        inner,
14816                        out,
14817                    )
14818                }
14819                Self::isEpochRoot(inner) => {
14820                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14821                        inner,
14822                        out,
14823                    )
14824                }
14825                Self::isGtEpochRoot(inner) => {
14826                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14827                        inner,
14828                        out,
14829                    )
14830                }
14831                Self::isPermissionedProverEnabled(inner) => {
14832                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14833                        inner,
14834                        out,
14835                    )
14836                }
14837                Self::lagOverEscapeHatchThreshold(inner) => {
14838                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14839                        inner,
14840                        out,
14841                    )
14842                }
14843                Self::newFinalizedState_0(inner) => {
14844                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14845                        inner,
14846                        out,
14847                    )
14848                }
14849                Self::newFinalizedState_1(inner) => {
14850                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14851                        inner,
14852                        out,
14853                    )
14854                }
14855                Self::owner(inner) => {
14856                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14857                }
14858                Self::permissionedProver(inner) => {
14859                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14860                        inner,
14861                        out,
14862                    )
14863                }
14864                Self::proxiableUUID(inner) => {
14865                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14866                        inner,
14867                        out,
14868                    )
14869                }
14870                Self::renounceOwnership(inner) => {
14871                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14872                        inner,
14873                        out,
14874                    )
14875                }
14876                Self::setPermissionedProver(inner) => {
14877                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14878                        inner,
14879                        out,
14880                    )
14881                }
14882                Self::setStateHistoryRetentionPeriod(inner) => {
14883                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14884                        inner,
14885                        out,
14886                    )
14887                }
14888                Self::setstateHistoryRetentionPeriod(inner) => {
14889                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14890                        inner,
14891                        out,
14892                    )
14893                }
14894                Self::stateHistoryCommitments(inner) => {
14895                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14896                        inner,
14897                        out,
14898                    )
14899                }
14900                Self::stateHistoryFirstIndex(inner) => {
14901                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14902                        inner,
14903                        out,
14904                    )
14905                }
14906                Self::stateHistoryRetentionPeriod(inner) => {
14907                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14908                        inner,
14909                        out,
14910                    )
14911                }
14912                Self::transferOwnership(inner) => {
14913                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14914                        inner,
14915                        out,
14916                    )
14917                }
14918                Self::updateEpochStartBlock(inner) => {
14919                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14920                        inner,
14921                        out,
14922                    )
14923                }
14924                Self::upgradeToAndCall(inner) => {
14925                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14926                        inner,
14927                        out,
14928                    )
14929                }
14930                Self::votingStakeTableState(inner) => {
14931                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14932                        inner,
14933                        out,
14934                    )
14935                }
14936            }
14937        }
14938    }
14939    ///Container for all the [`LightClientArbitrumV2`](self) custom errors.
14940    #[derive(Clone)]
14941    #[derive(serde::Serialize, serde::Deserialize)]
14942    #[derive(Debug, PartialEq, Eq, Hash)]
14943    pub enum LightClientArbitrumV2Errors {
14944        #[allow(missing_docs)]
14945        AddressEmptyCode(AddressEmptyCode),
14946        #[allow(missing_docs)]
14947        DeprecatedApi(DeprecatedApi),
14948        #[allow(missing_docs)]
14949        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14950        #[allow(missing_docs)]
14951        ERC1967NonPayable(ERC1967NonPayable),
14952        #[allow(missing_docs)]
14953        FailedInnerCall(FailedInnerCall),
14954        #[allow(missing_docs)]
14955        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14956        #[allow(missing_docs)]
14957        InvalidAddress(InvalidAddress),
14958        #[allow(missing_docs)]
14959        InvalidArgs(InvalidArgs),
14960        #[allow(missing_docs)]
14961        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14962        #[allow(missing_docs)]
14963        InvalidInitialization(InvalidInitialization),
14964        #[allow(missing_docs)]
14965        InvalidMaxStateHistory(InvalidMaxStateHistory),
14966        #[allow(missing_docs)]
14967        InvalidProof(InvalidProof),
14968        #[allow(missing_docs)]
14969        InvalidScalar(InvalidScalar),
14970        #[allow(missing_docs)]
14971        MissingEpochRootUpdate(MissingEpochRootUpdate),
14972        #[allow(missing_docs)]
14973        NoChangeRequired(NoChangeRequired),
14974        #[allow(missing_docs)]
14975        NotInitializing(NotInitializing),
14976        #[allow(missing_docs)]
14977        OutdatedState(OutdatedState),
14978        #[allow(missing_docs)]
14979        OwnableInvalidOwner(OwnableInvalidOwner),
14980        #[allow(missing_docs)]
14981        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14982        #[allow(missing_docs)]
14983        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
14984        #[allow(missing_docs)]
14985        ProverNotPermissioned(ProverNotPermissioned),
14986        #[allow(missing_docs)]
14987        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14988        #[allow(missing_docs)]
14989        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14990        #[allow(missing_docs)]
14991        WrongStakeTableUsed(WrongStakeTableUsed),
14992    }
14993    impl LightClientArbitrumV2Errors {
14994        /// All the selectors of this enum.
14995        ///
14996        /// Note that the selectors might not be in the same order as the variants.
14997        /// No guarantees are made about the order of the selectors.
14998        ///
14999        /// Prefer using `SolInterface` methods instead.
15000        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15001            [5u8, 28u8, 70u8, 239u8],
15002            [5u8, 176u8, 92u8, 204u8],
15003            [8u8, 10u8, 232u8, 217u8],
15004            [9u8, 189u8, 227u8, 57u8],
15005            [17u8, 140u8, 218u8, 167u8],
15006            [20u8, 37u8, 234u8, 66u8],
15007            [30u8, 79u8, 189u8, 247u8],
15008            [47u8, 171u8, 146u8, 202u8],
15009            [76u8, 156u8, 140u8, 227u8],
15010            [78u8, 64u8, 92u8, 141u8],
15011            [81u8, 97u8, 128u8, 137u8],
15012            [97u8, 90u8, 146u8, 100u8],
15013            [153u8, 150u8, 179u8, 21u8],
15014            [161u8, 186u8, 7u8, 238u8],
15015            [163u8, 166u8, 71u8, 128u8],
15016            [168u8, 99u8, 174u8, 201u8],
15017            [170u8, 29u8, 73u8, 164u8],
15018            [176u8, 180u8, 56u8, 119u8],
15019            [179u8, 152u8, 151u8, 159u8],
15020            [215u8, 230u8, 188u8, 248u8],
15021            [224u8, 124u8, 141u8, 186u8],
15022            [230u8, 196u8, 36u8, 123u8],
15023            [244u8, 160u8, 238u8, 224u8],
15024            [249u8, 46u8, 232u8, 169u8],
15025        ];
15026        /// The names of the variants in the same order as `SELECTORS`.
15027        pub const VARIANT_NAMES: &'static [&'static str] = &[
15028            ::core::stringify!(OutdatedState),
15029            ::core::stringify!(InvalidScalar),
15030            ::core::stringify!(MissingEpochRootUpdate),
15031            ::core::stringify!(InvalidProof),
15032            ::core::stringify!(OwnableUnauthorizedAccount),
15033            ::core::stringify!(FailedInnerCall),
15034            ::core::stringify!(OwnableInvalidOwner),
15035            ::core::stringify!(OwnershipCannotBeRenounced),
15036            ::core::stringify!(ERC1967InvalidImplementation),
15037            ::core::stringify!(DeprecatedApi),
15038            ::core::stringify!(WrongStakeTableUsed),
15039            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
15040            ::core::stringify!(AddressEmptyCode),
15041            ::core::stringify!(InvalidArgs),
15042            ::core::stringify!(ProverNotPermissioned),
15043            ::core::stringify!(NoChangeRequired),
15044            ::core::stringify!(UUPSUnsupportedProxiableUUID),
15045            ::core::stringify!(InsufficientSnapshotHistory),
15046            ::core::stringify!(ERC1967NonPayable),
15047            ::core::stringify!(NotInitializing),
15048            ::core::stringify!(UUPSUnauthorizedCallContext),
15049            ::core::stringify!(InvalidAddress),
15050            ::core::stringify!(InvalidMaxStateHistory),
15051            ::core::stringify!(InvalidInitialization),
15052        ];
15053        /// The signatures in the same order as `SELECTORS`.
15054        pub const SIGNATURES: &'static [&'static str] = &[
15055            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
15056            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
15057            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
15058            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
15059            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
15060            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
15061            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
15062            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
15063            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
15064            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
15065            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
15066            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
15067            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
15068            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
15069            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
15070            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
15071            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
15072            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
15073            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
15074            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
15075            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
15076            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
15077            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
15078            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
15079        ];
15080        /// Returns the signature for the given selector, if known.
15081        #[inline]
15082        pub fn signature_by_selector(
15083            selector: [u8; 4usize],
15084        ) -> ::core::option::Option<&'static str> {
15085            match Self::SELECTORS.binary_search(&selector) {
15086                ::core::result::Result::Ok(idx) => {
15087                    ::core::option::Option::Some(Self::SIGNATURES[idx])
15088                }
15089                ::core::result::Result::Err(_) => ::core::option::Option::None,
15090            }
15091        }
15092        /// Returns the enum variant name for the given selector, if known.
15093        #[inline]
15094        pub fn name_by_selector(
15095            selector: [u8; 4usize],
15096        ) -> ::core::option::Option<&'static str> {
15097            let sig = Self::signature_by_selector(selector)?;
15098            sig.split_once('(').map(|(name, _)| name)
15099        }
15100    }
15101    #[automatically_derived]
15102    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Errors {
15103        const NAME: &'static str = "LightClientArbitrumV2Errors";
15104        const MIN_DATA_LENGTH: usize = 0usize;
15105        const COUNT: usize = 24usize;
15106        #[inline]
15107        fn selector(&self) -> [u8; 4] {
15108            match self {
15109                Self::AddressEmptyCode(_) => {
15110                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
15111                }
15112                Self::DeprecatedApi(_) => {
15113                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
15114                }
15115                Self::ERC1967InvalidImplementation(_) => {
15116                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
15117                }
15118                Self::ERC1967NonPayable(_) => {
15119                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
15120                }
15121                Self::FailedInnerCall(_) => {
15122                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
15123                }
15124                Self::InsufficientSnapshotHistory(_) => {
15125                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
15126                }
15127                Self::InvalidAddress(_) => {
15128                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
15129                }
15130                Self::InvalidArgs(_) => {
15131                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
15132                }
15133                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
15134                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
15135                }
15136                Self::InvalidInitialization(_) => {
15137                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
15138                }
15139                Self::InvalidMaxStateHistory(_) => {
15140                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
15141                }
15142                Self::InvalidProof(_) => {
15143                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
15144                }
15145                Self::InvalidScalar(_) => {
15146                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
15147                }
15148                Self::MissingEpochRootUpdate(_) => {
15149                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
15150                }
15151                Self::NoChangeRequired(_) => {
15152                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
15153                }
15154                Self::NotInitializing(_) => {
15155                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
15156                }
15157                Self::OutdatedState(_) => {
15158                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
15159                }
15160                Self::OwnableInvalidOwner(_) => {
15161                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
15162                }
15163                Self::OwnableUnauthorizedAccount(_) => {
15164                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
15165                }
15166                Self::OwnershipCannotBeRenounced(_) => {
15167                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
15168                }
15169                Self::ProverNotPermissioned(_) => {
15170                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
15171                }
15172                Self::UUPSUnauthorizedCallContext(_) => {
15173                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
15174                }
15175                Self::UUPSUnsupportedProxiableUUID(_) => {
15176                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
15177                }
15178                Self::WrongStakeTableUsed(_) => {
15179                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
15180                }
15181            }
15182        }
15183        #[inline]
15184        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15185            Self::SELECTORS.get(i).copied()
15186        }
15187        #[inline]
15188        fn valid_selector(selector: [u8; 4]) -> bool {
15189            Self::SELECTORS.binary_search(&selector).is_ok()
15190        }
15191        #[inline]
15192        #[allow(non_snake_case)]
15193        fn abi_decode_raw(
15194            selector: [u8; 4],
15195            data: &[u8],
15196        ) -> alloy_sol_types::Result<Self> {
15197            static DECODE_SHIMS: &[fn(
15198                &[u8],
15199            ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors>] = &[
15200                {
15201                    fn OutdatedState(
15202                        data: &[u8],
15203                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15204                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
15205                                data,
15206                            )
15207                            .map(LightClientArbitrumV2Errors::OutdatedState)
15208                    }
15209                    OutdatedState
15210                },
15211                {
15212                    fn InvalidScalar(
15213                        data: &[u8],
15214                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15215                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
15216                                data,
15217                            )
15218                            .map(LightClientArbitrumV2Errors::InvalidScalar)
15219                    }
15220                    InvalidScalar
15221                },
15222                {
15223                    fn MissingEpochRootUpdate(
15224                        data: &[u8],
15225                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15226                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
15227                                data,
15228                            )
15229                            .map(LightClientArbitrumV2Errors::MissingEpochRootUpdate)
15230                    }
15231                    MissingEpochRootUpdate
15232                },
15233                {
15234                    fn InvalidProof(
15235                        data: &[u8],
15236                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15237                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
15238                            .map(LightClientArbitrumV2Errors::InvalidProof)
15239                    }
15240                    InvalidProof
15241                },
15242                {
15243                    fn OwnableUnauthorizedAccount(
15244                        data: &[u8],
15245                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15246                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
15247                                data,
15248                            )
15249                            .map(LightClientArbitrumV2Errors::OwnableUnauthorizedAccount)
15250                    }
15251                    OwnableUnauthorizedAccount
15252                },
15253                {
15254                    fn FailedInnerCall(
15255                        data: &[u8],
15256                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15257                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
15258                                data,
15259                            )
15260                            .map(LightClientArbitrumV2Errors::FailedInnerCall)
15261                    }
15262                    FailedInnerCall
15263                },
15264                {
15265                    fn OwnableInvalidOwner(
15266                        data: &[u8],
15267                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15268                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15269                                data,
15270                            )
15271                            .map(LightClientArbitrumV2Errors::OwnableInvalidOwner)
15272                    }
15273                    OwnableInvalidOwner
15274                },
15275                {
15276                    fn OwnershipCannotBeRenounced(
15277                        data: &[u8],
15278                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15279                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
15280                                data,
15281                            )
15282                            .map(LightClientArbitrumV2Errors::OwnershipCannotBeRenounced)
15283                    }
15284                    OwnershipCannotBeRenounced
15285                },
15286                {
15287                    fn ERC1967InvalidImplementation(
15288                        data: &[u8],
15289                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15290                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15291                                data,
15292                            )
15293                            .map(
15294                                LightClientArbitrumV2Errors::ERC1967InvalidImplementation,
15295                            )
15296                    }
15297                    ERC1967InvalidImplementation
15298                },
15299                {
15300                    fn DeprecatedApi(
15301                        data: &[u8],
15302                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15303                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15304                                data,
15305                            )
15306                            .map(LightClientArbitrumV2Errors::DeprecatedApi)
15307                    }
15308                    DeprecatedApi
15309                },
15310                {
15311                    fn WrongStakeTableUsed(
15312                        data: &[u8],
15313                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15314                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15315                                data,
15316                            )
15317                            .map(LightClientArbitrumV2Errors::WrongStakeTableUsed)
15318                    }
15319                    WrongStakeTableUsed
15320                },
15321                {
15322                    fn InvalidHotShotBlockForCommitmentCheck(
15323                        data: &[u8],
15324                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15325                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15326                                data,
15327                            )
15328                            .map(
15329                                LightClientArbitrumV2Errors::InvalidHotShotBlockForCommitmentCheck,
15330                            )
15331                    }
15332                    InvalidHotShotBlockForCommitmentCheck
15333                },
15334                {
15335                    fn AddressEmptyCode(
15336                        data: &[u8],
15337                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15338                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15339                                data,
15340                            )
15341                            .map(LightClientArbitrumV2Errors::AddressEmptyCode)
15342                    }
15343                    AddressEmptyCode
15344                },
15345                {
15346                    fn InvalidArgs(
15347                        data: &[u8],
15348                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15349                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
15350                            .map(LightClientArbitrumV2Errors::InvalidArgs)
15351                    }
15352                    InvalidArgs
15353                },
15354                {
15355                    fn ProverNotPermissioned(
15356                        data: &[u8],
15357                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15358                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15359                                data,
15360                            )
15361                            .map(LightClientArbitrumV2Errors::ProverNotPermissioned)
15362                    }
15363                    ProverNotPermissioned
15364                },
15365                {
15366                    fn NoChangeRequired(
15367                        data: &[u8],
15368                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15369                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15370                                data,
15371                            )
15372                            .map(LightClientArbitrumV2Errors::NoChangeRequired)
15373                    }
15374                    NoChangeRequired
15375                },
15376                {
15377                    fn UUPSUnsupportedProxiableUUID(
15378                        data: &[u8],
15379                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15380                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15381                                data,
15382                            )
15383                            .map(
15384                                LightClientArbitrumV2Errors::UUPSUnsupportedProxiableUUID,
15385                            )
15386                    }
15387                    UUPSUnsupportedProxiableUUID
15388                },
15389                {
15390                    fn InsufficientSnapshotHistory(
15391                        data: &[u8],
15392                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15393                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15394                                data,
15395                            )
15396                            .map(
15397                                LightClientArbitrumV2Errors::InsufficientSnapshotHistory,
15398                            )
15399                    }
15400                    InsufficientSnapshotHistory
15401                },
15402                {
15403                    fn ERC1967NonPayable(
15404                        data: &[u8],
15405                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15406                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
15407                                data,
15408                            )
15409                            .map(LightClientArbitrumV2Errors::ERC1967NonPayable)
15410                    }
15411                    ERC1967NonPayable
15412                },
15413                {
15414                    fn NotInitializing(
15415                        data: &[u8],
15416                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15417                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
15418                                data,
15419                            )
15420                            .map(LightClientArbitrumV2Errors::NotInitializing)
15421                    }
15422                    NotInitializing
15423                },
15424                {
15425                    fn UUPSUnauthorizedCallContext(
15426                        data: &[u8],
15427                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15428                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
15429                                data,
15430                            )
15431                            .map(
15432                                LightClientArbitrumV2Errors::UUPSUnauthorizedCallContext,
15433                            )
15434                    }
15435                    UUPSUnauthorizedCallContext
15436                },
15437                {
15438                    fn InvalidAddress(
15439                        data: &[u8],
15440                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15441                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
15442                                data,
15443                            )
15444                            .map(LightClientArbitrumV2Errors::InvalidAddress)
15445                    }
15446                    InvalidAddress
15447                },
15448                {
15449                    fn InvalidMaxStateHistory(
15450                        data: &[u8],
15451                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15452                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
15453                                data,
15454                            )
15455                            .map(LightClientArbitrumV2Errors::InvalidMaxStateHistory)
15456                    }
15457                    InvalidMaxStateHistory
15458                },
15459                {
15460                    fn InvalidInitialization(
15461                        data: &[u8],
15462                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15463                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
15464                                data,
15465                            )
15466                            .map(LightClientArbitrumV2Errors::InvalidInitialization)
15467                    }
15468                    InvalidInitialization
15469                },
15470            ];
15471            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15472                return Err(
15473                    alloy_sol_types::Error::unknown_selector(
15474                        <Self as alloy_sol_types::SolInterface>::NAME,
15475                        selector,
15476                    ),
15477                );
15478            };
15479            DECODE_SHIMS[idx](data)
15480        }
15481        #[inline]
15482        #[allow(non_snake_case)]
15483        fn abi_decode_raw_validate(
15484            selector: [u8; 4],
15485            data: &[u8],
15486        ) -> alloy_sol_types::Result<Self> {
15487            static DECODE_VALIDATE_SHIMS: &[fn(
15488                &[u8],
15489            ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors>] = &[
15490                {
15491                    fn OutdatedState(
15492                        data: &[u8],
15493                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15494                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
15495                                data,
15496                            )
15497                            .map(LightClientArbitrumV2Errors::OutdatedState)
15498                    }
15499                    OutdatedState
15500                },
15501                {
15502                    fn InvalidScalar(
15503                        data: &[u8],
15504                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15505                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
15506                                data,
15507                            )
15508                            .map(LightClientArbitrumV2Errors::InvalidScalar)
15509                    }
15510                    InvalidScalar
15511                },
15512                {
15513                    fn MissingEpochRootUpdate(
15514                        data: &[u8],
15515                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15516                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
15517                                data,
15518                            )
15519                            .map(LightClientArbitrumV2Errors::MissingEpochRootUpdate)
15520                    }
15521                    MissingEpochRootUpdate
15522                },
15523                {
15524                    fn InvalidProof(
15525                        data: &[u8],
15526                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15527                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
15528                                data,
15529                            )
15530                            .map(LightClientArbitrumV2Errors::InvalidProof)
15531                    }
15532                    InvalidProof
15533                },
15534                {
15535                    fn OwnableUnauthorizedAccount(
15536                        data: &[u8],
15537                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15538                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
15539                                data,
15540                            )
15541                            .map(LightClientArbitrumV2Errors::OwnableUnauthorizedAccount)
15542                    }
15543                    OwnableUnauthorizedAccount
15544                },
15545                {
15546                    fn FailedInnerCall(
15547                        data: &[u8],
15548                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15549                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
15550                                data,
15551                            )
15552                            .map(LightClientArbitrumV2Errors::FailedInnerCall)
15553                    }
15554                    FailedInnerCall
15555                },
15556                {
15557                    fn OwnableInvalidOwner(
15558                        data: &[u8],
15559                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15560                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
15561                                data,
15562                            )
15563                            .map(LightClientArbitrumV2Errors::OwnableInvalidOwner)
15564                    }
15565                    OwnableInvalidOwner
15566                },
15567                {
15568                    fn OwnershipCannotBeRenounced(
15569                        data: &[u8],
15570                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15571                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
15572                                data,
15573                            )
15574                            .map(LightClientArbitrumV2Errors::OwnershipCannotBeRenounced)
15575                    }
15576                    OwnershipCannotBeRenounced
15577                },
15578                {
15579                    fn ERC1967InvalidImplementation(
15580                        data: &[u8],
15581                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15582                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
15583                                data,
15584                            )
15585                            .map(
15586                                LightClientArbitrumV2Errors::ERC1967InvalidImplementation,
15587                            )
15588                    }
15589                    ERC1967InvalidImplementation
15590                },
15591                {
15592                    fn DeprecatedApi(
15593                        data: &[u8],
15594                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15595                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
15596                                data,
15597                            )
15598                            .map(LightClientArbitrumV2Errors::DeprecatedApi)
15599                    }
15600                    DeprecatedApi
15601                },
15602                {
15603                    fn WrongStakeTableUsed(
15604                        data: &[u8],
15605                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15606                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
15607                                data,
15608                            )
15609                            .map(LightClientArbitrumV2Errors::WrongStakeTableUsed)
15610                    }
15611                    WrongStakeTableUsed
15612                },
15613                {
15614                    fn InvalidHotShotBlockForCommitmentCheck(
15615                        data: &[u8],
15616                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15617                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
15618                                data,
15619                            )
15620                            .map(
15621                                LightClientArbitrumV2Errors::InvalidHotShotBlockForCommitmentCheck,
15622                            )
15623                    }
15624                    InvalidHotShotBlockForCommitmentCheck
15625                },
15626                {
15627                    fn AddressEmptyCode(
15628                        data: &[u8],
15629                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15630                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
15631                                data,
15632                            )
15633                            .map(LightClientArbitrumV2Errors::AddressEmptyCode)
15634                    }
15635                    AddressEmptyCode
15636                },
15637                {
15638                    fn InvalidArgs(
15639                        data: &[u8],
15640                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15641                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
15642                                data,
15643                            )
15644                            .map(LightClientArbitrumV2Errors::InvalidArgs)
15645                    }
15646                    InvalidArgs
15647                },
15648                {
15649                    fn ProverNotPermissioned(
15650                        data: &[u8],
15651                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15652                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
15653                                data,
15654                            )
15655                            .map(LightClientArbitrumV2Errors::ProverNotPermissioned)
15656                    }
15657                    ProverNotPermissioned
15658                },
15659                {
15660                    fn NoChangeRequired(
15661                        data: &[u8],
15662                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15663                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
15664                                data,
15665                            )
15666                            .map(LightClientArbitrumV2Errors::NoChangeRequired)
15667                    }
15668                    NoChangeRequired
15669                },
15670                {
15671                    fn UUPSUnsupportedProxiableUUID(
15672                        data: &[u8],
15673                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15674                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
15675                                data,
15676                            )
15677                            .map(
15678                                LightClientArbitrumV2Errors::UUPSUnsupportedProxiableUUID,
15679                            )
15680                    }
15681                    UUPSUnsupportedProxiableUUID
15682                },
15683                {
15684                    fn InsufficientSnapshotHistory(
15685                        data: &[u8],
15686                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15687                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15688                                data,
15689                            )
15690                            .map(
15691                                LightClientArbitrumV2Errors::InsufficientSnapshotHistory,
15692                            )
15693                    }
15694                    InsufficientSnapshotHistory
15695                },
15696                {
15697                    fn ERC1967NonPayable(
15698                        data: &[u8],
15699                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15700                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
15701                                data,
15702                            )
15703                            .map(LightClientArbitrumV2Errors::ERC1967NonPayable)
15704                    }
15705                    ERC1967NonPayable
15706                },
15707                {
15708                    fn NotInitializing(
15709                        data: &[u8],
15710                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15711                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
15712                                data,
15713                            )
15714                            .map(LightClientArbitrumV2Errors::NotInitializing)
15715                    }
15716                    NotInitializing
15717                },
15718                {
15719                    fn UUPSUnauthorizedCallContext(
15720                        data: &[u8],
15721                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15722                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
15723                                data,
15724                            )
15725                            .map(
15726                                LightClientArbitrumV2Errors::UUPSUnauthorizedCallContext,
15727                            )
15728                    }
15729                    UUPSUnauthorizedCallContext
15730                },
15731                {
15732                    fn InvalidAddress(
15733                        data: &[u8],
15734                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15735                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
15736                                data,
15737                            )
15738                            .map(LightClientArbitrumV2Errors::InvalidAddress)
15739                    }
15740                    InvalidAddress
15741                },
15742                {
15743                    fn InvalidMaxStateHistory(
15744                        data: &[u8],
15745                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15746                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15747                                data,
15748                            )
15749                            .map(LightClientArbitrumV2Errors::InvalidMaxStateHistory)
15750                    }
15751                    InvalidMaxStateHistory
15752                },
15753                {
15754                    fn InvalidInitialization(
15755                        data: &[u8],
15756                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15757                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
15758                                data,
15759                            )
15760                            .map(LightClientArbitrumV2Errors::InvalidInitialization)
15761                    }
15762                    InvalidInitialization
15763                },
15764            ];
15765            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15766                return Err(
15767                    alloy_sol_types::Error::unknown_selector(
15768                        <Self as alloy_sol_types::SolInterface>::NAME,
15769                        selector,
15770                    ),
15771                );
15772            };
15773            DECODE_VALIDATE_SHIMS[idx](data)
15774        }
15775        #[inline]
15776        fn abi_encoded_size(&self) -> usize {
15777            match self {
15778                Self::AddressEmptyCode(inner) => {
15779                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15780                        inner,
15781                    )
15782                }
15783                Self::DeprecatedApi(inner) => {
15784                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15785                }
15786                Self::ERC1967InvalidImplementation(inner) => {
15787                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15788                        inner,
15789                    )
15790                }
15791                Self::ERC1967NonPayable(inner) => {
15792                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15793                        inner,
15794                    )
15795                }
15796                Self::FailedInnerCall(inner) => {
15797                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15798                        inner,
15799                    )
15800                }
15801                Self::InsufficientSnapshotHistory(inner) => {
15802                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15803                        inner,
15804                    )
15805                }
15806                Self::InvalidAddress(inner) => {
15807                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15808                        inner,
15809                    )
15810                }
15811                Self::InvalidArgs(inner) => {
15812                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15813                }
15814                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15815                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15816                        inner,
15817                    )
15818                }
15819                Self::InvalidInitialization(inner) => {
15820                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15821                        inner,
15822                    )
15823                }
15824                Self::InvalidMaxStateHistory(inner) => {
15825                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15826                        inner,
15827                    )
15828                }
15829                Self::InvalidProof(inner) => {
15830                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15831                }
15832                Self::InvalidScalar(inner) => {
15833                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
15834                }
15835                Self::MissingEpochRootUpdate(inner) => {
15836                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15837                        inner,
15838                    )
15839                }
15840                Self::NoChangeRequired(inner) => {
15841                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15842                        inner,
15843                    )
15844                }
15845                Self::NotInitializing(inner) => {
15846                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15847                        inner,
15848                    )
15849                }
15850                Self::OutdatedState(inner) => {
15851                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15852                }
15853                Self::OwnableInvalidOwner(inner) => {
15854                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15855                        inner,
15856                    )
15857                }
15858                Self::OwnableUnauthorizedAccount(inner) => {
15859                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15860                        inner,
15861                    )
15862                }
15863                Self::OwnershipCannotBeRenounced(inner) => {
15864                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
15865                        inner,
15866                    )
15867                }
15868                Self::ProverNotPermissioned(inner) => {
15869                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15870                        inner,
15871                    )
15872                }
15873                Self::UUPSUnauthorizedCallContext(inner) => {
15874                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15875                        inner,
15876                    )
15877                }
15878                Self::UUPSUnsupportedProxiableUUID(inner) => {
15879                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15880                        inner,
15881                    )
15882                }
15883                Self::WrongStakeTableUsed(inner) => {
15884                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15885                        inner,
15886                    )
15887                }
15888            }
15889        }
15890        #[inline]
15891        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15892            match self {
15893                Self::AddressEmptyCode(inner) => {
15894                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15895                        inner,
15896                        out,
15897                    )
15898                }
15899                Self::DeprecatedApi(inner) => {
15900                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15901                        inner,
15902                        out,
15903                    )
15904                }
15905                Self::ERC1967InvalidImplementation(inner) => {
15906                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15907                        inner,
15908                        out,
15909                    )
15910                }
15911                Self::ERC1967NonPayable(inner) => {
15912                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15913                        inner,
15914                        out,
15915                    )
15916                }
15917                Self::FailedInnerCall(inner) => {
15918                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15919                        inner,
15920                        out,
15921                    )
15922                }
15923                Self::InsufficientSnapshotHistory(inner) => {
15924                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15925                        inner,
15926                        out,
15927                    )
15928                }
15929                Self::InvalidAddress(inner) => {
15930                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15931                        inner,
15932                        out,
15933                    )
15934                }
15935                Self::InvalidArgs(inner) => {
15936                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15937                        inner,
15938                        out,
15939                    )
15940                }
15941                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15942                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15943                        inner,
15944                        out,
15945                    )
15946                }
15947                Self::InvalidInitialization(inner) => {
15948                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15949                        inner,
15950                        out,
15951                    )
15952                }
15953                Self::InvalidMaxStateHistory(inner) => {
15954                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15955                        inner,
15956                        out,
15957                    )
15958                }
15959                Self::InvalidProof(inner) => {
15960                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15961                        inner,
15962                        out,
15963                    )
15964                }
15965                Self::InvalidScalar(inner) => {
15966                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
15967                        inner,
15968                        out,
15969                    )
15970                }
15971                Self::MissingEpochRootUpdate(inner) => {
15972                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15973                        inner,
15974                        out,
15975                    )
15976                }
15977                Self::NoChangeRequired(inner) => {
15978                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15979                        inner,
15980                        out,
15981                    )
15982                }
15983                Self::NotInitializing(inner) => {
15984                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15985                        inner,
15986                        out,
15987                    )
15988                }
15989                Self::OutdatedState(inner) => {
15990                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15991                        inner,
15992                        out,
15993                    )
15994                }
15995                Self::OwnableInvalidOwner(inner) => {
15996                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15997                        inner,
15998                        out,
15999                    )
16000                }
16001                Self::OwnableUnauthorizedAccount(inner) => {
16002                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16003                        inner,
16004                        out,
16005                    )
16006                }
16007                Self::OwnershipCannotBeRenounced(inner) => {
16008                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
16009                        inner,
16010                        out,
16011                    )
16012                }
16013                Self::ProverNotPermissioned(inner) => {
16014                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16015                        inner,
16016                        out,
16017                    )
16018                }
16019                Self::UUPSUnauthorizedCallContext(inner) => {
16020                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16021                        inner,
16022                        out,
16023                    )
16024                }
16025                Self::UUPSUnsupportedProxiableUUID(inner) => {
16026                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16027                        inner,
16028                        out,
16029                    )
16030                }
16031                Self::WrongStakeTableUsed(inner) => {
16032                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16033                        inner,
16034                        out,
16035                    )
16036                }
16037            }
16038        }
16039    }
16040    ///Container for all the [`LightClientArbitrumV2`](self) events.
16041    #[derive(Clone)]
16042    #[derive(serde::Serialize, serde::Deserialize)]
16043    #[derive(Debug, PartialEq, Eq, Hash)]
16044    pub enum LightClientArbitrumV2Events {
16045        #[allow(missing_docs)]
16046        Initialized(Initialized),
16047        #[allow(missing_docs)]
16048        NewEpoch(NewEpoch),
16049        #[allow(missing_docs)]
16050        NewState(NewState),
16051        #[allow(missing_docs)]
16052        OwnershipTransferred(OwnershipTransferred),
16053        #[allow(missing_docs)]
16054        PermissionedProverNotRequired(PermissionedProverNotRequired),
16055        #[allow(missing_docs)]
16056        PermissionedProverRequired(PermissionedProverRequired),
16057        #[allow(missing_docs)]
16058        Upgrade(Upgrade),
16059        #[allow(missing_docs)]
16060        Upgraded(Upgraded),
16061    }
16062    impl LightClientArbitrumV2Events {
16063        /// All the selectors of this enum.
16064        ///
16065        /// Note that the selectors might not be in the same order as the variants.
16066        /// No guarantees are made about the order of the selectors.
16067        ///
16068        /// Prefer using `SolInterface` methods instead.
16069        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16070            [
16071                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16072                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16073                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16074            ],
16075            [
16076                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
16077                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
16078                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
16079            ],
16080            [
16081                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16082                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16083                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16084            ],
16085            [
16086                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
16087                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
16088                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
16089            ],
16090            [
16091                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
16092                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
16093                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
16094            ],
16095            [
16096                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
16097                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
16098                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
16099            ],
16100            [
16101                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
16102                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
16103                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
16104            ],
16105            [
16106                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
16107                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
16108                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
16109            ],
16110        ];
16111        /// The names of the variants in the same order as `SELECTORS`.
16112        pub const VARIANT_NAMES: &'static [&'static str] = &[
16113            ::core::stringify!(NewEpoch),
16114            ::core::stringify!(PermissionedProverRequired),
16115            ::core::stringify!(OwnershipTransferred),
16116            ::core::stringify!(PermissionedProverNotRequired),
16117            ::core::stringify!(NewState),
16118            ::core::stringify!(Upgraded),
16119            ::core::stringify!(Initialized),
16120            ::core::stringify!(Upgrade),
16121        ];
16122        /// The signatures in the same order as `SELECTORS`.
16123        pub const SIGNATURES: &'static [&'static str] = &[
16124            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
16125            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
16126            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
16127            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
16128            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
16129            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
16130            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
16131            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
16132        ];
16133        /// Returns the signature for the given selector, if known.
16134        #[inline]
16135        pub fn signature_by_selector(
16136            selector: [u8; 32usize],
16137        ) -> ::core::option::Option<&'static str> {
16138            match Self::SELECTORS.binary_search(&selector) {
16139                ::core::result::Result::Ok(idx) => {
16140                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16141                }
16142                ::core::result::Result::Err(_) => ::core::option::Option::None,
16143            }
16144        }
16145        /// Returns the enum variant name for the given selector, if known.
16146        #[inline]
16147        pub fn name_by_selector(
16148            selector: [u8; 32usize],
16149        ) -> ::core::option::Option<&'static str> {
16150            let sig = Self::signature_by_selector(selector)?;
16151            sig.split_once('(').map(|(name, _)| name)
16152        }
16153    }
16154    #[automatically_derived]
16155    impl alloy_sol_types::SolEventInterface for LightClientArbitrumV2Events {
16156        const NAME: &'static str = "LightClientArbitrumV2Events";
16157        const COUNT: usize = 8usize;
16158        fn decode_raw_log(
16159            topics: &[alloy_sol_types::Word],
16160            data: &[u8],
16161        ) -> alloy_sol_types::Result<Self> {
16162            match topics.first().copied() {
16163                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16164                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
16165                            topics,
16166                            data,
16167                        )
16168                        .map(Self::Initialized)
16169                }
16170                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16171                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16172                        .map(Self::NewEpoch)
16173                }
16174                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16175                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16176                        .map(Self::NewState)
16177                }
16178                Some(
16179                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16180                ) => {
16181                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
16182                            topics,
16183                            data,
16184                        )
16185                        .map(Self::OwnershipTransferred)
16186                }
16187                Some(
16188                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16189                ) => {
16190                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16191                            topics,
16192                            data,
16193                        )
16194                        .map(Self::PermissionedProverNotRequired)
16195                }
16196                Some(
16197                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16198                ) => {
16199                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16200                            topics,
16201                            data,
16202                        )
16203                        .map(Self::PermissionedProverRequired)
16204                }
16205                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16206                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16207                        .map(Self::Upgrade)
16208                }
16209                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16210                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16211                        .map(Self::Upgraded)
16212                }
16213                _ => {
16214                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16215                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16216                        log: alloy_sol_types::private::Box::new(
16217                            alloy_sol_types::private::LogData::new_unchecked(
16218                                topics.to_vec(),
16219                                data.to_vec().into(),
16220                            ),
16221                        ),
16222                    })
16223                }
16224            }
16225        }
16226    }
16227    #[automatically_derived]
16228    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumV2Events {
16229        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16230            match self {
16231                Self::Initialized(inner) => {
16232                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16233                }
16234                Self::NewEpoch(inner) => {
16235                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16236                }
16237                Self::NewState(inner) => {
16238                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16239                }
16240                Self::OwnershipTransferred(inner) => {
16241                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16242                }
16243                Self::PermissionedProverNotRequired(inner) => {
16244                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16245                }
16246                Self::PermissionedProverRequired(inner) => {
16247                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16248                }
16249                Self::Upgrade(inner) => {
16250                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16251                }
16252                Self::Upgraded(inner) => {
16253                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16254                }
16255            }
16256        }
16257        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16258            match self {
16259                Self::Initialized(inner) => {
16260                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16261                }
16262                Self::NewEpoch(inner) => {
16263                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16264                }
16265                Self::NewState(inner) => {
16266                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16267                }
16268                Self::OwnershipTransferred(inner) => {
16269                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16270                }
16271                Self::PermissionedProverNotRequired(inner) => {
16272                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16273                }
16274                Self::PermissionedProverRequired(inner) => {
16275                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16276                }
16277                Self::Upgrade(inner) => {
16278                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16279                }
16280                Self::Upgraded(inner) => {
16281                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16282                }
16283            }
16284        }
16285    }
16286    use alloy::contract as alloy_contract;
16287    /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
16288
16289See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
16290    #[inline]
16291    pub const fn new<
16292        P: alloy_contract::private::Provider<N>,
16293        N: alloy_contract::private::Network,
16294    >(
16295        address: alloy_sol_types::private::Address,
16296        __provider: P,
16297    ) -> LightClientArbitrumV2Instance<P, N> {
16298        LightClientArbitrumV2Instance::<P, N>::new(address, __provider)
16299    }
16300    /**Deploys this contract using the given `provider` and constructor arguments, if any.
16301
16302Returns a new instance of the contract, if the deployment was successful.
16303
16304For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16305    #[inline]
16306    pub fn deploy<
16307        P: alloy_contract::private::Provider<N>,
16308        N: alloy_contract::private::Network,
16309    >(
16310        __provider: P,
16311    ) -> impl ::core::future::Future<
16312        Output = alloy_contract::Result<LightClientArbitrumV2Instance<P, N>>,
16313    > {
16314        LightClientArbitrumV2Instance::<P, N>::deploy(__provider)
16315    }
16316    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16317and constructor arguments, if any.
16318
16319This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16320the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16321    #[inline]
16322    pub fn deploy_builder<
16323        P: alloy_contract::private::Provider<N>,
16324        N: alloy_contract::private::Network,
16325    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16326        LightClientArbitrumV2Instance::<P, N>::deploy_builder(__provider)
16327    }
16328    /**A [`LightClientArbitrumV2`](self) instance.
16329
16330Contains type-safe methods for interacting with an on-chain instance of the
16331[`LightClientArbitrumV2`](self) contract located at a given `address`, using a given
16332provider `P`.
16333
16334If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16335documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16336be used to deploy a new instance of the contract.
16337
16338See the [module-level documentation](self) for all the available methods.*/
16339    #[derive(Clone)]
16340    pub struct LightClientArbitrumV2Instance<P, N = alloy_contract::private::Ethereum> {
16341        address: alloy_sol_types::private::Address,
16342        provider: P,
16343        _network: ::core::marker::PhantomData<N>,
16344    }
16345    #[automatically_derived]
16346    impl<P, N> ::core::fmt::Debug for LightClientArbitrumV2Instance<P, N> {
16347        #[inline]
16348        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16349            f.debug_tuple("LightClientArbitrumV2Instance").field(&self.address).finish()
16350        }
16351    }
16352    /// Instantiation and getters/setters.
16353    impl<
16354        P: alloy_contract::private::Provider<N>,
16355        N: alloy_contract::private::Network,
16356    > LightClientArbitrumV2Instance<P, N> {
16357        /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
16358
16359See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
16360        #[inline]
16361        pub const fn new(
16362            address: alloy_sol_types::private::Address,
16363            __provider: P,
16364        ) -> Self {
16365            Self {
16366                address,
16367                provider: __provider,
16368                _network: ::core::marker::PhantomData,
16369            }
16370        }
16371        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16372
16373Returns a new instance of the contract, if the deployment was successful.
16374
16375For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16376        #[inline]
16377        pub async fn deploy(
16378            __provider: P,
16379        ) -> alloy_contract::Result<LightClientArbitrumV2Instance<P, N>> {
16380            let call_builder = Self::deploy_builder(__provider);
16381            let contract_address = call_builder.deploy().await?;
16382            Ok(Self::new(contract_address, call_builder.provider))
16383        }
16384        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16385and constructor arguments, if any.
16386
16387This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16388the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16389        #[inline]
16390        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16391            alloy_contract::RawCallBuilder::new_raw_deploy(
16392                __provider,
16393                ::core::clone::Clone::clone(&BYTECODE),
16394            )
16395        }
16396        /// Returns a reference to the address.
16397        #[inline]
16398        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16399            &self.address
16400        }
16401        /// Sets the address.
16402        #[inline]
16403        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16404            self.address = address;
16405        }
16406        /// Sets the address and returns `self`.
16407        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16408            self.set_address(address);
16409            self
16410        }
16411        /// Returns a reference to the provider.
16412        #[inline]
16413        pub const fn provider(&self) -> &P {
16414            &self.provider
16415        }
16416    }
16417    impl<P: ::core::clone::Clone, N> LightClientArbitrumV2Instance<&P, N> {
16418        /// Clones the provider and returns a new instance with the cloned provider.
16419        #[inline]
16420        pub fn with_cloned_provider(self) -> LightClientArbitrumV2Instance<P, N> {
16421            LightClientArbitrumV2Instance {
16422                address: self.address,
16423                provider: ::core::clone::Clone::clone(&self.provider),
16424                _network: ::core::marker::PhantomData,
16425            }
16426        }
16427    }
16428    /// Function calls.
16429    impl<
16430        P: alloy_contract::private::Provider<N>,
16431        N: alloy_contract::private::Network,
16432    > LightClientArbitrumV2Instance<P, N> {
16433        /// Creates a new call builder using this contract instance's provider and address.
16434        ///
16435        /// Note that the call can be any function call, not just those defined in this
16436        /// contract. Prefer using the other methods for building type-safe contract calls.
16437        pub fn call_builder<C: alloy_sol_types::SolCall>(
16438            &self,
16439            call: &C,
16440        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
16441            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16442        }
16443        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16444        pub fn UPGRADE_INTERFACE_VERSION(
16445            &self,
16446        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
16447            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
16448        }
16449        ///Creates a new call builder for the [`_getVk`] function.
16450        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
16451            self.call_builder(&_getVkCall)
16452        }
16453        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16454        pub fn blocksPerEpoch(
16455            &self,
16456        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
16457            self.call_builder(&blocksPerEpochCall)
16458        }
16459        ///Creates a new call builder for the [`currentBlockNumber`] function.
16460        pub fn currentBlockNumber(
16461            &self,
16462        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
16463            self.call_builder(&currentBlockNumberCall)
16464        }
16465        ///Creates a new call builder for the [`currentEpoch`] function.
16466        pub fn currentEpoch(
16467            &self,
16468        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
16469            self.call_builder(&currentEpochCall)
16470        }
16471        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16472        pub fn disablePermissionedProverMode(
16473            &self,
16474        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
16475            self.call_builder(&disablePermissionedProverModeCall)
16476        }
16477        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16478        pub fn epochFromBlockNumber(
16479            &self,
16480            _blockNum: u64,
16481            _blocksPerEpoch: u64,
16482        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
16483            self.call_builder(
16484                &epochFromBlockNumberCall {
16485                    _blockNum,
16486                    _blocksPerEpoch,
16487                },
16488            )
16489        }
16490        ///Creates a new call builder for the [`epochStartBlock`] function.
16491        pub fn epochStartBlock(
16492            &self,
16493        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
16494            self.call_builder(&epochStartBlockCall)
16495        }
16496        ///Creates a new call builder for the [`finalizedState`] function.
16497        pub fn finalizedState(
16498            &self,
16499        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
16500            self.call_builder(&finalizedStateCall)
16501        }
16502        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16503        pub fn genesisStakeTableState(
16504            &self,
16505        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
16506            self.call_builder(&genesisStakeTableStateCall)
16507        }
16508        ///Creates a new call builder for the [`genesisState`] function.
16509        pub fn genesisState(
16510            &self,
16511        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
16512            self.call_builder(&genesisStateCall)
16513        }
16514        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16515        pub fn getHotShotCommitment(
16516            &self,
16517            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16518        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
16519            self.call_builder(
16520                &getHotShotCommitmentCall {
16521                    hotShotBlockHeight,
16522                },
16523            )
16524        }
16525        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16526        pub fn getStateHistoryCount(
16527            &self,
16528        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
16529            self.call_builder(&getStateHistoryCountCall)
16530        }
16531        ///Creates a new call builder for the [`getVersion`] function.
16532        pub fn getVersion(
16533            &self,
16534        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
16535            self.call_builder(&getVersionCall)
16536        }
16537        ///Creates a new call builder for the [`initialize`] function.
16538        pub fn initialize(
16539            &self,
16540            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16541            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16542            _stateHistoryRetentionPeriod: u32,
16543            owner: alloy::sol_types::private::Address,
16544        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
16545            self.call_builder(
16546                &initializeCall {
16547                    _genesis,
16548                    _genesisStakeTableState,
16549                    _stateHistoryRetentionPeriod,
16550                    owner,
16551                },
16552            )
16553        }
16554        ///Creates a new call builder for the [`initializeV2`] function.
16555        pub fn initializeV2(
16556            &self,
16557            _blocksPerEpoch: u64,
16558            _epochStartBlock: u64,
16559        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
16560            self.call_builder(
16561                &initializeV2Call {
16562                    _blocksPerEpoch,
16563                    _epochStartBlock,
16564                },
16565            )
16566        }
16567        ///Creates a new call builder for the [`isEpochRoot`] function.
16568        pub fn isEpochRoot(
16569            &self,
16570            blockHeight: u64,
16571        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
16572            self.call_builder(&isEpochRootCall { blockHeight })
16573        }
16574        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16575        pub fn isGtEpochRoot(
16576            &self,
16577            blockHeight: u64,
16578        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
16579            self.call_builder(&isGtEpochRootCall { blockHeight })
16580        }
16581        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16582        pub fn isPermissionedProverEnabled(
16583            &self,
16584        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
16585            self.call_builder(&isPermissionedProverEnabledCall)
16586        }
16587        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16588        pub fn lagOverEscapeHatchThreshold(
16589            &self,
16590            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16591            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
16592        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
16593            self.call_builder(
16594                &lagOverEscapeHatchThresholdCall {
16595                    blockNumber,
16596                    blockThreshold,
16597                },
16598            )
16599        }
16600        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16601        pub fn newFinalizedState_0(
16602            &self,
16603            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16604            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16605        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
16606            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16607        }
16608        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16609        pub fn newFinalizedState_1(
16610            &self,
16611            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16612            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16613            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16614        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
16615            self.call_builder(
16616                &newFinalizedState_1Call {
16617                    newState,
16618                    nextStakeTable,
16619                    proof,
16620                },
16621            )
16622        }
16623        ///Creates a new call builder for the [`owner`] function.
16624        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
16625            self.call_builder(&ownerCall)
16626        }
16627        ///Creates a new call builder for the [`permissionedProver`] function.
16628        pub fn permissionedProver(
16629            &self,
16630        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
16631            self.call_builder(&permissionedProverCall)
16632        }
16633        ///Creates a new call builder for the [`proxiableUUID`] function.
16634        pub fn proxiableUUID(
16635            &self,
16636        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
16637            self.call_builder(&proxiableUUIDCall)
16638        }
16639        ///Creates a new call builder for the [`renounceOwnership`] function.
16640        pub fn renounceOwnership(
16641            &self,
16642        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
16643            self.call_builder(&renounceOwnershipCall)
16644        }
16645        ///Creates a new call builder for the [`setPermissionedProver`] function.
16646        pub fn setPermissionedProver(
16647            &self,
16648            prover: alloy::sol_types::private::Address,
16649        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
16650            self.call_builder(
16651                &setPermissionedProverCall {
16652                    prover,
16653                },
16654            )
16655        }
16656        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16657        pub fn setStateHistoryRetentionPeriod(
16658            &self,
16659            historySeconds: u32,
16660        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
16661            self.call_builder(
16662                &setStateHistoryRetentionPeriodCall {
16663                    historySeconds,
16664                },
16665            )
16666        }
16667        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16668        pub fn setstateHistoryRetentionPeriod(
16669            &self,
16670            historySeconds: u32,
16671        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
16672            self.call_builder(
16673                &setstateHistoryRetentionPeriodCall {
16674                    historySeconds,
16675                },
16676            )
16677        }
16678        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16679        pub fn stateHistoryCommitments(
16680            &self,
16681            _0: alloy::sol_types::private::primitives::aliases::U256,
16682        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
16683            self.call_builder(&stateHistoryCommitmentsCall(_0))
16684        }
16685        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16686        pub fn stateHistoryFirstIndex(
16687            &self,
16688        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
16689            self.call_builder(&stateHistoryFirstIndexCall)
16690        }
16691        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16692        pub fn stateHistoryRetentionPeriod(
16693            &self,
16694        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
16695            self.call_builder(&stateHistoryRetentionPeriodCall)
16696        }
16697        ///Creates a new call builder for the [`transferOwnership`] function.
16698        pub fn transferOwnership(
16699            &self,
16700            newOwner: alloy::sol_types::private::Address,
16701        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
16702            self.call_builder(&transferOwnershipCall { newOwner })
16703        }
16704        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16705        pub fn updateEpochStartBlock(
16706            &self,
16707            newEpochStartBlock: u64,
16708        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
16709            self.call_builder(
16710                &updateEpochStartBlockCall {
16711                    newEpochStartBlock,
16712                },
16713            )
16714        }
16715        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16716        pub fn upgradeToAndCall(
16717            &self,
16718            newImplementation: alloy::sol_types::private::Address,
16719            data: alloy::sol_types::private::Bytes,
16720        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
16721            self.call_builder(
16722                &upgradeToAndCallCall {
16723                    newImplementation,
16724                    data,
16725                },
16726            )
16727        }
16728        ///Creates a new call builder for the [`votingStakeTableState`] function.
16729        pub fn votingStakeTableState(
16730            &self,
16731        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
16732            self.call_builder(&votingStakeTableStateCall)
16733        }
16734    }
16735    /// Event filters.
16736    impl<
16737        P: alloy_contract::private::Provider<N>,
16738        N: alloy_contract::private::Network,
16739    > LightClientArbitrumV2Instance<P, N> {
16740        /// Creates a new event filter using this contract instance's provider and address.
16741        ///
16742        /// Note that the type can be any event, not just those defined in this contract.
16743        /// Prefer using the other methods for building type-safe event filters.
16744        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16745            &self,
16746        ) -> alloy_contract::Event<&P, E, N> {
16747            alloy_contract::Event::new_sol(&self.provider, &self.address)
16748        }
16749        ///Creates a new event filter for the [`Initialized`] event.
16750        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
16751            self.event_filter::<Initialized>()
16752        }
16753        ///Creates a new event filter for the [`NewEpoch`] event.
16754        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
16755            self.event_filter::<NewEpoch>()
16756        }
16757        ///Creates a new event filter for the [`NewState`] event.
16758        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
16759            self.event_filter::<NewState>()
16760        }
16761        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16762        pub fn OwnershipTransferred_filter(
16763            &self,
16764        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
16765            self.event_filter::<OwnershipTransferred>()
16766        }
16767        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
16768        pub fn PermissionedProverNotRequired_filter(
16769            &self,
16770        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
16771            self.event_filter::<PermissionedProverNotRequired>()
16772        }
16773        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
16774        pub fn PermissionedProverRequired_filter(
16775            &self,
16776        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
16777            self.event_filter::<PermissionedProverRequired>()
16778        }
16779        ///Creates a new event filter for the [`Upgrade`] event.
16780        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
16781            self.event_filter::<Upgrade>()
16782        }
16783        ///Creates a new event filter for the [`Upgraded`] event.
16784        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
16785            self.event_filter::<Upgraded>()
16786        }
16787    }
16788}