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