1#[allow(
12 non_camel_case_types,
13 non_snake_case,
14 clippy::pub_underscore_fields,
15 clippy::style,
16 clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19 use super::*;
20 use alloy::sol_types as alloy_sol_types;
21 #[derive(serde::Serialize, serde::Deserialize)]
22 #[derive(Default, Debug, PartialEq, Eq, Hash)]
23 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24 #[derive(Clone)]
25 pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26 const _: () = {
27 use alloy::sol_types as alloy_sol_types;
28 #[automatically_derived]
29 impl alloy_sol_types::private::SolTypeValue<BaseField>
30 for alloy::sol_types::private::primitives::aliases::U256 {
31 #[inline]
32 fn stv_to_tokens(
33 &self,
34 ) -> <alloy::sol_types::sol_data::Uint<
35 256,
36 > as alloy_sol_types::SolType>::Token<'_> {
37 alloy_sol_types::private::SolTypeValue::<
38 alloy::sol_types::sol_data::Uint<256>,
39 >::stv_to_tokens(self)
40 }
41 #[inline]
42 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43 <alloy::sol_types::sol_data::Uint<
44 256,
45 > as alloy_sol_types::SolType>::tokenize(self)
46 .0
47 }
48 #[inline]
49 fn stv_abi_encode_packed_to(
50 &self,
51 out: &mut alloy_sol_types::private::Vec<u8>,
52 ) {
53 <alloy::sol_types::sol_data::Uint<
54 256,
55 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56 }
57 #[inline]
58 fn stv_abi_packed_encoded_size(&self) -> usize {
59 <alloy::sol_types::sol_data::Uint<
60 256,
61 > as alloy_sol_types::SolType>::abi_encoded_size(self)
62 }
63 }
64 #[automatically_derived]
65 impl BaseField {
66 pub const NAME: &'static str = stringify!(@ name);
68 #[inline]
70 pub const fn from_underlying(
71 value: alloy::sol_types::private::primitives::aliases::U256,
72 ) -> Self {
73 Self(value)
74 }
75 #[inline]
77 pub const fn into_underlying(
78 self,
79 ) -> alloy::sol_types::private::primitives::aliases::U256 {
80 self.0
81 }
82 #[inline]
85 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87 }
88 #[inline]
91 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93 }
94 }
95 #[automatically_derived]
96 impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97 fn from(
98 value: alloy::sol_types::private::primitives::aliases::U256,
99 ) -> Self {
100 Self::from_underlying(value)
101 }
102 }
103 #[automatically_derived]
104 impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105 fn from(value: BaseField) -> Self {
106 value.into_underlying()
107 }
108 }
109 #[automatically_derived]
110 impl alloy_sol_types::SolType for BaseField {
111 type RustType = alloy::sol_types::private::primitives::aliases::U256;
112 type Token<'a> = <alloy::sol_types::sol_data::Uint<
113 256,
114 > as alloy_sol_types::SolType>::Token<'a>;
115 const SOL_NAME: &'static str = Self::NAME;
116 const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117 256,
118 > as alloy_sol_types::SolType>::ENCODED_SIZE;
119 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120 256,
121 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122 #[inline]
123 fn valid_token(token: &Self::Token<'_>) -> bool {
124 Self::type_check(token).is_ok()
125 }
126 #[inline]
127 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128 <alloy::sol_types::sol_data::Uint<
129 256,
130 > as alloy_sol_types::SolType>::type_check(token)
131 }
132 #[inline]
133 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134 <alloy::sol_types::sol_data::Uint<
135 256,
136 > as alloy_sol_types::SolType>::detokenize(token)
137 }
138 }
139 #[automatically_derived]
140 impl alloy_sol_types::EventTopic for BaseField {
141 #[inline]
142 fn topic_preimage_length(rust: &Self::RustType) -> usize {
143 <alloy::sol_types::sol_data::Uint<
144 256,
145 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146 }
147 #[inline]
148 fn encode_topic_preimage(
149 rust: &Self::RustType,
150 out: &mut alloy_sol_types::private::Vec<u8>,
151 ) {
152 <alloy::sol_types::sol_data::Uint<
153 256,
154 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155 }
156 #[inline]
157 fn encode_topic(
158 rust: &Self::RustType,
159 ) -> alloy_sol_types::abi::token::WordToken {
160 <alloy::sol_types::sol_data::Uint<
161 256,
162 > as alloy_sol_types::EventTopic>::encode_topic(rust)
163 }
164 }
165 };
166 #[derive(serde::Serialize, serde::Deserialize)]
167 #[derive(Default, Debug, PartialEq, Eq, Hash)]
168 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169 #[derive(Clone)]
170 pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171 const _: () = {
172 use alloy::sol_types as alloy_sol_types;
173 #[automatically_derived]
174 impl alloy_sol_types::private::SolTypeValue<ScalarField>
175 for alloy::sol_types::private::primitives::aliases::U256 {
176 #[inline]
177 fn stv_to_tokens(
178 &self,
179 ) -> <alloy::sol_types::sol_data::Uint<
180 256,
181 > as alloy_sol_types::SolType>::Token<'_> {
182 alloy_sol_types::private::SolTypeValue::<
183 alloy::sol_types::sol_data::Uint<256>,
184 >::stv_to_tokens(self)
185 }
186 #[inline]
187 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188 <alloy::sol_types::sol_data::Uint<
189 256,
190 > as alloy_sol_types::SolType>::tokenize(self)
191 .0
192 }
193 #[inline]
194 fn stv_abi_encode_packed_to(
195 &self,
196 out: &mut alloy_sol_types::private::Vec<u8>,
197 ) {
198 <alloy::sol_types::sol_data::Uint<
199 256,
200 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201 }
202 #[inline]
203 fn stv_abi_packed_encoded_size(&self) -> usize {
204 <alloy::sol_types::sol_data::Uint<
205 256,
206 > as alloy_sol_types::SolType>::abi_encoded_size(self)
207 }
208 }
209 #[automatically_derived]
210 impl ScalarField {
211 pub const NAME: &'static str = stringify!(@ name);
213 #[inline]
215 pub const fn from_underlying(
216 value: alloy::sol_types::private::primitives::aliases::U256,
217 ) -> Self {
218 Self(value)
219 }
220 #[inline]
222 pub const fn into_underlying(
223 self,
224 ) -> alloy::sol_types::private::primitives::aliases::U256 {
225 self.0
226 }
227 #[inline]
230 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232 }
233 #[inline]
236 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238 }
239 }
240 #[automatically_derived]
241 impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242 fn from(
243 value: alloy::sol_types::private::primitives::aliases::U256,
244 ) -> Self {
245 Self::from_underlying(value)
246 }
247 }
248 #[automatically_derived]
249 impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250 fn from(value: ScalarField) -> Self {
251 value.into_underlying()
252 }
253 }
254 #[automatically_derived]
255 impl alloy_sol_types::SolType for ScalarField {
256 type RustType = alloy::sol_types::private::primitives::aliases::U256;
257 type Token<'a> = <alloy::sol_types::sol_data::Uint<
258 256,
259 > as alloy_sol_types::SolType>::Token<'a>;
260 const SOL_NAME: &'static str = Self::NAME;
261 const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262 256,
263 > as alloy_sol_types::SolType>::ENCODED_SIZE;
264 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265 256,
266 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267 #[inline]
268 fn valid_token(token: &Self::Token<'_>) -> bool {
269 Self::type_check(token).is_ok()
270 }
271 #[inline]
272 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273 <alloy::sol_types::sol_data::Uint<
274 256,
275 > as alloy_sol_types::SolType>::type_check(token)
276 }
277 #[inline]
278 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279 <alloy::sol_types::sol_data::Uint<
280 256,
281 > as alloy_sol_types::SolType>::detokenize(token)
282 }
283 }
284 #[automatically_derived]
285 impl alloy_sol_types::EventTopic for ScalarField {
286 #[inline]
287 fn topic_preimage_length(rust: &Self::RustType) -> usize {
288 <alloy::sol_types::sol_data::Uint<
289 256,
290 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291 }
292 #[inline]
293 fn encode_topic_preimage(
294 rust: &Self::RustType,
295 out: &mut alloy_sol_types::private::Vec<u8>,
296 ) {
297 <alloy::sol_types::sol_data::Uint<
298 256,
299 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300 }
301 #[inline]
302 fn encode_topic(
303 rust: &Self::RustType,
304 ) -> alloy_sol_types::abi::token::WordToken {
305 <alloy::sol_types::sol_data::Uint<
306 256,
307 > as alloy_sol_types::EventTopic>::encode_topic(rust)
308 }
309 }
310 };
311 #[derive(serde::Serialize, serde::Deserialize)]
312 #[derive(Default, Debug, PartialEq, Eq, Hash)]
313 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317 #[derive(Clone)]
318 pub struct G1Point {
319 #[allow(missing_docs)]
320 pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321 #[allow(missing_docs)]
322 pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323 }
324 #[allow(
325 non_camel_case_types,
326 non_snake_case,
327 clippy::pub_underscore_fields,
328 clippy::style
329 )]
330 const _: () = {
331 use alloy::sol_types as alloy_sol_types;
332 #[doc(hidden)]
333 type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334 #[doc(hidden)]
335 type UnderlyingRustTuple<'a> = (
336 <BaseField as alloy::sol_types::SolType>::RustType,
337 <BaseField as alloy::sol_types::SolType>::RustType,
338 );
339 #[cfg(test)]
340 #[allow(dead_code, unreachable_patterns)]
341 fn _type_assertion(
342 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343 ) {
344 match _t {
345 alloy_sol_types::private::AssertTypeEq::<
346 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347 >(_) => {}
348 }
349 }
350 #[automatically_derived]
351 #[doc(hidden)]
352 impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353 fn from(value: G1Point) -> Self {
354 (value.x, value.y)
355 }
356 }
357 #[automatically_derived]
358 #[doc(hidden)]
359 impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361 Self { x: tuple.0, y: tuple.1 }
362 }
363 }
364 #[automatically_derived]
365 impl alloy_sol_types::SolValue for G1Point {
366 type SolType = Self;
367 }
368 #[automatically_derived]
369 impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370 #[inline]
371 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372 (
373 <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374 <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375 )
376 }
377 #[inline]
378 fn stv_abi_encoded_size(&self) -> usize {
379 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380 return size;
381 }
382 let tuple = <UnderlyingRustTuple<
383 '_,
384 > as ::core::convert::From<Self>>::from(self.clone());
385 <UnderlyingSolTuple<
386 '_,
387 > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388 }
389 #[inline]
390 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392 }
393 #[inline]
394 fn stv_abi_encode_packed_to(
395 &self,
396 out: &mut alloy_sol_types::private::Vec<u8>,
397 ) {
398 let tuple = <UnderlyingRustTuple<
399 '_,
400 > as ::core::convert::From<Self>>::from(self.clone());
401 <UnderlyingSolTuple<
402 '_,
403 > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404 }
405 #[inline]
406 fn stv_abi_packed_encoded_size(&self) -> usize {
407 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408 return size;
409 }
410 let tuple = <UnderlyingRustTuple<
411 '_,
412 > as ::core::convert::From<Self>>::from(self.clone());
413 <UnderlyingSolTuple<
414 '_,
415 > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416 }
417 }
418 #[automatically_derived]
419 impl alloy_sol_types::SolType for G1Point {
420 type RustType = Self;
421 type Token<'a> = <UnderlyingSolTuple<
422 'a,
423 > as alloy_sol_types::SolType>::Token<'a>;
424 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425 const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426 '_,
427 > as alloy_sol_types::SolType>::ENCODED_SIZE;
428 const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429 '_,
430 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431 #[inline]
432 fn valid_token(token: &Self::Token<'_>) -> bool {
433 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434 }
435 #[inline]
436 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437 let tuple = <UnderlyingSolTuple<
438 '_,
439 > as alloy_sol_types::SolType>::detokenize(token);
440 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441 }
442 }
443 #[automatically_derived]
444 impl alloy_sol_types::SolStruct for G1Point {
445 const NAME: &'static str = "G1Point";
446 #[inline]
447 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448 alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449 }
450 #[inline]
451 fn eip712_components() -> alloy_sol_types::private::Vec<
452 alloy_sol_types::private::Cow<'static, str>,
453 > {
454 alloy_sol_types::private::Vec::new()
455 }
456 #[inline]
457 fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458 <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459 }
460 #[inline]
461 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462 [
463 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465 ]
466 .concat()
467 }
468 }
469 #[automatically_derived]
470 impl alloy_sol_types::EventTopic for G1Point {
471 #[inline]
472 fn topic_preimage_length(rust: &Self::RustType) -> usize {
473 0usize
474 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475 &rust.x,
476 )
477 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478 &rust.y,
479 )
480 }
481 #[inline]
482 fn encode_topic_preimage(
483 rust: &Self::RustType,
484 out: &mut alloy_sol_types::private::Vec<u8>,
485 ) {
486 out.reserve(
487 <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488 );
489 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490 &rust.x,
491 out,
492 );
493 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494 &rust.y,
495 out,
496 );
497 }
498 #[inline]
499 fn encode_topic(
500 rust: &Self::RustType,
501 ) -> alloy_sol_types::abi::token::WordToken {
502 let mut out = alloy_sol_types::private::Vec::new();
503 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504 rust,
505 &mut out,
506 );
507 alloy_sol_types::abi::token::WordToken(
508 alloy_sol_types::private::keccak256(out),
509 )
510 }
511 }
512 };
513 use alloy::contract as alloy_contract;
514 #[inline]
518 pub const fn new<
519 P: alloy_contract::private::Provider<N>,
520 N: alloy_contract::private::Network,
521 >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522 BN254Instance::<P, N>::new(address, provider)
523 }
524 #[derive(Clone)]
536 pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537 address: alloy_sol_types::private::Address,
538 provider: P,
539 _network: ::core::marker::PhantomData<N>,
540 }
541 #[automatically_derived]
542 impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543 #[inline]
544 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545 f.debug_tuple("BN254Instance").field(&self.address).finish()
546 }
547 }
548 #[automatically_derived]
550 impl<
551 P: alloy_contract::private::Provider<N>,
552 N: alloy_contract::private::Network,
553 > BN254Instance<P, N> {
554 #[inline]
558 pub const fn new(
559 address: alloy_sol_types::private::Address,
560 provider: P,
561 ) -> Self {
562 Self {
563 address,
564 provider,
565 _network: ::core::marker::PhantomData,
566 }
567 }
568 #[inline]
570 pub const fn address(&self) -> &alloy_sol_types::private::Address {
571 &self.address
572 }
573 #[inline]
575 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576 self.address = address;
577 }
578 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580 self.set_address(address);
581 self
582 }
583 #[inline]
585 pub const fn provider(&self) -> &P {
586 &self.provider
587 }
588 }
589 impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590 #[inline]
592 pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593 BN254Instance {
594 address: self.address,
595 provider: ::core::clone::Clone::clone(&self.provider),
596 _network: ::core::marker::PhantomData,
597 }
598 }
599 }
600 #[automatically_derived]
602 impl<
603 P: alloy_contract::private::Provider<N>,
604 N: alloy_contract::private::Network,
605 > BN254Instance<P, N> {
606 pub fn call_builder<C: alloy_sol_types::SolCall>(
611 &self,
612 call: &C,
613 ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615 }
616 }
617 #[automatically_derived]
619 impl<
620 P: alloy_contract::private::Provider<N>,
621 N: alloy_contract::private::Network,
622 > BN254Instance<P, N> {
623 pub fn event_filter<E: alloy_sol_types::SolEvent>(
628 &self,
629 ) -> alloy_contract::Event<&P, E, N> {
630 alloy_contract::Event::new_sol(&self.provider, &self.address)
631 }
632 }
633}
634#[allow(
644 non_camel_case_types,
645 non_snake_case,
646 clippy::pub_underscore_fields,
647 clippy::style,
648 clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651 use super::*;
652 use alloy::sol_types as alloy_sol_types;
653 #[derive(serde::Serialize, serde::Deserialize)]
654 #[derive()]
655 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659 #[derive(Clone)]
660 pub struct PlonkProof {
661 #[allow(missing_docs)]
662 pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663 #[allow(missing_docs)]
664 pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665 #[allow(missing_docs)]
666 pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667 #[allow(missing_docs)]
668 pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669 #[allow(missing_docs)]
670 pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671 #[allow(missing_docs)]
672 pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673 #[allow(missing_docs)]
674 pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675 #[allow(missing_docs)]
676 pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677 #[allow(missing_docs)]
678 pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679 #[allow(missing_docs)]
680 pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681 #[allow(missing_docs)]
682 pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683 #[allow(missing_docs)]
684 pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685 #[allow(missing_docs)]
686 pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687 #[allow(missing_docs)]
688 pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689 #[allow(missing_docs)]
690 pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691 #[allow(missing_docs)]
692 pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693 #[allow(missing_docs)]
694 pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695 #[allow(missing_docs)]
696 pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697 #[allow(missing_docs)]
698 pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699 #[allow(missing_docs)]
700 pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701 #[allow(missing_docs)]
702 pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703 #[allow(missing_docs)]
704 pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705 #[allow(missing_docs)]
706 pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707 }
708 #[allow(
709 non_camel_case_types,
710 non_snake_case,
711 clippy::pub_underscore_fields,
712 clippy::style
713 )]
714 const _: () = {
715 use alloy::sol_types as alloy_sol_types;
716 #[doc(hidden)]
717 type UnderlyingSolTuple<'a> = (
718 BN254::G1Point,
719 BN254::G1Point,
720 BN254::G1Point,
721 BN254::G1Point,
722 BN254::G1Point,
723 BN254::G1Point,
724 BN254::G1Point,
725 BN254::G1Point,
726 BN254::G1Point,
727 BN254::G1Point,
728 BN254::G1Point,
729 BN254::G1Point,
730 BN254::G1Point,
731 BN254::ScalarField,
732 BN254::ScalarField,
733 BN254::ScalarField,
734 BN254::ScalarField,
735 BN254::ScalarField,
736 BN254::ScalarField,
737 BN254::ScalarField,
738 BN254::ScalarField,
739 BN254::ScalarField,
740 BN254::ScalarField,
741 );
742 #[doc(hidden)]
743 type UnderlyingRustTuple<'a> = (
744 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767 );
768 #[cfg(test)]
769 #[allow(dead_code, unreachable_patterns)]
770 fn _type_assertion(
771 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772 ) {
773 match _t {
774 alloy_sol_types::private::AssertTypeEq::<
775 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776 >(_) => {}
777 }
778 }
779 #[automatically_derived]
780 #[doc(hidden)]
781 impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782 fn from(value: PlonkProof) -> Self {
783 (
784 value.wire0,
785 value.wire1,
786 value.wire2,
787 value.wire3,
788 value.wire4,
789 value.prodPerm,
790 value.split0,
791 value.split1,
792 value.split2,
793 value.split3,
794 value.split4,
795 value.zeta,
796 value.zetaOmega,
797 value.wireEval0,
798 value.wireEval1,
799 value.wireEval2,
800 value.wireEval3,
801 value.wireEval4,
802 value.sigmaEval0,
803 value.sigmaEval1,
804 value.sigmaEval2,
805 value.sigmaEval3,
806 value.prodPermZetaOmegaEval,
807 )
808 }
809 }
810 #[automatically_derived]
811 #[doc(hidden)]
812 impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814 Self {
815 wire0: tuple.0,
816 wire1: tuple.1,
817 wire2: tuple.2,
818 wire3: tuple.3,
819 wire4: tuple.4,
820 prodPerm: tuple.5,
821 split0: tuple.6,
822 split1: tuple.7,
823 split2: tuple.8,
824 split3: tuple.9,
825 split4: tuple.10,
826 zeta: tuple.11,
827 zetaOmega: tuple.12,
828 wireEval0: tuple.13,
829 wireEval1: tuple.14,
830 wireEval2: tuple.15,
831 wireEval3: tuple.16,
832 wireEval4: tuple.17,
833 sigmaEval0: tuple.18,
834 sigmaEval1: tuple.19,
835 sigmaEval2: tuple.20,
836 sigmaEval3: tuple.21,
837 prodPermZetaOmegaEval: tuple.22,
838 }
839 }
840 }
841 #[automatically_derived]
842 impl alloy_sol_types::SolValue for PlonkProof {
843 type SolType = Self;
844 }
845 #[automatically_derived]
846 impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847 #[inline]
848 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849 (
850 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856 &self.prodPerm,
857 ),
858 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865 &self.zetaOmega,
866 ),
867 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868 &self.wireEval0,
869 ),
870 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871 &self.wireEval1,
872 ),
873 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874 &self.wireEval2,
875 ),
876 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877 &self.wireEval3,
878 ),
879 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880 &self.wireEval4,
881 ),
882 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883 &self.sigmaEval0,
884 ),
885 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886 &self.sigmaEval1,
887 ),
888 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889 &self.sigmaEval2,
890 ),
891 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892 &self.sigmaEval3,
893 ),
894 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895 &self.prodPermZetaOmegaEval,
896 ),
897 )
898 }
899 #[inline]
900 fn stv_abi_encoded_size(&self) -> usize {
901 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902 return size;
903 }
904 let tuple = <UnderlyingRustTuple<
905 '_,
906 > as ::core::convert::From<Self>>::from(self.clone());
907 <UnderlyingSolTuple<
908 '_,
909 > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910 }
911 #[inline]
912 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914 }
915 #[inline]
916 fn stv_abi_encode_packed_to(
917 &self,
918 out: &mut alloy_sol_types::private::Vec<u8>,
919 ) {
920 let tuple = <UnderlyingRustTuple<
921 '_,
922 > as ::core::convert::From<Self>>::from(self.clone());
923 <UnderlyingSolTuple<
924 '_,
925 > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926 }
927 #[inline]
928 fn stv_abi_packed_encoded_size(&self) -> usize {
929 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930 return size;
931 }
932 let tuple = <UnderlyingRustTuple<
933 '_,
934 > as ::core::convert::From<Self>>::from(self.clone());
935 <UnderlyingSolTuple<
936 '_,
937 > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938 }
939 }
940 #[automatically_derived]
941 impl alloy_sol_types::SolType for PlonkProof {
942 type RustType = Self;
943 type Token<'a> = <UnderlyingSolTuple<
944 'a,
945 > as alloy_sol_types::SolType>::Token<'a>;
946 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947 const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948 '_,
949 > as alloy_sol_types::SolType>::ENCODED_SIZE;
950 const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951 '_,
952 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953 #[inline]
954 fn valid_token(token: &Self::Token<'_>) -> bool {
955 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956 }
957 #[inline]
958 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959 let tuple = <UnderlyingSolTuple<
960 '_,
961 > as alloy_sol_types::SolType>::detokenize(token);
962 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963 }
964 }
965 #[automatically_derived]
966 impl alloy_sol_types::SolStruct for PlonkProof {
967 const NAME: &'static str = "PlonkProof";
968 #[inline]
969 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970 alloy_sol_types::private::Cow::Borrowed(
971 "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
972 )
973 }
974 #[inline]
975 fn eip712_components() -> alloy_sol_types::private::Vec<
976 alloy_sol_types::private::Cow<'static, str>,
977 > {
978 let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979 components
980 .push(
981 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982 );
983 components
984 .extend(
985 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986 );
987 components
988 .push(
989 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990 );
991 components
992 .extend(
993 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994 );
995 components
996 .push(
997 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998 );
999 components
1000 .extend(
1001 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002 );
1003 components
1004 .push(
1005 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006 );
1007 components
1008 .extend(
1009 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010 );
1011 components
1012 .push(
1013 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014 );
1015 components
1016 .extend(
1017 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018 );
1019 components
1020 .push(
1021 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022 );
1023 components
1024 .extend(
1025 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026 );
1027 components
1028 .push(
1029 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030 );
1031 components
1032 .extend(
1033 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034 );
1035 components
1036 .push(
1037 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038 );
1039 components
1040 .extend(
1041 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042 );
1043 components
1044 .push(
1045 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046 );
1047 components
1048 .extend(
1049 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050 );
1051 components
1052 .push(
1053 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054 );
1055 components
1056 .extend(
1057 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058 );
1059 components
1060 .push(
1061 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062 );
1063 components
1064 .extend(
1065 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066 );
1067 components
1068 .push(
1069 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070 );
1071 components
1072 .extend(
1073 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074 );
1075 components
1076 .push(
1077 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078 );
1079 components
1080 .extend(
1081 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082 );
1083 components
1084 }
1085 #[inline]
1086 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087 [
1088 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089 &self.wire0,
1090 )
1091 .0,
1092 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093 &self.wire1,
1094 )
1095 .0,
1096 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097 &self.wire2,
1098 )
1099 .0,
1100 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101 &self.wire3,
1102 )
1103 .0,
1104 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105 &self.wire4,
1106 )
1107 .0,
1108 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109 &self.prodPerm,
1110 )
1111 .0,
1112 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113 &self.split0,
1114 )
1115 .0,
1116 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117 &self.split1,
1118 )
1119 .0,
1120 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121 &self.split2,
1122 )
1123 .0,
1124 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125 &self.split3,
1126 )
1127 .0,
1128 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129 &self.split4,
1130 )
1131 .0,
1132 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133 &self.zeta,
1134 )
1135 .0,
1136 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137 &self.zetaOmega,
1138 )
1139 .0,
1140 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141 &self.wireEval0,
1142 )
1143 .0,
1144 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145 &self.wireEval1,
1146 )
1147 .0,
1148 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149 &self.wireEval2,
1150 )
1151 .0,
1152 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153 &self.wireEval3,
1154 )
1155 .0,
1156 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157 &self.wireEval4,
1158 )
1159 .0,
1160 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161 &self.sigmaEval0,
1162 )
1163 .0,
1164 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165 &self.sigmaEval1,
1166 )
1167 .0,
1168 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169 &self.sigmaEval2,
1170 )
1171 .0,
1172 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173 &self.sigmaEval3,
1174 )
1175 .0,
1176 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177 &self.prodPermZetaOmegaEval,
1178 )
1179 .0,
1180 ]
1181 .concat()
1182 }
1183 }
1184 #[automatically_derived]
1185 impl alloy_sol_types::EventTopic for PlonkProof {
1186 #[inline]
1187 fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188 0usize
1189 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190 &rust.wire0,
1191 )
1192 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193 &rust.wire1,
1194 )
1195 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196 &rust.wire2,
1197 )
1198 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199 &rust.wire3,
1200 )
1201 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202 &rust.wire4,
1203 )
1204 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205 &rust.prodPerm,
1206 )
1207 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208 &rust.split0,
1209 )
1210 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211 &rust.split1,
1212 )
1213 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214 &rust.split2,
1215 )
1216 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217 &rust.split3,
1218 )
1219 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220 &rust.split4,
1221 )
1222 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223 &rust.zeta,
1224 )
1225 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226 &rust.zetaOmega,
1227 )
1228 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229 &rust.wireEval0,
1230 )
1231 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232 &rust.wireEval1,
1233 )
1234 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235 &rust.wireEval2,
1236 )
1237 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238 &rust.wireEval3,
1239 )
1240 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241 &rust.wireEval4,
1242 )
1243 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244 &rust.sigmaEval0,
1245 )
1246 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247 &rust.sigmaEval1,
1248 )
1249 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250 &rust.sigmaEval2,
1251 )
1252 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253 &rust.sigmaEval3,
1254 )
1255 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256 &rust.prodPermZetaOmegaEval,
1257 )
1258 }
1259 #[inline]
1260 fn encode_topic_preimage(
1261 rust: &Self::RustType,
1262 out: &mut alloy_sol_types::private::Vec<u8>,
1263 ) {
1264 out.reserve(
1265 <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266 );
1267 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268 &rust.wire0,
1269 out,
1270 );
1271 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272 &rust.wire1,
1273 out,
1274 );
1275 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276 &rust.wire2,
1277 out,
1278 );
1279 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280 &rust.wire3,
1281 out,
1282 );
1283 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284 &rust.wire4,
1285 out,
1286 );
1287 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288 &rust.prodPerm,
1289 out,
1290 );
1291 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292 &rust.split0,
1293 out,
1294 );
1295 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296 &rust.split1,
1297 out,
1298 );
1299 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300 &rust.split2,
1301 out,
1302 );
1303 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304 &rust.split3,
1305 out,
1306 );
1307 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308 &rust.split4,
1309 out,
1310 );
1311 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312 &rust.zeta,
1313 out,
1314 );
1315 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316 &rust.zetaOmega,
1317 out,
1318 );
1319 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320 &rust.wireEval0,
1321 out,
1322 );
1323 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324 &rust.wireEval1,
1325 out,
1326 );
1327 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328 &rust.wireEval2,
1329 out,
1330 );
1331 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332 &rust.wireEval3,
1333 out,
1334 );
1335 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336 &rust.wireEval4,
1337 out,
1338 );
1339 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340 &rust.sigmaEval0,
1341 out,
1342 );
1343 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344 &rust.sigmaEval1,
1345 out,
1346 );
1347 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348 &rust.sigmaEval2,
1349 out,
1350 );
1351 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352 &rust.sigmaEval3,
1353 out,
1354 );
1355 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356 &rust.prodPermZetaOmegaEval,
1357 out,
1358 );
1359 }
1360 #[inline]
1361 fn encode_topic(
1362 rust: &Self::RustType,
1363 ) -> alloy_sol_types::abi::token::WordToken {
1364 let mut out = alloy_sol_types::private::Vec::new();
1365 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366 rust,
1367 &mut out,
1368 );
1369 alloy_sol_types::abi::token::WordToken(
1370 alloy_sol_types::private::keccak256(out),
1371 )
1372 }
1373 }
1374 };
1375 #[derive(serde::Serialize, serde::Deserialize)]
1376 #[derive()]
1377 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381 #[derive(Clone)]
1382 pub struct VerifyingKey {
1383 #[allow(missing_docs)]
1384 pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385 #[allow(missing_docs)]
1386 pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387 #[allow(missing_docs)]
1388 pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389 #[allow(missing_docs)]
1390 pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391 #[allow(missing_docs)]
1392 pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393 #[allow(missing_docs)]
1394 pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395 #[allow(missing_docs)]
1396 pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397 #[allow(missing_docs)]
1398 pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399 #[allow(missing_docs)]
1400 pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401 #[allow(missing_docs)]
1402 pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403 #[allow(missing_docs)]
1404 pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405 #[allow(missing_docs)]
1406 pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407 #[allow(missing_docs)]
1408 pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409 #[allow(missing_docs)]
1410 pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411 #[allow(missing_docs)]
1412 pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413 #[allow(missing_docs)]
1414 pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415 #[allow(missing_docs)]
1416 pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417 #[allow(missing_docs)]
1418 pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419 #[allow(missing_docs)]
1420 pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421 #[allow(missing_docs)]
1422 pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423 #[allow(missing_docs)]
1424 pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425 #[allow(missing_docs)]
1426 pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427 }
1428 #[allow(
1429 non_camel_case_types,
1430 non_snake_case,
1431 clippy::pub_underscore_fields,
1432 clippy::style
1433 )]
1434 const _: () = {
1435 use alloy::sol_types as alloy_sol_types;
1436 #[doc(hidden)]
1437 type UnderlyingSolTuple<'a> = (
1438 alloy::sol_types::sol_data::Uint<256>,
1439 alloy::sol_types::sol_data::Uint<256>,
1440 BN254::G1Point,
1441 BN254::G1Point,
1442 BN254::G1Point,
1443 BN254::G1Point,
1444 BN254::G1Point,
1445 BN254::G1Point,
1446 BN254::G1Point,
1447 BN254::G1Point,
1448 BN254::G1Point,
1449 BN254::G1Point,
1450 BN254::G1Point,
1451 BN254::G1Point,
1452 BN254::G1Point,
1453 BN254::G1Point,
1454 BN254::G1Point,
1455 BN254::G1Point,
1456 BN254::G1Point,
1457 BN254::G1Point,
1458 alloy::sol_types::sol_data::FixedBytes<32>,
1459 alloy::sol_types::sol_data::FixedBytes<32>,
1460 );
1461 #[doc(hidden)]
1462 type UnderlyingRustTuple<'a> = (
1463 alloy::sol_types::private::primitives::aliases::U256,
1464 alloy::sol_types::private::primitives::aliases::U256,
1465 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483 alloy::sol_types::private::FixedBytes<32>,
1484 alloy::sol_types::private::FixedBytes<32>,
1485 );
1486 #[cfg(test)]
1487 #[allow(dead_code, unreachable_patterns)]
1488 fn _type_assertion(
1489 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490 ) {
1491 match _t {
1492 alloy_sol_types::private::AssertTypeEq::<
1493 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494 >(_) => {}
1495 }
1496 }
1497 #[automatically_derived]
1498 #[doc(hidden)]
1499 impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500 fn from(value: VerifyingKey) -> Self {
1501 (
1502 value.domainSize,
1503 value.numInputs,
1504 value.sigma0,
1505 value.sigma1,
1506 value.sigma2,
1507 value.sigma3,
1508 value.sigma4,
1509 value.q1,
1510 value.q2,
1511 value.q3,
1512 value.q4,
1513 value.qM12,
1514 value.qM34,
1515 value.qO,
1516 value.qC,
1517 value.qH1,
1518 value.qH2,
1519 value.qH3,
1520 value.qH4,
1521 value.qEcc,
1522 value.g2LSB,
1523 value.g2MSB,
1524 )
1525 }
1526 }
1527 #[automatically_derived]
1528 #[doc(hidden)]
1529 impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531 Self {
1532 domainSize: tuple.0,
1533 numInputs: tuple.1,
1534 sigma0: tuple.2,
1535 sigma1: tuple.3,
1536 sigma2: tuple.4,
1537 sigma3: tuple.5,
1538 sigma4: tuple.6,
1539 q1: tuple.7,
1540 q2: tuple.8,
1541 q3: tuple.9,
1542 q4: tuple.10,
1543 qM12: tuple.11,
1544 qM34: tuple.12,
1545 qO: tuple.13,
1546 qC: tuple.14,
1547 qH1: tuple.15,
1548 qH2: tuple.16,
1549 qH3: tuple.17,
1550 qH4: tuple.18,
1551 qEcc: tuple.19,
1552 g2LSB: tuple.20,
1553 g2MSB: tuple.21,
1554 }
1555 }
1556 }
1557 #[automatically_derived]
1558 impl alloy_sol_types::SolValue for VerifyingKey {
1559 type SolType = Self;
1560 }
1561 #[automatically_derived]
1562 impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563 #[inline]
1564 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565 (
1566 <alloy::sol_types::sol_data::Uint<
1567 256,
1568 > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569 <alloy::sol_types::sol_data::Uint<
1570 256,
1571 > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590 <alloy::sol_types::sol_data::FixedBytes<
1591 32,
1592 > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593 <alloy::sol_types::sol_data::FixedBytes<
1594 32,
1595 > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596 )
1597 }
1598 #[inline]
1599 fn stv_abi_encoded_size(&self) -> usize {
1600 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601 return size;
1602 }
1603 let tuple = <UnderlyingRustTuple<
1604 '_,
1605 > as ::core::convert::From<Self>>::from(self.clone());
1606 <UnderlyingSolTuple<
1607 '_,
1608 > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609 }
1610 #[inline]
1611 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613 }
1614 #[inline]
1615 fn stv_abi_encode_packed_to(
1616 &self,
1617 out: &mut alloy_sol_types::private::Vec<u8>,
1618 ) {
1619 let tuple = <UnderlyingRustTuple<
1620 '_,
1621 > as ::core::convert::From<Self>>::from(self.clone());
1622 <UnderlyingSolTuple<
1623 '_,
1624 > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625 }
1626 #[inline]
1627 fn stv_abi_packed_encoded_size(&self) -> usize {
1628 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629 return size;
1630 }
1631 let tuple = <UnderlyingRustTuple<
1632 '_,
1633 > as ::core::convert::From<Self>>::from(self.clone());
1634 <UnderlyingSolTuple<
1635 '_,
1636 > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637 }
1638 }
1639 #[automatically_derived]
1640 impl alloy_sol_types::SolType for VerifyingKey {
1641 type RustType = Self;
1642 type Token<'a> = <UnderlyingSolTuple<
1643 'a,
1644 > as alloy_sol_types::SolType>::Token<'a>;
1645 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646 const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647 '_,
1648 > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649 const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650 '_,
1651 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652 #[inline]
1653 fn valid_token(token: &Self::Token<'_>) -> bool {
1654 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655 }
1656 #[inline]
1657 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658 let tuple = <UnderlyingSolTuple<
1659 '_,
1660 > as alloy_sol_types::SolType>::detokenize(token);
1661 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662 }
1663 }
1664 #[automatically_derived]
1665 impl alloy_sol_types::SolStruct for VerifyingKey {
1666 const NAME: &'static str = "VerifyingKey";
1667 #[inline]
1668 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669 alloy_sol_types::private::Cow::Borrowed(
1670 "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1671 )
1672 }
1673 #[inline]
1674 fn eip712_components() -> alloy_sol_types::private::Vec<
1675 alloy_sol_types::private::Cow<'static, str>,
1676 > {
1677 let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678 components
1679 .push(
1680 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681 );
1682 components
1683 .extend(
1684 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685 );
1686 components
1687 .push(
1688 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689 );
1690 components
1691 .extend(
1692 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693 );
1694 components
1695 .push(
1696 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697 );
1698 components
1699 .extend(
1700 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701 );
1702 components
1703 .push(
1704 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705 );
1706 components
1707 .extend(
1708 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709 );
1710 components
1711 .push(
1712 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713 );
1714 components
1715 .extend(
1716 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717 );
1718 components
1719 .push(
1720 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721 );
1722 components
1723 .extend(
1724 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725 );
1726 components
1727 .push(
1728 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729 );
1730 components
1731 .extend(
1732 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733 );
1734 components
1735 .push(
1736 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737 );
1738 components
1739 .extend(
1740 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741 );
1742 components
1743 .push(
1744 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745 );
1746 components
1747 .extend(
1748 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749 );
1750 components
1751 .push(
1752 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753 );
1754 components
1755 .extend(
1756 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757 );
1758 components
1759 .push(
1760 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761 );
1762 components
1763 .extend(
1764 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765 );
1766 components
1767 .push(
1768 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769 );
1770 components
1771 .extend(
1772 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773 );
1774 components
1775 .push(
1776 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777 );
1778 components
1779 .extend(
1780 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781 );
1782 components
1783 .push(
1784 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785 );
1786 components
1787 .extend(
1788 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789 );
1790 components
1791 .push(
1792 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793 );
1794 components
1795 .extend(
1796 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797 );
1798 components
1799 .push(
1800 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801 );
1802 components
1803 .extend(
1804 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805 );
1806 components
1807 .push(
1808 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809 );
1810 components
1811 .extend(
1812 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813 );
1814 components
1815 .push(
1816 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817 );
1818 components
1819 .extend(
1820 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821 );
1822 components
1823 }
1824 #[inline]
1825 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826 [
1827 <alloy::sol_types::sol_data::Uint<
1828 256,
1829 > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830 .0,
1831 <alloy::sol_types::sol_data::Uint<
1832 256,
1833 > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834 .0,
1835 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836 &self.sigma0,
1837 )
1838 .0,
1839 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840 &self.sigma1,
1841 )
1842 .0,
1843 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844 &self.sigma2,
1845 )
1846 .0,
1847 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848 &self.sigma3,
1849 )
1850 .0,
1851 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852 &self.sigma4,
1853 )
1854 .0,
1855 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856 &self.q1,
1857 )
1858 .0,
1859 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860 &self.q2,
1861 )
1862 .0,
1863 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864 &self.q3,
1865 )
1866 .0,
1867 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868 &self.q4,
1869 )
1870 .0,
1871 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872 &self.qM12,
1873 )
1874 .0,
1875 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876 &self.qM34,
1877 )
1878 .0,
1879 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880 &self.qO,
1881 )
1882 .0,
1883 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884 &self.qC,
1885 )
1886 .0,
1887 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888 &self.qH1,
1889 )
1890 .0,
1891 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892 &self.qH2,
1893 )
1894 .0,
1895 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896 &self.qH3,
1897 )
1898 .0,
1899 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900 &self.qH4,
1901 )
1902 .0,
1903 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904 &self.qEcc,
1905 )
1906 .0,
1907 <alloy::sol_types::sol_data::FixedBytes<
1908 32,
1909 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910 .0,
1911 <alloy::sol_types::sol_data::FixedBytes<
1912 32,
1913 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914 .0,
1915 ]
1916 .concat()
1917 }
1918 }
1919 #[automatically_derived]
1920 impl alloy_sol_types::EventTopic for VerifyingKey {
1921 #[inline]
1922 fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923 0usize
1924 + <alloy::sol_types::sol_data::Uint<
1925 256,
1926 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927 &rust.domainSize,
1928 )
1929 + <alloy::sol_types::sol_data::Uint<
1930 256,
1931 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932 &rust.numInputs,
1933 )
1934 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935 &rust.sigma0,
1936 )
1937 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938 &rust.sigma1,
1939 )
1940 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941 &rust.sigma2,
1942 )
1943 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944 &rust.sigma3,
1945 )
1946 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947 &rust.sigma4,
1948 )
1949 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950 &rust.q1,
1951 )
1952 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953 &rust.q2,
1954 )
1955 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956 &rust.q3,
1957 )
1958 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959 &rust.q4,
1960 )
1961 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962 &rust.qM12,
1963 )
1964 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965 &rust.qM34,
1966 )
1967 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968 &rust.qO,
1969 )
1970 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971 &rust.qC,
1972 )
1973 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974 &rust.qH1,
1975 )
1976 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977 &rust.qH2,
1978 )
1979 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980 &rust.qH3,
1981 )
1982 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983 &rust.qH4,
1984 )
1985 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986 &rust.qEcc,
1987 )
1988 + <alloy::sol_types::sol_data::FixedBytes<
1989 32,
1990 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991 + <alloy::sol_types::sol_data::FixedBytes<
1992 32,
1993 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994 }
1995 #[inline]
1996 fn encode_topic_preimage(
1997 rust: &Self::RustType,
1998 out: &mut alloy_sol_types::private::Vec<u8>,
1999 ) {
2000 out.reserve(
2001 <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002 );
2003 <alloy::sol_types::sol_data::Uint<
2004 256,
2005 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006 &rust.domainSize,
2007 out,
2008 );
2009 <alloy::sol_types::sol_data::Uint<
2010 256,
2011 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012 &rust.numInputs,
2013 out,
2014 );
2015 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016 &rust.sigma0,
2017 out,
2018 );
2019 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020 &rust.sigma1,
2021 out,
2022 );
2023 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024 &rust.sigma2,
2025 out,
2026 );
2027 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028 &rust.sigma3,
2029 out,
2030 );
2031 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032 &rust.sigma4,
2033 out,
2034 );
2035 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036 &rust.q1,
2037 out,
2038 );
2039 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040 &rust.q2,
2041 out,
2042 );
2043 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044 &rust.q3,
2045 out,
2046 );
2047 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048 &rust.q4,
2049 out,
2050 );
2051 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052 &rust.qM12,
2053 out,
2054 );
2055 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056 &rust.qM34,
2057 out,
2058 );
2059 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060 &rust.qO,
2061 out,
2062 );
2063 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064 &rust.qC,
2065 out,
2066 );
2067 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068 &rust.qH1,
2069 out,
2070 );
2071 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072 &rust.qH2,
2073 out,
2074 );
2075 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076 &rust.qH3,
2077 out,
2078 );
2079 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080 &rust.qH4,
2081 out,
2082 );
2083 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084 &rust.qEcc,
2085 out,
2086 );
2087 <alloy::sol_types::sol_data::FixedBytes<
2088 32,
2089 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090 &rust.g2LSB,
2091 out,
2092 );
2093 <alloy::sol_types::sol_data::FixedBytes<
2094 32,
2095 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096 &rust.g2MSB,
2097 out,
2098 );
2099 }
2100 #[inline]
2101 fn encode_topic(
2102 rust: &Self::RustType,
2103 ) -> alloy_sol_types::abi::token::WordToken {
2104 let mut out = alloy_sol_types::private::Vec::new();
2105 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106 rust,
2107 &mut out,
2108 );
2109 alloy_sol_types::abi::token::WordToken(
2110 alloy_sol_types::private::keccak256(out),
2111 )
2112 }
2113 }
2114 };
2115 use alloy::contract as alloy_contract;
2116 #[inline]
2120 pub const fn new<
2121 P: alloy_contract::private::Provider<N>,
2122 N: alloy_contract::private::Network,
2123 >(
2124 address: alloy_sol_types::private::Address,
2125 provider: P,
2126 ) -> IPlonkVerifierInstance<P, N> {
2127 IPlonkVerifierInstance::<P, N>::new(address, provider)
2128 }
2129 #[derive(Clone)]
2141 pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142 address: alloy_sol_types::private::Address,
2143 provider: P,
2144 _network: ::core::marker::PhantomData<N>,
2145 }
2146 #[automatically_derived]
2147 impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148 #[inline]
2149 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150 f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151 }
2152 }
2153 #[automatically_derived]
2155 impl<
2156 P: alloy_contract::private::Provider<N>,
2157 N: alloy_contract::private::Network,
2158 > IPlonkVerifierInstance<P, N> {
2159 #[inline]
2163 pub const fn new(
2164 address: alloy_sol_types::private::Address,
2165 provider: P,
2166 ) -> Self {
2167 Self {
2168 address,
2169 provider,
2170 _network: ::core::marker::PhantomData,
2171 }
2172 }
2173 #[inline]
2175 pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176 &self.address
2177 }
2178 #[inline]
2180 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181 self.address = address;
2182 }
2183 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185 self.set_address(address);
2186 self
2187 }
2188 #[inline]
2190 pub const fn provider(&self) -> &P {
2191 &self.provider
2192 }
2193 }
2194 impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195 #[inline]
2197 pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198 IPlonkVerifierInstance {
2199 address: self.address,
2200 provider: ::core::clone::Clone::clone(&self.provider),
2201 _network: ::core::marker::PhantomData,
2202 }
2203 }
2204 }
2205 #[automatically_derived]
2207 impl<
2208 P: alloy_contract::private::Provider<N>,
2209 N: alloy_contract::private::Network,
2210 > IPlonkVerifierInstance<P, N> {
2211 pub fn call_builder<C: alloy_sol_types::SolCall>(
2216 &self,
2217 call: &C,
2218 ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220 }
2221 }
2222 #[automatically_derived]
2224 impl<
2225 P: alloy_contract::private::Provider<N>,
2226 N: alloy_contract::private::Network,
2227 > IPlonkVerifierInstance<P, N> {
2228 pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233 &self,
2234 ) -> alloy_contract::Event<&P, E, N> {
2235 alloy_contract::Event::new_sol(&self.provider, &self.address)
2236 }
2237 }
2238}
2239#[allow(
3006 non_camel_case_types,
3007 non_snake_case,
3008 clippy::pub_underscore_fields,
3009 clippy::style,
3010 clippy::empty_structs_with_brackets
3011)]
3012pub mod PlonkVerifier {
3013 use super::*;
3014 use alloy::sol_types as alloy_sol_types;
3015 #[rustfmt::skip]
3021 #[allow(clippy::all)]
3022 pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3023 b"a!~a\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\x004W_5`\xE0\x1C\x80c\xCESzw\x14a\08W[__\xFD[a\0Ka\0F6`\x04a\x1F\x0CV[a\0_V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0i\x82a\0\xD0V[a\0y\x83_[` \x02\x01Qa\x02\x0BV[a\0\x84\x83`\x01a\0oV[a\0\x8F\x83`\x02a\0oV[a\0\x9A\x83`\x03a\0oV[a\0\xA5\x83`\x04a\0oV[a\0\xB0\x83`\x05a\0oV[a\0\xBB\x83`\x06a\0oV[a\0\xC6\x84\x84\x84a\x02=V[\x90P[\x93\x92PPPV[\x80Qa\0\xDB\x90a\x041V[a\0\xE8\x81` \x01Qa\x041V[a\0\xF5\x81`@\x01Qa\x041V[a\x01\x02\x81``\x01Qa\x041V[a\x01\x0F\x81`\x80\x01Qa\x041V[a\x01\x1C\x81`\xA0\x01Qa\x041V[a\x01)\x81`\xC0\x01Qa\x041V[a\x016\x81`\xE0\x01Qa\x041V[a\x01D\x81a\x01\0\x01Qa\x041V[a\x01R\x81a\x01 \x01Qa\x041V[a\x01`\x81a\x01@\x01Qa\x041V[a\x01n\x81a\x01`\x01Qa\x041V[a\x01|\x81a\x01\x80\x01Qa\x041V[a\x01\x8A\x81a\x01\xA0\x01Qa\x02\x0BV[a\x01\x98\x81a\x01\xC0\x01Qa\x02\x0BV[a\x01\xA6\x81a\x01\xE0\x01Qa\x02\x0BV[a\x01\xB4\x81a\x02\0\x01Qa\x02\x0BV[a\x01\xC2\x81a\x02 \x01Qa\x02\x0BV[a\x01\xD0\x81a\x02@\x01Qa\x02\x0BV[a\x01\xDE\x81a\x02`\x01Qa\x02\x0BV[a\x01\xEC\x81a\x02\x80\x01Qa\x02\x0BV[a\x01\xFA\x81a\x02\xA0\x01Qa\x02\x0BV[a\x02\x08\x81a\x02\xC0\x01Qa\x02\x0BV[PV[_Q` a!R_9_Q\x90_R\x81\x10\x80a\x029W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x07\x14a\x02cW`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x02o\x85\x85\x85a\x04\xB0V[\x90P_a\x02~\x86_\x01Qa\n\x10V[\x90P_a\x02\x90\x82\x84`\xA0\x01Q\x88a\r\xEEV[\x90Pa\x02\xAD`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\xE1\x87a\x01`\x01Qa\x02\xDC\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x0EKV[a\x0E\xAEV[\x91P__a\x02\xF1\x8B\x88\x87\x8Ca\x0F\x15V[\x91P\x91Pa\x03\x02\x81a\x02\xDC\x84a\x11MV[\x92Pa\x03\x1B\x83a\x02\xDC\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x0EKV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a!R_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x03^\x85a\x02\xDC\x8Da\x01\x80\x01Q\x84a\x0EKV[\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\x04\x1F\x87\x82a\x04\x12\x89a\x11MV[a\x04\x1Aa\x11\xEAV[a\x12\xB7V[\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\x04jWPPPV[\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\x04\xABW`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[a\x04\xF0`@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!R_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R\x84Q\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``\x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`\x80\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP_\x82Ra\x07\xC0\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\n\x18a\x1B\xE9V[\x81b\x01\0\0\x03a\x0BWW`@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`\xE0\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0C\x97W`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\r\xD5W`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0E\x0F`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x0E\x19\x84\x84a\x13hV[\x80\x82Ra\x0E)\x90\x85\x90\x85\x90a\x13\xB9V[` \x82\x01R\x80Qa\x0E?\x90\x85\x90\x84\x90\x86\x90a\x14(V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Efa\x1C\rV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07Z\xFA\x90P\x80a\x0E\xA6W`@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\x0E\xC9a\x1C+V[\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\x0E\xA6W`@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\x0FH\x87\x87\x87\x87a\x15vV[\x90P_Q` a!R_9_Q\x90_R_a\x0Fd\x88\x87\x89a\x1A@V[\x90Pa\x0Fp\x81\x83a \xF9V[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x0F\x9C\x85a\x02\xDC\x8A_\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x0F\xC4\x86a\x02\xDC\x8A` \x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x0F\xEC\x86a\x02\xDC\x8A`@\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\x14\x86a\x02\xDC\x8A``\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x10<\x86a\x02\xDC\x8A`\x80\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x10d\x86a\x02\xDC\x8D`@\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\x8C\x86a\x02\xDC\x8D``\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xB4\x86a\x02\xDC\x8D`\x80\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xDC\x86a\x02\xDC\x8D`\xA0\x01Q\x84a\x0EKV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x11\x06\x87a\x02\xDC\x8B`\xA0\x01Q\x84a\x0EKV[\x96Pa\x11<a\x116`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x0EKV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x11tWP\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\x11\xB8\x91\x90a!2V[a\x11\xE2\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa \xF9V[\x90R\x92\x91PPV[a\x12\x11`@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\x13ZW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a!R_9_Q\x90_R\x90\x83\x80\x15a\x13\xA9W\x84\x93P_[\x82\x81\x10\x15a\x13\x9DW\x83\x85\x86\t\x94P`\x01\x01a\x13\x87V[P`\x01\x84\x03\x93Pa\x13\xB0V[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x13\xCAWP`\x01a\0\xC9V[\x81_\x03a\x13\xD8WP_a\0\xC9V[` \x84\x01Q_Q` a!R_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x14\x06W`\x01\x87\x03\x92Pa\x14\rV[`\x01\x84\x03\x92P[Pa\x14\x17\x82a\x1B+V[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a!R_9_Q\x90_R\x82\x82\x03a\x14\xA1W`\x01_[`\x07\x81\x10\x15a\x14\x96W\x81\x86\x03a\x14sW\x86\x81`\x07\x81\x10a\x14dWa\x14da \xE5V[` \x02\x01Q\x93PPPPa\x13`V[\x82\x80a\x14\x81Wa\x14\x81a!\x1EV[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x14BV[P_\x92PPPa\x13`V[a\x14\xA9a\x1CIV[`@\x87\x01Q`\x01`\xC0\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x07\x81\x10\x15a\x14\xEAW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x14\xBDV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x07\x81\x10\x15a\x15>W\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\x14\xFEV[PPPP\x80\x92PP_a\x15P\x83a\x1B+V[\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!R_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\x16\xE3\x87`\xA0\x01Q\x86a\x0EKV[\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\x17\xAA\x86a\x02\xDC\x8C`\xC0\x01Q\x88\x85a\x17\xA5\x91\x90a \xF9V[a\x0EKV[\x95Pa\x17\xC3\x86a\x02\xDC\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x0EKV[\x95Pa\x17\xDD\x86a\x02\xDC\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x0EKV[\x95Pa\x17\xF7\x86a\x02\xDC\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x0EKV[\x95Pa\x18\x11\x86a\x02\xDC\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x0EKV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x186\x86a\x02\xDC\x8Ca\x01`\x01Q\x86a\x0EKV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x18[\x86a\x02\xDC\x8Ca\x01\x80\x01Q\x86a\x0EKV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x18\x8A\x86a\x02\xDC\x8Ca\x01\xE0\x01Q\x86a\x0EKV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x18\xB9\x86a\x02\xDC\x8Ca\x02\0\x01Q\x86a\x0EKV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x18\xE8\x86a\x02\xDC\x8Ca\x02 \x01Q\x86a\x0EKV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\x17\x86a\x02\xDC\x8Ca\x02@\x01Q\x86a\x0EKV[\x95Pa\x194\x86a\x02\xDC\x8Ca\x01\xA0\x01Qa\x17\xA5\x8Ba\x02 \x01Qa\x1B\xBDV[\x95Pa\x19E\x86\x8Ba\x01\xC0\x01Qa\x0E\xAEV[\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\x19\x8B\x86a\x02\xDC\x8Ca\x02`\x01Q\x86a\x0EKV[\x95Pa\x19\x99\x88_\x01Qa\x1B\xBDV[\x94Pa\x19\xAD\x86a\x02\xDC\x89`\xC0\x01Q\x88a\x0EKV[\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\x19\xE1\x86a\x02\xDC\x89`\xE0\x01Q\x88a\x0EKV[\x95P\x80\x83\x86\t\x94Pa\x19\xFC\x86a\x02\xDC\x89a\x01\0\x01Q\x88a\x0EKV[\x95P\x80\x83\x86\t\x94Pa\x1A\x17\x86a\x02\xDC\x89a\x01 \x01Q\x88a\x0EKV[\x95P\x80\x83\x86\t\x94Pa\x1A2\x86a\x02\xDC\x89a\x01@\x01Q\x88a\x0EKV[\x9A\x99PPPPPPPPPPV[___Q` a!R_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\x1BLW`@Qc\xD6\xDB\xBB\r`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___Q` a!R_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\x1B\xB6W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x91\x90PV[__Q` a!R_9_Q\x90_R\x82\x15`\x01\x81\x14a\x1B\xE0W\x83\x82\x03\x92Pa\x1B\xB6V[P_\x93\x92PPPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1C\x08a\x1CIV[\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`\xE0\x01`@R\x80`\x07\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\x1C\x9FWa\x1C\x9Fa\x1CgV[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1C\x9FWa\x1C\x9Fa\x1CgV[_`@\x82\x84\x03\x12\x15a\x1C\xD9W__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1C\xFCWa\x1C\xFCa\x1CgV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1D%W__\xFD[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1DHWa\x1DHa\x1CgV[`@R\x80`\xE0\x84\x01\x85\x81\x11\x15a\x1D\\W__\xFD[\x84[\x81\x81\x10\x15a\x1DvW\x805\x83R` \x92\x83\x01\x92\x01a\x1D^V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\x1D\x92W__\xFD[a\x1D\x9Aa\x1C{V[\x90Pa\x1D\xA6\x83\x83a\x1C\xC9V[\x81Ra\x1D\xB5\x83`@\x84\x01a\x1C\xC9V[` \x82\x01Ra\x1D\xC7\x83`\x80\x84\x01a\x1C\xC9V[`@\x82\x01Ra\x1D\xD9\x83`\xC0\x84\x01a\x1C\xC9V[``\x82\x01Ra\x1D\xEC\x83a\x01\0\x84\x01a\x1C\xC9V[`\x80\x82\x01Ra\x1D\xFF\x83a\x01@\x84\x01a\x1C\xC9V[`\xA0\x82\x01Ra\x1E\x12\x83a\x01\x80\x84\x01a\x1C\xC9V[`\xC0\x82\x01Ra\x1E%\x83a\x01\xC0\x84\x01a\x1C\xC9V[`\xE0\x82\x01Ra\x1E8\x83a\x02\0\x84\x01a\x1C\xC9V[a\x01\0\x82\x01Ra\x1EL\x83a\x02@\x84\x01a\x1C\xC9V[a\x01 \x82\x01Ra\x1E`\x83a\x02\x80\x84\x01a\x1C\xC9V[a\x01@\x82\x01Ra\x1Et\x83a\x02\xC0\x84\x01a\x1C\xC9V[a\x01`\x82\x01Ra\x1E\x88\x83a\x03\0\x84\x01a\x1C\xC9V[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 W__\xFD[a\x05\0\x81\x12\x15a\x1F.W__\xFD[Pa\x1F7a\x1C\xA5V[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra\x1FR\x86`@\x87\x01a\x1C\xC9V[`@\x82\x01Ra\x1Fd\x86`\x80\x87\x01a\x1C\xC9V[``\x82\x01Ra\x1Fv\x86`\xC0\x87\x01a\x1C\xC9V[`\x80\x82\x01Ra\x1F\x89\x86a\x01\0\x87\x01a\x1C\xC9V[`\xA0\x82\x01Ra\x1F\x9C\x86a\x01@\x87\x01a\x1C\xC9V[`\xC0\x82\x01Ra\x1F\xAF\x86a\x01\x80\x87\x01a\x1C\xC9V[`\xE0\x82\x01Ra\x1F\xC2\x86a\x01\xC0\x87\x01a\x1C\xC9V[a\x01\0\x82\x01Ra\x1F\xD6\x86a\x02\0\x87\x01a\x1C\xC9V[a\x01 \x82\x01Ra\x1F\xEA\x86a\x02@\x87\x01a\x1C\xC9V[a\x01@\x82\x01Ra\x1F\xFE\x86a\x02\x80\x87\x01a\x1C\xC9V[a\x01`\x82\x01Ra \x12\x86a\x02\xC0\x87\x01a\x1C\xC9V[a\x01\x80\x82\x01Ra &\x86a\x03\0\x87\x01a\x1C\xC9V[a\x01\xA0\x82\x01Ra :\x86a\x03@\x87\x01a\x1C\xC9V[a\x01\xC0\x82\x01Ra N\x86a\x03\x80\x87\x01a\x1C\xC9V[a\x01\xE0\x82\x01Ra b\x86a\x03\xC0\x87\x01a\x1C\xC9V[a\x02\0\x82\x01Ra v\x86a\x04\0\x87\x01a\x1C\xC9V[a\x02 \x82\x01Ra \x8A\x86a\x04@\x87\x01a\x1C\xC9V[a\x02@\x82\x01Ra \x9E\x86a\x04\x80\x87\x01a\x1C\xC9V[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa \xCC\x85a\x05\0\x86\x01a\x1D\x16V[\x91Pa \xDC\x85a\x05\xE0\x86\x01a\x1D\x81V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a!\x18WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x92\x91PPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a!LWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
3024 );
3025 #[rustfmt::skip]
3031 #[allow(clippy::all)]
3032 pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3033 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\x004W_5`\xE0\x1C\x80c\xCESzw\x14a\08W[__\xFD[a\0Ka\0F6`\x04a\x1F\x0CV[a\0_V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0i\x82a\0\xD0V[a\0y\x83_[` \x02\x01Qa\x02\x0BV[a\0\x84\x83`\x01a\0oV[a\0\x8F\x83`\x02a\0oV[a\0\x9A\x83`\x03a\0oV[a\0\xA5\x83`\x04a\0oV[a\0\xB0\x83`\x05a\0oV[a\0\xBB\x83`\x06a\0oV[a\0\xC6\x84\x84\x84a\x02=V[\x90P[\x93\x92PPPV[\x80Qa\0\xDB\x90a\x041V[a\0\xE8\x81` \x01Qa\x041V[a\0\xF5\x81`@\x01Qa\x041V[a\x01\x02\x81``\x01Qa\x041V[a\x01\x0F\x81`\x80\x01Qa\x041V[a\x01\x1C\x81`\xA0\x01Qa\x041V[a\x01)\x81`\xC0\x01Qa\x041V[a\x016\x81`\xE0\x01Qa\x041V[a\x01D\x81a\x01\0\x01Qa\x041V[a\x01R\x81a\x01 \x01Qa\x041V[a\x01`\x81a\x01@\x01Qa\x041V[a\x01n\x81a\x01`\x01Qa\x041V[a\x01|\x81a\x01\x80\x01Qa\x041V[a\x01\x8A\x81a\x01\xA0\x01Qa\x02\x0BV[a\x01\x98\x81a\x01\xC0\x01Qa\x02\x0BV[a\x01\xA6\x81a\x01\xE0\x01Qa\x02\x0BV[a\x01\xB4\x81a\x02\0\x01Qa\x02\x0BV[a\x01\xC2\x81a\x02 \x01Qa\x02\x0BV[a\x01\xD0\x81a\x02@\x01Qa\x02\x0BV[a\x01\xDE\x81a\x02`\x01Qa\x02\x0BV[a\x01\xEC\x81a\x02\x80\x01Qa\x02\x0BV[a\x01\xFA\x81a\x02\xA0\x01Qa\x02\x0BV[a\x02\x08\x81a\x02\xC0\x01Qa\x02\x0BV[PV[_Q` a!R_9_Q\x90_R\x81\x10\x80a\x029W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x07\x14a\x02cW`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x02o\x85\x85\x85a\x04\xB0V[\x90P_a\x02~\x86_\x01Qa\n\x10V[\x90P_a\x02\x90\x82\x84`\xA0\x01Q\x88a\r\xEEV[\x90Pa\x02\xAD`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\xE1\x87a\x01`\x01Qa\x02\xDC\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x0EKV[a\x0E\xAEV[\x91P__a\x02\xF1\x8B\x88\x87\x8Ca\x0F\x15V[\x91P\x91Pa\x03\x02\x81a\x02\xDC\x84a\x11MV[\x92Pa\x03\x1B\x83a\x02\xDC\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x0EKV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a!R_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x03^\x85a\x02\xDC\x8Da\x01\x80\x01Q\x84a\x0EKV[\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\x04\x1F\x87\x82a\x04\x12\x89a\x11MV[a\x04\x1Aa\x11\xEAV[a\x12\xB7V[\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\x04jWPPPV[\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\x04\xABW`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[a\x04\xF0`@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!R_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R\x84Q\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``\x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`\x80\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP_\x82Ra\x07\xC0\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\n\x18a\x1B\xE9V[\x81b\x01\0\0\x03a\x0BWW`@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`\xE0\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0C\x97W`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\r\xD5W`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0E\x0F`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x0E\x19\x84\x84a\x13hV[\x80\x82Ra\x0E)\x90\x85\x90\x85\x90a\x13\xB9V[` \x82\x01R\x80Qa\x0E?\x90\x85\x90\x84\x90\x86\x90a\x14(V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Efa\x1C\rV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07Z\xFA\x90P\x80a\x0E\xA6W`@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\x0E\xC9a\x1C+V[\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\x0E\xA6W`@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\x0FH\x87\x87\x87\x87a\x15vV[\x90P_Q` a!R_9_Q\x90_R_a\x0Fd\x88\x87\x89a\x1A@V[\x90Pa\x0Fp\x81\x83a \xF9V[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x0F\x9C\x85a\x02\xDC\x8A_\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x0F\xC4\x86a\x02\xDC\x8A` \x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x0F\xEC\x86a\x02\xDC\x8A`@\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\x14\x86a\x02\xDC\x8A``\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x10<\x86a\x02\xDC\x8A`\x80\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x10d\x86a\x02\xDC\x8D`@\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\x8C\x86a\x02\xDC\x8D``\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xB4\x86a\x02\xDC\x8D`\x80\x01Q\x84a\x0EKV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xDC\x86a\x02\xDC\x8D`\xA0\x01Q\x84a\x0EKV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x11\x06\x87a\x02\xDC\x8B`\xA0\x01Q\x84a\x0EKV[\x96Pa\x11<a\x116`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x0EKV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x11tWP\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\x11\xB8\x91\x90a!2V[a\x11\xE2\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa \xF9V[\x90R\x92\x91PPV[a\x12\x11`@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\x13ZW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a!R_9_Q\x90_R\x90\x83\x80\x15a\x13\xA9W\x84\x93P_[\x82\x81\x10\x15a\x13\x9DW\x83\x85\x86\t\x94P`\x01\x01a\x13\x87V[P`\x01\x84\x03\x93Pa\x13\xB0V[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x13\xCAWP`\x01a\0\xC9V[\x81_\x03a\x13\xD8WP_a\0\xC9V[` \x84\x01Q_Q` a!R_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x14\x06W`\x01\x87\x03\x92Pa\x14\rV[`\x01\x84\x03\x92P[Pa\x14\x17\x82a\x1B+V[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a!R_9_Q\x90_R\x82\x82\x03a\x14\xA1W`\x01_[`\x07\x81\x10\x15a\x14\x96W\x81\x86\x03a\x14sW\x86\x81`\x07\x81\x10a\x14dWa\x14da \xE5V[` \x02\x01Q\x93PPPPa\x13`V[\x82\x80a\x14\x81Wa\x14\x81a!\x1EV[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x14BV[P_\x92PPPa\x13`V[a\x14\xA9a\x1CIV[`@\x87\x01Q`\x01`\xC0\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x07\x81\x10\x15a\x14\xEAW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x14\xBDV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x07\x81\x10\x15a\x15>W\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\x14\xFEV[PPPP\x80\x92PP_a\x15P\x83a\x1B+V[\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!R_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\x16\xE3\x87`\xA0\x01Q\x86a\x0EKV[\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\x17\xAA\x86a\x02\xDC\x8C`\xC0\x01Q\x88\x85a\x17\xA5\x91\x90a \xF9V[a\x0EKV[\x95Pa\x17\xC3\x86a\x02\xDC\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x0EKV[\x95Pa\x17\xDD\x86a\x02\xDC\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x0EKV[\x95Pa\x17\xF7\x86a\x02\xDC\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x0EKV[\x95Pa\x18\x11\x86a\x02\xDC\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x0EKV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x186\x86a\x02\xDC\x8Ca\x01`\x01Q\x86a\x0EKV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x18[\x86a\x02\xDC\x8Ca\x01\x80\x01Q\x86a\x0EKV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x18\x8A\x86a\x02\xDC\x8Ca\x01\xE0\x01Q\x86a\x0EKV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x18\xB9\x86a\x02\xDC\x8Ca\x02\0\x01Q\x86a\x0EKV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x18\xE8\x86a\x02\xDC\x8Ca\x02 \x01Q\x86a\x0EKV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\x17\x86a\x02\xDC\x8Ca\x02@\x01Q\x86a\x0EKV[\x95Pa\x194\x86a\x02\xDC\x8Ca\x01\xA0\x01Qa\x17\xA5\x8Ba\x02 \x01Qa\x1B\xBDV[\x95Pa\x19E\x86\x8Ba\x01\xC0\x01Qa\x0E\xAEV[\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\x19\x8B\x86a\x02\xDC\x8Ca\x02`\x01Q\x86a\x0EKV[\x95Pa\x19\x99\x88_\x01Qa\x1B\xBDV[\x94Pa\x19\xAD\x86a\x02\xDC\x89`\xC0\x01Q\x88a\x0EKV[\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\x19\xE1\x86a\x02\xDC\x89`\xE0\x01Q\x88a\x0EKV[\x95P\x80\x83\x86\t\x94Pa\x19\xFC\x86a\x02\xDC\x89a\x01\0\x01Q\x88a\x0EKV[\x95P\x80\x83\x86\t\x94Pa\x1A\x17\x86a\x02\xDC\x89a\x01 \x01Q\x88a\x0EKV[\x95P\x80\x83\x86\t\x94Pa\x1A2\x86a\x02\xDC\x89a\x01@\x01Q\x88a\x0EKV[\x9A\x99PPPPPPPPPPV[___Q` a!R_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\x1BLW`@Qc\xD6\xDB\xBB\r`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___Q` a!R_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\x1B\xB6W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x91\x90PV[__Q` a!R_9_Q\x90_R\x82\x15`\x01\x81\x14a\x1B\xE0W\x83\x82\x03\x92Pa\x1B\xB6V[P_\x93\x92PPPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1C\x08a\x1CIV[\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`\xE0\x01`@R\x80`\x07\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\x1C\x9FWa\x1C\x9Fa\x1CgV[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1C\x9FWa\x1C\x9Fa\x1CgV[_`@\x82\x84\x03\x12\x15a\x1C\xD9W__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1C\xFCWa\x1C\xFCa\x1CgV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1D%W__\xFD[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1DHWa\x1DHa\x1CgV[`@R\x80`\xE0\x84\x01\x85\x81\x11\x15a\x1D\\W__\xFD[\x84[\x81\x81\x10\x15a\x1DvW\x805\x83R` \x92\x83\x01\x92\x01a\x1D^V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\x1D\x92W__\xFD[a\x1D\x9Aa\x1C{V[\x90Pa\x1D\xA6\x83\x83a\x1C\xC9V[\x81Ra\x1D\xB5\x83`@\x84\x01a\x1C\xC9V[` \x82\x01Ra\x1D\xC7\x83`\x80\x84\x01a\x1C\xC9V[`@\x82\x01Ra\x1D\xD9\x83`\xC0\x84\x01a\x1C\xC9V[``\x82\x01Ra\x1D\xEC\x83a\x01\0\x84\x01a\x1C\xC9V[`\x80\x82\x01Ra\x1D\xFF\x83a\x01@\x84\x01a\x1C\xC9V[`\xA0\x82\x01Ra\x1E\x12\x83a\x01\x80\x84\x01a\x1C\xC9V[`\xC0\x82\x01Ra\x1E%\x83a\x01\xC0\x84\x01a\x1C\xC9V[`\xE0\x82\x01Ra\x1E8\x83a\x02\0\x84\x01a\x1C\xC9V[a\x01\0\x82\x01Ra\x1EL\x83a\x02@\x84\x01a\x1C\xC9V[a\x01 \x82\x01Ra\x1E`\x83a\x02\x80\x84\x01a\x1C\xC9V[a\x01@\x82\x01Ra\x1Et\x83a\x02\xC0\x84\x01a\x1C\xC9V[a\x01`\x82\x01Ra\x1E\x88\x83a\x03\0\x84\x01a\x1C\xC9V[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 W__\xFD[a\x05\0\x81\x12\x15a\x1F.W__\xFD[Pa\x1F7a\x1C\xA5V[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra\x1FR\x86`@\x87\x01a\x1C\xC9V[`@\x82\x01Ra\x1Fd\x86`\x80\x87\x01a\x1C\xC9V[``\x82\x01Ra\x1Fv\x86`\xC0\x87\x01a\x1C\xC9V[`\x80\x82\x01Ra\x1F\x89\x86a\x01\0\x87\x01a\x1C\xC9V[`\xA0\x82\x01Ra\x1F\x9C\x86a\x01@\x87\x01a\x1C\xC9V[`\xC0\x82\x01Ra\x1F\xAF\x86a\x01\x80\x87\x01a\x1C\xC9V[`\xE0\x82\x01Ra\x1F\xC2\x86a\x01\xC0\x87\x01a\x1C\xC9V[a\x01\0\x82\x01Ra\x1F\xD6\x86a\x02\0\x87\x01a\x1C\xC9V[a\x01 \x82\x01Ra\x1F\xEA\x86a\x02@\x87\x01a\x1C\xC9V[a\x01@\x82\x01Ra\x1F\xFE\x86a\x02\x80\x87\x01a\x1C\xC9V[a\x01`\x82\x01Ra \x12\x86a\x02\xC0\x87\x01a\x1C\xC9V[a\x01\x80\x82\x01Ra &\x86a\x03\0\x87\x01a\x1C\xC9V[a\x01\xA0\x82\x01Ra :\x86a\x03@\x87\x01a\x1C\xC9V[a\x01\xC0\x82\x01Ra N\x86a\x03\x80\x87\x01a\x1C\xC9V[a\x01\xE0\x82\x01Ra b\x86a\x03\xC0\x87\x01a\x1C\xC9V[a\x02\0\x82\x01Ra v\x86a\x04\0\x87\x01a\x1C\xC9V[a\x02 \x82\x01Ra \x8A\x86a\x04@\x87\x01a\x1C\xC9V[a\x02@\x82\x01Ra \x9E\x86a\x04\x80\x87\x01a\x1C\xC9V[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa \xCC\x85a\x05\0\x86\x01a\x1D\x16V[\x91Pa \xDC\x85a\x05\xE0\x86\x01a\x1D\x81V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a!\x18WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x92\x91PPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a!LWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
3034 );
3035 #[derive(serde::Serialize, serde::Deserialize)]
3036 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3037 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3042 #[derive(Clone)]
3043 pub struct BN254G1AddFailed;
3044 #[allow(
3045 non_camel_case_types,
3046 non_snake_case,
3047 clippy::pub_underscore_fields,
3048 clippy::style
3049 )]
3050 const _: () = {
3051 use alloy::sol_types as alloy_sol_types;
3052 #[doc(hidden)]
3053 type UnderlyingSolTuple<'a> = ();
3054 #[doc(hidden)]
3055 type UnderlyingRustTuple<'a> = ();
3056 #[cfg(test)]
3057 #[allow(dead_code, unreachable_patterns)]
3058 fn _type_assertion(
3059 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3060 ) {
3061 match _t {
3062 alloy_sol_types::private::AssertTypeEq::<
3063 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3064 >(_) => {}
3065 }
3066 }
3067 #[automatically_derived]
3068 #[doc(hidden)]
3069 impl ::core::convert::From<BN254G1AddFailed> for UnderlyingRustTuple<'_> {
3070 fn from(value: BN254G1AddFailed) -> Self {
3071 ()
3072 }
3073 }
3074 #[automatically_derived]
3075 #[doc(hidden)]
3076 impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254G1AddFailed {
3077 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3078 Self
3079 }
3080 }
3081 #[automatically_derived]
3082 impl alloy_sol_types::SolError for BN254G1AddFailed {
3083 type Parameters<'a> = UnderlyingSolTuple<'a>;
3084 type Token<'a> = <Self::Parameters<
3085 'a,
3086 > as alloy_sol_types::SolType>::Token<'a>;
3087 const SIGNATURE: &'static str = "BN254G1AddFailed()";
3088 const SELECTOR: [u8; 4] = [96u8, 85u8, 219u8, 106u8];
3089 #[inline]
3090 fn new<'a>(
3091 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3092 ) -> Self {
3093 tuple.into()
3094 }
3095 #[inline]
3096 fn tokenize(&self) -> Self::Token<'_> {
3097 ()
3098 }
3099 #[inline]
3100 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3101 <Self::Parameters<
3102 '_,
3103 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3104 .map(Self::new)
3105 }
3106 }
3107 };
3108 #[derive(serde::Serialize, serde::Deserialize)]
3109 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3110 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3115 #[derive(Clone)]
3116 pub struct BN254PairingProdFailed;
3117 #[allow(
3118 non_camel_case_types,
3119 non_snake_case,
3120 clippy::pub_underscore_fields,
3121 clippy::style
3122 )]
3123 const _: () = {
3124 use alloy::sol_types as alloy_sol_types;
3125 #[doc(hidden)]
3126 type UnderlyingSolTuple<'a> = ();
3127 #[doc(hidden)]
3128 type UnderlyingRustTuple<'a> = ();
3129 #[cfg(test)]
3130 #[allow(dead_code, unreachable_patterns)]
3131 fn _type_assertion(
3132 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3133 ) {
3134 match _t {
3135 alloy_sol_types::private::AssertTypeEq::<
3136 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3137 >(_) => {}
3138 }
3139 }
3140 #[automatically_derived]
3141 #[doc(hidden)]
3142 impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
3143 fn from(value: BN254PairingProdFailed) -> Self {
3144 ()
3145 }
3146 }
3147 #[automatically_derived]
3148 #[doc(hidden)]
3149 impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
3150 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3151 Self
3152 }
3153 }
3154 #[automatically_derived]
3155 impl alloy_sol_types::SolError for BN254PairingProdFailed {
3156 type Parameters<'a> = UnderlyingSolTuple<'a>;
3157 type Token<'a> = <Self::Parameters<
3158 'a,
3159 > as alloy_sol_types::SolType>::Token<'a>;
3160 const SIGNATURE: &'static str = "BN254PairingProdFailed()";
3161 const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
3162 #[inline]
3163 fn new<'a>(
3164 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3165 ) -> Self {
3166 tuple.into()
3167 }
3168 #[inline]
3169 fn tokenize(&self) -> Self::Token<'_> {
3170 ()
3171 }
3172 #[inline]
3173 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3174 <Self::Parameters<
3175 '_,
3176 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3177 .map(Self::new)
3178 }
3179 }
3180 };
3181 #[derive(serde::Serialize, serde::Deserialize)]
3182 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3183 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3188 #[derive(Clone)]
3189 pub struct BN254ScalarInvZero;
3190 #[allow(
3191 non_camel_case_types,
3192 non_snake_case,
3193 clippy::pub_underscore_fields,
3194 clippy::style
3195 )]
3196 const _: () = {
3197 use alloy::sol_types as alloy_sol_types;
3198 #[doc(hidden)]
3199 type UnderlyingSolTuple<'a> = ();
3200 #[doc(hidden)]
3201 type UnderlyingRustTuple<'a> = ();
3202 #[cfg(test)]
3203 #[allow(dead_code, unreachable_patterns)]
3204 fn _type_assertion(
3205 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3206 ) {
3207 match _t {
3208 alloy_sol_types::private::AssertTypeEq::<
3209 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3210 >(_) => {}
3211 }
3212 }
3213 #[automatically_derived]
3214 #[doc(hidden)]
3215 impl ::core::convert::From<BN254ScalarInvZero> for UnderlyingRustTuple<'_> {
3216 fn from(value: BN254ScalarInvZero) -> Self {
3217 ()
3218 }
3219 }
3220 #[automatically_derived]
3221 #[doc(hidden)]
3222 impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254ScalarInvZero {
3223 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3224 Self
3225 }
3226 }
3227 #[automatically_derived]
3228 impl alloy_sol_types::SolError for BN254ScalarInvZero {
3229 type Parameters<'a> = UnderlyingSolTuple<'a>;
3230 type Token<'a> = <Self::Parameters<
3231 'a,
3232 > as alloy_sol_types::SolType>::Token<'a>;
3233 const SIGNATURE: &'static str = "BN254ScalarInvZero()";
3234 const SELECTOR: [u8; 4] = [214u8, 219u8, 187u8, 13u8];
3235 #[inline]
3236 fn new<'a>(
3237 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3238 ) -> Self {
3239 tuple.into()
3240 }
3241 #[inline]
3242 fn tokenize(&self) -> Self::Token<'_> {
3243 ()
3244 }
3245 #[inline]
3246 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3247 <Self::Parameters<
3248 '_,
3249 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3250 .map(Self::new)
3251 }
3252 }
3253 };
3254 #[derive(serde::Serialize, serde::Deserialize)]
3255 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3256 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3261 #[derive(Clone)]
3262 pub struct BN254ScalarMulFailed;
3263 #[allow(
3264 non_camel_case_types,
3265 non_snake_case,
3266 clippy::pub_underscore_fields,
3267 clippy::style
3268 )]
3269 const _: () = {
3270 use alloy::sol_types as alloy_sol_types;
3271 #[doc(hidden)]
3272 type UnderlyingSolTuple<'a> = ();
3273 #[doc(hidden)]
3274 type UnderlyingRustTuple<'a> = ();
3275 #[cfg(test)]
3276 #[allow(dead_code, unreachable_patterns)]
3277 fn _type_assertion(
3278 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3279 ) {
3280 match _t {
3281 alloy_sol_types::private::AssertTypeEq::<
3282 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3283 >(_) => {}
3284 }
3285 }
3286 #[automatically_derived]
3287 #[doc(hidden)]
3288 impl ::core::convert::From<BN254ScalarMulFailed> for UnderlyingRustTuple<'_> {
3289 fn from(value: BN254ScalarMulFailed) -> Self {
3290 ()
3291 }
3292 }
3293 #[automatically_derived]
3294 #[doc(hidden)]
3295 impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254ScalarMulFailed {
3296 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3297 Self
3298 }
3299 }
3300 #[automatically_derived]
3301 impl alloy_sol_types::SolError for BN254ScalarMulFailed {
3302 type Parameters<'a> = UnderlyingSolTuple<'a>;
3303 type Token<'a> = <Self::Parameters<
3304 'a,
3305 > as alloy_sol_types::SolType>::Token<'a>;
3306 const SIGNATURE: &'static str = "BN254ScalarMulFailed()";
3307 const SELECTOR: [u8; 4] = [25u8, 219u8, 138u8, 104u8];
3308 #[inline]
3309 fn new<'a>(
3310 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3311 ) -> Self {
3312 tuple.into()
3313 }
3314 #[inline]
3315 fn tokenize(&self) -> Self::Token<'_> {
3316 ()
3317 }
3318 #[inline]
3319 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3320 <Self::Parameters<
3321 '_,
3322 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3323 .map(Self::new)
3324 }
3325 }
3326 };
3327 #[derive(serde::Serialize, serde::Deserialize)]
3328 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3329 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3334 #[derive(Clone)]
3335 pub struct InvalidG1;
3336 #[allow(
3337 non_camel_case_types,
3338 non_snake_case,
3339 clippy::pub_underscore_fields,
3340 clippy::style
3341 )]
3342 const _: () = {
3343 use alloy::sol_types as alloy_sol_types;
3344 #[doc(hidden)]
3345 type UnderlyingSolTuple<'a> = ();
3346 #[doc(hidden)]
3347 type UnderlyingRustTuple<'a> = ();
3348 #[cfg(test)]
3349 #[allow(dead_code, unreachable_patterns)]
3350 fn _type_assertion(
3351 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3352 ) {
3353 match _t {
3354 alloy_sol_types::private::AssertTypeEq::<
3355 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3356 >(_) => {}
3357 }
3358 }
3359 #[automatically_derived]
3360 #[doc(hidden)]
3361 impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3362 fn from(value: InvalidG1) -> Self {
3363 ()
3364 }
3365 }
3366 #[automatically_derived]
3367 #[doc(hidden)]
3368 impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3369 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3370 Self
3371 }
3372 }
3373 #[automatically_derived]
3374 impl alloy_sol_types::SolError for InvalidG1 {
3375 type Parameters<'a> = UnderlyingSolTuple<'a>;
3376 type Token<'a> = <Self::Parameters<
3377 'a,
3378 > as alloy_sol_types::SolType>::Token<'a>;
3379 const SIGNATURE: &'static str = "InvalidG1()";
3380 const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3381 #[inline]
3382 fn new<'a>(
3383 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3384 ) -> Self {
3385 tuple.into()
3386 }
3387 #[inline]
3388 fn tokenize(&self) -> Self::Token<'_> {
3389 ()
3390 }
3391 #[inline]
3392 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3393 <Self::Parameters<
3394 '_,
3395 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3396 .map(Self::new)
3397 }
3398 }
3399 };
3400 #[derive(serde::Serialize, serde::Deserialize)]
3401 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3402 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3407 #[derive(Clone)]
3408 pub struct InvalidPlonkArgs;
3409 #[allow(
3410 non_camel_case_types,
3411 non_snake_case,
3412 clippy::pub_underscore_fields,
3413 clippy::style
3414 )]
3415 const _: () = {
3416 use alloy::sol_types as alloy_sol_types;
3417 #[doc(hidden)]
3418 type UnderlyingSolTuple<'a> = ();
3419 #[doc(hidden)]
3420 type UnderlyingRustTuple<'a> = ();
3421 #[cfg(test)]
3422 #[allow(dead_code, unreachable_patterns)]
3423 fn _type_assertion(
3424 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3425 ) {
3426 match _t {
3427 alloy_sol_types::private::AssertTypeEq::<
3428 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3429 >(_) => {}
3430 }
3431 }
3432 #[automatically_derived]
3433 #[doc(hidden)]
3434 impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
3435 fn from(value: InvalidPlonkArgs) -> Self {
3436 ()
3437 }
3438 }
3439 #[automatically_derived]
3440 #[doc(hidden)]
3441 impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
3442 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3443 Self
3444 }
3445 }
3446 #[automatically_derived]
3447 impl alloy_sol_types::SolError for InvalidPlonkArgs {
3448 type Parameters<'a> = UnderlyingSolTuple<'a>;
3449 type Token<'a> = <Self::Parameters<
3450 'a,
3451 > as alloy_sol_types::SolType>::Token<'a>;
3452 const SIGNATURE: &'static str = "InvalidPlonkArgs()";
3453 const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
3454 #[inline]
3455 fn new<'a>(
3456 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3457 ) -> Self {
3458 tuple.into()
3459 }
3460 #[inline]
3461 fn tokenize(&self) -> Self::Token<'_> {
3462 ()
3463 }
3464 #[inline]
3465 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3466 <Self::Parameters<
3467 '_,
3468 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3469 .map(Self::new)
3470 }
3471 }
3472 };
3473 #[derive(serde::Serialize, serde::Deserialize)]
3474 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3475 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3480 #[derive(Clone)]
3481 pub struct InvalidScalar;
3482 #[allow(
3483 non_camel_case_types,
3484 non_snake_case,
3485 clippy::pub_underscore_fields,
3486 clippy::style
3487 )]
3488 const _: () = {
3489 use alloy::sol_types as alloy_sol_types;
3490 #[doc(hidden)]
3491 type UnderlyingSolTuple<'a> = ();
3492 #[doc(hidden)]
3493 type UnderlyingRustTuple<'a> = ();
3494 #[cfg(test)]
3495 #[allow(dead_code, unreachable_patterns)]
3496 fn _type_assertion(
3497 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3498 ) {
3499 match _t {
3500 alloy_sol_types::private::AssertTypeEq::<
3501 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3502 >(_) => {}
3503 }
3504 }
3505 #[automatically_derived]
3506 #[doc(hidden)]
3507 impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
3508 fn from(value: InvalidScalar) -> Self {
3509 ()
3510 }
3511 }
3512 #[automatically_derived]
3513 #[doc(hidden)]
3514 impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
3515 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3516 Self
3517 }
3518 }
3519 #[automatically_derived]
3520 impl alloy_sol_types::SolError for InvalidScalar {
3521 type Parameters<'a> = UnderlyingSolTuple<'a>;
3522 type Token<'a> = <Self::Parameters<
3523 'a,
3524 > as alloy_sol_types::SolType>::Token<'a>;
3525 const SIGNATURE: &'static str = "InvalidScalar()";
3526 const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
3527 #[inline]
3528 fn new<'a>(
3529 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3530 ) -> Self {
3531 tuple.into()
3532 }
3533 #[inline]
3534 fn tokenize(&self) -> Self::Token<'_> {
3535 ()
3536 }
3537 #[inline]
3538 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3539 <Self::Parameters<
3540 '_,
3541 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3542 .map(Self::new)
3543 }
3544 }
3545 };
3546 #[derive(serde::Serialize, serde::Deserialize)]
3547 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3548 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3553 #[derive(Clone)]
3554 pub struct PowPrecompileFailed;
3555 #[allow(
3556 non_camel_case_types,
3557 non_snake_case,
3558 clippy::pub_underscore_fields,
3559 clippy::style
3560 )]
3561 const _: () = {
3562 use alloy::sol_types as alloy_sol_types;
3563 #[doc(hidden)]
3564 type UnderlyingSolTuple<'a> = ();
3565 #[doc(hidden)]
3566 type UnderlyingRustTuple<'a> = ();
3567 #[cfg(test)]
3568 #[allow(dead_code, unreachable_patterns)]
3569 fn _type_assertion(
3570 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3571 ) {
3572 match _t {
3573 alloy_sol_types::private::AssertTypeEq::<
3574 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3575 >(_) => {}
3576 }
3577 }
3578 #[automatically_derived]
3579 #[doc(hidden)]
3580 impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
3581 fn from(value: PowPrecompileFailed) -> Self {
3582 ()
3583 }
3584 }
3585 #[automatically_derived]
3586 #[doc(hidden)]
3587 impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
3588 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3589 Self
3590 }
3591 }
3592 #[automatically_derived]
3593 impl alloy_sol_types::SolError for PowPrecompileFailed {
3594 type Parameters<'a> = UnderlyingSolTuple<'a>;
3595 type Token<'a> = <Self::Parameters<
3596 'a,
3597 > as alloy_sol_types::SolType>::Token<'a>;
3598 const SIGNATURE: &'static str = "PowPrecompileFailed()";
3599 const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
3600 #[inline]
3601 fn new<'a>(
3602 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3603 ) -> Self {
3604 tuple.into()
3605 }
3606 #[inline]
3607 fn tokenize(&self) -> Self::Token<'_> {
3608 ()
3609 }
3610 #[inline]
3611 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3612 <Self::Parameters<
3613 '_,
3614 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3615 .map(Self::new)
3616 }
3617 }
3618 };
3619 #[derive(serde::Serialize, serde::Deserialize)]
3620 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3621 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3626 #[derive(Clone)]
3627 pub struct UnsupportedDegree;
3628 #[allow(
3629 non_camel_case_types,
3630 non_snake_case,
3631 clippy::pub_underscore_fields,
3632 clippy::style
3633 )]
3634 const _: () = {
3635 use alloy::sol_types as alloy_sol_types;
3636 #[doc(hidden)]
3637 type UnderlyingSolTuple<'a> = ();
3638 #[doc(hidden)]
3639 type UnderlyingRustTuple<'a> = ();
3640 #[cfg(test)]
3641 #[allow(dead_code, unreachable_patterns)]
3642 fn _type_assertion(
3643 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3644 ) {
3645 match _t {
3646 alloy_sol_types::private::AssertTypeEq::<
3647 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3648 >(_) => {}
3649 }
3650 }
3651 #[automatically_derived]
3652 #[doc(hidden)]
3653 impl ::core::convert::From<UnsupportedDegree> for UnderlyingRustTuple<'_> {
3654 fn from(value: UnsupportedDegree) -> Self {
3655 ()
3656 }
3657 }
3658 #[automatically_derived]
3659 #[doc(hidden)]
3660 impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
3661 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3662 Self
3663 }
3664 }
3665 #[automatically_derived]
3666 impl alloy_sol_types::SolError for UnsupportedDegree {
3667 type Parameters<'a> = UnderlyingSolTuple<'a>;
3668 type Token<'a> = <Self::Parameters<
3669 'a,
3670 > as alloy_sol_types::SolType>::Token<'a>;
3671 const SIGNATURE: &'static str = "UnsupportedDegree()";
3672 const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
3673 #[inline]
3674 fn new<'a>(
3675 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3676 ) -> Self {
3677 tuple.into()
3678 }
3679 #[inline]
3680 fn tokenize(&self) -> Self::Token<'_> {
3681 ()
3682 }
3683 #[inline]
3684 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3685 <Self::Parameters<
3686 '_,
3687 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3688 .map(Self::new)
3689 }
3690 }
3691 };
3692 #[derive(serde::Serialize, serde::Deserialize)]
3693 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3694 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3699 #[derive(Clone)]
3700 pub struct WrongPlonkVK;
3701 #[allow(
3702 non_camel_case_types,
3703 non_snake_case,
3704 clippy::pub_underscore_fields,
3705 clippy::style
3706 )]
3707 const _: () = {
3708 use alloy::sol_types as alloy_sol_types;
3709 #[doc(hidden)]
3710 type UnderlyingSolTuple<'a> = ();
3711 #[doc(hidden)]
3712 type UnderlyingRustTuple<'a> = ();
3713 #[cfg(test)]
3714 #[allow(dead_code, unreachable_patterns)]
3715 fn _type_assertion(
3716 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3717 ) {
3718 match _t {
3719 alloy_sol_types::private::AssertTypeEq::<
3720 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3721 >(_) => {}
3722 }
3723 }
3724 #[automatically_derived]
3725 #[doc(hidden)]
3726 impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
3727 fn from(value: WrongPlonkVK) -> Self {
3728 ()
3729 }
3730 }
3731 #[automatically_derived]
3732 #[doc(hidden)]
3733 impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
3734 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3735 Self
3736 }
3737 }
3738 #[automatically_derived]
3739 impl alloy_sol_types::SolError for WrongPlonkVK {
3740 type Parameters<'a> = UnderlyingSolTuple<'a>;
3741 type Token<'a> = <Self::Parameters<
3742 'a,
3743 > as alloy_sol_types::SolType>::Token<'a>;
3744 const SIGNATURE: &'static str = "WrongPlonkVK()";
3745 const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
3746 #[inline]
3747 fn new<'a>(
3748 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3749 ) -> Self {
3750 tuple.into()
3751 }
3752 #[inline]
3753 fn tokenize(&self) -> Self::Token<'_> {
3754 ()
3755 }
3756 #[inline]
3757 fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3758 <Self::Parameters<
3759 '_,
3760 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3761 .map(Self::new)
3762 }
3763 }
3764 };
3765 #[derive(serde::Serialize, serde::Deserialize)]
3766 #[derive()]
3767 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3772 #[derive(Clone)]
3773 pub struct verifyCall {
3774 #[allow(missing_docs)]
3775 pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3776 #[allow(missing_docs)]
3777 pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3778 #[allow(missing_docs)]
3779 pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3780 }
3781 #[derive(serde::Serialize, serde::Deserialize)]
3782 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3783 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3785 #[derive(Clone)]
3786 pub struct verifyReturn {
3787 #[allow(missing_docs)]
3788 pub _0: bool,
3789 }
3790 #[allow(
3791 non_camel_case_types,
3792 non_snake_case,
3793 clippy::pub_underscore_fields,
3794 clippy::style
3795 )]
3796 const _: () = {
3797 use alloy::sol_types as alloy_sol_types;
3798 {
3799 #[doc(hidden)]
3800 type UnderlyingSolTuple<'a> = (
3801 IPlonkVerifier::VerifyingKey,
3802 alloy::sol_types::sol_data::FixedArray<
3803 alloy::sol_types::sol_data::Uint<256>,
3804 7usize,
3805 >,
3806 IPlonkVerifier::PlonkProof,
3807 );
3808 #[doc(hidden)]
3809 type UnderlyingRustTuple<'a> = (
3810 <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3811 [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3812 <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3813 );
3814 #[cfg(test)]
3815 #[allow(dead_code, unreachable_patterns)]
3816 fn _type_assertion(
3817 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3818 ) {
3819 match _t {
3820 alloy_sol_types::private::AssertTypeEq::<
3821 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3822 >(_) => {}
3823 }
3824 }
3825 #[automatically_derived]
3826 #[doc(hidden)]
3827 impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
3828 fn from(value: verifyCall) -> Self {
3829 (value.verifyingKey, value.publicInput, value.proof)
3830 }
3831 }
3832 #[automatically_derived]
3833 #[doc(hidden)]
3834 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
3835 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3836 Self {
3837 verifyingKey: tuple.0,
3838 publicInput: tuple.1,
3839 proof: tuple.2,
3840 }
3841 }
3842 }
3843 }
3844 {
3845 #[doc(hidden)]
3846 type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
3847 #[doc(hidden)]
3848 type UnderlyingRustTuple<'a> = (bool,);
3849 #[cfg(test)]
3850 #[allow(dead_code, unreachable_patterns)]
3851 fn _type_assertion(
3852 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3853 ) {
3854 match _t {
3855 alloy_sol_types::private::AssertTypeEq::<
3856 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3857 >(_) => {}
3858 }
3859 }
3860 #[automatically_derived]
3861 #[doc(hidden)]
3862 impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
3863 fn from(value: verifyReturn) -> Self {
3864 (value._0,)
3865 }
3866 }
3867 #[automatically_derived]
3868 #[doc(hidden)]
3869 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
3870 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3871 Self { _0: tuple.0 }
3872 }
3873 }
3874 }
3875 #[automatically_derived]
3876 impl alloy_sol_types::SolCall for verifyCall {
3877 type Parameters<'a> = (
3878 IPlonkVerifier::VerifyingKey,
3879 alloy::sol_types::sol_data::FixedArray<
3880 alloy::sol_types::sol_data::Uint<256>,
3881 7usize,
3882 >,
3883 IPlonkVerifier::PlonkProof,
3884 );
3885 type Token<'a> = <Self::Parameters<
3886 'a,
3887 > as alloy_sol_types::SolType>::Token<'a>;
3888 type Return = bool;
3889 type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
3890 type ReturnToken<'a> = <Self::ReturnTuple<
3891 'a,
3892 > as alloy_sol_types::SolType>::Token<'a>;
3893 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[7],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
3894 const SELECTOR: [u8; 4] = [119u8, 174u8, 63u8, 7u8];
3895 #[inline]
3896 fn new<'a>(
3897 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3898 ) -> Self {
3899 tuple.into()
3900 }
3901 #[inline]
3902 fn tokenize(&self) -> Self::Token<'_> {
3903 (
3904 <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
3905 &self.verifyingKey,
3906 ),
3907 <alloy::sol_types::sol_data::FixedArray<
3908 alloy::sol_types::sol_data::Uint<256>,
3909 7usize,
3910 > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
3911 <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
3912 &self.proof,
3913 ),
3914 )
3915 }
3916 #[inline]
3917 fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3918 (
3919 <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
3920 ret,
3921 ),
3922 )
3923 }
3924 #[inline]
3925 fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3926 <Self::ReturnTuple<
3927 '_,
3928 > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3929 .map(|r| {
3930 let r: verifyReturn = r.into();
3931 r._0
3932 })
3933 }
3934 #[inline]
3935 fn abi_decode_returns_validate(
3936 data: &[u8],
3937 ) -> alloy_sol_types::Result<Self::Return> {
3938 <Self::ReturnTuple<
3939 '_,
3940 > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3941 .map(|r| {
3942 let r: verifyReturn = r.into();
3943 r._0
3944 })
3945 }
3946 }
3947 };
3948 #[derive(serde::Serialize, serde::Deserialize)]
3950 #[derive()]
3951 pub enum PlonkVerifierCalls {
3952 #[allow(missing_docs)]
3953 verify(verifyCall),
3954 }
3955 #[automatically_derived]
3956 impl PlonkVerifierCalls {
3957 pub const SELECTORS: &'static [[u8; 4usize]] = &[[119u8, 174u8, 63u8, 7u8]];
3964 }
3965 #[automatically_derived]
3966 impl alloy_sol_types::SolInterface for PlonkVerifierCalls {
3967 const NAME: &'static str = "PlonkVerifierCalls";
3968 const MIN_DATA_LENGTH: usize = 672usize;
3969 const COUNT: usize = 1usize;
3970 #[inline]
3971 fn selector(&self) -> [u8; 4] {
3972 match self {
3973 Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
3974 }
3975 }
3976 #[inline]
3977 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3978 Self::SELECTORS.get(i).copied()
3979 }
3980 #[inline]
3981 fn valid_selector(selector: [u8; 4]) -> bool {
3982 Self::SELECTORS.binary_search(&selector).is_ok()
3983 }
3984 #[inline]
3985 #[allow(non_snake_case)]
3986 fn abi_decode_raw(
3987 selector: [u8; 4],
3988 data: &[u8],
3989 ) -> alloy_sol_types::Result<Self> {
3990 static DECODE_SHIMS: &[fn(
3991 &[u8],
3992 ) -> alloy_sol_types::Result<PlonkVerifierCalls>] = &[
3993 {
3994 fn verify(
3995 data: &[u8],
3996 ) -> alloy_sol_types::Result<PlonkVerifierCalls> {
3997 <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
3998 .map(PlonkVerifierCalls::verify)
3999 }
4000 verify
4001 },
4002 ];
4003 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
4004 return Err(
4005 alloy_sol_types::Error::unknown_selector(
4006 <Self as alloy_sol_types::SolInterface>::NAME,
4007 selector,
4008 ),
4009 );
4010 };
4011 DECODE_SHIMS[idx](data)
4012 }
4013 #[inline]
4014 #[allow(non_snake_case)]
4015 fn abi_decode_raw_validate(
4016 selector: [u8; 4],
4017 data: &[u8],
4018 ) -> alloy_sol_types::Result<Self> {
4019 static DECODE_VALIDATE_SHIMS: &[fn(
4020 &[u8],
4021 ) -> alloy_sol_types::Result<PlonkVerifierCalls>] = &[
4022 {
4023 fn verify(
4024 data: &[u8],
4025 ) -> alloy_sol_types::Result<PlonkVerifierCalls> {
4026 <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
4027 data,
4028 )
4029 .map(PlonkVerifierCalls::verify)
4030 }
4031 verify
4032 },
4033 ];
4034 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
4035 return Err(
4036 alloy_sol_types::Error::unknown_selector(
4037 <Self as alloy_sol_types::SolInterface>::NAME,
4038 selector,
4039 ),
4040 );
4041 };
4042 DECODE_VALIDATE_SHIMS[idx](data)
4043 }
4044 #[inline]
4045 fn abi_encoded_size(&self) -> usize {
4046 match self {
4047 Self::verify(inner) => {
4048 <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4049 }
4050 }
4051 }
4052 #[inline]
4053 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
4054 match self {
4055 Self::verify(inner) => {
4056 <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4057 }
4058 }
4059 }
4060 }
4061 #[derive(serde::Serialize, serde::Deserialize)]
4063 #[derive(Debug, PartialEq, Eq, Hash)]
4064 pub enum PlonkVerifierErrors {
4065 #[allow(missing_docs)]
4066 BN254G1AddFailed(BN254G1AddFailed),
4067 #[allow(missing_docs)]
4068 BN254PairingProdFailed(BN254PairingProdFailed),
4069 #[allow(missing_docs)]
4070 BN254ScalarInvZero(BN254ScalarInvZero),
4071 #[allow(missing_docs)]
4072 BN254ScalarMulFailed(BN254ScalarMulFailed),
4073 #[allow(missing_docs)]
4074 InvalidG1(InvalidG1),
4075 #[allow(missing_docs)]
4076 InvalidPlonkArgs(InvalidPlonkArgs),
4077 #[allow(missing_docs)]
4078 InvalidScalar(InvalidScalar),
4079 #[allow(missing_docs)]
4080 PowPrecompileFailed(PowPrecompileFailed),
4081 #[allow(missing_docs)]
4082 UnsupportedDegree(UnsupportedDegree),
4083 #[allow(missing_docs)]
4084 WrongPlonkVK(WrongPlonkVK),
4085 }
4086 #[automatically_derived]
4087 impl PlonkVerifierErrors {
4088 pub const SELECTORS: &'static [[u8; 4usize]] = &[
4095 [5u8, 176u8, 92u8, 204u8],
4096 [25u8, 219u8, 138u8, 104u8],
4097 [50u8, 116u8, 250u8, 100u8],
4098 [65u8, 245u8, 59u8, 18u8],
4099 [96u8, 85u8, 219u8, 106u8],
4100 [158u8, 120u8, 209u8, 76u8],
4101 [194u8, 6u8, 51u8, 79u8],
4102 [214u8, 219u8, 187u8, 13u8],
4103 [226u8, 239u8, 9u8, 229u8],
4104 [253u8, 154u8, 45u8, 27u8],
4105 ];
4106 }
4107 #[automatically_derived]
4108 impl alloy_sol_types::SolInterface for PlonkVerifierErrors {
4109 const NAME: &'static str = "PlonkVerifierErrors";
4110 const MIN_DATA_LENGTH: usize = 0usize;
4111 const COUNT: usize = 10usize;
4112 #[inline]
4113 fn selector(&self) -> [u8; 4] {
4114 match self {
4115 Self::BN254G1AddFailed(_) => {
4116 <BN254G1AddFailed as alloy_sol_types::SolError>::SELECTOR
4117 }
4118 Self::BN254PairingProdFailed(_) => {
4119 <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
4120 }
4121 Self::BN254ScalarInvZero(_) => {
4122 <BN254ScalarInvZero as alloy_sol_types::SolError>::SELECTOR
4123 }
4124 Self::BN254ScalarMulFailed(_) => {
4125 <BN254ScalarMulFailed as alloy_sol_types::SolError>::SELECTOR
4126 }
4127 Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
4128 Self::InvalidPlonkArgs(_) => {
4129 <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
4130 }
4131 Self::InvalidScalar(_) => {
4132 <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
4133 }
4134 Self::PowPrecompileFailed(_) => {
4135 <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
4136 }
4137 Self::UnsupportedDegree(_) => {
4138 <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
4139 }
4140 Self::WrongPlonkVK(_) => {
4141 <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR
4142 }
4143 }
4144 }
4145 #[inline]
4146 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
4147 Self::SELECTORS.get(i).copied()
4148 }
4149 #[inline]
4150 fn valid_selector(selector: [u8; 4]) -> bool {
4151 Self::SELECTORS.binary_search(&selector).is_ok()
4152 }
4153 #[inline]
4154 #[allow(non_snake_case)]
4155 fn abi_decode_raw(
4156 selector: [u8; 4],
4157 data: &[u8],
4158 ) -> alloy_sol_types::Result<Self> {
4159 static DECODE_SHIMS: &[fn(
4160 &[u8],
4161 ) -> alloy_sol_types::Result<PlonkVerifierErrors>] = &[
4162 {
4163 fn InvalidScalar(
4164 data: &[u8],
4165 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4166 <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
4167 data,
4168 )
4169 .map(PlonkVerifierErrors::InvalidScalar)
4170 }
4171 InvalidScalar
4172 },
4173 {
4174 fn BN254ScalarMulFailed(
4175 data: &[u8],
4176 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4177 <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_decode_raw(
4178 data,
4179 )
4180 .map(PlonkVerifierErrors::BN254ScalarMulFailed)
4181 }
4182 BN254ScalarMulFailed
4183 },
4184 {
4185 fn PowPrecompileFailed(
4186 data: &[u8],
4187 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4188 <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
4189 data,
4190 )
4191 .map(PlonkVerifierErrors::PowPrecompileFailed)
4192 }
4193 PowPrecompileFailed
4194 },
4195 {
4196 fn WrongPlonkVK(
4197 data: &[u8],
4198 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4199 <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(data)
4200 .map(PlonkVerifierErrors::WrongPlonkVK)
4201 }
4202 WrongPlonkVK
4203 },
4204 {
4205 fn BN254G1AddFailed(
4206 data: &[u8],
4207 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4208 <BN254G1AddFailed as alloy_sol_types::SolError>::abi_decode_raw(
4209 data,
4210 )
4211 .map(PlonkVerifierErrors::BN254G1AddFailed)
4212 }
4213 BN254G1AddFailed
4214 },
4215 {
4216 fn InvalidG1(
4217 data: &[u8],
4218 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4219 <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
4220 .map(PlonkVerifierErrors::InvalidG1)
4221 }
4222 InvalidG1
4223 },
4224 {
4225 fn BN254PairingProdFailed(
4226 data: &[u8],
4227 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4228 <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
4229 data,
4230 )
4231 .map(PlonkVerifierErrors::BN254PairingProdFailed)
4232 }
4233 BN254PairingProdFailed
4234 },
4235 {
4236 fn BN254ScalarInvZero(
4237 data: &[u8],
4238 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4239 <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_decode_raw(
4240 data,
4241 )
4242 .map(PlonkVerifierErrors::BN254ScalarInvZero)
4243 }
4244 BN254ScalarInvZero
4245 },
4246 {
4247 fn UnsupportedDegree(
4248 data: &[u8],
4249 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4250 <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
4251 data,
4252 )
4253 .map(PlonkVerifierErrors::UnsupportedDegree)
4254 }
4255 UnsupportedDegree
4256 },
4257 {
4258 fn InvalidPlonkArgs(
4259 data: &[u8],
4260 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4261 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
4262 data,
4263 )
4264 .map(PlonkVerifierErrors::InvalidPlonkArgs)
4265 }
4266 InvalidPlonkArgs
4267 },
4268 ];
4269 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
4270 return Err(
4271 alloy_sol_types::Error::unknown_selector(
4272 <Self as alloy_sol_types::SolInterface>::NAME,
4273 selector,
4274 ),
4275 );
4276 };
4277 DECODE_SHIMS[idx](data)
4278 }
4279 #[inline]
4280 #[allow(non_snake_case)]
4281 fn abi_decode_raw_validate(
4282 selector: [u8; 4],
4283 data: &[u8],
4284 ) -> alloy_sol_types::Result<Self> {
4285 static DECODE_VALIDATE_SHIMS: &[fn(
4286 &[u8],
4287 ) -> alloy_sol_types::Result<PlonkVerifierErrors>] = &[
4288 {
4289 fn InvalidScalar(
4290 data: &[u8],
4291 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4292 <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
4293 data,
4294 )
4295 .map(PlonkVerifierErrors::InvalidScalar)
4296 }
4297 InvalidScalar
4298 },
4299 {
4300 fn BN254ScalarMulFailed(
4301 data: &[u8],
4302 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4303 <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
4304 data,
4305 )
4306 .map(PlonkVerifierErrors::BN254ScalarMulFailed)
4307 }
4308 BN254ScalarMulFailed
4309 },
4310 {
4311 fn PowPrecompileFailed(
4312 data: &[u8],
4313 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4314 <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
4315 data,
4316 )
4317 .map(PlonkVerifierErrors::PowPrecompileFailed)
4318 }
4319 PowPrecompileFailed
4320 },
4321 {
4322 fn WrongPlonkVK(
4323 data: &[u8],
4324 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4325 <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
4326 data,
4327 )
4328 .map(PlonkVerifierErrors::WrongPlonkVK)
4329 }
4330 WrongPlonkVK
4331 },
4332 {
4333 fn BN254G1AddFailed(
4334 data: &[u8],
4335 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4336 <BN254G1AddFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
4337 data,
4338 )
4339 .map(PlonkVerifierErrors::BN254G1AddFailed)
4340 }
4341 BN254G1AddFailed
4342 },
4343 {
4344 fn InvalidG1(
4345 data: &[u8],
4346 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4347 <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
4348 data,
4349 )
4350 .map(PlonkVerifierErrors::InvalidG1)
4351 }
4352 InvalidG1
4353 },
4354 {
4355 fn BN254PairingProdFailed(
4356 data: &[u8],
4357 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4358 <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
4359 data,
4360 )
4361 .map(PlonkVerifierErrors::BN254PairingProdFailed)
4362 }
4363 BN254PairingProdFailed
4364 },
4365 {
4366 fn BN254ScalarInvZero(
4367 data: &[u8],
4368 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4369 <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
4370 data,
4371 )
4372 .map(PlonkVerifierErrors::BN254ScalarInvZero)
4373 }
4374 BN254ScalarInvZero
4375 },
4376 {
4377 fn UnsupportedDegree(
4378 data: &[u8],
4379 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4380 <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw_validate(
4381 data,
4382 )
4383 .map(PlonkVerifierErrors::UnsupportedDegree)
4384 }
4385 UnsupportedDegree
4386 },
4387 {
4388 fn InvalidPlonkArgs(
4389 data: &[u8],
4390 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
4391 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
4392 data,
4393 )
4394 .map(PlonkVerifierErrors::InvalidPlonkArgs)
4395 }
4396 InvalidPlonkArgs
4397 },
4398 ];
4399 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
4400 return Err(
4401 alloy_sol_types::Error::unknown_selector(
4402 <Self as alloy_sol_types::SolInterface>::NAME,
4403 selector,
4404 ),
4405 );
4406 };
4407 DECODE_VALIDATE_SHIMS[idx](data)
4408 }
4409 #[inline]
4410 fn abi_encoded_size(&self) -> usize {
4411 match self {
4412 Self::BN254G1AddFailed(inner) => {
4413 <BN254G1AddFailed as alloy_sol_types::SolError>::abi_encoded_size(
4414 inner,
4415 )
4416 }
4417 Self::BN254PairingProdFailed(inner) => {
4418 <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
4419 inner,
4420 )
4421 }
4422 Self::BN254ScalarInvZero(inner) => {
4423 <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_encoded_size(
4424 inner,
4425 )
4426 }
4427 Self::BN254ScalarMulFailed(inner) => {
4428 <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_encoded_size(
4429 inner,
4430 )
4431 }
4432 Self::InvalidG1(inner) => {
4433 <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
4434 }
4435 Self::InvalidPlonkArgs(inner) => {
4436 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(
4437 inner,
4438 )
4439 }
4440 Self::InvalidScalar(inner) => {
4441 <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
4442 }
4443 Self::PowPrecompileFailed(inner) => {
4444 <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
4445 inner,
4446 )
4447 }
4448 Self::UnsupportedDegree(inner) => {
4449 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(
4450 inner,
4451 )
4452 }
4453 Self::WrongPlonkVK(inner) => {
4454 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
4455 }
4456 }
4457 }
4458 #[inline]
4459 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
4460 match self {
4461 Self::BN254G1AddFailed(inner) => {
4462 <BN254G1AddFailed as alloy_sol_types::SolError>::abi_encode_raw(
4463 inner,
4464 out,
4465 )
4466 }
4467 Self::BN254PairingProdFailed(inner) => {
4468 <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
4469 inner,
4470 out,
4471 )
4472 }
4473 Self::BN254ScalarInvZero(inner) => {
4474 <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_encode_raw(
4475 inner,
4476 out,
4477 )
4478 }
4479 Self::BN254ScalarMulFailed(inner) => {
4480 <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_encode_raw(
4481 inner,
4482 out,
4483 )
4484 }
4485 Self::InvalidG1(inner) => {
4486 <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
4487 }
4488 Self::InvalidPlonkArgs(inner) => {
4489 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(
4490 inner,
4491 out,
4492 )
4493 }
4494 Self::InvalidScalar(inner) => {
4495 <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
4496 inner,
4497 out,
4498 )
4499 }
4500 Self::PowPrecompileFailed(inner) => {
4501 <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
4502 inner,
4503 out,
4504 )
4505 }
4506 Self::UnsupportedDegree(inner) => {
4507 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(
4508 inner,
4509 out,
4510 )
4511 }
4512 Self::WrongPlonkVK(inner) => {
4513 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(
4514 inner,
4515 out,
4516 )
4517 }
4518 }
4519 }
4520 }
4521 use alloy::contract as alloy_contract;
4522 #[inline]
4526 pub const fn new<
4527 P: alloy_contract::private::Provider<N>,
4528 N: alloy_contract::private::Network,
4529 >(
4530 address: alloy_sol_types::private::Address,
4531 provider: P,
4532 ) -> PlonkVerifierInstance<P, N> {
4533 PlonkVerifierInstance::<P, N>::new(address, provider)
4534 }
4535 #[inline]
4541 pub fn deploy<
4542 P: alloy_contract::private::Provider<N>,
4543 N: alloy_contract::private::Network,
4544 >(
4545 provider: P,
4546 ) -> impl ::core::future::Future<
4547 Output = alloy_contract::Result<PlonkVerifierInstance<P, N>>,
4548 > {
4549 PlonkVerifierInstance::<P, N>::deploy(provider)
4550 }
4551 #[inline]
4557 pub fn deploy_builder<
4558 P: alloy_contract::private::Provider<N>,
4559 N: alloy_contract::private::Network,
4560 >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
4561 PlonkVerifierInstance::<P, N>::deploy_builder(provider)
4562 }
4563 #[derive(Clone)]
4575 pub struct PlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
4576 address: alloy_sol_types::private::Address,
4577 provider: P,
4578 _network: ::core::marker::PhantomData<N>,
4579 }
4580 #[automatically_derived]
4581 impl<P, N> ::core::fmt::Debug for PlonkVerifierInstance<P, N> {
4582 #[inline]
4583 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4584 f.debug_tuple("PlonkVerifierInstance").field(&self.address).finish()
4585 }
4586 }
4587 #[automatically_derived]
4589 impl<
4590 P: alloy_contract::private::Provider<N>,
4591 N: alloy_contract::private::Network,
4592 > PlonkVerifierInstance<P, N> {
4593 #[inline]
4597 pub const fn new(
4598 address: alloy_sol_types::private::Address,
4599 provider: P,
4600 ) -> Self {
4601 Self {
4602 address,
4603 provider,
4604 _network: ::core::marker::PhantomData,
4605 }
4606 }
4607 #[inline]
4613 pub async fn deploy(
4614 provider: P,
4615 ) -> alloy_contract::Result<PlonkVerifierInstance<P, N>> {
4616 let call_builder = Self::deploy_builder(provider);
4617 let contract_address = call_builder.deploy().await?;
4618 Ok(Self::new(contract_address, call_builder.provider))
4619 }
4620 #[inline]
4626 pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
4627 alloy_contract::RawCallBuilder::new_raw_deploy(
4628 provider,
4629 ::core::clone::Clone::clone(&BYTECODE),
4630 )
4631 }
4632 #[inline]
4634 pub const fn address(&self) -> &alloy_sol_types::private::Address {
4635 &self.address
4636 }
4637 #[inline]
4639 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
4640 self.address = address;
4641 }
4642 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
4644 self.set_address(address);
4645 self
4646 }
4647 #[inline]
4649 pub const fn provider(&self) -> &P {
4650 &self.provider
4651 }
4652 }
4653 impl<P: ::core::clone::Clone, N> PlonkVerifierInstance<&P, N> {
4654 #[inline]
4656 pub fn with_cloned_provider(self) -> PlonkVerifierInstance<P, N> {
4657 PlonkVerifierInstance {
4658 address: self.address,
4659 provider: ::core::clone::Clone::clone(&self.provider),
4660 _network: ::core::marker::PhantomData,
4661 }
4662 }
4663 }
4664 #[automatically_derived]
4666 impl<
4667 P: alloy_contract::private::Provider<N>,
4668 N: alloy_contract::private::Network,
4669 > PlonkVerifierInstance<P, N> {
4670 pub fn call_builder<C: alloy_sol_types::SolCall>(
4675 &self,
4676 call: &C,
4677 ) -> alloy_contract::SolCallBuilder<&P, C, N> {
4678 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
4679 }
4680 pub fn verify(
4682 &self,
4683 verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
4684 publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
4685 proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
4686 ) -> alloy_contract::SolCallBuilder<&P, verifyCall, N> {
4687 self.call_builder(
4688 &verifyCall {
4689 verifyingKey,
4690 publicInput,
4691 proof,
4692 },
4693 )
4694 }
4695 }
4696 #[automatically_derived]
4698 impl<
4699 P: alloy_contract::private::Provider<N>,
4700 N: alloy_contract::private::Network,
4701 > PlonkVerifierInstance<P, N> {
4702 pub fn event_filter<E: alloy_sol_types::SolEvent>(
4707 &self,
4708 ) -> alloy_contract::Event<&P, E, N> {
4709 alloy_contract::Event::new_sol(&self.provider, &self.address)
4710 }
4711 }
4712}