hotshot_contract_adapter/bindings/
plonk_verifier_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        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
640    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239/**
2240
2241Generated by the following Solidity interface...
2242```solidity
2243library BN254 {
2244    type BaseField is uint256;
2245    type ScalarField is uint256;
2246    struct G1Point {
2247        BaseField x;
2248        BaseField y;
2249    }
2250}
2251
2252library IPlonkVerifier {
2253    struct PlonkProof {
2254        BN254.G1Point wire0;
2255        BN254.G1Point wire1;
2256        BN254.G1Point wire2;
2257        BN254.G1Point wire3;
2258        BN254.G1Point wire4;
2259        BN254.G1Point prodPerm;
2260        BN254.G1Point split0;
2261        BN254.G1Point split1;
2262        BN254.G1Point split2;
2263        BN254.G1Point split3;
2264        BN254.G1Point split4;
2265        BN254.G1Point zeta;
2266        BN254.G1Point zetaOmega;
2267        BN254.ScalarField wireEval0;
2268        BN254.ScalarField wireEval1;
2269        BN254.ScalarField wireEval2;
2270        BN254.ScalarField wireEval3;
2271        BN254.ScalarField wireEval4;
2272        BN254.ScalarField sigmaEval0;
2273        BN254.ScalarField sigmaEval1;
2274        BN254.ScalarField sigmaEval2;
2275        BN254.ScalarField sigmaEval3;
2276        BN254.ScalarField prodPermZetaOmegaEval;
2277    }
2278    struct VerifyingKey {
2279        uint256 domainSize;
2280        uint256 numInputs;
2281        BN254.G1Point sigma0;
2282        BN254.G1Point sigma1;
2283        BN254.G1Point sigma2;
2284        BN254.G1Point sigma3;
2285        BN254.G1Point sigma4;
2286        BN254.G1Point q1;
2287        BN254.G1Point q2;
2288        BN254.G1Point q3;
2289        BN254.G1Point q4;
2290        BN254.G1Point qM12;
2291        BN254.G1Point qM34;
2292        BN254.G1Point qO;
2293        BN254.G1Point qC;
2294        BN254.G1Point qH1;
2295        BN254.G1Point qH2;
2296        BN254.G1Point qH3;
2297        BN254.G1Point qH4;
2298        BN254.G1Point qEcc;
2299        bytes32 g2LSB;
2300        bytes32 g2MSB;
2301    }
2302}
2303
2304interface PlonkVerifierV2 {
2305    error BN254G1AddFailed();
2306    error BN254PairingProdFailed();
2307    error BN254ScalarInvZero();
2308    error BN254ScalarMulFailed();
2309    error InvalidG1();
2310    error InvalidPlonkArgs();
2311    error InvalidScalar();
2312    error PowPrecompileFailed();
2313    error UnsupportedDegree();
2314    error WrongPlonkVK();
2315
2316    function BETA_H_X0() external view returns (uint256);
2317    function BETA_H_X1() external view returns (uint256);
2318    function BETA_H_Y0() external view returns (uint256);
2319    function BETA_H_Y1() external view returns (uint256);
2320    function COSET_K1() external view returns (uint256);
2321    function COSET_K2() external view returns (uint256);
2322    function COSET_K3() external view returns (uint256);
2323    function COSET_K4() external view returns (uint256);
2324    function verify(IPlonkVerifier.VerifyingKey memory verifyingKey, uint256[11] memory publicInput, IPlonkVerifier.PlonkProof memory proof) external view returns (bool);
2325}
2326```
2327
2328...which was generated by the following JSON ABI:
2329```json
2330[
2331  {
2332    "type": "function",
2333    "name": "BETA_H_X0",
2334    "inputs": [],
2335    "outputs": [
2336      {
2337        "name": "",
2338        "type": "uint256",
2339        "internalType": "uint256"
2340      }
2341    ],
2342    "stateMutability": "view"
2343  },
2344  {
2345    "type": "function",
2346    "name": "BETA_H_X1",
2347    "inputs": [],
2348    "outputs": [
2349      {
2350        "name": "",
2351        "type": "uint256",
2352        "internalType": "uint256"
2353      }
2354    ],
2355    "stateMutability": "view"
2356  },
2357  {
2358    "type": "function",
2359    "name": "BETA_H_Y0",
2360    "inputs": [],
2361    "outputs": [
2362      {
2363        "name": "",
2364        "type": "uint256",
2365        "internalType": "uint256"
2366      }
2367    ],
2368    "stateMutability": "view"
2369  },
2370  {
2371    "type": "function",
2372    "name": "BETA_H_Y1",
2373    "inputs": [],
2374    "outputs": [
2375      {
2376        "name": "",
2377        "type": "uint256",
2378        "internalType": "uint256"
2379      }
2380    ],
2381    "stateMutability": "view"
2382  },
2383  {
2384    "type": "function",
2385    "name": "COSET_K1",
2386    "inputs": [],
2387    "outputs": [
2388      {
2389        "name": "",
2390        "type": "uint256",
2391        "internalType": "uint256"
2392      }
2393    ],
2394    "stateMutability": "view"
2395  },
2396  {
2397    "type": "function",
2398    "name": "COSET_K2",
2399    "inputs": [],
2400    "outputs": [
2401      {
2402        "name": "",
2403        "type": "uint256",
2404        "internalType": "uint256"
2405      }
2406    ],
2407    "stateMutability": "view"
2408  },
2409  {
2410    "type": "function",
2411    "name": "COSET_K3",
2412    "inputs": [],
2413    "outputs": [
2414      {
2415        "name": "",
2416        "type": "uint256",
2417        "internalType": "uint256"
2418      }
2419    ],
2420    "stateMutability": "view"
2421  },
2422  {
2423    "type": "function",
2424    "name": "COSET_K4",
2425    "inputs": [],
2426    "outputs": [
2427      {
2428        "name": "",
2429        "type": "uint256",
2430        "internalType": "uint256"
2431      }
2432    ],
2433    "stateMutability": "view"
2434  },
2435  {
2436    "type": "function",
2437    "name": "verify",
2438    "inputs": [
2439      {
2440        "name": "verifyingKey",
2441        "type": "tuple",
2442        "internalType": "struct IPlonkVerifier.VerifyingKey",
2443        "components": [
2444          {
2445            "name": "domainSize",
2446            "type": "uint256",
2447            "internalType": "uint256"
2448          },
2449          {
2450            "name": "numInputs",
2451            "type": "uint256",
2452            "internalType": "uint256"
2453          },
2454          {
2455            "name": "sigma0",
2456            "type": "tuple",
2457            "internalType": "struct BN254.G1Point",
2458            "components": [
2459              {
2460                "name": "x",
2461                "type": "uint256",
2462                "internalType": "BN254.BaseField"
2463              },
2464              {
2465                "name": "y",
2466                "type": "uint256",
2467                "internalType": "BN254.BaseField"
2468              }
2469            ]
2470          },
2471          {
2472            "name": "sigma1",
2473            "type": "tuple",
2474            "internalType": "struct BN254.G1Point",
2475            "components": [
2476              {
2477                "name": "x",
2478                "type": "uint256",
2479                "internalType": "BN254.BaseField"
2480              },
2481              {
2482                "name": "y",
2483                "type": "uint256",
2484                "internalType": "BN254.BaseField"
2485              }
2486            ]
2487          },
2488          {
2489            "name": "sigma2",
2490            "type": "tuple",
2491            "internalType": "struct BN254.G1Point",
2492            "components": [
2493              {
2494                "name": "x",
2495                "type": "uint256",
2496                "internalType": "BN254.BaseField"
2497              },
2498              {
2499                "name": "y",
2500                "type": "uint256",
2501                "internalType": "BN254.BaseField"
2502              }
2503            ]
2504          },
2505          {
2506            "name": "sigma3",
2507            "type": "tuple",
2508            "internalType": "struct BN254.G1Point",
2509            "components": [
2510              {
2511                "name": "x",
2512                "type": "uint256",
2513                "internalType": "BN254.BaseField"
2514              },
2515              {
2516                "name": "y",
2517                "type": "uint256",
2518                "internalType": "BN254.BaseField"
2519              }
2520            ]
2521          },
2522          {
2523            "name": "sigma4",
2524            "type": "tuple",
2525            "internalType": "struct BN254.G1Point",
2526            "components": [
2527              {
2528                "name": "x",
2529                "type": "uint256",
2530                "internalType": "BN254.BaseField"
2531              },
2532              {
2533                "name": "y",
2534                "type": "uint256",
2535                "internalType": "BN254.BaseField"
2536              }
2537            ]
2538          },
2539          {
2540            "name": "q1",
2541            "type": "tuple",
2542            "internalType": "struct BN254.G1Point",
2543            "components": [
2544              {
2545                "name": "x",
2546                "type": "uint256",
2547                "internalType": "BN254.BaseField"
2548              },
2549              {
2550                "name": "y",
2551                "type": "uint256",
2552                "internalType": "BN254.BaseField"
2553              }
2554            ]
2555          },
2556          {
2557            "name": "q2",
2558            "type": "tuple",
2559            "internalType": "struct BN254.G1Point",
2560            "components": [
2561              {
2562                "name": "x",
2563                "type": "uint256",
2564                "internalType": "BN254.BaseField"
2565              },
2566              {
2567                "name": "y",
2568                "type": "uint256",
2569                "internalType": "BN254.BaseField"
2570              }
2571            ]
2572          },
2573          {
2574            "name": "q3",
2575            "type": "tuple",
2576            "internalType": "struct BN254.G1Point",
2577            "components": [
2578              {
2579                "name": "x",
2580                "type": "uint256",
2581                "internalType": "BN254.BaseField"
2582              },
2583              {
2584                "name": "y",
2585                "type": "uint256",
2586                "internalType": "BN254.BaseField"
2587              }
2588            ]
2589          },
2590          {
2591            "name": "q4",
2592            "type": "tuple",
2593            "internalType": "struct BN254.G1Point",
2594            "components": [
2595              {
2596                "name": "x",
2597                "type": "uint256",
2598                "internalType": "BN254.BaseField"
2599              },
2600              {
2601                "name": "y",
2602                "type": "uint256",
2603                "internalType": "BN254.BaseField"
2604              }
2605            ]
2606          },
2607          {
2608            "name": "qM12",
2609            "type": "tuple",
2610            "internalType": "struct BN254.G1Point",
2611            "components": [
2612              {
2613                "name": "x",
2614                "type": "uint256",
2615                "internalType": "BN254.BaseField"
2616              },
2617              {
2618                "name": "y",
2619                "type": "uint256",
2620                "internalType": "BN254.BaseField"
2621              }
2622            ]
2623          },
2624          {
2625            "name": "qM34",
2626            "type": "tuple",
2627            "internalType": "struct BN254.G1Point",
2628            "components": [
2629              {
2630                "name": "x",
2631                "type": "uint256",
2632                "internalType": "BN254.BaseField"
2633              },
2634              {
2635                "name": "y",
2636                "type": "uint256",
2637                "internalType": "BN254.BaseField"
2638              }
2639            ]
2640          },
2641          {
2642            "name": "qO",
2643            "type": "tuple",
2644            "internalType": "struct BN254.G1Point",
2645            "components": [
2646              {
2647                "name": "x",
2648                "type": "uint256",
2649                "internalType": "BN254.BaseField"
2650              },
2651              {
2652                "name": "y",
2653                "type": "uint256",
2654                "internalType": "BN254.BaseField"
2655              }
2656            ]
2657          },
2658          {
2659            "name": "qC",
2660            "type": "tuple",
2661            "internalType": "struct BN254.G1Point",
2662            "components": [
2663              {
2664                "name": "x",
2665                "type": "uint256",
2666                "internalType": "BN254.BaseField"
2667              },
2668              {
2669                "name": "y",
2670                "type": "uint256",
2671                "internalType": "BN254.BaseField"
2672              }
2673            ]
2674          },
2675          {
2676            "name": "qH1",
2677            "type": "tuple",
2678            "internalType": "struct BN254.G1Point",
2679            "components": [
2680              {
2681                "name": "x",
2682                "type": "uint256",
2683                "internalType": "BN254.BaseField"
2684              },
2685              {
2686                "name": "y",
2687                "type": "uint256",
2688                "internalType": "BN254.BaseField"
2689              }
2690            ]
2691          },
2692          {
2693            "name": "qH2",
2694            "type": "tuple",
2695            "internalType": "struct BN254.G1Point",
2696            "components": [
2697              {
2698                "name": "x",
2699                "type": "uint256",
2700                "internalType": "BN254.BaseField"
2701              },
2702              {
2703                "name": "y",
2704                "type": "uint256",
2705                "internalType": "BN254.BaseField"
2706              }
2707            ]
2708          },
2709          {
2710            "name": "qH3",
2711            "type": "tuple",
2712            "internalType": "struct BN254.G1Point",
2713            "components": [
2714              {
2715                "name": "x",
2716                "type": "uint256",
2717                "internalType": "BN254.BaseField"
2718              },
2719              {
2720                "name": "y",
2721                "type": "uint256",
2722                "internalType": "BN254.BaseField"
2723              }
2724            ]
2725          },
2726          {
2727            "name": "qH4",
2728            "type": "tuple",
2729            "internalType": "struct BN254.G1Point",
2730            "components": [
2731              {
2732                "name": "x",
2733                "type": "uint256",
2734                "internalType": "BN254.BaseField"
2735              },
2736              {
2737                "name": "y",
2738                "type": "uint256",
2739                "internalType": "BN254.BaseField"
2740              }
2741            ]
2742          },
2743          {
2744            "name": "qEcc",
2745            "type": "tuple",
2746            "internalType": "struct BN254.G1Point",
2747            "components": [
2748              {
2749                "name": "x",
2750                "type": "uint256",
2751                "internalType": "BN254.BaseField"
2752              },
2753              {
2754                "name": "y",
2755                "type": "uint256",
2756                "internalType": "BN254.BaseField"
2757              }
2758            ]
2759          },
2760          {
2761            "name": "g2LSB",
2762            "type": "bytes32",
2763            "internalType": "bytes32"
2764          },
2765          {
2766            "name": "g2MSB",
2767            "type": "bytes32",
2768            "internalType": "bytes32"
2769          }
2770        ]
2771      },
2772      {
2773        "name": "publicInput",
2774        "type": "uint256[11]",
2775        "internalType": "uint256[11]"
2776      },
2777      {
2778        "name": "proof",
2779        "type": "tuple",
2780        "internalType": "struct IPlonkVerifier.PlonkProof",
2781        "components": [
2782          {
2783            "name": "wire0",
2784            "type": "tuple",
2785            "internalType": "struct BN254.G1Point",
2786            "components": [
2787              {
2788                "name": "x",
2789                "type": "uint256",
2790                "internalType": "BN254.BaseField"
2791              },
2792              {
2793                "name": "y",
2794                "type": "uint256",
2795                "internalType": "BN254.BaseField"
2796              }
2797            ]
2798          },
2799          {
2800            "name": "wire1",
2801            "type": "tuple",
2802            "internalType": "struct BN254.G1Point",
2803            "components": [
2804              {
2805                "name": "x",
2806                "type": "uint256",
2807                "internalType": "BN254.BaseField"
2808              },
2809              {
2810                "name": "y",
2811                "type": "uint256",
2812                "internalType": "BN254.BaseField"
2813              }
2814            ]
2815          },
2816          {
2817            "name": "wire2",
2818            "type": "tuple",
2819            "internalType": "struct BN254.G1Point",
2820            "components": [
2821              {
2822                "name": "x",
2823                "type": "uint256",
2824                "internalType": "BN254.BaseField"
2825              },
2826              {
2827                "name": "y",
2828                "type": "uint256",
2829                "internalType": "BN254.BaseField"
2830              }
2831            ]
2832          },
2833          {
2834            "name": "wire3",
2835            "type": "tuple",
2836            "internalType": "struct BN254.G1Point",
2837            "components": [
2838              {
2839                "name": "x",
2840                "type": "uint256",
2841                "internalType": "BN254.BaseField"
2842              },
2843              {
2844                "name": "y",
2845                "type": "uint256",
2846                "internalType": "BN254.BaseField"
2847              }
2848            ]
2849          },
2850          {
2851            "name": "wire4",
2852            "type": "tuple",
2853            "internalType": "struct BN254.G1Point",
2854            "components": [
2855              {
2856                "name": "x",
2857                "type": "uint256",
2858                "internalType": "BN254.BaseField"
2859              },
2860              {
2861                "name": "y",
2862                "type": "uint256",
2863                "internalType": "BN254.BaseField"
2864              }
2865            ]
2866          },
2867          {
2868            "name": "prodPerm",
2869            "type": "tuple",
2870            "internalType": "struct BN254.G1Point",
2871            "components": [
2872              {
2873                "name": "x",
2874                "type": "uint256",
2875                "internalType": "BN254.BaseField"
2876              },
2877              {
2878                "name": "y",
2879                "type": "uint256",
2880                "internalType": "BN254.BaseField"
2881              }
2882            ]
2883          },
2884          {
2885            "name": "split0",
2886            "type": "tuple",
2887            "internalType": "struct BN254.G1Point",
2888            "components": [
2889              {
2890                "name": "x",
2891                "type": "uint256",
2892                "internalType": "BN254.BaseField"
2893              },
2894              {
2895                "name": "y",
2896                "type": "uint256",
2897                "internalType": "BN254.BaseField"
2898              }
2899            ]
2900          },
2901          {
2902            "name": "split1",
2903            "type": "tuple",
2904            "internalType": "struct BN254.G1Point",
2905            "components": [
2906              {
2907                "name": "x",
2908                "type": "uint256",
2909                "internalType": "BN254.BaseField"
2910              },
2911              {
2912                "name": "y",
2913                "type": "uint256",
2914                "internalType": "BN254.BaseField"
2915              }
2916            ]
2917          },
2918          {
2919            "name": "split2",
2920            "type": "tuple",
2921            "internalType": "struct BN254.G1Point",
2922            "components": [
2923              {
2924                "name": "x",
2925                "type": "uint256",
2926                "internalType": "BN254.BaseField"
2927              },
2928              {
2929                "name": "y",
2930                "type": "uint256",
2931                "internalType": "BN254.BaseField"
2932              }
2933            ]
2934          },
2935          {
2936            "name": "split3",
2937            "type": "tuple",
2938            "internalType": "struct BN254.G1Point",
2939            "components": [
2940              {
2941                "name": "x",
2942                "type": "uint256",
2943                "internalType": "BN254.BaseField"
2944              },
2945              {
2946                "name": "y",
2947                "type": "uint256",
2948                "internalType": "BN254.BaseField"
2949              }
2950            ]
2951          },
2952          {
2953            "name": "split4",
2954            "type": "tuple",
2955            "internalType": "struct BN254.G1Point",
2956            "components": [
2957              {
2958                "name": "x",
2959                "type": "uint256",
2960                "internalType": "BN254.BaseField"
2961              },
2962              {
2963                "name": "y",
2964                "type": "uint256",
2965                "internalType": "BN254.BaseField"
2966              }
2967            ]
2968          },
2969          {
2970            "name": "zeta",
2971            "type": "tuple",
2972            "internalType": "struct BN254.G1Point",
2973            "components": [
2974              {
2975                "name": "x",
2976                "type": "uint256",
2977                "internalType": "BN254.BaseField"
2978              },
2979              {
2980                "name": "y",
2981                "type": "uint256",
2982                "internalType": "BN254.BaseField"
2983              }
2984            ]
2985          },
2986          {
2987            "name": "zetaOmega",
2988            "type": "tuple",
2989            "internalType": "struct BN254.G1Point",
2990            "components": [
2991              {
2992                "name": "x",
2993                "type": "uint256",
2994                "internalType": "BN254.BaseField"
2995              },
2996              {
2997                "name": "y",
2998                "type": "uint256",
2999                "internalType": "BN254.BaseField"
3000              }
3001            ]
3002          },
3003          {
3004            "name": "wireEval0",
3005            "type": "uint256",
3006            "internalType": "BN254.ScalarField"
3007          },
3008          {
3009            "name": "wireEval1",
3010            "type": "uint256",
3011            "internalType": "BN254.ScalarField"
3012          },
3013          {
3014            "name": "wireEval2",
3015            "type": "uint256",
3016            "internalType": "BN254.ScalarField"
3017          },
3018          {
3019            "name": "wireEval3",
3020            "type": "uint256",
3021            "internalType": "BN254.ScalarField"
3022          },
3023          {
3024            "name": "wireEval4",
3025            "type": "uint256",
3026            "internalType": "BN254.ScalarField"
3027          },
3028          {
3029            "name": "sigmaEval0",
3030            "type": "uint256",
3031            "internalType": "BN254.ScalarField"
3032          },
3033          {
3034            "name": "sigmaEval1",
3035            "type": "uint256",
3036            "internalType": "BN254.ScalarField"
3037          },
3038          {
3039            "name": "sigmaEval2",
3040            "type": "uint256",
3041            "internalType": "BN254.ScalarField"
3042          },
3043          {
3044            "name": "sigmaEval3",
3045            "type": "uint256",
3046            "internalType": "BN254.ScalarField"
3047          },
3048          {
3049            "name": "prodPermZetaOmegaEval",
3050            "type": "uint256",
3051            "internalType": "BN254.ScalarField"
3052          }
3053        ]
3054      }
3055    ],
3056    "outputs": [
3057      {
3058        "name": "",
3059        "type": "bool",
3060        "internalType": "bool"
3061      }
3062    ],
3063    "stateMutability": "view"
3064  },
3065  {
3066    "type": "error",
3067    "name": "BN254G1AddFailed",
3068    "inputs": []
3069  },
3070  {
3071    "type": "error",
3072    "name": "BN254PairingProdFailed",
3073    "inputs": []
3074  },
3075  {
3076    "type": "error",
3077    "name": "BN254ScalarInvZero",
3078    "inputs": []
3079  },
3080  {
3081    "type": "error",
3082    "name": "BN254ScalarMulFailed",
3083    "inputs": []
3084  },
3085  {
3086    "type": "error",
3087    "name": "InvalidG1",
3088    "inputs": []
3089  },
3090  {
3091    "type": "error",
3092    "name": "InvalidPlonkArgs",
3093    "inputs": []
3094  },
3095  {
3096    "type": "error",
3097    "name": "InvalidScalar",
3098    "inputs": []
3099  },
3100  {
3101    "type": "error",
3102    "name": "PowPrecompileFailed",
3103    "inputs": []
3104  },
3105  {
3106    "type": "error",
3107    "name": "UnsupportedDegree",
3108    "inputs": []
3109  },
3110  {
3111    "type": "error",
3112    "name": "WrongPlonkVK",
3113    "inputs": []
3114  }
3115]
3116```*/
3117#[allow(
3118    non_camel_case_types,
3119    non_snake_case,
3120    clippy::pub_underscore_fields,
3121    clippy::style,
3122    clippy::empty_structs_with_brackets
3123)]
3124pub mod PlonkVerifierV2 {
3125    use super::*;
3126    use alloy::sol_types as alloy_sol_types;
3127    /// The creation / init bytecode of the contract.
3128    ///
3129    /// ```text
3130    ///0x612554610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009b575f3560e01c8063af196ba21161006e578063af196ba21461014e578063de24ac0f14610175578063e3512d561461019c578063f5144326146101c3578063fc8660c7146101ea575f5ffd5b80630c551f3f1461009f5780634b4734e3146100d95780635a14c0fe14610100578063834c452a14610127575b5f5ffd5b6100c67f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02581565b6040519081526020015b60405180910390f35b6100c67f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581565b6100c67f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a81565b6100c67f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181565b6100c67f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081565b6100c67f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88181565b6100c67f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a81565b6100c67f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481565b6101fd6101f83660046122e2565b61020d565b60405190151581526020016100d0565b5f610217826102aa565b610227835f5b60200201516103e5565b61023283600161021d565b61023d83600261021d565b61024883600361021d565b61025383600461021d565b61025e83600561021d565b61026983600661021d565b61027483600761021d565b61027f83600861021d565b61028a83600961021d565b61029583600a61021d565b6102a0848484610417565b90505b9392505050565b80516102b59061060b565b6102c2816020015161060b565b6102cf816040015161060b565b6102dc816060015161060b565b6102e9816080015161060b565b6102f68160a0015161060b565b6103038160c0015161060b565b6103108160e0015161060b565b61031e81610100015161060b565b61032c81610120015161060b565b61033a81610140015161060b565b61034881610160015161060b565b61035681610180015161060b565b610364816101a001516103e5565b610372816101c001516103e5565b610380816101e001516103e5565b61038e8161020001516103e5565b61039c8161022001516103e5565b6103aa8161024001516103e5565b6103b88161026001516103e5565b6103c68161028001516103e5565b6103d4816102a001516103e5565b6103e2816102c001516103e5565b50565b5f5160206125285f395f51905f528110806104135760405163016c173360e21b815260040160405180910390fd5b5050565b5f8360200151600b1461043d576040516320fa9d8960e11b815260040160405180910390fd5b5f61044985858561068a565b90505f610458865f0151610c19565b90505f61046a828460a00151886111c0565b905061048760405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526104bb8761016001516104b68961018001518860e0015161121d565b611280565b91505f5f6104cb8b88878c6112e7565b915091506104dc816104b68461151f565b92506104f5836104b68b61016001518a60a0015161121d565b60a08801516040880151602001519194505f5160206125285f395f51905f52918290820990508160e08a015182099050610538856104b68d61018001518461121d565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481525090506105f987826105ec8961151f565b6105f46115bc565b611689565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561064457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816106855760405163279e345360e21b815260040160405180910390fd5b505050565b6106ca6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f5160206125285f395f51905f529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015260e08601516106608201526101008601516106808201526101208601516106a08201526101408601516106c0820152845180516106e08301526020810151610700830152506020850151805161072083015260208101516107408301525060408501518051610760830152602081015161078083015250606085015180516107a083015260208101516107c083015250608085015180516107e08301526020810151610800830152505f82526108408220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610c21611fbc565b816201000003610df8576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c10018152602001604051806101600160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd81526020017f15ee2475bee517c4ee05e51fa1ee7312a8373a0b13db8c51baf04cb2e99bd2bd81526020017e6fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd31081526020017f2e856bf6d037708ffa4c06d4d8820f45ccadce9c5a6d178cbd573f82e0f9701181526020017f1407eee35993f2b1ad5ec6d9b8950ca3af33135d06037f871c5e33bf566dd7b48152508152509050919050565b816210000003610fd1576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c1018152602001604051806101600160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c81526020017f29e84143f5870d4776a92df8da8c6c9303d59088f37ba85f40cf6fd14265b4bc81526020017f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e581526020017f22b94b2e2b0043d04e662d5ec018ea1c8a99a23a62c9eb46f0318f6a194985f081526020017f29969d8d5363bef1101a68e446a14e1da7ba9294e142a146a980fddb4d4d41a58152508152509050919050565b816020036111a7576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e7508000018152602001604051806101600160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b03904381526020017ee14b6364a47e9c4284a9f80a5fc41cd212b0d4dbf8a5703770a40a9a34399081526020017f30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f70363681526020017f22399c34139bffada8de046aac50c9628e3517a3a452795364e777cd65bb9f4881526020017f2290ee31c482cf92b79b1944db1c0147635e9004db8c3b9d13644bef31ec3bd38152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b6111e160405180606001604052805f81526020015f81526020015f81525090565b6111eb848461173a565b8082526111fb908590859061178b565b60208201528051611211908590849086906117fa565b60408201529392505050565b604080518082019091525f8082526020820152611238611fe0565b835181526020808501519082015260408082018490525f908360608460075afa9050806112785760405163033b714d60e31b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261129b611ffe565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460065afa9050806112785760405163302aedb560e11b815260040160405180910390fd5b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f61131a87878787611949565b90505f5160206125285f395f51905f525f611336888789611e13565b905061134281836124cf565b60c08901516101a08801519192509081908490819083098408925061136e856104b68a5f01518461121d565b955083828209905083846101c08a0151830984089250611396866104b68a602001518461121d565b955083828209905083846101e08a01518309840892506113be866104b68a604001518461121d565b955083828209905083846102008a01518309840892506113e6866104b68a606001518461121d565b955083828209905083846102208a015183098408925061140e866104b68a608001518461121d565b955083828209905083846102408a0151830984089250611436866104b68d604001518461121d565b955083828209905083846102608a015183098408925061145e866104b68d606001518461121d565b955083828209905083846102808a0151830984089250611486866104b68d608001518461121d565b955083828209905083846102a08a01518309840892506114ae866104b68d60a001518461121d565b95505f8a60e00151905084856102c08b01518309850893506114d8876104b68b60a001518461121d565b965061150e6115086040805180820182525f80825260209182015281518083019092526001825260029082015290565b8561121d565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611546575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161158a9190612508565b6115b4907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476124cf565b905292915050565b6115e360405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061172c5760405163c206334f60e01b815260040160405180910390fd5b50151590505b949350505050565b81515f905f5160206125285f395f51905f529083801561177b578493505f5b8281101561176f57838586099450600101611759565b50600184039350611782565b6001830393505b50505092915050565b5f8260010361179c575060016102a3565b815f036117aa57505f6102a3565b60208401515f5160206125285f395f51905f52905f908281860990508580156117d8576001870392506117df565b6001840392505b506117e982611efe565b915082828209979650505050505050565b5f5f5160206125285f395f51905f528282036118735760015f5b600b81101561186857818603611845578681600b8110611836576118366124bb565b60200201519350505050611732565b8280611853576118536124f4565b60408901516020015183099150600101611814565b505f92505050611732565b61187b61201c565b60408701516001610140838101828152920190805b600b8110156118bd5760208403935085868a85518903088309808552601f19909301929150600101611890565b505050505f5f5f90506001838960408c01515f5b600b811015611911578882518a85518c88518a0909098981880896505088898d84518c0308860994506020938401939283019291909101906001016118d1565b50505050809250505f61192383611efe565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f5f5f5f5f5f5160206125285f395f51905f52905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88185099250816102208901518408925081818408925050808483099350808486089450611ab68760a001518661121d565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b015187089550838187089550505050808386099450611b7d866104b68c60c001518885611b7891906124cf565b61121d565b9550611b96866104b68c60e001518a6101a0015161121d565b9550611bb0866104b68c61010001518a6101c0015161121d565b9550611bca866104b68c61012001518a6101e0015161121d565b9550611be4866104b68c61014001518a610200015161121d565b9550806101c08801516101a0890151099250611c09866104b68c61016001518661121d565b9550806102008801516101e0890151099250611c2e866104b68c61018001518661121d565b95506101a08701519250808384099150808283099150808284099250611c5d866104b68c6101e001518661121d565b95506101c08701519250808384099150808283099150808284099250611c8c866104b68c61020001518661121d565b95506101e08701519250808384099150808283099150808284099250611cbb866104b68c61022001518661121d565b95506102008701519250808384099150808283099150808284099250611cea866104b68c61024001518661121d565b9550611d07866104b68c6101a00151611b788b6102200151611f90565b9550611d18868b6101c00151611280565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611d5e866104b68c61026001518661121d565b9550611d6c885f0151611f90565b9450611d80866104b68960c001518861121d565b955080600189510860a08a0151909350819080099150808284099250808386099450611db4866104b68960e001518861121d565b9550808386099450611dcf866104b68961010001518861121d565b9550808386099450611dea866104b68961012001518861121d565b9550808386099450611e05866104b68961014001518861121d565b9a9950505050505050505050565b5f5f5f5160206125285f395f51905f5290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f815f03611f1f5760405163d6dbbb0d60e01b815260040160405180910390fd5b5f5f5f5160206125285f395f51905f52905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f51925081611f8957604051630c9d3e9960e21b815260040160405180910390fd5b5050919050565b5f5f5160206125285f395f51905f52821560018114611fb3578382039250611f89565b505f9392505050565b60405180606001604052805f81526020015f8152602001611fdb61201c565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101600160405280600b906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff811182821017156120735761207361203b565b60405290565b6040516102c0810167ffffffffffffffff811182821017156120735761207361203b565b5f604082840312156120ad575f5ffd5b6040805190810167ffffffffffffffff811182821017156120d0576120d061203b565b604052823581526020928301359281019290925250919050565b5f82601f8301126120f9575f5ffd5b604051610160810167ffffffffffffffff8111828210171561211d5761211d61203b565b60405280610160840185811115612132575f5ffd5b845b8181101561214c578035835260209283019201612134565b509195945050505050565b5f6104808284031215612168575f5ffd5b61217061204f565b905061217c838361209d565b815261218b836040840161209d565b602082015261219d836080840161209d565b60408201526121af8360c0840161209d565b60608201526121c283610100840161209d565b60808201526121d583610140840161209d565b60a08201526121e883610180840161209d565b60c08201526121fb836101c0840161209d565b60e082015261220e83610200840161209d565b61010082015261222283610240840161209d565b61012082015261223683610280840161209d565b61014082015261224a836102c0840161209d565b61016082015261225e83610300840161209d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f5f838503610ae08112156122f6575f5ffd5b610500811215612304575f5ffd5b5061230d612079565b8435815260208086013590820152612328866040870161209d565b604082015261233a866080870161209d565b606082015261234c8660c0870161209d565b608082015261235f86610100870161209d565b60a082015261237286610140870161209d565b60c082015261238586610180870161209d565b60e0820152612398866101c0870161209d565b6101008201526123ac86610200870161209d565b6101208201526123c086610240870161209d565b6101408201526123d486610280870161209d565b6101608201526123e8866102c0870161209d565b6101808201526123fc86610300870161209d565b6101a082015261241086610340870161209d565b6101c082015261242486610380870161209d565b6101e0820152612438866103c0870161209d565b61020082015261244c86610400870161209d565b61022082015261246086610440870161209d565b61024082015261247486610480870161209d565b6102608201526104c08501356102808201526104e08501356102a082015292506124a28561050086016120ea565b91506124b2856106608601612157565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b818103818111156124ee57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261252257634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a
3131    /// ```
3132    #[rustfmt::skip]
3133    #[allow(clippy::all)]
3134    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3135        b"a%Ta\x004`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`(WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\0\x9BW_5`\xE0\x1C\x80c\xAF\x19k\xA2\x11a\0nW\x80c\xAF\x19k\xA2\x14a\x01NW\x80c\xDE$\xAC\x0F\x14a\x01uW\x80c\xE3Q-V\x14a\x01\x9CW\x80c\xF5\x14C&\x14a\x01\xC3W\x80c\xFC\x86`\xC7\x14a\x01\xEAW__\xFD[\x80c\x0CU\x1F?\x14a\0\x9FW\x80cKG4\xE3\x14a\0\xD9W\x80cZ\x14\xC0\xFE\x14a\x01\0W\x80c\x83LE*\x14a\x01'W[__\xFD[a\0\xC6\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC6\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81V[a\0\xC6\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x81V[a\0\xC6\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81V[a\0\xC6\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81V[a\0\xC6\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x81V[a\0\xC6\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x81V[a\0\xC6\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81V[a\x01\xFDa\x01\xF86`\x04a\"\xE2V[a\x02\rV[`@Q\x90\x15\x15\x81R` \x01a\0\xD0V[_a\x02\x17\x82a\x02\xAAV[a\x02'\x83_[` \x02\x01Qa\x03\xE5V[a\x022\x83`\x01a\x02\x1DV[a\x02=\x83`\x02a\x02\x1DV[a\x02H\x83`\x03a\x02\x1DV[a\x02S\x83`\x04a\x02\x1DV[a\x02^\x83`\x05a\x02\x1DV[a\x02i\x83`\x06a\x02\x1DV[a\x02t\x83`\x07a\x02\x1DV[a\x02\x7F\x83`\x08a\x02\x1DV[a\x02\x8A\x83`\ta\x02\x1DV[a\x02\x95\x83`\na\x02\x1DV[a\x02\xA0\x84\x84\x84a\x04\x17V[\x90P[\x93\x92PPPV[\x80Qa\x02\xB5\x90a\x06\x0BV[a\x02\xC2\x81` \x01Qa\x06\x0BV[a\x02\xCF\x81`@\x01Qa\x06\x0BV[a\x02\xDC\x81``\x01Qa\x06\x0BV[a\x02\xE9\x81`\x80\x01Qa\x06\x0BV[a\x02\xF6\x81`\xA0\x01Qa\x06\x0BV[a\x03\x03\x81`\xC0\x01Qa\x06\x0BV[a\x03\x10\x81`\xE0\x01Qa\x06\x0BV[a\x03\x1E\x81a\x01\0\x01Qa\x06\x0BV[a\x03,\x81a\x01 \x01Qa\x06\x0BV[a\x03:\x81a\x01@\x01Qa\x06\x0BV[a\x03H\x81a\x01`\x01Qa\x06\x0BV[a\x03V\x81a\x01\x80\x01Qa\x06\x0BV[a\x03d\x81a\x01\xA0\x01Qa\x03\xE5V[a\x03r\x81a\x01\xC0\x01Qa\x03\xE5V[a\x03\x80\x81a\x01\xE0\x01Qa\x03\xE5V[a\x03\x8E\x81a\x02\0\x01Qa\x03\xE5V[a\x03\x9C\x81a\x02 \x01Qa\x03\xE5V[a\x03\xAA\x81a\x02@\x01Qa\x03\xE5V[a\x03\xB8\x81a\x02`\x01Qa\x03\xE5V[a\x03\xC6\x81a\x02\x80\x01Qa\x03\xE5V[a\x03\xD4\x81a\x02\xA0\x01Qa\x03\xE5V[a\x03\xE2\x81a\x02\xC0\x01Qa\x03\xE5V[PV[_Q` a%(_9_Q\x90_R\x81\x10\x80a\x04\x13W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x0B\x14a\x04=W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x04I\x85\x85\x85a\x06\x8AV[\x90P_a\x04X\x86_\x01Qa\x0C\x19V[\x90P_a\x04j\x82\x84`\xA0\x01Q\x88a\x11\xC0V[\x90Pa\x04\x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x04\xBB\x87a\x01`\x01Qa\x04\xB6\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x12\x1DV[a\x12\x80V[\x91P__a\x04\xCB\x8B\x88\x87\x8Ca\x12\xE7V[\x91P\x91Pa\x04\xDC\x81a\x04\xB6\x84a\x15\x1FV[\x92Pa\x04\xF5\x83a\x04\xB6\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x12\x1DV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a%(_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x058\x85a\x04\xB6\x8Da\x01\x80\x01Q\x84a\x12\x1DV[\x94P_`@Q\x80`\x80\x01`@R\x80\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81R` \x01\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81R` \x01\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81R` \x01\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81RP\x90Pa\x05\xF9\x87\x82a\x05\xEC\x89a\x15\x1FV[a\x05\xF4a\x15\xBCV[a\x16\x89V[\x9E\x9DPPPPPPPPPPPPPPV[\x80Q` \x82\x01Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x91\x15\x90\x15\x16\x15a\x06DWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x06\x85W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[a\x06\xCA`@Q\x80a\x01\0\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[__Q` a%(_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R`\xE0\x86\x01Qa\x06`\x82\x01Ra\x01\0\x86\x01Qa\x06\x80\x82\x01Ra\x01 \x86\x01Qa\x06\xA0\x82\x01Ra\x01@\x86\x01Qa\x06\xC0\x82\x01R\x84Q\x80Qa\x06\xE0\x83\x01R` \x81\x01Qa\x07\0\x83\x01RP` \x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`@\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP``\x85\x01Q\x80Qa\x07\xA0\x83\x01R` \x81\x01Qa\x07\xC0\x83\x01RP`\x80\x85\x01Q\x80Qa\x07\xE0\x83\x01R` \x81\x01Qa\x08\0\x83\x01RP_\x82Ra\x08@\x82 \x82R\x82\x82Q\x06``\x85\x01R` \x82 \x82R\x82\x82Q\x06`\x80\x85\x01R`\xA0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP``\x82 \x80\x83R\x83\x81\x06\x85R\x83\x81\x82\t\x84\x82\x82\t\x91P\x80` \x87\x01RP\x80`@\x86\x01RP`\xC0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP`\xE0\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPa\x01\0\x85\x01Q\x80Q`\x80\x83\x01R` \x81\x01Q`\xA0\x83\x01RPa\x01 \x85\x01Q\x80Q`\xC0\x83\x01R` \x81\x01Q`\xE0\x83\x01RPa\x01@\x85\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01`\x82 \x82R\x82\x82Q\x06`\xA0\x85\x01Ra\x01\xA0\x85\x01Q\x81Ra\x01\xC0\x85\x01Q` \x82\x01Ra\x01\xE0\x85\x01Q`@\x82\x01Ra\x02\0\x85\x01Q``\x82\x01Ra\x02 \x85\x01Q`\x80\x82\x01Ra\x02@\x85\x01Q`\xA0\x82\x01Ra\x02`\x85\x01Q`\xC0\x82\x01Ra\x02\x80\x85\x01Q`\xE0\x82\x01Ra\x02\xA0\x85\x01Qa\x01\0\x82\x01Ra\x02\xC0\x85\x01Qa\x01 \x82\x01Ra\x01`\x82 \x82R\x82\x82Q\x06`\xC0\x85\x01Ra\x01`\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RPa\x01\x80\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPP`\xA0\x81 \x82\x81\x06`\xE0\x85\x01RPPP\x93\x92PPPV[a\x0C!a\x1F\xBCV[\x81b\x01\0\0\x03a\r\xF8W`@Q\x80``\x01`@R\x80`\x10\x81R` \x01\x7F0d\x1E\x0E\x92\xBE\xBE\xF8\x18&\x8Df;\xCA\xD6\xDB\xCF\xD6\xC0\x14\x91p\xF6\xD7\xD3P\xB1\xB1\xFAl\x10\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81R` \x01\x7F\x15\xEE$u\xBE\xE5\x17\xC4\xEE\x05\xE5\x1F\xA1\xEEs\x12\xA87:\x0B\x13\xDB\x8CQ\xBA\xF0L\xB2\xE9\x9B\xD2\xBD\x81R` \x01~o\xABI\xB8i\xAEb\0\x1D\xEA\xC8x\xB2f{\xD3\x1B\xF3\xE2\x8E:-vJ\xA4\x9B\x8D\x9B\xBD\xD3\x10\x81R` \x01\x7F.\x85k\xF6\xD07p\x8F\xFAL\x06\xD4\xD8\x82\x0FE\xCC\xAD\xCE\x9CZm\x17\x8C\xBDW?\x82\xE0\xF9p\x11\x81R` \x01\x7F\x14\x07\xEE\xE3Y\x93\xF2\xB1\xAD^\xC6\xD9\xB8\x95\x0C\xA3\xAF3\x13]\x06\x03\x7F\x87\x1C^3\xBFVm\xD7\xB4\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0F\xD1W`@Q\x80``\x01`@R\x80`\x14\x81R` \x01\x7F0dKl\x9CJr\x16\x9EM\xAA1}%\xF0E\x12\xAE\x15\xC5;4\xE8\xF5\xAC\xD8\xE1U\xD0\xA6\xC1\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81R` \x01\x7F)\xE8AC\xF5\x87\rGv\xA9-\xF8\xDA\x8Cl\x93\x03\xD5\x90\x88\xF3{\xA8_@\xCFo\xD1Be\xB4\xBC\x81R` \x01\x7F\x1B\xF8-\xEB\xA7\xD7I\x02\xC3p\x8C\xC6\xE7\x0Ea\xF3\x05\x12\xEC\xA9VU!\x0E'nXX\xCE\x8FX\xE5\x81R` \x01\x7F\"\xB9K.+\0C\xD0Nf-^\xC0\x18\xEA\x1C\x8A\x99\xA2:b\xC9\xEBF\xF01\x8Fj\x19I\x85\xF0\x81R` \x01\x7F)\x96\x9D\x8DSc\xBE\xF1\x10\x1Ah\xE4F\xA1N\x1D\xA7\xBA\x92\x94\xE1B\xA1F\xA9\x80\xFD\xDBMMA\xA5\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x11\xA7W`@Q\x80``\x01`@R\x80`\x05\x81R` \x01\x7F.\xE1+\xFFJ(\x13(j\x8D\xC3\x88\xCDuM\x9A>\xF2I\x065\xEB\xA5\x0C\xB9\xC2\xE5\xE7P\x80\0\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81R` \x01~\xE1Kcd\xA4~\x9CB\x84\xA9\xF8\n_\xC4\x1C\xD2\x12\xB0\xD4\xDB\xF8\xA5p7p\xA4\n\x9A49\x90\x81R` \x01\x7F0dNr\xE11\xA0)\x04\x8Bn\x19?\xD8A\x04\\\xEA$\xF6\xFDsk\xEC#\x12\x04p\x8Fp66\x81R` \x01\x7F\"9\x9C4\x13\x9B\xFF\xAD\xA8\xDE\x04j\xACP\xC9b\x8E5\x17\xA3\xA4RySd\xE7w\xCDe\xBB\x9FH\x81R` \x01\x7F\"\x90\xEE1\xC4\x82\xCF\x92\xB7\x9B\x19D\xDB\x1C\x01Gc^\x90\x04\xDB\x8C;\x9D\x13dK\xEF1\xEC;\xD3\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xE1`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x11\xEB\x84\x84a\x17:V[\x80\x82Ra\x11\xFB\x90\x85\x90\x85\x90a\x17\x8BV[` \x82\x01R\x80Qa\x12\x11\x90\x85\x90\x84\x90\x86\x90a\x17\xFAV[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x128a\x1F\xE0V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07Z\xFA\x90P\x80a\x12xW`@Qc\x03;qM`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\x9Ba\x1F\xFEV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06Z\xFA\x90P\x80a\x12xW`@Qc0*\xED\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x13\x1A\x87\x87\x87\x87a\x19IV[\x90P_Q` a%(_9_Q\x90_R_a\x136\x88\x87\x89a\x1E\x13V[\x90Pa\x13B\x81\x83a$\xCFV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x13n\x85a\x04\xB6\x8A_\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\x96\x86a\x04\xB6\x8A` \x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xBE\x86a\x04\xB6\x8A`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xE6\x86a\x04\xB6\x8A``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x0E\x86a\x04\xB6\x8A`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x146\x86a\x04\xB6\x8D`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x14^\x86a\x04\xB6\x8D``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x86\x86a\x04\xB6\x8D`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xAE\x86a\x04\xB6\x8D`\xA0\x01Q\x84a\x12\x1DV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x14\xD8\x87a\x04\xB6\x8B`\xA0\x01Q\x84a\x12\x1DV[\x96Pa\x15\x0Ea\x15\x08`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x12\x1DV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x15FWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x15\x8A\x91\x90a%\x08V[a\x15\xB4\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa$\xCFV[\x90R\x92\x91PPV[a\x15\xE3`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x17,W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a%(_9_Q\x90_R\x90\x83\x80\x15a\x17{W\x84\x93P_[\x82\x81\x10\x15a\x17oW\x83\x85\x86\t\x94P`\x01\x01a\x17YV[P`\x01\x84\x03\x93Pa\x17\x82V[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x17\x9CWP`\x01a\x02\xA3V[\x81_\x03a\x17\xAAWP_a\x02\xA3V[` \x84\x01Q_Q` a%(_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x17\xD8W`\x01\x87\x03\x92Pa\x17\xDFV[`\x01\x84\x03\x92P[Pa\x17\xE9\x82a\x1E\xFEV[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a%(_9_Q\x90_R\x82\x82\x03a\x18sW`\x01_[`\x0B\x81\x10\x15a\x18hW\x81\x86\x03a\x18EW\x86\x81`\x0B\x81\x10a\x186Wa\x186a$\xBBV[` \x02\x01Q\x93PPPPa\x172V[\x82\x80a\x18SWa\x18Sa$\xF4V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x18\x14V[P_\x92PPPa\x172V[a\x18{a \x1CV[`@\x87\x01Q`\x01a\x01@\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x0B\x81\x10\x15a\x18\xBDW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x18\x90V[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x0B\x81\x10\x15a\x19\x11W\x88\x82Q\x8A\x85Q\x8C\x88Q\x8A\t\t\t\x89\x81\x88\x08\x96PP\x88\x89\x8D\x84Q\x8C\x03\x08\x86\t\x94P` \x93\x84\x01\x93\x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x18\xD1V[PPPP\x80\x92PP_a\x19#\x83a\x1E\xFEV[\x90P` \x8A\x01Q\x85\x81\x89\t\x96PP\x84\x81\x87\t\x95P\x84\x82\x87\t\x9A\x99PPPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R______Q` a%(_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x1A\xB6\x87`\xA0\x01Q\x86a\x12\x1DV[\x95P\x88Q``\x8A\x01Q`\x80\x8B\x01Q\x83\x82\x84\t\x97P\x83a\x02\xC0\x8B\x01Q\x89\t\x97P\x83a\x02@\x8B\x01Q\x83\t\x95P\x83a\x01\xA0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02`\x8B\x01Q\x83\t\x95P\x83a\x01\xC0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\x80\x8B\x01Q\x83\t\x95P\x83a\x01\xE0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\xA0\x8B\x01Q\x83\t\x95P\x83a\x02\0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95PPPP\x80\x83\x86\t\x94Pa\x1B}\x86a\x04\xB6\x8C`\xC0\x01Q\x88\x85a\x1Bx\x91\x90a$\xCFV[a\x12\x1DV[\x95Pa\x1B\x96\x86a\x04\xB6\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x12\x1DV[\x95Pa\x1B\xB0\x86a\x04\xB6\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x12\x1DV[\x95Pa\x1B\xCA\x86a\x04\xB6\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x12\x1DV[\x95Pa\x1B\xE4\x86a\x04\xB6\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x12\x1DV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x1C\t\x86a\x04\xB6\x8Ca\x01`\x01Q\x86a\x12\x1DV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x1C.\x86a\x04\xB6\x8Ca\x01\x80\x01Q\x86a\x12\x1DV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C]\x86a\x04\xB6\x8Ca\x01\xE0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\x8C\x86a\x04\xB6\x8Ca\x02\0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xBB\x86a\x04\xB6\x8Ca\x02 \x01Q\x86a\x12\x1DV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xEA\x86a\x04\xB6\x8Ca\x02@\x01Q\x86a\x12\x1DV[\x95Pa\x1D\x07\x86a\x04\xB6\x8Ca\x01\xA0\x01Qa\x1Bx\x8Ba\x02 \x01Qa\x1F\x90V[\x95Pa\x1D\x18\x86\x8Ba\x01\xC0\x01Qa\x12\x80V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1D^\x86a\x04\xB6\x8Ca\x02`\x01Q\x86a\x12\x1DV[\x95Pa\x1Dl\x88_\x01Qa\x1F\x90V[\x94Pa\x1D\x80\x86a\x04\xB6\x89`\xC0\x01Q\x88a\x12\x1DV[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1D\xB4\x86a\x04\xB6\x89`\xE0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xCF\x86a\x04\xB6\x89a\x01\0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xEA\x86a\x04\xB6\x89a\x01 \x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1E\x05\x86a\x04\xB6\x89a\x01@\x01Q\x88a\x12\x1DV[\x9A\x99PPPPPPPPPPV[___Q` a%(_9_Q\x90_R\x90P_\x83` \x01Q\x90P_\x84`@\x01Q\x90P_`\x01\x90P``\x88\x01Q`\x80\x89\x01Qa\x01\xA0\x89\x01Qa\x02@\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xC0\x89\x01Qa\x02`\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xE0\x89\x01Qa\x02\x80\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02\0\x89\x01Qa\x02\xA0\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02 \x89\x01Q\x91Pa\x02\xC0\x89\x01Q\x86\x87\x82\x89\x85\x87\x08\t\x85\t\x93PPPP\x87Q` \x89\x01Q\x85\x86\x86\x83\t\x87\x03\x85\x08\x96PP\x84\x85\x83\x83\t\x86\x03\x87\x08\x99\x98PPPPPPPPPV[_\x81_\x03a\x1F\x1FW`@Qc\xD6\xDB\xBB\r`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___Q` a%(_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x84``\x82\x01R`\x02\x82\x03`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x92PP_Q\x92P\x81a\x1F\x89W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x91\x90PV[__Q` a%(_9_Q\x90_R\x82\x15`\x01\x81\x14a\x1F\xB3W\x83\x82\x03\x92Pa\x1F\x89V[P_\x93\x92PPPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1F\xDBa \x1CV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[_`@\x82\x84\x03\x12\x15a \xADW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a \xD0Wa \xD0a ;V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a \xF9W__\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x1DWa!\x1Da ;V[`@R\x80a\x01`\x84\x01\x85\x81\x11\x15a!2W__\xFD[\x84[\x81\x81\x10\x15a!LW\x805\x83R` \x92\x83\x01\x92\x01a!4V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a!hW__\xFD[a!pa OV[\x90Pa!|\x83\x83a \x9DV[\x81Ra!\x8B\x83`@\x84\x01a \x9DV[` \x82\x01Ra!\x9D\x83`\x80\x84\x01a \x9DV[`@\x82\x01Ra!\xAF\x83`\xC0\x84\x01a \x9DV[``\x82\x01Ra!\xC2\x83a\x01\0\x84\x01a \x9DV[`\x80\x82\x01Ra!\xD5\x83a\x01@\x84\x01a \x9DV[`\xA0\x82\x01Ra!\xE8\x83a\x01\x80\x84\x01a \x9DV[`\xC0\x82\x01Ra!\xFB\x83a\x01\xC0\x84\x01a \x9DV[`\xE0\x82\x01Ra\"\x0E\x83a\x02\0\x84\x01a \x9DV[a\x01\0\x82\x01Ra\"\"\x83a\x02@\x84\x01a \x9DV[a\x01 \x82\x01Ra\"6\x83a\x02\x80\x84\x01a \x9DV[a\x01@\x82\x01Ra\"J\x83a\x02\xC0\x84\x01a \x9DV[a\x01`\x82\x01Ra\"^\x83a\x03\0\x84\x01a \x9DV[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[___\x83\x85\x03a\n\xE0\x81\x12\x15a\"\xF6W__\xFD[a\x05\0\x81\x12\x15a#\x04W__\xFD[Pa#\ra yV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra#(\x86`@\x87\x01a \x9DV[`@\x82\x01Ra#:\x86`\x80\x87\x01a \x9DV[``\x82\x01Ra#L\x86`\xC0\x87\x01a \x9DV[`\x80\x82\x01Ra#_\x86a\x01\0\x87\x01a \x9DV[`\xA0\x82\x01Ra#r\x86a\x01@\x87\x01a \x9DV[`\xC0\x82\x01Ra#\x85\x86a\x01\x80\x87\x01a \x9DV[`\xE0\x82\x01Ra#\x98\x86a\x01\xC0\x87\x01a \x9DV[a\x01\0\x82\x01Ra#\xAC\x86a\x02\0\x87\x01a \x9DV[a\x01 \x82\x01Ra#\xC0\x86a\x02@\x87\x01a \x9DV[a\x01@\x82\x01Ra#\xD4\x86a\x02\x80\x87\x01a \x9DV[a\x01`\x82\x01Ra#\xE8\x86a\x02\xC0\x87\x01a \x9DV[a\x01\x80\x82\x01Ra#\xFC\x86a\x03\0\x87\x01a \x9DV[a\x01\xA0\x82\x01Ra$\x10\x86a\x03@\x87\x01a \x9DV[a\x01\xC0\x82\x01Ra$$\x86a\x03\x80\x87\x01a \x9DV[a\x01\xE0\x82\x01Ra$8\x86a\x03\xC0\x87\x01a \x9DV[a\x02\0\x82\x01Ra$L\x86a\x04\0\x87\x01a \x9DV[a\x02 \x82\x01Ra$`\x86a\x04@\x87\x01a \x9DV[a\x02@\x82\x01Ra$t\x86a\x04\x80\x87\x01a \x9DV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa$\xA2\x85a\x05\0\x86\x01a \xEAV[\x91Pa$\xB2\x85a\x06`\x86\x01a!WV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a$\xEEWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x92\x91PPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a%\"WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
3136    );
3137    /// The runtime bytecode of the contract, as deployed on the network.
3138    ///
3139    /// ```text
3140    ///0x730000000000000000000000000000000000000000301460806040526004361061009b575f3560e01c8063af196ba21161006e578063af196ba21461014e578063de24ac0f14610175578063e3512d561461019c578063f5144326146101c3578063fc8660c7146101ea575f5ffd5b80630c551f3f1461009f5780634b4734e3146100d95780635a14c0fe14610100578063834c452a14610127575b5f5ffd5b6100c67f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02581565b6040519081526020015b60405180910390f35b6100c67f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581565b6100c67f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a81565b6100c67f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181565b6100c67f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081565b6100c67f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88181565b6100c67f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a81565b6100c67f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481565b6101fd6101f83660046122e2565b61020d565b60405190151581526020016100d0565b5f610217826102aa565b610227835f5b60200201516103e5565b61023283600161021d565b61023d83600261021d565b61024883600361021d565b61025383600461021d565b61025e83600561021d565b61026983600661021d565b61027483600761021d565b61027f83600861021d565b61028a83600961021d565b61029583600a61021d565b6102a0848484610417565b90505b9392505050565b80516102b59061060b565b6102c2816020015161060b565b6102cf816040015161060b565b6102dc816060015161060b565b6102e9816080015161060b565b6102f68160a0015161060b565b6103038160c0015161060b565b6103108160e0015161060b565b61031e81610100015161060b565b61032c81610120015161060b565b61033a81610140015161060b565b61034881610160015161060b565b61035681610180015161060b565b610364816101a001516103e5565b610372816101c001516103e5565b610380816101e001516103e5565b61038e8161020001516103e5565b61039c8161022001516103e5565b6103aa8161024001516103e5565b6103b88161026001516103e5565b6103c68161028001516103e5565b6103d4816102a001516103e5565b6103e2816102c001516103e5565b50565b5f5160206125285f395f51905f528110806104135760405163016c173360e21b815260040160405180910390fd5b5050565b5f8360200151600b1461043d576040516320fa9d8960e11b815260040160405180910390fd5b5f61044985858561068a565b90505f610458865f0151610c19565b90505f61046a828460a00151886111c0565b905061048760405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526104bb8761016001516104b68961018001518860e0015161121d565b611280565b91505f5f6104cb8b88878c6112e7565b915091506104dc816104b68461151f565b92506104f5836104b68b61016001518a60a0015161121d565b60a08801516040880151602001519194505f5160206125285f395f51905f52918290820990508160e08a015182099050610538856104b68d61018001518461121d565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481525090506105f987826105ec8961151f565b6105f46115bc565b611689565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561064457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816106855760405163279e345360e21b815260040160405180910390fd5b505050565b6106ca6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f5160206125285f395f51905f529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015260e08601516106608201526101008601516106808201526101208601516106a08201526101408601516106c0820152845180516106e08301526020810151610700830152506020850151805161072083015260208101516107408301525060408501518051610760830152602081015161078083015250606085015180516107a083015260208101516107c083015250608085015180516107e08301526020810151610800830152505f82526108408220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610c21611fbc565b816201000003610df8576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c10018152602001604051806101600160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd81526020017f15ee2475bee517c4ee05e51fa1ee7312a8373a0b13db8c51baf04cb2e99bd2bd81526020017e6fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd31081526020017f2e856bf6d037708ffa4c06d4d8820f45ccadce9c5a6d178cbd573f82e0f9701181526020017f1407eee35993f2b1ad5ec6d9b8950ca3af33135d06037f871c5e33bf566dd7b48152508152509050919050565b816210000003610fd1576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c1018152602001604051806101600160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c81526020017f29e84143f5870d4776a92df8da8c6c9303d59088f37ba85f40cf6fd14265b4bc81526020017f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e581526020017f22b94b2e2b0043d04e662d5ec018ea1c8a99a23a62c9eb46f0318f6a194985f081526020017f29969d8d5363bef1101a68e446a14e1da7ba9294e142a146a980fddb4d4d41a58152508152509050919050565b816020036111a7576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e7508000018152602001604051806101600160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b03904381526020017ee14b6364a47e9c4284a9f80a5fc41cd212b0d4dbf8a5703770a40a9a34399081526020017f30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f70363681526020017f22399c34139bffada8de046aac50c9628e3517a3a452795364e777cd65bb9f4881526020017f2290ee31c482cf92b79b1944db1c0147635e9004db8c3b9d13644bef31ec3bd38152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b6111e160405180606001604052805f81526020015f81526020015f81525090565b6111eb848461173a565b8082526111fb908590859061178b565b60208201528051611211908590849086906117fa565b60408201529392505050565b604080518082019091525f8082526020820152611238611fe0565b835181526020808501519082015260408082018490525f908360608460075afa9050806112785760405163033b714d60e31b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261129b611ffe565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460065afa9050806112785760405163302aedb560e11b815260040160405180910390fd5b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f61131a87878787611949565b90505f5160206125285f395f51905f525f611336888789611e13565b905061134281836124cf565b60c08901516101a08801519192509081908490819083098408925061136e856104b68a5f01518461121d565b955083828209905083846101c08a0151830984089250611396866104b68a602001518461121d565b955083828209905083846101e08a01518309840892506113be866104b68a604001518461121d565b955083828209905083846102008a01518309840892506113e6866104b68a606001518461121d565b955083828209905083846102208a015183098408925061140e866104b68a608001518461121d565b955083828209905083846102408a0151830984089250611436866104b68d604001518461121d565b955083828209905083846102608a015183098408925061145e866104b68d606001518461121d565b955083828209905083846102808a0151830984089250611486866104b68d608001518461121d565b955083828209905083846102a08a01518309840892506114ae866104b68d60a001518461121d565b95505f8a60e00151905084856102c08b01518309850893506114d8876104b68b60a001518461121d565b965061150e6115086040805180820182525f80825260209182015281518083019092526001825260029082015290565b8561121d565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611546575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161158a9190612508565b6115b4907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476124cf565b905292915050565b6115e360405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061172c5760405163c206334f60e01b815260040160405180910390fd5b50151590505b949350505050565b81515f905f5160206125285f395f51905f529083801561177b578493505f5b8281101561176f57838586099450600101611759565b50600184039350611782565b6001830393505b50505092915050565b5f8260010361179c575060016102a3565b815f036117aa57505f6102a3565b60208401515f5160206125285f395f51905f52905f908281860990508580156117d8576001870392506117df565b6001840392505b506117e982611efe565b915082828209979650505050505050565b5f5f5160206125285f395f51905f528282036118735760015f5b600b81101561186857818603611845578681600b8110611836576118366124bb565b60200201519350505050611732565b8280611853576118536124f4565b60408901516020015183099150600101611814565b505f92505050611732565b61187b61201c565b60408701516001610140838101828152920190805b600b8110156118bd5760208403935085868a85518903088309808552601f19909301929150600101611890565b505050505f5f5f90506001838960408c01515f5b600b811015611911578882518a85518c88518a0909098981880896505088898d84518c0308860994506020938401939283019291909101906001016118d1565b50505050809250505f61192383611efe565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f5f5f5f5f5f5160206125285f395f51905f52905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88185099250816102208901518408925081818408925050808483099350808486089450611ab68760a001518661121d565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b015187089550838187089550505050808386099450611b7d866104b68c60c001518885611b7891906124cf565b61121d565b9550611b96866104b68c60e001518a6101a0015161121d565b9550611bb0866104b68c61010001518a6101c0015161121d565b9550611bca866104b68c61012001518a6101e0015161121d565b9550611be4866104b68c61014001518a610200015161121d565b9550806101c08801516101a0890151099250611c09866104b68c61016001518661121d565b9550806102008801516101e0890151099250611c2e866104b68c61018001518661121d565b95506101a08701519250808384099150808283099150808284099250611c5d866104b68c6101e001518661121d565b95506101c08701519250808384099150808283099150808284099250611c8c866104b68c61020001518661121d565b95506101e08701519250808384099150808283099150808284099250611cbb866104b68c61022001518661121d565b95506102008701519250808384099150808283099150808284099250611cea866104b68c61024001518661121d565b9550611d07866104b68c6101a00151611b788b6102200151611f90565b9550611d18868b6101c00151611280565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611d5e866104b68c61026001518661121d565b9550611d6c885f0151611f90565b9450611d80866104b68960c001518861121d565b955080600189510860a08a0151909350819080099150808284099250808386099450611db4866104b68960e001518861121d565b9550808386099450611dcf866104b68961010001518861121d565b9550808386099450611dea866104b68961012001518861121d565b9550808386099450611e05866104b68961014001518861121d565b9a9950505050505050505050565b5f5f5f5160206125285f395f51905f5290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f815f03611f1f5760405163d6dbbb0d60e01b815260040160405180910390fd5b5f5f5f5160206125285f395f51905f52905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f51925081611f8957604051630c9d3e9960e21b815260040160405180910390fd5b5050919050565b5f5f5160206125285f395f51905f52821560018114611fb3578382039250611f89565b505f9392505050565b60405180606001604052805f81526020015f8152602001611fdb61201c565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101600160405280600b906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff811182821017156120735761207361203b565b60405290565b6040516102c0810167ffffffffffffffff811182821017156120735761207361203b565b5f604082840312156120ad575f5ffd5b6040805190810167ffffffffffffffff811182821017156120d0576120d061203b565b604052823581526020928301359281019290925250919050565b5f82601f8301126120f9575f5ffd5b604051610160810167ffffffffffffffff8111828210171561211d5761211d61203b565b60405280610160840185811115612132575f5ffd5b845b8181101561214c578035835260209283019201612134565b509195945050505050565b5f6104808284031215612168575f5ffd5b61217061204f565b905061217c838361209d565b815261218b836040840161209d565b602082015261219d836080840161209d565b60408201526121af8360c0840161209d565b60608201526121c283610100840161209d565b60808201526121d583610140840161209d565b60a08201526121e883610180840161209d565b60c08201526121fb836101c0840161209d565b60e082015261220e83610200840161209d565b61010082015261222283610240840161209d565b61012082015261223683610280840161209d565b61014082015261224a836102c0840161209d565b61016082015261225e83610300840161209d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f5f838503610ae08112156122f6575f5ffd5b610500811215612304575f5ffd5b5061230d612079565b8435815260208086013590820152612328866040870161209d565b604082015261233a866080870161209d565b606082015261234c8660c0870161209d565b608082015261235f86610100870161209d565b60a082015261237286610140870161209d565b60c082015261238586610180870161209d565b60e0820152612398866101c0870161209d565b6101008201526123ac86610200870161209d565b6101208201526123c086610240870161209d565b6101408201526123d486610280870161209d565b6101608201526123e8866102c0870161209d565b6101808201526123fc86610300870161209d565b6101a082015261241086610340870161209d565b6101c082015261242486610380870161209d565b6101e0820152612438866103c0870161209d565b61020082015261244c86610400870161209d565b61022082015261246086610440870161209d565b61024082015261247486610480870161209d565b6102608201526104c08501356102808201526104e08501356102a082015292506124a28561050086016120ea565b91506124b2856106608601612157565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b818103818111156124ee57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261252257634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a
3141    /// ```
3142    #[rustfmt::skip]
3143    #[allow(clippy::all)]
3144    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3145        b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\0\x9BW_5`\xE0\x1C\x80c\xAF\x19k\xA2\x11a\0nW\x80c\xAF\x19k\xA2\x14a\x01NW\x80c\xDE$\xAC\x0F\x14a\x01uW\x80c\xE3Q-V\x14a\x01\x9CW\x80c\xF5\x14C&\x14a\x01\xC3W\x80c\xFC\x86`\xC7\x14a\x01\xEAW__\xFD[\x80c\x0CU\x1F?\x14a\0\x9FW\x80cKG4\xE3\x14a\0\xD9W\x80cZ\x14\xC0\xFE\x14a\x01\0W\x80c\x83LE*\x14a\x01'W[__\xFD[a\0\xC6\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC6\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81V[a\0\xC6\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x81V[a\0\xC6\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81V[a\0\xC6\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81V[a\0\xC6\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x81V[a\0\xC6\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x81V[a\0\xC6\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81V[a\x01\xFDa\x01\xF86`\x04a\"\xE2V[a\x02\rV[`@Q\x90\x15\x15\x81R` \x01a\0\xD0V[_a\x02\x17\x82a\x02\xAAV[a\x02'\x83_[` \x02\x01Qa\x03\xE5V[a\x022\x83`\x01a\x02\x1DV[a\x02=\x83`\x02a\x02\x1DV[a\x02H\x83`\x03a\x02\x1DV[a\x02S\x83`\x04a\x02\x1DV[a\x02^\x83`\x05a\x02\x1DV[a\x02i\x83`\x06a\x02\x1DV[a\x02t\x83`\x07a\x02\x1DV[a\x02\x7F\x83`\x08a\x02\x1DV[a\x02\x8A\x83`\ta\x02\x1DV[a\x02\x95\x83`\na\x02\x1DV[a\x02\xA0\x84\x84\x84a\x04\x17V[\x90P[\x93\x92PPPV[\x80Qa\x02\xB5\x90a\x06\x0BV[a\x02\xC2\x81` \x01Qa\x06\x0BV[a\x02\xCF\x81`@\x01Qa\x06\x0BV[a\x02\xDC\x81``\x01Qa\x06\x0BV[a\x02\xE9\x81`\x80\x01Qa\x06\x0BV[a\x02\xF6\x81`\xA0\x01Qa\x06\x0BV[a\x03\x03\x81`\xC0\x01Qa\x06\x0BV[a\x03\x10\x81`\xE0\x01Qa\x06\x0BV[a\x03\x1E\x81a\x01\0\x01Qa\x06\x0BV[a\x03,\x81a\x01 \x01Qa\x06\x0BV[a\x03:\x81a\x01@\x01Qa\x06\x0BV[a\x03H\x81a\x01`\x01Qa\x06\x0BV[a\x03V\x81a\x01\x80\x01Qa\x06\x0BV[a\x03d\x81a\x01\xA0\x01Qa\x03\xE5V[a\x03r\x81a\x01\xC0\x01Qa\x03\xE5V[a\x03\x80\x81a\x01\xE0\x01Qa\x03\xE5V[a\x03\x8E\x81a\x02\0\x01Qa\x03\xE5V[a\x03\x9C\x81a\x02 \x01Qa\x03\xE5V[a\x03\xAA\x81a\x02@\x01Qa\x03\xE5V[a\x03\xB8\x81a\x02`\x01Qa\x03\xE5V[a\x03\xC6\x81a\x02\x80\x01Qa\x03\xE5V[a\x03\xD4\x81a\x02\xA0\x01Qa\x03\xE5V[a\x03\xE2\x81a\x02\xC0\x01Qa\x03\xE5V[PV[_Q` a%(_9_Q\x90_R\x81\x10\x80a\x04\x13W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x0B\x14a\x04=W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x04I\x85\x85\x85a\x06\x8AV[\x90P_a\x04X\x86_\x01Qa\x0C\x19V[\x90P_a\x04j\x82\x84`\xA0\x01Q\x88a\x11\xC0V[\x90Pa\x04\x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x04\xBB\x87a\x01`\x01Qa\x04\xB6\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x12\x1DV[a\x12\x80V[\x91P__a\x04\xCB\x8B\x88\x87\x8Ca\x12\xE7V[\x91P\x91Pa\x04\xDC\x81a\x04\xB6\x84a\x15\x1FV[\x92Pa\x04\xF5\x83a\x04\xB6\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x12\x1DV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a%(_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x058\x85a\x04\xB6\x8Da\x01\x80\x01Q\x84a\x12\x1DV[\x94P_`@Q\x80`\x80\x01`@R\x80\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81R` \x01\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81R` \x01\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81R` \x01\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81RP\x90Pa\x05\xF9\x87\x82a\x05\xEC\x89a\x15\x1FV[a\x05\xF4a\x15\xBCV[a\x16\x89V[\x9E\x9DPPPPPPPPPPPPPPV[\x80Q` \x82\x01Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x91\x15\x90\x15\x16\x15a\x06DWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x06\x85W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[a\x06\xCA`@Q\x80a\x01\0\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[__Q` a%(_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R`\xE0\x86\x01Qa\x06`\x82\x01Ra\x01\0\x86\x01Qa\x06\x80\x82\x01Ra\x01 \x86\x01Qa\x06\xA0\x82\x01Ra\x01@\x86\x01Qa\x06\xC0\x82\x01R\x84Q\x80Qa\x06\xE0\x83\x01R` \x81\x01Qa\x07\0\x83\x01RP` \x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`@\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP``\x85\x01Q\x80Qa\x07\xA0\x83\x01R` \x81\x01Qa\x07\xC0\x83\x01RP`\x80\x85\x01Q\x80Qa\x07\xE0\x83\x01R` \x81\x01Qa\x08\0\x83\x01RP_\x82Ra\x08@\x82 \x82R\x82\x82Q\x06``\x85\x01R` \x82 \x82R\x82\x82Q\x06`\x80\x85\x01R`\xA0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP``\x82 \x80\x83R\x83\x81\x06\x85R\x83\x81\x82\t\x84\x82\x82\t\x91P\x80` \x87\x01RP\x80`@\x86\x01RP`\xC0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP`\xE0\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPa\x01\0\x85\x01Q\x80Q`\x80\x83\x01R` \x81\x01Q`\xA0\x83\x01RPa\x01 \x85\x01Q\x80Q`\xC0\x83\x01R` \x81\x01Q`\xE0\x83\x01RPa\x01@\x85\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01`\x82 \x82R\x82\x82Q\x06`\xA0\x85\x01Ra\x01\xA0\x85\x01Q\x81Ra\x01\xC0\x85\x01Q` \x82\x01Ra\x01\xE0\x85\x01Q`@\x82\x01Ra\x02\0\x85\x01Q``\x82\x01Ra\x02 \x85\x01Q`\x80\x82\x01Ra\x02@\x85\x01Q`\xA0\x82\x01Ra\x02`\x85\x01Q`\xC0\x82\x01Ra\x02\x80\x85\x01Q`\xE0\x82\x01Ra\x02\xA0\x85\x01Qa\x01\0\x82\x01Ra\x02\xC0\x85\x01Qa\x01 \x82\x01Ra\x01`\x82 \x82R\x82\x82Q\x06`\xC0\x85\x01Ra\x01`\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RPa\x01\x80\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPP`\xA0\x81 \x82\x81\x06`\xE0\x85\x01RPPP\x93\x92PPPV[a\x0C!a\x1F\xBCV[\x81b\x01\0\0\x03a\r\xF8W`@Q\x80``\x01`@R\x80`\x10\x81R` \x01\x7F0d\x1E\x0E\x92\xBE\xBE\xF8\x18&\x8Df;\xCA\xD6\xDB\xCF\xD6\xC0\x14\x91p\xF6\xD7\xD3P\xB1\xB1\xFAl\x10\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81R` \x01\x7F\x15\xEE$u\xBE\xE5\x17\xC4\xEE\x05\xE5\x1F\xA1\xEEs\x12\xA87:\x0B\x13\xDB\x8CQ\xBA\xF0L\xB2\xE9\x9B\xD2\xBD\x81R` \x01~o\xABI\xB8i\xAEb\0\x1D\xEA\xC8x\xB2f{\xD3\x1B\xF3\xE2\x8E:-vJ\xA4\x9B\x8D\x9B\xBD\xD3\x10\x81R` \x01\x7F.\x85k\xF6\xD07p\x8F\xFAL\x06\xD4\xD8\x82\x0FE\xCC\xAD\xCE\x9CZm\x17\x8C\xBDW?\x82\xE0\xF9p\x11\x81R` \x01\x7F\x14\x07\xEE\xE3Y\x93\xF2\xB1\xAD^\xC6\xD9\xB8\x95\x0C\xA3\xAF3\x13]\x06\x03\x7F\x87\x1C^3\xBFVm\xD7\xB4\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0F\xD1W`@Q\x80``\x01`@R\x80`\x14\x81R` \x01\x7F0dKl\x9CJr\x16\x9EM\xAA1}%\xF0E\x12\xAE\x15\xC5;4\xE8\xF5\xAC\xD8\xE1U\xD0\xA6\xC1\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81R` \x01\x7F)\xE8AC\xF5\x87\rGv\xA9-\xF8\xDA\x8Cl\x93\x03\xD5\x90\x88\xF3{\xA8_@\xCFo\xD1Be\xB4\xBC\x81R` \x01\x7F\x1B\xF8-\xEB\xA7\xD7I\x02\xC3p\x8C\xC6\xE7\x0Ea\xF3\x05\x12\xEC\xA9VU!\x0E'nXX\xCE\x8FX\xE5\x81R` \x01\x7F\"\xB9K.+\0C\xD0Nf-^\xC0\x18\xEA\x1C\x8A\x99\xA2:b\xC9\xEBF\xF01\x8Fj\x19I\x85\xF0\x81R` \x01\x7F)\x96\x9D\x8DSc\xBE\xF1\x10\x1Ah\xE4F\xA1N\x1D\xA7\xBA\x92\x94\xE1B\xA1F\xA9\x80\xFD\xDBMMA\xA5\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x11\xA7W`@Q\x80``\x01`@R\x80`\x05\x81R` \x01\x7F.\xE1+\xFFJ(\x13(j\x8D\xC3\x88\xCDuM\x9A>\xF2I\x065\xEB\xA5\x0C\xB9\xC2\xE5\xE7P\x80\0\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81R` \x01~\xE1Kcd\xA4~\x9CB\x84\xA9\xF8\n_\xC4\x1C\xD2\x12\xB0\xD4\xDB\xF8\xA5p7p\xA4\n\x9A49\x90\x81R` \x01\x7F0dNr\xE11\xA0)\x04\x8Bn\x19?\xD8A\x04\\\xEA$\xF6\xFDsk\xEC#\x12\x04p\x8Fp66\x81R` \x01\x7F\"9\x9C4\x13\x9B\xFF\xAD\xA8\xDE\x04j\xACP\xC9b\x8E5\x17\xA3\xA4RySd\xE7w\xCDe\xBB\x9FH\x81R` \x01\x7F\"\x90\xEE1\xC4\x82\xCF\x92\xB7\x9B\x19D\xDB\x1C\x01Gc^\x90\x04\xDB\x8C;\x9D\x13dK\xEF1\xEC;\xD3\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xE1`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x11\xEB\x84\x84a\x17:V[\x80\x82Ra\x11\xFB\x90\x85\x90\x85\x90a\x17\x8BV[` \x82\x01R\x80Qa\x12\x11\x90\x85\x90\x84\x90\x86\x90a\x17\xFAV[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x128a\x1F\xE0V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07Z\xFA\x90P\x80a\x12xW`@Qc\x03;qM`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\x9Ba\x1F\xFEV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06Z\xFA\x90P\x80a\x12xW`@Qc0*\xED\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x13\x1A\x87\x87\x87\x87a\x19IV[\x90P_Q` a%(_9_Q\x90_R_a\x136\x88\x87\x89a\x1E\x13V[\x90Pa\x13B\x81\x83a$\xCFV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x13n\x85a\x04\xB6\x8A_\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\x96\x86a\x04\xB6\x8A` \x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xBE\x86a\x04\xB6\x8A`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xE6\x86a\x04\xB6\x8A``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x0E\x86a\x04\xB6\x8A`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x146\x86a\x04\xB6\x8D`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x14^\x86a\x04\xB6\x8D``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x86\x86a\x04\xB6\x8D`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xAE\x86a\x04\xB6\x8D`\xA0\x01Q\x84a\x12\x1DV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x14\xD8\x87a\x04\xB6\x8B`\xA0\x01Q\x84a\x12\x1DV[\x96Pa\x15\x0Ea\x15\x08`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x12\x1DV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x15FWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x15\x8A\x91\x90a%\x08V[a\x15\xB4\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa$\xCFV[\x90R\x92\x91PPV[a\x15\xE3`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x17,W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a%(_9_Q\x90_R\x90\x83\x80\x15a\x17{W\x84\x93P_[\x82\x81\x10\x15a\x17oW\x83\x85\x86\t\x94P`\x01\x01a\x17YV[P`\x01\x84\x03\x93Pa\x17\x82V[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x17\x9CWP`\x01a\x02\xA3V[\x81_\x03a\x17\xAAWP_a\x02\xA3V[` \x84\x01Q_Q` a%(_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x17\xD8W`\x01\x87\x03\x92Pa\x17\xDFV[`\x01\x84\x03\x92P[Pa\x17\xE9\x82a\x1E\xFEV[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a%(_9_Q\x90_R\x82\x82\x03a\x18sW`\x01_[`\x0B\x81\x10\x15a\x18hW\x81\x86\x03a\x18EW\x86\x81`\x0B\x81\x10a\x186Wa\x186a$\xBBV[` \x02\x01Q\x93PPPPa\x172V[\x82\x80a\x18SWa\x18Sa$\xF4V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x18\x14V[P_\x92PPPa\x172V[a\x18{a \x1CV[`@\x87\x01Q`\x01a\x01@\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x0B\x81\x10\x15a\x18\xBDW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x18\x90V[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x0B\x81\x10\x15a\x19\x11W\x88\x82Q\x8A\x85Q\x8C\x88Q\x8A\t\t\t\x89\x81\x88\x08\x96PP\x88\x89\x8D\x84Q\x8C\x03\x08\x86\t\x94P` \x93\x84\x01\x93\x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x18\xD1V[PPPP\x80\x92PP_a\x19#\x83a\x1E\xFEV[\x90P` \x8A\x01Q\x85\x81\x89\t\x96PP\x84\x81\x87\t\x95P\x84\x82\x87\t\x9A\x99PPPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R______Q` a%(_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x1A\xB6\x87`\xA0\x01Q\x86a\x12\x1DV[\x95P\x88Q``\x8A\x01Q`\x80\x8B\x01Q\x83\x82\x84\t\x97P\x83a\x02\xC0\x8B\x01Q\x89\t\x97P\x83a\x02@\x8B\x01Q\x83\t\x95P\x83a\x01\xA0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02`\x8B\x01Q\x83\t\x95P\x83a\x01\xC0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\x80\x8B\x01Q\x83\t\x95P\x83a\x01\xE0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\xA0\x8B\x01Q\x83\t\x95P\x83a\x02\0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95PPPP\x80\x83\x86\t\x94Pa\x1B}\x86a\x04\xB6\x8C`\xC0\x01Q\x88\x85a\x1Bx\x91\x90a$\xCFV[a\x12\x1DV[\x95Pa\x1B\x96\x86a\x04\xB6\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x12\x1DV[\x95Pa\x1B\xB0\x86a\x04\xB6\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x12\x1DV[\x95Pa\x1B\xCA\x86a\x04\xB6\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x12\x1DV[\x95Pa\x1B\xE4\x86a\x04\xB6\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x12\x1DV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x1C\t\x86a\x04\xB6\x8Ca\x01`\x01Q\x86a\x12\x1DV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x1C.\x86a\x04\xB6\x8Ca\x01\x80\x01Q\x86a\x12\x1DV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C]\x86a\x04\xB6\x8Ca\x01\xE0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\x8C\x86a\x04\xB6\x8Ca\x02\0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xBB\x86a\x04\xB6\x8Ca\x02 \x01Q\x86a\x12\x1DV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xEA\x86a\x04\xB6\x8Ca\x02@\x01Q\x86a\x12\x1DV[\x95Pa\x1D\x07\x86a\x04\xB6\x8Ca\x01\xA0\x01Qa\x1Bx\x8Ba\x02 \x01Qa\x1F\x90V[\x95Pa\x1D\x18\x86\x8Ba\x01\xC0\x01Qa\x12\x80V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1D^\x86a\x04\xB6\x8Ca\x02`\x01Q\x86a\x12\x1DV[\x95Pa\x1Dl\x88_\x01Qa\x1F\x90V[\x94Pa\x1D\x80\x86a\x04\xB6\x89`\xC0\x01Q\x88a\x12\x1DV[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1D\xB4\x86a\x04\xB6\x89`\xE0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xCF\x86a\x04\xB6\x89a\x01\0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xEA\x86a\x04\xB6\x89a\x01 \x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1E\x05\x86a\x04\xB6\x89a\x01@\x01Q\x88a\x12\x1DV[\x9A\x99PPPPPPPPPPV[___Q` a%(_9_Q\x90_R\x90P_\x83` \x01Q\x90P_\x84`@\x01Q\x90P_`\x01\x90P``\x88\x01Q`\x80\x89\x01Qa\x01\xA0\x89\x01Qa\x02@\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xC0\x89\x01Qa\x02`\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xE0\x89\x01Qa\x02\x80\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02\0\x89\x01Qa\x02\xA0\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02 \x89\x01Q\x91Pa\x02\xC0\x89\x01Q\x86\x87\x82\x89\x85\x87\x08\t\x85\t\x93PPPP\x87Q` \x89\x01Q\x85\x86\x86\x83\t\x87\x03\x85\x08\x96PP\x84\x85\x83\x83\t\x86\x03\x87\x08\x99\x98PPPPPPPPPV[_\x81_\x03a\x1F\x1FW`@Qc\xD6\xDB\xBB\r`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___Q` a%(_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x84``\x82\x01R`\x02\x82\x03`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x92PP_Q\x92P\x81a\x1F\x89W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x91\x90PV[__Q` a%(_9_Q\x90_R\x82\x15`\x01\x81\x14a\x1F\xB3W\x83\x82\x03\x92Pa\x1F\x89V[P_\x93\x92PPPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1F\xDBa \x1CV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[_`@\x82\x84\x03\x12\x15a \xADW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a \xD0Wa \xD0a ;V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a \xF9W__\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x1DWa!\x1Da ;V[`@R\x80a\x01`\x84\x01\x85\x81\x11\x15a!2W__\xFD[\x84[\x81\x81\x10\x15a!LW\x805\x83R` \x92\x83\x01\x92\x01a!4V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a!hW__\xFD[a!pa OV[\x90Pa!|\x83\x83a \x9DV[\x81Ra!\x8B\x83`@\x84\x01a \x9DV[` \x82\x01Ra!\x9D\x83`\x80\x84\x01a \x9DV[`@\x82\x01Ra!\xAF\x83`\xC0\x84\x01a \x9DV[``\x82\x01Ra!\xC2\x83a\x01\0\x84\x01a \x9DV[`\x80\x82\x01Ra!\xD5\x83a\x01@\x84\x01a \x9DV[`\xA0\x82\x01Ra!\xE8\x83a\x01\x80\x84\x01a \x9DV[`\xC0\x82\x01Ra!\xFB\x83a\x01\xC0\x84\x01a \x9DV[`\xE0\x82\x01Ra\"\x0E\x83a\x02\0\x84\x01a \x9DV[a\x01\0\x82\x01Ra\"\"\x83a\x02@\x84\x01a \x9DV[a\x01 \x82\x01Ra\"6\x83a\x02\x80\x84\x01a \x9DV[a\x01@\x82\x01Ra\"J\x83a\x02\xC0\x84\x01a \x9DV[a\x01`\x82\x01Ra\"^\x83a\x03\0\x84\x01a \x9DV[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[___\x83\x85\x03a\n\xE0\x81\x12\x15a\"\xF6W__\xFD[a\x05\0\x81\x12\x15a#\x04W__\xFD[Pa#\ra yV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra#(\x86`@\x87\x01a \x9DV[`@\x82\x01Ra#:\x86`\x80\x87\x01a \x9DV[``\x82\x01Ra#L\x86`\xC0\x87\x01a \x9DV[`\x80\x82\x01Ra#_\x86a\x01\0\x87\x01a \x9DV[`\xA0\x82\x01Ra#r\x86a\x01@\x87\x01a \x9DV[`\xC0\x82\x01Ra#\x85\x86a\x01\x80\x87\x01a \x9DV[`\xE0\x82\x01Ra#\x98\x86a\x01\xC0\x87\x01a \x9DV[a\x01\0\x82\x01Ra#\xAC\x86a\x02\0\x87\x01a \x9DV[a\x01 \x82\x01Ra#\xC0\x86a\x02@\x87\x01a \x9DV[a\x01@\x82\x01Ra#\xD4\x86a\x02\x80\x87\x01a \x9DV[a\x01`\x82\x01Ra#\xE8\x86a\x02\xC0\x87\x01a \x9DV[a\x01\x80\x82\x01Ra#\xFC\x86a\x03\0\x87\x01a \x9DV[a\x01\xA0\x82\x01Ra$\x10\x86a\x03@\x87\x01a \x9DV[a\x01\xC0\x82\x01Ra$$\x86a\x03\x80\x87\x01a \x9DV[a\x01\xE0\x82\x01Ra$8\x86a\x03\xC0\x87\x01a \x9DV[a\x02\0\x82\x01Ra$L\x86a\x04\0\x87\x01a \x9DV[a\x02 \x82\x01Ra$`\x86a\x04@\x87\x01a \x9DV[a\x02@\x82\x01Ra$t\x86a\x04\x80\x87\x01a \x9DV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa$\xA2\x85a\x05\0\x86\x01a \xEAV[\x91Pa$\xB2\x85a\x06`\x86\x01a!WV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a$\xEEWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x92\x91PPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a%\"WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
3146    );
3147    #[derive(serde::Serialize, serde::Deserialize)]
3148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3149    /**Custom error with signature `BN254G1AddFailed()` and selector `0x6055db6a`.
3150```solidity
3151error BN254G1AddFailed();
3152```*/
3153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3154    #[derive(Clone)]
3155    pub struct BN254G1AddFailed;
3156    #[allow(
3157        non_camel_case_types,
3158        non_snake_case,
3159        clippy::pub_underscore_fields,
3160        clippy::style
3161    )]
3162    const _: () = {
3163        use alloy::sol_types as alloy_sol_types;
3164        #[doc(hidden)]
3165        type UnderlyingSolTuple<'a> = ();
3166        #[doc(hidden)]
3167        type UnderlyingRustTuple<'a> = ();
3168        #[cfg(test)]
3169        #[allow(dead_code, unreachable_patterns)]
3170        fn _type_assertion(
3171            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3172        ) {
3173            match _t {
3174                alloy_sol_types::private::AssertTypeEq::<
3175                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3176                >(_) => {}
3177            }
3178        }
3179        #[automatically_derived]
3180        #[doc(hidden)]
3181        impl ::core::convert::From<BN254G1AddFailed> for UnderlyingRustTuple<'_> {
3182            fn from(value: BN254G1AddFailed) -> Self {
3183                ()
3184            }
3185        }
3186        #[automatically_derived]
3187        #[doc(hidden)]
3188        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254G1AddFailed {
3189            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3190                Self
3191            }
3192        }
3193        #[automatically_derived]
3194        impl alloy_sol_types::SolError for BN254G1AddFailed {
3195            type Parameters<'a> = UnderlyingSolTuple<'a>;
3196            type Token<'a> = <Self::Parameters<
3197                'a,
3198            > as alloy_sol_types::SolType>::Token<'a>;
3199            const SIGNATURE: &'static str = "BN254G1AddFailed()";
3200            const SELECTOR: [u8; 4] = [96u8, 85u8, 219u8, 106u8];
3201            #[inline]
3202            fn new<'a>(
3203                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3204            ) -> Self {
3205                tuple.into()
3206            }
3207            #[inline]
3208            fn tokenize(&self) -> Self::Token<'_> {
3209                ()
3210            }
3211            #[inline]
3212            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3213                <Self::Parameters<
3214                    '_,
3215                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3216                    .map(Self::new)
3217            }
3218        }
3219    };
3220    #[derive(serde::Serialize, serde::Deserialize)]
3221    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3222    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
3223```solidity
3224error BN254PairingProdFailed();
3225```*/
3226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3227    #[derive(Clone)]
3228    pub struct BN254PairingProdFailed;
3229    #[allow(
3230        non_camel_case_types,
3231        non_snake_case,
3232        clippy::pub_underscore_fields,
3233        clippy::style
3234    )]
3235    const _: () = {
3236        use alloy::sol_types as alloy_sol_types;
3237        #[doc(hidden)]
3238        type UnderlyingSolTuple<'a> = ();
3239        #[doc(hidden)]
3240        type UnderlyingRustTuple<'a> = ();
3241        #[cfg(test)]
3242        #[allow(dead_code, unreachable_patterns)]
3243        fn _type_assertion(
3244            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3245        ) {
3246            match _t {
3247                alloy_sol_types::private::AssertTypeEq::<
3248                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3249                >(_) => {}
3250            }
3251        }
3252        #[automatically_derived]
3253        #[doc(hidden)]
3254        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
3255            fn from(value: BN254PairingProdFailed) -> Self {
3256                ()
3257            }
3258        }
3259        #[automatically_derived]
3260        #[doc(hidden)]
3261        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
3262            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3263                Self
3264            }
3265        }
3266        #[automatically_derived]
3267        impl alloy_sol_types::SolError for BN254PairingProdFailed {
3268            type Parameters<'a> = UnderlyingSolTuple<'a>;
3269            type Token<'a> = <Self::Parameters<
3270                'a,
3271            > as alloy_sol_types::SolType>::Token<'a>;
3272            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
3273            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
3274            #[inline]
3275            fn new<'a>(
3276                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3277            ) -> Self {
3278                tuple.into()
3279            }
3280            #[inline]
3281            fn tokenize(&self) -> Self::Token<'_> {
3282                ()
3283            }
3284            #[inline]
3285            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3286                <Self::Parameters<
3287                    '_,
3288                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3289                    .map(Self::new)
3290            }
3291        }
3292    };
3293    #[derive(serde::Serialize, serde::Deserialize)]
3294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3295    /**Custom error with signature `BN254ScalarInvZero()` and selector `0xd6dbbb0d`.
3296```solidity
3297error BN254ScalarInvZero();
3298```*/
3299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3300    #[derive(Clone)]
3301    pub struct BN254ScalarInvZero;
3302    #[allow(
3303        non_camel_case_types,
3304        non_snake_case,
3305        clippy::pub_underscore_fields,
3306        clippy::style
3307    )]
3308    const _: () = {
3309        use alloy::sol_types as alloy_sol_types;
3310        #[doc(hidden)]
3311        type UnderlyingSolTuple<'a> = ();
3312        #[doc(hidden)]
3313        type UnderlyingRustTuple<'a> = ();
3314        #[cfg(test)]
3315        #[allow(dead_code, unreachable_patterns)]
3316        fn _type_assertion(
3317            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3318        ) {
3319            match _t {
3320                alloy_sol_types::private::AssertTypeEq::<
3321                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3322                >(_) => {}
3323            }
3324        }
3325        #[automatically_derived]
3326        #[doc(hidden)]
3327        impl ::core::convert::From<BN254ScalarInvZero> for UnderlyingRustTuple<'_> {
3328            fn from(value: BN254ScalarInvZero) -> Self {
3329                ()
3330            }
3331        }
3332        #[automatically_derived]
3333        #[doc(hidden)]
3334        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254ScalarInvZero {
3335            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3336                Self
3337            }
3338        }
3339        #[automatically_derived]
3340        impl alloy_sol_types::SolError for BN254ScalarInvZero {
3341            type Parameters<'a> = UnderlyingSolTuple<'a>;
3342            type Token<'a> = <Self::Parameters<
3343                'a,
3344            > as alloy_sol_types::SolType>::Token<'a>;
3345            const SIGNATURE: &'static str = "BN254ScalarInvZero()";
3346            const SELECTOR: [u8; 4] = [214u8, 219u8, 187u8, 13u8];
3347            #[inline]
3348            fn new<'a>(
3349                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3350            ) -> Self {
3351                tuple.into()
3352            }
3353            #[inline]
3354            fn tokenize(&self) -> Self::Token<'_> {
3355                ()
3356            }
3357            #[inline]
3358            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3359                <Self::Parameters<
3360                    '_,
3361                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3362                    .map(Self::new)
3363            }
3364        }
3365    };
3366    #[derive(serde::Serialize, serde::Deserialize)]
3367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3368    /**Custom error with signature `BN254ScalarMulFailed()` and selector `0x19db8a68`.
3369```solidity
3370error BN254ScalarMulFailed();
3371```*/
3372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3373    #[derive(Clone)]
3374    pub struct BN254ScalarMulFailed;
3375    #[allow(
3376        non_camel_case_types,
3377        non_snake_case,
3378        clippy::pub_underscore_fields,
3379        clippy::style
3380    )]
3381    const _: () = {
3382        use alloy::sol_types as alloy_sol_types;
3383        #[doc(hidden)]
3384        type UnderlyingSolTuple<'a> = ();
3385        #[doc(hidden)]
3386        type UnderlyingRustTuple<'a> = ();
3387        #[cfg(test)]
3388        #[allow(dead_code, unreachable_patterns)]
3389        fn _type_assertion(
3390            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3391        ) {
3392            match _t {
3393                alloy_sol_types::private::AssertTypeEq::<
3394                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3395                >(_) => {}
3396            }
3397        }
3398        #[automatically_derived]
3399        #[doc(hidden)]
3400        impl ::core::convert::From<BN254ScalarMulFailed> for UnderlyingRustTuple<'_> {
3401            fn from(value: BN254ScalarMulFailed) -> Self {
3402                ()
3403            }
3404        }
3405        #[automatically_derived]
3406        #[doc(hidden)]
3407        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254ScalarMulFailed {
3408            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3409                Self
3410            }
3411        }
3412        #[automatically_derived]
3413        impl alloy_sol_types::SolError for BN254ScalarMulFailed {
3414            type Parameters<'a> = UnderlyingSolTuple<'a>;
3415            type Token<'a> = <Self::Parameters<
3416                'a,
3417            > as alloy_sol_types::SolType>::Token<'a>;
3418            const SIGNATURE: &'static str = "BN254ScalarMulFailed()";
3419            const SELECTOR: [u8; 4] = [25u8, 219u8, 138u8, 104u8];
3420            #[inline]
3421            fn new<'a>(
3422                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3423            ) -> Self {
3424                tuple.into()
3425            }
3426            #[inline]
3427            fn tokenize(&self) -> Self::Token<'_> {
3428                ()
3429            }
3430            #[inline]
3431            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3432                <Self::Parameters<
3433                    '_,
3434                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3435                    .map(Self::new)
3436            }
3437        }
3438    };
3439    #[derive(serde::Serialize, serde::Deserialize)]
3440    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3441    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
3442```solidity
3443error InvalidG1();
3444```*/
3445    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3446    #[derive(Clone)]
3447    pub struct InvalidG1;
3448    #[allow(
3449        non_camel_case_types,
3450        non_snake_case,
3451        clippy::pub_underscore_fields,
3452        clippy::style
3453    )]
3454    const _: () = {
3455        use alloy::sol_types as alloy_sol_types;
3456        #[doc(hidden)]
3457        type UnderlyingSolTuple<'a> = ();
3458        #[doc(hidden)]
3459        type UnderlyingRustTuple<'a> = ();
3460        #[cfg(test)]
3461        #[allow(dead_code, unreachable_patterns)]
3462        fn _type_assertion(
3463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3464        ) {
3465            match _t {
3466                alloy_sol_types::private::AssertTypeEq::<
3467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3468                >(_) => {}
3469            }
3470        }
3471        #[automatically_derived]
3472        #[doc(hidden)]
3473        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3474            fn from(value: InvalidG1) -> Self {
3475                ()
3476            }
3477        }
3478        #[automatically_derived]
3479        #[doc(hidden)]
3480        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3481            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3482                Self
3483            }
3484        }
3485        #[automatically_derived]
3486        impl alloy_sol_types::SolError for InvalidG1 {
3487            type Parameters<'a> = UnderlyingSolTuple<'a>;
3488            type Token<'a> = <Self::Parameters<
3489                'a,
3490            > as alloy_sol_types::SolType>::Token<'a>;
3491            const SIGNATURE: &'static str = "InvalidG1()";
3492            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3493            #[inline]
3494            fn new<'a>(
3495                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3496            ) -> Self {
3497                tuple.into()
3498            }
3499            #[inline]
3500            fn tokenize(&self) -> Self::Token<'_> {
3501                ()
3502            }
3503            #[inline]
3504            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3505                <Self::Parameters<
3506                    '_,
3507                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3508                    .map(Self::new)
3509            }
3510        }
3511    };
3512    #[derive(serde::Serialize, serde::Deserialize)]
3513    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3514    /**Custom error with signature `InvalidPlonkArgs()` and selector `0xfd9a2d1b`.
3515```solidity
3516error InvalidPlonkArgs();
3517```*/
3518    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3519    #[derive(Clone)]
3520    pub struct InvalidPlonkArgs;
3521    #[allow(
3522        non_camel_case_types,
3523        non_snake_case,
3524        clippy::pub_underscore_fields,
3525        clippy::style
3526    )]
3527    const _: () = {
3528        use alloy::sol_types as alloy_sol_types;
3529        #[doc(hidden)]
3530        type UnderlyingSolTuple<'a> = ();
3531        #[doc(hidden)]
3532        type UnderlyingRustTuple<'a> = ();
3533        #[cfg(test)]
3534        #[allow(dead_code, unreachable_patterns)]
3535        fn _type_assertion(
3536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3537        ) {
3538            match _t {
3539                alloy_sol_types::private::AssertTypeEq::<
3540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3541                >(_) => {}
3542            }
3543        }
3544        #[automatically_derived]
3545        #[doc(hidden)]
3546        impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
3547            fn from(value: InvalidPlonkArgs) -> Self {
3548                ()
3549            }
3550        }
3551        #[automatically_derived]
3552        #[doc(hidden)]
3553        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
3554            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3555                Self
3556            }
3557        }
3558        #[automatically_derived]
3559        impl alloy_sol_types::SolError for InvalidPlonkArgs {
3560            type Parameters<'a> = UnderlyingSolTuple<'a>;
3561            type Token<'a> = <Self::Parameters<
3562                'a,
3563            > as alloy_sol_types::SolType>::Token<'a>;
3564            const SIGNATURE: &'static str = "InvalidPlonkArgs()";
3565            const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
3566            #[inline]
3567            fn new<'a>(
3568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3569            ) -> Self {
3570                tuple.into()
3571            }
3572            #[inline]
3573            fn tokenize(&self) -> Self::Token<'_> {
3574                ()
3575            }
3576            #[inline]
3577            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3578                <Self::Parameters<
3579                    '_,
3580                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3581                    .map(Self::new)
3582            }
3583        }
3584    };
3585    #[derive(serde::Serialize, serde::Deserialize)]
3586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3587    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
3588```solidity
3589error InvalidScalar();
3590```*/
3591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3592    #[derive(Clone)]
3593    pub struct InvalidScalar;
3594    #[allow(
3595        non_camel_case_types,
3596        non_snake_case,
3597        clippy::pub_underscore_fields,
3598        clippy::style
3599    )]
3600    const _: () = {
3601        use alloy::sol_types as alloy_sol_types;
3602        #[doc(hidden)]
3603        type UnderlyingSolTuple<'a> = ();
3604        #[doc(hidden)]
3605        type UnderlyingRustTuple<'a> = ();
3606        #[cfg(test)]
3607        #[allow(dead_code, unreachable_patterns)]
3608        fn _type_assertion(
3609            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3610        ) {
3611            match _t {
3612                alloy_sol_types::private::AssertTypeEq::<
3613                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3614                >(_) => {}
3615            }
3616        }
3617        #[automatically_derived]
3618        #[doc(hidden)]
3619        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
3620            fn from(value: InvalidScalar) -> Self {
3621                ()
3622            }
3623        }
3624        #[automatically_derived]
3625        #[doc(hidden)]
3626        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
3627            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3628                Self
3629            }
3630        }
3631        #[automatically_derived]
3632        impl alloy_sol_types::SolError for InvalidScalar {
3633            type Parameters<'a> = UnderlyingSolTuple<'a>;
3634            type Token<'a> = <Self::Parameters<
3635                'a,
3636            > as alloy_sol_types::SolType>::Token<'a>;
3637            const SIGNATURE: &'static str = "InvalidScalar()";
3638            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
3639            #[inline]
3640            fn new<'a>(
3641                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3642            ) -> Self {
3643                tuple.into()
3644            }
3645            #[inline]
3646            fn tokenize(&self) -> Self::Token<'_> {
3647                ()
3648            }
3649            #[inline]
3650            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3651                <Self::Parameters<
3652                    '_,
3653                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3654                    .map(Self::new)
3655            }
3656        }
3657    };
3658    #[derive(serde::Serialize, serde::Deserialize)]
3659    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3660    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
3661```solidity
3662error PowPrecompileFailed();
3663```*/
3664    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3665    #[derive(Clone)]
3666    pub struct PowPrecompileFailed;
3667    #[allow(
3668        non_camel_case_types,
3669        non_snake_case,
3670        clippy::pub_underscore_fields,
3671        clippy::style
3672    )]
3673    const _: () = {
3674        use alloy::sol_types as alloy_sol_types;
3675        #[doc(hidden)]
3676        type UnderlyingSolTuple<'a> = ();
3677        #[doc(hidden)]
3678        type UnderlyingRustTuple<'a> = ();
3679        #[cfg(test)]
3680        #[allow(dead_code, unreachable_patterns)]
3681        fn _type_assertion(
3682            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3683        ) {
3684            match _t {
3685                alloy_sol_types::private::AssertTypeEq::<
3686                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3687                >(_) => {}
3688            }
3689        }
3690        #[automatically_derived]
3691        #[doc(hidden)]
3692        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
3693            fn from(value: PowPrecompileFailed) -> Self {
3694                ()
3695            }
3696        }
3697        #[automatically_derived]
3698        #[doc(hidden)]
3699        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
3700            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3701                Self
3702            }
3703        }
3704        #[automatically_derived]
3705        impl alloy_sol_types::SolError for PowPrecompileFailed {
3706            type Parameters<'a> = UnderlyingSolTuple<'a>;
3707            type Token<'a> = <Self::Parameters<
3708                'a,
3709            > as alloy_sol_types::SolType>::Token<'a>;
3710            const SIGNATURE: &'static str = "PowPrecompileFailed()";
3711            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
3712            #[inline]
3713            fn new<'a>(
3714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3715            ) -> Self {
3716                tuple.into()
3717            }
3718            #[inline]
3719            fn tokenize(&self) -> Self::Token<'_> {
3720                ()
3721            }
3722            #[inline]
3723            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3724                <Self::Parameters<
3725                    '_,
3726                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3727                    .map(Self::new)
3728            }
3729        }
3730    };
3731    #[derive(serde::Serialize, serde::Deserialize)]
3732    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3733    /**Custom error with signature `UnsupportedDegree()` and selector `0xe2ef09e5`.
3734```solidity
3735error UnsupportedDegree();
3736```*/
3737    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3738    #[derive(Clone)]
3739    pub struct UnsupportedDegree;
3740    #[allow(
3741        non_camel_case_types,
3742        non_snake_case,
3743        clippy::pub_underscore_fields,
3744        clippy::style
3745    )]
3746    const _: () = {
3747        use alloy::sol_types as alloy_sol_types;
3748        #[doc(hidden)]
3749        type UnderlyingSolTuple<'a> = ();
3750        #[doc(hidden)]
3751        type UnderlyingRustTuple<'a> = ();
3752        #[cfg(test)]
3753        #[allow(dead_code, unreachable_patterns)]
3754        fn _type_assertion(
3755            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3756        ) {
3757            match _t {
3758                alloy_sol_types::private::AssertTypeEq::<
3759                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3760                >(_) => {}
3761            }
3762        }
3763        #[automatically_derived]
3764        #[doc(hidden)]
3765        impl ::core::convert::From<UnsupportedDegree> for UnderlyingRustTuple<'_> {
3766            fn from(value: UnsupportedDegree) -> Self {
3767                ()
3768            }
3769        }
3770        #[automatically_derived]
3771        #[doc(hidden)]
3772        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
3773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3774                Self
3775            }
3776        }
3777        #[automatically_derived]
3778        impl alloy_sol_types::SolError for UnsupportedDegree {
3779            type Parameters<'a> = UnderlyingSolTuple<'a>;
3780            type Token<'a> = <Self::Parameters<
3781                'a,
3782            > as alloy_sol_types::SolType>::Token<'a>;
3783            const SIGNATURE: &'static str = "UnsupportedDegree()";
3784            const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
3785            #[inline]
3786            fn new<'a>(
3787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3788            ) -> Self {
3789                tuple.into()
3790            }
3791            #[inline]
3792            fn tokenize(&self) -> Self::Token<'_> {
3793                ()
3794            }
3795            #[inline]
3796            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3797                <Self::Parameters<
3798                    '_,
3799                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3800                    .map(Self::new)
3801            }
3802        }
3803    };
3804    #[derive(serde::Serialize, serde::Deserialize)]
3805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3806    /**Custom error with signature `WrongPlonkVK()` and selector `0x41f53b12`.
3807```solidity
3808error WrongPlonkVK();
3809```*/
3810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3811    #[derive(Clone)]
3812    pub struct WrongPlonkVK;
3813    #[allow(
3814        non_camel_case_types,
3815        non_snake_case,
3816        clippy::pub_underscore_fields,
3817        clippy::style
3818    )]
3819    const _: () = {
3820        use alloy::sol_types as alloy_sol_types;
3821        #[doc(hidden)]
3822        type UnderlyingSolTuple<'a> = ();
3823        #[doc(hidden)]
3824        type UnderlyingRustTuple<'a> = ();
3825        #[cfg(test)]
3826        #[allow(dead_code, unreachable_patterns)]
3827        fn _type_assertion(
3828            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3829        ) {
3830            match _t {
3831                alloy_sol_types::private::AssertTypeEq::<
3832                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3833                >(_) => {}
3834            }
3835        }
3836        #[automatically_derived]
3837        #[doc(hidden)]
3838        impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
3839            fn from(value: WrongPlonkVK) -> Self {
3840                ()
3841            }
3842        }
3843        #[automatically_derived]
3844        #[doc(hidden)]
3845        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
3846            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3847                Self
3848            }
3849        }
3850        #[automatically_derived]
3851        impl alloy_sol_types::SolError for WrongPlonkVK {
3852            type Parameters<'a> = UnderlyingSolTuple<'a>;
3853            type Token<'a> = <Self::Parameters<
3854                'a,
3855            > as alloy_sol_types::SolType>::Token<'a>;
3856            const SIGNATURE: &'static str = "WrongPlonkVK()";
3857            const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
3858            #[inline]
3859            fn new<'a>(
3860                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3861            ) -> Self {
3862                tuple.into()
3863            }
3864            #[inline]
3865            fn tokenize(&self) -> Self::Token<'_> {
3866                ()
3867            }
3868            #[inline]
3869            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3870                <Self::Parameters<
3871                    '_,
3872                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3873                    .map(Self::new)
3874            }
3875        }
3876    };
3877    #[derive(serde::Serialize, serde::Deserialize)]
3878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3879    /**Function with signature `BETA_H_X0()` and selector `0x834c452a`.
3880```solidity
3881function BETA_H_X0() external view returns (uint256);
3882```*/
3883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3884    #[derive(Clone)]
3885    pub struct BETA_H_X0Call;
3886    #[derive(serde::Serialize, serde::Deserialize)]
3887    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3888    ///Container type for the return parameters of the [`BETA_H_X0()`](BETA_H_X0Call) function.
3889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3890    #[derive(Clone)]
3891    pub struct BETA_H_X0Return {
3892        #[allow(missing_docs)]
3893        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3894    }
3895    #[allow(
3896        non_camel_case_types,
3897        non_snake_case,
3898        clippy::pub_underscore_fields,
3899        clippy::style
3900    )]
3901    const _: () = {
3902        use alloy::sol_types as alloy_sol_types;
3903        {
3904            #[doc(hidden)]
3905            type UnderlyingSolTuple<'a> = ();
3906            #[doc(hidden)]
3907            type UnderlyingRustTuple<'a> = ();
3908            #[cfg(test)]
3909            #[allow(dead_code, unreachable_patterns)]
3910            fn _type_assertion(
3911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3912            ) {
3913                match _t {
3914                    alloy_sol_types::private::AssertTypeEq::<
3915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3916                    >(_) => {}
3917                }
3918            }
3919            #[automatically_derived]
3920            #[doc(hidden)]
3921            impl ::core::convert::From<BETA_H_X0Call> for UnderlyingRustTuple<'_> {
3922                fn from(value: BETA_H_X0Call) -> Self {
3923                    ()
3924                }
3925            }
3926            #[automatically_derived]
3927            #[doc(hidden)]
3928            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X0Call {
3929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3930                    Self
3931                }
3932            }
3933        }
3934        {
3935            #[doc(hidden)]
3936            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3937            #[doc(hidden)]
3938            type UnderlyingRustTuple<'a> = (
3939                alloy::sol_types::private::primitives::aliases::U256,
3940            );
3941            #[cfg(test)]
3942            #[allow(dead_code, unreachable_patterns)]
3943            fn _type_assertion(
3944                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3945            ) {
3946                match _t {
3947                    alloy_sol_types::private::AssertTypeEq::<
3948                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3949                    >(_) => {}
3950                }
3951            }
3952            #[automatically_derived]
3953            #[doc(hidden)]
3954            impl ::core::convert::From<BETA_H_X0Return> for UnderlyingRustTuple<'_> {
3955                fn from(value: BETA_H_X0Return) -> Self {
3956                    (value._0,)
3957                }
3958            }
3959            #[automatically_derived]
3960            #[doc(hidden)]
3961            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X0Return {
3962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3963                    Self { _0: tuple.0 }
3964                }
3965            }
3966        }
3967        #[automatically_derived]
3968        impl alloy_sol_types::SolCall for BETA_H_X0Call {
3969            type Parameters<'a> = ();
3970            type Token<'a> = <Self::Parameters<
3971                'a,
3972            > as alloy_sol_types::SolType>::Token<'a>;
3973            type Return = alloy::sol_types::private::primitives::aliases::U256;
3974            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3975            type ReturnToken<'a> = <Self::ReturnTuple<
3976                'a,
3977            > as alloy_sol_types::SolType>::Token<'a>;
3978            const SIGNATURE: &'static str = "BETA_H_X0()";
3979            const SELECTOR: [u8; 4] = [131u8, 76u8, 69u8, 42u8];
3980            #[inline]
3981            fn new<'a>(
3982                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3983            ) -> Self {
3984                tuple.into()
3985            }
3986            #[inline]
3987            fn tokenize(&self) -> Self::Token<'_> {
3988                ()
3989            }
3990            #[inline]
3991            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3992                (
3993                    <alloy::sol_types::sol_data::Uint<
3994                        256,
3995                    > as alloy_sol_types::SolType>::tokenize(ret),
3996                )
3997            }
3998            #[inline]
3999            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4000                <Self::ReturnTuple<
4001                    '_,
4002                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4003                    .map(|r| {
4004                        let r: BETA_H_X0Return = r.into();
4005                        r._0
4006                    })
4007            }
4008            #[inline]
4009            fn abi_decode_returns_validate(
4010                data: &[u8],
4011            ) -> alloy_sol_types::Result<Self::Return> {
4012                <Self::ReturnTuple<
4013                    '_,
4014                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4015                    .map(|r| {
4016                        let r: BETA_H_X0Return = r.into();
4017                        r._0
4018                    })
4019            }
4020        }
4021    };
4022    #[derive(serde::Serialize, serde::Deserialize)]
4023    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4024    /**Function with signature `BETA_H_X1()` and selector `0xaf196ba2`.
4025```solidity
4026function BETA_H_X1() external view returns (uint256);
4027```*/
4028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4029    #[derive(Clone)]
4030    pub struct BETA_H_X1Call;
4031    #[derive(serde::Serialize, serde::Deserialize)]
4032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4033    ///Container type for the return parameters of the [`BETA_H_X1()`](BETA_H_X1Call) function.
4034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4035    #[derive(Clone)]
4036    pub struct BETA_H_X1Return {
4037        #[allow(missing_docs)]
4038        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4039    }
4040    #[allow(
4041        non_camel_case_types,
4042        non_snake_case,
4043        clippy::pub_underscore_fields,
4044        clippy::style
4045    )]
4046    const _: () = {
4047        use alloy::sol_types as alloy_sol_types;
4048        {
4049            #[doc(hidden)]
4050            type UnderlyingSolTuple<'a> = ();
4051            #[doc(hidden)]
4052            type UnderlyingRustTuple<'a> = ();
4053            #[cfg(test)]
4054            #[allow(dead_code, unreachable_patterns)]
4055            fn _type_assertion(
4056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4057            ) {
4058                match _t {
4059                    alloy_sol_types::private::AssertTypeEq::<
4060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4061                    >(_) => {}
4062                }
4063            }
4064            #[automatically_derived]
4065            #[doc(hidden)]
4066            impl ::core::convert::From<BETA_H_X1Call> for UnderlyingRustTuple<'_> {
4067                fn from(value: BETA_H_X1Call) -> Self {
4068                    ()
4069                }
4070            }
4071            #[automatically_derived]
4072            #[doc(hidden)]
4073            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X1Call {
4074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4075                    Self
4076                }
4077            }
4078        }
4079        {
4080            #[doc(hidden)]
4081            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4082            #[doc(hidden)]
4083            type UnderlyingRustTuple<'a> = (
4084                alloy::sol_types::private::primitives::aliases::U256,
4085            );
4086            #[cfg(test)]
4087            #[allow(dead_code, unreachable_patterns)]
4088            fn _type_assertion(
4089                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4090            ) {
4091                match _t {
4092                    alloy_sol_types::private::AssertTypeEq::<
4093                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4094                    >(_) => {}
4095                }
4096            }
4097            #[automatically_derived]
4098            #[doc(hidden)]
4099            impl ::core::convert::From<BETA_H_X1Return> for UnderlyingRustTuple<'_> {
4100                fn from(value: BETA_H_X1Return) -> Self {
4101                    (value._0,)
4102                }
4103            }
4104            #[automatically_derived]
4105            #[doc(hidden)]
4106            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X1Return {
4107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4108                    Self { _0: tuple.0 }
4109                }
4110            }
4111        }
4112        #[automatically_derived]
4113        impl alloy_sol_types::SolCall for BETA_H_X1Call {
4114            type Parameters<'a> = ();
4115            type Token<'a> = <Self::Parameters<
4116                'a,
4117            > as alloy_sol_types::SolType>::Token<'a>;
4118            type Return = alloy::sol_types::private::primitives::aliases::U256;
4119            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4120            type ReturnToken<'a> = <Self::ReturnTuple<
4121                'a,
4122            > as alloy_sol_types::SolType>::Token<'a>;
4123            const SIGNATURE: &'static str = "BETA_H_X1()";
4124            const SELECTOR: [u8; 4] = [175u8, 25u8, 107u8, 162u8];
4125            #[inline]
4126            fn new<'a>(
4127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4128            ) -> Self {
4129                tuple.into()
4130            }
4131            #[inline]
4132            fn tokenize(&self) -> Self::Token<'_> {
4133                ()
4134            }
4135            #[inline]
4136            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4137                (
4138                    <alloy::sol_types::sol_data::Uint<
4139                        256,
4140                    > as alloy_sol_types::SolType>::tokenize(ret),
4141                )
4142            }
4143            #[inline]
4144            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4145                <Self::ReturnTuple<
4146                    '_,
4147                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4148                    .map(|r| {
4149                        let r: BETA_H_X1Return = r.into();
4150                        r._0
4151                    })
4152            }
4153            #[inline]
4154            fn abi_decode_returns_validate(
4155                data: &[u8],
4156            ) -> alloy_sol_types::Result<Self::Return> {
4157                <Self::ReturnTuple<
4158                    '_,
4159                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4160                    .map(|r| {
4161                        let r: BETA_H_X1Return = r.into();
4162                        r._0
4163                    })
4164            }
4165        }
4166    };
4167    #[derive(serde::Serialize, serde::Deserialize)]
4168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4169    /**Function with signature `BETA_H_Y0()` and selector `0xf5144326`.
4170```solidity
4171function BETA_H_Y0() external view returns (uint256);
4172```*/
4173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4174    #[derive(Clone)]
4175    pub struct BETA_H_Y0Call;
4176    #[derive(serde::Serialize, serde::Deserialize)]
4177    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4178    ///Container type for the return parameters of the [`BETA_H_Y0()`](BETA_H_Y0Call) function.
4179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4180    #[derive(Clone)]
4181    pub struct BETA_H_Y0Return {
4182        #[allow(missing_docs)]
4183        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4184    }
4185    #[allow(
4186        non_camel_case_types,
4187        non_snake_case,
4188        clippy::pub_underscore_fields,
4189        clippy::style
4190    )]
4191    const _: () = {
4192        use alloy::sol_types as alloy_sol_types;
4193        {
4194            #[doc(hidden)]
4195            type UnderlyingSolTuple<'a> = ();
4196            #[doc(hidden)]
4197            type UnderlyingRustTuple<'a> = ();
4198            #[cfg(test)]
4199            #[allow(dead_code, unreachable_patterns)]
4200            fn _type_assertion(
4201                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4202            ) {
4203                match _t {
4204                    alloy_sol_types::private::AssertTypeEq::<
4205                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4206                    >(_) => {}
4207                }
4208            }
4209            #[automatically_derived]
4210            #[doc(hidden)]
4211            impl ::core::convert::From<BETA_H_Y0Call> for UnderlyingRustTuple<'_> {
4212                fn from(value: BETA_H_Y0Call) -> Self {
4213                    ()
4214                }
4215            }
4216            #[automatically_derived]
4217            #[doc(hidden)]
4218            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y0Call {
4219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4220                    Self
4221                }
4222            }
4223        }
4224        {
4225            #[doc(hidden)]
4226            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4227            #[doc(hidden)]
4228            type UnderlyingRustTuple<'a> = (
4229                alloy::sol_types::private::primitives::aliases::U256,
4230            );
4231            #[cfg(test)]
4232            #[allow(dead_code, unreachable_patterns)]
4233            fn _type_assertion(
4234                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4235            ) {
4236                match _t {
4237                    alloy_sol_types::private::AssertTypeEq::<
4238                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4239                    >(_) => {}
4240                }
4241            }
4242            #[automatically_derived]
4243            #[doc(hidden)]
4244            impl ::core::convert::From<BETA_H_Y0Return> for UnderlyingRustTuple<'_> {
4245                fn from(value: BETA_H_Y0Return) -> Self {
4246                    (value._0,)
4247                }
4248            }
4249            #[automatically_derived]
4250            #[doc(hidden)]
4251            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y0Return {
4252                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4253                    Self { _0: tuple.0 }
4254                }
4255            }
4256        }
4257        #[automatically_derived]
4258        impl alloy_sol_types::SolCall for BETA_H_Y0Call {
4259            type Parameters<'a> = ();
4260            type Token<'a> = <Self::Parameters<
4261                'a,
4262            > as alloy_sol_types::SolType>::Token<'a>;
4263            type Return = alloy::sol_types::private::primitives::aliases::U256;
4264            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4265            type ReturnToken<'a> = <Self::ReturnTuple<
4266                'a,
4267            > as alloy_sol_types::SolType>::Token<'a>;
4268            const SIGNATURE: &'static str = "BETA_H_Y0()";
4269            const SELECTOR: [u8; 4] = [245u8, 20u8, 67u8, 38u8];
4270            #[inline]
4271            fn new<'a>(
4272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4273            ) -> Self {
4274                tuple.into()
4275            }
4276            #[inline]
4277            fn tokenize(&self) -> Self::Token<'_> {
4278                ()
4279            }
4280            #[inline]
4281            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4282                (
4283                    <alloy::sol_types::sol_data::Uint<
4284                        256,
4285                    > as alloy_sol_types::SolType>::tokenize(ret),
4286                )
4287            }
4288            #[inline]
4289            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4290                <Self::ReturnTuple<
4291                    '_,
4292                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4293                    .map(|r| {
4294                        let r: BETA_H_Y0Return = r.into();
4295                        r._0
4296                    })
4297            }
4298            #[inline]
4299            fn abi_decode_returns_validate(
4300                data: &[u8],
4301            ) -> alloy_sol_types::Result<Self::Return> {
4302                <Self::ReturnTuple<
4303                    '_,
4304                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4305                    .map(|r| {
4306                        let r: BETA_H_Y0Return = r.into();
4307                        r._0
4308                    })
4309            }
4310        }
4311    };
4312    #[derive(serde::Serialize, serde::Deserialize)]
4313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4314    /**Function with signature `BETA_H_Y1()` and selector `0x4b4734e3`.
4315```solidity
4316function BETA_H_Y1() external view returns (uint256);
4317```*/
4318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4319    #[derive(Clone)]
4320    pub struct BETA_H_Y1Call;
4321    #[derive(serde::Serialize, serde::Deserialize)]
4322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4323    ///Container type for the return parameters of the [`BETA_H_Y1()`](BETA_H_Y1Call) function.
4324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4325    #[derive(Clone)]
4326    pub struct BETA_H_Y1Return {
4327        #[allow(missing_docs)]
4328        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4329    }
4330    #[allow(
4331        non_camel_case_types,
4332        non_snake_case,
4333        clippy::pub_underscore_fields,
4334        clippy::style
4335    )]
4336    const _: () = {
4337        use alloy::sol_types as alloy_sol_types;
4338        {
4339            #[doc(hidden)]
4340            type UnderlyingSolTuple<'a> = ();
4341            #[doc(hidden)]
4342            type UnderlyingRustTuple<'a> = ();
4343            #[cfg(test)]
4344            #[allow(dead_code, unreachable_patterns)]
4345            fn _type_assertion(
4346                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4347            ) {
4348                match _t {
4349                    alloy_sol_types::private::AssertTypeEq::<
4350                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4351                    >(_) => {}
4352                }
4353            }
4354            #[automatically_derived]
4355            #[doc(hidden)]
4356            impl ::core::convert::From<BETA_H_Y1Call> for UnderlyingRustTuple<'_> {
4357                fn from(value: BETA_H_Y1Call) -> Self {
4358                    ()
4359                }
4360            }
4361            #[automatically_derived]
4362            #[doc(hidden)]
4363            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y1Call {
4364                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4365                    Self
4366                }
4367            }
4368        }
4369        {
4370            #[doc(hidden)]
4371            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4372            #[doc(hidden)]
4373            type UnderlyingRustTuple<'a> = (
4374                alloy::sol_types::private::primitives::aliases::U256,
4375            );
4376            #[cfg(test)]
4377            #[allow(dead_code, unreachable_patterns)]
4378            fn _type_assertion(
4379                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4380            ) {
4381                match _t {
4382                    alloy_sol_types::private::AssertTypeEq::<
4383                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4384                    >(_) => {}
4385                }
4386            }
4387            #[automatically_derived]
4388            #[doc(hidden)]
4389            impl ::core::convert::From<BETA_H_Y1Return> for UnderlyingRustTuple<'_> {
4390                fn from(value: BETA_H_Y1Return) -> Self {
4391                    (value._0,)
4392                }
4393            }
4394            #[automatically_derived]
4395            #[doc(hidden)]
4396            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y1Return {
4397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4398                    Self { _0: tuple.0 }
4399                }
4400            }
4401        }
4402        #[automatically_derived]
4403        impl alloy_sol_types::SolCall for BETA_H_Y1Call {
4404            type Parameters<'a> = ();
4405            type Token<'a> = <Self::Parameters<
4406                'a,
4407            > as alloy_sol_types::SolType>::Token<'a>;
4408            type Return = alloy::sol_types::private::primitives::aliases::U256;
4409            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4410            type ReturnToken<'a> = <Self::ReturnTuple<
4411                'a,
4412            > as alloy_sol_types::SolType>::Token<'a>;
4413            const SIGNATURE: &'static str = "BETA_H_Y1()";
4414            const SELECTOR: [u8; 4] = [75u8, 71u8, 52u8, 227u8];
4415            #[inline]
4416            fn new<'a>(
4417                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4418            ) -> Self {
4419                tuple.into()
4420            }
4421            #[inline]
4422            fn tokenize(&self) -> Self::Token<'_> {
4423                ()
4424            }
4425            #[inline]
4426            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4427                (
4428                    <alloy::sol_types::sol_data::Uint<
4429                        256,
4430                    > as alloy_sol_types::SolType>::tokenize(ret),
4431                )
4432            }
4433            #[inline]
4434            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4435                <Self::ReturnTuple<
4436                    '_,
4437                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4438                    .map(|r| {
4439                        let r: BETA_H_Y1Return = r.into();
4440                        r._0
4441                    })
4442            }
4443            #[inline]
4444            fn abi_decode_returns_validate(
4445                data: &[u8],
4446            ) -> alloy_sol_types::Result<Self::Return> {
4447                <Self::ReturnTuple<
4448                    '_,
4449                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4450                    .map(|r| {
4451                        let r: BETA_H_Y1Return = r.into();
4452                        r._0
4453                    })
4454            }
4455        }
4456    };
4457    #[derive(serde::Serialize, serde::Deserialize)]
4458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4459    /**Function with signature `COSET_K1()` and selector `0xe3512d56`.
4460```solidity
4461function COSET_K1() external view returns (uint256);
4462```*/
4463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4464    #[derive(Clone)]
4465    pub struct COSET_K1Call;
4466    #[derive(serde::Serialize, serde::Deserialize)]
4467    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4468    ///Container type for the return parameters of the [`COSET_K1()`](COSET_K1Call) function.
4469    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4470    #[derive(Clone)]
4471    pub struct COSET_K1Return {
4472        #[allow(missing_docs)]
4473        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4474    }
4475    #[allow(
4476        non_camel_case_types,
4477        non_snake_case,
4478        clippy::pub_underscore_fields,
4479        clippy::style
4480    )]
4481    const _: () = {
4482        use alloy::sol_types as alloy_sol_types;
4483        {
4484            #[doc(hidden)]
4485            type UnderlyingSolTuple<'a> = ();
4486            #[doc(hidden)]
4487            type UnderlyingRustTuple<'a> = ();
4488            #[cfg(test)]
4489            #[allow(dead_code, unreachable_patterns)]
4490            fn _type_assertion(
4491                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4492            ) {
4493                match _t {
4494                    alloy_sol_types::private::AssertTypeEq::<
4495                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4496                    >(_) => {}
4497                }
4498            }
4499            #[automatically_derived]
4500            #[doc(hidden)]
4501            impl ::core::convert::From<COSET_K1Call> for UnderlyingRustTuple<'_> {
4502                fn from(value: COSET_K1Call) -> Self {
4503                    ()
4504                }
4505            }
4506            #[automatically_derived]
4507            #[doc(hidden)]
4508            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K1Call {
4509                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4510                    Self
4511                }
4512            }
4513        }
4514        {
4515            #[doc(hidden)]
4516            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4517            #[doc(hidden)]
4518            type UnderlyingRustTuple<'a> = (
4519                alloy::sol_types::private::primitives::aliases::U256,
4520            );
4521            #[cfg(test)]
4522            #[allow(dead_code, unreachable_patterns)]
4523            fn _type_assertion(
4524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4525            ) {
4526                match _t {
4527                    alloy_sol_types::private::AssertTypeEq::<
4528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4529                    >(_) => {}
4530                }
4531            }
4532            #[automatically_derived]
4533            #[doc(hidden)]
4534            impl ::core::convert::From<COSET_K1Return> for UnderlyingRustTuple<'_> {
4535                fn from(value: COSET_K1Return) -> Self {
4536                    (value._0,)
4537                }
4538            }
4539            #[automatically_derived]
4540            #[doc(hidden)]
4541            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K1Return {
4542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4543                    Self { _0: tuple.0 }
4544                }
4545            }
4546        }
4547        #[automatically_derived]
4548        impl alloy_sol_types::SolCall for COSET_K1Call {
4549            type Parameters<'a> = ();
4550            type Token<'a> = <Self::Parameters<
4551                'a,
4552            > as alloy_sol_types::SolType>::Token<'a>;
4553            type Return = alloy::sol_types::private::primitives::aliases::U256;
4554            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4555            type ReturnToken<'a> = <Self::ReturnTuple<
4556                'a,
4557            > as alloy_sol_types::SolType>::Token<'a>;
4558            const SIGNATURE: &'static str = "COSET_K1()";
4559            const SELECTOR: [u8; 4] = [227u8, 81u8, 45u8, 86u8];
4560            #[inline]
4561            fn new<'a>(
4562                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4563            ) -> Self {
4564                tuple.into()
4565            }
4566            #[inline]
4567            fn tokenize(&self) -> Self::Token<'_> {
4568                ()
4569            }
4570            #[inline]
4571            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4572                (
4573                    <alloy::sol_types::sol_data::Uint<
4574                        256,
4575                    > as alloy_sol_types::SolType>::tokenize(ret),
4576                )
4577            }
4578            #[inline]
4579            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4580                <Self::ReturnTuple<
4581                    '_,
4582                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4583                    .map(|r| {
4584                        let r: COSET_K1Return = r.into();
4585                        r._0
4586                    })
4587            }
4588            #[inline]
4589            fn abi_decode_returns_validate(
4590                data: &[u8],
4591            ) -> alloy_sol_types::Result<Self::Return> {
4592                <Self::ReturnTuple<
4593                    '_,
4594                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4595                    .map(|r| {
4596                        let r: COSET_K1Return = r.into();
4597                        r._0
4598                    })
4599            }
4600        }
4601    };
4602    #[derive(serde::Serialize, serde::Deserialize)]
4603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4604    /**Function with signature `COSET_K2()` and selector `0x0c551f3f`.
4605```solidity
4606function COSET_K2() external view returns (uint256);
4607```*/
4608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4609    #[derive(Clone)]
4610    pub struct COSET_K2Call;
4611    #[derive(serde::Serialize, serde::Deserialize)]
4612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4613    ///Container type for the return parameters of the [`COSET_K2()`](COSET_K2Call) function.
4614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4615    #[derive(Clone)]
4616    pub struct COSET_K2Return {
4617        #[allow(missing_docs)]
4618        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4619    }
4620    #[allow(
4621        non_camel_case_types,
4622        non_snake_case,
4623        clippy::pub_underscore_fields,
4624        clippy::style
4625    )]
4626    const _: () = {
4627        use alloy::sol_types as alloy_sol_types;
4628        {
4629            #[doc(hidden)]
4630            type UnderlyingSolTuple<'a> = ();
4631            #[doc(hidden)]
4632            type UnderlyingRustTuple<'a> = ();
4633            #[cfg(test)]
4634            #[allow(dead_code, unreachable_patterns)]
4635            fn _type_assertion(
4636                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4637            ) {
4638                match _t {
4639                    alloy_sol_types::private::AssertTypeEq::<
4640                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4641                    >(_) => {}
4642                }
4643            }
4644            #[automatically_derived]
4645            #[doc(hidden)]
4646            impl ::core::convert::From<COSET_K2Call> for UnderlyingRustTuple<'_> {
4647                fn from(value: COSET_K2Call) -> Self {
4648                    ()
4649                }
4650            }
4651            #[automatically_derived]
4652            #[doc(hidden)]
4653            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K2Call {
4654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4655                    Self
4656                }
4657            }
4658        }
4659        {
4660            #[doc(hidden)]
4661            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4662            #[doc(hidden)]
4663            type UnderlyingRustTuple<'a> = (
4664                alloy::sol_types::private::primitives::aliases::U256,
4665            );
4666            #[cfg(test)]
4667            #[allow(dead_code, unreachable_patterns)]
4668            fn _type_assertion(
4669                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4670            ) {
4671                match _t {
4672                    alloy_sol_types::private::AssertTypeEq::<
4673                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4674                    >(_) => {}
4675                }
4676            }
4677            #[automatically_derived]
4678            #[doc(hidden)]
4679            impl ::core::convert::From<COSET_K2Return> for UnderlyingRustTuple<'_> {
4680                fn from(value: COSET_K2Return) -> Self {
4681                    (value._0,)
4682                }
4683            }
4684            #[automatically_derived]
4685            #[doc(hidden)]
4686            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K2Return {
4687                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4688                    Self { _0: tuple.0 }
4689                }
4690            }
4691        }
4692        #[automatically_derived]
4693        impl alloy_sol_types::SolCall for COSET_K2Call {
4694            type Parameters<'a> = ();
4695            type Token<'a> = <Self::Parameters<
4696                'a,
4697            > as alloy_sol_types::SolType>::Token<'a>;
4698            type Return = alloy::sol_types::private::primitives::aliases::U256;
4699            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4700            type ReturnToken<'a> = <Self::ReturnTuple<
4701                'a,
4702            > as alloy_sol_types::SolType>::Token<'a>;
4703            const SIGNATURE: &'static str = "COSET_K2()";
4704            const SELECTOR: [u8; 4] = [12u8, 85u8, 31u8, 63u8];
4705            #[inline]
4706            fn new<'a>(
4707                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4708            ) -> Self {
4709                tuple.into()
4710            }
4711            #[inline]
4712            fn tokenize(&self) -> Self::Token<'_> {
4713                ()
4714            }
4715            #[inline]
4716            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4717                (
4718                    <alloy::sol_types::sol_data::Uint<
4719                        256,
4720                    > as alloy_sol_types::SolType>::tokenize(ret),
4721                )
4722            }
4723            #[inline]
4724            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4725                <Self::ReturnTuple<
4726                    '_,
4727                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4728                    .map(|r| {
4729                        let r: COSET_K2Return = r.into();
4730                        r._0
4731                    })
4732            }
4733            #[inline]
4734            fn abi_decode_returns_validate(
4735                data: &[u8],
4736            ) -> alloy_sol_types::Result<Self::Return> {
4737                <Self::ReturnTuple<
4738                    '_,
4739                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4740                    .map(|r| {
4741                        let r: COSET_K2Return = r.into();
4742                        r._0
4743                    })
4744            }
4745        }
4746    };
4747    #[derive(serde::Serialize, serde::Deserialize)]
4748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4749    /**Function with signature `COSET_K3()` and selector `0x5a14c0fe`.
4750```solidity
4751function COSET_K3() external view returns (uint256);
4752```*/
4753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4754    #[derive(Clone)]
4755    pub struct COSET_K3Call;
4756    #[derive(serde::Serialize, serde::Deserialize)]
4757    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4758    ///Container type for the return parameters of the [`COSET_K3()`](COSET_K3Call) function.
4759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4760    #[derive(Clone)]
4761    pub struct COSET_K3Return {
4762        #[allow(missing_docs)]
4763        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4764    }
4765    #[allow(
4766        non_camel_case_types,
4767        non_snake_case,
4768        clippy::pub_underscore_fields,
4769        clippy::style
4770    )]
4771    const _: () = {
4772        use alloy::sol_types as alloy_sol_types;
4773        {
4774            #[doc(hidden)]
4775            type UnderlyingSolTuple<'a> = ();
4776            #[doc(hidden)]
4777            type UnderlyingRustTuple<'a> = ();
4778            #[cfg(test)]
4779            #[allow(dead_code, unreachable_patterns)]
4780            fn _type_assertion(
4781                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4782            ) {
4783                match _t {
4784                    alloy_sol_types::private::AssertTypeEq::<
4785                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4786                    >(_) => {}
4787                }
4788            }
4789            #[automatically_derived]
4790            #[doc(hidden)]
4791            impl ::core::convert::From<COSET_K3Call> for UnderlyingRustTuple<'_> {
4792                fn from(value: COSET_K3Call) -> Self {
4793                    ()
4794                }
4795            }
4796            #[automatically_derived]
4797            #[doc(hidden)]
4798            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K3Call {
4799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4800                    Self
4801                }
4802            }
4803        }
4804        {
4805            #[doc(hidden)]
4806            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4807            #[doc(hidden)]
4808            type UnderlyingRustTuple<'a> = (
4809                alloy::sol_types::private::primitives::aliases::U256,
4810            );
4811            #[cfg(test)]
4812            #[allow(dead_code, unreachable_patterns)]
4813            fn _type_assertion(
4814                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4815            ) {
4816                match _t {
4817                    alloy_sol_types::private::AssertTypeEq::<
4818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4819                    >(_) => {}
4820                }
4821            }
4822            #[automatically_derived]
4823            #[doc(hidden)]
4824            impl ::core::convert::From<COSET_K3Return> for UnderlyingRustTuple<'_> {
4825                fn from(value: COSET_K3Return) -> Self {
4826                    (value._0,)
4827                }
4828            }
4829            #[automatically_derived]
4830            #[doc(hidden)]
4831            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K3Return {
4832                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4833                    Self { _0: tuple.0 }
4834                }
4835            }
4836        }
4837        #[automatically_derived]
4838        impl alloy_sol_types::SolCall for COSET_K3Call {
4839            type Parameters<'a> = ();
4840            type Token<'a> = <Self::Parameters<
4841                'a,
4842            > as alloy_sol_types::SolType>::Token<'a>;
4843            type Return = alloy::sol_types::private::primitives::aliases::U256;
4844            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4845            type ReturnToken<'a> = <Self::ReturnTuple<
4846                'a,
4847            > as alloy_sol_types::SolType>::Token<'a>;
4848            const SIGNATURE: &'static str = "COSET_K3()";
4849            const SELECTOR: [u8; 4] = [90u8, 20u8, 192u8, 254u8];
4850            #[inline]
4851            fn new<'a>(
4852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4853            ) -> Self {
4854                tuple.into()
4855            }
4856            #[inline]
4857            fn tokenize(&self) -> Self::Token<'_> {
4858                ()
4859            }
4860            #[inline]
4861            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4862                (
4863                    <alloy::sol_types::sol_data::Uint<
4864                        256,
4865                    > as alloy_sol_types::SolType>::tokenize(ret),
4866                )
4867            }
4868            #[inline]
4869            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4870                <Self::ReturnTuple<
4871                    '_,
4872                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4873                    .map(|r| {
4874                        let r: COSET_K3Return = r.into();
4875                        r._0
4876                    })
4877            }
4878            #[inline]
4879            fn abi_decode_returns_validate(
4880                data: &[u8],
4881            ) -> alloy_sol_types::Result<Self::Return> {
4882                <Self::ReturnTuple<
4883                    '_,
4884                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4885                    .map(|r| {
4886                        let r: COSET_K3Return = r.into();
4887                        r._0
4888                    })
4889            }
4890        }
4891    };
4892    #[derive(serde::Serialize, serde::Deserialize)]
4893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4894    /**Function with signature `COSET_K4()` and selector `0xde24ac0f`.
4895```solidity
4896function COSET_K4() external view returns (uint256);
4897```*/
4898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4899    #[derive(Clone)]
4900    pub struct COSET_K4Call;
4901    #[derive(serde::Serialize, serde::Deserialize)]
4902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4903    ///Container type for the return parameters of the [`COSET_K4()`](COSET_K4Call) function.
4904    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4905    #[derive(Clone)]
4906    pub struct COSET_K4Return {
4907        #[allow(missing_docs)]
4908        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4909    }
4910    #[allow(
4911        non_camel_case_types,
4912        non_snake_case,
4913        clippy::pub_underscore_fields,
4914        clippy::style
4915    )]
4916    const _: () = {
4917        use alloy::sol_types as alloy_sol_types;
4918        {
4919            #[doc(hidden)]
4920            type UnderlyingSolTuple<'a> = ();
4921            #[doc(hidden)]
4922            type UnderlyingRustTuple<'a> = ();
4923            #[cfg(test)]
4924            #[allow(dead_code, unreachable_patterns)]
4925            fn _type_assertion(
4926                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4927            ) {
4928                match _t {
4929                    alloy_sol_types::private::AssertTypeEq::<
4930                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4931                    >(_) => {}
4932                }
4933            }
4934            #[automatically_derived]
4935            #[doc(hidden)]
4936            impl ::core::convert::From<COSET_K4Call> for UnderlyingRustTuple<'_> {
4937                fn from(value: COSET_K4Call) -> Self {
4938                    ()
4939                }
4940            }
4941            #[automatically_derived]
4942            #[doc(hidden)]
4943            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K4Call {
4944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4945                    Self
4946                }
4947            }
4948        }
4949        {
4950            #[doc(hidden)]
4951            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4952            #[doc(hidden)]
4953            type UnderlyingRustTuple<'a> = (
4954                alloy::sol_types::private::primitives::aliases::U256,
4955            );
4956            #[cfg(test)]
4957            #[allow(dead_code, unreachable_patterns)]
4958            fn _type_assertion(
4959                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4960            ) {
4961                match _t {
4962                    alloy_sol_types::private::AssertTypeEq::<
4963                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4964                    >(_) => {}
4965                }
4966            }
4967            #[automatically_derived]
4968            #[doc(hidden)]
4969            impl ::core::convert::From<COSET_K4Return> for UnderlyingRustTuple<'_> {
4970                fn from(value: COSET_K4Return) -> Self {
4971                    (value._0,)
4972                }
4973            }
4974            #[automatically_derived]
4975            #[doc(hidden)]
4976            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K4Return {
4977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4978                    Self { _0: tuple.0 }
4979                }
4980            }
4981        }
4982        #[automatically_derived]
4983        impl alloy_sol_types::SolCall for COSET_K4Call {
4984            type Parameters<'a> = ();
4985            type Token<'a> = <Self::Parameters<
4986                'a,
4987            > as alloy_sol_types::SolType>::Token<'a>;
4988            type Return = alloy::sol_types::private::primitives::aliases::U256;
4989            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4990            type ReturnToken<'a> = <Self::ReturnTuple<
4991                'a,
4992            > as alloy_sol_types::SolType>::Token<'a>;
4993            const SIGNATURE: &'static str = "COSET_K4()";
4994            const SELECTOR: [u8; 4] = [222u8, 36u8, 172u8, 15u8];
4995            #[inline]
4996            fn new<'a>(
4997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4998            ) -> Self {
4999                tuple.into()
5000            }
5001            #[inline]
5002            fn tokenize(&self) -> Self::Token<'_> {
5003                ()
5004            }
5005            #[inline]
5006            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5007                (
5008                    <alloy::sol_types::sol_data::Uint<
5009                        256,
5010                    > as alloy_sol_types::SolType>::tokenize(ret),
5011                )
5012            }
5013            #[inline]
5014            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5015                <Self::ReturnTuple<
5016                    '_,
5017                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5018                    .map(|r| {
5019                        let r: COSET_K4Return = r.into();
5020                        r._0
5021                    })
5022            }
5023            #[inline]
5024            fn abi_decode_returns_validate(
5025                data: &[u8],
5026            ) -> alloy_sol_types::Result<Self::Return> {
5027                <Self::ReturnTuple<
5028                    '_,
5029                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5030                    .map(|r| {
5031                        let r: COSET_K4Return = r.into();
5032                        r._0
5033                    })
5034            }
5035        }
5036    };
5037    #[derive(serde::Serialize, serde::Deserialize)]
5038    #[derive()]
5039    /**Function with signature `verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(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 `0xab959ee3`.
5040```solidity
5041function verify(IPlonkVerifier.VerifyingKey memory verifyingKey, uint256[11] memory publicInput, IPlonkVerifier.PlonkProof memory proof) external view returns (bool);
5042```*/
5043    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5044    #[derive(Clone)]
5045    pub struct verifyCall {
5046        #[allow(missing_docs)]
5047        pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
5048        #[allow(missing_docs)]
5049        pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 11usize],
5050        #[allow(missing_docs)]
5051        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
5052    }
5053    #[derive(serde::Serialize, serde::Deserialize)]
5054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5055    ///Container type for the return parameters of the [`verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](verifyCall) function.
5056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5057    #[derive(Clone)]
5058    pub struct verifyReturn {
5059        #[allow(missing_docs)]
5060        pub _0: bool,
5061    }
5062    #[allow(
5063        non_camel_case_types,
5064        non_snake_case,
5065        clippy::pub_underscore_fields,
5066        clippy::style
5067    )]
5068    const _: () = {
5069        use alloy::sol_types as alloy_sol_types;
5070        {
5071            #[doc(hidden)]
5072            type UnderlyingSolTuple<'a> = (
5073                IPlonkVerifier::VerifyingKey,
5074                alloy::sol_types::sol_data::FixedArray<
5075                    alloy::sol_types::sol_data::Uint<256>,
5076                    11usize,
5077                >,
5078                IPlonkVerifier::PlonkProof,
5079            );
5080            #[doc(hidden)]
5081            type UnderlyingRustTuple<'a> = (
5082                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
5083                [alloy::sol_types::private::primitives::aliases::U256; 11usize],
5084                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
5085            );
5086            #[cfg(test)]
5087            #[allow(dead_code, unreachable_patterns)]
5088            fn _type_assertion(
5089                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5090            ) {
5091                match _t {
5092                    alloy_sol_types::private::AssertTypeEq::<
5093                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5094                    >(_) => {}
5095                }
5096            }
5097            #[automatically_derived]
5098            #[doc(hidden)]
5099            impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
5100                fn from(value: verifyCall) -> Self {
5101                    (value.verifyingKey, value.publicInput, value.proof)
5102                }
5103            }
5104            #[automatically_derived]
5105            #[doc(hidden)]
5106            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
5107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5108                    Self {
5109                        verifyingKey: tuple.0,
5110                        publicInput: tuple.1,
5111                        proof: tuple.2,
5112                    }
5113                }
5114            }
5115        }
5116        {
5117            #[doc(hidden)]
5118            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5119            #[doc(hidden)]
5120            type UnderlyingRustTuple<'a> = (bool,);
5121            #[cfg(test)]
5122            #[allow(dead_code, unreachable_patterns)]
5123            fn _type_assertion(
5124                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5125            ) {
5126                match _t {
5127                    alloy_sol_types::private::AssertTypeEq::<
5128                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5129                    >(_) => {}
5130                }
5131            }
5132            #[automatically_derived]
5133            #[doc(hidden)]
5134            impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
5135                fn from(value: verifyReturn) -> Self {
5136                    (value._0,)
5137                }
5138            }
5139            #[automatically_derived]
5140            #[doc(hidden)]
5141            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
5142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5143                    Self { _0: tuple.0 }
5144                }
5145            }
5146        }
5147        #[automatically_derived]
5148        impl alloy_sol_types::SolCall for verifyCall {
5149            type Parameters<'a> = (
5150                IPlonkVerifier::VerifyingKey,
5151                alloy::sol_types::sol_data::FixedArray<
5152                    alloy::sol_types::sol_data::Uint<256>,
5153                    11usize,
5154                >,
5155                IPlonkVerifier::PlonkProof,
5156            );
5157            type Token<'a> = <Self::Parameters<
5158                'a,
5159            > as alloy_sol_types::SolType>::Token<'a>;
5160            type Return = bool;
5161            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5162            type ReturnToken<'a> = <Self::ReturnTuple<
5163                'a,
5164            > as alloy_sol_types::SolType>::Token<'a>;
5165            const SIGNATURE: &'static str = "verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
5166            const SELECTOR: [u8; 4] = [171u8, 149u8, 158u8, 227u8];
5167            #[inline]
5168            fn new<'a>(
5169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5170            ) -> Self {
5171                tuple.into()
5172            }
5173            #[inline]
5174            fn tokenize(&self) -> Self::Token<'_> {
5175                (
5176                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
5177                        &self.verifyingKey,
5178                    ),
5179                    <alloy::sol_types::sol_data::FixedArray<
5180                        alloy::sol_types::sol_data::Uint<256>,
5181                        11usize,
5182                    > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
5183                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
5184                        &self.proof,
5185                    ),
5186                )
5187            }
5188            #[inline]
5189            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5190                (
5191                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5192                        ret,
5193                    ),
5194                )
5195            }
5196            #[inline]
5197            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5198                <Self::ReturnTuple<
5199                    '_,
5200                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5201                    .map(|r| {
5202                        let r: verifyReturn = r.into();
5203                        r._0
5204                    })
5205            }
5206            #[inline]
5207            fn abi_decode_returns_validate(
5208                data: &[u8],
5209            ) -> alloy_sol_types::Result<Self::Return> {
5210                <Self::ReturnTuple<
5211                    '_,
5212                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5213                    .map(|r| {
5214                        let r: verifyReturn = r.into();
5215                        r._0
5216                    })
5217            }
5218        }
5219    };
5220    ///Container for all the [`PlonkVerifierV2`](self) function calls.
5221    #[derive(serde::Serialize, serde::Deserialize)]
5222    #[derive()]
5223    pub enum PlonkVerifierV2Calls {
5224        #[allow(missing_docs)]
5225        BETA_H_X0(BETA_H_X0Call),
5226        #[allow(missing_docs)]
5227        BETA_H_X1(BETA_H_X1Call),
5228        #[allow(missing_docs)]
5229        BETA_H_Y0(BETA_H_Y0Call),
5230        #[allow(missing_docs)]
5231        BETA_H_Y1(BETA_H_Y1Call),
5232        #[allow(missing_docs)]
5233        COSET_K1(COSET_K1Call),
5234        #[allow(missing_docs)]
5235        COSET_K2(COSET_K2Call),
5236        #[allow(missing_docs)]
5237        COSET_K3(COSET_K3Call),
5238        #[allow(missing_docs)]
5239        COSET_K4(COSET_K4Call),
5240        #[allow(missing_docs)]
5241        verify(verifyCall),
5242    }
5243    #[automatically_derived]
5244    impl PlonkVerifierV2Calls {
5245        /// All the selectors of this enum.
5246        ///
5247        /// Note that the selectors might not be in the same order as the variants.
5248        /// No guarantees are made about the order of the selectors.
5249        ///
5250        /// Prefer using `SolInterface` methods instead.
5251        pub const SELECTORS: &'static [[u8; 4usize]] = &[
5252            [12u8, 85u8, 31u8, 63u8],
5253            [75u8, 71u8, 52u8, 227u8],
5254            [90u8, 20u8, 192u8, 254u8],
5255            [131u8, 76u8, 69u8, 42u8],
5256            [171u8, 149u8, 158u8, 227u8],
5257            [175u8, 25u8, 107u8, 162u8],
5258            [222u8, 36u8, 172u8, 15u8],
5259            [227u8, 81u8, 45u8, 86u8],
5260            [245u8, 20u8, 67u8, 38u8],
5261        ];
5262    }
5263    #[automatically_derived]
5264    impl alloy_sol_types::SolInterface for PlonkVerifierV2Calls {
5265        const NAME: &'static str = "PlonkVerifierV2Calls";
5266        const MIN_DATA_LENGTH: usize = 0usize;
5267        const COUNT: usize = 9usize;
5268        #[inline]
5269        fn selector(&self) -> [u8; 4] {
5270            match self {
5271                Self::BETA_H_X0(_) => {
5272                    <BETA_H_X0Call as alloy_sol_types::SolCall>::SELECTOR
5273                }
5274                Self::BETA_H_X1(_) => {
5275                    <BETA_H_X1Call as alloy_sol_types::SolCall>::SELECTOR
5276                }
5277                Self::BETA_H_Y0(_) => {
5278                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::SELECTOR
5279                }
5280                Self::BETA_H_Y1(_) => {
5281                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::SELECTOR
5282                }
5283                Self::COSET_K1(_) => <COSET_K1Call as alloy_sol_types::SolCall>::SELECTOR,
5284                Self::COSET_K2(_) => <COSET_K2Call as alloy_sol_types::SolCall>::SELECTOR,
5285                Self::COSET_K3(_) => <COSET_K3Call as alloy_sol_types::SolCall>::SELECTOR,
5286                Self::COSET_K4(_) => <COSET_K4Call as alloy_sol_types::SolCall>::SELECTOR,
5287                Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
5288            }
5289        }
5290        #[inline]
5291        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
5292            Self::SELECTORS.get(i).copied()
5293        }
5294        #[inline]
5295        fn valid_selector(selector: [u8; 4]) -> bool {
5296            Self::SELECTORS.binary_search(&selector).is_ok()
5297        }
5298        #[inline]
5299        #[allow(non_snake_case)]
5300        fn abi_decode_raw(
5301            selector: [u8; 4],
5302            data: &[u8],
5303        ) -> alloy_sol_types::Result<Self> {
5304            static DECODE_SHIMS: &[fn(
5305                &[u8],
5306            ) -> alloy_sol_types::Result<PlonkVerifierV2Calls>] = &[
5307                {
5308                    fn COSET_K2(
5309                        data: &[u8],
5310                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5311                        <COSET_K2Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5312                            .map(PlonkVerifierV2Calls::COSET_K2)
5313                    }
5314                    COSET_K2
5315                },
5316                {
5317                    fn BETA_H_Y1(
5318                        data: &[u8],
5319                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5320                        <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5321                            .map(PlonkVerifierV2Calls::BETA_H_Y1)
5322                    }
5323                    BETA_H_Y1
5324                },
5325                {
5326                    fn COSET_K3(
5327                        data: &[u8],
5328                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5329                        <COSET_K3Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5330                            .map(PlonkVerifierV2Calls::COSET_K3)
5331                    }
5332                    COSET_K3
5333                },
5334                {
5335                    fn BETA_H_X0(
5336                        data: &[u8],
5337                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5338                        <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5339                            .map(PlonkVerifierV2Calls::BETA_H_X0)
5340                    }
5341                    BETA_H_X0
5342                },
5343                {
5344                    fn verify(
5345                        data: &[u8],
5346                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5347                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
5348                            .map(PlonkVerifierV2Calls::verify)
5349                    }
5350                    verify
5351                },
5352                {
5353                    fn BETA_H_X1(
5354                        data: &[u8],
5355                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5356                        <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5357                            .map(PlonkVerifierV2Calls::BETA_H_X1)
5358                    }
5359                    BETA_H_X1
5360                },
5361                {
5362                    fn COSET_K4(
5363                        data: &[u8],
5364                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5365                        <COSET_K4Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5366                            .map(PlonkVerifierV2Calls::COSET_K4)
5367                    }
5368                    COSET_K4
5369                },
5370                {
5371                    fn COSET_K1(
5372                        data: &[u8],
5373                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5374                        <COSET_K1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5375                            .map(PlonkVerifierV2Calls::COSET_K1)
5376                    }
5377                    COSET_K1
5378                },
5379                {
5380                    fn BETA_H_Y0(
5381                        data: &[u8],
5382                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5383                        <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5384                            .map(PlonkVerifierV2Calls::BETA_H_Y0)
5385                    }
5386                    BETA_H_Y0
5387                },
5388            ];
5389            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5390                return Err(
5391                    alloy_sol_types::Error::unknown_selector(
5392                        <Self as alloy_sol_types::SolInterface>::NAME,
5393                        selector,
5394                    ),
5395                );
5396            };
5397            DECODE_SHIMS[idx](data)
5398        }
5399        #[inline]
5400        #[allow(non_snake_case)]
5401        fn abi_decode_raw_validate(
5402            selector: [u8; 4],
5403            data: &[u8],
5404        ) -> alloy_sol_types::Result<Self> {
5405            static DECODE_VALIDATE_SHIMS: &[fn(
5406                &[u8],
5407            ) -> alloy_sol_types::Result<PlonkVerifierV2Calls>] = &[
5408                {
5409                    fn COSET_K2(
5410                        data: &[u8],
5411                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5412                        <COSET_K2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5413                                data,
5414                            )
5415                            .map(PlonkVerifierV2Calls::COSET_K2)
5416                    }
5417                    COSET_K2
5418                },
5419                {
5420                    fn BETA_H_Y1(
5421                        data: &[u8],
5422                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5423                        <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5424                                data,
5425                            )
5426                            .map(PlonkVerifierV2Calls::BETA_H_Y1)
5427                    }
5428                    BETA_H_Y1
5429                },
5430                {
5431                    fn COSET_K3(
5432                        data: &[u8],
5433                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5434                        <COSET_K3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5435                                data,
5436                            )
5437                            .map(PlonkVerifierV2Calls::COSET_K3)
5438                    }
5439                    COSET_K3
5440                },
5441                {
5442                    fn BETA_H_X0(
5443                        data: &[u8],
5444                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5445                        <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5446                                data,
5447                            )
5448                            .map(PlonkVerifierV2Calls::BETA_H_X0)
5449                    }
5450                    BETA_H_X0
5451                },
5452                {
5453                    fn verify(
5454                        data: &[u8],
5455                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5456                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5457                                data,
5458                            )
5459                            .map(PlonkVerifierV2Calls::verify)
5460                    }
5461                    verify
5462                },
5463                {
5464                    fn BETA_H_X1(
5465                        data: &[u8],
5466                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5467                        <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5468                                data,
5469                            )
5470                            .map(PlonkVerifierV2Calls::BETA_H_X1)
5471                    }
5472                    BETA_H_X1
5473                },
5474                {
5475                    fn COSET_K4(
5476                        data: &[u8],
5477                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5478                        <COSET_K4Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5479                                data,
5480                            )
5481                            .map(PlonkVerifierV2Calls::COSET_K4)
5482                    }
5483                    COSET_K4
5484                },
5485                {
5486                    fn COSET_K1(
5487                        data: &[u8],
5488                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5489                        <COSET_K1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5490                                data,
5491                            )
5492                            .map(PlonkVerifierV2Calls::COSET_K1)
5493                    }
5494                    COSET_K1
5495                },
5496                {
5497                    fn BETA_H_Y0(
5498                        data: &[u8],
5499                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5500                        <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5501                                data,
5502                            )
5503                            .map(PlonkVerifierV2Calls::BETA_H_Y0)
5504                    }
5505                    BETA_H_Y0
5506                },
5507            ];
5508            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5509                return Err(
5510                    alloy_sol_types::Error::unknown_selector(
5511                        <Self as alloy_sol_types::SolInterface>::NAME,
5512                        selector,
5513                    ),
5514                );
5515            };
5516            DECODE_VALIDATE_SHIMS[idx](data)
5517        }
5518        #[inline]
5519        fn abi_encoded_size(&self) -> usize {
5520            match self {
5521                Self::BETA_H_X0(inner) => {
5522                    <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5523                }
5524                Self::BETA_H_X1(inner) => {
5525                    <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5526                }
5527                Self::BETA_H_Y0(inner) => {
5528                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5529                }
5530                Self::BETA_H_Y1(inner) => {
5531                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5532                }
5533                Self::COSET_K1(inner) => {
5534                    <COSET_K1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5535                }
5536                Self::COSET_K2(inner) => {
5537                    <COSET_K2Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5538                }
5539                Self::COSET_K3(inner) => {
5540                    <COSET_K3Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5541                }
5542                Self::COSET_K4(inner) => {
5543                    <COSET_K4Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5544                }
5545                Self::verify(inner) => {
5546                    <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5547                }
5548            }
5549        }
5550        #[inline]
5551        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
5552            match self {
5553                Self::BETA_H_X0(inner) => {
5554                    <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_encode_raw(
5555                        inner,
5556                        out,
5557                    )
5558                }
5559                Self::BETA_H_X1(inner) => {
5560                    <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_encode_raw(
5561                        inner,
5562                        out,
5563                    )
5564                }
5565                Self::BETA_H_Y0(inner) => {
5566                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_encode_raw(
5567                        inner,
5568                        out,
5569                    )
5570                }
5571                Self::BETA_H_Y1(inner) => {
5572                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_encode_raw(
5573                        inner,
5574                        out,
5575                    )
5576                }
5577                Self::COSET_K1(inner) => {
5578                    <COSET_K1Call as alloy_sol_types::SolCall>::abi_encode_raw(
5579                        inner,
5580                        out,
5581                    )
5582                }
5583                Self::COSET_K2(inner) => {
5584                    <COSET_K2Call as alloy_sol_types::SolCall>::abi_encode_raw(
5585                        inner,
5586                        out,
5587                    )
5588                }
5589                Self::COSET_K3(inner) => {
5590                    <COSET_K3Call as alloy_sol_types::SolCall>::abi_encode_raw(
5591                        inner,
5592                        out,
5593                    )
5594                }
5595                Self::COSET_K4(inner) => {
5596                    <COSET_K4Call as alloy_sol_types::SolCall>::abi_encode_raw(
5597                        inner,
5598                        out,
5599                    )
5600                }
5601                Self::verify(inner) => {
5602                    <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
5603                }
5604            }
5605        }
5606    }
5607    ///Container for all the [`PlonkVerifierV2`](self) custom errors.
5608    #[derive(serde::Serialize, serde::Deserialize)]
5609    #[derive(Debug, PartialEq, Eq, Hash)]
5610    pub enum PlonkVerifierV2Errors {
5611        #[allow(missing_docs)]
5612        BN254G1AddFailed(BN254G1AddFailed),
5613        #[allow(missing_docs)]
5614        BN254PairingProdFailed(BN254PairingProdFailed),
5615        #[allow(missing_docs)]
5616        BN254ScalarInvZero(BN254ScalarInvZero),
5617        #[allow(missing_docs)]
5618        BN254ScalarMulFailed(BN254ScalarMulFailed),
5619        #[allow(missing_docs)]
5620        InvalidG1(InvalidG1),
5621        #[allow(missing_docs)]
5622        InvalidPlonkArgs(InvalidPlonkArgs),
5623        #[allow(missing_docs)]
5624        InvalidScalar(InvalidScalar),
5625        #[allow(missing_docs)]
5626        PowPrecompileFailed(PowPrecompileFailed),
5627        #[allow(missing_docs)]
5628        UnsupportedDegree(UnsupportedDegree),
5629        #[allow(missing_docs)]
5630        WrongPlonkVK(WrongPlonkVK),
5631    }
5632    #[automatically_derived]
5633    impl PlonkVerifierV2Errors {
5634        /// All the selectors of this enum.
5635        ///
5636        /// Note that the selectors might not be in the same order as the variants.
5637        /// No guarantees are made about the order of the selectors.
5638        ///
5639        /// Prefer using `SolInterface` methods instead.
5640        pub const SELECTORS: &'static [[u8; 4usize]] = &[
5641            [5u8, 176u8, 92u8, 204u8],
5642            [25u8, 219u8, 138u8, 104u8],
5643            [50u8, 116u8, 250u8, 100u8],
5644            [65u8, 245u8, 59u8, 18u8],
5645            [96u8, 85u8, 219u8, 106u8],
5646            [158u8, 120u8, 209u8, 76u8],
5647            [194u8, 6u8, 51u8, 79u8],
5648            [214u8, 219u8, 187u8, 13u8],
5649            [226u8, 239u8, 9u8, 229u8],
5650            [253u8, 154u8, 45u8, 27u8],
5651        ];
5652    }
5653    #[automatically_derived]
5654    impl alloy_sol_types::SolInterface for PlonkVerifierV2Errors {
5655        const NAME: &'static str = "PlonkVerifierV2Errors";
5656        const MIN_DATA_LENGTH: usize = 0usize;
5657        const COUNT: usize = 10usize;
5658        #[inline]
5659        fn selector(&self) -> [u8; 4] {
5660            match self {
5661                Self::BN254G1AddFailed(_) => {
5662                    <BN254G1AddFailed as alloy_sol_types::SolError>::SELECTOR
5663                }
5664                Self::BN254PairingProdFailed(_) => {
5665                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
5666                }
5667                Self::BN254ScalarInvZero(_) => {
5668                    <BN254ScalarInvZero as alloy_sol_types::SolError>::SELECTOR
5669                }
5670                Self::BN254ScalarMulFailed(_) => {
5671                    <BN254ScalarMulFailed as alloy_sol_types::SolError>::SELECTOR
5672                }
5673                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
5674                Self::InvalidPlonkArgs(_) => {
5675                    <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
5676                }
5677                Self::InvalidScalar(_) => {
5678                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
5679                }
5680                Self::PowPrecompileFailed(_) => {
5681                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
5682                }
5683                Self::UnsupportedDegree(_) => {
5684                    <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
5685                }
5686                Self::WrongPlonkVK(_) => {
5687                    <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR
5688                }
5689            }
5690        }
5691        #[inline]
5692        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
5693            Self::SELECTORS.get(i).copied()
5694        }
5695        #[inline]
5696        fn valid_selector(selector: [u8; 4]) -> bool {
5697            Self::SELECTORS.binary_search(&selector).is_ok()
5698        }
5699        #[inline]
5700        #[allow(non_snake_case)]
5701        fn abi_decode_raw(
5702            selector: [u8; 4],
5703            data: &[u8],
5704        ) -> alloy_sol_types::Result<Self> {
5705            static DECODE_SHIMS: &[fn(
5706                &[u8],
5707            ) -> alloy_sol_types::Result<PlonkVerifierV2Errors>] = &[
5708                {
5709                    fn InvalidScalar(
5710                        data: &[u8],
5711                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5712                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
5713                                data,
5714                            )
5715                            .map(PlonkVerifierV2Errors::InvalidScalar)
5716                    }
5717                    InvalidScalar
5718                },
5719                {
5720                    fn BN254ScalarMulFailed(
5721                        data: &[u8],
5722                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5723                        <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_decode_raw(
5724                                data,
5725                            )
5726                            .map(PlonkVerifierV2Errors::BN254ScalarMulFailed)
5727                    }
5728                    BN254ScalarMulFailed
5729                },
5730                {
5731                    fn PowPrecompileFailed(
5732                        data: &[u8],
5733                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5734                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
5735                                data,
5736                            )
5737                            .map(PlonkVerifierV2Errors::PowPrecompileFailed)
5738                    }
5739                    PowPrecompileFailed
5740                },
5741                {
5742                    fn WrongPlonkVK(
5743                        data: &[u8],
5744                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5745                        <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(data)
5746                            .map(PlonkVerifierV2Errors::WrongPlonkVK)
5747                    }
5748                    WrongPlonkVK
5749                },
5750                {
5751                    fn BN254G1AddFailed(
5752                        data: &[u8],
5753                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5754                        <BN254G1AddFailed as alloy_sol_types::SolError>::abi_decode_raw(
5755                                data,
5756                            )
5757                            .map(PlonkVerifierV2Errors::BN254G1AddFailed)
5758                    }
5759                    BN254G1AddFailed
5760                },
5761                {
5762                    fn InvalidG1(
5763                        data: &[u8],
5764                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5765                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
5766                            .map(PlonkVerifierV2Errors::InvalidG1)
5767                    }
5768                    InvalidG1
5769                },
5770                {
5771                    fn BN254PairingProdFailed(
5772                        data: &[u8],
5773                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5774                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
5775                                data,
5776                            )
5777                            .map(PlonkVerifierV2Errors::BN254PairingProdFailed)
5778                    }
5779                    BN254PairingProdFailed
5780                },
5781                {
5782                    fn BN254ScalarInvZero(
5783                        data: &[u8],
5784                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5785                        <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_decode_raw(
5786                                data,
5787                            )
5788                            .map(PlonkVerifierV2Errors::BN254ScalarInvZero)
5789                    }
5790                    BN254ScalarInvZero
5791                },
5792                {
5793                    fn UnsupportedDegree(
5794                        data: &[u8],
5795                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5796                        <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
5797                                data,
5798                            )
5799                            .map(PlonkVerifierV2Errors::UnsupportedDegree)
5800                    }
5801                    UnsupportedDegree
5802                },
5803                {
5804                    fn InvalidPlonkArgs(
5805                        data: &[u8],
5806                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5807                        <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
5808                                data,
5809                            )
5810                            .map(PlonkVerifierV2Errors::InvalidPlonkArgs)
5811                    }
5812                    InvalidPlonkArgs
5813                },
5814            ];
5815            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5816                return Err(
5817                    alloy_sol_types::Error::unknown_selector(
5818                        <Self as alloy_sol_types::SolInterface>::NAME,
5819                        selector,
5820                    ),
5821                );
5822            };
5823            DECODE_SHIMS[idx](data)
5824        }
5825        #[inline]
5826        #[allow(non_snake_case)]
5827        fn abi_decode_raw_validate(
5828            selector: [u8; 4],
5829            data: &[u8],
5830        ) -> alloy_sol_types::Result<Self> {
5831            static DECODE_VALIDATE_SHIMS: &[fn(
5832                &[u8],
5833            ) -> alloy_sol_types::Result<PlonkVerifierV2Errors>] = &[
5834                {
5835                    fn InvalidScalar(
5836                        data: &[u8],
5837                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5838                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
5839                                data,
5840                            )
5841                            .map(PlonkVerifierV2Errors::InvalidScalar)
5842                    }
5843                    InvalidScalar
5844                },
5845                {
5846                    fn BN254ScalarMulFailed(
5847                        data: &[u8],
5848                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5849                        <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5850                                data,
5851                            )
5852                            .map(PlonkVerifierV2Errors::BN254ScalarMulFailed)
5853                    }
5854                    BN254ScalarMulFailed
5855                },
5856                {
5857                    fn PowPrecompileFailed(
5858                        data: &[u8],
5859                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5860                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5861                                data,
5862                            )
5863                            .map(PlonkVerifierV2Errors::PowPrecompileFailed)
5864                    }
5865                    PowPrecompileFailed
5866                },
5867                {
5868                    fn WrongPlonkVK(
5869                        data: &[u8],
5870                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5871                        <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
5872                                data,
5873                            )
5874                            .map(PlonkVerifierV2Errors::WrongPlonkVK)
5875                    }
5876                    WrongPlonkVK
5877                },
5878                {
5879                    fn BN254G1AddFailed(
5880                        data: &[u8],
5881                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5882                        <BN254G1AddFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5883                                data,
5884                            )
5885                            .map(PlonkVerifierV2Errors::BN254G1AddFailed)
5886                    }
5887                    BN254G1AddFailed
5888                },
5889                {
5890                    fn InvalidG1(
5891                        data: &[u8],
5892                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5893                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
5894                                data,
5895                            )
5896                            .map(PlonkVerifierV2Errors::InvalidG1)
5897                    }
5898                    InvalidG1
5899                },
5900                {
5901                    fn BN254PairingProdFailed(
5902                        data: &[u8],
5903                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5904                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5905                                data,
5906                            )
5907                            .map(PlonkVerifierV2Errors::BN254PairingProdFailed)
5908                    }
5909                    BN254PairingProdFailed
5910                },
5911                {
5912                    fn BN254ScalarInvZero(
5913                        data: &[u8],
5914                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5915                        <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
5916                                data,
5917                            )
5918                            .map(PlonkVerifierV2Errors::BN254ScalarInvZero)
5919                    }
5920                    BN254ScalarInvZero
5921                },
5922                {
5923                    fn UnsupportedDegree(
5924                        data: &[u8],
5925                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5926                        <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw_validate(
5927                                data,
5928                            )
5929                            .map(PlonkVerifierV2Errors::UnsupportedDegree)
5930                    }
5931                    UnsupportedDegree
5932                },
5933                {
5934                    fn InvalidPlonkArgs(
5935                        data: &[u8],
5936                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5937                        <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
5938                                data,
5939                            )
5940                            .map(PlonkVerifierV2Errors::InvalidPlonkArgs)
5941                    }
5942                    InvalidPlonkArgs
5943                },
5944            ];
5945            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5946                return Err(
5947                    alloy_sol_types::Error::unknown_selector(
5948                        <Self as alloy_sol_types::SolInterface>::NAME,
5949                        selector,
5950                    ),
5951                );
5952            };
5953            DECODE_VALIDATE_SHIMS[idx](data)
5954        }
5955        #[inline]
5956        fn abi_encoded_size(&self) -> usize {
5957            match self {
5958                Self::BN254G1AddFailed(inner) => {
5959                    <BN254G1AddFailed as alloy_sol_types::SolError>::abi_encoded_size(
5960                        inner,
5961                    )
5962                }
5963                Self::BN254PairingProdFailed(inner) => {
5964                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
5965                        inner,
5966                    )
5967                }
5968                Self::BN254ScalarInvZero(inner) => {
5969                    <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_encoded_size(
5970                        inner,
5971                    )
5972                }
5973                Self::BN254ScalarMulFailed(inner) => {
5974                    <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_encoded_size(
5975                        inner,
5976                    )
5977                }
5978                Self::InvalidG1(inner) => {
5979                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
5980                }
5981                Self::InvalidPlonkArgs(inner) => {
5982                    <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(
5983                        inner,
5984                    )
5985                }
5986                Self::InvalidScalar(inner) => {
5987                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
5988                }
5989                Self::PowPrecompileFailed(inner) => {
5990                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
5991                        inner,
5992                    )
5993                }
5994                Self::UnsupportedDegree(inner) => {
5995                    <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(
5996                        inner,
5997                    )
5998                }
5999                Self::WrongPlonkVK(inner) => {
6000                    <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
6001                }
6002            }
6003        }
6004        #[inline]
6005        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
6006            match self {
6007                Self::BN254G1AddFailed(inner) => {
6008                    <BN254G1AddFailed as alloy_sol_types::SolError>::abi_encode_raw(
6009                        inner,
6010                        out,
6011                    )
6012                }
6013                Self::BN254PairingProdFailed(inner) => {
6014                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
6015                        inner,
6016                        out,
6017                    )
6018                }
6019                Self::BN254ScalarInvZero(inner) => {
6020                    <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_encode_raw(
6021                        inner,
6022                        out,
6023                    )
6024                }
6025                Self::BN254ScalarMulFailed(inner) => {
6026                    <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_encode_raw(
6027                        inner,
6028                        out,
6029                    )
6030                }
6031                Self::InvalidG1(inner) => {
6032                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
6033                }
6034                Self::InvalidPlonkArgs(inner) => {
6035                    <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(
6036                        inner,
6037                        out,
6038                    )
6039                }
6040                Self::InvalidScalar(inner) => {
6041                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
6042                        inner,
6043                        out,
6044                    )
6045                }
6046                Self::PowPrecompileFailed(inner) => {
6047                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
6048                        inner,
6049                        out,
6050                    )
6051                }
6052                Self::UnsupportedDegree(inner) => {
6053                    <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(
6054                        inner,
6055                        out,
6056                    )
6057                }
6058                Self::WrongPlonkVK(inner) => {
6059                    <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(
6060                        inner,
6061                        out,
6062                    )
6063                }
6064            }
6065        }
6066    }
6067    use alloy::contract as alloy_contract;
6068    /**Creates a new wrapper around an on-chain [`PlonkVerifierV2`](self) contract instance.
6069
6070See the [wrapper's documentation](`PlonkVerifierV2Instance`) for more details.*/
6071    #[inline]
6072    pub const fn new<
6073        P: alloy_contract::private::Provider<N>,
6074        N: alloy_contract::private::Network,
6075    >(
6076        address: alloy_sol_types::private::Address,
6077        provider: P,
6078    ) -> PlonkVerifierV2Instance<P, N> {
6079        PlonkVerifierV2Instance::<P, N>::new(address, provider)
6080    }
6081    /**Deploys this contract using the given `provider` and constructor arguments, if any.
6082
6083Returns a new instance of the contract, if the deployment was successful.
6084
6085For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
6086    #[inline]
6087    pub fn deploy<
6088        P: alloy_contract::private::Provider<N>,
6089        N: alloy_contract::private::Network,
6090    >(
6091        provider: P,
6092    ) -> impl ::core::future::Future<
6093        Output = alloy_contract::Result<PlonkVerifierV2Instance<P, N>>,
6094    > {
6095        PlonkVerifierV2Instance::<P, N>::deploy(provider)
6096    }
6097    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
6098and constructor arguments, if any.
6099
6100This is a simple wrapper around creating a `RawCallBuilder` with the data set to
6101the bytecode concatenated with the constructor's ABI-encoded arguments.*/
6102    #[inline]
6103    pub fn deploy_builder<
6104        P: alloy_contract::private::Provider<N>,
6105        N: alloy_contract::private::Network,
6106    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
6107        PlonkVerifierV2Instance::<P, N>::deploy_builder(provider)
6108    }
6109    /**A [`PlonkVerifierV2`](self) instance.
6110
6111Contains type-safe methods for interacting with an on-chain instance of the
6112[`PlonkVerifierV2`](self) contract located at a given `address`, using a given
6113provider `P`.
6114
6115If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
6116documentation on how to provide it), the `deploy` and `deploy_builder` methods can
6117be used to deploy a new instance of the contract.
6118
6119See the [module-level documentation](self) for all the available methods.*/
6120    #[derive(Clone)]
6121    pub struct PlonkVerifierV2Instance<P, N = alloy_contract::private::Ethereum> {
6122        address: alloy_sol_types::private::Address,
6123        provider: P,
6124        _network: ::core::marker::PhantomData<N>,
6125    }
6126    #[automatically_derived]
6127    impl<P, N> ::core::fmt::Debug for PlonkVerifierV2Instance<P, N> {
6128        #[inline]
6129        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6130            f.debug_tuple("PlonkVerifierV2Instance").field(&self.address).finish()
6131        }
6132    }
6133    /// Instantiation and getters/setters.
6134    #[automatically_derived]
6135    impl<
6136        P: alloy_contract::private::Provider<N>,
6137        N: alloy_contract::private::Network,
6138    > PlonkVerifierV2Instance<P, N> {
6139        /**Creates a new wrapper around an on-chain [`PlonkVerifierV2`](self) contract instance.
6140
6141See the [wrapper's documentation](`PlonkVerifierV2Instance`) for more details.*/
6142        #[inline]
6143        pub const fn new(
6144            address: alloy_sol_types::private::Address,
6145            provider: P,
6146        ) -> Self {
6147            Self {
6148                address,
6149                provider,
6150                _network: ::core::marker::PhantomData,
6151            }
6152        }
6153        /**Deploys this contract using the given `provider` and constructor arguments, if any.
6154
6155Returns a new instance of the contract, if the deployment was successful.
6156
6157For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
6158        #[inline]
6159        pub async fn deploy(
6160            provider: P,
6161        ) -> alloy_contract::Result<PlonkVerifierV2Instance<P, N>> {
6162            let call_builder = Self::deploy_builder(provider);
6163            let contract_address = call_builder.deploy().await?;
6164            Ok(Self::new(contract_address, call_builder.provider))
6165        }
6166        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
6167and constructor arguments, if any.
6168
6169This is a simple wrapper around creating a `RawCallBuilder` with the data set to
6170the bytecode concatenated with the constructor's ABI-encoded arguments.*/
6171        #[inline]
6172        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
6173            alloy_contract::RawCallBuilder::new_raw_deploy(
6174                provider,
6175                ::core::clone::Clone::clone(&BYTECODE),
6176            )
6177        }
6178        /// Returns a reference to the address.
6179        #[inline]
6180        pub const fn address(&self) -> &alloy_sol_types::private::Address {
6181            &self.address
6182        }
6183        /// Sets the address.
6184        #[inline]
6185        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
6186            self.address = address;
6187        }
6188        /// Sets the address and returns `self`.
6189        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
6190            self.set_address(address);
6191            self
6192        }
6193        /// Returns a reference to the provider.
6194        #[inline]
6195        pub const fn provider(&self) -> &P {
6196            &self.provider
6197        }
6198    }
6199    impl<P: ::core::clone::Clone, N> PlonkVerifierV2Instance<&P, N> {
6200        /// Clones the provider and returns a new instance with the cloned provider.
6201        #[inline]
6202        pub fn with_cloned_provider(self) -> PlonkVerifierV2Instance<P, N> {
6203            PlonkVerifierV2Instance {
6204                address: self.address,
6205                provider: ::core::clone::Clone::clone(&self.provider),
6206                _network: ::core::marker::PhantomData,
6207            }
6208        }
6209    }
6210    /// Function calls.
6211    #[automatically_derived]
6212    impl<
6213        P: alloy_contract::private::Provider<N>,
6214        N: alloy_contract::private::Network,
6215    > PlonkVerifierV2Instance<P, N> {
6216        /// Creates a new call builder using this contract instance's provider and address.
6217        ///
6218        /// Note that the call can be any function call, not just those defined in this
6219        /// contract. Prefer using the other methods for building type-safe contract calls.
6220        pub fn call_builder<C: alloy_sol_types::SolCall>(
6221            &self,
6222            call: &C,
6223        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
6224            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
6225        }
6226        ///Creates a new call builder for the [`BETA_H_X0`] function.
6227        pub fn BETA_H_X0(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_X0Call, N> {
6228            self.call_builder(&BETA_H_X0Call)
6229        }
6230        ///Creates a new call builder for the [`BETA_H_X1`] function.
6231        pub fn BETA_H_X1(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_X1Call, N> {
6232            self.call_builder(&BETA_H_X1Call)
6233        }
6234        ///Creates a new call builder for the [`BETA_H_Y0`] function.
6235        pub fn BETA_H_Y0(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_Y0Call, N> {
6236            self.call_builder(&BETA_H_Y0Call)
6237        }
6238        ///Creates a new call builder for the [`BETA_H_Y1`] function.
6239        pub fn BETA_H_Y1(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_Y1Call, N> {
6240            self.call_builder(&BETA_H_Y1Call)
6241        }
6242        ///Creates a new call builder for the [`COSET_K1`] function.
6243        pub fn COSET_K1(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K1Call, N> {
6244            self.call_builder(&COSET_K1Call)
6245        }
6246        ///Creates a new call builder for the [`COSET_K2`] function.
6247        pub fn COSET_K2(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K2Call, N> {
6248            self.call_builder(&COSET_K2Call)
6249        }
6250        ///Creates a new call builder for the [`COSET_K3`] function.
6251        pub fn COSET_K3(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K3Call, N> {
6252            self.call_builder(&COSET_K3Call)
6253        }
6254        ///Creates a new call builder for the [`COSET_K4`] function.
6255        pub fn COSET_K4(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K4Call, N> {
6256            self.call_builder(&COSET_K4Call)
6257        }
6258        ///Creates a new call builder for the [`verify`] function.
6259        pub fn verify(
6260            &self,
6261            verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6262            publicInput: [alloy::sol_types::private::primitives::aliases::U256; 11usize],
6263            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
6264        ) -> alloy_contract::SolCallBuilder<&P, verifyCall, N> {
6265            self.call_builder(
6266                &verifyCall {
6267                    verifyingKey,
6268                    publicInput,
6269                    proof,
6270                },
6271            )
6272        }
6273    }
6274    /// Event filters.
6275    #[automatically_derived]
6276    impl<
6277        P: alloy_contract::private::Provider<N>,
6278        N: alloy_contract::private::Network,
6279    > PlonkVerifierV2Instance<P, N> {
6280        /// Creates a new event filter using this contract instance's provider and address.
6281        ///
6282        /// Note that the type can be any event, not just those defined in this contract.
6283        /// Prefer using the other methods for building type-safe event filters.
6284        pub fn event_filter<E: alloy_sol_types::SolEvent>(
6285            &self,
6286        ) -> alloy_contract::Event<&P, E, N> {
6287            alloy_contract::Event::new_sol(&self.provider, &self.address)
6288        }
6289    }
6290}