Skip to main content

hotshot_contract_adapter/bindings/
plonk_verifier_v3.rs

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