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 {
31 #[inline]
32 fn stv_to_tokens(
33 &self,
34 ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
35 {
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<256> as alloy_sol_types::SolType>::tokenize(self)
43 .0
44 }
45 #[inline]
46 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
47 <alloy::sol_types::sol_data::Uint<
48 256,
49 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
50 }
51 #[inline]
52 fn stv_abi_packed_encoded_size(&self) -> usize {
53 <alloy::sol_types::sol_data::Uint<
54 256,
55 > as alloy_sol_types::SolType>::abi_encoded_size(self)
56 }
57 }
58 #[automatically_derived]
59 impl BaseField {
60 pub const NAME: &'static str = stringify!(@ name);
62 #[inline]
64 pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
65 Self(value)
66 }
67 #[inline]
69 pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
70 self.0
71 }
72 #[inline]
75 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
76 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
77 }
78 #[inline]
81 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
82 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
83 }
84 }
85 #[automatically_derived]
86 impl alloy_sol_types::SolType for BaseField {
87 type RustType = alloy::sol_types::private::primitives::aliases::U256;
88 type Token<'a> =
89 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
90 const SOL_NAME: &'static str = Self::NAME;
91 const ENCODED_SIZE: Option<usize> =
92 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
93 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
94 256,
95 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
96 #[inline]
97 fn valid_token(token: &Self::Token<'_>) -> bool {
98 Self::type_check(token).is_ok()
99 }
100 #[inline]
101 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
102 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
103 token,
104 )
105 }
106 #[inline]
107 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
108 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
109 token,
110 )
111 }
112 }
113 #[automatically_derived]
114 impl alloy_sol_types::EventTopic for BaseField {
115 #[inline]
116 fn topic_preimage_length(rust: &Self::RustType) -> usize {
117 <alloy::sol_types::sol_data::Uint<
118 256,
119 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
120 }
121 #[inline]
122 fn encode_topic_preimage(
123 rust: &Self::RustType,
124 out: &mut alloy_sol_types::private::Vec<u8>,
125 ) {
126 <alloy::sol_types::sol_data::Uint<
127 256,
128 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
129 }
130 #[inline]
131 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
132 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
133 rust,
134 )
135 }
136 }
137 };
138 #[derive(Default, Debug, PartialEq, Eq, Hash)]
139 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
140 #[derive(Clone)]
141 pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
142 const _: () = {
143 use alloy::sol_types as alloy_sol_types;
144 #[automatically_derived]
145 impl alloy_sol_types::private::SolTypeValue<ScalarField>
146 for alloy::sol_types::private::primitives::aliases::U256
147 {
148 #[inline]
149 fn stv_to_tokens(
150 &self,
151 ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
152 {
153 alloy_sol_types::private::SolTypeValue::<
154 alloy::sol_types::sol_data::Uint<256>,
155 >::stv_to_tokens(self)
156 }
157 #[inline]
158 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
159 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
160 .0
161 }
162 #[inline]
163 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
164 <alloy::sol_types::sol_data::Uint<
165 256,
166 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
167 }
168 #[inline]
169 fn stv_abi_packed_encoded_size(&self) -> usize {
170 <alloy::sol_types::sol_data::Uint<
171 256,
172 > as alloy_sol_types::SolType>::abi_encoded_size(self)
173 }
174 }
175 #[automatically_derived]
176 impl ScalarField {
177 pub const NAME: &'static str = stringify!(@ name);
179 #[inline]
181 pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
182 Self(value)
183 }
184 #[inline]
186 pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
187 self.0
188 }
189 #[inline]
192 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
193 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
194 }
195 #[inline]
198 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
199 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
200 }
201 }
202 #[automatically_derived]
203 impl alloy_sol_types::SolType for ScalarField {
204 type RustType = alloy::sol_types::private::primitives::aliases::U256;
205 type Token<'a> =
206 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
207 const SOL_NAME: &'static str = Self::NAME;
208 const ENCODED_SIZE: Option<usize> =
209 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
210 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
211 256,
212 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
213 #[inline]
214 fn valid_token(token: &Self::Token<'_>) -> bool {
215 Self::type_check(token).is_ok()
216 }
217 #[inline]
218 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
219 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
220 token,
221 )
222 }
223 #[inline]
224 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
225 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
226 token,
227 )
228 }
229 }
230 #[automatically_derived]
231 impl alloy_sol_types::EventTopic for ScalarField {
232 #[inline]
233 fn topic_preimage_length(rust: &Self::RustType) -> usize {
234 <alloy::sol_types::sol_data::Uint<
235 256,
236 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
237 }
238 #[inline]
239 fn encode_topic_preimage(
240 rust: &Self::RustType,
241 out: &mut alloy_sol_types::private::Vec<u8>,
242 ) {
243 <alloy::sol_types::sol_data::Uint<
244 256,
245 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
246 }
247 #[inline]
248 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
249 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
250 rust,
251 )
252 }
253 }
254 };
255 #[derive(Default, Debug, PartialEq, Eq, Hash)]
256 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
260 #[derive(Clone)]
261 pub struct G1Point {
262 #[allow(missing_docs)]
263 pub x: <BaseField as alloy::sol_types::SolType>::RustType,
264 #[allow(missing_docs)]
265 pub y: <BaseField as alloy::sol_types::SolType>::RustType,
266 }
267 #[allow(
268 non_camel_case_types,
269 non_snake_case,
270 clippy::pub_underscore_fields,
271 clippy::style
272 )]
273 const _: () = {
274 use alloy::sol_types as alloy_sol_types;
275 #[doc(hidden)]
276 type UnderlyingSolTuple<'a> = (BaseField, BaseField);
277 #[doc(hidden)]
278 type UnderlyingRustTuple<'a> = (
279 <BaseField as alloy::sol_types::SolType>::RustType,
280 <BaseField as alloy::sol_types::SolType>::RustType,
281 );
282 #[cfg(test)]
283 #[allow(dead_code, unreachable_patterns)]
284 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
285 match _t {
286 alloy_sol_types::private::AssertTypeEq::<
287 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
288 >(_) => {},
289 }
290 }
291 #[automatically_derived]
292 #[doc(hidden)]
293 impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
294 fn from(value: G1Point) -> Self {
295 (value.x, value.y)
296 }
297 }
298 #[automatically_derived]
299 #[doc(hidden)]
300 impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
301 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
302 Self {
303 x: tuple.0,
304 y: tuple.1,
305 }
306 }
307 }
308 #[automatically_derived]
309 impl alloy_sol_types::SolValue for G1Point {
310 type SolType = Self;
311 }
312 #[automatically_derived]
313 impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
314 #[inline]
315 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
316 (
317 <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
318 <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
319 )
320 }
321 #[inline]
322 fn stv_abi_encoded_size(&self) -> usize {
323 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
324 return size;
325 }
326 let tuple =
327 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
328 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
329 }
330 #[inline]
331 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
332 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
333 }
334 #[inline]
335 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
336 let tuple =
337 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
338 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
339 &tuple, out,
340 )
341 }
342 #[inline]
343 fn stv_abi_packed_encoded_size(&self) -> usize {
344 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
345 return size;
346 }
347 let tuple =
348 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
349 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
350 &tuple,
351 )
352 }
353 }
354 #[automatically_derived]
355 impl alloy_sol_types::SolType for G1Point {
356 type RustType = Self;
357 type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
358 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
359 const ENCODED_SIZE: Option<usize> =
360 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
361 const PACKED_ENCODED_SIZE: Option<usize> =
362 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
363 #[inline]
364 fn valid_token(token: &Self::Token<'_>) -> bool {
365 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
366 }
367 #[inline]
368 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
369 let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
370 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
371 }
372 }
373 #[automatically_derived]
374 impl alloy_sol_types::SolStruct for G1Point {
375 const NAME: &'static str = "G1Point";
376 #[inline]
377 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
378 alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
379 }
380 #[inline]
381 fn eip712_components(
382 ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
383 {
384 alloy_sol_types::private::Vec::new()
385 }
386 #[inline]
387 fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
388 <Self as alloy_sol_types::SolStruct>::eip712_root_type()
389 }
390 #[inline]
391 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
392 [
393 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
394 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
395 ]
396 .concat()
397 }
398 }
399 #[automatically_derived]
400 impl alloy_sol_types::EventTopic for G1Point {
401 #[inline]
402 fn topic_preimage_length(rust: &Self::RustType) -> usize {
403 0usize
404 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
405 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
406 }
407 #[inline]
408 fn encode_topic_preimage(
409 rust: &Self::RustType,
410 out: &mut alloy_sol_types::private::Vec<u8>,
411 ) {
412 out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
413 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
414 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
415 }
416 #[inline]
417 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
418 let mut out = alloy_sol_types::private::Vec::new();
419 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
420 alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
421 }
422 }
423 };
424 use alloy::contract as alloy_contract;
425 #[inline]
429 pub const fn new<
430 T: alloy_contract::private::Transport + ::core::clone::Clone,
431 P: alloy_contract::private::Provider<T, N>,
432 N: alloy_contract::private::Network,
433 >(
434 address: alloy_sol_types::private::Address,
435 provider: P,
436 ) -> BN254Instance<T, P, N> {
437 BN254Instance::<T, P, N>::new(address, provider)
438 }
439 #[derive(Clone)]
451 pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
452 address: alloy_sol_types::private::Address,
453 provider: P,
454 _network_transport: ::core::marker::PhantomData<(N, T)>,
455 }
456 #[automatically_derived]
457 impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
458 #[inline]
459 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
460 f.debug_tuple("BN254Instance").field(&self.address).finish()
461 }
462 }
463 #[automatically_derived]
465 impl<
466 T: alloy_contract::private::Transport + ::core::clone::Clone,
467 P: alloy_contract::private::Provider<T, N>,
468 N: alloy_contract::private::Network,
469 > BN254Instance<T, P, N>
470 {
471 #[inline]
475 pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
476 Self {
477 address,
478 provider,
479 _network_transport: ::core::marker::PhantomData,
480 }
481 }
482 #[inline]
484 pub const fn address(&self) -> &alloy_sol_types::private::Address {
485 &self.address
486 }
487 #[inline]
489 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
490 self.address = address;
491 }
492 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
494 self.set_address(address);
495 self
496 }
497 #[inline]
499 pub const fn provider(&self) -> &P {
500 &self.provider
501 }
502 }
503 impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
504 #[inline]
506 pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
507 BN254Instance {
508 address: self.address,
509 provider: ::core::clone::Clone::clone(&self.provider),
510 _network_transport: ::core::marker::PhantomData,
511 }
512 }
513 }
514 #[automatically_derived]
516 impl<
517 T: alloy_contract::private::Transport + ::core::clone::Clone,
518 P: alloy_contract::private::Provider<T, N>,
519 N: alloy_contract::private::Network,
520 > BN254Instance<T, P, N>
521 {
522 pub fn call_builder<C: alloy_sol_types::SolCall>(
527 &self,
528 call: &C,
529 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
530 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
531 }
532 }
533 #[automatically_derived]
535 impl<
536 T: alloy_contract::private::Transport + ::core::clone::Clone,
537 P: alloy_contract::private::Provider<T, N>,
538 N: alloy_contract::private::Network,
539 > BN254Instance<T, P, N>
540 {
541 pub fn event_filter<E: alloy_sol_types::SolEvent>(
546 &self,
547 ) -> alloy_contract::Event<T, &P, E, N> {
548 alloy_contract::Event::new_sol(&self.provider, &self.address)
549 }
550 }
551}
552#[allow(
562 non_camel_case_types,
563 non_snake_case,
564 clippy::pub_underscore_fields,
565 clippy::style,
566 clippy::empty_structs_with_brackets
567)]
568pub mod IPlonkVerifier {
569 use super::*;
570 use alloy::sol_types as alloy_sol_types;
571 #[derive()]
572 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
576 #[derive(Clone)]
577 pub struct PlonkProof {
578 #[allow(missing_docs)]
579 pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
580 #[allow(missing_docs)]
581 pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582 #[allow(missing_docs)]
583 pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584 #[allow(missing_docs)]
585 pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586 #[allow(missing_docs)]
587 pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588 #[allow(missing_docs)]
589 pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590 #[allow(missing_docs)]
591 pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592 #[allow(missing_docs)]
593 pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594 #[allow(missing_docs)]
595 pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596 #[allow(missing_docs)]
597 pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598 #[allow(missing_docs)]
599 pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600 #[allow(missing_docs)]
601 pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602 #[allow(missing_docs)]
603 pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604 #[allow(missing_docs)]
605 pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
606 #[allow(missing_docs)]
607 pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608 #[allow(missing_docs)]
609 pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610 #[allow(missing_docs)]
611 pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612 #[allow(missing_docs)]
613 pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614 #[allow(missing_docs)]
615 pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616 #[allow(missing_docs)]
617 pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618 #[allow(missing_docs)]
619 pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620 #[allow(missing_docs)]
621 pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622 #[allow(missing_docs)]
623 pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624 }
625 #[allow(
626 non_camel_case_types,
627 non_snake_case,
628 clippy::pub_underscore_fields,
629 clippy::style
630 )]
631 const _: () = {
632 use alloy::sol_types as alloy_sol_types;
633 #[doc(hidden)]
634 type UnderlyingSolTuple<'a> = (
635 BN254::G1Point,
636 BN254::G1Point,
637 BN254::G1Point,
638 BN254::G1Point,
639 BN254::G1Point,
640 BN254::G1Point,
641 BN254::G1Point,
642 BN254::G1Point,
643 BN254::G1Point,
644 BN254::G1Point,
645 BN254::G1Point,
646 BN254::G1Point,
647 BN254::G1Point,
648 BN254::ScalarField,
649 BN254::ScalarField,
650 BN254::ScalarField,
651 BN254::ScalarField,
652 BN254::ScalarField,
653 BN254::ScalarField,
654 BN254::ScalarField,
655 BN254::ScalarField,
656 BN254::ScalarField,
657 BN254::ScalarField,
658 );
659 #[doc(hidden)]
660 type UnderlyingRustTuple<'a> = (
661 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
675 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684 );
685 #[cfg(test)]
686 #[allow(dead_code, unreachable_patterns)]
687 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
688 match _t {
689 alloy_sol_types::private::AssertTypeEq::<
690 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
691 >(_) => {},
692 }
693 }
694 #[automatically_derived]
695 #[doc(hidden)]
696 impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
697 fn from(value: PlonkProof) -> Self {
698 (
699 value.wire0,
700 value.wire1,
701 value.wire2,
702 value.wire3,
703 value.wire4,
704 value.prodPerm,
705 value.split0,
706 value.split1,
707 value.split2,
708 value.split3,
709 value.split4,
710 value.zeta,
711 value.zetaOmega,
712 value.wireEval0,
713 value.wireEval1,
714 value.wireEval2,
715 value.wireEval3,
716 value.wireEval4,
717 value.sigmaEval0,
718 value.sigmaEval1,
719 value.sigmaEval2,
720 value.sigmaEval3,
721 value.prodPermZetaOmegaEval,
722 )
723 }
724 }
725 #[automatically_derived]
726 #[doc(hidden)]
727 impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
728 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
729 Self {
730 wire0: tuple.0,
731 wire1: tuple.1,
732 wire2: tuple.2,
733 wire3: tuple.3,
734 wire4: tuple.4,
735 prodPerm: tuple.5,
736 split0: tuple.6,
737 split1: tuple.7,
738 split2: tuple.8,
739 split3: tuple.9,
740 split4: tuple.10,
741 zeta: tuple.11,
742 zetaOmega: tuple.12,
743 wireEval0: tuple.13,
744 wireEval1: tuple.14,
745 wireEval2: tuple.15,
746 wireEval3: tuple.16,
747 wireEval4: tuple.17,
748 sigmaEval0: tuple.18,
749 sigmaEval1: tuple.19,
750 sigmaEval2: tuple.20,
751 sigmaEval3: tuple.21,
752 prodPermZetaOmegaEval: tuple.22,
753 }
754 }
755 }
756 #[automatically_derived]
757 impl alloy_sol_types::SolValue for PlonkProof {
758 type SolType = Self;
759 }
760 #[automatically_derived]
761 impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
762 #[inline]
763 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
764 (
765 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
766 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
767 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
768 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
769 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
770 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
771 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
772 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
773 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
774 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
775 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
776 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
777 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
778 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
779 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
780 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
781 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
782 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
783 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
784 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
785 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
786 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
787 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
788 &self.prodPermZetaOmegaEval,
789 ),
790 )
791 }
792 #[inline]
793 fn stv_abi_encoded_size(&self) -> usize {
794 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
795 return size;
796 }
797 let tuple =
798 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
799 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
800 }
801 #[inline]
802 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
803 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
804 }
805 #[inline]
806 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
807 let tuple =
808 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
809 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
810 &tuple, out,
811 )
812 }
813 #[inline]
814 fn stv_abi_packed_encoded_size(&self) -> usize {
815 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
816 return size;
817 }
818 let tuple =
819 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
820 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
821 &tuple,
822 )
823 }
824 }
825 #[automatically_derived]
826 impl alloy_sol_types::SolType for PlonkProof {
827 type RustType = Self;
828 type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
829 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
830 const ENCODED_SIZE: Option<usize> =
831 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
832 const PACKED_ENCODED_SIZE: Option<usize> =
833 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
834 #[inline]
835 fn valid_token(token: &Self::Token<'_>) -> bool {
836 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
837 }
838 #[inline]
839 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
840 let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
841 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
842 }
843 }
844 #[automatically_derived]
845 impl alloy_sol_types::SolStruct for PlonkProof {
846 const NAME: &'static str = "PlonkProof";
847 #[inline]
848 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
849 alloy_sol_types::private::Cow::Borrowed(
850 "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)",
851 )
852 }
853 #[inline]
854 fn eip712_components(
855 ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
856 {
857 let mut components = alloy_sol_types::private::Vec::with_capacity(13);
858 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
859 components
860 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
861 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
862 components
863 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
864 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
865 components
866 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
867 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
868 components
869 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
870 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
871 components
872 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
873 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
874 components
875 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
876 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
877 components
878 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
879 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
880 components
881 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
882 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
883 components
884 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
885 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
886 components
887 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
888 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
889 components
890 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
891 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
892 components
893 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
894 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
895 components
896 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
897 components
898 }
899 #[inline]
900 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
901 [
902 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
903 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
904 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
905 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
906 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
907 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
908 .0,
909 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
910 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
911 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
912 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
913 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
914 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
915 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
916 .0,
917 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
918 &self.wireEval0,
919 )
920 .0,
921 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
922 &self.wireEval1,
923 )
924 .0,
925 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
926 &self.wireEval2,
927 )
928 .0,
929 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
930 &self.wireEval3,
931 )
932 .0,
933 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
934 &self.wireEval4,
935 )
936 .0,
937 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
938 &self.sigmaEval0,
939 )
940 .0,
941 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
942 &self.sigmaEval1,
943 )
944 .0,
945 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
946 &self.sigmaEval2,
947 )
948 .0,
949 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
950 &self.sigmaEval3,
951 )
952 .0,
953 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
954 &self.prodPermZetaOmegaEval,
955 )
956 .0,
957 ]
958 .concat()
959 }
960 }
961 #[automatically_derived]
962 impl alloy_sol_types::EventTopic for PlonkProof {
963 #[inline]
964 fn topic_preimage_length(rust: &Self::RustType) -> usize {
965 0usize
966 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
967 &rust.wire0,
968 )
969 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
970 &rust.wire1,
971 )
972 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
973 &rust.wire2,
974 )
975 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
976 &rust.wire3,
977 )
978 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
979 &rust.wire4,
980 )
981 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
982 &rust.prodPerm,
983 )
984 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
985 &rust.split0,
986 )
987 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
988 &rust.split1,
989 )
990 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
991 &rust.split2,
992 )
993 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
994 &rust.split3,
995 )
996 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
997 &rust.split4,
998 )
999 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1000 &rust.zeta,
1001 )
1002 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1003 &rust.zetaOmega,
1004 )
1005 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1006 &rust.wireEval0,
1007 )
1008 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1009 &rust.wireEval1,
1010 )
1011 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1012 &rust.wireEval2,
1013 )
1014 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1015 &rust.wireEval3,
1016 )
1017 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1018 &rust.wireEval4,
1019 )
1020 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1021 &rust.sigmaEval0,
1022 )
1023 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1024 &rust.sigmaEval1,
1025 )
1026 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1027 &rust.sigmaEval2,
1028 )
1029 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1030 &rust.sigmaEval3,
1031 )
1032 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1033 &rust.prodPermZetaOmegaEval,
1034 )
1035 }
1036 #[inline]
1037 fn encode_topic_preimage(
1038 rust: &Self::RustType,
1039 out: &mut alloy_sol_types::private::Vec<u8>,
1040 ) {
1041 out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1042 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1043 &rust.wire0,
1044 out,
1045 );
1046 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1047 &rust.wire1,
1048 out,
1049 );
1050 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1051 &rust.wire2,
1052 out,
1053 );
1054 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1055 &rust.wire3,
1056 out,
1057 );
1058 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1059 &rust.wire4,
1060 out,
1061 );
1062 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1063 &rust.prodPerm,
1064 out,
1065 );
1066 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1067 &rust.split0,
1068 out,
1069 );
1070 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1071 &rust.split1,
1072 out,
1073 );
1074 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1075 &rust.split2,
1076 out,
1077 );
1078 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1079 &rust.split3,
1080 out,
1081 );
1082 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1083 &rust.split4,
1084 out,
1085 );
1086 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1087 &rust.zeta, out,
1088 );
1089 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1090 &rust.zetaOmega,
1091 out,
1092 );
1093 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1094 &rust.wireEval0,
1095 out,
1096 );
1097 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1098 &rust.wireEval1,
1099 out,
1100 );
1101 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1102 &rust.wireEval2,
1103 out,
1104 );
1105 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1106 &rust.wireEval3,
1107 out,
1108 );
1109 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1110 &rust.wireEval4,
1111 out,
1112 );
1113 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1114 &rust.sigmaEval0,
1115 out,
1116 );
1117 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1118 &rust.sigmaEval1,
1119 out,
1120 );
1121 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1122 &rust.sigmaEval2,
1123 out,
1124 );
1125 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1126 &rust.sigmaEval3,
1127 out,
1128 );
1129 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1130 &rust.prodPermZetaOmegaEval,
1131 out,
1132 );
1133 }
1134 #[inline]
1135 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1136 let mut out = alloy_sol_types::private::Vec::new();
1137 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1138 alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1139 }
1140 }
1141 };
1142 #[derive()]
1143 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1147 #[derive(Clone)]
1148 pub struct VerifyingKey {
1149 #[allow(missing_docs)]
1150 pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1151 #[allow(missing_docs)]
1152 pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1153 #[allow(missing_docs)]
1154 pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1155 #[allow(missing_docs)]
1156 pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157 #[allow(missing_docs)]
1158 pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159 #[allow(missing_docs)]
1160 pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161 #[allow(missing_docs)]
1162 pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163 #[allow(missing_docs)]
1164 pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165 #[allow(missing_docs)]
1166 pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167 #[allow(missing_docs)]
1168 pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169 #[allow(missing_docs)]
1170 pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171 #[allow(missing_docs)]
1172 pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173 #[allow(missing_docs)]
1174 pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175 #[allow(missing_docs)]
1176 pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177 #[allow(missing_docs)]
1178 pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179 #[allow(missing_docs)]
1180 pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181 #[allow(missing_docs)]
1182 pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183 #[allow(missing_docs)]
1184 pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185 #[allow(missing_docs)]
1186 pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187 #[allow(missing_docs)]
1188 pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189 #[allow(missing_docs)]
1190 pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1191 #[allow(missing_docs)]
1192 pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1193 }
1194 #[allow(
1195 non_camel_case_types,
1196 non_snake_case,
1197 clippy::pub_underscore_fields,
1198 clippy::style
1199 )]
1200 const _: () = {
1201 use alloy::sol_types as alloy_sol_types;
1202 #[doc(hidden)]
1203 type UnderlyingSolTuple<'a> = (
1204 alloy::sol_types::sol_data::Uint<256>,
1205 alloy::sol_types::sol_data::Uint<256>,
1206 BN254::G1Point,
1207 BN254::G1Point,
1208 BN254::G1Point,
1209 BN254::G1Point,
1210 BN254::G1Point,
1211 BN254::G1Point,
1212 BN254::G1Point,
1213 BN254::G1Point,
1214 BN254::G1Point,
1215 BN254::G1Point,
1216 BN254::G1Point,
1217 BN254::G1Point,
1218 BN254::G1Point,
1219 BN254::G1Point,
1220 BN254::G1Point,
1221 BN254::G1Point,
1222 BN254::G1Point,
1223 BN254::G1Point,
1224 alloy::sol_types::sol_data::FixedBytes<32>,
1225 alloy::sol_types::sol_data::FixedBytes<32>,
1226 );
1227 #[doc(hidden)]
1228 type UnderlyingRustTuple<'a> = (
1229 alloy::sol_types::private::primitives::aliases::U256,
1230 alloy::sol_types::private::primitives::aliases::U256,
1231 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1232 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1233 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249 alloy::sol_types::private::FixedBytes<32>,
1250 alloy::sol_types::private::FixedBytes<32>,
1251 );
1252 #[cfg(test)]
1253 #[allow(dead_code, unreachable_patterns)]
1254 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1255 match _t {
1256 alloy_sol_types::private::AssertTypeEq::<
1257 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1258 >(_) => {},
1259 }
1260 }
1261 #[automatically_derived]
1262 #[doc(hidden)]
1263 impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1264 fn from(value: VerifyingKey) -> Self {
1265 (
1266 value.domainSize,
1267 value.numInputs,
1268 value.sigma0,
1269 value.sigma1,
1270 value.sigma2,
1271 value.sigma3,
1272 value.sigma4,
1273 value.q1,
1274 value.q2,
1275 value.q3,
1276 value.q4,
1277 value.qM12,
1278 value.qM34,
1279 value.qO,
1280 value.qC,
1281 value.qH1,
1282 value.qH2,
1283 value.qH3,
1284 value.qH4,
1285 value.qEcc,
1286 value.g2LSB,
1287 value.g2MSB,
1288 )
1289 }
1290 }
1291 #[automatically_derived]
1292 #[doc(hidden)]
1293 impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1294 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1295 Self {
1296 domainSize: tuple.0,
1297 numInputs: tuple.1,
1298 sigma0: tuple.2,
1299 sigma1: tuple.3,
1300 sigma2: tuple.4,
1301 sigma3: tuple.5,
1302 sigma4: tuple.6,
1303 q1: tuple.7,
1304 q2: tuple.8,
1305 q3: tuple.9,
1306 q4: tuple.10,
1307 qM12: tuple.11,
1308 qM34: tuple.12,
1309 qO: tuple.13,
1310 qC: tuple.14,
1311 qH1: tuple.15,
1312 qH2: tuple.16,
1313 qH3: tuple.17,
1314 qH4: tuple.18,
1315 qEcc: tuple.19,
1316 g2LSB: tuple.20,
1317 g2MSB: tuple.21,
1318 }
1319 }
1320 }
1321 #[automatically_derived]
1322 impl alloy_sol_types::SolValue for VerifyingKey {
1323 type SolType = Self;
1324 }
1325 #[automatically_derived]
1326 impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1327 #[inline]
1328 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1329 (
1330 <alloy::sol_types::sol_data::Uint<
1331 256,
1332 > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1333 <alloy::sol_types::sol_data::Uint<
1334 256,
1335 > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1336 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1337 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1338 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1339 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1340 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1341 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1342 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1343 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1344 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1345 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1346 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1347 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1348 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1349 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1350 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1351 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1352 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1353 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1354 <alloy::sol_types::sol_data::FixedBytes<
1355 32,
1356 > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1357 <alloy::sol_types::sol_data::FixedBytes<
1358 32,
1359 > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1360 )
1361 }
1362 #[inline]
1363 fn stv_abi_encoded_size(&self) -> usize {
1364 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1365 return size;
1366 }
1367 let tuple =
1368 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1369 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1370 }
1371 #[inline]
1372 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1373 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1374 }
1375 #[inline]
1376 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1377 let tuple =
1378 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1379 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1380 &tuple, out,
1381 )
1382 }
1383 #[inline]
1384 fn stv_abi_packed_encoded_size(&self) -> usize {
1385 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1386 return size;
1387 }
1388 let tuple =
1389 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1390 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1391 &tuple,
1392 )
1393 }
1394 }
1395 #[automatically_derived]
1396 impl alloy_sol_types::SolType for VerifyingKey {
1397 type RustType = Self;
1398 type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1399 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1400 const ENCODED_SIZE: Option<usize> =
1401 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1402 const PACKED_ENCODED_SIZE: Option<usize> =
1403 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1404 #[inline]
1405 fn valid_token(token: &Self::Token<'_>) -> bool {
1406 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1407 }
1408 #[inline]
1409 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1410 let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1411 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1412 }
1413 }
1414 #[automatically_derived]
1415 impl alloy_sol_types::SolStruct for VerifyingKey {
1416 const NAME: &'static str = "VerifyingKey";
1417 #[inline]
1418 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1419 alloy_sol_types::private::Cow::Borrowed(
1420 "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)",
1421 )
1422 }
1423 #[inline]
1424 fn eip712_components(
1425 ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1426 {
1427 let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1428 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1429 components
1430 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1431 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1432 components
1433 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1434 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1435 components
1436 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1437 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1438 components
1439 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1440 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1441 components
1442 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1443 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1444 components
1445 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1446 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1447 components
1448 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1449 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1450 components
1451 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1452 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1453 components
1454 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1455 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1456 components
1457 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1458 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1459 components
1460 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1461 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1462 components
1463 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1464 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1465 components
1466 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1467 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1468 components
1469 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1470 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1471 components
1472 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1473 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1474 components
1475 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1476 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1477 components
1478 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1479 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1480 components
1481 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1482 components
1483 }
1484 #[inline]
1485 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1486 [
1487 <alloy::sol_types::sol_data::Uint<
1488 256,
1489 > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1490 .0,
1491 <alloy::sol_types::sol_data::Uint<
1492 256,
1493 > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1494 .0,
1495 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1496 &self.sigma0,
1497 )
1498 .0,
1499 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1500 &self.sigma1,
1501 )
1502 .0,
1503 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1504 &self.sigma2,
1505 )
1506 .0,
1507 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1508 &self.sigma3,
1509 )
1510 .0,
1511 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1512 &self.sigma4,
1513 )
1514 .0,
1515 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1516 &self.q1,
1517 )
1518 .0,
1519 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1520 &self.q2,
1521 )
1522 .0,
1523 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1524 &self.q3,
1525 )
1526 .0,
1527 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1528 &self.q4,
1529 )
1530 .0,
1531 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1532 &self.qM12,
1533 )
1534 .0,
1535 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1536 &self.qM34,
1537 )
1538 .0,
1539 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1540 &self.qO,
1541 )
1542 .0,
1543 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1544 &self.qC,
1545 )
1546 .0,
1547 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1548 &self.qH1,
1549 )
1550 .0,
1551 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1552 &self.qH2,
1553 )
1554 .0,
1555 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1556 &self.qH3,
1557 )
1558 .0,
1559 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1560 &self.qH4,
1561 )
1562 .0,
1563 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1564 &self.qEcc,
1565 )
1566 .0,
1567 <alloy::sol_types::sol_data::FixedBytes<
1568 32,
1569 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1570 .0,
1571 <alloy::sol_types::sol_data::FixedBytes<
1572 32,
1573 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1574 .0,
1575 ]
1576 .concat()
1577 }
1578 }
1579 #[automatically_derived]
1580 impl alloy_sol_types::EventTopic for VerifyingKey {
1581 #[inline]
1582 fn topic_preimage_length(rust: &Self::RustType) -> usize {
1583 0usize
1584 + <alloy::sol_types::sol_data::Uint<
1585 256,
1586 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1587 &rust.domainSize,
1588 )
1589 + <alloy::sol_types::sol_data::Uint<
1590 256,
1591 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1592 &rust.numInputs,
1593 )
1594 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1595 &rust.sigma0,
1596 )
1597 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1598 &rust.sigma1,
1599 )
1600 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1601 &rust.sigma2,
1602 )
1603 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1604 &rust.sigma3,
1605 )
1606 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1607 &rust.sigma4,
1608 )
1609 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1610 &rust.q1,
1611 )
1612 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1613 &rust.q2,
1614 )
1615 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1616 &rust.q3,
1617 )
1618 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1619 &rust.q4,
1620 )
1621 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1622 &rust.qM12,
1623 )
1624 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1625 &rust.qM34,
1626 )
1627 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1628 &rust.qO,
1629 )
1630 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1631 &rust.qC,
1632 )
1633 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1634 &rust.qH1,
1635 )
1636 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1637 &rust.qH2,
1638 )
1639 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1640 &rust.qH3,
1641 )
1642 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1643 &rust.qH4,
1644 )
1645 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1646 &rust.qEcc,
1647 )
1648 + <alloy::sol_types::sol_data::FixedBytes<
1649 32,
1650 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1651 + <alloy::sol_types::sol_data::FixedBytes<
1652 32,
1653 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1654 }
1655 #[inline]
1656 fn encode_topic_preimage(
1657 rust: &Self::RustType,
1658 out: &mut alloy_sol_types::private::Vec<u8>,
1659 ) {
1660 out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1661 <alloy::sol_types::sol_data::Uint<
1662 256,
1663 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1664 &rust.domainSize,
1665 out,
1666 );
1667 <alloy::sol_types::sol_data::Uint<
1668 256,
1669 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1670 &rust.numInputs,
1671 out,
1672 );
1673 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1674 &rust.sigma0,
1675 out,
1676 );
1677 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1678 &rust.sigma1,
1679 out,
1680 );
1681 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1682 &rust.sigma2,
1683 out,
1684 );
1685 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1686 &rust.sigma3,
1687 out,
1688 );
1689 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1690 &rust.sigma4,
1691 out,
1692 );
1693 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1694 &rust.q1, out,
1695 );
1696 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1697 &rust.q2, out,
1698 );
1699 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1700 &rust.q3, out,
1701 );
1702 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1703 &rust.q4, out,
1704 );
1705 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1706 &rust.qM12, out,
1707 );
1708 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1709 &rust.qM34, out,
1710 );
1711 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1712 &rust.qO, out,
1713 );
1714 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1715 &rust.qC, out,
1716 );
1717 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1718 &rust.qH1, out,
1719 );
1720 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1721 &rust.qH2, out,
1722 );
1723 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1724 &rust.qH3, out,
1725 );
1726 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1727 &rust.qH4, out,
1728 );
1729 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1730 &rust.qEcc, out,
1731 );
1732 <alloy::sol_types::sol_data::FixedBytes<
1733 32,
1734 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1735 &rust.g2LSB,
1736 out,
1737 );
1738 <alloy::sol_types::sol_data::FixedBytes<
1739 32,
1740 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1741 &rust.g2MSB,
1742 out,
1743 );
1744 }
1745 #[inline]
1746 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1747 let mut out = alloy_sol_types::private::Vec::new();
1748 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1749 alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1750 }
1751 }
1752 };
1753 use alloy::contract as alloy_contract;
1754 #[inline]
1758 pub const fn new<
1759 T: alloy_contract::private::Transport + ::core::clone::Clone,
1760 P: alloy_contract::private::Provider<T, N>,
1761 N: alloy_contract::private::Network,
1762 >(
1763 address: alloy_sol_types::private::Address,
1764 provider: P,
1765 ) -> IPlonkVerifierInstance<T, P, N> {
1766 IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1767 }
1768 #[derive(Clone)]
1780 pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1781 address: alloy_sol_types::private::Address,
1782 provider: P,
1783 _network_transport: ::core::marker::PhantomData<(N, T)>,
1784 }
1785 #[automatically_derived]
1786 impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1787 #[inline]
1788 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1789 f.debug_tuple("IPlonkVerifierInstance")
1790 .field(&self.address)
1791 .finish()
1792 }
1793 }
1794 #[automatically_derived]
1796 impl<
1797 T: alloy_contract::private::Transport + ::core::clone::Clone,
1798 P: alloy_contract::private::Provider<T, N>,
1799 N: alloy_contract::private::Network,
1800 > IPlonkVerifierInstance<T, P, N>
1801 {
1802 #[inline]
1806 pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1807 Self {
1808 address,
1809 provider,
1810 _network_transport: ::core::marker::PhantomData,
1811 }
1812 }
1813 #[inline]
1815 pub const fn address(&self) -> &alloy_sol_types::private::Address {
1816 &self.address
1817 }
1818 #[inline]
1820 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1821 self.address = address;
1822 }
1823 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1825 self.set_address(address);
1826 self
1827 }
1828 #[inline]
1830 pub const fn provider(&self) -> &P {
1831 &self.provider
1832 }
1833 }
1834 impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1835 #[inline]
1837 pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1838 IPlonkVerifierInstance {
1839 address: self.address,
1840 provider: ::core::clone::Clone::clone(&self.provider),
1841 _network_transport: ::core::marker::PhantomData,
1842 }
1843 }
1844 }
1845 #[automatically_derived]
1847 impl<
1848 T: alloy_contract::private::Transport + ::core::clone::Clone,
1849 P: alloy_contract::private::Provider<T, N>,
1850 N: alloy_contract::private::Network,
1851 > IPlonkVerifierInstance<T, P, N>
1852 {
1853 pub fn call_builder<C: alloy_sol_types::SolCall>(
1858 &self,
1859 call: &C,
1860 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1861 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1862 }
1863 }
1864 #[automatically_derived]
1866 impl<
1867 T: alloy_contract::private::Transport + ::core::clone::Clone,
1868 P: alloy_contract::private::Provider<T, N>,
1869 N: alloy_contract::private::Network,
1870 > IPlonkVerifierInstance<T, P, N>
1871 {
1872 pub fn event_filter<E: alloy_sol_types::SolEvent>(
1877 &self,
1878 ) -> alloy_contract::Event<T, &P, E, N> {
1879 alloy_contract::Event::new_sol(&self.provider, &self.address)
1880 }
1881 }
1882}
1883#[allow(
2608 non_camel_case_types,
2609 non_snake_case,
2610 clippy::pub_underscore_fields,
2611 clippy::style,
2612 clippy::empty_structs_with_brackets
2613)]
2614pub mod PlonkVerifier {
2615 use super::*;
2616 use alloy::sol_types as alloy_sol_types;
2617 #[rustfmt::skip]
2623 #[allow(clippy::all)]
2624 pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2625 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",
2626 );
2627 #[rustfmt::skip]
2633 #[allow(clippy::all)]
2634 pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2635 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",
2636 );
2637 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2638 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2643 #[derive(Clone)]
2644 pub struct InvalidPlonkArgs {}
2645 #[allow(
2646 non_camel_case_types,
2647 non_snake_case,
2648 clippy::pub_underscore_fields,
2649 clippy::style
2650 )]
2651 const _: () = {
2652 use alloy::sol_types as alloy_sol_types;
2653 #[doc(hidden)]
2654 type UnderlyingSolTuple<'a> = ();
2655 #[doc(hidden)]
2656 type UnderlyingRustTuple<'a> = ();
2657 #[cfg(test)]
2658 #[allow(dead_code, unreachable_patterns)]
2659 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2660 match _t {
2661 alloy_sol_types::private::AssertTypeEq::<
2662 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2663 >(_) => {},
2664 }
2665 }
2666 #[automatically_derived]
2667 #[doc(hidden)]
2668 impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
2669 fn from(value: InvalidPlonkArgs) -> Self {
2670 ()
2671 }
2672 }
2673 #[automatically_derived]
2674 #[doc(hidden)]
2675 impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
2676 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2677 Self {}
2678 }
2679 }
2680 #[automatically_derived]
2681 impl alloy_sol_types::SolError for InvalidPlonkArgs {
2682 type Parameters<'a> = UnderlyingSolTuple<'a>;
2683 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2684 const SIGNATURE: &'static str = "InvalidPlonkArgs()";
2685 const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
2686 #[inline]
2687 fn new<'a>(
2688 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2689 ) -> Self {
2690 tuple.into()
2691 }
2692 #[inline]
2693 fn tokenize(&self) -> Self::Token<'_> {
2694 ()
2695 }
2696 }
2697 };
2698 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2699 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2704 #[derive(Clone)]
2705 pub struct UnsupportedDegree {}
2706 #[allow(
2707 non_camel_case_types,
2708 non_snake_case,
2709 clippy::pub_underscore_fields,
2710 clippy::style
2711 )]
2712 const _: () = {
2713 use alloy::sol_types as alloy_sol_types;
2714 #[doc(hidden)]
2715 type UnderlyingSolTuple<'a> = ();
2716 #[doc(hidden)]
2717 type UnderlyingRustTuple<'a> = ();
2718 #[cfg(test)]
2719 #[allow(dead_code, unreachable_patterns)]
2720 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2721 match _t {
2722 alloy_sol_types::private::AssertTypeEq::<
2723 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2724 >(_) => {},
2725 }
2726 }
2727 #[automatically_derived]
2728 #[doc(hidden)]
2729 impl ::core::convert::From<UnsupportedDegree> for UnderlyingRustTuple<'_> {
2730 fn from(value: UnsupportedDegree) -> Self {
2731 ()
2732 }
2733 }
2734 #[automatically_derived]
2735 #[doc(hidden)]
2736 impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
2737 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2738 Self {}
2739 }
2740 }
2741 #[automatically_derived]
2742 impl alloy_sol_types::SolError for UnsupportedDegree {
2743 type Parameters<'a> = UnderlyingSolTuple<'a>;
2744 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2745 const SIGNATURE: &'static str = "UnsupportedDegree()";
2746 const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
2747 #[inline]
2748 fn new<'a>(
2749 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2750 ) -> Self {
2751 tuple.into()
2752 }
2753 #[inline]
2754 fn tokenize(&self) -> Self::Token<'_> {
2755 ()
2756 }
2757 }
2758 };
2759 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2760 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2765 #[derive(Clone)]
2766 pub struct WrongPlonkVK {}
2767 #[allow(
2768 non_camel_case_types,
2769 non_snake_case,
2770 clippy::pub_underscore_fields,
2771 clippy::style
2772 )]
2773 const _: () = {
2774 use alloy::sol_types as alloy_sol_types;
2775 #[doc(hidden)]
2776 type UnderlyingSolTuple<'a> = ();
2777 #[doc(hidden)]
2778 type UnderlyingRustTuple<'a> = ();
2779 #[cfg(test)]
2780 #[allow(dead_code, unreachable_patterns)]
2781 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2782 match _t {
2783 alloy_sol_types::private::AssertTypeEq::<
2784 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2785 >(_) => {},
2786 }
2787 }
2788 #[automatically_derived]
2789 #[doc(hidden)]
2790 impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
2791 fn from(value: WrongPlonkVK) -> Self {
2792 ()
2793 }
2794 }
2795 #[automatically_derived]
2796 #[doc(hidden)]
2797 impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
2798 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2799 Self {}
2800 }
2801 }
2802 #[automatically_derived]
2803 impl alloy_sol_types::SolError for WrongPlonkVK {
2804 type Parameters<'a> = UnderlyingSolTuple<'a>;
2805 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2806 const SIGNATURE: &'static str = "WrongPlonkVK()";
2807 const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
2808 #[inline]
2809 fn new<'a>(
2810 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2811 ) -> Self {
2812 tuple.into()
2813 }
2814 #[inline]
2815 fn tokenize(&self) -> Self::Token<'_> {
2816 ()
2817 }
2818 }
2819 };
2820 #[derive()]
2821 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2826 #[derive(Clone)]
2827 pub struct verifyCall {
2828 #[allow(missing_docs)]
2829 pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
2830 #[allow(missing_docs)]
2831 pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
2832 #[allow(missing_docs)]
2833 pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
2834 }
2835 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2836 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2838 #[derive(Clone)]
2839 pub struct verifyReturn {
2840 #[allow(missing_docs)]
2841 pub _0: bool,
2842 }
2843 #[allow(
2844 non_camel_case_types,
2845 non_snake_case,
2846 clippy::pub_underscore_fields,
2847 clippy::style
2848 )]
2849 const _: () = {
2850 use alloy::sol_types as alloy_sol_types;
2851 {
2852 #[doc(hidden)]
2853 type UnderlyingSolTuple<'a> = (
2854 IPlonkVerifier::VerifyingKey,
2855 alloy::sol_types::sol_data::FixedArray<
2856 alloy::sol_types::sol_data::Uint<256>,
2857 7usize,
2858 >,
2859 IPlonkVerifier::PlonkProof,
2860 );
2861 #[doc(hidden)]
2862 type UnderlyingRustTuple<'a> = (
2863 <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
2864 [alloy::sol_types::private::primitives::aliases::U256; 7usize],
2865 <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
2866 );
2867 #[cfg(test)]
2868 #[allow(dead_code, unreachable_patterns)]
2869 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2870 match _t {
2871 alloy_sol_types::private::AssertTypeEq::<
2872 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2873 >(_) => {},
2874 }
2875 }
2876 #[automatically_derived]
2877 #[doc(hidden)]
2878 impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
2879 fn from(value: verifyCall) -> Self {
2880 (value.verifyingKey, value.publicInput, value.proof)
2881 }
2882 }
2883 #[automatically_derived]
2884 #[doc(hidden)]
2885 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
2886 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2887 Self {
2888 verifyingKey: tuple.0,
2889 publicInput: tuple.1,
2890 proof: tuple.2,
2891 }
2892 }
2893 }
2894 }
2895 {
2896 #[doc(hidden)]
2897 type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
2898 #[doc(hidden)]
2899 type UnderlyingRustTuple<'a> = (bool,);
2900 #[cfg(test)]
2901 #[allow(dead_code, unreachable_patterns)]
2902 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2903 match _t {
2904 alloy_sol_types::private::AssertTypeEq::<
2905 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2906 >(_) => {},
2907 }
2908 }
2909 #[automatically_derived]
2910 #[doc(hidden)]
2911 impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
2912 fn from(value: verifyReturn) -> Self {
2913 (value._0,)
2914 }
2915 }
2916 #[automatically_derived]
2917 #[doc(hidden)]
2918 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
2919 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2920 Self { _0: tuple.0 }
2921 }
2922 }
2923 }
2924 #[automatically_derived]
2925 impl alloy_sol_types::SolCall for verifyCall {
2926 type Parameters<'a> = (
2927 IPlonkVerifier::VerifyingKey,
2928 alloy::sol_types::sol_data::FixedArray<
2929 alloy::sol_types::sol_data::Uint<256>,
2930 7usize,
2931 >,
2932 IPlonkVerifier::PlonkProof,
2933 );
2934 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2935 type Return = verifyReturn;
2936 type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
2937 type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2938 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))";
2939 const SELECTOR: [u8; 4] = [119u8, 174u8, 63u8, 7u8];
2940 #[inline]
2941 fn new<'a>(
2942 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2943 ) -> Self {
2944 tuple.into()
2945 }
2946 #[inline]
2947 fn tokenize(&self) -> Self::Token<'_> {
2948 (
2949 <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
2950 &self.verifyingKey,
2951 ),
2952 <alloy::sol_types::sol_data::FixedArray<
2953 alloy::sol_types::sol_data::Uint<256>,
2954 7usize,
2955 > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
2956 <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
2957 )
2958 }
2959 #[inline]
2960 fn abi_decode_returns(
2961 data: &[u8],
2962 validate: bool,
2963 ) -> alloy_sol_types::Result<Self::Return> {
2964 <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
2965 data, validate,
2966 )
2967 .map(Into::into)
2968 }
2969 }
2970 };
2971 #[derive()]
2973 pub enum PlonkVerifierCalls {
2974 #[allow(missing_docs)]
2975 verify(verifyCall),
2976 }
2977 #[automatically_derived]
2978 impl PlonkVerifierCalls {
2979 pub const SELECTORS: &'static [[u8; 4usize]] = &[[119u8, 174u8, 63u8, 7u8]];
2986 }
2987 #[automatically_derived]
2988 impl alloy_sol_types::SolInterface for PlonkVerifierCalls {
2989 const NAME: &'static str = "PlonkVerifierCalls";
2990 const MIN_DATA_LENGTH: usize = 672usize;
2991 const COUNT: usize = 1usize;
2992 #[inline]
2993 fn selector(&self) -> [u8; 4] {
2994 match self {
2995 Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
2996 }
2997 }
2998 #[inline]
2999 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3000 Self::SELECTORS.get(i).copied()
3001 }
3002 #[inline]
3003 fn valid_selector(selector: [u8; 4]) -> bool {
3004 Self::SELECTORS.binary_search(&selector).is_ok()
3005 }
3006 #[inline]
3007 #[allow(non_snake_case)]
3008 fn abi_decode_raw(
3009 selector: [u8; 4],
3010 data: &[u8],
3011 validate: bool,
3012 ) -> alloy_sol_types::Result<Self> {
3013 static DECODE_SHIMS: &[fn(
3014 &[u8],
3015 bool,
3016 )
3017 -> alloy_sol_types::Result<PlonkVerifierCalls>] = &[{
3018 fn verify(
3019 data: &[u8],
3020 validate: bool,
3021 ) -> alloy_sol_types::Result<PlonkVerifierCalls> {
3022 <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
3023 .map(PlonkVerifierCalls::verify)
3024 }
3025 verify
3026 }];
3027 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3028 return Err(alloy_sol_types::Error::unknown_selector(
3029 <Self as alloy_sol_types::SolInterface>::NAME,
3030 selector,
3031 ));
3032 };
3033 DECODE_SHIMS[idx](data, validate)
3034 }
3035 #[inline]
3036 fn abi_encoded_size(&self) -> usize {
3037 match self {
3038 Self::verify(inner) => {
3039 <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
3040 },
3041 }
3042 }
3043 #[inline]
3044 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3045 match self {
3046 Self::verify(inner) => {
3047 <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
3048 },
3049 }
3050 }
3051 }
3052 #[derive(Debug, PartialEq, Eq, Hash)]
3054 pub enum PlonkVerifierErrors {
3055 #[allow(missing_docs)]
3056 InvalidPlonkArgs(InvalidPlonkArgs),
3057 #[allow(missing_docs)]
3058 UnsupportedDegree(UnsupportedDegree),
3059 #[allow(missing_docs)]
3060 WrongPlonkVK(WrongPlonkVK),
3061 }
3062 #[automatically_derived]
3063 impl PlonkVerifierErrors {
3064 pub const SELECTORS: &'static [[u8; 4usize]] = &[
3071 [65u8, 245u8, 59u8, 18u8],
3072 [226u8, 239u8, 9u8, 229u8],
3073 [253u8, 154u8, 45u8, 27u8],
3074 ];
3075 }
3076 #[automatically_derived]
3077 impl alloy_sol_types::SolInterface for PlonkVerifierErrors {
3078 const NAME: &'static str = "PlonkVerifierErrors";
3079 const MIN_DATA_LENGTH: usize = 0usize;
3080 const COUNT: usize = 3usize;
3081 #[inline]
3082 fn selector(&self) -> [u8; 4] {
3083 match self {
3084 Self::InvalidPlonkArgs(_) => {
3085 <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
3086 },
3087 Self::UnsupportedDegree(_) => {
3088 <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
3089 },
3090 Self::WrongPlonkVK(_) => <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR,
3091 }
3092 }
3093 #[inline]
3094 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3095 Self::SELECTORS.get(i).copied()
3096 }
3097 #[inline]
3098 fn valid_selector(selector: [u8; 4]) -> bool {
3099 Self::SELECTORS.binary_search(&selector).is_ok()
3100 }
3101 #[inline]
3102 #[allow(non_snake_case)]
3103 fn abi_decode_raw(
3104 selector: [u8; 4],
3105 data: &[u8],
3106 validate: bool,
3107 ) -> alloy_sol_types::Result<Self> {
3108 static DECODE_SHIMS: &[fn(
3109 &[u8],
3110 bool,
3111 )
3112 -> alloy_sol_types::Result<PlonkVerifierErrors>] = &[
3113 {
3114 fn WrongPlonkVK(
3115 data: &[u8],
3116 validate: bool,
3117 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3118 <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
3119 .map(PlonkVerifierErrors::WrongPlonkVK)
3120 }
3121 WrongPlonkVK
3122 },
3123 {
3124 fn UnsupportedDegree(
3125 data: &[u8],
3126 validate: bool,
3127 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3128 <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
3129 data, validate,
3130 )
3131 .map(PlonkVerifierErrors::UnsupportedDegree)
3132 }
3133 UnsupportedDegree
3134 },
3135 {
3136 fn InvalidPlonkArgs(
3137 data: &[u8],
3138 validate: bool,
3139 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3140 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
3141 data, validate,
3142 )
3143 .map(PlonkVerifierErrors::InvalidPlonkArgs)
3144 }
3145 InvalidPlonkArgs
3146 },
3147 ];
3148 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3149 return Err(alloy_sol_types::Error::unknown_selector(
3150 <Self as alloy_sol_types::SolInterface>::NAME,
3151 selector,
3152 ));
3153 };
3154 DECODE_SHIMS[idx](data, validate)
3155 }
3156 #[inline]
3157 fn abi_encoded_size(&self) -> usize {
3158 match self {
3159 Self::InvalidPlonkArgs(inner) => {
3160 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
3161 },
3162 Self::UnsupportedDegree(inner) => {
3163 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(inner)
3164 },
3165 Self::WrongPlonkVK(inner) => {
3166 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
3167 },
3168 }
3169 }
3170 #[inline]
3171 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3172 match self {
3173 Self::InvalidPlonkArgs(inner) => {
3174 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
3175 },
3176 Self::UnsupportedDegree(inner) => {
3177 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
3178 },
3179 Self::WrongPlonkVK(inner) => {
3180 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
3181 },
3182 }
3183 }
3184 }
3185 use alloy::contract as alloy_contract;
3186 #[inline]
3190 pub const fn new<
3191 T: alloy_contract::private::Transport + ::core::clone::Clone,
3192 P: alloy_contract::private::Provider<T, N>,
3193 N: alloy_contract::private::Network,
3194 >(
3195 address: alloy_sol_types::private::Address,
3196 provider: P,
3197 ) -> PlonkVerifierInstance<T, P, N> {
3198 PlonkVerifierInstance::<T, P, N>::new(address, provider)
3199 }
3200 #[inline]
3206 pub fn deploy<
3207 T: alloy_contract::private::Transport + ::core::clone::Clone,
3208 P: alloy_contract::private::Provider<T, N>,
3209 N: alloy_contract::private::Network,
3210 >(
3211 provider: P,
3212 ) -> impl ::core::future::Future<Output = alloy_contract::Result<PlonkVerifierInstance<T, P, N>>>
3213 {
3214 PlonkVerifierInstance::<T, P, N>::deploy(provider)
3215 }
3216 #[inline]
3222 pub fn deploy_builder<
3223 T: alloy_contract::private::Transport + ::core::clone::Clone,
3224 P: alloy_contract::private::Provider<T, N>,
3225 N: alloy_contract::private::Network,
3226 >(
3227 provider: P,
3228 ) -> alloy_contract::RawCallBuilder<T, P, N> {
3229 PlonkVerifierInstance::<T, P, N>::deploy_builder(provider)
3230 }
3231 #[derive(Clone)]
3243 pub struct PlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
3244 address: alloy_sol_types::private::Address,
3245 provider: P,
3246 _network_transport: ::core::marker::PhantomData<(N, T)>,
3247 }
3248 #[automatically_derived]
3249 impl<T, P, N> ::core::fmt::Debug for PlonkVerifierInstance<T, P, N> {
3250 #[inline]
3251 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3252 f.debug_tuple("PlonkVerifierInstance")
3253 .field(&self.address)
3254 .finish()
3255 }
3256 }
3257 #[automatically_derived]
3259 impl<
3260 T: alloy_contract::private::Transport + ::core::clone::Clone,
3261 P: alloy_contract::private::Provider<T, N>,
3262 N: alloy_contract::private::Network,
3263 > PlonkVerifierInstance<T, P, N>
3264 {
3265 #[inline]
3269 pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
3270 Self {
3271 address,
3272 provider,
3273 _network_transport: ::core::marker::PhantomData,
3274 }
3275 }
3276 #[inline]
3282 pub async fn deploy(provider: P) -> alloy_contract::Result<PlonkVerifierInstance<T, P, N>> {
3283 let call_builder = Self::deploy_builder(provider);
3284 let contract_address = call_builder.deploy().await?;
3285 Ok(Self::new(contract_address, call_builder.provider))
3286 }
3287 #[inline]
3293 pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
3294 alloy_contract::RawCallBuilder::new_raw_deploy(
3295 provider,
3296 ::core::clone::Clone::clone(&BYTECODE),
3297 )
3298 }
3299 #[inline]
3301 pub const fn address(&self) -> &alloy_sol_types::private::Address {
3302 &self.address
3303 }
3304 #[inline]
3306 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3307 self.address = address;
3308 }
3309 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3311 self.set_address(address);
3312 self
3313 }
3314 #[inline]
3316 pub const fn provider(&self) -> &P {
3317 &self.provider
3318 }
3319 }
3320 impl<T, P: ::core::clone::Clone, N> PlonkVerifierInstance<T, &P, N> {
3321 #[inline]
3323 pub fn with_cloned_provider(self) -> PlonkVerifierInstance<T, P, N> {
3324 PlonkVerifierInstance {
3325 address: self.address,
3326 provider: ::core::clone::Clone::clone(&self.provider),
3327 _network_transport: ::core::marker::PhantomData,
3328 }
3329 }
3330 }
3331 #[automatically_derived]
3333 impl<
3334 T: alloy_contract::private::Transport + ::core::clone::Clone,
3335 P: alloy_contract::private::Provider<T, N>,
3336 N: alloy_contract::private::Network,
3337 > PlonkVerifierInstance<T, P, N>
3338 {
3339 pub fn call_builder<C: alloy_sol_types::SolCall>(
3344 &self,
3345 call: &C,
3346 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
3347 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3348 }
3349 pub fn verify(
3351 &self,
3352 verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3353 publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3354 proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3355 ) -> alloy_contract::SolCallBuilder<T, &P, verifyCall, N> {
3356 self.call_builder(&verifyCall {
3357 verifyingKey,
3358 publicInput,
3359 proof,
3360 })
3361 }
3362 }
3363 #[automatically_derived]
3365 impl<
3366 T: alloy_contract::private::Transport + ::core::clone::Clone,
3367 P: alloy_contract::private::Provider<T, N>,
3368 N: alloy_contract::private::Network,
3369 > PlonkVerifierInstance<T, P, N>
3370 {
3371 pub fn event_filter<E: alloy_sol_types::SolEvent>(
3376 &self,
3377 ) -> alloy_contract::Event<T, &P, E, N> {
3378 alloy_contract::Event::new_sol(&self.provider, &self.address)
3379 }
3380 }
3381}