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(Default, Debug, PartialEq, Eq, Hash)]
22 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23 #[derive(Clone)]
24 pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25 const _: () = {
26 use alloy::sol_types as alloy_sol_types;
27 #[automatically_derived]
28 impl alloy_sol_types::private::SolTypeValue<BaseField>
29 for alloy::sol_types::private::primitives::aliases::U256 {
30 #[inline]
31 fn stv_to_tokens(
32 &self,
33 ) -> <alloy::sol_types::sol_data::Uint<
34 256,
35 > as alloy_sol_types::SolType>::Token<'_> {
36 alloy_sol_types::private::SolTypeValue::<
37 alloy::sol_types::sol_data::Uint<256>,
38 >::stv_to_tokens(self)
39 }
40 #[inline]
41 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42 <alloy::sol_types::sol_data::Uint<
43 256,
44 > as alloy_sol_types::SolType>::tokenize(self)
45 .0
46 }
47 #[inline]
48 fn stv_abi_encode_packed_to(
49 &self,
50 out: &mut alloy_sol_types::private::Vec<u8>,
51 ) {
52 <alloy::sol_types::sol_data::Uint<
53 256,
54 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55 }
56 #[inline]
57 fn stv_abi_packed_encoded_size(&self) -> usize {
58 <alloy::sol_types::sol_data::Uint<
59 256,
60 > as alloy_sol_types::SolType>::abi_encoded_size(self)
61 }
62 }
63 #[automatically_derived]
64 impl BaseField {
65 pub const NAME: &'static str = stringify!(@ name);
67 #[inline]
69 pub const fn from(
70 value: alloy::sol_types::private::primitives::aliases::U256,
71 ) -> Self {
72 Self(value)
73 }
74 #[inline]
76 pub const fn into(
77 self,
78 ) -> alloy::sol_types::private::primitives::aliases::U256 {
79 self.0
80 }
81 #[inline]
84 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86 }
87 #[inline]
90 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92 }
93 }
94 #[automatically_derived]
95 impl alloy_sol_types::SolType for BaseField {
96 type RustType = alloy::sol_types::private::primitives::aliases::U256;
97 type Token<'a> = <alloy::sol_types::sol_data::Uint<
98 256,
99 > as alloy_sol_types::SolType>::Token<'a>;
100 const SOL_NAME: &'static str = Self::NAME;
101 const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102 256,
103 > as alloy_sol_types::SolType>::ENCODED_SIZE;
104 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105 256,
106 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107 #[inline]
108 fn valid_token(token: &Self::Token<'_>) -> bool {
109 Self::type_check(token).is_ok()
110 }
111 #[inline]
112 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113 <alloy::sol_types::sol_data::Uint<
114 256,
115 > as alloy_sol_types::SolType>::type_check(token)
116 }
117 #[inline]
118 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119 <alloy::sol_types::sol_data::Uint<
120 256,
121 > as alloy_sol_types::SolType>::detokenize(token)
122 }
123 }
124 #[automatically_derived]
125 impl alloy_sol_types::EventTopic for BaseField {
126 #[inline]
127 fn topic_preimage_length(rust: &Self::RustType) -> usize {
128 <alloy::sol_types::sol_data::Uint<
129 256,
130 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131 }
132 #[inline]
133 fn encode_topic_preimage(
134 rust: &Self::RustType,
135 out: &mut alloy_sol_types::private::Vec<u8>,
136 ) {
137 <alloy::sol_types::sol_data::Uint<
138 256,
139 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140 }
141 #[inline]
142 fn encode_topic(
143 rust: &Self::RustType,
144 ) -> alloy_sol_types::abi::token::WordToken {
145 <alloy::sol_types::sol_data::Uint<
146 256,
147 > as alloy_sol_types::EventTopic>::encode_topic(rust)
148 }
149 }
150 };
151 #[derive(Default, Debug, PartialEq, Eq, Hash)]
152 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153 #[derive(Clone)]
154 pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155 const _: () = {
156 use alloy::sol_types as alloy_sol_types;
157 #[automatically_derived]
158 impl alloy_sol_types::private::SolTypeValue<ScalarField>
159 for alloy::sol_types::private::primitives::aliases::U256 {
160 #[inline]
161 fn stv_to_tokens(
162 &self,
163 ) -> <alloy::sol_types::sol_data::Uint<
164 256,
165 > as alloy_sol_types::SolType>::Token<'_> {
166 alloy_sol_types::private::SolTypeValue::<
167 alloy::sol_types::sol_data::Uint<256>,
168 >::stv_to_tokens(self)
169 }
170 #[inline]
171 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172 <alloy::sol_types::sol_data::Uint<
173 256,
174 > as alloy_sol_types::SolType>::tokenize(self)
175 .0
176 }
177 #[inline]
178 fn stv_abi_encode_packed_to(
179 &self,
180 out: &mut alloy_sol_types::private::Vec<u8>,
181 ) {
182 <alloy::sol_types::sol_data::Uint<
183 256,
184 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185 }
186 #[inline]
187 fn stv_abi_packed_encoded_size(&self) -> usize {
188 <alloy::sol_types::sol_data::Uint<
189 256,
190 > as alloy_sol_types::SolType>::abi_encoded_size(self)
191 }
192 }
193 #[automatically_derived]
194 impl ScalarField {
195 pub const NAME: &'static str = stringify!(@ name);
197 #[inline]
199 pub const fn from(
200 value: alloy::sol_types::private::primitives::aliases::U256,
201 ) -> Self {
202 Self(value)
203 }
204 #[inline]
206 pub const fn into(
207 self,
208 ) -> alloy::sol_types::private::primitives::aliases::U256 {
209 self.0
210 }
211 #[inline]
214 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216 }
217 #[inline]
220 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222 }
223 }
224 #[automatically_derived]
225 impl alloy_sol_types::SolType for ScalarField {
226 type RustType = alloy::sol_types::private::primitives::aliases::U256;
227 type Token<'a> = <alloy::sol_types::sol_data::Uint<
228 256,
229 > as alloy_sol_types::SolType>::Token<'a>;
230 const SOL_NAME: &'static str = Self::NAME;
231 const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232 256,
233 > as alloy_sol_types::SolType>::ENCODED_SIZE;
234 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235 256,
236 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237 #[inline]
238 fn valid_token(token: &Self::Token<'_>) -> bool {
239 Self::type_check(token).is_ok()
240 }
241 #[inline]
242 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243 <alloy::sol_types::sol_data::Uint<
244 256,
245 > as alloy_sol_types::SolType>::type_check(token)
246 }
247 #[inline]
248 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249 <alloy::sol_types::sol_data::Uint<
250 256,
251 > as alloy_sol_types::SolType>::detokenize(token)
252 }
253 }
254 #[automatically_derived]
255 impl alloy_sol_types::EventTopic for ScalarField {
256 #[inline]
257 fn topic_preimage_length(rust: &Self::RustType) -> usize {
258 <alloy::sol_types::sol_data::Uint<
259 256,
260 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261 }
262 #[inline]
263 fn encode_topic_preimage(
264 rust: &Self::RustType,
265 out: &mut alloy_sol_types::private::Vec<u8>,
266 ) {
267 <alloy::sol_types::sol_data::Uint<
268 256,
269 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270 }
271 #[inline]
272 fn encode_topic(
273 rust: &Self::RustType,
274 ) -> alloy_sol_types::abi::token::WordToken {
275 <alloy::sol_types::sol_data::Uint<
276 256,
277 > as alloy_sol_types::EventTopic>::encode_topic(rust)
278 }
279 }
280 };
281 #[derive(Default, Debug, PartialEq, Eq, Hash)]
282 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286 #[derive(Clone)]
287 pub struct G1Point {
288 #[allow(missing_docs)]
289 pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290 #[allow(missing_docs)]
291 pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292 }
293 #[allow(
294 non_camel_case_types,
295 non_snake_case,
296 clippy::pub_underscore_fields,
297 clippy::style
298 )]
299 const _: () = {
300 use alloy::sol_types as alloy_sol_types;
301 #[doc(hidden)]
302 type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303 #[doc(hidden)]
304 type UnderlyingRustTuple<'a> = (
305 <BaseField as alloy::sol_types::SolType>::RustType,
306 <BaseField as alloy::sol_types::SolType>::RustType,
307 );
308 #[cfg(test)]
309 #[allow(dead_code, unreachable_patterns)]
310 fn _type_assertion(
311 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312 ) {
313 match _t {
314 alloy_sol_types::private::AssertTypeEq::<
315 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316 >(_) => {}
317 }
318 }
319 #[automatically_derived]
320 #[doc(hidden)]
321 impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322 fn from(value: G1Point) -> Self {
323 (value.x, value.y)
324 }
325 }
326 #[automatically_derived]
327 #[doc(hidden)]
328 impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330 Self { x: tuple.0, y: tuple.1 }
331 }
332 }
333 #[automatically_derived]
334 impl alloy_sol_types::SolValue for G1Point {
335 type SolType = Self;
336 }
337 #[automatically_derived]
338 impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339 #[inline]
340 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341 (
342 <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343 <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344 )
345 }
346 #[inline]
347 fn stv_abi_encoded_size(&self) -> usize {
348 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349 return size;
350 }
351 let tuple = <UnderlyingRustTuple<
352 '_,
353 > as ::core::convert::From<Self>>::from(self.clone());
354 <UnderlyingSolTuple<
355 '_,
356 > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357 }
358 #[inline]
359 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361 }
362 #[inline]
363 fn stv_abi_encode_packed_to(
364 &self,
365 out: &mut alloy_sol_types::private::Vec<u8>,
366 ) {
367 let tuple = <UnderlyingRustTuple<
368 '_,
369 > as ::core::convert::From<Self>>::from(self.clone());
370 <UnderlyingSolTuple<
371 '_,
372 > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373 }
374 #[inline]
375 fn stv_abi_packed_encoded_size(&self) -> usize {
376 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377 return size;
378 }
379 let tuple = <UnderlyingRustTuple<
380 '_,
381 > as ::core::convert::From<Self>>::from(self.clone());
382 <UnderlyingSolTuple<
383 '_,
384 > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385 }
386 }
387 #[automatically_derived]
388 impl alloy_sol_types::SolType for G1Point {
389 type RustType = Self;
390 type Token<'a> = <UnderlyingSolTuple<
391 'a,
392 > as alloy_sol_types::SolType>::Token<'a>;
393 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394 const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395 '_,
396 > as alloy_sol_types::SolType>::ENCODED_SIZE;
397 const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398 '_,
399 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400 #[inline]
401 fn valid_token(token: &Self::Token<'_>) -> bool {
402 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403 }
404 #[inline]
405 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406 let tuple = <UnderlyingSolTuple<
407 '_,
408 > as alloy_sol_types::SolType>::detokenize(token);
409 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410 }
411 }
412 #[automatically_derived]
413 impl alloy_sol_types::SolStruct for G1Point {
414 const NAME: &'static str = "G1Point";
415 #[inline]
416 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417 alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418 }
419 #[inline]
420 fn eip712_components() -> alloy_sol_types::private::Vec<
421 alloy_sol_types::private::Cow<'static, str>,
422 > {
423 alloy_sol_types::private::Vec::new()
424 }
425 #[inline]
426 fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427 <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428 }
429 #[inline]
430 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431 [
432 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434 ]
435 .concat()
436 }
437 }
438 #[automatically_derived]
439 impl alloy_sol_types::EventTopic for G1Point {
440 #[inline]
441 fn topic_preimage_length(rust: &Self::RustType) -> usize {
442 0usize
443 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444 &rust.x,
445 )
446 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447 &rust.y,
448 )
449 }
450 #[inline]
451 fn encode_topic_preimage(
452 rust: &Self::RustType,
453 out: &mut alloy_sol_types::private::Vec<u8>,
454 ) {
455 out.reserve(
456 <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457 );
458 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459 &rust.x,
460 out,
461 );
462 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463 &rust.y,
464 out,
465 );
466 }
467 #[inline]
468 fn encode_topic(
469 rust: &Self::RustType,
470 ) -> alloy_sol_types::abi::token::WordToken {
471 let mut out = alloy_sol_types::private::Vec::new();
472 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473 rust,
474 &mut out,
475 );
476 alloy_sol_types::abi::token::WordToken(
477 alloy_sol_types::private::keccak256(out),
478 )
479 }
480 }
481 };
482 use alloy::contract as alloy_contract;
483 #[inline]
487 pub const fn new<
488 T: alloy_contract::private::Transport + ::core::clone::Clone,
489 P: alloy_contract::private::Provider<T, N>,
490 N: alloy_contract::private::Network,
491 >(
492 address: alloy_sol_types::private::Address,
493 provider: P,
494 ) -> BN254Instance<T, P, N> {
495 BN254Instance::<T, P, N>::new(address, provider)
496 }
497 #[derive(Clone)]
509 pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510 address: alloy_sol_types::private::Address,
511 provider: P,
512 _network_transport: ::core::marker::PhantomData<(N, T)>,
513 }
514 #[automatically_derived]
515 impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516 #[inline]
517 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518 f.debug_tuple("BN254Instance").field(&self.address).finish()
519 }
520 }
521 #[automatically_derived]
523 impl<
524 T: alloy_contract::private::Transport + ::core::clone::Clone,
525 P: alloy_contract::private::Provider<T, N>,
526 N: alloy_contract::private::Network,
527 > BN254Instance<T, P, N> {
528 #[inline]
532 pub const fn new(
533 address: alloy_sol_types::private::Address,
534 provider: P,
535 ) -> Self {
536 Self {
537 address,
538 provider,
539 _network_transport: ::core::marker::PhantomData,
540 }
541 }
542 #[inline]
544 pub const fn address(&self) -> &alloy_sol_types::private::Address {
545 &self.address
546 }
547 #[inline]
549 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550 self.address = address;
551 }
552 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554 self.set_address(address);
555 self
556 }
557 #[inline]
559 pub const fn provider(&self) -> &P {
560 &self.provider
561 }
562 }
563 impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564 #[inline]
566 pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567 BN254Instance {
568 address: self.address,
569 provider: ::core::clone::Clone::clone(&self.provider),
570 _network_transport: ::core::marker::PhantomData,
571 }
572 }
573 }
574 #[automatically_derived]
576 impl<
577 T: alloy_contract::private::Transport + ::core::clone::Clone,
578 P: alloy_contract::private::Provider<T, N>,
579 N: alloy_contract::private::Network,
580 > BN254Instance<T, P, N> {
581 pub fn call_builder<C: alloy_sol_types::SolCall>(
586 &self,
587 call: &C,
588 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590 }
591 }
592 #[automatically_derived]
594 impl<
595 T: alloy_contract::private::Transport + ::core::clone::Clone,
596 P: alloy_contract::private::Provider<T, N>,
597 N: alloy_contract::private::Network,
598 > BN254Instance<T, P, N> {
599 pub fn event_filter<E: alloy_sol_types::SolEvent>(
604 &self,
605 ) -> alloy_contract::Event<T, &P, E, N> {
606 alloy_contract::Event::new_sol(&self.provider, &self.address)
607 }
608 }
609}
610#[allow(
620 non_camel_case_types,
621 non_snake_case,
622 clippy::pub_underscore_fields,
623 clippy::style,
624 clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627 use super::*;
628 use alloy::sol_types as alloy_sol_types;
629 #[derive()]
630 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634 #[derive(Clone)]
635 pub struct PlonkProof {
636 #[allow(missing_docs)]
637 pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638 #[allow(missing_docs)]
639 pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640 #[allow(missing_docs)]
641 pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642 #[allow(missing_docs)]
643 pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644 #[allow(missing_docs)]
645 pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646 #[allow(missing_docs)]
647 pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648 #[allow(missing_docs)]
649 pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650 #[allow(missing_docs)]
651 pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652 #[allow(missing_docs)]
653 pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654 #[allow(missing_docs)]
655 pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656 #[allow(missing_docs)]
657 pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658 #[allow(missing_docs)]
659 pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660 #[allow(missing_docs)]
661 pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662 #[allow(missing_docs)]
663 pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664 #[allow(missing_docs)]
665 pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666 #[allow(missing_docs)]
667 pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668 #[allow(missing_docs)]
669 pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670 #[allow(missing_docs)]
671 pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672 #[allow(missing_docs)]
673 pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674 #[allow(missing_docs)]
675 pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676 #[allow(missing_docs)]
677 pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678 #[allow(missing_docs)]
679 pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680 #[allow(missing_docs)]
681 pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682 }
683 #[allow(
684 non_camel_case_types,
685 non_snake_case,
686 clippy::pub_underscore_fields,
687 clippy::style
688 )]
689 const _: () = {
690 use alloy::sol_types as alloy_sol_types;
691 #[doc(hidden)]
692 type UnderlyingSolTuple<'a> = (
693 BN254::G1Point,
694 BN254::G1Point,
695 BN254::G1Point,
696 BN254::G1Point,
697 BN254::G1Point,
698 BN254::G1Point,
699 BN254::G1Point,
700 BN254::G1Point,
701 BN254::G1Point,
702 BN254::G1Point,
703 BN254::G1Point,
704 BN254::G1Point,
705 BN254::G1Point,
706 BN254::ScalarField,
707 BN254::ScalarField,
708 BN254::ScalarField,
709 BN254::ScalarField,
710 BN254::ScalarField,
711 BN254::ScalarField,
712 BN254::ScalarField,
713 BN254::ScalarField,
714 BN254::ScalarField,
715 BN254::ScalarField,
716 );
717 #[doc(hidden)]
718 type UnderlyingRustTuple<'a> = (
719 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742 );
743 #[cfg(test)]
744 #[allow(dead_code, unreachable_patterns)]
745 fn _type_assertion(
746 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747 ) {
748 match _t {
749 alloy_sol_types::private::AssertTypeEq::<
750 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751 >(_) => {}
752 }
753 }
754 #[automatically_derived]
755 #[doc(hidden)]
756 impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757 fn from(value: PlonkProof) -> Self {
758 (
759 value.wire0,
760 value.wire1,
761 value.wire2,
762 value.wire3,
763 value.wire4,
764 value.prodPerm,
765 value.split0,
766 value.split1,
767 value.split2,
768 value.split3,
769 value.split4,
770 value.zeta,
771 value.zetaOmega,
772 value.wireEval0,
773 value.wireEval1,
774 value.wireEval2,
775 value.wireEval3,
776 value.wireEval4,
777 value.sigmaEval0,
778 value.sigmaEval1,
779 value.sigmaEval2,
780 value.sigmaEval3,
781 value.prodPermZetaOmegaEval,
782 )
783 }
784 }
785 #[automatically_derived]
786 #[doc(hidden)]
787 impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789 Self {
790 wire0: tuple.0,
791 wire1: tuple.1,
792 wire2: tuple.2,
793 wire3: tuple.3,
794 wire4: tuple.4,
795 prodPerm: tuple.5,
796 split0: tuple.6,
797 split1: tuple.7,
798 split2: tuple.8,
799 split3: tuple.9,
800 split4: tuple.10,
801 zeta: tuple.11,
802 zetaOmega: tuple.12,
803 wireEval0: tuple.13,
804 wireEval1: tuple.14,
805 wireEval2: tuple.15,
806 wireEval3: tuple.16,
807 wireEval4: tuple.17,
808 sigmaEval0: tuple.18,
809 sigmaEval1: tuple.19,
810 sigmaEval2: tuple.20,
811 sigmaEval3: tuple.21,
812 prodPermZetaOmegaEval: tuple.22,
813 }
814 }
815 }
816 #[automatically_derived]
817 impl alloy_sol_types::SolValue for PlonkProof {
818 type SolType = Self;
819 }
820 #[automatically_derived]
821 impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822 #[inline]
823 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824 (
825 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831 &self.prodPerm,
832 ),
833 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840 &self.zetaOmega,
841 ),
842 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843 &self.wireEval0,
844 ),
845 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846 &self.wireEval1,
847 ),
848 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849 &self.wireEval2,
850 ),
851 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852 &self.wireEval3,
853 ),
854 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855 &self.wireEval4,
856 ),
857 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858 &self.sigmaEval0,
859 ),
860 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861 &self.sigmaEval1,
862 ),
863 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864 &self.sigmaEval2,
865 ),
866 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867 &self.sigmaEval3,
868 ),
869 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870 &self.prodPermZetaOmegaEval,
871 ),
872 )
873 }
874 #[inline]
875 fn stv_abi_encoded_size(&self) -> usize {
876 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877 return size;
878 }
879 let tuple = <UnderlyingRustTuple<
880 '_,
881 > as ::core::convert::From<Self>>::from(self.clone());
882 <UnderlyingSolTuple<
883 '_,
884 > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885 }
886 #[inline]
887 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889 }
890 #[inline]
891 fn stv_abi_encode_packed_to(
892 &self,
893 out: &mut alloy_sol_types::private::Vec<u8>,
894 ) {
895 let tuple = <UnderlyingRustTuple<
896 '_,
897 > as ::core::convert::From<Self>>::from(self.clone());
898 <UnderlyingSolTuple<
899 '_,
900 > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901 }
902 #[inline]
903 fn stv_abi_packed_encoded_size(&self) -> usize {
904 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905 return size;
906 }
907 let tuple = <UnderlyingRustTuple<
908 '_,
909 > as ::core::convert::From<Self>>::from(self.clone());
910 <UnderlyingSolTuple<
911 '_,
912 > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913 }
914 }
915 #[automatically_derived]
916 impl alloy_sol_types::SolType for PlonkProof {
917 type RustType = Self;
918 type Token<'a> = <UnderlyingSolTuple<
919 'a,
920 > as alloy_sol_types::SolType>::Token<'a>;
921 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922 const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923 '_,
924 > as alloy_sol_types::SolType>::ENCODED_SIZE;
925 const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926 '_,
927 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928 #[inline]
929 fn valid_token(token: &Self::Token<'_>) -> bool {
930 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931 }
932 #[inline]
933 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934 let tuple = <UnderlyingSolTuple<
935 '_,
936 > as alloy_sol_types::SolType>::detokenize(token);
937 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938 }
939 }
940 #[automatically_derived]
941 impl alloy_sol_types::SolStruct for PlonkProof {
942 const NAME: &'static str = "PlonkProof";
943 #[inline]
944 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945 alloy_sol_types::private::Cow::Borrowed(
946 "PlonkProof(BN254.G1Point wire0,BN254.G1Point wire1,BN254.G1Point wire2,BN254.G1Point wire3,BN254.G1Point wire4,BN254.G1Point prodPerm,BN254.G1Point split0,BN254.G1Point split1,BN254.G1Point split2,BN254.G1Point split3,BN254.G1Point split4,BN254.G1Point zeta,BN254.G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947 )
948 }
949 #[inline]
950 fn eip712_components() -> alloy_sol_types::private::Vec<
951 alloy_sol_types::private::Cow<'static, str>,
952 > {
953 let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954 components
955 .push(
956 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957 );
958 components
959 .extend(
960 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961 );
962 components
963 .push(
964 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965 );
966 components
967 .extend(
968 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969 );
970 components
971 .push(
972 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973 );
974 components
975 .extend(
976 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977 );
978 components
979 .push(
980 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981 );
982 components
983 .extend(
984 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985 );
986 components
987 .push(
988 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989 );
990 components
991 .extend(
992 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993 );
994 components
995 .push(
996 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997 );
998 components
999 .extend(
1000 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001 );
1002 components
1003 .push(
1004 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005 );
1006 components
1007 .extend(
1008 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009 );
1010 components
1011 .push(
1012 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013 );
1014 components
1015 .extend(
1016 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017 );
1018 components
1019 .push(
1020 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021 );
1022 components
1023 .extend(
1024 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025 );
1026 components
1027 .push(
1028 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029 );
1030 components
1031 .extend(
1032 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033 );
1034 components
1035 .push(
1036 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037 );
1038 components
1039 .extend(
1040 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041 );
1042 components
1043 .push(
1044 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045 );
1046 components
1047 .extend(
1048 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049 );
1050 components
1051 .push(
1052 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053 );
1054 components
1055 .extend(
1056 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057 );
1058 components
1059 }
1060 #[inline]
1061 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062 [
1063 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064 &self.wire0,
1065 )
1066 .0,
1067 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068 &self.wire1,
1069 )
1070 .0,
1071 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072 &self.wire2,
1073 )
1074 .0,
1075 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076 &self.wire3,
1077 )
1078 .0,
1079 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080 &self.wire4,
1081 )
1082 .0,
1083 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084 &self.prodPerm,
1085 )
1086 .0,
1087 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088 &self.split0,
1089 )
1090 .0,
1091 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092 &self.split1,
1093 )
1094 .0,
1095 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096 &self.split2,
1097 )
1098 .0,
1099 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100 &self.split3,
1101 )
1102 .0,
1103 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104 &self.split4,
1105 )
1106 .0,
1107 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108 &self.zeta,
1109 )
1110 .0,
1111 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112 &self.zetaOmega,
1113 )
1114 .0,
1115 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116 &self.wireEval0,
1117 )
1118 .0,
1119 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120 &self.wireEval1,
1121 )
1122 .0,
1123 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124 &self.wireEval2,
1125 )
1126 .0,
1127 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128 &self.wireEval3,
1129 )
1130 .0,
1131 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132 &self.wireEval4,
1133 )
1134 .0,
1135 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136 &self.sigmaEval0,
1137 )
1138 .0,
1139 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140 &self.sigmaEval1,
1141 )
1142 .0,
1143 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144 &self.sigmaEval2,
1145 )
1146 .0,
1147 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148 &self.sigmaEval3,
1149 )
1150 .0,
1151 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152 &self.prodPermZetaOmegaEval,
1153 )
1154 .0,
1155 ]
1156 .concat()
1157 }
1158 }
1159 #[automatically_derived]
1160 impl alloy_sol_types::EventTopic for PlonkProof {
1161 #[inline]
1162 fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163 0usize
1164 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165 &rust.wire0,
1166 )
1167 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168 &rust.wire1,
1169 )
1170 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171 &rust.wire2,
1172 )
1173 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174 &rust.wire3,
1175 )
1176 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177 &rust.wire4,
1178 )
1179 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180 &rust.prodPerm,
1181 )
1182 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183 &rust.split0,
1184 )
1185 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186 &rust.split1,
1187 )
1188 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189 &rust.split2,
1190 )
1191 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192 &rust.split3,
1193 )
1194 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195 &rust.split4,
1196 )
1197 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198 &rust.zeta,
1199 )
1200 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201 &rust.zetaOmega,
1202 )
1203 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204 &rust.wireEval0,
1205 )
1206 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207 &rust.wireEval1,
1208 )
1209 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210 &rust.wireEval2,
1211 )
1212 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213 &rust.wireEval3,
1214 )
1215 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216 &rust.wireEval4,
1217 )
1218 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219 &rust.sigmaEval0,
1220 )
1221 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222 &rust.sigmaEval1,
1223 )
1224 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225 &rust.sigmaEval2,
1226 )
1227 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228 &rust.sigmaEval3,
1229 )
1230 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231 &rust.prodPermZetaOmegaEval,
1232 )
1233 }
1234 #[inline]
1235 fn encode_topic_preimage(
1236 rust: &Self::RustType,
1237 out: &mut alloy_sol_types::private::Vec<u8>,
1238 ) {
1239 out.reserve(
1240 <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241 );
1242 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243 &rust.wire0,
1244 out,
1245 );
1246 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247 &rust.wire1,
1248 out,
1249 );
1250 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251 &rust.wire2,
1252 out,
1253 );
1254 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255 &rust.wire3,
1256 out,
1257 );
1258 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259 &rust.wire4,
1260 out,
1261 );
1262 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263 &rust.prodPerm,
1264 out,
1265 );
1266 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267 &rust.split0,
1268 out,
1269 );
1270 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271 &rust.split1,
1272 out,
1273 );
1274 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275 &rust.split2,
1276 out,
1277 );
1278 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279 &rust.split3,
1280 out,
1281 );
1282 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283 &rust.split4,
1284 out,
1285 );
1286 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287 &rust.zeta,
1288 out,
1289 );
1290 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291 &rust.zetaOmega,
1292 out,
1293 );
1294 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295 &rust.wireEval0,
1296 out,
1297 );
1298 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299 &rust.wireEval1,
1300 out,
1301 );
1302 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303 &rust.wireEval2,
1304 out,
1305 );
1306 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307 &rust.wireEval3,
1308 out,
1309 );
1310 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311 &rust.wireEval4,
1312 out,
1313 );
1314 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315 &rust.sigmaEval0,
1316 out,
1317 );
1318 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319 &rust.sigmaEval1,
1320 out,
1321 );
1322 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323 &rust.sigmaEval2,
1324 out,
1325 );
1326 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327 &rust.sigmaEval3,
1328 out,
1329 );
1330 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331 &rust.prodPermZetaOmegaEval,
1332 out,
1333 );
1334 }
1335 #[inline]
1336 fn encode_topic(
1337 rust: &Self::RustType,
1338 ) -> alloy_sol_types::abi::token::WordToken {
1339 let mut out = alloy_sol_types::private::Vec::new();
1340 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341 rust,
1342 &mut out,
1343 );
1344 alloy_sol_types::abi::token::WordToken(
1345 alloy_sol_types::private::keccak256(out),
1346 )
1347 }
1348 }
1349 };
1350 #[derive()]
1351 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355 #[derive(Clone)]
1356 pub struct VerifyingKey {
1357 #[allow(missing_docs)]
1358 pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359 #[allow(missing_docs)]
1360 pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361 #[allow(missing_docs)]
1362 pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363 #[allow(missing_docs)]
1364 pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365 #[allow(missing_docs)]
1366 pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367 #[allow(missing_docs)]
1368 pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369 #[allow(missing_docs)]
1370 pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371 #[allow(missing_docs)]
1372 pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373 #[allow(missing_docs)]
1374 pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375 #[allow(missing_docs)]
1376 pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377 #[allow(missing_docs)]
1378 pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379 #[allow(missing_docs)]
1380 pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381 #[allow(missing_docs)]
1382 pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383 #[allow(missing_docs)]
1384 pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385 #[allow(missing_docs)]
1386 pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387 #[allow(missing_docs)]
1388 pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389 #[allow(missing_docs)]
1390 pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391 #[allow(missing_docs)]
1392 pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393 #[allow(missing_docs)]
1394 pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395 #[allow(missing_docs)]
1396 pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397 #[allow(missing_docs)]
1398 pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399 #[allow(missing_docs)]
1400 pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401 }
1402 #[allow(
1403 non_camel_case_types,
1404 non_snake_case,
1405 clippy::pub_underscore_fields,
1406 clippy::style
1407 )]
1408 const _: () = {
1409 use alloy::sol_types as alloy_sol_types;
1410 #[doc(hidden)]
1411 type UnderlyingSolTuple<'a> = (
1412 alloy::sol_types::sol_data::Uint<256>,
1413 alloy::sol_types::sol_data::Uint<256>,
1414 BN254::G1Point,
1415 BN254::G1Point,
1416 BN254::G1Point,
1417 BN254::G1Point,
1418 BN254::G1Point,
1419 BN254::G1Point,
1420 BN254::G1Point,
1421 BN254::G1Point,
1422 BN254::G1Point,
1423 BN254::G1Point,
1424 BN254::G1Point,
1425 BN254::G1Point,
1426 BN254::G1Point,
1427 BN254::G1Point,
1428 BN254::G1Point,
1429 BN254::G1Point,
1430 BN254::G1Point,
1431 BN254::G1Point,
1432 alloy::sol_types::sol_data::FixedBytes<32>,
1433 alloy::sol_types::sol_data::FixedBytes<32>,
1434 );
1435 #[doc(hidden)]
1436 type UnderlyingRustTuple<'a> = (
1437 alloy::sol_types::private::primitives::aliases::U256,
1438 alloy::sol_types::private::primitives::aliases::U256,
1439 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457 alloy::sol_types::private::FixedBytes<32>,
1458 alloy::sol_types::private::FixedBytes<32>,
1459 );
1460 #[cfg(test)]
1461 #[allow(dead_code, unreachable_patterns)]
1462 fn _type_assertion(
1463 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464 ) {
1465 match _t {
1466 alloy_sol_types::private::AssertTypeEq::<
1467 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468 >(_) => {}
1469 }
1470 }
1471 #[automatically_derived]
1472 #[doc(hidden)]
1473 impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474 fn from(value: VerifyingKey) -> Self {
1475 (
1476 value.domainSize,
1477 value.numInputs,
1478 value.sigma0,
1479 value.sigma1,
1480 value.sigma2,
1481 value.sigma3,
1482 value.sigma4,
1483 value.q1,
1484 value.q2,
1485 value.q3,
1486 value.q4,
1487 value.qM12,
1488 value.qM34,
1489 value.qO,
1490 value.qC,
1491 value.qH1,
1492 value.qH2,
1493 value.qH3,
1494 value.qH4,
1495 value.qEcc,
1496 value.g2LSB,
1497 value.g2MSB,
1498 )
1499 }
1500 }
1501 #[automatically_derived]
1502 #[doc(hidden)]
1503 impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505 Self {
1506 domainSize: tuple.0,
1507 numInputs: tuple.1,
1508 sigma0: tuple.2,
1509 sigma1: tuple.3,
1510 sigma2: tuple.4,
1511 sigma3: tuple.5,
1512 sigma4: tuple.6,
1513 q1: tuple.7,
1514 q2: tuple.8,
1515 q3: tuple.9,
1516 q4: tuple.10,
1517 qM12: tuple.11,
1518 qM34: tuple.12,
1519 qO: tuple.13,
1520 qC: tuple.14,
1521 qH1: tuple.15,
1522 qH2: tuple.16,
1523 qH3: tuple.17,
1524 qH4: tuple.18,
1525 qEcc: tuple.19,
1526 g2LSB: tuple.20,
1527 g2MSB: tuple.21,
1528 }
1529 }
1530 }
1531 #[automatically_derived]
1532 impl alloy_sol_types::SolValue for VerifyingKey {
1533 type SolType = Self;
1534 }
1535 #[automatically_derived]
1536 impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537 #[inline]
1538 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539 (
1540 <alloy::sol_types::sol_data::Uint<
1541 256,
1542 > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543 <alloy::sol_types::sol_data::Uint<
1544 256,
1545 > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564 <alloy::sol_types::sol_data::FixedBytes<
1565 32,
1566 > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567 <alloy::sol_types::sol_data::FixedBytes<
1568 32,
1569 > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570 )
1571 }
1572 #[inline]
1573 fn stv_abi_encoded_size(&self) -> usize {
1574 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575 return size;
1576 }
1577 let tuple = <UnderlyingRustTuple<
1578 '_,
1579 > as ::core::convert::From<Self>>::from(self.clone());
1580 <UnderlyingSolTuple<
1581 '_,
1582 > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583 }
1584 #[inline]
1585 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587 }
1588 #[inline]
1589 fn stv_abi_encode_packed_to(
1590 &self,
1591 out: &mut alloy_sol_types::private::Vec<u8>,
1592 ) {
1593 let tuple = <UnderlyingRustTuple<
1594 '_,
1595 > as ::core::convert::From<Self>>::from(self.clone());
1596 <UnderlyingSolTuple<
1597 '_,
1598 > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599 }
1600 #[inline]
1601 fn stv_abi_packed_encoded_size(&self) -> usize {
1602 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603 return size;
1604 }
1605 let tuple = <UnderlyingRustTuple<
1606 '_,
1607 > as ::core::convert::From<Self>>::from(self.clone());
1608 <UnderlyingSolTuple<
1609 '_,
1610 > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611 }
1612 }
1613 #[automatically_derived]
1614 impl alloy_sol_types::SolType for VerifyingKey {
1615 type RustType = Self;
1616 type Token<'a> = <UnderlyingSolTuple<
1617 'a,
1618 > as alloy_sol_types::SolType>::Token<'a>;
1619 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620 const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621 '_,
1622 > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623 const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624 '_,
1625 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626 #[inline]
1627 fn valid_token(token: &Self::Token<'_>) -> bool {
1628 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629 }
1630 #[inline]
1631 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632 let tuple = <UnderlyingSolTuple<
1633 '_,
1634 > as alloy_sol_types::SolType>::detokenize(token);
1635 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636 }
1637 }
1638 #[automatically_derived]
1639 impl alloy_sol_types::SolStruct for VerifyingKey {
1640 const NAME: &'static str = "VerifyingKey";
1641 #[inline]
1642 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643 alloy_sol_types::private::Cow::Borrowed(
1644 "VerifyingKey(uint256 domainSize,uint256 numInputs,BN254.G1Point sigma0,BN254.G1Point sigma1,BN254.G1Point sigma2,BN254.G1Point sigma3,BN254.G1Point sigma4,BN254.G1Point q1,BN254.G1Point q2,BN254.G1Point q3,BN254.G1Point q4,BN254.G1Point qM12,BN254.G1Point qM34,BN254.G1Point qO,BN254.G1Point qC,BN254.G1Point qH1,BN254.G1Point qH2,BN254.G1Point qH3,BN254.G1Point qH4,BN254.G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1645 )
1646 }
1647 #[inline]
1648 fn eip712_components() -> alloy_sol_types::private::Vec<
1649 alloy_sol_types::private::Cow<'static, str>,
1650 > {
1651 let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652 components
1653 .push(
1654 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655 );
1656 components
1657 .extend(
1658 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659 );
1660 components
1661 .push(
1662 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663 );
1664 components
1665 .extend(
1666 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667 );
1668 components
1669 .push(
1670 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671 );
1672 components
1673 .extend(
1674 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675 );
1676 components
1677 .push(
1678 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679 );
1680 components
1681 .extend(
1682 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683 );
1684 components
1685 .push(
1686 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687 );
1688 components
1689 .extend(
1690 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691 );
1692 components
1693 .push(
1694 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695 );
1696 components
1697 .extend(
1698 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699 );
1700 components
1701 .push(
1702 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703 );
1704 components
1705 .extend(
1706 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707 );
1708 components
1709 .push(
1710 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711 );
1712 components
1713 .extend(
1714 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715 );
1716 components
1717 .push(
1718 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719 );
1720 components
1721 .extend(
1722 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723 );
1724 components
1725 .push(
1726 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727 );
1728 components
1729 .extend(
1730 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731 );
1732 components
1733 .push(
1734 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735 );
1736 components
1737 .extend(
1738 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739 );
1740 components
1741 .push(
1742 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743 );
1744 components
1745 .extend(
1746 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747 );
1748 components
1749 .push(
1750 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751 );
1752 components
1753 .extend(
1754 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755 );
1756 components
1757 .push(
1758 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759 );
1760 components
1761 .extend(
1762 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763 );
1764 components
1765 .push(
1766 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767 );
1768 components
1769 .extend(
1770 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771 );
1772 components
1773 .push(
1774 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775 );
1776 components
1777 .extend(
1778 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779 );
1780 components
1781 .push(
1782 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783 );
1784 components
1785 .extend(
1786 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787 );
1788 components
1789 .push(
1790 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791 );
1792 components
1793 .extend(
1794 <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795 );
1796 components
1797 }
1798 #[inline]
1799 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800 [
1801 <alloy::sol_types::sol_data::Uint<
1802 256,
1803 > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804 .0,
1805 <alloy::sol_types::sol_data::Uint<
1806 256,
1807 > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808 .0,
1809 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810 &self.sigma0,
1811 )
1812 .0,
1813 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814 &self.sigma1,
1815 )
1816 .0,
1817 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818 &self.sigma2,
1819 )
1820 .0,
1821 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822 &self.sigma3,
1823 )
1824 .0,
1825 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826 &self.sigma4,
1827 )
1828 .0,
1829 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830 &self.q1,
1831 )
1832 .0,
1833 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834 &self.q2,
1835 )
1836 .0,
1837 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838 &self.q3,
1839 )
1840 .0,
1841 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842 &self.q4,
1843 )
1844 .0,
1845 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846 &self.qM12,
1847 )
1848 .0,
1849 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850 &self.qM34,
1851 )
1852 .0,
1853 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854 &self.qO,
1855 )
1856 .0,
1857 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858 &self.qC,
1859 )
1860 .0,
1861 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862 &self.qH1,
1863 )
1864 .0,
1865 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866 &self.qH2,
1867 )
1868 .0,
1869 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870 &self.qH3,
1871 )
1872 .0,
1873 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874 &self.qH4,
1875 )
1876 .0,
1877 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878 &self.qEcc,
1879 )
1880 .0,
1881 <alloy::sol_types::sol_data::FixedBytes<
1882 32,
1883 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884 .0,
1885 <alloy::sol_types::sol_data::FixedBytes<
1886 32,
1887 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888 .0,
1889 ]
1890 .concat()
1891 }
1892 }
1893 #[automatically_derived]
1894 impl alloy_sol_types::EventTopic for VerifyingKey {
1895 #[inline]
1896 fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897 0usize
1898 + <alloy::sol_types::sol_data::Uint<
1899 256,
1900 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901 &rust.domainSize,
1902 )
1903 + <alloy::sol_types::sol_data::Uint<
1904 256,
1905 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906 &rust.numInputs,
1907 )
1908 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909 &rust.sigma0,
1910 )
1911 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912 &rust.sigma1,
1913 )
1914 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915 &rust.sigma2,
1916 )
1917 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918 &rust.sigma3,
1919 )
1920 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921 &rust.sigma4,
1922 )
1923 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924 &rust.q1,
1925 )
1926 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927 &rust.q2,
1928 )
1929 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930 &rust.q3,
1931 )
1932 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933 &rust.q4,
1934 )
1935 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936 &rust.qM12,
1937 )
1938 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939 &rust.qM34,
1940 )
1941 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942 &rust.qO,
1943 )
1944 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945 &rust.qC,
1946 )
1947 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948 &rust.qH1,
1949 )
1950 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951 &rust.qH2,
1952 )
1953 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954 &rust.qH3,
1955 )
1956 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957 &rust.qH4,
1958 )
1959 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960 &rust.qEcc,
1961 )
1962 + <alloy::sol_types::sol_data::FixedBytes<
1963 32,
1964 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965 + <alloy::sol_types::sol_data::FixedBytes<
1966 32,
1967 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968 }
1969 #[inline]
1970 fn encode_topic_preimage(
1971 rust: &Self::RustType,
1972 out: &mut alloy_sol_types::private::Vec<u8>,
1973 ) {
1974 out.reserve(
1975 <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976 );
1977 <alloy::sol_types::sol_data::Uint<
1978 256,
1979 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980 &rust.domainSize,
1981 out,
1982 );
1983 <alloy::sol_types::sol_data::Uint<
1984 256,
1985 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986 &rust.numInputs,
1987 out,
1988 );
1989 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990 &rust.sigma0,
1991 out,
1992 );
1993 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994 &rust.sigma1,
1995 out,
1996 );
1997 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998 &rust.sigma2,
1999 out,
2000 );
2001 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002 &rust.sigma3,
2003 out,
2004 );
2005 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006 &rust.sigma4,
2007 out,
2008 );
2009 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010 &rust.q1,
2011 out,
2012 );
2013 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014 &rust.q2,
2015 out,
2016 );
2017 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018 &rust.q3,
2019 out,
2020 );
2021 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022 &rust.q4,
2023 out,
2024 );
2025 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026 &rust.qM12,
2027 out,
2028 );
2029 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030 &rust.qM34,
2031 out,
2032 );
2033 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034 &rust.qO,
2035 out,
2036 );
2037 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038 &rust.qC,
2039 out,
2040 );
2041 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042 &rust.qH1,
2043 out,
2044 );
2045 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046 &rust.qH2,
2047 out,
2048 );
2049 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050 &rust.qH3,
2051 out,
2052 );
2053 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054 &rust.qH4,
2055 out,
2056 );
2057 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058 &rust.qEcc,
2059 out,
2060 );
2061 <alloy::sol_types::sol_data::FixedBytes<
2062 32,
2063 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064 &rust.g2LSB,
2065 out,
2066 );
2067 <alloy::sol_types::sol_data::FixedBytes<
2068 32,
2069 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070 &rust.g2MSB,
2071 out,
2072 );
2073 }
2074 #[inline]
2075 fn encode_topic(
2076 rust: &Self::RustType,
2077 ) -> alloy_sol_types::abi::token::WordToken {
2078 let mut out = alloy_sol_types::private::Vec::new();
2079 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080 rust,
2081 &mut out,
2082 );
2083 alloy_sol_types::abi::token::WordToken(
2084 alloy_sol_types::private::keccak256(out),
2085 )
2086 }
2087 }
2088 };
2089 use alloy::contract as alloy_contract;
2090 #[inline]
2094 pub const fn new<
2095 T: alloy_contract::private::Transport + ::core::clone::Clone,
2096 P: alloy_contract::private::Provider<T, N>,
2097 N: alloy_contract::private::Network,
2098 >(
2099 address: alloy_sol_types::private::Address,
2100 provider: P,
2101 ) -> IPlonkVerifierInstance<T, P, N> {
2102 IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103 }
2104 #[derive(Clone)]
2116 pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117 address: alloy_sol_types::private::Address,
2118 provider: P,
2119 _network_transport: ::core::marker::PhantomData<(N, T)>,
2120 }
2121 #[automatically_derived]
2122 impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123 #[inline]
2124 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125 f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126 }
2127 }
2128 #[automatically_derived]
2130 impl<
2131 T: alloy_contract::private::Transport + ::core::clone::Clone,
2132 P: alloy_contract::private::Provider<T, N>,
2133 N: alloy_contract::private::Network,
2134 > IPlonkVerifierInstance<T, P, N> {
2135 #[inline]
2139 pub const fn new(
2140 address: alloy_sol_types::private::Address,
2141 provider: P,
2142 ) -> Self {
2143 Self {
2144 address,
2145 provider,
2146 _network_transport: ::core::marker::PhantomData,
2147 }
2148 }
2149 #[inline]
2151 pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152 &self.address
2153 }
2154 #[inline]
2156 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157 self.address = address;
2158 }
2159 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161 self.set_address(address);
2162 self
2163 }
2164 #[inline]
2166 pub const fn provider(&self) -> &P {
2167 &self.provider
2168 }
2169 }
2170 impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171 #[inline]
2173 pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174 IPlonkVerifierInstance {
2175 address: self.address,
2176 provider: ::core::clone::Clone::clone(&self.provider),
2177 _network_transport: ::core::marker::PhantomData,
2178 }
2179 }
2180 }
2181 #[automatically_derived]
2183 impl<
2184 T: alloy_contract::private::Transport + ::core::clone::Clone,
2185 P: alloy_contract::private::Provider<T, N>,
2186 N: alloy_contract::private::Network,
2187 > IPlonkVerifierInstance<T, P, N> {
2188 pub fn call_builder<C: alloy_sol_types::SolCall>(
2193 &self,
2194 call: &C,
2195 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197 }
2198 }
2199 #[automatically_derived]
2201 impl<
2202 T: alloy_contract::private::Transport + ::core::clone::Clone,
2203 P: alloy_contract::private::Provider<T, N>,
2204 N: alloy_contract::private::Network,
2205 > IPlonkVerifierInstance<T, P, N> {
2206 pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211 &self,
2212 ) -> alloy_contract::Event<T, &P, E, N> {
2213 alloy_contract::Event::new_sol(&self.provider, &self.address)
2214 }
2215 }
2216}
2217#[allow(
2942 non_camel_case_types,
2943 non_snake_case,
2944 clippy::pub_underscore_fields,
2945 clippy::style,
2946 clippy::empty_structs_with_brackets
2947)]
2948pub mod PlonkVerifier {
2949 use super::*;
2950 use alloy::sol_types as alloy_sol_types;
2951 #[rustfmt::skip]
2957 #[allow(clippy::all)]
2958 pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2959 b"a\"\x9Da\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 1V[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\x02qV[\x90P[\x93\x92PPPV[\x80Qa\0\xDB\x90a\x04eV[a\0\xE8\x81` \x01Qa\x04eV[a\0\xF5\x81`@\x01Qa\x04eV[a\x01\x02\x81``\x01Qa\x04eV[a\x01\x0F\x81`\x80\x01Qa\x04eV[a\x01\x1C\x81`\xA0\x01Qa\x04eV[a\x01)\x81`\xC0\x01Qa\x04eV[a\x016\x81`\xE0\x01Qa\x04eV[a\x01D\x81a\x01\0\x01Qa\x04eV[a\x01R\x81a\x01 \x01Qa\x04eV[a\x01`\x81a\x01@\x01Qa\x04eV[a\x01n\x81a\x01`\x01Qa\x04eV[a\x01|\x81a\x01\x80\x01Qa\x04eV[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\"q_9_Q\x90_R\x81\x10\x80a\x02mW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x07\x14a\x02\x97W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x02\xA3\x85\x85\x85a\x05\x13V[\x90P_a\x02\xB2\x86_\x01Qa\nsV[\x90P_a\x02\xC4\x82\x84`\xA0\x01Q\x88a\x0EQV[\x90Pa\x02\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\x15\x87a\x01`\x01Qa\x03\x10\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x0E\xAEV[a\x0FOV[\x91P__a\x03%\x8B\x88\x87\x8Ca\x0F\xF3V[\x91P\x91Pa\x036\x81a\x03\x10\x84a\x12+V[\x92Pa\x03O\x83a\x03\x10\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x0E\xAEV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a\"q_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x03\x92\x85a\x03\x10\x8Da\x01\x80\x01Q\x84a\x0E\xAEV[\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\x04S\x87\x82a\x04F\x89a\x12+V[a\x04Na\x12\xC8V[a\x13\x95V[\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\x04\x9EWPPPV[\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\x05\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PPPV[a\x05S`@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\"q_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{a\x1D\x0EV[\x81b\x01\0\0\x03a\x0B\xBAW`@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\xFAW`@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\x0E8W`@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\x0Er`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x0E|\x84\x84a\x14uV[\x80\x82Ra\x0E\x8C\x90\x85\x90\x85\x90a\x14\xC6V[` \x82\x01R\x80Qa\x0E\xA2\x90\x85\x90\x84\x90\x86\x90a\x155V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0E\xC9a\x1D2V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x81\x01\x83\x90R_``\x83`\x80\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0E\xF9W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FBn254: scalar mul failed!\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Fja\x1DPV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x83\x01R\x83\x01Q``\x80\x83\x01\x91\x90\x91R_\x90\x83`\xC0\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0F\xA5W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: group addition failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x10&\x87\x87\x87\x87a\x16\x83V[\x90P_Q` a\"q_9_Q\x90_R_a\x10B\x88\x87\x89a\x1BMV[\x90Pa\x10N\x81\x83a\"\x1EV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x10z\x85a\x03\x10\x8A_\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xA2\x86a\x03\x10\x8A` \x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xCA\x86a\x03\x10\x8A`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xF2\x86a\x03\x10\x8A``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x1A\x86a\x03\x10\x8A`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x11B\x86a\x03\x10\x8D`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x11j\x86a\x03\x10\x8D``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x92\x86a\x03\x10\x8D`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\xBA\x86a\x03\x10\x8D`\xA0\x01Q\x84a\x0E\xAEV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x11\xE4\x87a\x03\x10\x8B`\xA0\x01Q\x84a\x0E\xAEV[\x96Pa\x12\x1Aa\x12\x14`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x0E\xAEV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x12RWP\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\x12\x96\x91\x90a\"QV[a\x12\xC0\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\"\x1EV[\x90R\x92\x91PPV[a\x12\xEF`@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\x14gW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x02dV[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a\"q_9_Q\x90_R\x90\x83\x80\x15a\x14\xB6W\x84\x93P_[\x82\x81\x10\x15a\x14\xAAW\x83\x85\x86\t\x94P`\x01\x01a\x14\x94V[P`\x01\x84\x03\x93Pa\x14\xBDV[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x14\xD7WP`\x01a\0\xC9V[\x81_\x03a\x14\xE5WP_a\0\xC9V[` \x84\x01Q_Q` a\"q_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x15\x13W`\x01\x87\x03\x92Pa\x15\x1AV[`\x01\x84\x03\x92P[Pa\x15$\x82a\x1C8V[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a\"q_9_Q\x90_R\x82\x82\x03a\x15\xAEW`\x01_[`\x07\x81\x10\x15a\x15\xA3W\x81\x86\x03a\x15\x80W\x86\x81`\x07\x81\x10a\x15qWa\x15qa\"\nV[` \x02\x01Q\x93PPPPa\x14mV[\x82\x80a\x15\x8EWa\x15\x8Ea\"=V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x15OV[P_\x92PPPa\x14mV[a\x15\xB6a\x1DnV[`@\x87\x01Q`\x01`\xC0\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x07\x81\x10\x15a\x15\xF7W` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x15\xCAV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x07\x81\x10\x15a\x16KW\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\x16\x0BV[PPPP\x80\x92PP_a\x16]\x83a\x1C8V[\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\"q_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x17\xF0\x87`\xA0\x01Q\x86a\x0E\xAEV[\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\x18\xB7\x86a\x03\x10\x8C`\xC0\x01Q\x88\x85a\x18\xB2\x91\x90a\"\x1EV[a\x0E\xAEV[\x95Pa\x18\xD0\x86a\x03\x10\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x0E\xAEV[\x95Pa\x18\xEA\x86a\x03\x10\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x0E\xAEV[\x95Pa\x19\x04\x86a\x03\x10\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x0E\xAEV[\x95Pa\x19\x1E\x86a\x03\x10\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x0E\xAEV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x19C\x86a\x03\x10\x8Ca\x01`\x01Q\x86a\x0E\xAEV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x19h\x86a\x03\x10\x8Ca\x01\x80\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\x97\x86a\x03\x10\x8Ca\x01\xE0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xC6\x86a\x03\x10\x8Ca\x02\0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xF5\x86a\x03\x10\x8Ca\x02 \x01Q\x86a\x0E\xAEV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1A$\x86a\x03\x10\x8Ca\x02@\x01Q\x86a\x0E\xAEV[\x95Pa\x1AA\x86a\x03\x10\x8Ca\x01\xA0\x01Qa\x18\xB2\x8Ba\x02 \x01Qa\x1C\xD9V[\x95Pa\x1AR\x86\x8Ba\x01\xC0\x01Qa\x0FOV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1A\x98\x86a\x03\x10\x8Ca\x02`\x01Q\x86a\x0E\xAEV[\x95Pa\x1A\xA6\x88_\x01Qa\x1C\xD9V[\x94Pa\x1A\xBA\x86a\x03\x10\x89`\xC0\x01Q\x88a\x0E\xAEV[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1A\xEE\x86a\x03\x10\x89`\xE0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B\t\x86a\x03\x10\x89a\x01\0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B$\x86a\x03\x10\x89a\x01 \x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B?\x86a\x03\x10\x89a\x01@\x01Q\x88a\x0E\xAEV[\x9A\x99PPPPPPPPPPV[___Q` a\"q_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[____Q` a\"q_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\x1C\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: pow precompile failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x91\x90PV[_a\x1C\xF1_Q` a\"q_9_Q\x90_R\x83a\"QV[a\x1D\x08\x90_Q` a\"q_9_Q\x90_Ra\"\x1EV[\x92\x91PPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1D-a\x1DnV[\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\x1D\xC4Wa\x1D\xC4a\x1D\x8CV[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1D\xC4Wa\x1D\xC4a\x1D\x8CV[_`@\x82\x84\x03\x12\x15a\x1D\xFEW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E!Wa\x1E!a\x1D\x8CV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1EJW__\xFD[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1EmWa\x1Ema\x1D\x8CV[`@R\x80`\xE0\x84\x01\x85\x81\x11\x15a\x1E\x81W__\xFD[\x84[\x81\x81\x10\x15a\x1E\x9BW\x805\x83R` \x92\x83\x01\x92\x01a\x1E\x83V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\x1E\xB7W__\xFD[a\x1E\xBFa\x1D\xA0V[\x90Pa\x1E\xCB\x83\x83a\x1D\xEEV[\x81Ra\x1E\xDA\x83`@\x84\x01a\x1D\xEEV[` \x82\x01Ra\x1E\xEC\x83`\x80\x84\x01a\x1D\xEEV[`@\x82\x01Ra\x1E\xFE\x83`\xC0\x84\x01a\x1D\xEEV[``\x82\x01Ra\x1F\x11\x83a\x01\0\x84\x01a\x1D\xEEV[`\x80\x82\x01Ra\x1F$\x83a\x01@\x84\x01a\x1D\xEEV[`\xA0\x82\x01Ra\x1F7\x83a\x01\x80\x84\x01a\x1D\xEEV[`\xC0\x82\x01Ra\x1FJ\x83a\x01\xC0\x84\x01a\x1D\xEEV[`\xE0\x82\x01Ra\x1F]\x83a\x02\0\x84\x01a\x1D\xEEV[a\x01\0\x82\x01Ra\x1Fq\x83a\x02@\x84\x01a\x1D\xEEV[a\x01 \x82\x01Ra\x1F\x85\x83a\x02\x80\x84\x01a\x1D\xEEV[a\x01@\x82\x01Ra\x1F\x99\x83a\x02\xC0\x84\x01a\x1D\xEEV[a\x01`\x82\x01Ra\x1F\xAD\x83a\x03\0\x84\x01a\x1D\xEEV[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 EW__\xFD[a\x05\0\x81\x12\x15a SW__\xFD[Pa \\a\x1D\xCAV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra w\x86`@\x87\x01a\x1D\xEEV[`@\x82\x01Ra \x89\x86`\x80\x87\x01a\x1D\xEEV[``\x82\x01Ra \x9B\x86`\xC0\x87\x01a\x1D\xEEV[`\x80\x82\x01Ra \xAE\x86a\x01\0\x87\x01a\x1D\xEEV[`\xA0\x82\x01Ra \xC1\x86a\x01@\x87\x01a\x1D\xEEV[`\xC0\x82\x01Ra \xD4\x86a\x01\x80\x87\x01a\x1D\xEEV[`\xE0\x82\x01Ra \xE7\x86a\x01\xC0\x87\x01a\x1D\xEEV[a\x01\0\x82\x01Ra \xFB\x86a\x02\0\x87\x01a\x1D\xEEV[a\x01 \x82\x01Ra!\x0F\x86a\x02@\x87\x01a\x1D\xEEV[a\x01@\x82\x01Ra!#\x86a\x02\x80\x87\x01a\x1D\xEEV[a\x01`\x82\x01Ra!7\x86a\x02\xC0\x87\x01a\x1D\xEEV[a\x01\x80\x82\x01Ra!K\x86a\x03\0\x87\x01a\x1D\xEEV[a\x01\xA0\x82\x01Ra!_\x86a\x03@\x87\x01a\x1D\xEEV[a\x01\xC0\x82\x01Ra!s\x86a\x03\x80\x87\x01a\x1D\xEEV[a\x01\xE0\x82\x01Ra!\x87\x86a\x03\xC0\x87\x01a\x1D\xEEV[a\x02\0\x82\x01Ra!\x9B\x86a\x04\0\x87\x01a\x1D\xEEV[a\x02 \x82\x01Ra!\xAF\x86a\x04@\x87\x01a\x1D\xEEV[a\x02@\x82\x01Ra!\xC3\x86a\x04\x80\x87\x01a\x1D\xEEV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa!\xF1\x85a\x05\0\x86\x01a\x1E;V[\x91Pa\"\x01\x85a\x05\xE0\x86\x01a\x1E\xA6V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x1D\x08WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a\"kWcNH{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",
2960 );
2961 #[rustfmt::skip]
2967 #[allow(clippy::all)]
2968 pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2969 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 1V[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\x02qV[\x90P[\x93\x92PPPV[\x80Qa\0\xDB\x90a\x04eV[a\0\xE8\x81` \x01Qa\x04eV[a\0\xF5\x81`@\x01Qa\x04eV[a\x01\x02\x81``\x01Qa\x04eV[a\x01\x0F\x81`\x80\x01Qa\x04eV[a\x01\x1C\x81`\xA0\x01Qa\x04eV[a\x01)\x81`\xC0\x01Qa\x04eV[a\x016\x81`\xE0\x01Qa\x04eV[a\x01D\x81a\x01\0\x01Qa\x04eV[a\x01R\x81a\x01 \x01Qa\x04eV[a\x01`\x81a\x01@\x01Qa\x04eV[a\x01n\x81a\x01`\x01Qa\x04eV[a\x01|\x81a\x01\x80\x01Qa\x04eV[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\"q_9_Q\x90_R\x81\x10\x80a\x02mW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x07\x14a\x02\x97W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x02\xA3\x85\x85\x85a\x05\x13V[\x90P_a\x02\xB2\x86_\x01Qa\nsV[\x90P_a\x02\xC4\x82\x84`\xA0\x01Q\x88a\x0EQV[\x90Pa\x02\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\x15\x87a\x01`\x01Qa\x03\x10\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x0E\xAEV[a\x0FOV[\x91P__a\x03%\x8B\x88\x87\x8Ca\x0F\xF3V[\x91P\x91Pa\x036\x81a\x03\x10\x84a\x12+V[\x92Pa\x03O\x83a\x03\x10\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x0E\xAEV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a\"q_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x03\x92\x85a\x03\x10\x8Da\x01\x80\x01Q\x84a\x0E\xAEV[\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\x04S\x87\x82a\x04F\x89a\x12+V[a\x04Na\x12\xC8V[a\x13\x95V[\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\x04\x9EWPPPV[\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\x05\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PPPV[a\x05S`@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\"q_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{a\x1D\x0EV[\x81b\x01\0\0\x03a\x0B\xBAW`@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\xFAW`@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\x0E8W`@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\x0Er`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x0E|\x84\x84a\x14uV[\x80\x82Ra\x0E\x8C\x90\x85\x90\x85\x90a\x14\xC6V[` \x82\x01R\x80Qa\x0E\xA2\x90\x85\x90\x84\x90\x86\x90a\x155V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0E\xC9a\x1D2V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x81\x01\x83\x90R_``\x83`\x80\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0E\xF9W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FBn254: scalar mul failed!\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Fja\x1DPV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x83\x01R\x83\x01Q``\x80\x83\x01\x91\x90\x91R_\x90\x83`\xC0\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0F\xA5W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: group addition failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x10&\x87\x87\x87\x87a\x16\x83V[\x90P_Q` a\"q_9_Q\x90_R_a\x10B\x88\x87\x89a\x1BMV[\x90Pa\x10N\x81\x83a\"\x1EV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x10z\x85a\x03\x10\x8A_\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xA2\x86a\x03\x10\x8A` \x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xCA\x86a\x03\x10\x8A`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xF2\x86a\x03\x10\x8A``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x1A\x86a\x03\x10\x8A`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x11B\x86a\x03\x10\x8D`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x11j\x86a\x03\x10\x8D``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x92\x86a\x03\x10\x8D`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\xBA\x86a\x03\x10\x8D`\xA0\x01Q\x84a\x0E\xAEV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x11\xE4\x87a\x03\x10\x8B`\xA0\x01Q\x84a\x0E\xAEV[\x96Pa\x12\x1Aa\x12\x14`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x0E\xAEV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x12RWP\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\x12\x96\x91\x90a\"QV[a\x12\xC0\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\"\x1EV[\x90R\x92\x91PPV[a\x12\xEF`@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\x14gW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x02dV[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a\"q_9_Q\x90_R\x90\x83\x80\x15a\x14\xB6W\x84\x93P_[\x82\x81\x10\x15a\x14\xAAW\x83\x85\x86\t\x94P`\x01\x01a\x14\x94V[P`\x01\x84\x03\x93Pa\x14\xBDV[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x14\xD7WP`\x01a\0\xC9V[\x81_\x03a\x14\xE5WP_a\0\xC9V[` \x84\x01Q_Q` a\"q_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x15\x13W`\x01\x87\x03\x92Pa\x15\x1AV[`\x01\x84\x03\x92P[Pa\x15$\x82a\x1C8V[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a\"q_9_Q\x90_R\x82\x82\x03a\x15\xAEW`\x01_[`\x07\x81\x10\x15a\x15\xA3W\x81\x86\x03a\x15\x80W\x86\x81`\x07\x81\x10a\x15qWa\x15qa\"\nV[` \x02\x01Q\x93PPPPa\x14mV[\x82\x80a\x15\x8EWa\x15\x8Ea\"=V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x15OV[P_\x92PPPa\x14mV[a\x15\xB6a\x1DnV[`@\x87\x01Q`\x01`\xC0\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x07\x81\x10\x15a\x15\xF7W` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x15\xCAV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x07\x81\x10\x15a\x16KW\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\x16\x0BV[PPPP\x80\x92PP_a\x16]\x83a\x1C8V[\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\"q_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x17\xF0\x87`\xA0\x01Q\x86a\x0E\xAEV[\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\x18\xB7\x86a\x03\x10\x8C`\xC0\x01Q\x88\x85a\x18\xB2\x91\x90a\"\x1EV[a\x0E\xAEV[\x95Pa\x18\xD0\x86a\x03\x10\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x0E\xAEV[\x95Pa\x18\xEA\x86a\x03\x10\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x0E\xAEV[\x95Pa\x19\x04\x86a\x03\x10\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x0E\xAEV[\x95Pa\x19\x1E\x86a\x03\x10\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x0E\xAEV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x19C\x86a\x03\x10\x8Ca\x01`\x01Q\x86a\x0E\xAEV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x19h\x86a\x03\x10\x8Ca\x01\x80\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\x97\x86a\x03\x10\x8Ca\x01\xE0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xC6\x86a\x03\x10\x8Ca\x02\0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xF5\x86a\x03\x10\x8Ca\x02 \x01Q\x86a\x0E\xAEV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1A$\x86a\x03\x10\x8Ca\x02@\x01Q\x86a\x0E\xAEV[\x95Pa\x1AA\x86a\x03\x10\x8Ca\x01\xA0\x01Qa\x18\xB2\x8Ba\x02 \x01Qa\x1C\xD9V[\x95Pa\x1AR\x86\x8Ba\x01\xC0\x01Qa\x0FOV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1A\x98\x86a\x03\x10\x8Ca\x02`\x01Q\x86a\x0E\xAEV[\x95Pa\x1A\xA6\x88_\x01Qa\x1C\xD9V[\x94Pa\x1A\xBA\x86a\x03\x10\x89`\xC0\x01Q\x88a\x0E\xAEV[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1A\xEE\x86a\x03\x10\x89`\xE0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B\t\x86a\x03\x10\x89a\x01\0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B$\x86a\x03\x10\x89a\x01 \x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B?\x86a\x03\x10\x89a\x01@\x01Q\x88a\x0E\xAEV[\x9A\x99PPPPPPPPPPV[___Q` a\"q_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[____Q` a\"q_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\x1C\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: pow precompile failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x91\x90PV[_a\x1C\xF1_Q` a\"q_9_Q\x90_R\x83a\"QV[a\x1D\x08\x90_Q` a\"q_9_Q\x90_Ra\"\x1EV[\x92\x91PPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1D-a\x1DnV[\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\x1D\xC4Wa\x1D\xC4a\x1D\x8CV[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1D\xC4Wa\x1D\xC4a\x1D\x8CV[_`@\x82\x84\x03\x12\x15a\x1D\xFEW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E!Wa\x1E!a\x1D\x8CV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1EJW__\xFD[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1EmWa\x1Ema\x1D\x8CV[`@R\x80`\xE0\x84\x01\x85\x81\x11\x15a\x1E\x81W__\xFD[\x84[\x81\x81\x10\x15a\x1E\x9BW\x805\x83R` \x92\x83\x01\x92\x01a\x1E\x83V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\x1E\xB7W__\xFD[a\x1E\xBFa\x1D\xA0V[\x90Pa\x1E\xCB\x83\x83a\x1D\xEEV[\x81Ra\x1E\xDA\x83`@\x84\x01a\x1D\xEEV[` \x82\x01Ra\x1E\xEC\x83`\x80\x84\x01a\x1D\xEEV[`@\x82\x01Ra\x1E\xFE\x83`\xC0\x84\x01a\x1D\xEEV[``\x82\x01Ra\x1F\x11\x83a\x01\0\x84\x01a\x1D\xEEV[`\x80\x82\x01Ra\x1F$\x83a\x01@\x84\x01a\x1D\xEEV[`\xA0\x82\x01Ra\x1F7\x83a\x01\x80\x84\x01a\x1D\xEEV[`\xC0\x82\x01Ra\x1FJ\x83a\x01\xC0\x84\x01a\x1D\xEEV[`\xE0\x82\x01Ra\x1F]\x83a\x02\0\x84\x01a\x1D\xEEV[a\x01\0\x82\x01Ra\x1Fq\x83a\x02@\x84\x01a\x1D\xEEV[a\x01 \x82\x01Ra\x1F\x85\x83a\x02\x80\x84\x01a\x1D\xEEV[a\x01@\x82\x01Ra\x1F\x99\x83a\x02\xC0\x84\x01a\x1D\xEEV[a\x01`\x82\x01Ra\x1F\xAD\x83a\x03\0\x84\x01a\x1D\xEEV[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 EW__\xFD[a\x05\0\x81\x12\x15a SW__\xFD[Pa \\a\x1D\xCAV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra w\x86`@\x87\x01a\x1D\xEEV[`@\x82\x01Ra \x89\x86`\x80\x87\x01a\x1D\xEEV[``\x82\x01Ra \x9B\x86`\xC0\x87\x01a\x1D\xEEV[`\x80\x82\x01Ra \xAE\x86a\x01\0\x87\x01a\x1D\xEEV[`\xA0\x82\x01Ra \xC1\x86a\x01@\x87\x01a\x1D\xEEV[`\xC0\x82\x01Ra \xD4\x86a\x01\x80\x87\x01a\x1D\xEEV[`\xE0\x82\x01Ra \xE7\x86a\x01\xC0\x87\x01a\x1D\xEEV[a\x01\0\x82\x01Ra \xFB\x86a\x02\0\x87\x01a\x1D\xEEV[a\x01 \x82\x01Ra!\x0F\x86a\x02@\x87\x01a\x1D\xEEV[a\x01@\x82\x01Ra!#\x86a\x02\x80\x87\x01a\x1D\xEEV[a\x01`\x82\x01Ra!7\x86a\x02\xC0\x87\x01a\x1D\xEEV[a\x01\x80\x82\x01Ra!K\x86a\x03\0\x87\x01a\x1D\xEEV[a\x01\xA0\x82\x01Ra!_\x86a\x03@\x87\x01a\x1D\xEEV[a\x01\xC0\x82\x01Ra!s\x86a\x03\x80\x87\x01a\x1D\xEEV[a\x01\xE0\x82\x01Ra!\x87\x86a\x03\xC0\x87\x01a\x1D\xEEV[a\x02\0\x82\x01Ra!\x9B\x86a\x04\0\x87\x01a\x1D\xEEV[a\x02 \x82\x01Ra!\xAF\x86a\x04@\x87\x01a\x1D\xEEV[a\x02@\x82\x01Ra!\xC3\x86a\x04\x80\x87\x01a\x1D\xEEV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa!\xF1\x85a\x05\0\x86\x01a\x1E;V[\x91Pa\"\x01\x85a\x05\xE0\x86\x01a\x1E\xA6V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x1D\x08WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a\"kWcNH{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",
2970 );
2971 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2972 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2977 #[derive(Clone)]
2978 pub struct InvalidPlonkArgs {}
2979 #[allow(
2980 non_camel_case_types,
2981 non_snake_case,
2982 clippy::pub_underscore_fields,
2983 clippy::style
2984 )]
2985 const _: () = {
2986 use alloy::sol_types as alloy_sol_types;
2987 #[doc(hidden)]
2988 type UnderlyingSolTuple<'a> = ();
2989 #[doc(hidden)]
2990 type UnderlyingRustTuple<'a> = ();
2991 #[cfg(test)]
2992 #[allow(dead_code, unreachable_patterns)]
2993 fn _type_assertion(
2994 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2995 ) {
2996 match _t {
2997 alloy_sol_types::private::AssertTypeEq::<
2998 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2999 >(_) => {}
3000 }
3001 }
3002 #[automatically_derived]
3003 #[doc(hidden)]
3004 impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
3005 fn from(value: InvalidPlonkArgs) -> Self {
3006 ()
3007 }
3008 }
3009 #[automatically_derived]
3010 #[doc(hidden)]
3011 impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
3012 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3013 Self {}
3014 }
3015 }
3016 #[automatically_derived]
3017 impl alloy_sol_types::SolError for InvalidPlonkArgs {
3018 type Parameters<'a> = UnderlyingSolTuple<'a>;
3019 type Token<'a> = <Self::Parameters<
3020 'a,
3021 > as alloy_sol_types::SolType>::Token<'a>;
3022 const SIGNATURE: &'static str = "InvalidPlonkArgs()";
3023 const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
3024 #[inline]
3025 fn new<'a>(
3026 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3027 ) -> Self {
3028 tuple.into()
3029 }
3030 #[inline]
3031 fn tokenize(&self) -> Self::Token<'_> {
3032 ()
3033 }
3034 }
3035 };
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 UnsupportedDegree {}
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<UnsupportedDegree> for UnderlyingRustTuple<'_> {
3070 fn from(value: UnsupportedDegree) -> Self {
3071 ()
3072 }
3073 }
3074 #[automatically_derived]
3075 #[doc(hidden)]
3076 impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
3077 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3078 Self {}
3079 }
3080 }
3081 #[automatically_derived]
3082 impl alloy_sol_types::SolError for UnsupportedDegree {
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 = "UnsupportedDegree()";
3088 const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
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 }
3100 };
3101 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3102 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3107 #[derive(Clone)]
3108 pub struct WrongPlonkVK {}
3109 #[allow(
3110 non_camel_case_types,
3111 non_snake_case,
3112 clippy::pub_underscore_fields,
3113 clippy::style
3114 )]
3115 const _: () = {
3116 use alloy::sol_types as alloy_sol_types;
3117 #[doc(hidden)]
3118 type UnderlyingSolTuple<'a> = ();
3119 #[doc(hidden)]
3120 type UnderlyingRustTuple<'a> = ();
3121 #[cfg(test)]
3122 #[allow(dead_code, unreachable_patterns)]
3123 fn _type_assertion(
3124 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3125 ) {
3126 match _t {
3127 alloy_sol_types::private::AssertTypeEq::<
3128 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3129 >(_) => {}
3130 }
3131 }
3132 #[automatically_derived]
3133 #[doc(hidden)]
3134 impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
3135 fn from(value: WrongPlonkVK) -> Self {
3136 ()
3137 }
3138 }
3139 #[automatically_derived]
3140 #[doc(hidden)]
3141 impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
3142 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3143 Self {}
3144 }
3145 }
3146 #[automatically_derived]
3147 impl alloy_sol_types::SolError for WrongPlonkVK {
3148 type Parameters<'a> = UnderlyingSolTuple<'a>;
3149 type Token<'a> = <Self::Parameters<
3150 'a,
3151 > as alloy_sol_types::SolType>::Token<'a>;
3152 const SIGNATURE: &'static str = "WrongPlonkVK()";
3153 const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
3154 #[inline]
3155 fn new<'a>(
3156 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3157 ) -> Self {
3158 tuple.into()
3159 }
3160 #[inline]
3161 fn tokenize(&self) -> Self::Token<'_> {
3162 ()
3163 }
3164 }
3165 };
3166 #[derive()]
3167 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3172 #[derive(Clone)]
3173 pub struct verifyCall {
3174 #[allow(missing_docs)]
3175 pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3176 #[allow(missing_docs)]
3177 pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3178 #[allow(missing_docs)]
3179 pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3180 }
3181 #[derive(Default, Debug, PartialEq, Eq, Hash)]
3182 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3184 #[derive(Clone)]
3185 pub struct verifyReturn {
3186 #[allow(missing_docs)]
3187 pub _0: bool,
3188 }
3189 #[allow(
3190 non_camel_case_types,
3191 non_snake_case,
3192 clippy::pub_underscore_fields,
3193 clippy::style
3194 )]
3195 const _: () = {
3196 use alloy::sol_types as alloy_sol_types;
3197 {
3198 #[doc(hidden)]
3199 type UnderlyingSolTuple<'a> = (
3200 IPlonkVerifier::VerifyingKey,
3201 alloy::sol_types::sol_data::FixedArray<
3202 alloy::sol_types::sol_data::Uint<256>,
3203 7usize,
3204 >,
3205 IPlonkVerifier::PlonkProof,
3206 );
3207 #[doc(hidden)]
3208 type UnderlyingRustTuple<'a> = (
3209 <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3210 [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3211 <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3212 );
3213 #[cfg(test)]
3214 #[allow(dead_code, unreachable_patterns)]
3215 fn _type_assertion(
3216 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3217 ) {
3218 match _t {
3219 alloy_sol_types::private::AssertTypeEq::<
3220 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3221 >(_) => {}
3222 }
3223 }
3224 #[automatically_derived]
3225 #[doc(hidden)]
3226 impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
3227 fn from(value: verifyCall) -> Self {
3228 (value.verifyingKey, value.publicInput, value.proof)
3229 }
3230 }
3231 #[automatically_derived]
3232 #[doc(hidden)]
3233 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
3234 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3235 Self {
3236 verifyingKey: tuple.0,
3237 publicInput: tuple.1,
3238 proof: tuple.2,
3239 }
3240 }
3241 }
3242 }
3243 {
3244 #[doc(hidden)]
3245 type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
3246 #[doc(hidden)]
3247 type UnderlyingRustTuple<'a> = (bool,);
3248 #[cfg(test)]
3249 #[allow(dead_code, unreachable_patterns)]
3250 fn _type_assertion(
3251 _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3252 ) {
3253 match _t {
3254 alloy_sol_types::private::AssertTypeEq::<
3255 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3256 >(_) => {}
3257 }
3258 }
3259 #[automatically_derived]
3260 #[doc(hidden)]
3261 impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
3262 fn from(value: verifyReturn) -> Self {
3263 (value._0,)
3264 }
3265 }
3266 #[automatically_derived]
3267 #[doc(hidden)]
3268 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
3269 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3270 Self { _0: tuple.0 }
3271 }
3272 }
3273 }
3274 #[automatically_derived]
3275 impl alloy_sol_types::SolCall for verifyCall {
3276 type Parameters<'a> = (
3277 IPlonkVerifier::VerifyingKey,
3278 alloy::sol_types::sol_data::FixedArray<
3279 alloy::sol_types::sol_data::Uint<256>,
3280 7usize,
3281 >,
3282 IPlonkVerifier::PlonkProof,
3283 );
3284 type Token<'a> = <Self::Parameters<
3285 'a,
3286 > as alloy_sol_types::SolType>::Token<'a>;
3287 type Return = verifyReturn;
3288 type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
3289 type ReturnToken<'a> = <Self::ReturnTuple<
3290 'a,
3291 > as alloy_sol_types::SolType>::Token<'a>;
3292 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))";
3293 const SELECTOR: [u8; 4] = [119u8, 174u8, 63u8, 7u8];
3294 #[inline]
3295 fn new<'a>(
3296 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3297 ) -> Self {
3298 tuple.into()
3299 }
3300 #[inline]
3301 fn tokenize(&self) -> Self::Token<'_> {
3302 (
3303 <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
3304 &self.verifyingKey,
3305 ),
3306 <alloy::sol_types::sol_data::FixedArray<
3307 alloy::sol_types::sol_data::Uint<256>,
3308 7usize,
3309 > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
3310 <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
3311 &self.proof,
3312 ),
3313 )
3314 }
3315 #[inline]
3316 fn abi_decode_returns(
3317 data: &[u8],
3318 validate: bool,
3319 ) -> alloy_sol_types::Result<Self::Return> {
3320 <Self::ReturnTuple<
3321 '_,
3322 > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
3323 .map(Into::into)
3324 }
3325 }
3326 };
3327 #[derive()]
3329 pub enum PlonkVerifierCalls {
3330 #[allow(missing_docs)]
3331 verify(verifyCall),
3332 }
3333 #[automatically_derived]
3334 impl PlonkVerifierCalls {
3335 pub const SELECTORS: &'static [[u8; 4usize]] = &[[119u8, 174u8, 63u8, 7u8]];
3342 }
3343 #[automatically_derived]
3344 impl alloy_sol_types::SolInterface for PlonkVerifierCalls {
3345 const NAME: &'static str = "PlonkVerifierCalls";
3346 const MIN_DATA_LENGTH: usize = 672usize;
3347 const COUNT: usize = 1usize;
3348 #[inline]
3349 fn selector(&self) -> [u8; 4] {
3350 match self {
3351 Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
3352 }
3353 }
3354 #[inline]
3355 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3356 Self::SELECTORS.get(i).copied()
3357 }
3358 #[inline]
3359 fn valid_selector(selector: [u8; 4]) -> bool {
3360 Self::SELECTORS.binary_search(&selector).is_ok()
3361 }
3362 #[inline]
3363 #[allow(non_snake_case)]
3364 fn abi_decode_raw(
3365 selector: [u8; 4],
3366 data: &[u8],
3367 validate: bool,
3368 ) -> alloy_sol_types::Result<Self> {
3369 static DECODE_SHIMS: &[fn(
3370 &[u8],
3371 bool,
3372 ) -> alloy_sol_types::Result<PlonkVerifierCalls>] = &[
3373 {
3374 fn verify(
3375 data: &[u8],
3376 validate: bool,
3377 ) -> alloy_sol_types::Result<PlonkVerifierCalls> {
3378 <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(
3379 data,
3380 validate,
3381 )
3382 .map(PlonkVerifierCalls::verify)
3383 }
3384 verify
3385 },
3386 ];
3387 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3388 return Err(
3389 alloy_sol_types::Error::unknown_selector(
3390 <Self as alloy_sol_types::SolInterface>::NAME,
3391 selector,
3392 ),
3393 );
3394 };
3395 DECODE_SHIMS[idx](data, validate)
3396 }
3397 #[inline]
3398 fn abi_encoded_size(&self) -> usize {
3399 match self {
3400 Self::verify(inner) => {
3401 <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
3402 }
3403 }
3404 }
3405 #[inline]
3406 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3407 match self {
3408 Self::verify(inner) => {
3409 <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
3410 }
3411 }
3412 }
3413 }
3414 #[derive(Debug, PartialEq, Eq, Hash)]
3416 pub enum PlonkVerifierErrors {
3417 #[allow(missing_docs)]
3418 InvalidPlonkArgs(InvalidPlonkArgs),
3419 #[allow(missing_docs)]
3420 UnsupportedDegree(UnsupportedDegree),
3421 #[allow(missing_docs)]
3422 WrongPlonkVK(WrongPlonkVK),
3423 }
3424 #[automatically_derived]
3425 impl PlonkVerifierErrors {
3426 pub const SELECTORS: &'static [[u8; 4usize]] = &[
3433 [65u8, 245u8, 59u8, 18u8],
3434 [226u8, 239u8, 9u8, 229u8],
3435 [253u8, 154u8, 45u8, 27u8],
3436 ];
3437 }
3438 #[automatically_derived]
3439 impl alloy_sol_types::SolInterface for PlonkVerifierErrors {
3440 const NAME: &'static str = "PlonkVerifierErrors";
3441 const MIN_DATA_LENGTH: usize = 0usize;
3442 const COUNT: usize = 3usize;
3443 #[inline]
3444 fn selector(&self) -> [u8; 4] {
3445 match self {
3446 Self::InvalidPlonkArgs(_) => {
3447 <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
3448 }
3449 Self::UnsupportedDegree(_) => {
3450 <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
3451 }
3452 Self::WrongPlonkVK(_) => {
3453 <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR
3454 }
3455 }
3456 }
3457 #[inline]
3458 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3459 Self::SELECTORS.get(i).copied()
3460 }
3461 #[inline]
3462 fn valid_selector(selector: [u8; 4]) -> bool {
3463 Self::SELECTORS.binary_search(&selector).is_ok()
3464 }
3465 #[inline]
3466 #[allow(non_snake_case)]
3467 fn abi_decode_raw(
3468 selector: [u8; 4],
3469 data: &[u8],
3470 validate: bool,
3471 ) -> alloy_sol_types::Result<Self> {
3472 static DECODE_SHIMS: &[fn(
3473 &[u8],
3474 bool,
3475 ) -> alloy_sol_types::Result<PlonkVerifierErrors>] = &[
3476 {
3477 fn WrongPlonkVK(
3478 data: &[u8],
3479 validate: bool,
3480 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3481 <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(
3482 data,
3483 validate,
3484 )
3485 .map(PlonkVerifierErrors::WrongPlonkVK)
3486 }
3487 WrongPlonkVK
3488 },
3489 {
3490 fn UnsupportedDegree(
3491 data: &[u8],
3492 validate: bool,
3493 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3494 <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
3495 data,
3496 validate,
3497 )
3498 .map(PlonkVerifierErrors::UnsupportedDegree)
3499 }
3500 UnsupportedDegree
3501 },
3502 {
3503 fn InvalidPlonkArgs(
3504 data: &[u8],
3505 validate: bool,
3506 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3507 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
3508 data,
3509 validate,
3510 )
3511 .map(PlonkVerifierErrors::InvalidPlonkArgs)
3512 }
3513 InvalidPlonkArgs
3514 },
3515 ];
3516 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3517 return Err(
3518 alloy_sol_types::Error::unknown_selector(
3519 <Self as alloy_sol_types::SolInterface>::NAME,
3520 selector,
3521 ),
3522 );
3523 };
3524 DECODE_SHIMS[idx](data, validate)
3525 }
3526 #[inline]
3527 fn abi_encoded_size(&self) -> usize {
3528 match self {
3529 Self::InvalidPlonkArgs(inner) => {
3530 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(
3531 inner,
3532 )
3533 }
3534 Self::UnsupportedDegree(inner) => {
3535 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(
3536 inner,
3537 )
3538 }
3539 Self::WrongPlonkVK(inner) => {
3540 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
3541 }
3542 }
3543 }
3544 #[inline]
3545 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3546 match self {
3547 Self::InvalidPlonkArgs(inner) => {
3548 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(
3549 inner,
3550 out,
3551 )
3552 }
3553 Self::UnsupportedDegree(inner) => {
3554 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(
3555 inner,
3556 out,
3557 )
3558 }
3559 Self::WrongPlonkVK(inner) => {
3560 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(
3561 inner,
3562 out,
3563 )
3564 }
3565 }
3566 }
3567 }
3568 use alloy::contract as alloy_contract;
3569 #[inline]
3573 pub const fn new<
3574 T: alloy_contract::private::Transport + ::core::clone::Clone,
3575 P: alloy_contract::private::Provider<T, N>,
3576 N: alloy_contract::private::Network,
3577 >(
3578 address: alloy_sol_types::private::Address,
3579 provider: P,
3580 ) -> PlonkVerifierInstance<T, P, N> {
3581 PlonkVerifierInstance::<T, P, N>::new(address, provider)
3582 }
3583 #[inline]
3589 pub fn deploy<
3590 T: alloy_contract::private::Transport + ::core::clone::Clone,
3591 P: alloy_contract::private::Provider<T, N>,
3592 N: alloy_contract::private::Network,
3593 >(
3594 provider: P,
3595 ) -> impl ::core::future::Future<
3596 Output = alloy_contract::Result<PlonkVerifierInstance<T, P, N>>,
3597 > {
3598 PlonkVerifierInstance::<T, P, N>::deploy(provider)
3599 }
3600 #[inline]
3606 pub fn deploy_builder<
3607 T: alloy_contract::private::Transport + ::core::clone::Clone,
3608 P: alloy_contract::private::Provider<T, N>,
3609 N: alloy_contract::private::Network,
3610 >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
3611 PlonkVerifierInstance::<T, P, N>::deploy_builder(provider)
3612 }
3613 #[derive(Clone)]
3625 pub struct PlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
3626 address: alloy_sol_types::private::Address,
3627 provider: P,
3628 _network_transport: ::core::marker::PhantomData<(N, T)>,
3629 }
3630 #[automatically_derived]
3631 impl<T, P, N> ::core::fmt::Debug for PlonkVerifierInstance<T, P, N> {
3632 #[inline]
3633 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3634 f.debug_tuple("PlonkVerifierInstance").field(&self.address).finish()
3635 }
3636 }
3637 #[automatically_derived]
3639 impl<
3640 T: alloy_contract::private::Transport + ::core::clone::Clone,
3641 P: alloy_contract::private::Provider<T, N>,
3642 N: alloy_contract::private::Network,
3643 > PlonkVerifierInstance<T, P, N> {
3644 #[inline]
3648 pub const fn new(
3649 address: alloy_sol_types::private::Address,
3650 provider: P,
3651 ) -> Self {
3652 Self {
3653 address,
3654 provider,
3655 _network_transport: ::core::marker::PhantomData,
3656 }
3657 }
3658 #[inline]
3664 pub async fn deploy(
3665 provider: P,
3666 ) -> alloy_contract::Result<PlonkVerifierInstance<T, P, N>> {
3667 let call_builder = Self::deploy_builder(provider);
3668 let contract_address = call_builder.deploy().await?;
3669 Ok(Self::new(contract_address, call_builder.provider))
3670 }
3671 #[inline]
3677 pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
3678 alloy_contract::RawCallBuilder::new_raw_deploy(
3679 provider,
3680 ::core::clone::Clone::clone(&BYTECODE),
3681 )
3682 }
3683 #[inline]
3685 pub const fn address(&self) -> &alloy_sol_types::private::Address {
3686 &self.address
3687 }
3688 #[inline]
3690 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3691 self.address = address;
3692 }
3693 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3695 self.set_address(address);
3696 self
3697 }
3698 #[inline]
3700 pub const fn provider(&self) -> &P {
3701 &self.provider
3702 }
3703 }
3704 impl<T, P: ::core::clone::Clone, N> PlonkVerifierInstance<T, &P, N> {
3705 #[inline]
3707 pub fn with_cloned_provider(self) -> PlonkVerifierInstance<T, P, N> {
3708 PlonkVerifierInstance {
3709 address: self.address,
3710 provider: ::core::clone::Clone::clone(&self.provider),
3711 _network_transport: ::core::marker::PhantomData,
3712 }
3713 }
3714 }
3715 #[automatically_derived]
3717 impl<
3718 T: alloy_contract::private::Transport + ::core::clone::Clone,
3719 P: alloy_contract::private::Provider<T, N>,
3720 N: alloy_contract::private::Network,
3721 > PlonkVerifierInstance<T, P, N> {
3722 pub fn call_builder<C: alloy_sol_types::SolCall>(
3727 &self,
3728 call: &C,
3729 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
3730 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3731 }
3732 pub fn verify(
3734 &self,
3735 verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3736 publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3737 proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3738 ) -> alloy_contract::SolCallBuilder<T, &P, verifyCall, N> {
3739 self.call_builder(
3740 &verifyCall {
3741 verifyingKey,
3742 publicInput,
3743 proof,
3744 },
3745 )
3746 }
3747 }
3748 #[automatically_derived]
3750 impl<
3751 T: alloy_contract::private::Transport + ::core::clone::Clone,
3752 P: alloy_contract::private::Provider<T, N>,
3753 N: alloy_contract::private::Network,
3754 > PlonkVerifierInstance<T, P, N> {
3755 pub fn event_filter<E: alloy_sol_types::SolEvent>(
3760 &self,
3761 ) -> alloy_contract::Event<T, &P, E, N> {
3762 alloy_contract::Event::new_sol(&self.provider, &self.address)
3763 }
3764 }
3765}