Skip to main content

eigen_utils/slashing/middleware/
stake_registry.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library IStakeRegistryTypes {
6    type StakeType is uint8;
7    struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; }
8    struct StrategyParams { address strategy; uint96 multiplier; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod IStakeRegistryTypes {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct StakeType(u8);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<StakeType> for u8 {
29            #[inline]
30            fn stv_to_tokens(
31                &self,
32            ) -> <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::Token<'_>
33            {
34                alloy_sol_types::private::SolTypeValue::<
35                    alloy::sol_types::sol_data::Uint<8>,
36                >::stv_to_tokens(self)
37            }
38            #[inline]
39            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
40                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(self).0
41            }
42            #[inline]
43            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
44                <alloy::sol_types::sol_data::Uint<
45                    8,
46                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
47            }
48            #[inline]
49            fn stv_abi_packed_encoded_size(&self) -> usize {
50                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::abi_encoded_size(
51                    self,
52                )
53            }
54        }
55        #[automatically_derived]
56        impl StakeType {
57            /// The Solidity type name.
58            pub const NAME: &'static str = stringify!(@ name);
59            /// Convert from the underlying value type.
60            #[inline]
61            pub const fn from_underlying(value: u8) -> Self {
62                Self(value)
63            }
64            /// Return the underlying value.
65            #[inline]
66            pub const fn into_underlying(self) -> u8 {
67                self.0
68            }
69            /// Return the single encoding of this value, delegating to the
70            /// underlying type.
71            #[inline]
72            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
73                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
74            }
75            /// Return the packed encoding of this value, delegating to the
76            /// underlying type.
77            #[inline]
78            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
79                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
80            }
81        }
82        #[automatically_derived]
83        impl From<u8> for StakeType {
84            fn from(value: u8) -> Self {
85                Self::from_underlying(value)
86            }
87        }
88        #[automatically_derived]
89        impl From<StakeType> for u8 {
90            fn from(value: StakeType) -> Self {
91                value.into_underlying()
92            }
93        }
94        #[automatically_derived]
95        impl alloy_sol_types::SolType for StakeType {
96            type RustType = u8;
97            type Token<'a> =
98                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::Token<'a>;
99            const SOL_NAME: &'static str = Self::NAME;
100            const ENCODED_SIZE: Option<usize> =
101                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::ENCODED_SIZE;
102            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
103                8,
104            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
105            #[inline]
106            fn valid_token(token: &Self::Token<'_>) -> bool {
107                Self::type_check(token).is_ok()
108            }
109            #[inline]
110            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
111                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::type_check(token)
112            }
113            #[inline]
114            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
115                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::detokenize(token)
116            }
117        }
118        #[automatically_derived]
119        impl alloy_sol_types::EventTopic for StakeType {
120            #[inline]
121            fn topic_preimage_length(rust: &Self::RustType) -> usize {
122                <alloy::sol_types::sol_data::Uint<
123                    8,
124                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
125            }
126            #[inline]
127            fn encode_topic_preimage(
128                rust: &Self::RustType,
129                out: &mut alloy_sol_types::private::Vec<u8>,
130            ) {
131                <alloy::sol_types::sol_data::Uint<
132                    8,
133                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
134            }
135            #[inline]
136            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
137                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::EventTopic>::encode_topic(
138                    rust,
139                )
140            }
141        }
142    };
143    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
144    /**```solidity
145    struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; }
146    ```*/
147    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
148    #[derive(Clone)]
149    pub struct StakeUpdate {
150        #[allow(missing_docs)]
151        pub updateBlockNumber: u32,
152        #[allow(missing_docs)]
153        pub nextUpdateBlockNumber: u32,
154        #[allow(missing_docs)]
155        pub stake: alloy::sol_types::private::primitives::aliases::U96,
156    }
157    #[allow(
158        non_camel_case_types,
159        non_snake_case,
160        clippy::pub_underscore_fields,
161        clippy::style
162    )]
163    const _: () = {
164        use alloy::sol_types as alloy_sol_types;
165        #[doc(hidden)]
166        type UnderlyingSolTuple<'a> = (
167            alloy::sol_types::sol_data::Uint<32>,
168            alloy::sol_types::sol_data::Uint<32>,
169            alloy::sol_types::sol_data::Uint<96>,
170        );
171        #[doc(hidden)]
172        type UnderlyingRustTuple<'a> = (
173            u32,
174            u32,
175            alloy::sol_types::private::primitives::aliases::U96,
176        );
177        #[cfg(test)]
178        #[allow(dead_code, unreachable_patterns)]
179        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
180            match _t {
181                alloy_sol_types::private::AssertTypeEq::<
182                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
183                >(_) => {}
184            }
185        }
186        #[automatically_derived]
187        #[doc(hidden)]
188        impl ::core::convert::From<StakeUpdate> for UnderlyingRustTuple<'_> {
189            fn from(value: StakeUpdate) -> Self {
190                (
191                    value.updateBlockNumber,
192                    value.nextUpdateBlockNumber,
193                    value.stake,
194                )
195            }
196        }
197        #[automatically_derived]
198        #[doc(hidden)]
199        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeUpdate {
200            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
201                Self {
202                    updateBlockNumber: tuple.0,
203                    nextUpdateBlockNumber: tuple.1,
204                    stake: tuple.2,
205                }
206            }
207        }
208        #[automatically_derived]
209        impl alloy_sol_types::SolValue for StakeUpdate {
210            type SolType = Self;
211        }
212        #[automatically_derived]
213        impl alloy_sol_types::private::SolTypeValue<Self> for StakeUpdate {
214            #[inline]
215            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
216                (
217                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
218                        &self.updateBlockNumber,
219                    ),
220                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
221                        &self.nextUpdateBlockNumber,
222                    ),
223                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
224                        &self.stake,
225                    ),
226                )
227            }
228            #[inline]
229            fn stv_abi_encoded_size(&self) -> usize {
230                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
231                    return size;
232                }
233                let tuple =
234                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
235                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
236            }
237            #[inline]
238            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
239                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
240            }
241            #[inline]
242            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
243                let tuple =
244                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
245                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
246                    &tuple, out,
247                )
248            }
249            #[inline]
250            fn stv_abi_packed_encoded_size(&self) -> usize {
251                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
252                    return size;
253                }
254                let tuple =
255                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
256                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
257                    &tuple,
258                )
259            }
260        }
261        #[automatically_derived]
262        impl alloy_sol_types::SolType for StakeUpdate {
263            type RustType = Self;
264            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
265            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
266            const ENCODED_SIZE: Option<usize> =
267                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
268            const PACKED_ENCODED_SIZE: Option<usize> =
269                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
270            #[inline]
271            fn valid_token(token: &Self::Token<'_>) -> bool {
272                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
273            }
274            #[inline]
275            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
276                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
277                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
278            }
279        }
280        #[automatically_derived]
281        impl alloy_sol_types::SolStruct for StakeUpdate {
282            const NAME: &'static str = "StakeUpdate";
283            #[inline]
284            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
285                alloy_sol_types::private::Cow::Borrowed(
286                    "StakeUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint96 stake)",
287                )
288            }
289            #[inline]
290            fn eip712_components(
291            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
292            {
293                alloy_sol_types::private::Vec::new()
294            }
295            #[inline]
296            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
297                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
298            }
299            #[inline]
300            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
301                [
302                    <alloy::sol_types::sol_data::Uint<
303                        32,
304                    > as alloy_sol_types::SolType>::eip712_data_word(
305                            &self.updateBlockNumber,
306                        )
307                        .0,
308                    <alloy::sol_types::sol_data::Uint<
309                        32,
310                    > as alloy_sol_types::SolType>::eip712_data_word(
311                            &self.nextUpdateBlockNumber,
312                        )
313                        .0,
314                    <alloy::sol_types::sol_data::Uint<
315                        96,
316                    > as alloy_sol_types::SolType>::eip712_data_word(&self.stake)
317                        .0,
318                ]
319                    .concat()
320            }
321        }
322        #[automatically_derived]
323        impl alloy_sol_types::EventTopic for StakeUpdate {
324            #[inline]
325            fn topic_preimage_length(rust: &Self::RustType) -> usize {
326                0usize
327                    + <alloy::sol_types::sol_data::Uint<
328                        32,
329                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
330                        &rust.updateBlockNumber,
331                    )
332                    + <alloy::sol_types::sol_data::Uint<
333                        32,
334                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
335                        &rust.nextUpdateBlockNumber,
336                    )
337                    + <alloy::sol_types::sol_data::Uint<
338                        96,
339                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake)
340            }
341            #[inline]
342            fn encode_topic_preimage(
343                rust: &Self::RustType,
344                out: &mut alloy_sol_types::private::Vec<u8>,
345            ) {
346                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
347                <alloy::sol_types::sol_data::Uint<
348                    32,
349                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
350                    &rust.updateBlockNumber,
351                    out,
352                );
353                <alloy::sol_types::sol_data::Uint<
354                    32,
355                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
356                    &rust.nextUpdateBlockNumber,
357                    out,
358                );
359                <alloy::sol_types::sol_data::Uint<
360                    96,
361                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
362                    &rust.stake,
363                    out,
364                );
365            }
366            #[inline]
367            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
368                let mut out = alloy_sol_types::private::Vec::new();
369                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
370                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
371            }
372        }
373    };
374    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
375    /**```solidity
376    struct StrategyParams { address strategy; uint96 multiplier; }
377    ```*/
378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
379    #[derive(Clone)]
380    pub struct StrategyParams {
381        #[allow(missing_docs)]
382        pub strategy: alloy::sol_types::private::Address,
383        #[allow(missing_docs)]
384        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
385    }
386    #[allow(
387        non_camel_case_types,
388        non_snake_case,
389        clippy::pub_underscore_fields,
390        clippy::style
391    )]
392    const _: () = {
393        use alloy::sol_types as alloy_sol_types;
394        #[doc(hidden)]
395        type UnderlyingSolTuple<'a> = (
396            alloy::sol_types::sol_data::Address,
397            alloy::sol_types::sol_data::Uint<96>,
398        );
399        #[doc(hidden)]
400        type UnderlyingRustTuple<'a> = (
401            alloy::sol_types::private::Address,
402            alloy::sol_types::private::primitives::aliases::U96,
403        );
404        #[cfg(test)]
405        #[allow(dead_code, unreachable_patterns)]
406        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
407            match _t {
408                alloy_sol_types::private::AssertTypeEq::<
409                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
410                >(_) => {}
411            }
412        }
413        #[automatically_derived]
414        #[doc(hidden)]
415        impl ::core::convert::From<StrategyParams> for UnderlyingRustTuple<'_> {
416            fn from(value: StrategyParams) -> Self {
417                (value.strategy, value.multiplier)
418            }
419        }
420        #[automatically_derived]
421        #[doc(hidden)]
422        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyParams {
423            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
424                Self {
425                    strategy: tuple.0,
426                    multiplier: tuple.1,
427                }
428            }
429        }
430        #[automatically_derived]
431        impl alloy_sol_types::SolValue for StrategyParams {
432            type SolType = Self;
433        }
434        #[automatically_derived]
435        impl alloy_sol_types::private::SolTypeValue<Self> for StrategyParams {
436            #[inline]
437            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
438                (
439                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
440                        &self.strategy,
441                    ),
442                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
443                        &self.multiplier,
444                    ),
445                )
446            }
447            #[inline]
448            fn stv_abi_encoded_size(&self) -> usize {
449                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
450                    return size;
451                }
452                let tuple =
453                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
454                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
455            }
456            #[inline]
457            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
458                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
459            }
460            #[inline]
461            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
462                let tuple =
463                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
464                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
465                    &tuple, out,
466                )
467            }
468            #[inline]
469            fn stv_abi_packed_encoded_size(&self) -> usize {
470                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
471                    return size;
472                }
473                let tuple =
474                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
475                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
476                    &tuple,
477                )
478            }
479        }
480        #[automatically_derived]
481        impl alloy_sol_types::SolType for StrategyParams {
482            type RustType = Self;
483            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
484            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
485            const ENCODED_SIZE: Option<usize> =
486                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
487            const PACKED_ENCODED_SIZE: Option<usize> =
488                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
489            #[inline]
490            fn valid_token(token: &Self::Token<'_>) -> bool {
491                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
492            }
493            #[inline]
494            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
495                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
496                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
497            }
498        }
499        #[automatically_derived]
500        impl alloy_sol_types::SolStruct for StrategyParams {
501            const NAME: &'static str = "StrategyParams";
502            #[inline]
503            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
504                alloy_sol_types::private::Cow::Borrowed(
505                    "StrategyParams(address strategy,uint96 multiplier)",
506                )
507            }
508            #[inline]
509            fn eip712_components(
510            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
511            {
512                alloy_sol_types::private::Vec::new()
513            }
514            #[inline]
515            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
516                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
517            }
518            #[inline]
519            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
520                [
521                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
522                            &self.strategy,
523                        )
524                        .0,
525                    <alloy::sol_types::sol_data::Uint<
526                        96,
527                    > as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier)
528                        .0,
529                ]
530                    .concat()
531            }
532        }
533        #[automatically_derived]
534        impl alloy_sol_types::EventTopic for StrategyParams {
535            #[inline]
536            fn topic_preimage_length(rust: &Self::RustType) -> usize {
537                0usize
538                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
539                        &rust.strategy,
540                    )
541                    + <alloy::sol_types::sol_data::Uint<
542                        96,
543                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
544                        &rust.multiplier,
545                    )
546            }
547            #[inline]
548            fn encode_topic_preimage(
549                rust: &Self::RustType,
550                out: &mut alloy_sol_types::private::Vec<u8>,
551            ) {
552                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
553                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
554                    &rust.strategy,
555                    out,
556                );
557                <alloy::sol_types::sol_data::Uint<
558                    96,
559                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
560                    &rust.multiplier,
561                    out,
562                );
563            }
564            #[inline]
565            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
566                let mut out = alloy_sol_types::private::Vec::new();
567                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
568                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
569            }
570        }
571    };
572    use alloy::contract as alloy_contract;
573    /**Creates a new wrapper around an on-chain [`IStakeRegistryTypes`](self) contract instance.
574
575    See the [wrapper's documentation](`IStakeRegistryTypesInstance`) for more details.*/
576    #[inline]
577    pub const fn new<
578        P: alloy_contract::private::Provider<N>,
579        N: alloy_contract::private::Network,
580    >(
581        address: alloy_sol_types::private::Address,
582        provider: P,
583    ) -> IStakeRegistryTypesInstance<P, N> {
584        IStakeRegistryTypesInstance::<P, N>::new(address, provider)
585    }
586    /**A [`IStakeRegistryTypes`](self) instance.
587
588    Contains type-safe methods for interacting with an on-chain instance of the
589    [`IStakeRegistryTypes`](self) contract located at a given `address`, using a given
590    provider `P`.
591
592    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
593    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
594    be used to deploy a new instance of the contract.
595
596    See the [module-level documentation](self) for all the available methods.*/
597    #[derive(Clone)]
598    pub struct IStakeRegistryTypesInstance<P, N = alloy_contract::private::Ethereum> {
599        address: alloy_sol_types::private::Address,
600        provider: P,
601        _network: ::core::marker::PhantomData<N>,
602    }
603    #[automatically_derived]
604    impl<P, N> ::core::fmt::Debug for IStakeRegistryTypesInstance<P, N> {
605        #[inline]
606        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
607            f.debug_tuple("IStakeRegistryTypesInstance")
608                .field(&self.address)
609                .finish()
610        }
611    }
612    /// Instantiation and getters/setters.
613    #[automatically_derived]
614    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
615        IStakeRegistryTypesInstance<P, N>
616    {
617        /**Creates a new wrapper around an on-chain [`IStakeRegistryTypes`](self) contract instance.
618
619        See the [wrapper's documentation](`IStakeRegistryTypesInstance`) for more details.*/
620        #[inline]
621        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
622            Self {
623                address,
624                provider,
625                _network: ::core::marker::PhantomData,
626            }
627        }
628        /// Returns a reference to the address.
629        #[inline]
630        pub const fn address(&self) -> &alloy_sol_types::private::Address {
631            &self.address
632        }
633        /// Sets the address.
634        #[inline]
635        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
636            self.address = address;
637        }
638        /// Sets the address and returns `self`.
639        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
640            self.set_address(address);
641            self
642        }
643        /// Returns a reference to the provider.
644        #[inline]
645        pub const fn provider(&self) -> &P {
646            &self.provider
647        }
648    }
649    impl<P: ::core::clone::Clone, N> IStakeRegistryTypesInstance<&P, N> {
650        /// Clones the provider and returns a new instance with the cloned provider.
651        #[inline]
652        pub fn with_cloned_provider(self) -> IStakeRegistryTypesInstance<P, N> {
653            IStakeRegistryTypesInstance {
654                address: self.address,
655                provider: ::core::clone::Clone::clone(&self.provider),
656                _network: ::core::marker::PhantomData,
657            }
658        }
659    }
660    /// Function calls.
661    #[automatically_derived]
662    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
663        IStakeRegistryTypesInstance<P, N>
664    {
665        /// Creates a new call builder using this contract instance's provider and address.
666        ///
667        /// Note that the call can be any function call, not just those defined in this
668        /// contract. Prefer using the other methods for building type-safe contract calls.
669        pub fn call_builder<C: alloy_sol_types::SolCall>(
670            &self,
671            call: &C,
672        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
673            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
674        }
675    }
676    /// Event filters.
677    #[automatically_derived]
678    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
679        IStakeRegistryTypesInstance<P, N>
680    {
681        /// Creates a new event filter using this contract instance's provider and address.
682        ///
683        /// Note that the type can be any event, not just those defined in this contract.
684        /// Prefer using the other methods for building type-safe event filters.
685        pub fn event_filter<E: alloy_sol_types::SolEvent>(
686            &self,
687        ) -> alloy_contract::Event<&P, E, N> {
688            alloy_contract::Event::new_sol(&self.provider, &self.address)
689        }
690    }
691}
692/**
693
694Generated by the following Solidity interface...
695```solidity
696library IStakeRegistryTypes {
697    type StakeType is uint8;
698    struct StakeUpdate {
699        uint32 updateBlockNumber;
700        uint32 nextUpdateBlockNumber;
701        uint96 stake;
702    }
703    struct StrategyParams {
704        address strategy;
705        uint96 multiplier;
706    }
707}
708
709interface StakeRegistry {
710    error BelowMinimumStakeRequirement();
711    error EmptyStakeHistory();
712    error InputArrayLengthMismatch();
713    error InputArrayLengthZero();
714    error InputDuplicateStrategy();
715    error InputMultiplierZero();
716    error InvalidBlockNumber();
717    error LookAheadPeriodTooLong();
718    error OnlySlashingRegistryCoordinator();
719    error OnlySlashingRegistryCoordinatorOwner();
720    error QuorumAlreadyExists();
721    error QuorumDoesNotExist();
722    error QuorumNotSlashable();
723
724    event LookAheadPeriodChanged(uint32 oldLookAheadBlocks, uint32 newLookAheadBlocks);
725    event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake);
726    event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake);
727    event QuorumCreated(uint8 indexed quorumNumber);
728    event StakeTypeSet(IStakeRegistryTypes.StakeType newStakeType);
729    event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy);
730    event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier);
731    event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy);
732
733    constructor(address _slashingRegistryCoordinator, address _delegationManager, address _avsDirectory, address _allocationManager);
734
735    function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8);
736    function WEIGHTING_DIVISOR() external view returns (uint256);
737    function addStrategies(uint8 quorumNumber, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
738    function allocationManager() external view returns (address);
739    function avsDirectory() external view returns (address);
740    function delegation() external view returns (address);
741    function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external;
742    function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96);
743    function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96);
744    function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate memory);
745    function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96);
746    function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96);
747    function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate[] memory);
748    function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256);
749    function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
750    function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32);
751    function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96);
752    function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256);
753    function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory);
754    function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
755    function initializeDelegatedStakeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
756    function initializeSlashableStakeQuorum(uint8 quorumNumber, uint96 minimumStake, uint32 lookAheadPeriod, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
757    function minimumStakeForQuorum(uint8) external view returns (uint96);
758    function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external;
759    function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory);
760    function registryCoordinator() external view returns (address);
761    function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external;
762    function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external;
763    function setSlashableStakeLookahead(uint8 quorumNumber, uint32 _lookAheadBlocks) external;
764    function slashableStakeLookAheadPerQuorum(uint8 quorumNumber) external view returns (uint32);
765    function stakeTypePerQuorum(uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeType);
766    function strategiesPerQuorum(uint8 quorumNumber, uint256) external view returns (address);
767    function strategyParams(uint8 quorumNumber, uint256) external view returns (address strategy, uint96 multiplier);
768    function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StrategyParams memory);
769    function strategyParamsLength(uint8 quorumNumber) external view returns (uint256);
770    function updateOperatorsStake(address[] memory operators, bytes32[] memory operatorIds, uint8 quorumNumber) external returns (bool[] memory);
771    function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96);
772}
773```
774
775...which was generated by the following JSON ABI:
776```json
777[
778  {
779    "type": "constructor",
780    "inputs": [
781      {
782        "name": "_slashingRegistryCoordinator",
783        "type": "address",
784        "internalType": "contract ISlashingRegistryCoordinator"
785      },
786      {
787        "name": "_delegationManager",
788        "type": "address",
789        "internalType": "contract IDelegationManager"
790      },
791      {
792        "name": "_avsDirectory",
793        "type": "address",
794        "internalType": "contract IAVSDirectory"
795      },
796      {
797        "name": "_allocationManager",
798        "type": "address",
799        "internalType": "contract IAllocationManager"
800      }
801    ],
802    "stateMutability": "nonpayable"
803  },
804  {
805    "type": "function",
806    "name": "MAX_WEIGHING_FUNCTION_LENGTH",
807    "inputs": [],
808    "outputs": [
809      {
810        "name": "",
811        "type": "uint8",
812        "internalType": "uint8"
813      }
814    ],
815    "stateMutability": "view"
816  },
817  {
818    "type": "function",
819    "name": "WEIGHTING_DIVISOR",
820    "inputs": [],
821    "outputs": [
822      {
823        "name": "",
824        "type": "uint256",
825        "internalType": "uint256"
826      }
827    ],
828    "stateMutability": "view"
829  },
830  {
831    "type": "function",
832    "name": "addStrategies",
833    "inputs": [
834      {
835        "name": "quorumNumber",
836        "type": "uint8",
837        "internalType": "uint8"
838      },
839      {
840        "name": "_strategyParams",
841        "type": "tuple[]",
842        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
843        "components": [
844          {
845            "name": "strategy",
846            "type": "address",
847            "internalType": "contract IStrategy"
848          },
849          {
850            "name": "multiplier",
851            "type": "uint96",
852            "internalType": "uint96"
853          }
854        ]
855      }
856    ],
857    "outputs": [],
858    "stateMutability": "nonpayable"
859  },
860  {
861    "type": "function",
862    "name": "allocationManager",
863    "inputs": [],
864    "outputs": [
865      {
866        "name": "",
867        "type": "address",
868        "internalType": "contract IAllocationManager"
869      }
870    ],
871    "stateMutability": "view"
872  },
873  {
874    "type": "function",
875    "name": "avsDirectory",
876    "inputs": [],
877    "outputs": [
878      {
879        "name": "",
880        "type": "address",
881        "internalType": "contract IAVSDirectory"
882      }
883    ],
884    "stateMutability": "view"
885  },
886  {
887    "type": "function",
888    "name": "delegation",
889    "inputs": [],
890    "outputs": [
891      {
892        "name": "",
893        "type": "address",
894        "internalType": "contract IDelegationManager"
895      }
896    ],
897    "stateMutability": "view"
898  },
899  {
900    "type": "function",
901    "name": "deregisterOperator",
902    "inputs": [
903      {
904        "name": "operatorId",
905        "type": "bytes32",
906        "internalType": "bytes32"
907      },
908      {
909        "name": "quorumNumbers",
910        "type": "bytes",
911        "internalType": "bytes"
912      }
913    ],
914    "outputs": [],
915    "stateMutability": "nonpayable"
916  },
917  {
918    "type": "function",
919    "name": "getCurrentStake",
920    "inputs": [
921      {
922        "name": "operatorId",
923        "type": "bytes32",
924        "internalType": "bytes32"
925      },
926      {
927        "name": "quorumNumber",
928        "type": "uint8",
929        "internalType": "uint8"
930      }
931    ],
932    "outputs": [
933      {
934        "name": "",
935        "type": "uint96",
936        "internalType": "uint96"
937      }
938    ],
939    "stateMutability": "view"
940  },
941  {
942    "type": "function",
943    "name": "getCurrentTotalStake",
944    "inputs": [
945      {
946        "name": "quorumNumber",
947        "type": "uint8",
948        "internalType": "uint8"
949      }
950    ],
951    "outputs": [
952      {
953        "name": "",
954        "type": "uint96",
955        "internalType": "uint96"
956      }
957    ],
958    "stateMutability": "view"
959  },
960  {
961    "type": "function",
962    "name": "getLatestStakeUpdate",
963    "inputs": [
964      {
965        "name": "operatorId",
966        "type": "bytes32",
967        "internalType": "bytes32"
968      },
969      {
970        "name": "quorumNumber",
971        "type": "uint8",
972        "internalType": "uint8"
973      }
974    ],
975    "outputs": [
976      {
977        "name": "",
978        "type": "tuple",
979        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
980        "components": [
981          {
982            "name": "updateBlockNumber",
983            "type": "uint32",
984            "internalType": "uint32"
985          },
986          {
987            "name": "nextUpdateBlockNumber",
988            "type": "uint32",
989            "internalType": "uint32"
990          },
991          {
992            "name": "stake",
993            "type": "uint96",
994            "internalType": "uint96"
995          }
996        ]
997      }
998    ],
999    "stateMutability": "view"
1000  },
1001  {
1002    "type": "function",
1003    "name": "getStakeAtBlockNumber",
1004    "inputs": [
1005      {
1006        "name": "operatorId",
1007        "type": "bytes32",
1008        "internalType": "bytes32"
1009      },
1010      {
1011        "name": "quorumNumber",
1012        "type": "uint8",
1013        "internalType": "uint8"
1014      },
1015      {
1016        "name": "blockNumber",
1017        "type": "uint32",
1018        "internalType": "uint32"
1019      }
1020    ],
1021    "outputs": [
1022      {
1023        "name": "",
1024        "type": "uint96",
1025        "internalType": "uint96"
1026      }
1027    ],
1028    "stateMutability": "view"
1029  },
1030  {
1031    "type": "function",
1032    "name": "getStakeAtBlockNumberAndIndex",
1033    "inputs": [
1034      {
1035        "name": "quorumNumber",
1036        "type": "uint8",
1037        "internalType": "uint8"
1038      },
1039      {
1040        "name": "blockNumber",
1041        "type": "uint32",
1042        "internalType": "uint32"
1043      },
1044      {
1045        "name": "operatorId",
1046        "type": "bytes32",
1047        "internalType": "bytes32"
1048      },
1049      {
1050        "name": "index",
1051        "type": "uint256",
1052        "internalType": "uint256"
1053      }
1054    ],
1055    "outputs": [
1056      {
1057        "name": "",
1058        "type": "uint96",
1059        "internalType": "uint96"
1060      }
1061    ],
1062    "stateMutability": "view"
1063  },
1064  {
1065    "type": "function",
1066    "name": "getStakeHistory",
1067    "inputs": [
1068      {
1069        "name": "operatorId",
1070        "type": "bytes32",
1071        "internalType": "bytes32"
1072      },
1073      {
1074        "name": "quorumNumber",
1075        "type": "uint8",
1076        "internalType": "uint8"
1077      }
1078    ],
1079    "outputs": [
1080      {
1081        "name": "",
1082        "type": "tuple[]",
1083        "internalType": "struct IStakeRegistryTypes.StakeUpdate[]",
1084        "components": [
1085          {
1086            "name": "updateBlockNumber",
1087            "type": "uint32",
1088            "internalType": "uint32"
1089          },
1090          {
1091            "name": "nextUpdateBlockNumber",
1092            "type": "uint32",
1093            "internalType": "uint32"
1094          },
1095          {
1096            "name": "stake",
1097            "type": "uint96",
1098            "internalType": "uint96"
1099          }
1100        ]
1101      }
1102    ],
1103    "stateMutability": "view"
1104  },
1105  {
1106    "type": "function",
1107    "name": "getStakeHistoryLength",
1108    "inputs": [
1109      {
1110        "name": "operatorId",
1111        "type": "bytes32",
1112        "internalType": "bytes32"
1113      },
1114      {
1115        "name": "quorumNumber",
1116        "type": "uint8",
1117        "internalType": "uint8"
1118      }
1119    ],
1120    "outputs": [
1121      {
1122        "name": "",
1123        "type": "uint256",
1124        "internalType": "uint256"
1125      }
1126    ],
1127    "stateMutability": "view"
1128  },
1129  {
1130    "type": "function",
1131    "name": "getStakeUpdateAtIndex",
1132    "inputs": [
1133      {
1134        "name": "quorumNumber",
1135        "type": "uint8",
1136        "internalType": "uint8"
1137      },
1138      {
1139        "name": "operatorId",
1140        "type": "bytes32",
1141        "internalType": "bytes32"
1142      },
1143      {
1144        "name": "index",
1145        "type": "uint256",
1146        "internalType": "uint256"
1147      }
1148    ],
1149    "outputs": [
1150      {
1151        "name": "",
1152        "type": "tuple",
1153        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1154        "components": [
1155          {
1156            "name": "updateBlockNumber",
1157            "type": "uint32",
1158            "internalType": "uint32"
1159          },
1160          {
1161            "name": "nextUpdateBlockNumber",
1162            "type": "uint32",
1163            "internalType": "uint32"
1164          },
1165          {
1166            "name": "stake",
1167            "type": "uint96",
1168            "internalType": "uint96"
1169          }
1170        ]
1171      }
1172    ],
1173    "stateMutability": "view"
1174  },
1175  {
1176    "type": "function",
1177    "name": "getStakeUpdateIndexAtBlockNumber",
1178    "inputs": [
1179      {
1180        "name": "operatorId",
1181        "type": "bytes32",
1182        "internalType": "bytes32"
1183      },
1184      {
1185        "name": "quorumNumber",
1186        "type": "uint8",
1187        "internalType": "uint8"
1188      },
1189      {
1190        "name": "blockNumber",
1191        "type": "uint32",
1192        "internalType": "uint32"
1193      }
1194    ],
1195    "outputs": [
1196      {
1197        "name": "",
1198        "type": "uint32",
1199        "internalType": "uint32"
1200      }
1201    ],
1202    "stateMutability": "view"
1203  },
1204  {
1205    "type": "function",
1206    "name": "getTotalStakeAtBlockNumberFromIndex",
1207    "inputs": [
1208      {
1209        "name": "quorumNumber",
1210        "type": "uint8",
1211        "internalType": "uint8"
1212      },
1213      {
1214        "name": "blockNumber",
1215        "type": "uint32",
1216        "internalType": "uint32"
1217      },
1218      {
1219        "name": "index",
1220        "type": "uint256",
1221        "internalType": "uint256"
1222      }
1223    ],
1224    "outputs": [
1225      {
1226        "name": "",
1227        "type": "uint96",
1228        "internalType": "uint96"
1229      }
1230    ],
1231    "stateMutability": "view"
1232  },
1233  {
1234    "type": "function",
1235    "name": "getTotalStakeHistoryLength",
1236    "inputs": [
1237      {
1238        "name": "quorumNumber",
1239        "type": "uint8",
1240        "internalType": "uint8"
1241      }
1242    ],
1243    "outputs": [
1244      {
1245        "name": "",
1246        "type": "uint256",
1247        "internalType": "uint256"
1248      }
1249    ],
1250    "stateMutability": "view"
1251  },
1252  {
1253    "type": "function",
1254    "name": "getTotalStakeIndicesAtBlockNumber",
1255    "inputs": [
1256      {
1257        "name": "blockNumber",
1258        "type": "uint32",
1259        "internalType": "uint32"
1260      },
1261      {
1262        "name": "quorumNumbers",
1263        "type": "bytes",
1264        "internalType": "bytes"
1265      }
1266    ],
1267    "outputs": [
1268      {
1269        "name": "",
1270        "type": "uint32[]",
1271        "internalType": "uint32[]"
1272      }
1273    ],
1274    "stateMutability": "view"
1275  },
1276  {
1277    "type": "function",
1278    "name": "getTotalStakeUpdateAtIndex",
1279    "inputs": [
1280      {
1281        "name": "quorumNumber",
1282        "type": "uint8",
1283        "internalType": "uint8"
1284      },
1285      {
1286        "name": "index",
1287        "type": "uint256",
1288        "internalType": "uint256"
1289      }
1290    ],
1291    "outputs": [
1292      {
1293        "name": "",
1294        "type": "tuple",
1295        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1296        "components": [
1297          {
1298            "name": "updateBlockNumber",
1299            "type": "uint32",
1300            "internalType": "uint32"
1301          },
1302          {
1303            "name": "nextUpdateBlockNumber",
1304            "type": "uint32",
1305            "internalType": "uint32"
1306          },
1307          {
1308            "name": "stake",
1309            "type": "uint96",
1310            "internalType": "uint96"
1311          }
1312        ]
1313      }
1314    ],
1315    "stateMutability": "view"
1316  },
1317  {
1318    "type": "function",
1319    "name": "initializeDelegatedStakeQuorum",
1320    "inputs": [
1321      {
1322        "name": "quorumNumber",
1323        "type": "uint8",
1324        "internalType": "uint8"
1325      },
1326      {
1327        "name": "minimumStake",
1328        "type": "uint96",
1329        "internalType": "uint96"
1330      },
1331      {
1332        "name": "_strategyParams",
1333        "type": "tuple[]",
1334        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
1335        "components": [
1336          {
1337            "name": "strategy",
1338            "type": "address",
1339            "internalType": "contract IStrategy"
1340          },
1341          {
1342            "name": "multiplier",
1343            "type": "uint96",
1344            "internalType": "uint96"
1345          }
1346        ]
1347      }
1348    ],
1349    "outputs": [],
1350    "stateMutability": "nonpayable"
1351  },
1352  {
1353    "type": "function",
1354    "name": "initializeSlashableStakeQuorum",
1355    "inputs": [
1356      {
1357        "name": "quorumNumber",
1358        "type": "uint8",
1359        "internalType": "uint8"
1360      },
1361      {
1362        "name": "minimumStake",
1363        "type": "uint96",
1364        "internalType": "uint96"
1365      },
1366      {
1367        "name": "lookAheadPeriod",
1368        "type": "uint32",
1369        "internalType": "uint32"
1370      },
1371      {
1372        "name": "_strategyParams",
1373        "type": "tuple[]",
1374        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
1375        "components": [
1376          {
1377            "name": "strategy",
1378            "type": "address",
1379            "internalType": "contract IStrategy"
1380          },
1381          {
1382            "name": "multiplier",
1383            "type": "uint96",
1384            "internalType": "uint96"
1385          }
1386        ]
1387      }
1388    ],
1389    "outputs": [],
1390    "stateMutability": "nonpayable"
1391  },
1392  {
1393    "type": "function",
1394    "name": "minimumStakeForQuorum",
1395    "inputs": [
1396      {
1397        "name": "",
1398        "type": "uint8",
1399        "internalType": "uint8"
1400      }
1401    ],
1402    "outputs": [
1403      {
1404        "name": "",
1405        "type": "uint96",
1406        "internalType": "uint96"
1407      }
1408    ],
1409    "stateMutability": "view"
1410  },
1411  {
1412    "type": "function",
1413    "name": "modifyStrategyParams",
1414    "inputs": [
1415      {
1416        "name": "quorumNumber",
1417        "type": "uint8",
1418        "internalType": "uint8"
1419      },
1420      {
1421        "name": "strategyIndices",
1422        "type": "uint256[]",
1423        "internalType": "uint256[]"
1424      },
1425      {
1426        "name": "newMultipliers",
1427        "type": "uint96[]",
1428        "internalType": "uint96[]"
1429      }
1430    ],
1431    "outputs": [],
1432    "stateMutability": "nonpayable"
1433  },
1434  {
1435    "type": "function",
1436    "name": "registerOperator",
1437    "inputs": [
1438      {
1439        "name": "operator",
1440        "type": "address",
1441        "internalType": "address"
1442      },
1443      {
1444        "name": "operatorId",
1445        "type": "bytes32",
1446        "internalType": "bytes32"
1447      },
1448      {
1449        "name": "quorumNumbers",
1450        "type": "bytes",
1451        "internalType": "bytes"
1452      }
1453    ],
1454    "outputs": [
1455      {
1456        "name": "",
1457        "type": "uint96[]",
1458        "internalType": "uint96[]"
1459      },
1460      {
1461        "name": "",
1462        "type": "uint96[]",
1463        "internalType": "uint96[]"
1464      }
1465    ],
1466    "stateMutability": "nonpayable"
1467  },
1468  {
1469    "type": "function",
1470    "name": "registryCoordinator",
1471    "inputs": [],
1472    "outputs": [
1473      {
1474        "name": "",
1475        "type": "address",
1476        "internalType": "contract ISlashingRegistryCoordinator"
1477      }
1478    ],
1479    "stateMutability": "view"
1480  },
1481  {
1482    "type": "function",
1483    "name": "removeStrategies",
1484    "inputs": [
1485      {
1486        "name": "quorumNumber",
1487        "type": "uint8",
1488        "internalType": "uint8"
1489      },
1490      {
1491        "name": "indicesToRemove",
1492        "type": "uint256[]",
1493        "internalType": "uint256[]"
1494      }
1495    ],
1496    "outputs": [],
1497    "stateMutability": "nonpayable"
1498  },
1499  {
1500    "type": "function",
1501    "name": "setMinimumStakeForQuorum",
1502    "inputs": [
1503      {
1504        "name": "quorumNumber",
1505        "type": "uint8",
1506        "internalType": "uint8"
1507      },
1508      {
1509        "name": "minimumStake",
1510        "type": "uint96",
1511        "internalType": "uint96"
1512      }
1513    ],
1514    "outputs": [],
1515    "stateMutability": "nonpayable"
1516  },
1517  {
1518    "type": "function",
1519    "name": "setSlashableStakeLookahead",
1520    "inputs": [
1521      {
1522        "name": "quorumNumber",
1523        "type": "uint8",
1524        "internalType": "uint8"
1525      },
1526      {
1527        "name": "_lookAheadBlocks",
1528        "type": "uint32",
1529        "internalType": "uint32"
1530      }
1531    ],
1532    "outputs": [],
1533    "stateMutability": "nonpayable"
1534  },
1535  {
1536    "type": "function",
1537    "name": "slashableStakeLookAheadPerQuorum",
1538    "inputs": [
1539      {
1540        "name": "quorumNumber",
1541        "type": "uint8",
1542        "internalType": "uint8"
1543      }
1544    ],
1545    "outputs": [
1546      {
1547        "name": "",
1548        "type": "uint32",
1549        "internalType": "uint32"
1550      }
1551    ],
1552    "stateMutability": "view"
1553  },
1554  {
1555    "type": "function",
1556    "name": "stakeTypePerQuorum",
1557    "inputs": [
1558      {
1559        "name": "quorumNumber",
1560        "type": "uint8",
1561        "internalType": "uint8"
1562      }
1563    ],
1564    "outputs": [
1565      {
1566        "name": "",
1567        "type": "uint8",
1568        "internalType": "enum IStakeRegistryTypes.StakeType"
1569      }
1570    ],
1571    "stateMutability": "view"
1572  },
1573  {
1574    "type": "function",
1575    "name": "strategiesPerQuorum",
1576    "inputs": [
1577      {
1578        "name": "quorumNumber",
1579        "type": "uint8",
1580        "internalType": "uint8"
1581      },
1582      {
1583        "name": "",
1584        "type": "uint256",
1585        "internalType": "uint256"
1586      }
1587    ],
1588    "outputs": [
1589      {
1590        "name": "",
1591        "type": "address",
1592        "internalType": "contract IStrategy"
1593      }
1594    ],
1595    "stateMutability": "view"
1596  },
1597  {
1598    "type": "function",
1599    "name": "strategyParams",
1600    "inputs": [
1601      {
1602        "name": "quorumNumber",
1603        "type": "uint8",
1604        "internalType": "uint8"
1605      },
1606      {
1607        "name": "",
1608        "type": "uint256",
1609        "internalType": "uint256"
1610      }
1611    ],
1612    "outputs": [
1613      {
1614        "name": "strategy",
1615        "type": "address",
1616        "internalType": "contract IStrategy"
1617      },
1618      {
1619        "name": "multiplier",
1620        "type": "uint96",
1621        "internalType": "uint96"
1622      }
1623    ],
1624    "stateMutability": "view"
1625  },
1626  {
1627    "type": "function",
1628    "name": "strategyParamsByIndex",
1629    "inputs": [
1630      {
1631        "name": "quorumNumber",
1632        "type": "uint8",
1633        "internalType": "uint8"
1634      },
1635      {
1636        "name": "index",
1637        "type": "uint256",
1638        "internalType": "uint256"
1639      }
1640    ],
1641    "outputs": [
1642      {
1643        "name": "",
1644        "type": "tuple",
1645        "internalType": "struct IStakeRegistryTypes.StrategyParams",
1646        "components": [
1647          {
1648            "name": "strategy",
1649            "type": "address",
1650            "internalType": "contract IStrategy"
1651          },
1652          {
1653            "name": "multiplier",
1654            "type": "uint96",
1655            "internalType": "uint96"
1656          }
1657        ]
1658      }
1659    ],
1660    "stateMutability": "view"
1661  },
1662  {
1663    "type": "function",
1664    "name": "strategyParamsLength",
1665    "inputs": [
1666      {
1667        "name": "quorumNumber",
1668        "type": "uint8",
1669        "internalType": "uint8"
1670      }
1671    ],
1672    "outputs": [
1673      {
1674        "name": "",
1675        "type": "uint256",
1676        "internalType": "uint256"
1677      }
1678    ],
1679    "stateMutability": "view"
1680  },
1681  {
1682    "type": "function",
1683    "name": "updateOperatorsStake",
1684    "inputs": [
1685      {
1686        "name": "operators",
1687        "type": "address[]",
1688        "internalType": "address[]"
1689      },
1690      {
1691        "name": "operatorIds",
1692        "type": "bytes32[]",
1693        "internalType": "bytes32[]"
1694      },
1695      {
1696        "name": "quorumNumber",
1697        "type": "uint8",
1698        "internalType": "uint8"
1699      }
1700    ],
1701    "outputs": [
1702      {
1703        "name": "",
1704        "type": "bool[]",
1705        "internalType": "bool[]"
1706      }
1707    ],
1708    "stateMutability": "nonpayable"
1709  },
1710  {
1711    "type": "function",
1712    "name": "weightOfOperatorForQuorum",
1713    "inputs": [
1714      {
1715        "name": "quorumNumber",
1716        "type": "uint8",
1717        "internalType": "uint8"
1718      },
1719      {
1720        "name": "operator",
1721        "type": "address",
1722        "internalType": "address"
1723      }
1724    ],
1725    "outputs": [
1726      {
1727        "name": "",
1728        "type": "uint96",
1729        "internalType": "uint96"
1730      }
1731    ],
1732    "stateMutability": "view"
1733  },
1734  {
1735    "type": "event",
1736    "name": "LookAheadPeriodChanged",
1737    "inputs": [
1738      {
1739        "name": "oldLookAheadBlocks",
1740        "type": "uint32",
1741        "indexed": false,
1742        "internalType": "uint32"
1743      },
1744      {
1745        "name": "newLookAheadBlocks",
1746        "type": "uint32",
1747        "indexed": false,
1748        "internalType": "uint32"
1749      }
1750    ],
1751    "anonymous": false
1752  },
1753  {
1754    "type": "event",
1755    "name": "MinimumStakeForQuorumUpdated",
1756    "inputs": [
1757      {
1758        "name": "quorumNumber",
1759        "type": "uint8",
1760        "indexed": true,
1761        "internalType": "uint8"
1762      },
1763      {
1764        "name": "minimumStake",
1765        "type": "uint96",
1766        "indexed": false,
1767        "internalType": "uint96"
1768      }
1769    ],
1770    "anonymous": false
1771  },
1772  {
1773    "type": "event",
1774    "name": "OperatorStakeUpdate",
1775    "inputs": [
1776      {
1777        "name": "operatorId",
1778        "type": "bytes32",
1779        "indexed": true,
1780        "internalType": "bytes32"
1781      },
1782      {
1783        "name": "quorumNumber",
1784        "type": "uint8",
1785        "indexed": false,
1786        "internalType": "uint8"
1787      },
1788      {
1789        "name": "stake",
1790        "type": "uint96",
1791        "indexed": false,
1792        "internalType": "uint96"
1793      }
1794    ],
1795    "anonymous": false
1796  },
1797  {
1798    "type": "event",
1799    "name": "QuorumCreated",
1800    "inputs": [
1801      {
1802        "name": "quorumNumber",
1803        "type": "uint8",
1804        "indexed": true,
1805        "internalType": "uint8"
1806      }
1807    ],
1808    "anonymous": false
1809  },
1810  {
1811    "type": "event",
1812    "name": "StakeTypeSet",
1813    "inputs": [
1814      {
1815        "name": "newStakeType",
1816        "type": "uint8",
1817        "indexed": false,
1818        "internalType": "enum IStakeRegistryTypes.StakeType"
1819      }
1820    ],
1821    "anonymous": false
1822  },
1823  {
1824    "type": "event",
1825    "name": "StrategyAddedToQuorum",
1826    "inputs": [
1827      {
1828        "name": "quorumNumber",
1829        "type": "uint8",
1830        "indexed": true,
1831        "internalType": "uint8"
1832      },
1833      {
1834        "name": "strategy",
1835        "type": "address",
1836        "indexed": false,
1837        "internalType": "contract IStrategy"
1838      }
1839    ],
1840    "anonymous": false
1841  },
1842  {
1843    "type": "event",
1844    "name": "StrategyMultiplierUpdated",
1845    "inputs": [
1846      {
1847        "name": "quorumNumber",
1848        "type": "uint8",
1849        "indexed": true,
1850        "internalType": "uint8"
1851      },
1852      {
1853        "name": "strategy",
1854        "type": "address",
1855        "indexed": false,
1856        "internalType": "contract IStrategy"
1857      },
1858      {
1859        "name": "multiplier",
1860        "type": "uint256",
1861        "indexed": false,
1862        "internalType": "uint256"
1863      }
1864    ],
1865    "anonymous": false
1866  },
1867  {
1868    "type": "event",
1869    "name": "StrategyRemovedFromQuorum",
1870    "inputs": [
1871      {
1872        "name": "quorumNumber",
1873        "type": "uint8",
1874        "indexed": true,
1875        "internalType": "uint8"
1876      },
1877      {
1878        "name": "strategy",
1879        "type": "address",
1880        "indexed": false,
1881        "internalType": "contract IStrategy"
1882      }
1883    ],
1884    "anonymous": false
1885  },
1886  {
1887    "type": "error",
1888    "name": "BelowMinimumStakeRequirement",
1889    "inputs": []
1890  },
1891  {
1892    "type": "error",
1893    "name": "EmptyStakeHistory",
1894    "inputs": []
1895  },
1896  {
1897    "type": "error",
1898    "name": "InputArrayLengthMismatch",
1899    "inputs": []
1900  },
1901  {
1902    "type": "error",
1903    "name": "InputArrayLengthZero",
1904    "inputs": []
1905  },
1906  {
1907    "type": "error",
1908    "name": "InputDuplicateStrategy",
1909    "inputs": []
1910  },
1911  {
1912    "type": "error",
1913    "name": "InputMultiplierZero",
1914    "inputs": []
1915  },
1916  {
1917    "type": "error",
1918    "name": "InvalidBlockNumber",
1919    "inputs": []
1920  },
1921  {
1922    "type": "error",
1923    "name": "LookAheadPeriodTooLong",
1924    "inputs": []
1925  },
1926  {
1927    "type": "error",
1928    "name": "OnlySlashingRegistryCoordinator",
1929    "inputs": []
1930  },
1931  {
1932    "type": "error",
1933    "name": "OnlySlashingRegistryCoordinatorOwner",
1934    "inputs": []
1935  },
1936  {
1937    "type": "error",
1938    "name": "QuorumAlreadyExists",
1939    "inputs": []
1940  },
1941  {
1942    "type": "error",
1943    "name": "QuorumDoesNotExist",
1944    "inputs": []
1945  },
1946  {
1947    "type": "error",
1948    "name": "QuorumNotSlashable",
1949    "inputs": []
1950  }
1951]
1952```*/
1953#[allow(
1954    non_camel_case_types,
1955    non_snake_case,
1956    clippy::pub_underscore_fields,
1957    clippy::style,
1958    clippy::empty_structs_with_brackets
1959)]
1960pub mod StakeRegistry {
1961    use super::*;
1962    use alloy::sol_types as alloy_sol_types;
1963    /// The creation / init bytecode of the contract.
1964    ///
1965    /// ```text
1966    ///0x610100604052348015610010575f5ffd5b50604051613e58380380613e5883398101604081905261002f91610068565b6001600160a01b0393841660e052918316608052821660a0521660c0526100c4565b6001600160a01b0381168114610065575f5ffd5b50565b5f5f5f5f6080858703121561007b575f5ffd5b845161008681610051565b602086015190945061009781610051565b60408601519093506100a881610051565b60608601519092506100b981610051565b939692955090935050565b60805160a05160c05160e051613d0d61014b5f395f818161041201528181610e590152818161166501528181611d5f01528181611e1b0152612d9301525f81816105ba01528181610f0701528181610f97015281816117130152818161184201528181612a6d0152612d5901525f6103b301525f818161061a01526123eb0152613d0d5ff3fe608060405234801561000f575f5ffd5b506004361061021e575f3560e01c80639ab4d6ff1161012a578063c8294c56116100b4578063df5cf72311610079578063df5cf72314610615578063e086adb31461063c578063f2be94ae1461064f578063f851e19814610662578063fa28c62714610675575f5ffd5b8063c8294c56146105a2578063ca8aa7c7146105b5578063cc5a7c20146105dc578063d5eccc05146105ef578063dd9846b914610602575f5ffd5b8063b6904b78116100fa578063b6904b781461052e578063bc9a40c314610541578063bd29b8cd14610554578063c46778a514610567578063c601527d1461058f575f5ffd5b80639ab4d6ff146104815780639f3ccf65146104bb578063ac6bfb03146104ce578063adc804da146104ee575f5ffd5b80635e5a6775116101ab5780636c3fb4bf1161017b5780636c3fb4bf146103ed5780636d14a9871461040d57806375d4173a146104345780637c1723471461044757806381c0750214610461575f5ffd5b80635e5a67751461035d5780635f1f2d771461036c578063697fbd931461037f5780636b3aa72e146103ae575f5ffd5b806325504777116101f157806325504777146102b85780632cd95940146102d95780633ca5a5f5146102f95780634bd26e091461031b5780635401ed271461034a575f5ffd5b80630491b41c1461022257806308732461146102575780631f9b74e01461027857806320b66298146102a3575b5f5ffd5b610244610230366004612eb1565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b61026a610265366004612eca565b610688565b60405161024e929190612ef2565b61028b610286366004612f28565b6106cd565b6040516001600160601b03909116815260200161024e565b6102b66102b1366004612f9d565b6106ef565b005b6102cb6102c6366004613058565b61088d565b60405161024e9291906130f2565b6102ec6102e7366004613116565b610a15565b60405161024e9190613140565b610244610307366004612eb1565b60ff165f9081526003602052604090205490565b610244610329366004613116565b5f91825260026020908152604080842060ff93909316845291905290205490565b61028b610358366004613116565b610ab2565b610244670de0b6b3a764000081565b6102b661037a366004613247565b610aca565b6103a161038d366004612eb1565b60056020525f908152604090205460ff1681565b60405161024e9190613303565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b6104006103fb36600461338e565b611008565b60405161024e9190613460565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b6610442366004613544565b611163565b61044f602081565b60405160ff909116815260200161024e565b61047461046f3660046135ae565b611249565b60405161024e91906135fe565b6104a661048f366004612eb1565b60066020525f908152604090205463ffffffff1681565b60405163ffffffff909116815260200161024e565b6103d56104c9366004612eca565b6113ef565b6104e16104dc36600461363b565b611423565b60405161024e919061366b565b6105016104fc366004612eca565b6114b9565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161024e565b6104e161053c366004612eca565b611530565b6102b661054f3660046136a5565b6115bd565b6102b66105623660046136cd565b6115de565b61028b610575366004612eb1565b5f602081905290815260409020546001600160601b031681565b6102b661059d3660046136fb565b611641565b61028b6105b0366004613745565b6118b1565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b66105ea366004613781565b61192d565b61028b6105fd366004612eb1565b611a1f565b6104a66106103660046137ed565b611a70565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b661064a36600461382a565b611a84565b61028b61065d366004613854565b611aa0565b6104e1610670366004613116565b611b33565b61028b6106833660046137ed565b611c21565b6003602052815f5260405f2081815481106106a1575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b5f826106d881611c80565b5f6106e38585611cb2565b509250505b5092915050565b6106f7611d5d565b8461070181611c80565b83806107205760405163796cc52560e01b815260040160405180910390fd5b828114610740576040516343714afd60e01b815260040160405180910390fd5b60ff87165f908152600360205260408120905b828110156108825785858281811061076d5761076d613895565b905060200201602081019061078291906138a9565b8289898481811061079557610795613895565b90506020020135815481106107ac576107ac613895565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a8581811061081257610812613895565b905060200201358154811061082957610829613895565b5f918252602090912001546001600160a01b031688888581811061084f5761084f613895565b905060200201602081019061086491906138a9565b604051610872929190612ef2565b60405180910390a2600101610753565b505050505050505050565b606080610898611e10565b5f836001600160401b038111156108b1576108b16131b9565b6040519080825280602002602001820160405280156108da578160200160208202803683370190505b5090505f846001600160401b038111156108f6576108f66131b9565b60405190808252806020026020018201604052801561091f578160200160208202803683370190505b5090505f5b85811015610a07575f87878381811061093f5761093f613895565b919091013560f81c9150610954905081611c80565b5f5f610960838d611cb2565b91509150806109825760405163207f13e360e11b815260040160405180910390fd5b5f61098e8c8585611e59565b9050828786815181106109a3576109a3613895565b60200260200101906001600160601b031690816001600160601b0316815250506109cd84826120d2565b8686815181106109df576109df613895565b6001600160601b03909216602092830291909101909101525050600190920191506109249050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610aa5575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610a4d565b5050505090505b92915050565b5f5f610abe8484611b33565b60400151949350505050565b610ad2611d5d565b81610adc81611c80565b815180610afc5760405163796cc52560e01b815260040160405180910390fd5b60ff84165f908152600360209081526040808320600490925282209091836001600160401b03811115610b3157610b316131b9565b604051908082528060200260200182016040528015610b5a578160200160208202803683370190505b5090505f5b84811015610e555783878281518110610b7a57610b7a613895565b602002602001015181548110610b9257610b92613895565b5f9182526020909120015482516001600160a01b0390911690839083908110610bbd57610bbd613895565b60200260200101906001600160a01b031690816001600160a01b0316815250508760ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f785898481518110610c1557610c15613895565b602002602001015181548110610c2d57610c2d613895565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28760ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585898481518110610c8a57610c8a613895565b602002602001015181548110610ca257610ca2613895565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a283548490610ce1906001906138d6565b81548110610cf157610cf1613895565b905f5260205f200184888381518110610d0c57610d0c613895565b602002602001015181548110610d2457610d24613895565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558354849080610d7657610d766138e9565b5f8281526020812082015f199081019190915501905582548390610d9c906001906138d6565b81548110610dac57610dac613895565b905f5260205f20015f9054906101000a90046001600160a01b031683888381518110610dda57610dda613895565b602002602001015181548110610df257610df2613895565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610e2d57610e2d6138e9565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610b5f565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed791906138fd565b6040805180820182526001600160a01b03838116825260ff8c16602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc75891610f3c91600401613918565b602060405180830381865afa158015610f57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7b919061393e565b15610ffe5760405163b66bd98960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b66bd98990610fd09084908c90879060040161395d565b5f604051808303815f87803b158015610fe7575f5ffd5b505af1158015610ff9573d5f5f3e3d5ffd5b505050505b5050505050505050565b6060611012611e10565b5f84516001600160401b0381111561102c5761102c6131b9565b604051908082528060200260200182016040528015611055578160200160208202803683370190505b50905061106183611c80565b5f5f61106d8588612243565b90925090505f805b88518110156111495782818151811061109057611090613895565b60200260200101516110f4575f8482815181106110af576110af613895565b60200260200101906001600160601b031690816001600160601b03168152505060018582815181106110e3576110e3613895565b911515602092830291909101909101525b5f61113289838151811061110a5761110a613895565b60200260200101518987858151811061112557611125613895565b6020026020010151611e59565b905061113e81846139c7565b925050600101611075565b5061115486826120d2565b509293505050505b9392505050565b61116b611e10565b60ff83165f908152600160205260409020541561119b576040516310cda51760e21b815260040160405180910390fd5b6111a583826125e9565b6111af83836128da565b6111b9835f612942565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60605f826001600160401b03811115611264576112646131b9565b60405190808252806020026020018201604052801561128d578160200160208202803683370190505b5090505f5b838110156113e6575f8585838181106112ad576112ad613895565b919091013560f81c91506112c2905081611c80565b60ff81165f908152600160205260408120805463ffffffff8a1692906112ea576112ea613895565b5f9182526020909120015463ffffffff16111561131a5760405163cc64657360e01b815260040160405180910390fd5b60ff81165f90815260016020526040812054905b818110156113db5760ff83165f90815260016020819052604090912063ffffffff8b169161135c84866138d6565b61136691906138d6565b8154811061137657611376613895565b5f9182526020909120015463ffffffff16116113d357600161139882846138d6565b6113a291906138d6565b8585815181106113b4576113b4613895565b602002602001019063ffffffff16908163ffffffff16815250506113db565b60010161132e565b505050600101611292565b50949350505050565b6004602052815f5260405f208181548110611408575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061146757611467613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106114ef576114ef613895565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600190529190912080548390811061156c5761156c613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b6115c5611d5d565b816115cf81611c80565b6115d983836128da565b505050565b6115e6611e10565b5f5b8181101561163b575f83838381811061160357611603613895565b919091013560f81c9150611618905081611c80565b5f61162486835f611e59565b905061163082826120d2565b5050506001016115e8565b50505050565b611649611d5d565b8161165381611c80565b61165d83836125e9565b5f825190505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e391906138fd565b6040805180820182526001600160a01b03838116825260ff8916602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc7589161174891600401613918565b602060405180830381865afa158015611763573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611787919061393e565b156118aa575f826001600160401b038111156117a5576117a56131b9565b6040519080825280602002602001820160405280156117ce578160200160208202803683370190505b5090505f5b8381101561182a578581815181106117ed576117ed613895565b60200260200101515f015182828151811061180a5761180a613895565b6001600160a01b03909216602092830291909101909101526001016117d3565b50604051630287f75160e51b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350feea209061187b9085908a90869060040161395d565b5f604051808303815f87803b158015611892575f5ffd5b505af11580156118a4573d5f5f3e3d5ffd5b50505050505b5050505050565b60ff83165f9081526001602052604081208054829190849081106118d7576118d7613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610abe81856129af565b611935611e10565b60ff84165f9081526001602052604090205415611965576040516310cda51760e21b815260040160405180910390fd5b61196f84826125e9565b61197984846128da565b611984846001612942565b61198e8483612a26565b50505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81165f908152600160208190526040822080549091611a3f916138d6565b81548110611a4f57611a4f613895565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a7c848484612b83565b949350505050565b611a8c611d5d565b81611a9681611c80565b6115d98383612a26565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611ad057611ad0613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b2681866129af565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b8f579150610aac9050565b5f85815260026020908152604080832060ff881684529091529020611bb56001846138d6565b81548110611bc557611bc5613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610aac915050565b505092915050565b5f83815260026020908152604080832060ff861684529091528120611c47858585612b83565b63ffffffff1681548110611c5d57611c5d613895565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b60ff81165f90815260016020526040902054611caf57604051637310cff560e11b815260040160405180910390fd5b50565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110611cea57611cea613895565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f611d168784612243565b91509150815f81518110611d2c57611d2c613895565b6020026020010151815f81518110611d4657611d46613895565b6020026020010151945094505050505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddd91906138fd565b6001600160a01b0316336001600160a01b031614611e0e5760405163ce98c24b60e01b815260040160405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e0e57604051632c01b20560e21b815260040160405180910390fd5b5f83815260026020908152604080832060ff861684529091528120548190808203611f1d575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612078565b5f86815260026020908152604080832060ff891684529091528120611f436001846138d6565b81548110611f5357611f53613895565b5f91825260209091200180546001600160601b03600160401b9091048116945090915085168303611f89575f935050505061115c565b805463ffffffff438116911603611fc1578054600160401b600160a01b031916600160401b6001600160601b03871602178155612076565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26120c88285612cea565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906120f590846138d6565b8154811061210557612105613895565b905f5260205f20019050835f036121305754600160401b90046001600160601b03169150610aac9050565b80545f9061214e90600160401b90046001600160601b031686612d01565b825490915063ffffffff438116911603612189578154600160401b600160a01b031916600160401b6001600160601b0383160217825561223a565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6060805f83516001600160401b03811115612260576122606131b9565b604051908082528060200260200182016040528015612289578160200160208202803683370190505b5090505f84516001600160401b038111156122a6576122a66131b9565b6040519080825280602002602001820160405280156122cf578160200160208202803683370190505b5090505f6122eb8760ff165f9081526003602052604090205490565b60ff88165f90815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b8282101561236b575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161231d565b5050505090506060600180811115612385576123856132ef565b60ff808b165f908152600560205260409020541660018111156123aa576123aa6132ef565b036123c0576123b98989612d2e565b9050612463565b60ff89165f908152600460208190526040918290209151637870733b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263f0e0e6769261241f928d929101613a5b565b5f60405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124609190810190613a7f565b90505b5f5b88518110156125d9575f5b84811015612569575f84828151811061248b5761248b613895565b602002602001015190505f8484815181106124a8576124a8613895565b602002602001015183815181106124c1576124c1613895565b6020026020010151111561256057670de0b6b3a764000081602001516001600160601b03168585815181106124f8576124f8613895565b6020026020010151848151811061251157612511613895565b60200260200101516125239190613b8b565b61252d9190613ba2565b88848151811061253f5761253f613895565b602002602001018181516125539190613bc1565b6001600160601b03169052505b50600101612470565b5060ff8a165f9081526020819052604090205486516001600160601b039091169087908390811061259c5761259c613895565b60200260200101516001600160601b031610158582815181106125c1576125c1613895565b91151560209283029190910190910152600101612465565b5093989297509195505050505050565b5f81511161260a5760405163796cc52560e01b815260040160405180910390fd5b805160ff83165f908152600360209081526040909120549061262c8383613be0565b111561264b576040516343714afd60e01b815260040160405180910390fd5b5f5b828110156118aa575f5b6126618284613be0565b8110156126f05784828151811061267a5761267a613895565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f2082815481106126b6576126b6613895565b5f918252602090912001546001600160a01b0316036126e857604051637b74340b60e01b815260040160405180910390fd5b600101612657565b505f84828151811061270457612704613895565b6020026020010151602001516001600160601b03161161273757604051637257125160e01b815260040160405180910390fd5b60ff85165f908152600360205260409020845185908390811061275c5761275c613895565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127c0576127c0613895565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061283657612836613895565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061289357612893613895565b60200260200101515f01518684815181106128b0576128b0613895565b6020026020010151602001516040516128ca929190612ef2565b60405180910390a260010161264d565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60ff82165f908152600560205260409020805482919060ff19166001838181111561296f5761296f6132ef565b02179055507f7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d816040516129a39190613303565b60405180910390a15050565b815f015163ffffffff168163ffffffff1610156129df57604051631391e11b60e21b815260040160405180910390fd5b602082015163ffffffff161580612a055750816020015163ffffffff168163ffffffff16105b612a2257604051631391e11b60e21b815260040160405180910390fd5b5050565b600160ff8084165f90815260056020526040902054166001811115612a4d57612a4d6132ef565b14612a6b5760405163a3be258360e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632981eb776040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613bf3565b63ffffffff168163ffffffff161115612b1757604051630bd441b960e21b815260040160405180910390fd5b60ff82165f90815260066020908152604091829020805463ffffffff19811663ffffffff8681169182179093558451929091168083529282015290917f28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7910160405180910390a1505050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612c21575f86815260026020908152604080832060ff89168452909152902063ffffffff851690612bd56001846138d6565b81548110612be557612be5613895565b5f9182526020909120015463ffffffff1611612c0f57612c066001826138d6565b9250505061115c565b80612c1981613c0e565b915050612ba1565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e40160405180910390fd5b5f61115c6001600160601b03808516908416613c23565b5f5f821215612d2457612d1382613c42565b612d1d9084613c5c565b9050610aac565b612d1d8284613bc1565b60ff82165f9081526006602052604081205460609190612d549063ffffffff1643613be0565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632bab2c4a60405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ded573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e1191906138fd565b6001600160a01b0316815260ff891660209182018190525f90815260049182905260409081902090516001600160e01b031960e086901b168152612e5b93928a9291899101613c7b565b5f60405180830381865afa158015612e75573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261223a9190810190613a7f565b803560ff81168114612eac575f5ffd5b919050565b5f60208284031215612ec1575f5ffd5b61115c82612e9c565b5f5f60408385031215612edb575f5ffd5b612ee483612e9c565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114611caf575f5ffd5b5f5f60408385031215612f39575f5ffd5b612f4283612e9c565b91506020830135612f5281612f14565b809150509250929050565b5f5f83601f840112612f6d575f5ffd5b5081356001600160401b03811115612f83575f5ffd5b6020830191508360208260051b8501011115611d56575f5ffd5b5f5f5f5f5f60608688031215612fb1575f5ffd5b612fba86612e9c565b945060208601356001600160401b03811115612fd4575f5ffd5b612fe088828901612f5d565b90955093505060408601356001600160401b03811115612ffe575f5ffd5b61300a88828901612f5d565b969995985093965092949392505050565b5f5f83601f84011261302b575f5ffd5b5081356001600160401b03811115613041575f5ffd5b602083019150836020828501011115611d56575f5ffd5b5f5f5f5f6060858703121561306b575f5ffd5b843561307681612f14565b93506020850135925060408501356001600160401b03811115613097575f5ffd5b6130a38782880161301b565b95989497509550505050565b5f8151808452602084019350602083015f5b828110156130e85781516001600160601b03168652602095860195909101906001016130c1565b5093949350505050565b604081525f61310460408301856130af565b828103602084015261223a81856130af565b5f5f60408385031215613127575f5ffd5b8235915061313760208401612e9c565b90509250929050565b602080825282518282018190525f918401906040840190835b818110156131ae5761319883855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101613159565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156131ef576131ef6131b9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561321d5761321d6131b9565b604052919050565b5f6001600160401b0382111561323d5761323d6131b9565b5060051b60200190565b5f5f60408385031215613258575f5ffd5b61326183612e9c565b915060208301356001600160401b0381111561327b575f5ffd5b8301601f8101851361328b575f5ffd5b803561329e61329982613225565b6131f5565b8082825260208201915060208360051b8501019250878311156132bf575f5ffd5b6020840193505b828410156132e15783358252602093840193909101906132c6565b809450505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061332357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f82601f830112613338575f5ffd5b813561334661329982613225565b8082825260208201915060208360051b860101925085831115613367575f5ffd5b602085015b8381101561338457803583526020928301920161336c565b5095945050505050565b5f5f5f606084860312156133a0575f5ffd5b83356001600160401b038111156133b5575f5ffd5b8401601f810186136133c5575f5ffd5b80356133d361329982613225565b8082825260208201915060208360051b8501019250888311156133f4575f5ffd5b6020840193505b8284101561341f57833561340e81612f14565b8252602093840193909101906133fb565b955050505060208401356001600160401b0381111561343c575f5ffd5b61344886828701613329565b92505061345760408501612e9c565b90509250925092565b602080825282518282018190525f918401906040840190835b818110156131ae5783511515835260209384019390920191600101613479565b80356001600160601b0381168114612eac575f5ffd5b5f82601f8301126134be575f5ffd5b81356134cc61329982613225565b8082825260208201915060208360061b8601019250858311156134ed575f5ffd5b602085015b838110156133845760408188031215613509575f5ffd5b6135116131cd565b813561351c81612f14565b815261352a60208301613499565b6020820152808452506020830192506040810190506134f2565b5f5f5f60608486031215613556575f5ffd5b61355f84612e9c565b925061356d60208501613499565b915060408401356001600160401b03811115613587575f5ffd5b613593868287016134af565b9150509250925092565b63ffffffff81168114611caf575f5ffd5b5f5f5f604084860312156135c0575f5ffd5b83356135cb8161359d565b925060208401356001600160401b038111156135e5575f5ffd5b6135f18682870161301b565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b818110156131ae57835163ffffffff16835260209384019390920191600101613617565b5f5f5f6060848603121561364d575f5ffd5b61365684612e9c565b95602085013595506040909401359392505050565b60608101610aac828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b5f5f604083850312156136b6575f5ffd5b6136bf83612e9c565b915061313760208401613499565b5f5f5f604084860312156136df575f5ffd5b8335925060208401356001600160401b038111156135e5575f5ffd5b5f5f6040838503121561370c575f5ffd5b61371583612e9c565b915060208301356001600160401b0381111561372f575f5ffd5b61373b858286016134af565b9150509250929050565b5f5f5f60608486031215613757575f5ffd5b61376084612e9c565b925060208401356137708161359d565b929592945050506040919091013590565b5f5f5f5f60808587031215613794575f5ffd5b61379d85612e9c565b93506137ab60208601613499565b925060408501356137bb8161359d565b915060608501356001600160401b038111156137d5575f5ffd5b6137e1878288016134af565b91505092959194509250565b5f5f5f606084860312156137ff575f5ffd5b8335925061380f60208501612e9c565b9150604084013561381f8161359d565b809150509250925092565b5f5f6040838503121561383b575f5ffd5b61384483612e9c565b91506020830135612f528161359d565b5f5f5f5f60808587031215613867575f5ffd5b61387085612e9c565b935060208501356138808161359d565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156138b9575f5ffd5b61115c82613499565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610aac57610aac6138c2565b634e487b7160e01b5f52603160045260245ffd5b5f6020828403121561390d575f5ffd5b815161115c81612f14565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610aac565b5f6020828403121561394e575f5ffd5b8151801515811461115c575f5ffd5b6001600160a01b038416815260ff831660208083019190915260606040830181905283519083018190525f918401906080840190835b818110156139ba5783516001600160a01b0316835260209384019390920191600101613993565b5090979650505050505050565b8082018281125f831280158216821582161715611c1957611c196138c2565b5f8151808452602084019350602083015f5b828110156130e85781516001600160a01b03168652602095860195909101906001016139f8565b5f8154808452602084019350825f5260205f205f5b828110156130e85781546001600160a01b0316865260209095019460019182019101613a34565b604081525f613a6d60408301856139e6565b828103602084015261223a8185613a1f565b5f60208284031215613a8f575f5ffd5b81516001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8051613ac261329982613225565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015613b805780516001600160401b03811115613b05575f5ffd5b8501603f81018913613b15575f5ffd5b6020810151613b2661329982613225565b808282526020820191506020808460051b8601010192508b831115613b49575f5ffd5b6040840193505b82841015613b6b578351825260209384019390910190613b50565b86525050602093840193919091019050613ae8565b509695505050505050565b8082028115828204841417610aac57610aac6138c2565b5f82613bbc57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610aac57610aac6138c2565b80820180821115610aac57610aac6138c2565b5f60208284031215613c03575f5ffd5b815161115c8161359d565b5f81613c1c57613c1c6138c2565b505f190190565b8181035f8312801583831316838312821617156106e8576106e86138c2565b5f600160ff1b8201613c5657613c566138c2565b505f0390565b6001600160601b038281168282160390811115610aac57610aac6138c2565b84516001600160a01b0316815260208086015163ffffffff169082015260a060408201525f613cad60a08301866139e6565b8281036060840152613cbf8186613a1f565b91505063ffffffff831660808301529594505050505056fea26469706673582212204597eb20b1bf16abfe806bbc444b98f27286774ee9644d6fb89da082b2c3157a64736f6c634300081b0033
1967    /// ```
1968    #[rustfmt::skip]
1969    #[allow(clippy::all)]
1970    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1971        b"a\x01\0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa>X8\x03\x80a>X\x839\x81\x01`@\x81\x90Ra\0/\x91a\0hV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\xE0R\x91\x83\x16`\x80R\x82\x16`\xA0R\x16`\xC0Ra\0\xC4V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0eW__\xFD[PV[____`\x80\x85\x87\x03\x12\x15a\0{W__\xFD[\x84Qa\0\x86\x81a\0QV[` \x86\x01Q\x90\x94Pa\0\x97\x81a\0QV[`@\x86\x01Q\x90\x93Pa\0\xA8\x81a\0QV[``\x86\x01Q\x90\x92Pa\0\xB9\x81a\0QV[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa=\ra\x01K_9_\x81\x81a\x04\x12\x01R\x81\x81a\x0EY\x01R\x81\x81a\x16e\x01R\x81\x81a\x1D_\x01R\x81\x81a\x1E\x1B\x01Ra-\x93\x01R_\x81\x81a\x05\xBA\x01R\x81\x81a\x0F\x07\x01R\x81\x81a\x0F\x97\x01R\x81\x81a\x17\x13\x01R\x81\x81a\x18B\x01R\x81\x81a*m\x01Ra-Y\x01R_a\x03\xB3\x01R_\x81\x81a\x06\x1A\x01Ra#\xEB\x01Ra=\r_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\x1EW_5`\xE0\x1C\x80c\x9A\xB4\xD6\xFF\x11a\x01*W\x80c\xC8)LV\x11a\0\xB4W\x80c\xDF\\\xF7#\x11a\0yW\x80c\xDF\\\xF7#\x14a\x06\x15W\x80c\xE0\x86\xAD\xB3\x14a\x06<W\x80c\xF2\xBE\x94\xAE\x14a\x06OW\x80c\xF8Q\xE1\x98\x14a\x06bW\x80c\xFA(\xC6'\x14a\x06uW__\xFD[\x80c\xC8)LV\x14a\x05\xA2W\x80c\xCA\x8A\xA7\xC7\x14a\x05\xB5W\x80c\xCCZ| \x14a\x05\xDCW\x80c\xD5\xEC\xCC\x05\x14a\x05\xEFW\x80c\xDD\x98F\xB9\x14a\x06\x02W__\xFD[\x80c\xB6\x90Kx\x11a\0\xFAW\x80c\xB6\x90Kx\x14a\x05.W\x80c\xBC\x9A@\xC3\x14a\x05AW\x80c\xBD)\xB8\xCD\x14a\x05TW\x80c\xC4gx\xA5\x14a\x05gW\x80c\xC6\x01R}\x14a\x05\x8FW__\xFD[\x80c\x9A\xB4\xD6\xFF\x14a\x04\x81W\x80c\x9F<\xCFe\x14a\x04\xBBW\x80c\xACk\xFB\x03\x14a\x04\xCEW\x80c\xAD\xC8\x04\xDA\x14a\x04\xEEW__\xFD[\x80c^Zgu\x11a\x01\xABW\x80cl?\xB4\xBF\x11a\x01{W\x80cl?\xB4\xBF\x14a\x03\xEDW\x80cm\x14\xA9\x87\x14a\x04\rW\x80cu\xD4\x17:\x14a\x044W\x80c|\x17#G\x14a\x04GW\x80c\x81\xC0u\x02\x14a\x04aW__\xFD[\x80c^Zgu\x14a\x03]W\x80c_\x1F-w\x14a\x03lW\x80ci\x7F\xBD\x93\x14a\x03\x7FW\x80ck:\xA7.\x14a\x03\xAEW__\xFD[\x80c%PGw\x11a\x01\xF1W\x80c%PGw\x14a\x02\xB8W\x80c,\xD9Y@\x14a\x02\xD9W\x80c<\xA5\xA5\xF5\x14a\x02\xF9W\x80cK\xD2n\t\x14a\x03\x1BW\x80cT\x01\xED'\x14a\x03JW__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x02\"W\x80c\x08s$a\x14a\x02WW\x80c\x1F\x9Bt\xE0\x14a\x02xW\x80c \xB6b\x98\x14a\x02\xA3W[__\xFD[a\x02Da\x0206`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02ja\x02e6`\x04a.\xCAV[a\x06\x88V[`@Qa\x02N\x92\x91\x90a.\xF2V[a\x02\x8Ba\x02\x866`\x04a/(V[a\x06\xCDV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x02\xB6a\x02\xB16`\x04a/\x9DV[a\x06\xEFV[\0[a\x02\xCBa\x02\xC66`\x04a0XV[a\x08\x8DV[`@Qa\x02N\x92\x91\x90a0\xF2V[a\x02\xECa\x02\xE76`\x04a1\x16V[a\n\x15V[`@Qa\x02N\x91\x90a1@V[a\x02Da\x03\x076`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02Da\x03)6`\x04a1\x16V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02\x8Ba\x03X6`\x04a1\x16V[a\n\xB2V[a\x02Dg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\xB6a\x03z6`\x04a2GV[a\n\xCAV[a\x03\xA1a\x03\x8D6`\x04a.\xB1V[`\x05` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Qa\x02N\x91\x90a3\x03V[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x04\0a\x03\xFB6`\x04a3\x8EV[a\x10\x08V[`@Qa\x02N\x91\x90a4`V[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\xB6a\x04B6`\x04a5DV[a\x11cV[a\x04O` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x04ta\x04o6`\x04a5\xAEV[a\x12IV[`@Qa\x02N\x91\x90a5\xFEV[a\x04\xA6a\x04\x8F6`\x04a.\xB1V[`\x06` R_\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x03\xD5a\x04\xC96`\x04a.\xCAV[a\x13\xEFV[a\x04\xE1a\x04\xDC6`\x04a6;V[a\x14#V[`@Qa\x02N\x91\x90a6kV[a\x05\x01a\x04\xFC6`\x04a.\xCAV[a\x14\xB9V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02NV[a\x04\xE1a\x05<6`\x04a.\xCAV[a\x150V[a\x02\xB6a\x05O6`\x04a6\xA5V[a\x15\xBDV[a\x02\xB6a\x05b6`\x04a6\xCDV[a\x15\xDEV[a\x02\x8Ba\x05u6`\x04a.\xB1V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\xB6a\x05\x9D6`\x04a6\xFBV[a\x16AV[a\x02\x8Ba\x05\xB06`\x04a7EV[a\x18\xB1V[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\xB6a\x05\xEA6`\x04a7\x81V[a\x19-V[a\x02\x8Ba\x05\xFD6`\x04a.\xB1V[a\x1A\x1FV[a\x04\xA6a\x06\x106`\x04a7\xEDV[a\x1ApV[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\xB6a\x06J6`\x04a8*V[a\x1A\x84V[a\x02\x8Ba\x06]6`\x04a8TV[a\x1A\xA0V[a\x04\xE1a\x06p6`\x04a1\x16V[a\x1B3V[a\x02\x8Ba\x06\x836`\x04a7\xEDV[a\x1C!V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x06\xA1W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[_\x82a\x06\xD8\x81a\x1C\x80V[_a\x06\xE3\x85\x85a\x1C\xB2V[P\x92PP[P\x92\x91PPV[a\x06\xF7a\x1D]V[\x84a\x07\x01\x81a\x1C\x80V[\x83\x80a\x07 W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07@W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x08\x82W\x85\x85\x82\x81\x81\x10a\x07mWa\x07ma8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x07\x82\x91\x90a8\xA9V[\x82\x89\x89\x84\x81\x81\x10a\x07\x95Wa\x07\x95a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x07\xACWa\x07\xACa8\x95V[\x90_R` _ \x01_\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x08\x12Wa\x08\x12a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x08)Wa\x08)a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08OWa\x08Oa8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x08d\x91\x90a8\xA9V[`@Qa\x08r\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x07SV[PPPPPPPPPV[``\x80a\x08\x98a\x1E\x10V[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xB1Wa\x08\xB1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xDAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xF6Wa\x08\xF6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\n\x07W_\x87\x87\x83\x81\x81\x10a\t?Wa\t?a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\tT\x90P\x81a\x1C\x80V[__a\t`\x83\x8Da\x1C\xB2V[\x91P\x91P\x80a\t\x82W`@Qc \x7F\x13\xE3`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\t\x8E\x8C\x85\x85a\x1EYV[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xA3Wa\t\xA3a8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\t\xCD\x84\x82a \xD2V[\x86\x86\x81Q\x81\x10a\t\xDFWa\t\xDFa8\x95V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\t$\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\n\xA5W_\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\nMV[PPPP\x90P[\x92\x91PPV[__a\n\xBE\x84\x84a\x1B3V[`@\x01Q\x94\x93PPPPV[a\n\xD2a\x1D]V[\x81a\n\xDC\x81a\x1C\x80V[\x81Q\x80a\n\xFCW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0B1Wa\x0B1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0BZW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0EUW\x83\x87\x82\x81Q\x81\x10a\x0BzWa\x0Bza8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0B\x92Wa\x0B\x92a8\x95V[_\x91\x82R` \x90\x91 \x01T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x90\x83\x90\x81\x10a\x0B\xBDWa\x0B\xBDa8\x95V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x87`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x85\x89\x84\x81Q\x81\x10a\x0C\x15Wa\x0C\x15a8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C-Wa\x0C-a8\x95V[_\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x87`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x89\x84\x81Q\x81\x10a\x0C\x8AWa\x0C\x8Aa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA2Wa\x0C\xA2a8\x95V[_\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x83T\x84\x90a\x0C\xE1\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\x0C\xF1Wa\x0C\xF1a8\x95V[\x90_R` _ \x01\x84\x88\x83\x81Q\x81\x10a\r\x0CWa\r\x0Ca8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r$Wa\r$a8\x95V[_\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x83T\x84\x90\x80a\rvWa\rva8\xE9V[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x82T\x83\x90a\r\x9C\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\r\xACWa\r\xACa8\x95V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x83\x81Q\x81\x10a\r\xDAWa\r\xDAa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xF2Wa\r\xF2a8\x95V[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x82\x80T\x80a\x0E-Wa\x0E-a8\xE9V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0B_V[P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xD7\x91\x90a8\xFDV[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x8C\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x0F<\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F{\x91\x90a9>V[\x15a\x0F\xFEW`@Qc\xB6k\xD9\x89`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xB6k\xD9\x89\x90a\x0F\xD0\x90\x84\x90\x8C\x90\x87\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0F\xE7W__\xFD[PZ\xF1\x15\x80\x15a\x0F\xF9W=__>=_\xFD[PPPP[PPPPPPPPV[``a\x10\x12a\x1E\x10V[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10,Wa\x10,a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x10UW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Pa\x10a\x83a\x1C\x80V[__a\x10m\x85\x88a\"CV[\x90\x92P\x90P_\x80[\x88Q\x81\x10\x15a\x11IW\x82\x81\x81Q\x81\x10a\x10\x90Wa\x10\x90a8\x95V[` \x02` \x01\x01Qa\x10\xF4W_\x84\x82\x81Q\x81\x10a\x10\xAFWa\x10\xAFa8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\x01\x85\x82\x81Q\x81\x10a\x10\xE3Wa\x10\xE3a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R[_a\x112\x89\x83\x81Q\x81\x10a\x11\nWa\x11\na8\x95V[` \x02` \x01\x01Q\x89\x87\x85\x81Q\x81\x10a\x11%Wa\x11%a8\x95V[` \x02` \x01\x01Qa\x1EYV[\x90Pa\x11>\x81\x84a9\xC7V[\x92PP`\x01\x01a\x10uV[Pa\x11T\x86\x82a \xD2V[P\x92\x93PPPP[\x93\x92PPPV[a\x11ka\x1E\x10V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x11\x9BW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x83\x82a%\xE9V[a\x11\xAF\x83\x83a(\xDAV[a\x11\xB9\x83_a)BV[PP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12dWa\x12da1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\x8DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x13\xE6W_\x85\x85\x83\x81\x81\x10a\x12\xADWa\x12\xADa8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x12\xC2\x90P\x81a\x1C\x80V[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x12\xEAWa\x12\xEAa8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\x1AW`@Qc\xCCdes`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x13\xDBW`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x13\\\x84\x86a8\xD6V[a\x13f\x91\x90a8\xD6V[\x81T\x81\x10a\x13vWa\x13va8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x13\xD3W`\x01a\x13\x98\x82\x84a8\xD6V[a\x13\xA2\x91\x90a8\xD6V[\x85\x85\x81Q\x81\x10a\x13\xB4Wa\x13\xB4a8\x95V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x13\xDBV[`\x01\x01a\x13.V[PPP`\x01\x01a\x12\x92V[P\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\x08W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x14gWa\x14ga8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x14\xEFWa\x14\xEFa8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x15lWa\x15la8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x15\xC5a\x1D]V[\x81a\x15\xCF\x81a\x1C\x80V[a\x15\xD9\x83\x83a(\xDAV[PPPV[a\x15\xE6a\x1E\x10V[_[\x81\x81\x10\x15a\x16;W_\x83\x83\x83\x81\x81\x10a\x16\x03Wa\x16\x03a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x16\x18\x90P\x81a\x1C\x80V[_a\x16$\x86\x83_a\x1EYV[\x90Pa\x160\x82\x82a \xD2V[PPP`\x01\x01a\x15\xE8V[PPPPV[a\x16Ia\x1D]V[\x81a\x16S\x81a\x1C\x80V[a\x16]\x83\x83a%\xE9V[_\x82Q\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xBFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xE3\x91\x90a8\xFDV[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x89\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x17H\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17cW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x87\x91\x90a9>V[\x15a\x18\xAAW_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xA5Wa\x17\xA5a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xCEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x18*W\x85\x81\x81Q\x81\x10a\x17\xEDWa\x17\xEDa8\x95V[` \x02` \x01\x01Q_\x01Q\x82\x82\x81Q\x81\x10a\x18\nWa\x18\na8\x95V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x17\xD3V[P`@Qc\x02\x87\xF7Q`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cP\xFE\xEA \x90a\x18{\x90\x85\x90\x8A\x90\x86\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x92W__\xFD[PZ\xF1\x15\x80\x15a\x18\xA4W=__>=_\xFD[PPPPP[PPPPPV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x18\xD7Wa\x18\xD7a8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\n\xBE\x81\x85a)\xAFV[a\x195a\x1E\x10V[`\xFF\x84\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x19eW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19o\x84\x82a%\xE9V[a\x19y\x84\x84a(\xDAV[a\x19\x84\x84`\x01a)BV[a\x19\x8E\x84\x83a*&V[PPP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A?\x91a8\xD6V[\x81T\x81\x10a\x1AOWa\x1AOa8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1A|\x84\x84\x84a+\x83V[\x94\x93PPPPV[a\x1A\x8Ca\x1D]V[\x81a\x1A\x96\x81a\x1C\x80V[a\x15\xD9\x83\x83a*&V[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xD0Wa\x1A\xD0a8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x1B&\x81\x86a)\xAFV[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1B\x8FW\x91Pa\n\xAC\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1B\xB5`\x01\x84a8\xD6V[\x81T\x81\x10a\x1B\xC5Wa\x1B\xC5a8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\n\xAC\x91PPV[PP\x92\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1CG\x85\x85\x85a+\x83V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C]Wa\x1C]a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x90 Ta\x1C\xAFW`@Qcs\x10\xCF\xF5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x82\x91\x82\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x83\x81_\x81Q\x81\x10a\x1C\xEAWa\x1C\xEAa8\x95V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP__a\x1D\x16\x87\x84a\"CV[\x91P\x91P\x81_\x81Q\x81\x10a\x1D,Wa\x1D,a8\x95V[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a\x1DFWa\x1DFa8\x95V[` \x02` \x01\x01Q\x94P\x94PPPP[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xDD\x91\x90a8\xFDV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1E\x0EW`@Qc\xCE\x98\xC2K`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1E\x0EW`@Qc,\x01\xB2\x05`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a\x1F\x1DW_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua xV[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1FC`\x01\x84a8\xD6V[\x81T\x81\x10a\x1FSWa\x1FSa8\x95V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a\x1F\x89W_\x93PPPPa\x11\\V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x1F\xC1W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua vV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U_\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a \xC8\x82\x85a,\xEAV[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a \xF5\x90\x84a8\xD6V[\x81T\x81\x10a!\x05Wa!\x05a8\x95V[\x90_R` _ \x01\x90P\x83_\x03a!0WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\n\xAC\x90PV[\x80T_\x90a!N\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a-\x01V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a!\x89W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua\":V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[``\x80_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"`Wa\"`a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\x89W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xA6Wa\"\xA6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\xCFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_a\"\xEB\x87`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`\xFF\x88\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R\x94\x95P\x92\x93\x90\x92\x91\x84\x90\x84\x01[\x82\x82\x10\x15a#kW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a#\x1DV[PPPP\x90P```\x01\x80\x81\x11\x15a#\x85Wa#\x85a2\xEFV[`\xFF\x80\x8B\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a#\xAAWa#\xAAa2\xEFV[\x03a#\xC0Wa#\xB9\x89\x89a-.V[\x90Pa$cV[`\xFF\x89\x16_\x90\x81R`\x04` \x81\x90R`@\x91\x82\x90 \x91Qcxps;`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\xF0\xE0\xE6v\x92a$\x1F\x92\x8D\x92\x91\x01a:[V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a$9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra$`\x91\x90\x81\x01\x90a:\x7FV[\x90P[_[\x88Q\x81\x10\x15a%\xD9W_[\x84\x81\x10\x15a%iW_\x84\x82\x81Q\x81\x10a$\x8BWa$\x8Ba8\x95V[` \x02` \x01\x01Q\x90P_\x84\x84\x81Q\x81\x10a$\xA8Wa$\xA8a8\x95V[` \x02` \x01\x01Q\x83\x81Q\x81\x10a$\xC1Wa$\xC1a8\x95V[` \x02` \x01\x01Q\x11\x15a%`Wg\r\xE0\xB6\xB3\xA7d\0\0\x81` \x01Q`\x01`\x01``\x1B\x03\x16\x85\x85\x81Q\x81\x10a$\xF8Wa$\xF8a8\x95V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a%\x11Wa%\x11a8\x95V[` \x02` \x01\x01Qa%#\x91\x90a;\x8BV[a%-\x91\x90a;\xA2V[\x88\x84\x81Q\x81\x10a%?Wa%?a8\x95V[` \x02` \x01\x01\x81\x81Qa%S\x91\x90a;\xC1V[`\x01`\x01``\x1B\x03\x16\x90RP[P`\x01\x01a$pV[P`\xFF\x8A\x16_\x90\x81R` \x81\x90R`@\x90 T\x86Q`\x01`\x01``\x1B\x03\x90\x91\x16\x90\x87\x90\x83\x90\x81\x10a%\x9CWa%\x9Ca8\x95V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85\x82\x81Q\x81\x10a%\xC1Wa%\xC1a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a$eV[P\x93\x98\x92\x97P\x91\x95PPPPPPV[_\x81Q\x11a&\nW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xFF\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a&,\x83\x83a;\xE0V[\x11\x15a&KW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\x18\xAAW_[a&a\x82\x84a;\xE0V[\x81\x10\x15a&\xF0W\x84\x82\x81Q\x81\x10a&zWa&za8\x95V[` \x02` \x01\x01Q_\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03_\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x82\x81T\x81\x10a&\xB6Wa&\xB6a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a&\xE8W`@Qc{t4\x0B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a&WV[P_\x84\x82\x81Q\x81\x10a'\x04Wa'\x04a8\x95V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'7W`@QcrW\x12Q`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x85\x16_\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'\\Wa'\\a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U_\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'\xC0Wa'\xC0a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U_\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a(6Wa(6a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a(\x93Wa(\x93a8\x95V[` \x02` \x01\x01Q_\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a8\x95V[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a&MV[`\xFF\x82\x16_\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\xFF\x82\x16_\x90\x81R`\x05` R`@\x90 \x80T\x82\x91\x90`\xFF\x19\x16`\x01\x83\x81\x81\x11\x15a)oWa)oa2\xEFV[\x02\x17\x90UP\x7F|\x11.\x86<\xCF\0xb\xE2\xC9\xE2X\x19\xC93\xFE\xDB\xC95\ndCB;J\x85\x99\xC2\xE8\xA5-\x81`@Qa)\xA3\x91\x90a3\x03V[`@Q\x80\x91\x03\x90\xA1PPV[\x81_\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\xDFW`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a*\x05WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*\"W`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\x01`\xFF\x80\x84\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a*MWa*Ma2\xEFV[\x14a*kW`@Qc\xA3\xBE%\x83`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c)\x81\xEBw`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a*\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\xEB\x91\x90a;\xF3V[c\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x11\x15a+\x17W`@Qc\x0B\xD4A\xB9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x82\x16_\x90\x81R`\x06` \x90\x81R`@\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x81\x16c\xFF\xFF\xFF\xFF\x86\x81\x16\x91\x82\x17\x90\x93U\x84Q\x92\x90\x91\x16\x80\x83R\x92\x82\x01R\x90\x91\x7F(\xD75\x8By\xF0-!\xB8\xB7\xE1z\xEF\xC4\x18Zd0\x8A\xA3t\x06\xFA[\xEF\xC0[\x91\x93,9\xC7\x91\x01`@Q\x80\x91\x03\x90\xA1PPPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a,!W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\xD5`\x01\x84a8\xD6V[\x81T\x81\x10a+\xE5Wa+\xE5a8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a,\x0FWa,\x06`\x01\x82a8\xD6V[\x92PPPa\x11\\V[\x80a,\x19\x81a<\x0EV[\x91PPa+\xA1V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\\`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a<#V[__\x82\x12\x15a-$Wa-\x13\x82a<BV[a-\x1D\x90\x84a<\\V[\x90Pa\n\xACV[a-\x1D\x82\x84a;\xC1V[`\xFF\x82\x16_\x90\x81R`\x06` R`@\x81 T``\x91\x90a-T\x90c\xFF\xFF\xFF\xFF\x16Ca;\xE0V[\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c+\xAB,J`@Q\x80`@\x01`@R\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a-\xEDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\x11\x91\x90a8\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x81R`\xFF\x89\x16` \x91\x82\x01\x81\x90R_\x90\x81R`\x04\x91\x82\x90R`@\x90\x81\x90 \x90Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81Ra.[\x93\x92\x8A\x92\x91\x89\x91\x01a<{V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.uW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\":\x91\x90\x81\x01\x90a:\x7FV[\x805`\xFF\x81\x16\x81\x14a.\xACW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a.\xC1W__\xFD[a\x11\\\x82a.\x9CV[__`@\x83\x85\x03\x12\x15a.\xDBW__\xFD[a.\xE4\x83a.\x9CV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1C\xAFW__\xFD[__`@\x83\x85\x03\x12\x15a/9W__\xFD[a/B\x83a.\x9CV[\x91P` \x83\x015a/R\x81a/\x14V[\x80\x91PP\x92P\x92\x90PV[__\x83`\x1F\x84\x01\x12a/mW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x83W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1DVW__\xFD[_____``\x86\x88\x03\x12\x15a/\xB1W__\xFD[a/\xBA\x86a.\x9CV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xD4W__\xFD[a/\xE0\x88\x82\x89\x01a/]V[\x90\x95P\x93PP`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xFEW__\xFD[a0\n\x88\x82\x89\x01a/]V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a0+W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0AW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1DVW__\xFD[____``\x85\x87\x03\x12\x15a0kW__\xFD[\x845a0v\x81a/\x14V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x97W__\xFD[a0\xA3\x87\x82\x88\x01a0\x1BV[\x95\x98\x94\x97P\x95PPPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a0\xC1V[P\x93\x94\x93PPPPV[`@\x81R_a1\x04`@\x83\x01\x85a0\xAFV[\x82\x81\x03` \x84\x01Ra\":\x81\x85a0\xAFV[__`@\x83\x85\x03\x12\x15a1'W__\xFD[\x825\x91Pa17` \x84\x01a.\x9CV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEWa1\x98\x83\x85Qc\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a1YV[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a1\xEFWa1\xEFa1\xB9V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x1DWa2\x1Da1\xB9V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a2=Wa2=a1\xB9V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a2XW__\xFD[a2a\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2{W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2\x8BW__\xFD[\x805a2\x9Ea2\x99\x82a2%V[a1\xF5V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a2\xBFW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xE1W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a2\xC6V[\x80\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x02\x83\x10a3#WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[_\x82`\x1F\x83\x01\x12a38W__\xFD[\x815a3Fa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3gW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W\x805\x83R` \x92\x83\x01\x92\x01a3lV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a3\xA0W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xB5W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a3\xC5W__\xFD[\x805a3\xD3a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a3\xF4W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\x1FW\x835a4\x0E\x81a/\x14V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a3\xFBV[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4<W__\xFD[a4H\x86\x82\x87\x01a3)V[\x92PPa4W`@\x85\x01a.\x9CV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEW\x83Q\x15\x15\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a4yV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a.\xACW__\xFD[_\x82`\x1F\x83\x01\x12a4\xBEW__\xFD[\x815a4\xCCa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a4\xEDW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W`@\x81\x88\x03\x12\x15a5\tW__\xFD[a5\x11a1\xCDV[\x815a5\x1C\x81a/\x14V[\x81Ra5*` \x83\x01a4\x99V[` \x82\x01R\x80\x84RP` \x83\x01\x92P`@\x81\x01\x90Pa4\xF2V[___``\x84\x86\x03\x12\x15a5VW__\xFD[a5_\x84a.\x9CV[\x92Pa5m` \x85\x01a4\x99V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\x87W__\xFD[a5\x93\x86\x82\x87\x01a4\xAFV[\x91PP\x92P\x92P\x92V[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1C\xAFW__\xFD[___`@\x84\x86\x03\x12\x15a5\xC0W__\xFD[\x835a5\xCB\x81a5\x9DV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[a5\xF1\x86\x82\x87\x01a0\x1BV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a6\x17V[___``\x84\x86\x03\x12\x15a6MW__\xFD[a6V\x84a.\x9CV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[``\x81\x01a\n\xAC\x82\x84c\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[__`@\x83\x85\x03\x12\x15a6\xB6W__\xFD[a6\xBF\x83a.\x9CV[\x91Pa17` \x84\x01a4\x99V[___`@\x84\x86\x03\x12\x15a6\xDFW__\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[__`@\x83\x85\x03\x12\x15a7\x0CW__\xFD[a7\x15\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7/W__\xFD[a7;\x85\x82\x86\x01a4\xAFV[\x91PP\x92P\x92\x90PV[___``\x84\x86\x03\x12\x15a7WW__\xFD[a7`\x84a.\x9CV[\x92P` \x84\x015a7p\x81a5\x9DV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a7\x94W__\xFD[a7\x9D\x85a.\x9CV[\x93Pa7\xAB` \x86\x01a4\x99V[\x92P`@\x85\x015a7\xBB\x81a5\x9DV[\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\xD5W__\xFD[a7\xE1\x87\x82\x88\x01a4\xAFV[\x91PP\x92\x95\x91\x94P\x92PV[___``\x84\x86\x03\x12\x15a7\xFFW__\xFD[\x835\x92Pa8\x0F` \x85\x01a.\x9CV[\x91P`@\x84\x015a8\x1F\x81a5\x9DV[\x80\x91PP\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a8;W__\xFD[a8D\x83a.\x9CV[\x91P` \x83\x015a/R\x81a5\x9DV[____`\x80\x85\x87\x03\x12\x15a8gW__\xFD[a8p\x85a.\x9CV[\x93P` \x85\x015a8\x80\x81a5\x9DV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a8\xB9W__\xFD[a\x11\\\x82a4\x99V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a9\rW__\xFD[\x81Qa\x11\\\x81a/\x14V[\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`@\x81\x01a\n\xACV[_` \x82\x84\x03\x12\x15a9NW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x11\\W__\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`\xFF\x83\x16` \x80\x83\x01\x91\x90\x91R```@\x83\x01\x81\x90R\x83Q\x90\x83\x01\x81\x90R_\x91\x84\x01\x90`\x80\x84\x01\x90\x83[\x81\x81\x10\x15a9\xBAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a9\x93V[P\x90\x97\x96PPPPPPPV[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a\x1C\x19Wa\x1C\x19a8\xC2V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a9\xF8V[_\x81T\x80\x84R` \x84\x01\x93P\x82_R` _ _[\x82\x81\x10\x15a0\xE8W\x81T`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x90\x95\x01\x94`\x01\x91\x82\x01\x91\x01a:4V[`@\x81R_a:m`@\x83\x01\x85a9\xE6V[\x82\x81\x03` \x84\x01Ra\":\x81\x85a:\x1FV[_` \x82\x84\x03\x12\x15a:\x8FW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a:\xA4W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a:\xB4W__\xFD[\x80Qa:\xC2a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a:\xE3W__\xFD[` \x84\x01[\x83\x81\x10\x15a;\x80W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a;\x05W__\xFD[\x85\x01`?\x81\x01\x89\x13a;\x15W__\xFD[` \x81\x01Qa;&a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x80\x84`\x05\x1B\x86\x01\x01\x01\x92P\x8B\x83\x11\x15a;IW__\xFD[`@\x84\x01\x93P[\x82\x84\x10\x15a;kW\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a;PV[\x86RPP` \x93\x84\x01\x93\x91\x90\x91\x01\x90Pa:\xE8V[P\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xACWa\n\xACa8\xC2V[_\x82a;\xBCWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[\x80\x82\x01\x80\x82\x11\x15a\n\xACWa\n\xACa8\xC2V[_` \x82\x84\x03\x12\x15a<\x03W__\xFD[\x81Qa\x11\\\x81a5\x9DV[_\x81a<\x1CWa<\x1Ca8\xC2V[P_\x19\x01\x90V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a\x06\xE8Wa\x06\xE8a8\xC2V[_`\x01`\xFF\x1B\x82\x01a<VWa<Va8\xC2V[P_\x03\x90V[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[\x84Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x86\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\xA0`@\x82\x01R_a<\xAD`\xA0\x83\x01\x86a9\xE6V[\x82\x81\x03``\x84\x01Ra<\xBF\x81\x86a:\x1FV[\x91PPc\xFF\xFF\xFF\xFF\x83\x16`\x80\x83\x01R\x95\x94PPPPPV\xFE\xA2dipfsX\"\x12 E\x97\xEB \xB1\xBF\x16\xAB\xFE\x80k\xBCDK\x98\xF2r\x86wN\xE9dMo\xB8\x9D\xA0\x82\xB2\xC3\x15zdsolcC\0\x08\x1B\x003",
1972    );
1973    /// The runtime bytecode of the contract, as deployed on the network.
1974    ///
1975    /// ```text
1976    ///0x608060405234801561000f575f5ffd5b506004361061021e575f3560e01c80639ab4d6ff1161012a578063c8294c56116100b4578063df5cf72311610079578063df5cf72314610615578063e086adb31461063c578063f2be94ae1461064f578063f851e19814610662578063fa28c62714610675575f5ffd5b8063c8294c56146105a2578063ca8aa7c7146105b5578063cc5a7c20146105dc578063d5eccc05146105ef578063dd9846b914610602575f5ffd5b8063b6904b78116100fa578063b6904b781461052e578063bc9a40c314610541578063bd29b8cd14610554578063c46778a514610567578063c601527d1461058f575f5ffd5b80639ab4d6ff146104815780639f3ccf65146104bb578063ac6bfb03146104ce578063adc804da146104ee575f5ffd5b80635e5a6775116101ab5780636c3fb4bf1161017b5780636c3fb4bf146103ed5780636d14a9871461040d57806375d4173a146104345780637c1723471461044757806381c0750214610461575f5ffd5b80635e5a67751461035d5780635f1f2d771461036c578063697fbd931461037f5780636b3aa72e146103ae575f5ffd5b806325504777116101f157806325504777146102b85780632cd95940146102d95780633ca5a5f5146102f95780634bd26e091461031b5780635401ed271461034a575f5ffd5b80630491b41c1461022257806308732461146102575780631f9b74e01461027857806320b66298146102a3575b5f5ffd5b610244610230366004612eb1565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b61026a610265366004612eca565b610688565b60405161024e929190612ef2565b61028b610286366004612f28565b6106cd565b6040516001600160601b03909116815260200161024e565b6102b66102b1366004612f9d565b6106ef565b005b6102cb6102c6366004613058565b61088d565b60405161024e9291906130f2565b6102ec6102e7366004613116565b610a15565b60405161024e9190613140565b610244610307366004612eb1565b60ff165f9081526003602052604090205490565b610244610329366004613116565b5f91825260026020908152604080842060ff93909316845291905290205490565b61028b610358366004613116565b610ab2565b610244670de0b6b3a764000081565b6102b661037a366004613247565b610aca565b6103a161038d366004612eb1565b60056020525f908152604090205460ff1681565b60405161024e9190613303565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b6104006103fb36600461338e565b611008565b60405161024e9190613460565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b6610442366004613544565b611163565b61044f602081565b60405160ff909116815260200161024e565b61047461046f3660046135ae565b611249565b60405161024e91906135fe565b6104a661048f366004612eb1565b60066020525f908152604090205463ffffffff1681565b60405163ffffffff909116815260200161024e565b6103d56104c9366004612eca565b6113ef565b6104e16104dc36600461363b565b611423565b60405161024e919061366b565b6105016104fc366004612eca565b6114b9565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161024e565b6104e161053c366004612eca565b611530565b6102b661054f3660046136a5565b6115bd565b6102b66105623660046136cd565b6115de565b61028b610575366004612eb1565b5f602081905290815260409020546001600160601b031681565b6102b661059d3660046136fb565b611641565b61028b6105b0366004613745565b6118b1565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b66105ea366004613781565b61192d565b61028b6105fd366004612eb1565b611a1f565b6104a66106103660046137ed565b611a70565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b661064a36600461382a565b611a84565b61028b61065d366004613854565b611aa0565b6104e1610670366004613116565b611b33565b61028b6106833660046137ed565b611c21565b6003602052815f5260405f2081815481106106a1575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b5f826106d881611c80565b5f6106e38585611cb2565b509250505b5092915050565b6106f7611d5d565b8461070181611c80565b83806107205760405163796cc52560e01b815260040160405180910390fd5b828114610740576040516343714afd60e01b815260040160405180910390fd5b60ff87165f908152600360205260408120905b828110156108825785858281811061076d5761076d613895565b905060200201602081019061078291906138a9565b8289898481811061079557610795613895565b90506020020135815481106107ac576107ac613895565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a8581811061081257610812613895565b905060200201358154811061082957610829613895565b5f918252602090912001546001600160a01b031688888581811061084f5761084f613895565b905060200201602081019061086491906138a9565b604051610872929190612ef2565b60405180910390a2600101610753565b505050505050505050565b606080610898611e10565b5f836001600160401b038111156108b1576108b16131b9565b6040519080825280602002602001820160405280156108da578160200160208202803683370190505b5090505f846001600160401b038111156108f6576108f66131b9565b60405190808252806020026020018201604052801561091f578160200160208202803683370190505b5090505f5b85811015610a07575f87878381811061093f5761093f613895565b919091013560f81c9150610954905081611c80565b5f5f610960838d611cb2565b91509150806109825760405163207f13e360e11b815260040160405180910390fd5b5f61098e8c8585611e59565b9050828786815181106109a3576109a3613895565b60200260200101906001600160601b031690816001600160601b0316815250506109cd84826120d2565b8686815181106109df576109df613895565b6001600160601b03909216602092830291909101909101525050600190920191506109249050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610aa5575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610a4d565b5050505090505b92915050565b5f5f610abe8484611b33565b60400151949350505050565b610ad2611d5d565b81610adc81611c80565b815180610afc5760405163796cc52560e01b815260040160405180910390fd5b60ff84165f908152600360209081526040808320600490925282209091836001600160401b03811115610b3157610b316131b9565b604051908082528060200260200182016040528015610b5a578160200160208202803683370190505b5090505f5b84811015610e555783878281518110610b7a57610b7a613895565b602002602001015181548110610b9257610b92613895565b5f9182526020909120015482516001600160a01b0390911690839083908110610bbd57610bbd613895565b60200260200101906001600160a01b031690816001600160a01b0316815250508760ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f785898481518110610c1557610c15613895565b602002602001015181548110610c2d57610c2d613895565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28760ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585898481518110610c8a57610c8a613895565b602002602001015181548110610ca257610ca2613895565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a283548490610ce1906001906138d6565b81548110610cf157610cf1613895565b905f5260205f200184888381518110610d0c57610d0c613895565b602002602001015181548110610d2457610d24613895565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558354849080610d7657610d766138e9565b5f8281526020812082015f199081019190915501905582548390610d9c906001906138d6565b81548110610dac57610dac613895565b905f5260205f20015f9054906101000a90046001600160a01b031683888381518110610dda57610dda613895565b602002602001015181548110610df257610df2613895565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610e2d57610e2d6138e9565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610b5f565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed791906138fd565b6040805180820182526001600160a01b03838116825260ff8c16602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc75891610f3c91600401613918565b602060405180830381865afa158015610f57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7b919061393e565b15610ffe5760405163b66bd98960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b66bd98990610fd09084908c90879060040161395d565b5f604051808303815f87803b158015610fe7575f5ffd5b505af1158015610ff9573d5f5f3e3d5ffd5b505050505b5050505050505050565b6060611012611e10565b5f84516001600160401b0381111561102c5761102c6131b9565b604051908082528060200260200182016040528015611055578160200160208202803683370190505b50905061106183611c80565b5f5f61106d8588612243565b90925090505f805b88518110156111495782818151811061109057611090613895565b60200260200101516110f4575f8482815181106110af576110af613895565b60200260200101906001600160601b031690816001600160601b03168152505060018582815181106110e3576110e3613895565b911515602092830291909101909101525b5f61113289838151811061110a5761110a613895565b60200260200101518987858151811061112557611125613895565b6020026020010151611e59565b905061113e81846139c7565b925050600101611075565b5061115486826120d2565b509293505050505b9392505050565b61116b611e10565b60ff83165f908152600160205260409020541561119b576040516310cda51760e21b815260040160405180910390fd5b6111a583826125e9565b6111af83836128da565b6111b9835f612942565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60605f826001600160401b03811115611264576112646131b9565b60405190808252806020026020018201604052801561128d578160200160208202803683370190505b5090505f5b838110156113e6575f8585838181106112ad576112ad613895565b919091013560f81c91506112c2905081611c80565b60ff81165f908152600160205260408120805463ffffffff8a1692906112ea576112ea613895565b5f9182526020909120015463ffffffff16111561131a5760405163cc64657360e01b815260040160405180910390fd5b60ff81165f90815260016020526040812054905b818110156113db5760ff83165f90815260016020819052604090912063ffffffff8b169161135c84866138d6565b61136691906138d6565b8154811061137657611376613895565b5f9182526020909120015463ffffffff16116113d357600161139882846138d6565b6113a291906138d6565b8585815181106113b4576113b4613895565b602002602001019063ffffffff16908163ffffffff16815250506113db565b60010161132e565b505050600101611292565b50949350505050565b6004602052815f5260405f208181548110611408575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061146757611467613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106114ef576114ef613895565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600190529190912080548390811061156c5761156c613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b6115c5611d5d565b816115cf81611c80565b6115d983836128da565b505050565b6115e6611e10565b5f5b8181101561163b575f83838381811061160357611603613895565b919091013560f81c9150611618905081611c80565b5f61162486835f611e59565b905061163082826120d2565b5050506001016115e8565b50505050565b611649611d5d565b8161165381611c80565b61165d83836125e9565b5f825190505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e391906138fd565b6040805180820182526001600160a01b03838116825260ff8916602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc7589161174891600401613918565b602060405180830381865afa158015611763573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611787919061393e565b156118aa575f826001600160401b038111156117a5576117a56131b9565b6040519080825280602002602001820160405280156117ce578160200160208202803683370190505b5090505f5b8381101561182a578581815181106117ed576117ed613895565b60200260200101515f015182828151811061180a5761180a613895565b6001600160a01b03909216602092830291909101909101526001016117d3565b50604051630287f75160e51b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350feea209061187b9085908a90869060040161395d565b5f604051808303815f87803b158015611892575f5ffd5b505af11580156118a4573d5f5f3e3d5ffd5b50505050505b5050505050565b60ff83165f9081526001602052604081208054829190849081106118d7576118d7613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610abe81856129af565b611935611e10565b60ff84165f9081526001602052604090205415611965576040516310cda51760e21b815260040160405180910390fd5b61196f84826125e9565b61197984846128da565b611984846001612942565b61198e8483612a26565b50505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81165f908152600160208190526040822080549091611a3f916138d6565b81548110611a4f57611a4f613895565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a7c848484612b83565b949350505050565b611a8c611d5d565b81611a9681611c80565b6115d98383612a26565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611ad057611ad0613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b2681866129af565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b8f579150610aac9050565b5f85815260026020908152604080832060ff881684529091529020611bb56001846138d6565b81548110611bc557611bc5613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610aac915050565b505092915050565b5f83815260026020908152604080832060ff861684529091528120611c47858585612b83565b63ffffffff1681548110611c5d57611c5d613895565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b60ff81165f90815260016020526040902054611caf57604051637310cff560e11b815260040160405180910390fd5b50565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110611cea57611cea613895565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f611d168784612243565b91509150815f81518110611d2c57611d2c613895565b6020026020010151815f81518110611d4657611d46613895565b6020026020010151945094505050505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddd91906138fd565b6001600160a01b0316336001600160a01b031614611e0e5760405163ce98c24b60e01b815260040160405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e0e57604051632c01b20560e21b815260040160405180910390fd5b5f83815260026020908152604080832060ff861684529091528120548190808203611f1d575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612078565b5f86815260026020908152604080832060ff891684529091528120611f436001846138d6565b81548110611f5357611f53613895565b5f91825260209091200180546001600160601b03600160401b9091048116945090915085168303611f89575f935050505061115c565b805463ffffffff438116911603611fc1578054600160401b600160a01b031916600160401b6001600160601b03871602178155612076565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26120c88285612cea565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906120f590846138d6565b8154811061210557612105613895565b905f5260205f20019050835f036121305754600160401b90046001600160601b03169150610aac9050565b80545f9061214e90600160401b90046001600160601b031686612d01565b825490915063ffffffff438116911603612189578154600160401b600160a01b031916600160401b6001600160601b0383160217825561223a565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6060805f83516001600160401b03811115612260576122606131b9565b604051908082528060200260200182016040528015612289578160200160208202803683370190505b5090505f84516001600160401b038111156122a6576122a66131b9565b6040519080825280602002602001820160405280156122cf578160200160208202803683370190505b5090505f6122eb8760ff165f9081526003602052604090205490565b60ff88165f90815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b8282101561236b575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161231d565b5050505090506060600180811115612385576123856132ef565b60ff808b165f908152600560205260409020541660018111156123aa576123aa6132ef565b036123c0576123b98989612d2e565b9050612463565b60ff89165f908152600460208190526040918290209151637870733b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263f0e0e6769261241f928d929101613a5b565b5f60405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124609190810190613a7f565b90505b5f5b88518110156125d9575f5b84811015612569575f84828151811061248b5761248b613895565b602002602001015190505f8484815181106124a8576124a8613895565b602002602001015183815181106124c1576124c1613895565b6020026020010151111561256057670de0b6b3a764000081602001516001600160601b03168585815181106124f8576124f8613895565b6020026020010151848151811061251157612511613895565b60200260200101516125239190613b8b565b61252d9190613ba2565b88848151811061253f5761253f613895565b602002602001018181516125539190613bc1565b6001600160601b03169052505b50600101612470565b5060ff8a165f9081526020819052604090205486516001600160601b039091169087908390811061259c5761259c613895565b60200260200101516001600160601b031610158582815181106125c1576125c1613895565b91151560209283029190910190910152600101612465565b5093989297509195505050505050565b5f81511161260a5760405163796cc52560e01b815260040160405180910390fd5b805160ff83165f908152600360209081526040909120549061262c8383613be0565b111561264b576040516343714afd60e01b815260040160405180910390fd5b5f5b828110156118aa575f5b6126618284613be0565b8110156126f05784828151811061267a5761267a613895565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f2082815481106126b6576126b6613895565b5f918252602090912001546001600160a01b0316036126e857604051637b74340b60e01b815260040160405180910390fd5b600101612657565b505f84828151811061270457612704613895565b6020026020010151602001516001600160601b03161161273757604051637257125160e01b815260040160405180910390fd5b60ff85165f908152600360205260409020845185908390811061275c5761275c613895565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127c0576127c0613895565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061283657612836613895565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061289357612893613895565b60200260200101515f01518684815181106128b0576128b0613895565b6020026020010151602001516040516128ca929190612ef2565b60405180910390a260010161264d565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60ff82165f908152600560205260409020805482919060ff19166001838181111561296f5761296f6132ef565b02179055507f7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d816040516129a39190613303565b60405180910390a15050565b815f015163ffffffff168163ffffffff1610156129df57604051631391e11b60e21b815260040160405180910390fd5b602082015163ffffffff161580612a055750816020015163ffffffff168163ffffffff16105b612a2257604051631391e11b60e21b815260040160405180910390fd5b5050565b600160ff8084165f90815260056020526040902054166001811115612a4d57612a4d6132ef565b14612a6b5760405163a3be258360e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632981eb776040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613bf3565b63ffffffff168163ffffffff161115612b1757604051630bd441b960e21b815260040160405180910390fd5b60ff82165f90815260066020908152604091829020805463ffffffff19811663ffffffff8681169182179093558451929091168083529282015290917f28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7910160405180910390a1505050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612c21575f86815260026020908152604080832060ff89168452909152902063ffffffff851690612bd56001846138d6565b81548110612be557612be5613895565b5f9182526020909120015463ffffffff1611612c0f57612c066001826138d6565b9250505061115c565b80612c1981613c0e565b915050612ba1565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e40160405180910390fd5b5f61115c6001600160601b03808516908416613c23565b5f5f821215612d2457612d1382613c42565b612d1d9084613c5c565b9050610aac565b612d1d8284613bc1565b60ff82165f9081526006602052604081205460609190612d549063ffffffff1643613be0565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632bab2c4a60405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ded573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e1191906138fd565b6001600160a01b0316815260ff891660209182018190525f90815260049182905260409081902090516001600160e01b031960e086901b168152612e5b93928a9291899101613c7b565b5f60405180830381865afa158015612e75573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261223a9190810190613a7f565b803560ff81168114612eac575f5ffd5b919050565b5f60208284031215612ec1575f5ffd5b61115c82612e9c565b5f5f60408385031215612edb575f5ffd5b612ee483612e9c565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114611caf575f5ffd5b5f5f60408385031215612f39575f5ffd5b612f4283612e9c565b91506020830135612f5281612f14565b809150509250929050565b5f5f83601f840112612f6d575f5ffd5b5081356001600160401b03811115612f83575f5ffd5b6020830191508360208260051b8501011115611d56575f5ffd5b5f5f5f5f5f60608688031215612fb1575f5ffd5b612fba86612e9c565b945060208601356001600160401b03811115612fd4575f5ffd5b612fe088828901612f5d565b90955093505060408601356001600160401b03811115612ffe575f5ffd5b61300a88828901612f5d565b969995985093965092949392505050565b5f5f83601f84011261302b575f5ffd5b5081356001600160401b03811115613041575f5ffd5b602083019150836020828501011115611d56575f5ffd5b5f5f5f5f6060858703121561306b575f5ffd5b843561307681612f14565b93506020850135925060408501356001600160401b03811115613097575f5ffd5b6130a38782880161301b565b95989497509550505050565b5f8151808452602084019350602083015f5b828110156130e85781516001600160601b03168652602095860195909101906001016130c1565b5093949350505050565b604081525f61310460408301856130af565b828103602084015261223a81856130af565b5f5f60408385031215613127575f5ffd5b8235915061313760208401612e9c565b90509250929050565b602080825282518282018190525f918401906040840190835b818110156131ae5761319883855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101613159565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156131ef576131ef6131b9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561321d5761321d6131b9565b604052919050565b5f6001600160401b0382111561323d5761323d6131b9565b5060051b60200190565b5f5f60408385031215613258575f5ffd5b61326183612e9c565b915060208301356001600160401b0381111561327b575f5ffd5b8301601f8101851361328b575f5ffd5b803561329e61329982613225565b6131f5565b8082825260208201915060208360051b8501019250878311156132bf575f5ffd5b6020840193505b828410156132e15783358252602093840193909101906132c6565b809450505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061332357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f82601f830112613338575f5ffd5b813561334661329982613225565b8082825260208201915060208360051b860101925085831115613367575f5ffd5b602085015b8381101561338457803583526020928301920161336c565b5095945050505050565b5f5f5f606084860312156133a0575f5ffd5b83356001600160401b038111156133b5575f5ffd5b8401601f810186136133c5575f5ffd5b80356133d361329982613225565b8082825260208201915060208360051b8501019250888311156133f4575f5ffd5b6020840193505b8284101561341f57833561340e81612f14565b8252602093840193909101906133fb565b955050505060208401356001600160401b0381111561343c575f5ffd5b61344886828701613329565b92505061345760408501612e9c565b90509250925092565b602080825282518282018190525f918401906040840190835b818110156131ae5783511515835260209384019390920191600101613479565b80356001600160601b0381168114612eac575f5ffd5b5f82601f8301126134be575f5ffd5b81356134cc61329982613225565b8082825260208201915060208360061b8601019250858311156134ed575f5ffd5b602085015b838110156133845760408188031215613509575f5ffd5b6135116131cd565b813561351c81612f14565b815261352a60208301613499565b6020820152808452506020830192506040810190506134f2565b5f5f5f60608486031215613556575f5ffd5b61355f84612e9c565b925061356d60208501613499565b915060408401356001600160401b03811115613587575f5ffd5b613593868287016134af565b9150509250925092565b63ffffffff81168114611caf575f5ffd5b5f5f5f604084860312156135c0575f5ffd5b83356135cb8161359d565b925060208401356001600160401b038111156135e5575f5ffd5b6135f18682870161301b565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b818110156131ae57835163ffffffff16835260209384019390920191600101613617565b5f5f5f6060848603121561364d575f5ffd5b61365684612e9c565b95602085013595506040909401359392505050565b60608101610aac828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b5f5f604083850312156136b6575f5ffd5b6136bf83612e9c565b915061313760208401613499565b5f5f5f604084860312156136df575f5ffd5b8335925060208401356001600160401b038111156135e5575f5ffd5b5f5f6040838503121561370c575f5ffd5b61371583612e9c565b915060208301356001600160401b0381111561372f575f5ffd5b61373b858286016134af565b9150509250929050565b5f5f5f60608486031215613757575f5ffd5b61376084612e9c565b925060208401356137708161359d565b929592945050506040919091013590565b5f5f5f5f60808587031215613794575f5ffd5b61379d85612e9c565b93506137ab60208601613499565b925060408501356137bb8161359d565b915060608501356001600160401b038111156137d5575f5ffd5b6137e1878288016134af565b91505092959194509250565b5f5f5f606084860312156137ff575f5ffd5b8335925061380f60208501612e9c565b9150604084013561381f8161359d565b809150509250925092565b5f5f6040838503121561383b575f5ffd5b61384483612e9c565b91506020830135612f528161359d565b5f5f5f5f60808587031215613867575f5ffd5b61387085612e9c565b935060208501356138808161359d565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156138b9575f5ffd5b61115c82613499565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610aac57610aac6138c2565b634e487b7160e01b5f52603160045260245ffd5b5f6020828403121561390d575f5ffd5b815161115c81612f14565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610aac565b5f6020828403121561394e575f5ffd5b8151801515811461115c575f5ffd5b6001600160a01b038416815260ff831660208083019190915260606040830181905283519083018190525f918401906080840190835b818110156139ba5783516001600160a01b0316835260209384019390920191600101613993565b5090979650505050505050565b8082018281125f831280158216821582161715611c1957611c196138c2565b5f8151808452602084019350602083015f5b828110156130e85781516001600160a01b03168652602095860195909101906001016139f8565b5f8154808452602084019350825f5260205f205f5b828110156130e85781546001600160a01b0316865260209095019460019182019101613a34565b604081525f613a6d60408301856139e6565b828103602084015261223a8185613a1f565b5f60208284031215613a8f575f5ffd5b81516001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8051613ac261329982613225565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015613b805780516001600160401b03811115613b05575f5ffd5b8501603f81018913613b15575f5ffd5b6020810151613b2661329982613225565b808282526020820191506020808460051b8601010192508b831115613b49575f5ffd5b6040840193505b82841015613b6b578351825260209384019390910190613b50565b86525050602093840193919091019050613ae8565b509695505050505050565b8082028115828204841417610aac57610aac6138c2565b5f82613bbc57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610aac57610aac6138c2565b80820180821115610aac57610aac6138c2565b5f60208284031215613c03575f5ffd5b815161115c8161359d565b5f81613c1c57613c1c6138c2565b505f190190565b8181035f8312801583831316838312821617156106e8576106e86138c2565b5f600160ff1b8201613c5657613c566138c2565b505f0390565b6001600160601b038281168282160390811115610aac57610aac6138c2565b84516001600160a01b0316815260208086015163ffffffff169082015260a060408201525f613cad60a08301866139e6565b8281036060840152613cbf8186613a1f565b91505063ffffffff831660808301529594505050505056fea26469706673582212204597eb20b1bf16abfe806bbc444b98f27286774ee9644d6fb89da082b2c3157a64736f6c634300081b0033
1977    /// ```
1978    #[rustfmt::skip]
1979    #[allow(clippy::all)]
1980    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1981        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\x1EW_5`\xE0\x1C\x80c\x9A\xB4\xD6\xFF\x11a\x01*W\x80c\xC8)LV\x11a\0\xB4W\x80c\xDF\\\xF7#\x11a\0yW\x80c\xDF\\\xF7#\x14a\x06\x15W\x80c\xE0\x86\xAD\xB3\x14a\x06<W\x80c\xF2\xBE\x94\xAE\x14a\x06OW\x80c\xF8Q\xE1\x98\x14a\x06bW\x80c\xFA(\xC6'\x14a\x06uW__\xFD[\x80c\xC8)LV\x14a\x05\xA2W\x80c\xCA\x8A\xA7\xC7\x14a\x05\xB5W\x80c\xCCZ| \x14a\x05\xDCW\x80c\xD5\xEC\xCC\x05\x14a\x05\xEFW\x80c\xDD\x98F\xB9\x14a\x06\x02W__\xFD[\x80c\xB6\x90Kx\x11a\0\xFAW\x80c\xB6\x90Kx\x14a\x05.W\x80c\xBC\x9A@\xC3\x14a\x05AW\x80c\xBD)\xB8\xCD\x14a\x05TW\x80c\xC4gx\xA5\x14a\x05gW\x80c\xC6\x01R}\x14a\x05\x8FW__\xFD[\x80c\x9A\xB4\xD6\xFF\x14a\x04\x81W\x80c\x9F<\xCFe\x14a\x04\xBBW\x80c\xACk\xFB\x03\x14a\x04\xCEW\x80c\xAD\xC8\x04\xDA\x14a\x04\xEEW__\xFD[\x80c^Zgu\x11a\x01\xABW\x80cl?\xB4\xBF\x11a\x01{W\x80cl?\xB4\xBF\x14a\x03\xEDW\x80cm\x14\xA9\x87\x14a\x04\rW\x80cu\xD4\x17:\x14a\x044W\x80c|\x17#G\x14a\x04GW\x80c\x81\xC0u\x02\x14a\x04aW__\xFD[\x80c^Zgu\x14a\x03]W\x80c_\x1F-w\x14a\x03lW\x80ci\x7F\xBD\x93\x14a\x03\x7FW\x80ck:\xA7.\x14a\x03\xAEW__\xFD[\x80c%PGw\x11a\x01\xF1W\x80c%PGw\x14a\x02\xB8W\x80c,\xD9Y@\x14a\x02\xD9W\x80c<\xA5\xA5\xF5\x14a\x02\xF9W\x80cK\xD2n\t\x14a\x03\x1BW\x80cT\x01\xED'\x14a\x03JW__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x02\"W\x80c\x08s$a\x14a\x02WW\x80c\x1F\x9Bt\xE0\x14a\x02xW\x80c \xB6b\x98\x14a\x02\xA3W[__\xFD[a\x02Da\x0206`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02ja\x02e6`\x04a.\xCAV[a\x06\x88V[`@Qa\x02N\x92\x91\x90a.\xF2V[a\x02\x8Ba\x02\x866`\x04a/(V[a\x06\xCDV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x02\xB6a\x02\xB16`\x04a/\x9DV[a\x06\xEFV[\0[a\x02\xCBa\x02\xC66`\x04a0XV[a\x08\x8DV[`@Qa\x02N\x92\x91\x90a0\xF2V[a\x02\xECa\x02\xE76`\x04a1\x16V[a\n\x15V[`@Qa\x02N\x91\x90a1@V[a\x02Da\x03\x076`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02Da\x03)6`\x04a1\x16V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02\x8Ba\x03X6`\x04a1\x16V[a\n\xB2V[a\x02Dg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\xB6a\x03z6`\x04a2GV[a\n\xCAV[a\x03\xA1a\x03\x8D6`\x04a.\xB1V[`\x05` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Qa\x02N\x91\x90a3\x03V[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x04\0a\x03\xFB6`\x04a3\x8EV[a\x10\x08V[`@Qa\x02N\x91\x90a4`V[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\xB6a\x04B6`\x04a5DV[a\x11cV[a\x04O` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x04ta\x04o6`\x04a5\xAEV[a\x12IV[`@Qa\x02N\x91\x90a5\xFEV[a\x04\xA6a\x04\x8F6`\x04a.\xB1V[`\x06` R_\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x03\xD5a\x04\xC96`\x04a.\xCAV[a\x13\xEFV[a\x04\xE1a\x04\xDC6`\x04a6;V[a\x14#V[`@Qa\x02N\x91\x90a6kV[a\x05\x01a\x04\xFC6`\x04a.\xCAV[a\x14\xB9V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02NV[a\x04\xE1a\x05<6`\x04a.\xCAV[a\x150V[a\x02\xB6a\x05O6`\x04a6\xA5V[a\x15\xBDV[a\x02\xB6a\x05b6`\x04a6\xCDV[a\x15\xDEV[a\x02\x8Ba\x05u6`\x04a.\xB1V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\xB6a\x05\x9D6`\x04a6\xFBV[a\x16AV[a\x02\x8Ba\x05\xB06`\x04a7EV[a\x18\xB1V[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\xB6a\x05\xEA6`\x04a7\x81V[a\x19-V[a\x02\x8Ba\x05\xFD6`\x04a.\xB1V[a\x1A\x1FV[a\x04\xA6a\x06\x106`\x04a7\xEDV[a\x1ApV[a\x03\xD5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\xB6a\x06J6`\x04a8*V[a\x1A\x84V[a\x02\x8Ba\x06]6`\x04a8TV[a\x1A\xA0V[a\x04\xE1a\x06p6`\x04a1\x16V[a\x1B3V[a\x02\x8Ba\x06\x836`\x04a7\xEDV[a\x1C!V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x06\xA1W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[_\x82a\x06\xD8\x81a\x1C\x80V[_a\x06\xE3\x85\x85a\x1C\xB2V[P\x92PP[P\x92\x91PPV[a\x06\xF7a\x1D]V[\x84a\x07\x01\x81a\x1C\x80V[\x83\x80a\x07 W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07@W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x08\x82W\x85\x85\x82\x81\x81\x10a\x07mWa\x07ma8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x07\x82\x91\x90a8\xA9V[\x82\x89\x89\x84\x81\x81\x10a\x07\x95Wa\x07\x95a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x07\xACWa\x07\xACa8\x95V[\x90_R` _ \x01_\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x08\x12Wa\x08\x12a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x08)Wa\x08)a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08OWa\x08Oa8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x08d\x91\x90a8\xA9V[`@Qa\x08r\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x07SV[PPPPPPPPPV[``\x80a\x08\x98a\x1E\x10V[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xB1Wa\x08\xB1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xDAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xF6Wa\x08\xF6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\n\x07W_\x87\x87\x83\x81\x81\x10a\t?Wa\t?a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\tT\x90P\x81a\x1C\x80V[__a\t`\x83\x8Da\x1C\xB2V[\x91P\x91P\x80a\t\x82W`@Qc \x7F\x13\xE3`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\t\x8E\x8C\x85\x85a\x1EYV[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xA3Wa\t\xA3a8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\t\xCD\x84\x82a \xD2V[\x86\x86\x81Q\x81\x10a\t\xDFWa\t\xDFa8\x95V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\t$\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\n\xA5W_\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\nMV[PPPP\x90P[\x92\x91PPV[__a\n\xBE\x84\x84a\x1B3V[`@\x01Q\x94\x93PPPPV[a\n\xD2a\x1D]V[\x81a\n\xDC\x81a\x1C\x80V[\x81Q\x80a\n\xFCW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0B1Wa\x0B1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0BZW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0EUW\x83\x87\x82\x81Q\x81\x10a\x0BzWa\x0Bza8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0B\x92Wa\x0B\x92a8\x95V[_\x91\x82R` \x90\x91 \x01T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x90\x83\x90\x81\x10a\x0B\xBDWa\x0B\xBDa8\x95V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x87`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x85\x89\x84\x81Q\x81\x10a\x0C\x15Wa\x0C\x15a8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C-Wa\x0C-a8\x95V[_\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x87`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x89\x84\x81Q\x81\x10a\x0C\x8AWa\x0C\x8Aa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA2Wa\x0C\xA2a8\x95V[_\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x83T\x84\x90a\x0C\xE1\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\x0C\xF1Wa\x0C\xF1a8\x95V[\x90_R` _ \x01\x84\x88\x83\x81Q\x81\x10a\r\x0CWa\r\x0Ca8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r$Wa\r$a8\x95V[_\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x83T\x84\x90\x80a\rvWa\rva8\xE9V[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x82T\x83\x90a\r\x9C\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\r\xACWa\r\xACa8\x95V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x83\x81Q\x81\x10a\r\xDAWa\r\xDAa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xF2Wa\r\xF2a8\x95V[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x82\x80T\x80a\x0E-Wa\x0E-a8\xE9V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0B_V[P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xD7\x91\x90a8\xFDV[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x8C\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x0F<\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F{\x91\x90a9>V[\x15a\x0F\xFEW`@Qc\xB6k\xD9\x89`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xB6k\xD9\x89\x90a\x0F\xD0\x90\x84\x90\x8C\x90\x87\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0F\xE7W__\xFD[PZ\xF1\x15\x80\x15a\x0F\xF9W=__>=_\xFD[PPPP[PPPPPPPPV[``a\x10\x12a\x1E\x10V[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10,Wa\x10,a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x10UW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Pa\x10a\x83a\x1C\x80V[__a\x10m\x85\x88a\"CV[\x90\x92P\x90P_\x80[\x88Q\x81\x10\x15a\x11IW\x82\x81\x81Q\x81\x10a\x10\x90Wa\x10\x90a8\x95V[` \x02` \x01\x01Qa\x10\xF4W_\x84\x82\x81Q\x81\x10a\x10\xAFWa\x10\xAFa8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\x01\x85\x82\x81Q\x81\x10a\x10\xE3Wa\x10\xE3a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R[_a\x112\x89\x83\x81Q\x81\x10a\x11\nWa\x11\na8\x95V[` \x02` \x01\x01Q\x89\x87\x85\x81Q\x81\x10a\x11%Wa\x11%a8\x95V[` \x02` \x01\x01Qa\x1EYV[\x90Pa\x11>\x81\x84a9\xC7V[\x92PP`\x01\x01a\x10uV[Pa\x11T\x86\x82a \xD2V[P\x92\x93PPPP[\x93\x92PPPV[a\x11ka\x1E\x10V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x11\x9BW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x83\x82a%\xE9V[a\x11\xAF\x83\x83a(\xDAV[a\x11\xB9\x83_a)BV[PP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12dWa\x12da1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\x8DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x13\xE6W_\x85\x85\x83\x81\x81\x10a\x12\xADWa\x12\xADa8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x12\xC2\x90P\x81a\x1C\x80V[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x12\xEAWa\x12\xEAa8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\x1AW`@Qc\xCCdes`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x13\xDBW`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x13\\\x84\x86a8\xD6V[a\x13f\x91\x90a8\xD6V[\x81T\x81\x10a\x13vWa\x13va8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x13\xD3W`\x01a\x13\x98\x82\x84a8\xD6V[a\x13\xA2\x91\x90a8\xD6V[\x85\x85\x81Q\x81\x10a\x13\xB4Wa\x13\xB4a8\x95V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x13\xDBV[`\x01\x01a\x13.V[PPP`\x01\x01a\x12\x92V[P\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\x08W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x14gWa\x14ga8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x14\xEFWa\x14\xEFa8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x15lWa\x15la8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x15\xC5a\x1D]V[\x81a\x15\xCF\x81a\x1C\x80V[a\x15\xD9\x83\x83a(\xDAV[PPPV[a\x15\xE6a\x1E\x10V[_[\x81\x81\x10\x15a\x16;W_\x83\x83\x83\x81\x81\x10a\x16\x03Wa\x16\x03a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x16\x18\x90P\x81a\x1C\x80V[_a\x16$\x86\x83_a\x1EYV[\x90Pa\x160\x82\x82a \xD2V[PPP`\x01\x01a\x15\xE8V[PPPPV[a\x16Ia\x1D]V[\x81a\x16S\x81a\x1C\x80V[a\x16]\x83\x83a%\xE9V[_\x82Q\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xBFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xE3\x91\x90a8\xFDV[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x89\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x17H\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17cW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x87\x91\x90a9>V[\x15a\x18\xAAW_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xA5Wa\x17\xA5a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xCEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x18*W\x85\x81\x81Q\x81\x10a\x17\xEDWa\x17\xEDa8\x95V[` \x02` \x01\x01Q_\x01Q\x82\x82\x81Q\x81\x10a\x18\nWa\x18\na8\x95V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x17\xD3V[P`@Qc\x02\x87\xF7Q`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cP\xFE\xEA \x90a\x18{\x90\x85\x90\x8A\x90\x86\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x92W__\xFD[PZ\xF1\x15\x80\x15a\x18\xA4W=__>=_\xFD[PPPPP[PPPPPV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x18\xD7Wa\x18\xD7a8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\n\xBE\x81\x85a)\xAFV[a\x195a\x1E\x10V[`\xFF\x84\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x19eW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19o\x84\x82a%\xE9V[a\x19y\x84\x84a(\xDAV[a\x19\x84\x84`\x01a)BV[a\x19\x8E\x84\x83a*&V[PPP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x1A?\x91a8\xD6V[\x81T\x81\x10a\x1AOWa\x1AOa8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1A|\x84\x84\x84a+\x83V[\x94\x93PPPPV[a\x1A\x8Ca\x1D]V[\x81a\x1A\x96\x81a\x1C\x80V[a\x15\xD9\x83\x83a*&V[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xD0Wa\x1A\xD0a8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x1B&\x81\x86a)\xAFV[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1B\x8FW\x91Pa\n\xAC\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1B\xB5`\x01\x84a8\xD6V[\x81T\x81\x10a\x1B\xC5Wa\x1B\xC5a8\x95V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\n\xAC\x91PPV[PP\x92\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1CG\x85\x85\x85a+\x83V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C]Wa\x1C]a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x90 Ta\x1C\xAFW`@Qcs\x10\xCF\xF5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x82\x91\x82\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x83\x81_\x81Q\x81\x10a\x1C\xEAWa\x1C\xEAa8\x95V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP__a\x1D\x16\x87\x84a\"CV[\x91P\x91P\x81_\x81Q\x81\x10a\x1D,Wa\x1D,a8\x95V[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a\x1DFWa\x1DFa8\x95V[` \x02` \x01\x01Q\x94P\x94PPPP[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xDD\x91\x90a8\xFDV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1E\x0EW`@Qc\xCE\x98\xC2K`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1E\x0EW`@Qc,\x01\xB2\x05`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a\x1F\x1DW_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua xV[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1FC`\x01\x84a8\xD6V[\x81T\x81\x10a\x1FSWa\x1FSa8\x95V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a\x1F\x89W_\x93PPPPa\x11\\V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x1F\xC1W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua vV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U_\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a \xC8\x82\x85a,\xEAV[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a \xF5\x90\x84a8\xD6V[\x81T\x81\x10a!\x05Wa!\x05a8\x95V[\x90_R` _ \x01\x90P\x83_\x03a!0WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\n\xAC\x90PV[\x80T_\x90a!N\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a-\x01V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a!\x89W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua\":V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[``\x80_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"`Wa\"`a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\x89W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xA6Wa\"\xA6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\xCFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_a\"\xEB\x87`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`\xFF\x88\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R\x94\x95P\x92\x93\x90\x92\x91\x84\x90\x84\x01[\x82\x82\x10\x15a#kW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a#\x1DV[PPPP\x90P```\x01\x80\x81\x11\x15a#\x85Wa#\x85a2\xEFV[`\xFF\x80\x8B\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a#\xAAWa#\xAAa2\xEFV[\x03a#\xC0Wa#\xB9\x89\x89a-.V[\x90Pa$cV[`\xFF\x89\x16_\x90\x81R`\x04` \x81\x90R`@\x91\x82\x90 \x91Qcxps;`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\xF0\xE0\xE6v\x92a$\x1F\x92\x8D\x92\x91\x01a:[V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a$9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra$`\x91\x90\x81\x01\x90a:\x7FV[\x90P[_[\x88Q\x81\x10\x15a%\xD9W_[\x84\x81\x10\x15a%iW_\x84\x82\x81Q\x81\x10a$\x8BWa$\x8Ba8\x95V[` \x02` \x01\x01Q\x90P_\x84\x84\x81Q\x81\x10a$\xA8Wa$\xA8a8\x95V[` \x02` \x01\x01Q\x83\x81Q\x81\x10a$\xC1Wa$\xC1a8\x95V[` \x02` \x01\x01Q\x11\x15a%`Wg\r\xE0\xB6\xB3\xA7d\0\0\x81` \x01Q`\x01`\x01``\x1B\x03\x16\x85\x85\x81Q\x81\x10a$\xF8Wa$\xF8a8\x95V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a%\x11Wa%\x11a8\x95V[` \x02` \x01\x01Qa%#\x91\x90a;\x8BV[a%-\x91\x90a;\xA2V[\x88\x84\x81Q\x81\x10a%?Wa%?a8\x95V[` \x02` \x01\x01\x81\x81Qa%S\x91\x90a;\xC1V[`\x01`\x01``\x1B\x03\x16\x90RP[P`\x01\x01a$pV[P`\xFF\x8A\x16_\x90\x81R` \x81\x90R`@\x90 T\x86Q`\x01`\x01``\x1B\x03\x90\x91\x16\x90\x87\x90\x83\x90\x81\x10a%\x9CWa%\x9Ca8\x95V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85\x82\x81Q\x81\x10a%\xC1Wa%\xC1a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a$eV[P\x93\x98\x92\x97P\x91\x95PPPPPPV[_\x81Q\x11a&\nW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xFF\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a&,\x83\x83a;\xE0V[\x11\x15a&KW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\x18\xAAW_[a&a\x82\x84a;\xE0V[\x81\x10\x15a&\xF0W\x84\x82\x81Q\x81\x10a&zWa&za8\x95V[` \x02` \x01\x01Q_\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03_\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x82\x81T\x81\x10a&\xB6Wa&\xB6a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a&\xE8W`@Qc{t4\x0B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a&WV[P_\x84\x82\x81Q\x81\x10a'\x04Wa'\x04a8\x95V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'7W`@QcrW\x12Q`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x85\x16_\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'\\Wa'\\a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U_\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'\xC0Wa'\xC0a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U_\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a(6Wa(6a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a(\x93Wa(\x93a8\x95V[` \x02` \x01\x01Q_\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a8\x95V[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a&MV[`\xFF\x82\x16_\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\xFF\x82\x16_\x90\x81R`\x05` R`@\x90 \x80T\x82\x91\x90`\xFF\x19\x16`\x01\x83\x81\x81\x11\x15a)oWa)oa2\xEFV[\x02\x17\x90UP\x7F|\x11.\x86<\xCF\0xb\xE2\xC9\xE2X\x19\xC93\xFE\xDB\xC95\ndCB;J\x85\x99\xC2\xE8\xA5-\x81`@Qa)\xA3\x91\x90a3\x03V[`@Q\x80\x91\x03\x90\xA1PPV[\x81_\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\xDFW`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a*\x05WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*\"W`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\x01`\xFF\x80\x84\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a*MWa*Ma2\xEFV[\x14a*kW`@Qc\xA3\xBE%\x83`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c)\x81\xEBw`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a*\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\xEB\x91\x90a;\xF3V[c\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x11\x15a+\x17W`@Qc\x0B\xD4A\xB9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x82\x16_\x90\x81R`\x06` \x90\x81R`@\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x81\x16c\xFF\xFF\xFF\xFF\x86\x81\x16\x91\x82\x17\x90\x93U\x84Q\x92\x90\x91\x16\x80\x83R\x92\x82\x01R\x90\x91\x7F(\xD75\x8By\xF0-!\xB8\xB7\xE1z\xEF\xC4\x18Zd0\x8A\xA3t\x06\xFA[\xEF\xC0[\x91\x93,9\xC7\x91\x01`@Q\x80\x91\x03\x90\xA1PPPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a,!W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\xD5`\x01\x84a8\xD6V[\x81T\x81\x10a+\xE5Wa+\xE5a8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a,\x0FWa,\x06`\x01\x82a8\xD6V[\x92PPPa\x11\\V[\x80a,\x19\x81a<\x0EV[\x91PPa+\xA1V[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\\`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a<#V[__\x82\x12\x15a-$Wa-\x13\x82a<BV[a-\x1D\x90\x84a<\\V[\x90Pa\n\xACV[a-\x1D\x82\x84a;\xC1V[`\xFF\x82\x16_\x90\x81R`\x06` R`@\x81 T``\x91\x90a-T\x90c\xFF\xFF\xFF\xFF\x16Ca;\xE0V[\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c+\xAB,J`@Q\x80`@\x01`@R\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a-\xEDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\x11\x91\x90a8\xFDV[`\x01`\x01`\xA0\x1B\x03\x16\x81R`\xFF\x89\x16` \x91\x82\x01\x81\x90R_\x90\x81R`\x04\x91\x82\x90R`@\x90\x81\x90 \x90Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81Ra.[\x93\x92\x8A\x92\x91\x89\x91\x01a<{V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.uW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\":\x91\x90\x81\x01\x90a:\x7FV[\x805`\xFF\x81\x16\x81\x14a.\xACW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a.\xC1W__\xFD[a\x11\\\x82a.\x9CV[__`@\x83\x85\x03\x12\x15a.\xDBW__\xFD[a.\xE4\x83a.\x9CV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1C\xAFW__\xFD[__`@\x83\x85\x03\x12\x15a/9W__\xFD[a/B\x83a.\x9CV[\x91P` \x83\x015a/R\x81a/\x14V[\x80\x91PP\x92P\x92\x90PV[__\x83`\x1F\x84\x01\x12a/mW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x83W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1DVW__\xFD[_____``\x86\x88\x03\x12\x15a/\xB1W__\xFD[a/\xBA\x86a.\x9CV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xD4W__\xFD[a/\xE0\x88\x82\x89\x01a/]V[\x90\x95P\x93PP`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xFEW__\xFD[a0\n\x88\x82\x89\x01a/]V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a0+W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0AW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1DVW__\xFD[____``\x85\x87\x03\x12\x15a0kW__\xFD[\x845a0v\x81a/\x14V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x97W__\xFD[a0\xA3\x87\x82\x88\x01a0\x1BV[\x95\x98\x94\x97P\x95PPPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a0\xC1V[P\x93\x94\x93PPPPV[`@\x81R_a1\x04`@\x83\x01\x85a0\xAFV[\x82\x81\x03` \x84\x01Ra\":\x81\x85a0\xAFV[__`@\x83\x85\x03\x12\x15a1'W__\xFD[\x825\x91Pa17` \x84\x01a.\x9CV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEWa1\x98\x83\x85Qc\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a1YV[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a1\xEFWa1\xEFa1\xB9V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x1DWa2\x1Da1\xB9V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a2=Wa2=a1\xB9V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a2XW__\xFD[a2a\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2{W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2\x8BW__\xFD[\x805a2\x9Ea2\x99\x82a2%V[a1\xF5V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a2\xBFW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xE1W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a2\xC6V[\x80\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x02\x83\x10a3#WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[_\x82`\x1F\x83\x01\x12a38W__\xFD[\x815a3Fa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3gW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W\x805\x83R` \x92\x83\x01\x92\x01a3lV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a3\xA0W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xB5W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a3\xC5W__\xFD[\x805a3\xD3a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a3\xF4W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\x1FW\x835a4\x0E\x81a/\x14V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a3\xFBV[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4<W__\xFD[a4H\x86\x82\x87\x01a3)V[\x92PPa4W`@\x85\x01a.\x9CV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEW\x83Q\x15\x15\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a4yV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a.\xACW__\xFD[_\x82`\x1F\x83\x01\x12a4\xBEW__\xFD[\x815a4\xCCa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a4\xEDW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W`@\x81\x88\x03\x12\x15a5\tW__\xFD[a5\x11a1\xCDV[\x815a5\x1C\x81a/\x14V[\x81Ra5*` \x83\x01a4\x99V[` \x82\x01R\x80\x84RP` \x83\x01\x92P`@\x81\x01\x90Pa4\xF2V[___``\x84\x86\x03\x12\x15a5VW__\xFD[a5_\x84a.\x9CV[\x92Pa5m` \x85\x01a4\x99V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\x87W__\xFD[a5\x93\x86\x82\x87\x01a4\xAFV[\x91PP\x92P\x92P\x92V[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1C\xAFW__\xFD[___`@\x84\x86\x03\x12\x15a5\xC0W__\xFD[\x835a5\xCB\x81a5\x9DV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[a5\xF1\x86\x82\x87\x01a0\x1BV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a6\x17V[___``\x84\x86\x03\x12\x15a6MW__\xFD[a6V\x84a.\x9CV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[``\x81\x01a\n\xAC\x82\x84c\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[__`@\x83\x85\x03\x12\x15a6\xB6W__\xFD[a6\xBF\x83a.\x9CV[\x91Pa17` \x84\x01a4\x99V[___`@\x84\x86\x03\x12\x15a6\xDFW__\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[__`@\x83\x85\x03\x12\x15a7\x0CW__\xFD[a7\x15\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7/W__\xFD[a7;\x85\x82\x86\x01a4\xAFV[\x91PP\x92P\x92\x90PV[___``\x84\x86\x03\x12\x15a7WW__\xFD[a7`\x84a.\x9CV[\x92P` \x84\x015a7p\x81a5\x9DV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a7\x94W__\xFD[a7\x9D\x85a.\x9CV[\x93Pa7\xAB` \x86\x01a4\x99V[\x92P`@\x85\x015a7\xBB\x81a5\x9DV[\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\xD5W__\xFD[a7\xE1\x87\x82\x88\x01a4\xAFV[\x91PP\x92\x95\x91\x94P\x92PV[___``\x84\x86\x03\x12\x15a7\xFFW__\xFD[\x835\x92Pa8\x0F` \x85\x01a.\x9CV[\x91P`@\x84\x015a8\x1F\x81a5\x9DV[\x80\x91PP\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a8;W__\xFD[a8D\x83a.\x9CV[\x91P` \x83\x015a/R\x81a5\x9DV[____`\x80\x85\x87\x03\x12\x15a8gW__\xFD[a8p\x85a.\x9CV[\x93P` \x85\x015a8\x80\x81a5\x9DV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a8\xB9W__\xFD[a\x11\\\x82a4\x99V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a9\rW__\xFD[\x81Qa\x11\\\x81a/\x14V[\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`@\x81\x01a\n\xACV[_` \x82\x84\x03\x12\x15a9NW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x11\\W__\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`\xFF\x83\x16` \x80\x83\x01\x91\x90\x91R```@\x83\x01\x81\x90R\x83Q\x90\x83\x01\x81\x90R_\x91\x84\x01\x90`\x80\x84\x01\x90\x83[\x81\x81\x10\x15a9\xBAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a9\x93V[P\x90\x97\x96PPPPPPPV[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a\x1C\x19Wa\x1C\x19a8\xC2V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a9\xF8V[_\x81T\x80\x84R` \x84\x01\x93P\x82_R` _ _[\x82\x81\x10\x15a0\xE8W\x81T`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x90\x95\x01\x94`\x01\x91\x82\x01\x91\x01a:4V[`@\x81R_a:m`@\x83\x01\x85a9\xE6V[\x82\x81\x03` \x84\x01Ra\":\x81\x85a:\x1FV[_` \x82\x84\x03\x12\x15a:\x8FW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a:\xA4W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a:\xB4W__\xFD[\x80Qa:\xC2a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a:\xE3W__\xFD[` \x84\x01[\x83\x81\x10\x15a;\x80W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a;\x05W__\xFD[\x85\x01`?\x81\x01\x89\x13a;\x15W__\xFD[` \x81\x01Qa;&a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x80\x84`\x05\x1B\x86\x01\x01\x01\x92P\x8B\x83\x11\x15a;IW__\xFD[`@\x84\x01\x93P[\x82\x84\x10\x15a;kW\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a;PV[\x86RPP` \x93\x84\x01\x93\x91\x90\x91\x01\x90Pa:\xE8V[P\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xACWa\n\xACa8\xC2V[_\x82a;\xBCWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[\x80\x82\x01\x80\x82\x11\x15a\n\xACWa\n\xACa8\xC2V[_` \x82\x84\x03\x12\x15a<\x03W__\xFD[\x81Qa\x11\\\x81a5\x9DV[_\x81a<\x1CWa<\x1Ca8\xC2V[P_\x19\x01\x90V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a\x06\xE8Wa\x06\xE8a8\xC2V[_`\x01`\xFF\x1B\x82\x01a<VWa<Va8\xC2V[P_\x03\x90V[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[\x84Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x86\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\xA0`@\x82\x01R_a<\xAD`\xA0\x83\x01\x86a9\xE6V[\x82\x81\x03``\x84\x01Ra<\xBF\x81\x86a:\x1FV[\x91PPc\xFF\xFF\xFF\xFF\x83\x16`\x80\x83\x01R\x95\x94PPPPPV\xFE\xA2dipfsX\"\x12 E\x97\xEB \xB1\xBF\x16\xAB\xFE\x80k\xBCDK\x98\xF2r\x86wN\xE9dMo\xB8\x9D\xA0\x82\xB2\xC3\x15zdsolcC\0\x08\x1B\x003",
1982    );
1983    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1984    /**Custom error with signature `BelowMinimumStakeRequirement()` and selector `0x40fe27c6`.
1985    ```solidity
1986    error BelowMinimumStakeRequirement();
1987    ```*/
1988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1989    #[derive(Clone)]
1990    pub struct BelowMinimumStakeRequirement;
1991    #[allow(
1992        non_camel_case_types,
1993        non_snake_case,
1994        clippy::pub_underscore_fields,
1995        clippy::style
1996    )]
1997    const _: () = {
1998        use alloy::sol_types as alloy_sol_types;
1999        #[doc(hidden)]
2000        type UnderlyingSolTuple<'a> = ();
2001        #[doc(hidden)]
2002        type UnderlyingRustTuple<'a> = ();
2003        #[cfg(test)]
2004        #[allow(dead_code, unreachable_patterns)]
2005        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2006            match _t {
2007                alloy_sol_types::private::AssertTypeEq::<
2008                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2009                >(_) => {}
2010            }
2011        }
2012        #[automatically_derived]
2013        #[doc(hidden)]
2014        impl ::core::convert::From<BelowMinimumStakeRequirement> for UnderlyingRustTuple<'_> {
2015            fn from(value: BelowMinimumStakeRequirement) -> Self {
2016                ()
2017            }
2018        }
2019        #[automatically_derived]
2020        #[doc(hidden)]
2021        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BelowMinimumStakeRequirement {
2022            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2023                Self
2024            }
2025        }
2026        #[automatically_derived]
2027        impl alloy_sol_types::SolError for BelowMinimumStakeRequirement {
2028            type Parameters<'a> = UnderlyingSolTuple<'a>;
2029            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2030            const SIGNATURE: &'static str = "BelowMinimumStakeRequirement()";
2031            const SELECTOR: [u8; 4] = [64u8, 254u8, 39u8, 198u8];
2032            #[inline]
2033            fn new<'a>(
2034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2035            ) -> Self {
2036                tuple.into()
2037            }
2038            #[inline]
2039            fn tokenize(&self) -> Self::Token<'_> {
2040                ()
2041            }
2042            #[inline]
2043            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2044                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2045                    data,
2046                )
2047                .map(Self::new)
2048            }
2049        }
2050    };
2051    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2052    /**Custom error with signature `EmptyStakeHistory()` and selector `0xcc646573`.
2053    ```solidity
2054    error EmptyStakeHistory();
2055    ```*/
2056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2057    #[derive(Clone)]
2058    pub struct EmptyStakeHistory;
2059    #[allow(
2060        non_camel_case_types,
2061        non_snake_case,
2062        clippy::pub_underscore_fields,
2063        clippy::style
2064    )]
2065    const _: () = {
2066        use alloy::sol_types as alloy_sol_types;
2067        #[doc(hidden)]
2068        type UnderlyingSolTuple<'a> = ();
2069        #[doc(hidden)]
2070        type UnderlyingRustTuple<'a> = ();
2071        #[cfg(test)]
2072        #[allow(dead_code, unreachable_patterns)]
2073        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2074            match _t {
2075                alloy_sol_types::private::AssertTypeEq::<
2076                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2077                >(_) => {}
2078            }
2079        }
2080        #[automatically_derived]
2081        #[doc(hidden)]
2082        impl ::core::convert::From<EmptyStakeHistory> for UnderlyingRustTuple<'_> {
2083            fn from(value: EmptyStakeHistory) -> Self {
2084                ()
2085            }
2086        }
2087        #[automatically_derived]
2088        #[doc(hidden)]
2089        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EmptyStakeHistory {
2090            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2091                Self
2092            }
2093        }
2094        #[automatically_derived]
2095        impl alloy_sol_types::SolError for EmptyStakeHistory {
2096            type Parameters<'a> = UnderlyingSolTuple<'a>;
2097            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2098            const SIGNATURE: &'static str = "EmptyStakeHistory()";
2099            const SELECTOR: [u8; 4] = [204u8, 100u8, 101u8, 115u8];
2100            #[inline]
2101            fn new<'a>(
2102                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2103            ) -> Self {
2104                tuple.into()
2105            }
2106            #[inline]
2107            fn tokenize(&self) -> Self::Token<'_> {
2108                ()
2109            }
2110            #[inline]
2111            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2112                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2113                    data,
2114                )
2115                .map(Self::new)
2116            }
2117        }
2118    };
2119    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2120    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
2121    ```solidity
2122    error InputArrayLengthMismatch();
2123    ```*/
2124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2125    #[derive(Clone)]
2126    pub struct InputArrayLengthMismatch;
2127    #[allow(
2128        non_camel_case_types,
2129        non_snake_case,
2130        clippy::pub_underscore_fields,
2131        clippy::style
2132    )]
2133    const _: () = {
2134        use alloy::sol_types as alloy_sol_types;
2135        #[doc(hidden)]
2136        type UnderlyingSolTuple<'a> = ();
2137        #[doc(hidden)]
2138        type UnderlyingRustTuple<'a> = ();
2139        #[cfg(test)]
2140        #[allow(dead_code, unreachable_patterns)]
2141        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2142            match _t {
2143                alloy_sol_types::private::AssertTypeEq::<
2144                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2145                >(_) => {}
2146            }
2147        }
2148        #[automatically_derived]
2149        #[doc(hidden)]
2150        impl ::core::convert::From<InputArrayLengthMismatch> for UnderlyingRustTuple<'_> {
2151            fn from(value: InputArrayLengthMismatch) -> Self {
2152                ()
2153            }
2154        }
2155        #[automatically_derived]
2156        #[doc(hidden)]
2157        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthMismatch {
2158            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2159                Self
2160            }
2161        }
2162        #[automatically_derived]
2163        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
2164            type Parameters<'a> = UnderlyingSolTuple<'a>;
2165            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2166            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
2167            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
2168            #[inline]
2169            fn new<'a>(
2170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2171            ) -> Self {
2172                tuple.into()
2173            }
2174            #[inline]
2175            fn tokenize(&self) -> Self::Token<'_> {
2176                ()
2177            }
2178            #[inline]
2179            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2180                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2181                    data,
2182                )
2183                .map(Self::new)
2184            }
2185        }
2186    };
2187    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2188    /**Custom error with signature `InputArrayLengthZero()` and selector `0x796cc525`.
2189    ```solidity
2190    error InputArrayLengthZero();
2191    ```*/
2192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2193    #[derive(Clone)]
2194    pub struct InputArrayLengthZero;
2195    #[allow(
2196        non_camel_case_types,
2197        non_snake_case,
2198        clippy::pub_underscore_fields,
2199        clippy::style
2200    )]
2201    const _: () = {
2202        use alloy::sol_types as alloy_sol_types;
2203        #[doc(hidden)]
2204        type UnderlyingSolTuple<'a> = ();
2205        #[doc(hidden)]
2206        type UnderlyingRustTuple<'a> = ();
2207        #[cfg(test)]
2208        #[allow(dead_code, unreachable_patterns)]
2209        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2210            match _t {
2211                alloy_sol_types::private::AssertTypeEq::<
2212                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2213                >(_) => {}
2214            }
2215        }
2216        #[automatically_derived]
2217        #[doc(hidden)]
2218        impl ::core::convert::From<InputArrayLengthZero> for UnderlyingRustTuple<'_> {
2219            fn from(value: InputArrayLengthZero) -> Self {
2220                ()
2221            }
2222        }
2223        #[automatically_derived]
2224        #[doc(hidden)]
2225        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthZero {
2226            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2227                Self
2228            }
2229        }
2230        #[automatically_derived]
2231        impl alloy_sol_types::SolError for InputArrayLengthZero {
2232            type Parameters<'a> = UnderlyingSolTuple<'a>;
2233            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2234            const SIGNATURE: &'static str = "InputArrayLengthZero()";
2235            const SELECTOR: [u8; 4] = [121u8, 108u8, 197u8, 37u8];
2236            #[inline]
2237            fn new<'a>(
2238                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2239            ) -> Self {
2240                tuple.into()
2241            }
2242            #[inline]
2243            fn tokenize(&self) -> Self::Token<'_> {
2244                ()
2245            }
2246            #[inline]
2247            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2248                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2249                    data,
2250                )
2251                .map(Self::new)
2252            }
2253        }
2254    };
2255    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2256    /**Custom error with signature `InputDuplicateStrategy()` and selector `0x7b74340b`.
2257    ```solidity
2258    error InputDuplicateStrategy();
2259    ```*/
2260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2261    #[derive(Clone)]
2262    pub struct InputDuplicateStrategy;
2263    #[allow(
2264        non_camel_case_types,
2265        non_snake_case,
2266        clippy::pub_underscore_fields,
2267        clippy::style
2268    )]
2269    const _: () = {
2270        use alloy::sol_types as alloy_sol_types;
2271        #[doc(hidden)]
2272        type UnderlyingSolTuple<'a> = ();
2273        #[doc(hidden)]
2274        type UnderlyingRustTuple<'a> = ();
2275        #[cfg(test)]
2276        #[allow(dead_code, unreachable_patterns)]
2277        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2278            match _t {
2279                alloy_sol_types::private::AssertTypeEq::<
2280                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2281                >(_) => {}
2282            }
2283        }
2284        #[automatically_derived]
2285        #[doc(hidden)]
2286        impl ::core::convert::From<InputDuplicateStrategy> for UnderlyingRustTuple<'_> {
2287            fn from(value: InputDuplicateStrategy) -> Self {
2288                ()
2289            }
2290        }
2291        #[automatically_derived]
2292        #[doc(hidden)]
2293        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputDuplicateStrategy {
2294            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2295                Self
2296            }
2297        }
2298        #[automatically_derived]
2299        impl alloy_sol_types::SolError for InputDuplicateStrategy {
2300            type Parameters<'a> = UnderlyingSolTuple<'a>;
2301            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2302            const SIGNATURE: &'static str = "InputDuplicateStrategy()";
2303            const SELECTOR: [u8; 4] = [123u8, 116u8, 52u8, 11u8];
2304            #[inline]
2305            fn new<'a>(
2306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2307            ) -> Self {
2308                tuple.into()
2309            }
2310            #[inline]
2311            fn tokenize(&self) -> Self::Token<'_> {
2312                ()
2313            }
2314            #[inline]
2315            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2316                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2317                    data,
2318                )
2319                .map(Self::new)
2320            }
2321        }
2322    };
2323    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2324    /**Custom error with signature `InputMultiplierZero()` and selector `0x72571251`.
2325    ```solidity
2326    error InputMultiplierZero();
2327    ```*/
2328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2329    #[derive(Clone)]
2330    pub struct InputMultiplierZero;
2331    #[allow(
2332        non_camel_case_types,
2333        non_snake_case,
2334        clippy::pub_underscore_fields,
2335        clippy::style
2336    )]
2337    const _: () = {
2338        use alloy::sol_types as alloy_sol_types;
2339        #[doc(hidden)]
2340        type UnderlyingSolTuple<'a> = ();
2341        #[doc(hidden)]
2342        type UnderlyingRustTuple<'a> = ();
2343        #[cfg(test)]
2344        #[allow(dead_code, unreachable_patterns)]
2345        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2346            match _t {
2347                alloy_sol_types::private::AssertTypeEq::<
2348                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2349                >(_) => {}
2350            }
2351        }
2352        #[automatically_derived]
2353        #[doc(hidden)]
2354        impl ::core::convert::From<InputMultiplierZero> for UnderlyingRustTuple<'_> {
2355            fn from(value: InputMultiplierZero) -> Self {
2356                ()
2357            }
2358        }
2359        #[automatically_derived]
2360        #[doc(hidden)]
2361        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputMultiplierZero {
2362            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2363                Self
2364            }
2365        }
2366        #[automatically_derived]
2367        impl alloy_sol_types::SolError for InputMultiplierZero {
2368            type Parameters<'a> = UnderlyingSolTuple<'a>;
2369            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2370            const SIGNATURE: &'static str = "InputMultiplierZero()";
2371            const SELECTOR: [u8; 4] = [114u8, 87u8, 18u8, 81u8];
2372            #[inline]
2373            fn new<'a>(
2374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2375            ) -> Self {
2376                tuple.into()
2377            }
2378            #[inline]
2379            fn tokenize(&self) -> Self::Token<'_> {
2380                ()
2381            }
2382            #[inline]
2383            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2384                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2385                    data,
2386                )
2387                .map(Self::new)
2388            }
2389        }
2390    };
2391    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2392    /**Custom error with signature `InvalidBlockNumber()` and selector `0x4e47846c`.
2393    ```solidity
2394    error InvalidBlockNumber();
2395    ```*/
2396    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2397    #[derive(Clone)]
2398    pub struct InvalidBlockNumber;
2399    #[allow(
2400        non_camel_case_types,
2401        non_snake_case,
2402        clippy::pub_underscore_fields,
2403        clippy::style
2404    )]
2405    const _: () = {
2406        use alloy::sol_types as alloy_sol_types;
2407        #[doc(hidden)]
2408        type UnderlyingSolTuple<'a> = ();
2409        #[doc(hidden)]
2410        type UnderlyingRustTuple<'a> = ();
2411        #[cfg(test)]
2412        #[allow(dead_code, unreachable_patterns)]
2413        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2414            match _t {
2415                alloy_sol_types::private::AssertTypeEq::<
2416                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2417                >(_) => {}
2418            }
2419        }
2420        #[automatically_derived]
2421        #[doc(hidden)]
2422        impl ::core::convert::From<InvalidBlockNumber> for UnderlyingRustTuple<'_> {
2423            fn from(value: InvalidBlockNumber) -> Self {
2424                ()
2425            }
2426        }
2427        #[automatically_derived]
2428        #[doc(hidden)]
2429        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBlockNumber {
2430            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2431                Self
2432            }
2433        }
2434        #[automatically_derived]
2435        impl alloy_sol_types::SolError for InvalidBlockNumber {
2436            type Parameters<'a> = UnderlyingSolTuple<'a>;
2437            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2438            const SIGNATURE: &'static str = "InvalidBlockNumber()";
2439            const SELECTOR: [u8; 4] = [78u8, 71u8, 132u8, 108u8];
2440            #[inline]
2441            fn new<'a>(
2442                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2443            ) -> Self {
2444                tuple.into()
2445            }
2446            #[inline]
2447            fn tokenize(&self) -> Self::Token<'_> {
2448                ()
2449            }
2450            #[inline]
2451            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2452                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2453                    data,
2454                )
2455                .map(Self::new)
2456            }
2457        }
2458    };
2459    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2460    /**Custom error with signature `LookAheadPeriodTooLong()` and selector `0x2f5106e4`.
2461    ```solidity
2462    error LookAheadPeriodTooLong();
2463    ```*/
2464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2465    #[derive(Clone)]
2466    pub struct LookAheadPeriodTooLong;
2467    #[allow(
2468        non_camel_case_types,
2469        non_snake_case,
2470        clippy::pub_underscore_fields,
2471        clippy::style
2472    )]
2473    const _: () = {
2474        use alloy::sol_types as alloy_sol_types;
2475        #[doc(hidden)]
2476        type UnderlyingSolTuple<'a> = ();
2477        #[doc(hidden)]
2478        type UnderlyingRustTuple<'a> = ();
2479        #[cfg(test)]
2480        #[allow(dead_code, unreachable_patterns)]
2481        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2482            match _t {
2483                alloy_sol_types::private::AssertTypeEq::<
2484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2485                >(_) => {}
2486            }
2487        }
2488        #[automatically_derived]
2489        #[doc(hidden)]
2490        impl ::core::convert::From<LookAheadPeriodTooLong> for UnderlyingRustTuple<'_> {
2491            fn from(value: LookAheadPeriodTooLong) -> Self {
2492                ()
2493            }
2494        }
2495        #[automatically_derived]
2496        #[doc(hidden)]
2497        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LookAheadPeriodTooLong {
2498            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2499                Self
2500            }
2501        }
2502        #[automatically_derived]
2503        impl alloy_sol_types::SolError for LookAheadPeriodTooLong {
2504            type Parameters<'a> = UnderlyingSolTuple<'a>;
2505            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2506            const SIGNATURE: &'static str = "LookAheadPeriodTooLong()";
2507            const SELECTOR: [u8; 4] = [47u8, 81u8, 6u8, 228u8];
2508            #[inline]
2509            fn new<'a>(
2510                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2511            ) -> Self {
2512                tuple.into()
2513            }
2514            #[inline]
2515            fn tokenize(&self) -> Self::Token<'_> {
2516                ()
2517            }
2518            #[inline]
2519            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2520                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2521                    data,
2522                )
2523                .map(Self::new)
2524            }
2525        }
2526    };
2527    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2528    /**Custom error with signature `OnlySlashingRegistryCoordinator()` and selector `0xb006c814`.
2529    ```solidity
2530    error OnlySlashingRegistryCoordinator();
2531    ```*/
2532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2533    #[derive(Clone)]
2534    pub struct OnlySlashingRegistryCoordinator;
2535    #[allow(
2536        non_camel_case_types,
2537        non_snake_case,
2538        clippy::pub_underscore_fields,
2539        clippy::style
2540    )]
2541    const _: () = {
2542        use alloy::sol_types as alloy_sol_types;
2543        #[doc(hidden)]
2544        type UnderlyingSolTuple<'a> = ();
2545        #[doc(hidden)]
2546        type UnderlyingRustTuple<'a> = ();
2547        #[cfg(test)]
2548        #[allow(dead_code, unreachable_patterns)]
2549        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2550            match _t {
2551                alloy_sol_types::private::AssertTypeEq::<
2552                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2553                >(_) => {}
2554            }
2555        }
2556        #[automatically_derived]
2557        #[doc(hidden)]
2558        impl ::core::convert::From<OnlySlashingRegistryCoordinator> for UnderlyingRustTuple<'_> {
2559            fn from(value: OnlySlashingRegistryCoordinator) -> Self {
2560                ()
2561            }
2562        }
2563        #[automatically_derived]
2564        #[doc(hidden)]
2565        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlySlashingRegistryCoordinator {
2566            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2567                Self
2568            }
2569        }
2570        #[automatically_derived]
2571        impl alloy_sol_types::SolError for OnlySlashingRegistryCoordinator {
2572            type Parameters<'a> = UnderlyingSolTuple<'a>;
2573            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2574            const SIGNATURE: &'static str = "OnlySlashingRegistryCoordinator()";
2575            const SELECTOR: [u8; 4] = [176u8, 6u8, 200u8, 20u8];
2576            #[inline]
2577            fn new<'a>(
2578                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2579            ) -> Self {
2580                tuple.into()
2581            }
2582            #[inline]
2583            fn tokenize(&self) -> Self::Token<'_> {
2584                ()
2585            }
2586            #[inline]
2587            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2588                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2589                    data,
2590                )
2591                .map(Self::new)
2592            }
2593        }
2594    };
2595    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2596    /**Custom error with signature `OnlySlashingRegistryCoordinatorOwner()` and selector `0xce98c24b`.
2597    ```solidity
2598    error OnlySlashingRegistryCoordinatorOwner();
2599    ```*/
2600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2601    #[derive(Clone)]
2602    pub struct OnlySlashingRegistryCoordinatorOwner;
2603    #[allow(
2604        non_camel_case_types,
2605        non_snake_case,
2606        clippy::pub_underscore_fields,
2607        clippy::style
2608    )]
2609    const _: () = {
2610        use alloy::sol_types as alloy_sol_types;
2611        #[doc(hidden)]
2612        type UnderlyingSolTuple<'a> = ();
2613        #[doc(hidden)]
2614        type UnderlyingRustTuple<'a> = ();
2615        #[cfg(test)]
2616        #[allow(dead_code, unreachable_patterns)]
2617        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2618            match _t {
2619                alloy_sol_types::private::AssertTypeEq::<
2620                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2621                >(_) => {}
2622            }
2623        }
2624        #[automatically_derived]
2625        #[doc(hidden)]
2626        impl ::core::convert::From<OnlySlashingRegistryCoordinatorOwner> for UnderlyingRustTuple<'_> {
2627            fn from(value: OnlySlashingRegistryCoordinatorOwner) -> Self {
2628                ()
2629            }
2630        }
2631        #[automatically_derived]
2632        #[doc(hidden)]
2633        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlySlashingRegistryCoordinatorOwner {
2634            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2635                Self
2636            }
2637        }
2638        #[automatically_derived]
2639        impl alloy_sol_types::SolError for OnlySlashingRegistryCoordinatorOwner {
2640            type Parameters<'a> = UnderlyingSolTuple<'a>;
2641            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2642            const SIGNATURE: &'static str = "OnlySlashingRegistryCoordinatorOwner()";
2643            const SELECTOR: [u8; 4] = [206u8, 152u8, 194u8, 75u8];
2644            #[inline]
2645            fn new<'a>(
2646                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2647            ) -> Self {
2648                tuple.into()
2649            }
2650            #[inline]
2651            fn tokenize(&self) -> Self::Token<'_> {
2652                ()
2653            }
2654            #[inline]
2655            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2656                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2657                    data,
2658                )
2659                .map(Self::new)
2660            }
2661        }
2662    };
2663    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2664    /**Custom error with signature `QuorumAlreadyExists()` and selector `0x4336945c`.
2665    ```solidity
2666    error QuorumAlreadyExists();
2667    ```*/
2668    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2669    #[derive(Clone)]
2670    pub struct QuorumAlreadyExists;
2671    #[allow(
2672        non_camel_case_types,
2673        non_snake_case,
2674        clippy::pub_underscore_fields,
2675        clippy::style
2676    )]
2677    const _: () = {
2678        use alloy::sol_types as alloy_sol_types;
2679        #[doc(hidden)]
2680        type UnderlyingSolTuple<'a> = ();
2681        #[doc(hidden)]
2682        type UnderlyingRustTuple<'a> = ();
2683        #[cfg(test)]
2684        #[allow(dead_code, unreachable_patterns)]
2685        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2686            match _t {
2687                alloy_sol_types::private::AssertTypeEq::<
2688                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2689                >(_) => {}
2690            }
2691        }
2692        #[automatically_derived]
2693        #[doc(hidden)]
2694        impl ::core::convert::From<QuorumAlreadyExists> for UnderlyingRustTuple<'_> {
2695            fn from(value: QuorumAlreadyExists) -> Self {
2696                ()
2697            }
2698        }
2699        #[automatically_derived]
2700        #[doc(hidden)]
2701        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumAlreadyExists {
2702            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2703                Self
2704            }
2705        }
2706        #[automatically_derived]
2707        impl alloy_sol_types::SolError for QuorumAlreadyExists {
2708            type Parameters<'a> = UnderlyingSolTuple<'a>;
2709            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2710            const SIGNATURE: &'static str = "QuorumAlreadyExists()";
2711            const SELECTOR: [u8; 4] = [67u8, 54u8, 148u8, 92u8];
2712            #[inline]
2713            fn new<'a>(
2714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2715            ) -> Self {
2716                tuple.into()
2717            }
2718            #[inline]
2719            fn tokenize(&self) -> Self::Token<'_> {
2720                ()
2721            }
2722            #[inline]
2723            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2724                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2725                    data,
2726                )
2727                .map(Self::new)
2728            }
2729        }
2730    };
2731    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2732    /**Custom error with signature `QuorumDoesNotExist()` and selector `0xe6219fea`.
2733    ```solidity
2734    error QuorumDoesNotExist();
2735    ```*/
2736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2737    #[derive(Clone)]
2738    pub struct QuorumDoesNotExist;
2739    #[allow(
2740        non_camel_case_types,
2741        non_snake_case,
2742        clippy::pub_underscore_fields,
2743        clippy::style
2744    )]
2745    const _: () = {
2746        use alloy::sol_types as alloy_sol_types;
2747        #[doc(hidden)]
2748        type UnderlyingSolTuple<'a> = ();
2749        #[doc(hidden)]
2750        type UnderlyingRustTuple<'a> = ();
2751        #[cfg(test)]
2752        #[allow(dead_code, unreachable_patterns)]
2753        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2754            match _t {
2755                alloy_sol_types::private::AssertTypeEq::<
2756                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2757                >(_) => {}
2758            }
2759        }
2760        #[automatically_derived]
2761        #[doc(hidden)]
2762        impl ::core::convert::From<QuorumDoesNotExist> for UnderlyingRustTuple<'_> {
2763            fn from(value: QuorumDoesNotExist) -> Self {
2764                ()
2765            }
2766        }
2767        #[automatically_derived]
2768        #[doc(hidden)]
2769        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumDoesNotExist {
2770            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2771                Self
2772            }
2773        }
2774        #[automatically_derived]
2775        impl alloy_sol_types::SolError for QuorumDoesNotExist {
2776            type Parameters<'a> = UnderlyingSolTuple<'a>;
2777            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2778            const SIGNATURE: &'static str = "QuorumDoesNotExist()";
2779            const SELECTOR: [u8; 4] = [230u8, 33u8, 159u8, 234u8];
2780            #[inline]
2781            fn new<'a>(
2782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2783            ) -> Self {
2784                tuple.into()
2785            }
2786            #[inline]
2787            fn tokenize(&self) -> Self::Token<'_> {
2788                ()
2789            }
2790            #[inline]
2791            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2792                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2793                    data,
2794                )
2795                .map(Self::new)
2796            }
2797        }
2798    };
2799    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2800    /**Custom error with signature `QuorumNotSlashable()` and selector `0xa3be2583`.
2801    ```solidity
2802    error QuorumNotSlashable();
2803    ```*/
2804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2805    #[derive(Clone)]
2806    pub struct QuorumNotSlashable;
2807    #[allow(
2808        non_camel_case_types,
2809        non_snake_case,
2810        clippy::pub_underscore_fields,
2811        clippy::style
2812    )]
2813    const _: () = {
2814        use alloy::sol_types as alloy_sol_types;
2815        #[doc(hidden)]
2816        type UnderlyingSolTuple<'a> = ();
2817        #[doc(hidden)]
2818        type UnderlyingRustTuple<'a> = ();
2819        #[cfg(test)]
2820        #[allow(dead_code, unreachable_patterns)]
2821        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2822            match _t {
2823                alloy_sol_types::private::AssertTypeEq::<
2824                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2825                >(_) => {}
2826            }
2827        }
2828        #[automatically_derived]
2829        #[doc(hidden)]
2830        impl ::core::convert::From<QuorumNotSlashable> for UnderlyingRustTuple<'_> {
2831            fn from(value: QuorumNotSlashable) -> Self {
2832                ()
2833            }
2834        }
2835        #[automatically_derived]
2836        #[doc(hidden)]
2837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumNotSlashable {
2838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2839                Self
2840            }
2841        }
2842        #[automatically_derived]
2843        impl alloy_sol_types::SolError for QuorumNotSlashable {
2844            type Parameters<'a> = UnderlyingSolTuple<'a>;
2845            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2846            const SIGNATURE: &'static str = "QuorumNotSlashable()";
2847            const SELECTOR: [u8; 4] = [163u8, 190u8, 37u8, 131u8];
2848            #[inline]
2849            fn new<'a>(
2850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2851            ) -> Self {
2852                tuple.into()
2853            }
2854            #[inline]
2855            fn tokenize(&self) -> Self::Token<'_> {
2856                ()
2857            }
2858            #[inline]
2859            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2860                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2861                    data,
2862                )
2863                .map(Self::new)
2864            }
2865        }
2866    };
2867    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2868    /**Event with signature `LookAheadPeriodChanged(uint32,uint32)` and selector `0x28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7`.
2869    ```solidity
2870    event LookAheadPeriodChanged(uint32 oldLookAheadBlocks, uint32 newLookAheadBlocks);
2871    ```*/
2872    #[allow(
2873        non_camel_case_types,
2874        non_snake_case,
2875        clippy::pub_underscore_fields,
2876        clippy::style
2877    )]
2878    #[derive(Clone)]
2879    pub struct LookAheadPeriodChanged {
2880        #[allow(missing_docs)]
2881        pub oldLookAheadBlocks: u32,
2882        #[allow(missing_docs)]
2883        pub newLookAheadBlocks: u32,
2884    }
2885    #[allow(
2886        non_camel_case_types,
2887        non_snake_case,
2888        clippy::pub_underscore_fields,
2889        clippy::style
2890    )]
2891    const _: () = {
2892        use alloy::sol_types as alloy_sol_types;
2893        #[automatically_derived]
2894        impl alloy_sol_types::SolEvent for LookAheadPeriodChanged {
2895            type DataTuple<'a> = (
2896                alloy::sol_types::sol_data::Uint<32>,
2897                alloy::sol_types::sol_data::Uint<32>,
2898            );
2899            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2900            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2901            const SIGNATURE: &'static str = "LookAheadPeriodChanged(uint32,uint32)";
2902            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2903                alloy_sol_types::private::B256::new([
2904                    40u8, 215u8, 53u8, 139u8, 121u8, 240u8, 45u8, 33u8, 184u8, 183u8, 225u8, 122u8,
2905                    239u8, 196u8, 24u8, 90u8, 100u8, 48u8, 138u8, 163u8, 116u8, 6u8, 250u8, 91u8,
2906                    239u8, 192u8, 91u8, 145u8, 147u8, 44u8, 57u8, 199u8,
2907                ]);
2908            const ANONYMOUS: bool = false;
2909            #[allow(unused_variables)]
2910            #[inline]
2911            fn new(
2912                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2913                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2914            ) -> Self {
2915                Self {
2916                    oldLookAheadBlocks: data.0,
2917                    newLookAheadBlocks: data.1,
2918                }
2919            }
2920            #[inline]
2921            fn check_signature(
2922                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2923            ) -> alloy_sol_types::Result<()> {
2924                if topics.0 != Self::SIGNATURE_HASH {
2925                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2926                        Self::SIGNATURE,
2927                        topics.0,
2928                        Self::SIGNATURE_HASH,
2929                    ));
2930                }
2931                Ok(())
2932            }
2933            #[inline]
2934            fn tokenize_body(&self) -> Self::DataToken<'_> {
2935                (
2936                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
2937                        &self.oldLookAheadBlocks,
2938                    ),
2939                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
2940                        &self.newLookAheadBlocks,
2941                    ),
2942                )
2943            }
2944            #[inline]
2945            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2946                (Self::SIGNATURE_HASH.into(),)
2947            }
2948            #[inline]
2949            fn encode_topics_raw(
2950                &self,
2951                out: &mut [alloy_sol_types::abi::token::WordToken],
2952            ) -> alloy_sol_types::Result<()> {
2953                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2954                    return Err(alloy_sol_types::Error::Overrun);
2955                }
2956                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2957                Ok(())
2958            }
2959        }
2960        #[automatically_derived]
2961        impl alloy_sol_types::private::IntoLogData for LookAheadPeriodChanged {
2962            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2963                From::from(self)
2964            }
2965            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2966                From::from(&self)
2967            }
2968        }
2969        #[automatically_derived]
2970        impl From<&LookAheadPeriodChanged> for alloy_sol_types::private::LogData {
2971            #[inline]
2972            fn from(this: &LookAheadPeriodChanged) -> alloy_sol_types::private::LogData {
2973                alloy_sol_types::SolEvent::encode_log_data(this)
2974            }
2975        }
2976    };
2977    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2978    /**Event with signature `MinimumStakeForQuorumUpdated(uint8,uint96)` and selector `0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf`.
2979    ```solidity
2980    event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake);
2981    ```*/
2982    #[allow(
2983        non_camel_case_types,
2984        non_snake_case,
2985        clippy::pub_underscore_fields,
2986        clippy::style
2987    )]
2988    #[derive(Clone)]
2989    pub struct MinimumStakeForQuorumUpdated {
2990        #[allow(missing_docs)]
2991        pub quorumNumber: u8,
2992        #[allow(missing_docs)]
2993        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
2994    }
2995    #[allow(
2996        non_camel_case_types,
2997        non_snake_case,
2998        clippy::pub_underscore_fields,
2999        clippy::style
3000    )]
3001    const _: () = {
3002        use alloy::sol_types as alloy_sol_types;
3003        #[automatically_derived]
3004        impl alloy_sol_types::SolEvent for MinimumStakeForQuorumUpdated {
3005            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
3006            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3007            type TopicList = (
3008                alloy_sol_types::sol_data::FixedBytes<32>,
3009                alloy::sol_types::sol_data::Uint<8>,
3010            );
3011            const SIGNATURE: &'static str = "MinimumStakeForQuorumUpdated(uint8,uint96)";
3012            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3013                alloy_sol_types::private::B256::new([
3014                    38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8,
3015                    64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8,
3016                    135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8,
3017                ]);
3018            const ANONYMOUS: bool = false;
3019            #[allow(unused_variables)]
3020            #[inline]
3021            fn new(
3022                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3023                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3024            ) -> Self {
3025                Self {
3026                    quorumNumber: topics.1,
3027                    minimumStake: data.0,
3028                }
3029            }
3030            #[inline]
3031            fn check_signature(
3032                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3033            ) -> alloy_sol_types::Result<()> {
3034                if topics.0 != Self::SIGNATURE_HASH {
3035                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3036                        Self::SIGNATURE,
3037                        topics.0,
3038                        Self::SIGNATURE_HASH,
3039                    ));
3040                }
3041                Ok(())
3042            }
3043            #[inline]
3044            fn tokenize_body(&self) -> Self::DataToken<'_> {
3045                (
3046                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
3047                        &self.minimumStake,
3048                    ),
3049                )
3050            }
3051            #[inline]
3052            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3053                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3054            }
3055            #[inline]
3056            fn encode_topics_raw(
3057                &self,
3058                out: &mut [alloy_sol_types::abi::token::WordToken],
3059            ) -> alloy_sol_types::Result<()> {
3060                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3061                    return Err(alloy_sol_types::Error::Overrun);
3062                }
3063                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3064                out[1usize] = <alloy::sol_types::sol_data::Uint<
3065                    8,
3066                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3067                Ok(())
3068            }
3069        }
3070        #[automatically_derived]
3071        impl alloy_sol_types::private::IntoLogData for MinimumStakeForQuorumUpdated {
3072            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3073                From::from(self)
3074            }
3075            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3076                From::from(&self)
3077            }
3078        }
3079        #[automatically_derived]
3080        impl From<&MinimumStakeForQuorumUpdated> for alloy_sol_types::private::LogData {
3081            #[inline]
3082            fn from(this: &MinimumStakeForQuorumUpdated) -> alloy_sol_types::private::LogData {
3083                alloy_sol_types::SolEvent::encode_log_data(this)
3084            }
3085        }
3086    };
3087    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3088    /**Event with signature `OperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d`.
3089    ```solidity
3090    event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake);
3091    ```*/
3092    #[allow(
3093        non_camel_case_types,
3094        non_snake_case,
3095        clippy::pub_underscore_fields,
3096        clippy::style
3097    )]
3098    #[derive(Clone)]
3099    pub struct OperatorStakeUpdate {
3100        #[allow(missing_docs)]
3101        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
3102        #[allow(missing_docs)]
3103        pub quorumNumber: u8,
3104        #[allow(missing_docs)]
3105        pub stake: alloy::sol_types::private::primitives::aliases::U96,
3106    }
3107    #[allow(
3108        non_camel_case_types,
3109        non_snake_case,
3110        clippy::pub_underscore_fields,
3111        clippy::style
3112    )]
3113    const _: () = {
3114        use alloy::sol_types as alloy_sol_types;
3115        #[automatically_derived]
3116        impl alloy_sol_types::SolEvent for OperatorStakeUpdate {
3117            type DataTuple<'a> = (
3118                alloy::sol_types::sol_data::Uint<8>,
3119                alloy::sol_types::sol_data::Uint<96>,
3120            );
3121            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3122            type TopicList = (
3123                alloy_sol_types::sol_data::FixedBytes<32>,
3124                alloy::sol_types::sol_data::FixedBytes<32>,
3125            );
3126            const SIGNATURE: &'static str = "OperatorStakeUpdate(bytes32,uint8,uint96)";
3127            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3128                alloy_sol_types::private::B256::new([
3129                    47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8,
3130                    119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8,
3131                    143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8,
3132                ]);
3133            const ANONYMOUS: bool = false;
3134            #[allow(unused_variables)]
3135            #[inline]
3136            fn new(
3137                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3138                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3139            ) -> Self {
3140                Self {
3141                    operatorId: topics.1,
3142                    quorumNumber: data.0,
3143                    stake: data.1,
3144                }
3145            }
3146            #[inline]
3147            fn check_signature(
3148                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3149            ) -> alloy_sol_types::Result<()> {
3150                if topics.0 != Self::SIGNATURE_HASH {
3151                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3152                        Self::SIGNATURE,
3153                        topics.0,
3154                        Self::SIGNATURE_HASH,
3155                    ));
3156                }
3157                Ok(())
3158            }
3159            #[inline]
3160            fn tokenize_body(&self) -> Self::DataToken<'_> {
3161                (
3162                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
3163                        &self.quorumNumber,
3164                    ),
3165                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
3166                        &self.stake,
3167                    ),
3168                )
3169            }
3170            #[inline]
3171            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3172                (Self::SIGNATURE_HASH.into(), self.operatorId.clone())
3173            }
3174            #[inline]
3175            fn encode_topics_raw(
3176                &self,
3177                out: &mut [alloy_sol_types::abi::token::WordToken],
3178            ) -> alloy_sol_types::Result<()> {
3179                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3180                    return Err(alloy_sol_types::Error::Overrun);
3181                }
3182                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3183                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3184                    32,
3185                > as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId);
3186                Ok(())
3187            }
3188        }
3189        #[automatically_derived]
3190        impl alloy_sol_types::private::IntoLogData for OperatorStakeUpdate {
3191            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3192                From::from(self)
3193            }
3194            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3195                From::from(&self)
3196            }
3197        }
3198        #[automatically_derived]
3199        impl From<&OperatorStakeUpdate> for alloy_sol_types::private::LogData {
3200            #[inline]
3201            fn from(this: &OperatorStakeUpdate) -> alloy_sol_types::private::LogData {
3202                alloy_sol_types::SolEvent::encode_log_data(this)
3203            }
3204        }
3205    };
3206    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3207    /**Event with signature `QuorumCreated(uint8)` and selector `0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4`.
3208    ```solidity
3209    event QuorumCreated(uint8 indexed quorumNumber);
3210    ```*/
3211    #[allow(
3212        non_camel_case_types,
3213        non_snake_case,
3214        clippy::pub_underscore_fields,
3215        clippy::style
3216    )]
3217    #[derive(Clone)]
3218    pub struct QuorumCreated {
3219        #[allow(missing_docs)]
3220        pub quorumNumber: u8,
3221    }
3222    #[allow(
3223        non_camel_case_types,
3224        non_snake_case,
3225        clippy::pub_underscore_fields,
3226        clippy::style
3227    )]
3228    const _: () = {
3229        use alloy::sol_types as alloy_sol_types;
3230        #[automatically_derived]
3231        impl alloy_sol_types::SolEvent for QuorumCreated {
3232            type DataTuple<'a> = ();
3233            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3234            type TopicList = (
3235                alloy_sol_types::sol_data::FixedBytes<32>,
3236                alloy::sol_types::sol_data::Uint<8>,
3237            );
3238            const SIGNATURE: &'static str = "QuorumCreated(uint8)";
3239            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3240                alloy_sol_types::private::B256::new([
3241                    131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8,
3242                    190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8,
3243                    42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8,
3244                ]);
3245            const ANONYMOUS: bool = false;
3246            #[allow(unused_variables)]
3247            #[inline]
3248            fn new(
3249                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3250                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3251            ) -> Self {
3252                Self {
3253                    quorumNumber: topics.1,
3254                }
3255            }
3256            #[inline]
3257            fn check_signature(
3258                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3259            ) -> alloy_sol_types::Result<()> {
3260                if topics.0 != Self::SIGNATURE_HASH {
3261                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3262                        Self::SIGNATURE,
3263                        topics.0,
3264                        Self::SIGNATURE_HASH,
3265                    ));
3266                }
3267                Ok(())
3268            }
3269            #[inline]
3270            fn tokenize_body(&self) -> Self::DataToken<'_> {
3271                ()
3272            }
3273            #[inline]
3274            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3275                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3276            }
3277            #[inline]
3278            fn encode_topics_raw(
3279                &self,
3280                out: &mut [alloy_sol_types::abi::token::WordToken],
3281            ) -> alloy_sol_types::Result<()> {
3282                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3283                    return Err(alloy_sol_types::Error::Overrun);
3284                }
3285                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3286                out[1usize] = <alloy::sol_types::sol_data::Uint<
3287                    8,
3288                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3289                Ok(())
3290            }
3291        }
3292        #[automatically_derived]
3293        impl alloy_sol_types::private::IntoLogData for QuorumCreated {
3294            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3295                From::from(self)
3296            }
3297            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3298                From::from(&self)
3299            }
3300        }
3301        #[automatically_derived]
3302        impl From<&QuorumCreated> for alloy_sol_types::private::LogData {
3303            #[inline]
3304            fn from(this: &QuorumCreated) -> alloy_sol_types::private::LogData {
3305                alloy_sol_types::SolEvent::encode_log_data(this)
3306            }
3307        }
3308    };
3309    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3310    /**Event with signature `StakeTypeSet(uint8)` and selector `0x7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d`.
3311    ```solidity
3312    event StakeTypeSet(IStakeRegistryTypes.StakeType newStakeType);
3313    ```*/
3314    #[allow(
3315        non_camel_case_types,
3316        non_snake_case,
3317        clippy::pub_underscore_fields,
3318        clippy::style
3319    )]
3320    #[derive(Clone)]
3321    pub struct StakeTypeSet {
3322        #[allow(missing_docs)]
3323        pub newStakeType: <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
3324    }
3325    #[allow(
3326        non_camel_case_types,
3327        non_snake_case,
3328        clippy::pub_underscore_fields,
3329        clippy::style
3330    )]
3331    const _: () = {
3332        use alloy::sol_types as alloy_sol_types;
3333        #[automatically_derived]
3334        impl alloy_sol_types::SolEvent for StakeTypeSet {
3335            type DataTuple<'a> = (IStakeRegistryTypes::StakeType,);
3336            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3337            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3338            const SIGNATURE: &'static str = "StakeTypeSet(uint8)";
3339            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3340                alloy_sol_types::private::B256::new([
3341                    124u8, 17u8, 46u8, 134u8, 60u8, 207u8, 0u8, 120u8, 98u8, 226u8, 201u8, 226u8,
3342                    88u8, 25u8, 201u8, 51u8, 254u8, 219u8, 201u8, 53u8, 10u8, 100u8, 67u8, 66u8,
3343                    59u8, 74u8, 133u8, 153u8, 194u8, 232u8, 165u8, 45u8,
3344                ]);
3345            const ANONYMOUS: bool = false;
3346            #[allow(unused_variables)]
3347            #[inline]
3348            fn new(
3349                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3350                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3351            ) -> Self {
3352                Self {
3353                    newStakeType: data.0,
3354                }
3355            }
3356            #[inline]
3357            fn check_signature(
3358                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3359            ) -> alloy_sol_types::Result<()> {
3360                if topics.0 != Self::SIGNATURE_HASH {
3361                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3362                        Self::SIGNATURE,
3363                        topics.0,
3364                        Self::SIGNATURE_HASH,
3365                    ));
3366                }
3367                Ok(())
3368            }
3369            #[inline]
3370            fn tokenize_body(&self) -> Self::DataToken<'_> {
3371                (
3372                    <IStakeRegistryTypes::StakeType as alloy_sol_types::SolType>::tokenize(
3373                        &self.newStakeType,
3374                    ),
3375                )
3376            }
3377            #[inline]
3378            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3379                (Self::SIGNATURE_HASH.into(),)
3380            }
3381            #[inline]
3382            fn encode_topics_raw(
3383                &self,
3384                out: &mut [alloy_sol_types::abi::token::WordToken],
3385            ) -> alloy_sol_types::Result<()> {
3386                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3387                    return Err(alloy_sol_types::Error::Overrun);
3388                }
3389                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3390                Ok(())
3391            }
3392        }
3393        #[automatically_derived]
3394        impl alloy_sol_types::private::IntoLogData for StakeTypeSet {
3395            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3396                From::from(self)
3397            }
3398            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3399                From::from(&self)
3400            }
3401        }
3402        #[automatically_derived]
3403        impl From<&StakeTypeSet> for alloy_sol_types::private::LogData {
3404            #[inline]
3405            fn from(this: &StakeTypeSet) -> alloy_sol_types::private::LogData {
3406                alloy_sol_types::SolEvent::encode_log_data(this)
3407            }
3408        }
3409    };
3410    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3411    /**Event with signature `StrategyAddedToQuorum(uint8,address)` and selector `0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404`.
3412    ```solidity
3413    event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy);
3414    ```*/
3415    #[allow(
3416        non_camel_case_types,
3417        non_snake_case,
3418        clippy::pub_underscore_fields,
3419        clippy::style
3420    )]
3421    #[derive(Clone)]
3422    pub struct StrategyAddedToQuorum {
3423        #[allow(missing_docs)]
3424        pub quorumNumber: u8,
3425        #[allow(missing_docs)]
3426        pub strategy: alloy::sol_types::private::Address,
3427    }
3428    #[allow(
3429        non_camel_case_types,
3430        non_snake_case,
3431        clippy::pub_underscore_fields,
3432        clippy::style
3433    )]
3434    const _: () = {
3435        use alloy::sol_types as alloy_sol_types;
3436        #[automatically_derived]
3437        impl alloy_sol_types::SolEvent for StrategyAddedToQuorum {
3438            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3439            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3440            type TopicList = (
3441                alloy_sol_types::sol_data::FixedBytes<32>,
3442                alloy::sol_types::sol_data::Uint<8>,
3443            );
3444            const SIGNATURE: &'static str = "StrategyAddedToQuorum(uint8,address)";
3445            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3446                alloy_sol_types::private::B256::new([
3447                    16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8,
3448                    240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8,
3449                    48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8,
3450                ]);
3451            const ANONYMOUS: bool = false;
3452            #[allow(unused_variables)]
3453            #[inline]
3454            fn new(
3455                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3456                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3457            ) -> Self {
3458                Self {
3459                    quorumNumber: topics.1,
3460                    strategy: data.0,
3461                }
3462            }
3463            #[inline]
3464            fn check_signature(
3465                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3466            ) -> alloy_sol_types::Result<()> {
3467                if topics.0 != Self::SIGNATURE_HASH {
3468                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3469                        Self::SIGNATURE,
3470                        topics.0,
3471                        Self::SIGNATURE_HASH,
3472                    ));
3473                }
3474                Ok(())
3475            }
3476            #[inline]
3477            fn tokenize_body(&self) -> Self::DataToken<'_> {
3478                (
3479                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3480                        &self.strategy,
3481                    ),
3482                )
3483            }
3484            #[inline]
3485            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3486                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3487            }
3488            #[inline]
3489            fn encode_topics_raw(
3490                &self,
3491                out: &mut [alloy_sol_types::abi::token::WordToken],
3492            ) -> alloy_sol_types::Result<()> {
3493                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3494                    return Err(alloy_sol_types::Error::Overrun);
3495                }
3496                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3497                out[1usize] = <alloy::sol_types::sol_data::Uint<
3498                    8,
3499                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3500                Ok(())
3501            }
3502        }
3503        #[automatically_derived]
3504        impl alloy_sol_types::private::IntoLogData for StrategyAddedToQuorum {
3505            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3506                From::from(self)
3507            }
3508            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3509                From::from(&self)
3510            }
3511        }
3512        #[automatically_derived]
3513        impl From<&StrategyAddedToQuorum> for alloy_sol_types::private::LogData {
3514            #[inline]
3515            fn from(this: &StrategyAddedToQuorum) -> alloy_sol_types::private::LogData {
3516                alloy_sol_types::SolEvent::encode_log_data(this)
3517            }
3518        }
3519    };
3520    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3521    /**Event with signature `StrategyMultiplierUpdated(uint8,address,uint256)` and selector `0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75`.
3522    ```solidity
3523    event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier);
3524    ```*/
3525    #[allow(
3526        non_camel_case_types,
3527        non_snake_case,
3528        clippy::pub_underscore_fields,
3529        clippy::style
3530    )]
3531    #[derive(Clone)]
3532    pub struct StrategyMultiplierUpdated {
3533        #[allow(missing_docs)]
3534        pub quorumNumber: u8,
3535        #[allow(missing_docs)]
3536        pub strategy: alloy::sol_types::private::Address,
3537        #[allow(missing_docs)]
3538        pub multiplier: alloy::sol_types::private::primitives::aliases::U256,
3539    }
3540    #[allow(
3541        non_camel_case_types,
3542        non_snake_case,
3543        clippy::pub_underscore_fields,
3544        clippy::style
3545    )]
3546    const _: () = {
3547        use alloy::sol_types as alloy_sol_types;
3548        #[automatically_derived]
3549        impl alloy_sol_types::SolEvent for StrategyMultiplierUpdated {
3550            type DataTuple<'a> = (
3551                alloy::sol_types::sol_data::Address,
3552                alloy::sol_types::sol_data::Uint<256>,
3553            );
3554            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3555            type TopicList = (
3556                alloy_sol_types::sol_data::FixedBytes<32>,
3557                alloy::sol_types::sol_data::Uint<8>,
3558            );
3559            const SIGNATURE: &'static str = "StrategyMultiplierUpdated(uint8,address,uint256)";
3560            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3561                alloy_sol_types::private::B256::new([
3562                    17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8,
3563                    170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8,
3564                    52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8,
3565                ]);
3566            const ANONYMOUS: bool = false;
3567            #[allow(unused_variables)]
3568            #[inline]
3569            fn new(
3570                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3571                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3572            ) -> Self {
3573                Self {
3574                    quorumNumber: topics.1,
3575                    strategy: data.0,
3576                    multiplier: data.1,
3577                }
3578            }
3579            #[inline]
3580            fn check_signature(
3581                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3582            ) -> alloy_sol_types::Result<()> {
3583                if topics.0 != Self::SIGNATURE_HASH {
3584                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3585                        Self::SIGNATURE,
3586                        topics.0,
3587                        Self::SIGNATURE_HASH,
3588                    ));
3589                }
3590                Ok(())
3591            }
3592            #[inline]
3593            fn tokenize_body(&self) -> Self::DataToken<'_> {
3594                (
3595                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3596                        &self.strategy,
3597                    ),
3598                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3599                        &self.multiplier,
3600                    ),
3601                )
3602            }
3603            #[inline]
3604            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3605                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3606            }
3607            #[inline]
3608            fn encode_topics_raw(
3609                &self,
3610                out: &mut [alloy_sol_types::abi::token::WordToken],
3611            ) -> alloy_sol_types::Result<()> {
3612                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3613                    return Err(alloy_sol_types::Error::Overrun);
3614                }
3615                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3616                out[1usize] = <alloy::sol_types::sol_data::Uint<
3617                    8,
3618                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3619                Ok(())
3620            }
3621        }
3622        #[automatically_derived]
3623        impl alloy_sol_types::private::IntoLogData for StrategyMultiplierUpdated {
3624            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3625                From::from(self)
3626            }
3627            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3628                From::from(&self)
3629            }
3630        }
3631        #[automatically_derived]
3632        impl From<&StrategyMultiplierUpdated> for alloy_sol_types::private::LogData {
3633            #[inline]
3634            fn from(this: &StrategyMultiplierUpdated) -> alloy_sol_types::private::LogData {
3635                alloy_sol_types::SolEvent::encode_log_data(this)
3636            }
3637        }
3638    };
3639    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3640    /**Event with signature `StrategyRemovedFromQuorum(uint8,address)` and selector `0x31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f7`.
3641    ```solidity
3642    event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy);
3643    ```*/
3644    #[allow(
3645        non_camel_case_types,
3646        non_snake_case,
3647        clippy::pub_underscore_fields,
3648        clippy::style
3649    )]
3650    #[derive(Clone)]
3651    pub struct StrategyRemovedFromQuorum {
3652        #[allow(missing_docs)]
3653        pub quorumNumber: u8,
3654        #[allow(missing_docs)]
3655        pub strategy: alloy::sol_types::private::Address,
3656    }
3657    #[allow(
3658        non_camel_case_types,
3659        non_snake_case,
3660        clippy::pub_underscore_fields,
3661        clippy::style
3662    )]
3663    const _: () = {
3664        use alloy::sol_types as alloy_sol_types;
3665        #[automatically_derived]
3666        impl alloy_sol_types::SolEvent for StrategyRemovedFromQuorum {
3667            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3668            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3669            type TopicList = (
3670                alloy_sol_types::sol_data::FixedBytes<32>,
3671                alloy::sol_types::sol_data::Uint<8>,
3672            );
3673            const SIGNATURE: &'static str = "StrategyRemovedFromQuorum(uint8,address)";
3674            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3675                alloy_sol_types::private::B256::new([
3676                    49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8,
3677                    61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8,
3678                    221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8,
3679                ]);
3680            const ANONYMOUS: bool = false;
3681            #[allow(unused_variables)]
3682            #[inline]
3683            fn new(
3684                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3685                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3686            ) -> Self {
3687                Self {
3688                    quorumNumber: topics.1,
3689                    strategy: data.0,
3690                }
3691            }
3692            #[inline]
3693            fn check_signature(
3694                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3695            ) -> alloy_sol_types::Result<()> {
3696                if topics.0 != Self::SIGNATURE_HASH {
3697                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3698                        Self::SIGNATURE,
3699                        topics.0,
3700                        Self::SIGNATURE_HASH,
3701                    ));
3702                }
3703                Ok(())
3704            }
3705            #[inline]
3706            fn tokenize_body(&self) -> Self::DataToken<'_> {
3707                (
3708                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3709                        &self.strategy,
3710                    ),
3711                )
3712            }
3713            #[inline]
3714            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3715                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3716            }
3717            #[inline]
3718            fn encode_topics_raw(
3719                &self,
3720                out: &mut [alloy_sol_types::abi::token::WordToken],
3721            ) -> alloy_sol_types::Result<()> {
3722                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3723                    return Err(alloy_sol_types::Error::Overrun);
3724                }
3725                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3726                out[1usize] = <alloy::sol_types::sol_data::Uint<
3727                    8,
3728                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3729                Ok(())
3730            }
3731        }
3732        #[automatically_derived]
3733        impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromQuorum {
3734            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3735                From::from(self)
3736            }
3737            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3738                From::from(&self)
3739            }
3740        }
3741        #[automatically_derived]
3742        impl From<&StrategyRemovedFromQuorum> for alloy_sol_types::private::LogData {
3743            #[inline]
3744            fn from(this: &StrategyRemovedFromQuorum) -> alloy_sol_types::private::LogData {
3745                alloy_sol_types::SolEvent::encode_log_data(this)
3746            }
3747        }
3748    };
3749    /**Constructor`.
3750    ```solidity
3751    constructor(address _slashingRegistryCoordinator, address _delegationManager, address _avsDirectory, address _allocationManager);
3752    ```*/
3753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3754    #[derive(Clone)]
3755    pub struct constructorCall {
3756        #[allow(missing_docs)]
3757        pub _slashingRegistryCoordinator: alloy::sol_types::private::Address,
3758        #[allow(missing_docs)]
3759        pub _delegationManager: alloy::sol_types::private::Address,
3760        #[allow(missing_docs)]
3761        pub _avsDirectory: alloy::sol_types::private::Address,
3762        #[allow(missing_docs)]
3763        pub _allocationManager: alloy::sol_types::private::Address,
3764    }
3765    const _: () = {
3766        use alloy::sol_types as alloy_sol_types;
3767        {
3768            #[doc(hidden)]
3769            type UnderlyingSolTuple<'a> = (
3770                alloy::sol_types::sol_data::Address,
3771                alloy::sol_types::sol_data::Address,
3772                alloy::sol_types::sol_data::Address,
3773                alloy::sol_types::sol_data::Address,
3774            );
3775            #[doc(hidden)]
3776            type UnderlyingRustTuple<'a> = (
3777                alloy::sol_types::private::Address,
3778                alloy::sol_types::private::Address,
3779                alloy::sol_types::private::Address,
3780                alloy::sol_types::private::Address,
3781            );
3782            #[cfg(test)]
3783            #[allow(dead_code, unreachable_patterns)]
3784            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3785                match _t {
3786                    alloy_sol_types::private::AssertTypeEq::<
3787                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3788                    >(_) => {}
3789                }
3790            }
3791            #[automatically_derived]
3792            #[doc(hidden)]
3793            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3794                fn from(value: constructorCall) -> Self {
3795                    (
3796                        value._slashingRegistryCoordinator,
3797                        value._delegationManager,
3798                        value._avsDirectory,
3799                        value._allocationManager,
3800                    )
3801                }
3802            }
3803            #[automatically_derived]
3804            #[doc(hidden)]
3805            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3806                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3807                    Self {
3808                        _slashingRegistryCoordinator: tuple.0,
3809                        _delegationManager: tuple.1,
3810                        _avsDirectory: tuple.2,
3811                        _allocationManager: tuple.3,
3812                    }
3813                }
3814            }
3815        }
3816        #[automatically_derived]
3817        impl alloy_sol_types::SolConstructor for constructorCall {
3818            type Parameters<'a> = (
3819                alloy::sol_types::sol_data::Address,
3820                alloy::sol_types::sol_data::Address,
3821                alloy::sol_types::sol_data::Address,
3822                alloy::sol_types::sol_data::Address,
3823            );
3824            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3825            #[inline]
3826            fn new<'a>(
3827                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3828            ) -> Self {
3829                tuple.into()
3830            }
3831            #[inline]
3832            fn tokenize(&self) -> Self::Token<'_> {
3833                (
3834                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3835                        &self._slashingRegistryCoordinator,
3836                    ),
3837                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3838                        &self._delegationManager,
3839                    ),
3840                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3841                        &self._avsDirectory,
3842                    ),
3843                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3844                        &self._allocationManager,
3845                    ),
3846                )
3847            }
3848        }
3849    };
3850    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3851    /**Function with signature `MAX_WEIGHING_FUNCTION_LENGTH()` and selector `0x7c172347`.
3852    ```solidity
3853    function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8);
3854    ```*/
3855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3856    #[derive(Clone)]
3857    pub struct MAX_WEIGHING_FUNCTION_LENGTHCall;
3858    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3859    ///Container type for the return parameters of the [`MAX_WEIGHING_FUNCTION_LENGTH()`](MAX_WEIGHING_FUNCTION_LENGTHCall) function.
3860    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3861    #[derive(Clone)]
3862    pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn {
3863        #[allow(missing_docs)]
3864        pub _0: u8,
3865    }
3866    #[allow(
3867        non_camel_case_types,
3868        non_snake_case,
3869        clippy::pub_underscore_fields,
3870        clippy::style
3871    )]
3872    const _: () = {
3873        use alloy::sol_types as alloy_sol_types;
3874        {
3875            #[doc(hidden)]
3876            type UnderlyingSolTuple<'a> = ();
3877            #[doc(hidden)]
3878            type UnderlyingRustTuple<'a> = ();
3879            #[cfg(test)]
3880            #[allow(dead_code, unreachable_patterns)]
3881            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3882                match _t {
3883                    alloy_sol_types::private::AssertTypeEq::<
3884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3885                    >(_) => {}
3886                }
3887            }
3888            #[automatically_derived]
3889            #[doc(hidden)]
3890            impl ::core::convert::From<MAX_WEIGHING_FUNCTION_LENGTHCall> for UnderlyingRustTuple<'_> {
3891                fn from(value: MAX_WEIGHING_FUNCTION_LENGTHCall) -> Self {
3892                    ()
3893                }
3894            }
3895            #[automatically_derived]
3896            #[doc(hidden)]
3897            impl ::core::convert::From<UnderlyingRustTuple<'_>> for MAX_WEIGHING_FUNCTION_LENGTHCall {
3898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3899                    Self
3900                }
3901            }
3902        }
3903        {
3904            #[doc(hidden)]
3905            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
3906            #[doc(hidden)]
3907            type UnderlyingRustTuple<'a> = (u8,);
3908            #[cfg(test)]
3909            #[allow(dead_code, unreachable_patterns)]
3910            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3911                match _t {
3912                    alloy_sol_types::private::AssertTypeEq::<
3913                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3914                    >(_) => {}
3915                }
3916            }
3917            #[automatically_derived]
3918            #[doc(hidden)]
3919            impl ::core::convert::From<MAX_WEIGHING_FUNCTION_LENGTHReturn> for UnderlyingRustTuple<'_> {
3920                fn from(value: MAX_WEIGHING_FUNCTION_LENGTHReturn) -> Self {
3921                    (value._0,)
3922                }
3923            }
3924            #[automatically_derived]
3925            #[doc(hidden)]
3926            impl ::core::convert::From<UnderlyingRustTuple<'_>> for MAX_WEIGHING_FUNCTION_LENGTHReturn {
3927                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3928                    Self { _0: tuple.0 }
3929                }
3930            }
3931        }
3932        #[automatically_derived]
3933        impl alloy_sol_types::SolCall for MAX_WEIGHING_FUNCTION_LENGTHCall {
3934            type Parameters<'a> = ();
3935            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3936            type Return = u8;
3937            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
3938            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3939            const SIGNATURE: &'static str = "MAX_WEIGHING_FUNCTION_LENGTH()";
3940            const SELECTOR: [u8; 4] = [124u8, 23u8, 35u8, 71u8];
3941            #[inline]
3942            fn new<'a>(
3943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3944            ) -> Self {
3945                tuple.into()
3946            }
3947            #[inline]
3948            fn tokenize(&self) -> Self::Token<'_> {
3949                ()
3950            }
3951            #[inline]
3952            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3953                (
3954                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
3955                        ret,
3956                    ),
3957                )
3958            }
3959            #[inline]
3960            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3961                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
3962                    |r| {
3963                        let r: MAX_WEIGHING_FUNCTION_LENGTHReturn = r.into();
3964                        r._0
3965                    },
3966                )
3967            }
3968            #[inline]
3969            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3970                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
3971                    data,
3972                )
3973                .map(|r| {
3974                    let r: MAX_WEIGHING_FUNCTION_LENGTHReturn = r.into();
3975                    r._0
3976                })
3977            }
3978        }
3979    };
3980    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3981    /**Function with signature `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`.
3982    ```solidity
3983    function WEIGHTING_DIVISOR() external view returns (uint256);
3984    ```*/
3985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3986    #[derive(Clone)]
3987    pub struct WEIGHTING_DIVISORCall;
3988    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3989    ///Container type for the return parameters of the [`WEIGHTING_DIVISOR()`](WEIGHTING_DIVISORCall) function.
3990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3991    #[derive(Clone)]
3992    pub struct WEIGHTING_DIVISORReturn {
3993        #[allow(missing_docs)]
3994        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3995    }
3996    #[allow(
3997        non_camel_case_types,
3998        non_snake_case,
3999        clippy::pub_underscore_fields,
4000        clippy::style
4001    )]
4002    const _: () = {
4003        use alloy::sol_types as alloy_sol_types;
4004        {
4005            #[doc(hidden)]
4006            type UnderlyingSolTuple<'a> = ();
4007            #[doc(hidden)]
4008            type UnderlyingRustTuple<'a> = ();
4009            #[cfg(test)]
4010            #[allow(dead_code, unreachable_patterns)]
4011            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4012                match _t {
4013                    alloy_sol_types::private::AssertTypeEq::<
4014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4015                    >(_) => {}
4016                }
4017            }
4018            #[automatically_derived]
4019            #[doc(hidden)]
4020            impl ::core::convert::From<WEIGHTING_DIVISORCall> for UnderlyingRustTuple<'_> {
4021                fn from(value: WEIGHTING_DIVISORCall) -> Self {
4022                    ()
4023                }
4024            }
4025            #[automatically_derived]
4026            #[doc(hidden)]
4027            impl ::core::convert::From<UnderlyingRustTuple<'_>> for WEIGHTING_DIVISORCall {
4028                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4029                    Self
4030                }
4031            }
4032        }
4033        {
4034            #[doc(hidden)]
4035            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4036            #[doc(hidden)]
4037            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
4038            #[cfg(test)]
4039            #[allow(dead_code, unreachable_patterns)]
4040            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4041                match _t {
4042                    alloy_sol_types::private::AssertTypeEq::<
4043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4044                    >(_) => {}
4045                }
4046            }
4047            #[automatically_derived]
4048            #[doc(hidden)]
4049            impl ::core::convert::From<WEIGHTING_DIVISORReturn> for UnderlyingRustTuple<'_> {
4050                fn from(value: WEIGHTING_DIVISORReturn) -> Self {
4051                    (value._0,)
4052                }
4053            }
4054            #[automatically_derived]
4055            #[doc(hidden)]
4056            impl ::core::convert::From<UnderlyingRustTuple<'_>> for WEIGHTING_DIVISORReturn {
4057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4058                    Self { _0: tuple.0 }
4059                }
4060            }
4061        }
4062        #[automatically_derived]
4063        impl alloy_sol_types::SolCall for WEIGHTING_DIVISORCall {
4064            type Parameters<'a> = ();
4065            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4066            type Return = alloy::sol_types::private::primitives::aliases::U256;
4067            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4068            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4069            const SIGNATURE: &'static str = "WEIGHTING_DIVISOR()";
4070            const SELECTOR: [u8; 4] = [94u8, 90u8, 103u8, 117u8];
4071            #[inline]
4072            fn new<'a>(
4073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4074            ) -> Self {
4075                tuple.into()
4076            }
4077            #[inline]
4078            fn tokenize(&self) -> Self::Token<'_> {
4079                ()
4080            }
4081            #[inline]
4082            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4083                (
4084                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4085                        ret,
4086                    ),
4087                )
4088            }
4089            #[inline]
4090            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4091                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4092                    |r| {
4093                        let r: WEIGHTING_DIVISORReturn = r.into();
4094                        r._0
4095                    },
4096                )
4097            }
4098            #[inline]
4099            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4100                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4101                    data,
4102                )
4103                .map(|r| {
4104                    let r: WEIGHTING_DIVISORReturn = r.into();
4105                    r._0
4106                })
4107            }
4108        }
4109    };
4110    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4111    /**Function with signature `addStrategies(uint8,(address,uint96)[])` and selector `0xc601527d`.
4112    ```solidity
4113    function addStrategies(uint8 quorumNumber, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
4114    ```*/
4115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4116    #[derive(Clone)]
4117    pub struct addStrategiesCall {
4118        #[allow(missing_docs)]
4119        pub quorumNumber: u8,
4120        #[allow(missing_docs)]
4121        pub _strategyParams: alloy::sol_types::private::Vec<
4122            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
4123        >,
4124    }
4125    ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function.
4126    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4127    #[derive(Clone)]
4128    pub struct addStrategiesReturn {}
4129    #[allow(
4130        non_camel_case_types,
4131        non_snake_case,
4132        clippy::pub_underscore_fields,
4133        clippy::style
4134    )]
4135    const _: () = {
4136        use alloy::sol_types as alloy_sol_types;
4137        {
4138            #[doc(hidden)]
4139            type UnderlyingSolTuple<'a> = (
4140                alloy::sol_types::sol_data::Uint<8>,
4141                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
4142            );
4143            #[doc(hidden)]
4144            type UnderlyingRustTuple<'a> = (
4145                u8,
4146                alloy::sol_types::private::Vec<
4147                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
4148                >,
4149            );
4150            #[cfg(test)]
4151            #[allow(dead_code, unreachable_patterns)]
4152            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4153                match _t {
4154                    alloy_sol_types::private::AssertTypeEq::<
4155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4156                    >(_) => {}
4157                }
4158            }
4159            #[automatically_derived]
4160            #[doc(hidden)]
4161            impl ::core::convert::From<addStrategiesCall> for UnderlyingRustTuple<'_> {
4162                fn from(value: addStrategiesCall) -> Self {
4163                    (value.quorumNumber, value._strategyParams)
4164                }
4165            }
4166            #[automatically_derived]
4167            #[doc(hidden)]
4168            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesCall {
4169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4170                    Self {
4171                        quorumNumber: tuple.0,
4172                        _strategyParams: tuple.1,
4173                    }
4174                }
4175            }
4176        }
4177        {
4178            #[doc(hidden)]
4179            type UnderlyingSolTuple<'a> = ();
4180            #[doc(hidden)]
4181            type UnderlyingRustTuple<'a> = ();
4182            #[cfg(test)]
4183            #[allow(dead_code, unreachable_patterns)]
4184            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4185                match _t {
4186                    alloy_sol_types::private::AssertTypeEq::<
4187                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4188                    >(_) => {}
4189                }
4190            }
4191            #[automatically_derived]
4192            #[doc(hidden)]
4193            impl ::core::convert::From<addStrategiesReturn> for UnderlyingRustTuple<'_> {
4194                fn from(value: addStrategiesReturn) -> Self {
4195                    ()
4196                }
4197            }
4198            #[automatically_derived]
4199            #[doc(hidden)]
4200            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesReturn {
4201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4202                    Self {}
4203                }
4204            }
4205        }
4206        impl addStrategiesReturn {
4207            fn _tokenize(
4208                &self,
4209            ) -> <addStrategiesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4210                ()
4211            }
4212        }
4213        #[automatically_derived]
4214        impl alloy_sol_types::SolCall for addStrategiesCall {
4215            type Parameters<'a> = (
4216                alloy::sol_types::sol_data::Uint<8>,
4217                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
4218            );
4219            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4220            type Return = addStrategiesReturn;
4221            type ReturnTuple<'a> = ();
4222            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4223            const SIGNATURE: &'static str = "addStrategies(uint8,(address,uint96)[])";
4224            const SELECTOR: [u8; 4] = [198u8, 1u8, 82u8, 125u8];
4225            #[inline]
4226            fn new<'a>(
4227                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4228            ) -> Self {
4229                tuple.into()
4230            }
4231            #[inline]
4232            fn tokenize(&self) -> Self::Token<'_> {
4233                (
4234                    <alloy::sol_types::sol_data::Uint<
4235                        8,
4236                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
4237                    <alloy::sol_types::sol_data::Array<
4238                        IStakeRegistryTypes::StrategyParams,
4239                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
4240                )
4241            }
4242            #[inline]
4243            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4244                addStrategiesReturn::_tokenize(ret)
4245            }
4246            #[inline]
4247            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4248                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
4249                    .map(Into::into)
4250            }
4251            #[inline]
4252            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4253                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4254                    data,
4255                )
4256                .map(Into::into)
4257            }
4258        }
4259    };
4260    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4261    /**Function with signature `allocationManager()` and selector `0xca8aa7c7`.
4262    ```solidity
4263    function allocationManager() external view returns (address);
4264    ```*/
4265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4266    #[derive(Clone)]
4267    pub struct allocationManagerCall;
4268    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4269    ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function.
4270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4271    #[derive(Clone)]
4272    pub struct allocationManagerReturn {
4273        #[allow(missing_docs)]
4274        pub _0: alloy::sol_types::private::Address,
4275    }
4276    #[allow(
4277        non_camel_case_types,
4278        non_snake_case,
4279        clippy::pub_underscore_fields,
4280        clippy::style
4281    )]
4282    const _: () = {
4283        use alloy::sol_types as alloy_sol_types;
4284        {
4285            #[doc(hidden)]
4286            type UnderlyingSolTuple<'a> = ();
4287            #[doc(hidden)]
4288            type UnderlyingRustTuple<'a> = ();
4289            #[cfg(test)]
4290            #[allow(dead_code, unreachable_patterns)]
4291            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4292                match _t {
4293                    alloy_sol_types::private::AssertTypeEq::<
4294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4295                    >(_) => {}
4296                }
4297            }
4298            #[automatically_derived]
4299            #[doc(hidden)]
4300            impl ::core::convert::From<allocationManagerCall> for UnderlyingRustTuple<'_> {
4301                fn from(value: allocationManagerCall) -> Self {
4302                    ()
4303                }
4304            }
4305            #[automatically_derived]
4306            #[doc(hidden)]
4307            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allocationManagerCall {
4308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4309                    Self
4310                }
4311            }
4312        }
4313        {
4314            #[doc(hidden)]
4315            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4316            #[doc(hidden)]
4317            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4318            #[cfg(test)]
4319            #[allow(dead_code, unreachable_patterns)]
4320            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4321                match _t {
4322                    alloy_sol_types::private::AssertTypeEq::<
4323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4324                    >(_) => {}
4325                }
4326            }
4327            #[automatically_derived]
4328            #[doc(hidden)]
4329            impl ::core::convert::From<allocationManagerReturn> for UnderlyingRustTuple<'_> {
4330                fn from(value: allocationManagerReturn) -> Self {
4331                    (value._0,)
4332                }
4333            }
4334            #[automatically_derived]
4335            #[doc(hidden)]
4336            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allocationManagerReturn {
4337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4338                    Self { _0: tuple.0 }
4339                }
4340            }
4341        }
4342        #[automatically_derived]
4343        impl alloy_sol_types::SolCall for allocationManagerCall {
4344            type Parameters<'a> = ();
4345            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4346            type Return = alloy::sol_types::private::Address;
4347            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4348            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4349            const SIGNATURE: &'static str = "allocationManager()";
4350            const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8];
4351            #[inline]
4352            fn new<'a>(
4353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4354            ) -> Self {
4355                tuple.into()
4356            }
4357            #[inline]
4358            fn tokenize(&self) -> Self::Token<'_> {
4359                ()
4360            }
4361            #[inline]
4362            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4363                (
4364                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4365                        ret,
4366                    ),
4367                )
4368            }
4369            #[inline]
4370            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4371                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4372                    |r| {
4373                        let r: allocationManagerReturn = r.into();
4374                        r._0
4375                    },
4376                )
4377            }
4378            #[inline]
4379            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4380                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4381                    data,
4382                )
4383                .map(|r| {
4384                    let r: allocationManagerReturn = r.into();
4385                    r._0
4386                })
4387            }
4388        }
4389    };
4390    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4391    /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`.
4392    ```solidity
4393    function avsDirectory() external view returns (address);
4394    ```*/
4395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4396    #[derive(Clone)]
4397    pub struct avsDirectoryCall;
4398    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4399    ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function.
4400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4401    #[derive(Clone)]
4402    pub struct avsDirectoryReturn {
4403        #[allow(missing_docs)]
4404        pub _0: alloy::sol_types::private::Address,
4405    }
4406    #[allow(
4407        non_camel_case_types,
4408        non_snake_case,
4409        clippy::pub_underscore_fields,
4410        clippy::style
4411    )]
4412    const _: () = {
4413        use alloy::sol_types as alloy_sol_types;
4414        {
4415            #[doc(hidden)]
4416            type UnderlyingSolTuple<'a> = ();
4417            #[doc(hidden)]
4418            type UnderlyingRustTuple<'a> = ();
4419            #[cfg(test)]
4420            #[allow(dead_code, unreachable_patterns)]
4421            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4422                match _t {
4423                    alloy_sol_types::private::AssertTypeEq::<
4424                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4425                    >(_) => {}
4426                }
4427            }
4428            #[automatically_derived]
4429            #[doc(hidden)]
4430            impl ::core::convert::From<avsDirectoryCall> for UnderlyingRustTuple<'_> {
4431                fn from(value: avsDirectoryCall) -> Self {
4432                    ()
4433                }
4434            }
4435            #[automatically_derived]
4436            #[doc(hidden)]
4437            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryCall {
4438                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4439                    Self
4440                }
4441            }
4442        }
4443        {
4444            #[doc(hidden)]
4445            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4446            #[doc(hidden)]
4447            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4448            #[cfg(test)]
4449            #[allow(dead_code, unreachable_patterns)]
4450            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4451                match _t {
4452                    alloy_sol_types::private::AssertTypeEq::<
4453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4454                    >(_) => {}
4455                }
4456            }
4457            #[automatically_derived]
4458            #[doc(hidden)]
4459            impl ::core::convert::From<avsDirectoryReturn> for UnderlyingRustTuple<'_> {
4460                fn from(value: avsDirectoryReturn) -> Self {
4461                    (value._0,)
4462                }
4463            }
4464            #[automatically_derived]
4465            #[doc(hidden)]
4466            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryReturn {
4467                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4468                    Self { _0: tuple.0 }
4469                }
4470            }
4471        }
4472        #[automatically_derived]
4473        impl alloy_sol_types::SolCall for avsDirectoryCall {
4474            type Parameters<'a> = ();
4475            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4476            type Return = alloy::sol_types::private::Address;
4477            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4478            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4479            const SIGNATURE: &'static str = "avsDirectory()";
4480            const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8];
4481            #[inline]
4482            fn new<'a>(
4483                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4484            ) -> Self {
4485                tuple.into()
4486            }
4487            #[inline]
4488            fn tokenize(&self) -> Self::Token<'_> {
4489                ()
4490            }
4491            #[inline]
4492            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4493                (
4494                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4495                        ret,
4496                    ),
4497                )
4498            }
4499            #[inline]
4500            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4501                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4502                    |r| {
4503                        let r: avsDirectoryReturn = r.into();
4504                        r._0
4505                    },
4506                )
4507            }
4508            #[inline]
4509            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4510                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4511                    data,
4512                )
4513                .map(|r| {
4514                    let r: avsDirectoryReturn = r.into();
4515                    r._0
4516                })
4517            }
4518        }
4519    };
4520    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4521    /**Function with signature `delegation()` and selector `0xdf5cf723`.
4522    ```solidity
4523    function delegation() external view returns (address);
4524    ```*/
4525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4526    #[derive(Clone)]
4527    pub struct delegationCall;
4528    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4529    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
4530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4531    #[derive(Clone)]
4532    pub struct delegationReturn {
4533        #[allow(missing_docs)]
4534        pub _0: alloy::sol_types::private::Address,
4535    }
4536    #[allow(
4537        non_camel_case_types,
4538        non_snake_case,
4539        clippy::pub_underscore_fields,
4540        clippy::style
4541    )]
4542    const _: () = {
4543        use alloy::sol_types as alloy_sol_types;
4544        {
4545            #[doc(hidden)]
4546            type UnderlyingSolTuple<'a> = ();
4547            #[doc(hidden)]
4548            type UnderlyingRustTuple<'a> = ();
4549            #[cfg(test)]
4550            #[allow(dead_code, unreachable_patterns)]
4551            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4552                match _t {
4553                    alloy_sol_types::private::AssertTypeEq::<
4554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4555                    >(_) => {}
4556                }
4557            }
4558            #[automatically_derived]
4559            #[doc(hidden)]
4560            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
4561                fn from(value: delegationCall) -> Self {
4562                    ()
4563                }
4564            }
4565            #[automatically_derived]
4566            #[doc(hidden)]
4567            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
4568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4569                    Self
4570                }
4571            }
4572        }
4573        {
4574            #[doc(hidden)]
4575            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4576            #[doc(hidden)]
4577            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4578            #[cfg(test)]
4579            #[allow(dead_code, unreachable_patterns)]
4580            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4581                match _t {
4582                    alloy_sol_types::private::AssertTypeEq::<
4583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4584                    >(_) => {}
4585                }
4586            }
4587            #[automatically_derived]
4588            #[doc(hidden)]
4589            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
4590                fn from(value: delegationReturn) -> Self {
4591                    (value._0,)
4592                }
4593            }
4594            #[automatically_derived]
4595            #[doc(hidden)]
4596            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
4597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4598                    Self { _0: tuple.0 }
4599                }
4600            }
4601        }
4602        #[automatically_derived]
4603        impl alloy_sol_types::SolCall for delegationCall {
4604            type Parameters<'a> = ();
4605            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4606            type Return = alloy::sol_types::private::Address;
4607            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4608            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4609            const SIGNATURE: &'static str = "delegation()";
4610            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
4611            #[inline]
4612            fn new<'a>(
4613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4614            ) -> Self {
4615                tuple.into()
4616            }
4617            #[inline]
4618            fn tokenize(&self) -> Self::Token<'_> {
4619                ()
4620            }
4621            #[inline]
4622            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4623                (
4624                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4625                        ret,
4626                    ),
4627                )
4628            }
4629            #[inline]
4630            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4631                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4632                    |r| {
4633                        let r: delegationReturn = r.into();
4634                        r._0
4635                    },
4636                )
4637            }
4638            #[inline]
4639            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4640                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4641                    data,
4642                )
4643                .map(|r| {
4644                    let r: delegationReturn = r.into();
4645                    r._0
4646                })
4647            }
4648        }
4649    };
4650    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4651    /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`.
4652    ```solidity
4653    function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external;
4654    ```*/
4655    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4656    #[derive(Clone)]
4657    pub struct deregisterOperatorCall {
4658        #[allow(missing_docs)]
4659        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
4660        #[allow(missing_docs)]
4661        pub quorumNumbers: alloy::sol_types::private::Bytes,
4662    }
4663    ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function.
4664    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4665    #[derive(Clone)]
4666    pub struct deregisterOperatorReturn {}
4667    #[allow(
4668        non_camel_case_types,
4669        non_snake_case,
4670        clippy::pub_underscore_fields,
4671        clippy::style
4672    )]
4673    const _: () = {
4674        use alloy::sol_types as alloy_sol_types;
4675        {
4676            #[doc(hidden)]
4677            type UnderlyingSolTuple<'a> = (
4678                alloy::sol_types::sol_data::FixedBytes<32>,
4679                alloy::sol_types::sol_data::Bytes,
4680            );
4681            #[doc(hidden)]
4682            type UnderlyingRustTuple<'a> = (
4683                alloy::sol_types::private::FixedBytes<32>,
4684                alloy::sol_types::private::Bytes,
4685            );
4686            #[cfg(test)]
4687            #[allow(dead_code, unreachable_patterns)]
4688            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4689                match _t {
4690                    alloy_sol_types::private::AssertTypeEq::<
4691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4692                    >(_) => {}
4693                }
4694            }
4695            #[automatically_derived]
4696            #[doc(hidden)]
4697            impl ::core::convert::From<deregisterOperatorCall> for UnderlyingRustTuple<'_> {
4698                fn from(value: deregisterOperatorCall) -> Self {
4699                    (value.operatorId, value.quorumNumbers)
4700                }
4701            }
4702            #[automatically_derived]
4703            #[doc(hidden)]
4704            impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterOperatorCall {
4705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4706                    Self {
4707                        operatorId: tuple.0,
4708                        quorumNumbers: tuple.1,
4709                    }
4710                }
4711            }
4712        }
4713        {
4714            #[doc(hidden)]
4715            type UnderlyingSolTuple<'a> = ();
4716            #[doc(hidden)]
4717            type UnderlyingRustTuple<'a> = ();
4718            #[cfg(test)]
4719            #[allow(dead_code, unreachable_patterns)]
4720            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4721                match _t {
4722                    alloy_sol_types::private::AssertTypeEq::<
4723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4724                    >(_) => {}
4725                }
4726            }
4727            #[automatically_derived]
4728            #[doc(hidden)]
4729            impl ::core::convert::From<deregisterOperatorReturn> for UnderlyingRustTuple<'_> {
4730                fn from(value: deregisterOperatorReturn) -> Self {
4731                    ()
4732                }
4733            }
4734            #[automatically_derived]
4735            #[doc(hidden)]
4736            impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterOperatorReturn {
4737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4738                    Self {}
4739                }
4740            }
4741        }
4742        impl deregisterOperatorReturn {
4743            fn _tokenize(
4744                &self,
4745            ) -> <deregisterOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4746                ()
4747            }
4748        }
4749        #[automatically_derived]
4750        impl alloy_sol_types::SolCall for deregisterOperatorCall {
4751            type Parameters<'a> = (
4752                alloy::sol_types::sol_data::FixedBytes<32>,
4753                alloy::sol_types::sol_data::Bytes,
4754            );
4755            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4756            type Return = deregisterOperatorReturn;
4757            type ReturnTuple<'a> = ();
4758            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4759            const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)";
4760            const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8];
4761            #[inline]
4762            fn new<'a>(
4763                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4764            ) -> Self {
4765                tuple.into()
4766            }
4767            #[inline]
4768            fn tokenize(&self) -> Self::Token<'_> {
4769                (
4770                    <alloy::sol_types::sol_data::FixedBytes<
4771                        32,
4772                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
4773                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4774                        &self.quorumNumbers,
4775                    ),
4776                )
4777            }
4778            #[inline]
4779            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4780                deregisterOperatorReturn::_tokenize(ret)
4781            }
4782            #[inline]
4783            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4784                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
4785                    .map(Into::into)
4786            }
4787            #[inline]
4788            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4789                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4790                    data,
4791                )
4792                .map(Into::into)
4793            }
4794        }
4795    };
4796    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4797    /**Function with signature `getCurrentStake(bytes32,uint8)` and selector `0x5401ed27`.
4798    ```solidity
4799    function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96);
4800    ```*/
4801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4802    #[derive(Clone)]
4803    pub struct getCurrentStakeCall {
4804        #[allow(missing_docs)]
4805        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
4806        #[allow(missing_docs)]
4807        pub quorumNumber: u8,
4808    }
4809    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4810    ///Container type for the return parameters of the [`getCurrentStake(bytes32,uint8)`](getCurrentStakeCall) function.
4811    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4812    #[derive(Clone)]
4813    pub struct getCurrentStakeReturn {
4814        #[allow(missing_docs)]
4815        pub _0: alloy::sol_types::private::primitives::aliases::U96,
4816    }
4817    #[allow(
4818        non_camel_case_types,
4819        non_snake_case,
4820        clippy::pub_underscore_fields,
4821        clippy::style
4822    )]
4823    const _: () = {
4824        use alloy::sol_types as alloy_sol_types;
4825        {
4826            #[doc(hidden)]
4827            type UnderlyingSolTuple<'a> = (
4828                alloy::sol_types::sol_data::FixedBytes<32>,
4829                alloy::sol_types::sol_data::Uint<8>,
4830            );
4831            #[doc(hidden)]
4832            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8);
4833            #[cfg(test)]
4834            #[allow(dead_code, unreachable_patterns)]
4835            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4836                match _t {
4837                    alloy_sol_types::private::AssertTypeEq::<
4838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4839                    >(_) => {}
4840                }
4841            }
4842            #[automatically_derived]
4843            #[doc(hidden)]
4844            impl ::core::convert::From<getCurrentStakeCall> for UnderlyingRustTuple<'_> {
4845                fn from(value: getCurrentStakeCall) -> Self {
4846                    (value.operatorId, value.quorumNumber)
4847                }
4848            }
4849            #[automatically_derived]
4850            #[doc(hidden)]
4851            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCurrentStakeCall {
4852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4853                    Self {
4854                        operatorId: tuple.0,
4855                        quorumNumber: tuple.1,
4856                    }
4857                }
4858            }
4859        }
4860        {
4861            #[doc(hidden)]
4862            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
4863            #[doc(hidden)]
4864            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
4865            #[cfg(test)]
4866            #[allow(dead_code, unreachable_patterns)]
4867            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4868                match _t {
4869                    alloy_sol_types::private::AssertTypeEq::<
4870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4871                    >(_) => {}
4872                }
4873            }
4874            #[automatically_derived]
4875            #[doc(hidden)]
4876            impl ::core::convert::From<getCurrentStakeReturn> for UnderlyingRustTuple<'_> {
4877                fn from(value: getCurrentStakeReturn) -> Self {
4878                    (value._0,)
4879                }
4880            }
4881            #[automatically_derived]
4882            #[doc(hidden)]
4883            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCurrentStakeReturn {
4884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4885                    Self { _0: tuple.0 }
4886                }
4887            }
4888        }
4889        #[automatically_derived]
4890        impl alloy_sol_types::SolCall for getCurrentStakeCall {
4891            type Parameters<'a> = (
4892                alloy::sol_types::sol_data::FixedBytes<32>,
4893                alloy::sol_types::sol_data::Uint<8>,
4894            );
4895            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4896            type Return = alloy::sol_types::private::primitives::aliases::U96;
4897            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
4898            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4899            const SIGNATURE: &'static str = "getCurrentStake(bytes32,uint8)";
4900            const SELECTOR: [u8; 4] = [84u8, 1u8, 237u8, 39u8];
4901            #[inline]
4902            fn new<'a>(
4903                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4904            ) -> Self {
4905                tuple.into()
4906            }
4907            #[inline]
4908            fn tokenize(&self) -> Self::Token<'_> {
4909                (
4910                    <alloy::sol_types::sol_data::FixedBytes<
4911                        32,
4912                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
4913                    <alloy::sol_types::sol_data::Uint<
4914                        8,
4915                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
4916                )
4917            }
4918            #[inline]
4919            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4920                (
4921                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
4922                        ret,
4923                    ),
4924                )
4925            }
4926            #[inline]
4927            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4928                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4929                    |r| {
4930                        let r: getCurrentStakeReturn = r.into();
4931                        r._0
4932                    },
4933                )
4934            }
4935            #[inline]
4936            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4937                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4938                    data,
4939                )
4940                .map(|r| {
4941                    let r: getCurrentStakeReturn = r.into();
4942                    r._0
4943                })
4944            }
4945        }
4946    };
4947    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4948    /**Function with signature `getCurrentTotalStake(uint8)` and selector `0xd5eccc05`.
4949    ```solidity
4950    function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96);
4951    ```*/
4952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4953    #[derive(Clone)]
4954    pub struct getCurrentTotalStakeCall {
4955        #[allow(missing_docs)]
4956        pub quorumNumber: u8,
4957    }
4958    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4959    ///Container type for the return parameters of the [`getCurrentTotalStake(uint8)`](getCurrentTotalStakeCall) function.
4960    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4961    #[derive(Clone)]
4962    pub struct getCurrentTotalStakeReturn {
4963        #[allow(missing_docs)]
4964        pub _0: alloy::sol_types::private::primitives::aliases::U96,
4965    }
4966    #[allow(
4967        non_camel_case_types,
4968        non_snake_case,
4969        clippy::pub_underscore_fields,
4970        clippy::style
4971    )]
4972    const _: () = {
4973        use alloy::sol_types as alloy_sol_types;
4974        {
4975            #[doc(hidden)]
4976            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
4977            #[doc(hidden)]
4978            type UnderlyingRustTuple<'a> = (u8,);
4979            #[cfg(test)]
4980            #[allow(dead_code, unreachable_patterns)]
4981            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4982                match _t {
4983                    alloy_sol_types::private::AssertTypeEq::<
4984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4985                    >(_) => {}
4986                }
4987            }
4988            #[automatically_derived]
4989            #[doc(hidden)]
4990            impl ::core::convert::From<getCurrentTotalStakeCall> for UnderlyingRustTuple<'_> {
4991                fn from(value: getCurrentTotalStakeCall) -> Self {
4992                    (value.quorumNumber,)
4993                }
4994            }
4995            #[automatically_derived]
4996            #[doc(hidden)]
4997            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCurrentTotalStakeCall {
4998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4999                    Self {
5000                        quorumNumber: tuple.0,
5001                    }
5002                }
5003            }
5004        }
5005        {
5006            #[doc(hidden)]
5007            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5008            #[doc(hidden)]
5009            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
5010            #[cfg(test)]
5011            #[allow(dead_code, unreachable_patterns)]
5012            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5013                match _t {
5014                    alloy_sol_types::private::AssertTypeEq::<
5015                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5016                    >(_) => {}
5017                }
5018            }
5019            #[automatically_derived]
5020            #[doc(hidden)]
5021            impl ::core::convert::From<getCurrentTotalStakeReturn> for UnderlyingRustTuple<'_> {
5022                fn from(value: getCurrentTotalStakeReturn) -> Self {
5023                    (value._0,)
5024                }
5025            }
5026            #[automatically_derived]
5027            #[doc(hidden)]
5028            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCurrentTotalStakeReturn {
5029                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5030                    Self { _0: tuple.0 }
5031                }
5032            }
5033        }
5034        #[automatically_derived]
5035        impl alloy_sol_types::SolCall for getCurrentTotalStakeCall {
5036            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5037            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5038            type Return = alloy::sol_types::private::primitives::aliases::U96;
5039            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5040            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5041            const SIGNATURE: &'static str = "getCurrentTotalStake(uint8)";
5042            const SELECTOR: [u8; 4] = [213u8, 236u8, 204u8, 5u8];
5043            #[inline]
5044            fn new<'a>(
5045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5046            ) -> Self {
5047                tuple.into()
5048            }
5049            #[inline]
5050            fn tokenize(&self) -> Self::Token<'_> {
5051                (
5052                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
5053                        &self.quorumNumber,
5054                    ),
5055                )
5056            }
5057            #[inline]
5058            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5059                (
5060                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
5061                        ret,
5062                    ),
5063                )
5064            }
5065            #[inline]
5066            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5067                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5068                    |r| {
5069                        let r: getCurrentTotalStakeReturn = r.into();
5070                        r._0
5071                    },
5072                )
5073            }
5074            #[inline]
5075            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5076                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5077                    data,
5078                )
5079                .map(|r| {
5080                    let r: getCurrentTotalStakeReturn = r.into();
5081                    r._0
5082                })
5083            }
5084        }
5085    };
5086    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5087    /**Function with signature `getLatestStakeUpdate(bytes32,uint8)` and selector `0xf851e198`.
5088    ```solidity
5089    function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate memory);
5090    ```*/
5091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5092    #[derive(Clone)]
5093    pub struct getLatestStakeUpdateCall {
5094        #[allow(missing_docs)]
5095        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5096        #[allow(missing_docs)]
5097        pub quorumNumber: u8,
5098    }
5099    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5100    ///Container type for the return parameters of the [`getLatestStakeUpdate(bytes32,uint8)`](getLatestStakeUpdateCall) function.
5101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5102    #[derive(Clone)]
5103    pub struct getLatestStakeUpdateReturn {
5104        #[allow(missing_docs)]
5105        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5106    }
5107    #[allow(
5108        non_camel_case_types,
5109        non_snake_case,
5110        clippy::pub_underscore_fields,
5111        clippy::style
5112    )]
5113    const _: () = {
5114        use alloy::sol_types as alloy_sol_types;
5115        {
5116            #[doc(hidden)]
5117            type UnderlyingSolTuple<'a> = (
5118                alloy::sol_types::sol_data::FixedBytes<32>,
5119                alloy::sol_types::sol_data::Uint<8>,
5120            );
5121            #[doc(hidden)]
5122            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8);
5123            #[cfg(test)]
5124            #[allow(dead_code, unreachable_patterns)]
5125            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5126                match _t {
5127                    alloy_sol_types::private::AssertTypeEq::<
5128                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5129                    >(_) => {}
5130                }
5131            }
5132            #[automatically_derived]
5133            #[doc(hidden)]
5134            impl ::core::convert::From<getLatestStakeUpdateCall> for UnderlyingRustTuple<'_> {
5135                fn from(value: getLatestStakeUpdateCall) -> Self {
5136                    (value.operatorId, value.quorumNumber)
5137                }
5138            }
5139            #[automatically_derived]
5140            #[doc(hidden)]
5141            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getLatestStakeUpdateCall {
5142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5143                    Self {
5144                        operatorId: tuple.0,
5145                        quorumNumber: tuple.1,
5146                    }
5147                }
5148            }
5149        }
5150        {
5151            #[doc(hidden)]
5152            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5153            #[doc(hidden)]
5154            type UnderlyingRustTuple<'a> =
5155                (<IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,);
5156            #[cfg(test)]
5157            #[allow(dead_code, unreachable_patterns)]
5158            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5159                match _t {
5160                    alloy_sol_types::private::AssertTypeEq::<
5161                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5162                    >(_) => {}
5163                }
5164            }
5165            #[automatically_derived]
5166            #[doc(hidden)]
5167            impl ::core::convert::From<getLatestStakeUpdateReturn> for UnderlyingRustTuple<'_> {
5168                fn from(value: getLatestStakeUpdateReturn) -> Self {
5169                    (value._0,)
5170                }
5171            }
5172            #[automatically_derived]
5173            #[doc(hidden)]
5174            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getLatestStakeUpdateReturn {
5175                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5176                    Self { _0: tuple.0 }
5177                }
5178            }
5179        }
5180        #[automatically_derived]
5181        impl alloy_sol_types::SolCall for getLatestStakeUpdateCall {
5182            type Parameters<'a> = (
5183                alloy::sol_types::sol_data::FixedBytes<32>,
5184                alloy::sol_types::sol_data::Uint<8>,
5185            );
5186            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5187            type Return = <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType;
5188            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5189            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5190            const SIGNATURE: &'static str = "getLatestStakeUpdate(bytes32,uint8)";
5191            const SELECTOR: [u8; 4] = [248u8, 81u8, 225u8, 152u8];
5192            #[inline]
5193            fn new<'a>(
5194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5195            ) -> Self {
5196                tuple.into()
5197            }
5198            #[inline]
5199            fn tokenize(&self) -> Self::Token<'_> {
5200                (
5201                    <alloy::sol_types::sol_data::FixedBytes<
5202                        32,
5203                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5204                    <alloy::sol_types::sol_data::Uint<
5205                        8,
5206                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5207                )
5208            }
5209            #[inline]
5210            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5211                (<IStakeRegistryTypes::StakeUpdate as alloy_sol_types::SolType>::tokenize(ret),)
5212            }
5213            #[inline]
5214            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5215                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5216                    |r| {
5217                        let r: getLatestStakeUpdateReturn = r.into();
5218                        r._0
5219                    },
5220                )
5221            }
5222            #[inline]
5223            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5224                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5225                    data,
5226                )
5227                .map(|r| {
5228                    let r: getLatestStakeUpdateReturn = r.into();
5229                    r._0
5230                })
5231            }
5232        }
5233    };
5234    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5235    /**Function with signature `getStakeAtBlockNumber(bytes32,uint8,uint32)` and selector `0xfa28c627`.
5236    ```solidity
5237    function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96);
5238    ```*/
5239    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5240    #[derive(Clone)]
5241    pub struct getStakeAtBlockNumberCall {
5242        #[allow(missing_docs)]
5243        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5244        #[allow(missing_docs)]
5245        pub quorumNumber: u8,
5246        #[allow(missing_docs)]
5247        pub blockNumber: u32,
5248    }
5249    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5250    ///Container type for the return parameters of the [`getStakeAtBlockNumber(bytes32,uint8,uint32)`](getStakeAtBlockNumberCall) function.
5251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5252    #[derive(Clone)]
5253    pub struct getStakeAtBlockNumberReturn {
5254        #[allow(missing_docs)]
5255        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5256    }
5257    #[allow(
5258        non_camel_case_types,
5259        non_snake_case,
5260        clippy::pub_underscore_fields,
5261        clippy::style
5262    )]
5263    const _: () = {
5264        use alloy::sol_types as alloy_sol_types;
5265        {
5266            #[doc(hidden)]
5267            type UnderlyingSolTuple<'a> = (
5268                alloy::sol_types::sol_data::FixedBytes<32>,
5269                alloy::sol_types::sol_data::Uint<8>,
5270                alloy::sol_types::sol_data::Uint<32>,
5271            );
5272            #[doc(hidden)]
5273            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32);
5274            #[cfg(test)]
5275            #[allow(dead_code, unreachable_patterns)]
5276            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5277                match _t {
5278                    alloy_sol_types::private::AssertTypeEq::<
5279                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5280                    >(_) => {}
5281                }
5282            }
5283            #[automatically_derived]
5284            #[doc(hidden)]
5285            impl ::core::convert::From<getStakeAtBlockNumberCall> for UnderlyingRustTuple<'_> {
5286                fn from(value: getStakeAtBlockNumberCall) -> Self {
5287                    (value.operatorId, value.quorumNumber, value.blockNumber)
5288                }
5289            }
5290            #[automatically_derived]
5291            #[doc(hidden)]
5292            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeAtBlockNumberCall {
5293                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5294                    Self {
5295                        operatorId: tuple.0,
5296                        quorumNumber: tuple.1,
5297                        blockNumber: tuple.2,
5298                    }
5299                }
5300            }
5301        }
5302        {
5303            #[doc(hidden)]
5304            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5305            #[doc(hidden)]
5306            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
5307            #[cfg(test)]
5308            #[allow(dead_code, unreachable_patterns)]
5309            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5310                match _t {
5311                    alloy_sol_types::private::AssertTypeEq::<
5312                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5313                    >(_) => {}
5314                }
5315            }
5316            #[automatically_derived]
5317            #[doc(hidden)]
5318            impl ::core::convert::From<getStakeAtBlockNumberReturn> for UnderlyingRustTuple<'_> {
5319                fn from(value: getStakeAtBlockNumberReturn) -> Self {
5320                    (value._0,)
5321                }
5322            }
5323            #[automatically_derived]
5324            #[doc(hidden)]
5325            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeAtBlockNumberReturn {
5326                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5327                    Self { _0: tuple.0 }
5328                }
5329            }
5330        }
5331        #[automatically_derived]
5332        impl alloy_sol_types::SolCall for getStakeAtBlockNumberCall {
5333            type Parameters<'a> = (
5334                alloy::sol_types::sol_data::FixedBytes<32>,
5335                alloy::sol_types::sol_data::Uint<8>,
5336                alloy::sol_types::sol_data::Uint<32>,
5337            );
5338            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5339            type Return = alloy::sol_types::private::primitives::aliases::U96;
5340            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5341            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5342            const SIGNATURE: &'static str = "getStakeAtBlockNumber(bytes32,uint8,uint32)";
5343            const SELECTOR: [u8; 4] = [250u8, 40u8, 198u8, 39u8];
5344            #[inline]
5345            fn new<'a>(
5346                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5347            ) -> Self {
5348                tuple.into()
5349            }
5350            #[inline]
5351            fn tokenize(&self) -> Self::Token<'_> {
5352                (
5353                    <alloy::sol_types::sol_data::FixedBytes<
5354                        32,
5355                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5356                    <alloy::sol_types::sol_data::Uint<
5357                        8,
5358                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5359                    <alloy::sol_types::sol_data::Uint<
5360                        32,
5361                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
5362                )
5363            }
5364            #[inline]
5365            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5366                (
5367                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
5368                        ret,
5369                    ),
5370                )
5371            }
5372            #[inline]
5373            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5374                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5375                    |r| {
5376                        let r: getStakeAtBlockNumberReturn = r.into();
5377                        r._0
5378                    },
5379                )
5380            }
5381            #[inline]
5382            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5383                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5384                    data,
5385                )
5386                .map(|r| {
5387                    let r: getStakeAtBlockNumberReturn = r.into();
5388                    r._0
5389                })
5390            }
5391        }
5392    };
5393    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5394    /**Function with signature `getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)` and selector `0xf2be94ae`.
5395    ```solidity
5396    function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96);
5397    ```*/
5398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5399    #[derive(Clone)]
5400    pub struct getStakeAtBlockNumberAndIndexCall {
5401        #[allow(missing_docs)]
5402        pub quorumNumber: u8,
5403        #[allow(missing_docs)]
5404        pub blockNumber: u32,
5405        #[allow(missing_docs)]
5406        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5407        #[allow(missing_docs)]
5408        pub index: alloy::sol_types::private::primitives::aliases::U256,
5409    }
5410    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5411    ///Container type for the return parameters of the [`getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)`](getStakeAtBlockNumberAndIndexCall) function.
5412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5413    #[derive(Clone)]
5414    pub struct getStakeAtBlockNumberAndIndexReturn {
5415        #[allow(missing_docs)]
5416        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5417    }
5418    #[allow(
5419        non_camel_case_types,
5420        non_snake_case,
5421        clippy::pub_underscore_fields,
5422        clippy::style
5423    )]
5424    const _: () = {
5425        use alloy::sol_types as alloy_sol_types;
5426        {
5427            #[doc(hidden)]
5428            type UnderlyingSolTuple<'a> = (
5429                alloy::sol_types::sol_data::Uint<8>,
5430                alloy::sol_types::sol_data::Uint<32>,
5431                alloy::sol_types::sol_data::FixedBytes<32>,
5432                alloy::sol_types::sol_data::Uint<256>,
5433            );
5434            #[doc(hidden)]
5435            type UnderlyingRustTuple<'a> = (
5436                u8,
5437                u32,
5438                alloy::sol_types::private::FixedBytes<32>,
5439                alloy::sol_types::private::primitives::aliases::U256,
5440            );
5441            #[cfg(test)]
5442            #[allow(dead_code, unreachable_patterns)]
5443            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5444                match _t {
5445                    alloy_sol_types::private::AssertTypeEq::<
5446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5447                    >(_) => {}
5448                }
5449            }
5450            #[automatically_derived]
5451            #[doc(hidden)]
5452            impl ::core::convert::From<getStakeAtBlockNumberAndIndexCall> for UnderlyingRustTuple<'_> {
5453                fn from(value: getStakeAtBlockNumberAndIndexCall) -> Self {
5454                    (
5455                        value.quorumNumber,
5456                        value.blockNumber,
5457                        value.operatorId,
5458                        value.index,
5459                    )
5460                }
5461            }
5462            #[automatically_derived]
5463            #[doc(hidden)]
5464            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeAtBlockNumberAndIndexCall {
5465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5466                    Self {
5467                        quorumNumber: tuple.0,
5468                        blockNumber: tuple.1,
5469                        operatorId: tuple.2,
5470                        index: tuple.3,
5471                    }
5472                }
5473            }
5474        }
5475        {
5476            #[doc(hidden)]
5477            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5478            #[doc(hidden)]
5479            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
5480            #[cfg(test)]
5481            #[allow(dead_code, unreachable_patterns)]
5482            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5483                match _t {
5484                    alloy_sol_types::private::AssertTypeEq::<
5485                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5486                    >(_) => {}
5487                }
5488            }
5489            #[automatically_derived]
5490            #[doc(hidden)]
5491            impl ::core::convert::From<getStakeAtBlockNumberAndIndexReturn> for UnderlyingRustTuple<'_> {
5492                fn from(value: getStakeAtBlockNumberAndIndexReturn) -> Self {
5493                    (value._0,)
5494                }
5495            }
5496            #[automatically_derived]
5497            #[doc(hidden)]
5498            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeAtBlockNumberAndIndexReturn {
5499                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5500                    Self { _0: tuple.0 }
5501                }
5502            }
5503        }
5504        #[automatically_derived]
5505        impl alloy_sol_types::SolCall for getStakeAtBlockNumberAndIndexCall {
5506            type Parameters<'a> = (
5507                alloy::sol_types::sol_data::Uint<8>,
5508                alloy::sol_types::sol_data::Uint<32>,
5509                alloy::sol_types::sol_data::FixedBytes<32>,
5510                alloy::sol_types::sol_data::Uint<256>,
5511            );
5512            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5513            type Return = alloy::sol_types::private::primitives::aliases::U96;
5514            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5515            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5516            const SIGNATURE: &'static str =
5517                "getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)";
5518            const SELECTOR: [u8; 4] = [242u8, 190u8, 148u8, 174u8];
5519            #[inline]
5520            fn new<'a>(
5521                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5522            ) -> Self {
5523                tuple.into()
5524            }
5525            #[inline]
5526            fn tokenize(&self) -> Self::Token<'_> {
5527                (
5528                    <alloy::sol_types::sol_data::Uint<
5529                        8,
5530                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5531                    <alloy::sol_types::sol_data::Uint<
5532                        32,
5533                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
5534                    <alloy::sol_types::sol_data::FixedBytes<
5535                        32,
5536                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5537                    <alloy::sol_types::sol_data::Uint<
5538                        256,
5539                    > as alloy_sol_types::SolType>::tokenize(&self.index),
5540                )
5541            }
5542            #[inline]
5543            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5544                (
5545                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
5546                        ret,
5547                    ),
5548                )
5549            }
5550            #[inline]
5551            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5552                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5553                    |r| {
5554                        let r: getStakeAtBlockNumberAndIndexReturn = r.into();
5555                        r._0
5556                    },
5557                )
5558            }
5559            #[inline]
5560            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5561                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5562                    data,
5563                )
5564                .map(|r| {
5565                    let r: getStakeAtBlockNumberAndIndexReturn = r.into();
5566                    r._0
5567                })
5568            }
5569        }
5570    };
5571    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5572    /**Function with signature `getStakeHistory(bytes32,uint8)` and selector `0x2cd95940`.
5573    ```solidity
5574    function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate[] memory);
5575    ```*/
5576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5577    #[derive(Clone)]
5578    pub struct getStakeHistoryCall {
5579        #[allow(missing_docs)]
5580        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5581        #[allow(missing_docs)]
5582        pub quorumNumber: u8,
5583    }
5584    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5585    ///Container type for the return parameters of the [`getStakeHistory(bytes32,uint8)`](getStakeHistoryCall) function.
5586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5587    #[derive(Clone)]
5588    pub struct getStakeHistoryReturn {
5589        #[allow(missing_docs)]
5590        pub _0: alloy::sol_types::private::Vec<
5591            <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5592        >,
5593    }
5594    #[allow(
5595        non_camel_case_types,
5596        non_snake_case,
5597        clippy::pub_underscore_fields,
5598        clippy::style
5599    )]
5600    const _: () = {
5601        use alloy::sol_types as alloy_sol_types;
5602        {
5603            #[doc(hidden)]
5604            type UnderlyingSolTuple<'a> = (
5605                alloy::sol_types::sol_data::FixedBytes<32>,
5606                alloy::sol_types::sol_data::Uint<8>,
5607            );
5608            #[doc(hidden)]
5609            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8);
5610            #[cfg(test)]
5611            #[allow(dead_code, unreachable_patterns)]
5612            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5613                match _t {
5614                    alloy_sol_types::private::AssertTypeEq::<
5615                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5616                    >(_) => {}
5617                }
5618            }
5619            #[automatically_derived]
5620            #[doc(hidden)]
5621            impl ::core::convert::From<getStakeHistoryCall> for UnderlyingRustTuple<'_> {
5622                fn from(value: getStakeHistoryCall) -> Self {
5623                    (value.operatorId, value.quorumNumber)
5624                }
5625            }
5626            #[automatically_derived]
5627            #[doc(hidden)]
5628            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeHistoryCall {
5629                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5630                    Self {
5631                        operatorId: tuple.0,
5632                        quorumNumber: tuple.1,
5633                    }
5634                }
5635            }
5636        }
5637        {
5638            #[doc(hidden)]
5639            type UnderlyingSolTuple<'a> =
5640                (alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StakeUpdate>,);
5641            #[doc(hidden)]
5642            type UnderlyingRustTuple<'a> = (
5643                alloy::sol_types::private::Vec<
5644                    <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5645                >,
5646            );
5647            #[cfg(test)]
5648            #[allow(dead_code, unreachable_patterns)]
5649            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5650                match _t {
5651                    alloy_sol_types::private::AssertTypeEq::<
5652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5653                    >(_) => {}
5654                }
5655            }
5656            #[automatically_derived]
5657            #[doc(hidden)]
5658            impl ::core::convert::From<getStakeHistoryReturn> for UnderlyingRustTuple<'_> {
5659                fn from(value: getStakeHistoryReturn) -> Self {
5660                    (value._0,)
5661                }
5662            }
5663            #[automatically_derived]
5664            #[doc(hidden)]
5665            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeHistoryReturn {
5666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5667                    Self { _0: tuple.0 }
5668                }
5669            }
5670        }
5671        #[automatically_derived]
5672        impl alloy_sol_types::SolCall for getStakeHistoryCall {
5673            type Parameters<'a> = (
5674                alloy::sol_types::sol_data::FixedBytes<32>,
5675                alloy::sol_types::sol_data::Uint<8>,
5676            );
5677            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5678            type Return = alloy::sol_types::private::Vec<
5679                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5680            >;
5681            type ReturnTuple<'a> =
5682                (alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StakeUpdate>,);
5683            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5684            const SIGNATURE: &'static str = "getStakeHistory(bytes32,uint8)";
5685            const SELECTOR: [u8; 4] = [44u8, 217u8, 89u8, 64u8];
5686            #[inline]
5687            fn new<'a>(
5688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5689            ) -> Self {
5690                tuple.into()
5691            }
5692            #[inline]
5693            fn tokenize(&self) -> Self::Token<'_> {
5694                (
5695                    <alloy::sol_types::sol_data::FixedBytes<
5696                        32,
5697                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5698                    <alloy::sol_types::sol_data::Uint<
5699                        8,
5700                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5701                )
5702            }
5703            #[inline]
5704            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5705                (<alloy::sol_types::sol_data::Array<
5706                    IStakeRegistryTypes::StakeUpdate,
5707                > as alloy_sol_types::SolType>::tokenize(ret),)
5708            }
5709            #[inline]
5710            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5711                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5712                    |r| {
5713                        let r: getStakeHistoryReturn = r.into();
5714                        r._0
5715                    },
5716                )
5717            }
5718            #[inline]
5719            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5720                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5721                    data,
5722                )
5723                .map(|r| {
5724                    let r: getStakeHistoryReturn = r.into();
5725                    r._0
5726                })
5727            }
5728        }
5729    };
5730    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5731    /**Function with signature `getStakeHistoryLength(bytes32,uint8)` and selector `0x4bd26e09`.
5732    ```solidity
5733    function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256);
5734    ```*/
5735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5736    #[derive(Clone)]
5737    pub struct getStakeHistoryLengthCall {
5738        #[allow(missing_docs)]
5739        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5740        #[allow(missing_docs)]
5741        pub quorumNumber: u8,
5742    }
5743    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5744    ///Container type for the return parameters of the [`getStakeHistoryLength(bytes32,uint8)`](getStakeHistoryLengthCall) function.
5745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5746    #[derive(Clone)]
5747    pub struct getStakeHistoryLengthReturn {
5748        #[allow(missing_docs)]
5749        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5750    }
5751    #[allow(
5752        non_camel_case_types,
5753        non_snake_case,
5754        clippy::pub_underscore_fields,
5755        clippy::style
5756    )]
5757    const _: () = {
5758        use alloy::sol_types as alloy_sol_types;
5759        {
5760            #[doc(hidden)]
5761            type UnderlyingSolTuple<'a> = (
5762                alloy::sol_types::sol_data::FixedBytes<32>,
5763                alloy::sol_types::sol_data::Uint<8>,
5764            );
5765            #[doc(hidden)]
5766            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8);
5767            #[cfg(test)]
5768            #[allow(dead_code, unreachable_patterns)]
5769            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5770                match _t {
5771                    alloy_sol_types::private::AssertTypeEq::<
5772                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5773                    >(_) => {}
5774                }
5775            }
5776            #[automatically_derived]
5777            #[doc(hidden)]
5778            impl ::core::convert::From<getStakeHistoryLengthCall> for UnderlyingRustTuple<'_> {
5779                fn from(value: getStakeHistoryLengthCall) -> Self {
5780                    (value.operatorId, value.quorumNumber)
5781                }
5782            }
5783            #[automatically_derived]
5784            #[doc(hidden)]
5785            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeHistoryLengthCall {
5786                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5787                    Self {
5788                        operatorId: tuple.0,
5789                        quorumNumber: tuple.1,
5790                    }
5791                }
5792            }
5793        }
5794        {
5795            #[doc(hidden)]
5796            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5797            #[doc(hidden)]
5798            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
5799            #[cfg(test)]
5800            #[allow(dead_code, unreachable_patterns)]
5801            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5802                match _t {
5803                    alloy_sol_types::private::AssertTypeEq::<
5804                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5805                    >(_) => {}
5806                }
5807            }
5808            #[automatically_derived]
5809            #[doc(hidden)]
5810            impl ::core::convert::From<getStakeHistoryLengthReturn> for UnderlyingRustTuple<'_> {
5811                fn from(value: getStakeHistoryLengthReturn) -> Self {
5812                    (value._0,)
5813                }
5814            }
5815            #[automatically_derived]
5816            #[doc(hidden)]
5817            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeHistoryLengthReturn {
5818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5819                    Self { _0: tuple.0 }
5820                }
5821            }
5822        }
5823        #[automatically_derived]
5824        impl alloy_sol_types::SolCall for getStakeHistoryLengthCall {
5825            type Parameters<'a> = (
5826                alloy::sol_types::sol_data::FixedBytes<32>,
5827                alloy::sol_types::sol_data::Uint<8>,
5828            );
5829            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5830            type Return = alloy::sol_types::private::primitives::aliases::U256;
5831            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5832            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5833            const SIGNATURE: &'static str = "getStakeHistoryLength(bytes32,uint8)";
5834            const SELECTOR: [u8; 4] = [75u8, 210u8, 110u8, 9u8];
5835            #[inline]
5836            fn new<'a>(
5837                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5838            ) -> Self {
5839                tuple.into()
5840            }
5841            #[inline]
5842            fn tokenize(&self) -> Self::Token<'_> {
5843                (
5844                    <alloy::sol_types::sol_data::FixedBytes<
5845                        32,
5846                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5847                    <alloy::sol_types::sol_data::Uint<
5848                        8,
5849                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5850                )
5851            }
5852            #[inline]
5853            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5854                (
5855                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5856                        ret,
5857                    ),
5858                )
5859            }
5860            #[inline]
5861            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5862                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5863                    |r| {
5864                        let r: getStakeHistoryLengthReturn = r.into();
5865                        r._0
5866                    },
5867                )
5868            }
5869            #[inline]
5870            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5871                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5872                    data,
5873                )
5874                .map(|r| {
5875                    let r: getStakeHistoryLengthReturn = r.into();
5876                    r._0
5877                })
5878            }
5879        }
5880    };
5881    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5882    /**Function with signature `getStakeUpdateAtIndex(uint8,bytes32,uint256)` and selector `0xac6bfb03`.
5883    ```solidity
5884    function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
5885    ```*/
5886    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5887    #[derive(Clone)]
5888    pub struct getStakeUpdateAtIndexCall {
5889        #[allow(missing_docs)]
5890        pub quorumNumber: u8,
5891        #[allow(missing_docs)]
5892        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5893        #[allow(missing_docs)]
5894        pub index: alloy::sol_types::private::primitives::aliases::U256,
5895    }
5896    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5897    ///Container type for the return parameters of the [`getStakeUpdateAtIndex(uint8,bytes32,uint256)`](getStakeUpdateAtIndexCall) function.
5898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5899    #[derive(Clone)]
5900    pub struct getStakeUpdateAtIndexReturn {
5901        #[allow(missing_docs)]
5902        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5903    }
5904    #[allow(
5905        non_camel_case_types,
5906        non_snake_case,
5907        clippy::pub_underscore_fields,
5908        clippy::style
5909    )]
5910    const _: () = {
5911        use alloy::sol_types as alloy_sol_types;
5912        {
5913            #[doc(hidden)]
5914            type UnderlyingSolTuple<'a> = (
5915                alloy::sol_types::sol_data::Uint<8>,
5916                alloy::sol_types::sol_data::FixedBytes<32>,
5917                alloy::sol_types::sol_data::Uint<256>,
5918            );
5919            #[doc(hidden)]
5920            type UnderlyingRustTuple<'a> = (
5921                u8,
5922                alloy::sol_types::private::FixedBytes<32>,
5923                alloy::sol_types::private::primitives::aliases::U256,
5924            );
5925            #[cfg(test)]
5926            #[allow(dead_code, unreachable_patterns)]
5927            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5928                match _t {
5929                    alloy_sol_types::private::AssertTypeEq::<
5930                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5931                    >(_) => {}
5932                }
5933            }
5934            #[automatically_derived]
5935            #[doc(hidden)]
5936            impl ::core::convert::From<getStakeUpdateAtIndexCall> for UnderlyingRustTuple<'_> {
5937                fn from(value: getStakeUpdateAtIndexCall) -> Self {
5938                    (value.quorumNumber, value.operatorId, value.index)
5939                }
5940            }
5941            #[automatically_derived]
5942            #[doc(hidden)]
5943            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeUpdateAtIndexCall {
5944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5945                    Self {
5946                        quorumNumber: tuple.0,
5947                        operatorId: tuple.1,
5948                        index: tuple.2,
5949                    }
5950                }
5951            }
5952        }
5953        {
5954            #[doc(hidden)]
5955            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5956            #[doc(hidden)]
5957            type UnderlyingRustTuple<'a> =
5958                (<IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,);
5959            #[cfg(test)]
5960            #[allow(dead_code, unreachable_patterns)]
5961            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5962                match _t {
5963                    alloy_sol_types::private::AssertTypeEq::<
5964                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5965                    >(_) => {}
5966                }
5967            }
5968            #[automatically_derived]
5969            #[doc(hidden)]
5970            impl ::core::convert::From<getStakeUpdateAtIndexReturn> for UnderlyingRustTuple<'_> {
5971                fn from(value: getStakeUpdateAtIndexReturn) -> Self {
5972                    (value._0,)
5973                }
5974            }
5975            #[automatically_derived]
5976            #[doc(hidden)]
5977            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeUpdateAtIndexReturn {
5978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5979                    Self { _0: tuple.0 }
5980                }
5981            }
5982        }
5983        #[automatically_derived]
5984        impl alloy_sol_types::SolCall for getStakeUpdateAtIndexCall {
5985            type Parameters<'a> = (
5986                alloy::sol_types::sol_data::Uint<8>,
5987                alloy::sol_types::sol_data::FixedBytes<32>,
5988                alloy::sol_types::sol_data::Uint<256>,
5989            );
5990            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5991            type Return = <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType;
5992            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5993            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5994            const SIGNATURE: &'static str = "getStakeUpdateAtIndex(uint8,bytes32,uint256)";
5995            const SELECTOR: [u8; 4] = [172u8, 107u8, 251u8, 3u8];
5996            #[inline]
5997            fn new<'a>(
5998                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5999            ) -> Self {
6000                tuple.into()
6001            }
6002            #[inline]
6003            fn tokenize(&self) -> Self::Token<'_> {
6004                (
6005                    <alloy::sol_types::sol_data::Uint<
6006                        8,
6007                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6008                    <alloy::sol_types::sol_data::FixedBytes<
6009                        32,
6010                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6011                    <alloy::sol_types::sol_data::Uint<
6012                        256,
6013                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6014                )
6015            }
6016            #[inline]
6017            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6018                (<IStakeRegistryTypes::StakeUpdate as alloy_sol_types::SolType>::tokenize(ret),)
6019            }
6020            #[inline]
6021            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6022                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6023                    |r| {
6024                        let r: getStakeUpdateAtIndexReturn = r.into();
6025                        r._0
6026                    },
6027                )
6028            }
6029            #[inline]
6030            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6031                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6032                    data,
6033                )
6034                .map(|r| {
6035                    let r: getStakeUpdateAtIndexReturn = r.into();
6036                    r._0
6037                })
6038            }
6039        }
6040    };
6041    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6042    /**Function with signature `getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)` and selector `0xdd9846b9`.
6043    ```solidity
6044    function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32);
6045    ```*/
6046    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6047    #[derive(Clone)]
6048    pub struct getStakeUpdateIndexAtBlockNumberCall {
6049        #[allow(missing_docs)]
6050        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
6051        #[allow(missing_docs)]
6052        pub quorumNumber: u8,
6053        #[allow(missing_docs)]
6054        pub blockNumber: u32,
6055    }
6056    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6057    ///Container type for the return parameters of the [`getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)`](getStakeUpdateIndexAtBlockNumberCall) function.
6058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6059    #[derive(Clone)]
6060    pub struct getStakeUpdateIndexAtBlockNumberReturn {
6061        #[allow(missing_docs)]
6062        pub _0: u32,
6063    }
6064    #[allow(
6065        non_camel_case_types,
6066        non_snake_case,
6067        clippy::pub_underscore_fields,
6068        clippy::style
6069    )]
6070    const _: () = {
6071        use alloy::sol_types as alloy_sol_types;
6072        {
6073            #[doc(hidden)]
6074            type UnderlyingSolTuple<'a> = (
6075                alloy::sol_types::sol_data::FixedBytes<32>,
6076                alloy::sol_types::sol_data::Uint<8>,
6077                alloy::sol_types::sol_data::Uint<32>,
6078            );
6079            #[doc(hidden)]
6080            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>, u8, u32);
6081            #[cfg(test)]
6082            #[allow(dead_code, unreachable_patterns)]
6083            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6084                match _t {
6085                    alloy_sol_types::private::AssertTypeEq::<
6086                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6087                    >(_) => {}
6088                }
6089            }
6090            #[automatically_derived]
6091            #[doc(hidden)]
6092            impl ::core::convert::From<getStakeUpdateIndexAtBlockNumberCall> for UnderlyingRustTuple<'_> {
6093                fn from(value: getStakeUpdateIndexAtBlockNumberCall) -> Self {
6094                    (value.operatorId, value.quorumNumber, value.blockNumber)
6095                }
6096            }
6097            #[automatically_derived]
6098            #[doc(hidden)]
6099            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeUpdateIndexAtBlockNumberCall {
6100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6101                    Self {
6102                        operatorId: tuple.0,
6103                        quorumNumber: tuple.1,
6104                        blockNumber: tuple.2,
6105                    }
6106                }
6107            }
6108        }
6109        {
6110            #[doc(hidden)]
6111            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6112            #[doc(hidden)]
6113            type UnderlyingRustTuple<'a> = (u32,);
6114            #[cfg(test)]
6115            #[allow(dead_code, unreachable_patterns)]
6116            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6117                match _t {
6118                    alloy_sol_types::private::AssertTypeEq::<
6119                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6120                    >(_) => {}
6121                }
6122            }
6123            #[automatically_derived]
6124            #[doc(hidden)]
6125            impl ::core::convert::From<getStakeUpdateIndexAtBlockNumberReturn> for UnderlyingRustTuple<'_> {
6126                fn from(value: getStakeUpdateIndexAtBlockNumberReturn) -> Self {
6127                    (value._0,)
6128                }
6129            }
6130            #[automatically_derived]
6131            #[doc(hidden)]
6132            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeUpdateIndexAtBlockNumberReturn {
6133                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6134                    Self { _0: tuple.0 }
6135                }
6136            }
6137        }
6138        #[automatically_derived]
6139        impl alloy_sol_types::SolCall for getStakeUpdateIndexAtBlockNumberCall {
6140            type Parameters<'a> = (
6141                alloy::sol_types::sol_data::FixedBytes<32>,
6142                alloy::sol_types::sol_data::Uint<8>,
6143                alloy::sol_types::sol_data::Uint<32>,
6144            );
6145            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6146            type Return = u32;
6147            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6148            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6149            const SIGNATURE: &'static str =
6150                "getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)";
6151            const SELECTOR: [u8; 4] = [221u8, 152u8, 70u8, 185u8];
6152            #[inline]
6153            fn new<'a>(
6154                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6155            ) -> Self {
6156                tuple.into()
6157            }
6158            #[inline]
6159            fn tokenize(&self) -> Self::Token<'_> {
6160                (
6161                    <alloy::sol_types::sol_data::FixedBytes<
6162                        32,
6163                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6164                    <alloy::sol_types::sol_data::Uint<
6165                        8,
6166                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6167                    <alloy::sol_types::sol_data::Uint<
6168                        32,
6169                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
6170                )
6171            }
6172            #[inline]
6173            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6174                (
6175                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
6176                        ret,
6177                    ),
6178                )
6179            }
6180            #[inline]
6181            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6182                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6183                    |r| {
6184                        let r: getStakeUpdateIndexAtBlockNumberReturn = r.into();
6185                        r._0
6186                    },
6187                )
6188            }
6189            #[inline]
6190            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6191                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6192                    data,
6193                )
6194                .map(|r| {
6195                    let r: getStakeUpdateIndexAtBlockNumberReturn = r.into();
6196                    r._0
6197                })
6198            }
6199        }
6200    };
6201    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6202    /**Function with signature `getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)` and selector `0xc8294c56`.
6203    ```solidity
6204    function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96);
6205    ```*/
6206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6207    #[derive(Clone)]
6208    pub struct getTotalStakeAtBlockNumberFromIndexCall {
6209        #[allow(missing_docs)]
6210        pub quorumNumber: u8,
6211        #[allow(missing_docs)]
6212        pub blockNumber: u32,
6213        #[allow(missing_docs)]
6214        pub index: alloy::sol_types::private::primitives::aliases::U256,
6215    }
6216    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6217    ///Container type for the return parameters of the [`getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)`](getTotalStakeAtBlockNumberFromIndexCall) function.
6218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6219    #[derive(Clone)]
6220    pub struct getTotalStakeAtBlockNumberFromIndexReturn {
6221        #[allow(missing_docs)]
6222        pub _0: alloy::sol_types::private::primitives::aliases::U96,
6223    }
6224    #[allow(
6225        non_camel_case_types,
6226        non_snake_case,
6227        clippy::pub_underscore_fields,
6228        clippy::style
6229    )]
6230    const _: () = {
6231        use alloy::sol_types as alloy_sol_types;
6232        {
6233            #[doc(hidden)]
6234            type UnderlyingSolTuple<'a> = (
6235                alloy::sol_types::sol_data::Uint<8>,
6236                alloy::sol_types::sol_data::Uint<32>,
6237                alloy::sol_types::sol_data::Uint<256>,
6238            );
6239            #[doc(hidden)]
6240            type UnderlyingRustTuple<'a> = (
6241                u8,
6242                u32,
6243                alloy::sol_types::private::primitives::aliases::U256,
6244            );
6245            #[cfg(test)]
6246            #[allow(dead_code, unreachable_patterns)]
6247            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6248                match _t {
6249                    alloy_sol_types::private::AssertTypeEq::<
6250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6251                    >(_) => {}
6252                }
6253            }
6254            #[automatically_derived]
6255            #[doc(hidden)]
6256            impl ::core::convert::From<getTotalStakeAtBlockNumberFromIndexCall> for UnderlyingRustTuple<'_> {
6257                fn from(value: getTotalStakeAtBlockNumberFromIndexCall) -> Self {
6258                    (value.quorumNumber, value.blockNumber, value.index)
6259                }
6260            }
6261            #[automatically_derived]
6262            #[doc(hidden)]
6263            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeAtBlockNumberFromIndexCall {
6264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6265                    Self {
6266                        quorumNumber: tuple.0,
6267                        blockNumber: tuple.1,
6268                        index: tuple.2,
6269                    }
6270                }
6271            }
6272        }
6273        {
6274            #[doc(hidden)]
6275            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
6276            #[doc(hidden)]
6277            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
6278            #[cfg(test)]
6279            #[allow(dead_code, unreachable_patterns)]
6280            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6281                match _t {
6282                    alloy_sol_types::private::AssertTypeEq::<
6283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6284                    >(_) => {}
6285                }
6286            }
6287            #[automatically_derived]
6288            #[doc(hidden)]
6289            impl ::core::convert::From<getTotalStakeAtBlockNumberFromIndexReturn> for UnderlyingRustTuple<'_> {
6290                fn from(value: getTotalStakeAtBlockNumberFromIndexReturn) -> Self {
6291                    (value._0,)
6292                }
6293            }
6294            #[automatically_derived]
6295            #[doc(hidden)]
6296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeAtBlockNumberFromIndexReturn {
6297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6298                    Self { _0: tuple.0 }
6299                }
6300            }
6301        }
6302        #[automatically_derived]
6303        impl alloy_sol_types::SolCall for getTotalStakeAtBlockNumberFromIndexCall {
6304            type Parameters<'a> = (
6305                alloy::sol_types::sol_data::Uint<8>,
6306                alloy::sol_types::sol_data::Uint<32>,
6307                alloy::sol_types::sol_data::Uint<256>,
6308            );
6309            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6310            type Return = alloy::sol_types::private::primitives::aliases::U96;
6311            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
6312            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6313            const SIGNATURE: &'static str =
6314                "getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)";
6315            const SELECTOR: [u8; 4] = [200u8, 41u8, 76u8, 86u8];
6316            #[inline]
6317            fn new<'a>(
6318                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6319            ) -> Self {
6320                tuple.into()
6321            }
6322            #[inline]
6323            fn tokenize(&self) -> Self::Token<'_> {
6324                (
6325                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
6326                        &self.quorumNumber,
6327                    ),
6328                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
6329                        &self.blockNumber,
6330                    ),
6331                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6332                        &self.index,
6333                    ),
6334                )
6335            }
6336            #[inline]
6337            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6338                (
6339                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
6340                        ret,
6341                    ),
6342                )
6343            }
6344            #[inline]
6345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6346                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6347                    |r| {
6348                        let r: getTotalStakeAtBlockNumberFromIndexReturn = r.into();
6349                        r._0
6350                    },
6351                )
6352            }
6353            #[inline]
6354            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6355                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6356                    data,
6357                )
6358                .map(|r| {
6359                    let r: getTotalStakeAtBlockNumberFromIndexReturn = r.into();
6360                    r._0
6361                })
6362            }
6363        }
6364    };
6365    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6366    /**Function with signature `getTotalStakeHistoryLength(uint8)` and selector `0x0491b41c`.
6367    ```solidity
6368    function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256);
6369    ```*/
6370    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6371    #[derive(Clone)]
6372    pub struct getTotalStakeHistoryLengthCall {
6373        #[allow(missing_docs)]
6374        pub quorumNumber: u8,
6375    }
6376    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6377    ///Container type for the return parameters of the [`getTotalStakeHistoryLength(uint8)`](getTotalStakeHistoryLengthCall) function.
6378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6379    #[derive(Clone)]
6380    pub struct getTotalStakeHistoryLengthReturn {
6381        #[allow(missing_docs)]
6382        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6383    }
6384    #[allow(
6385        non_camel_case_types,
6386        non_snake_case,
6387        clippy::pub_underscore_fields,
6388        clippy::style
6389    )]
6390    const _: () = {
6391        use alloy::sol_types as alloy_sol_types;
6392        {
6393            #[doc(hidden)]
6394            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6395            #[doc(hidden)]
6396            type UnderlyingRustTuple<'a> = (u8,);
6397            #[cfg(test)]
6398            #[allow(dead_code, unreachable_patterns)]
6399            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6400                match _t {
6401                    alloy_sol_types::private::AssertTypeEq::<
6402                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6403                    >(_) => {}
6404                }
6405            }
6406            #[automatically_derived]
6407            #[doc(hidden)]
6408            impl ::core::convert::From<getTotalStakeHistoryLengthCall> for UnderlyingRustTuple<'_> {
6409                fn from(value: getTotalStakeHistoryLengthCall) -> Self {
6410                    (value.quorumNumber,)
6411                }
6412            }
6413            #[automatically_derived]
6414            #[doc(hidden)]
6415            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeHistoryLengthCall {
6416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6417                    Self {
6418                        quorumNumber: tuple.0,
6419                    }
6420                }
6421            }
6422        }
6423        {
6424            #[doc(hidden)]
6425            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6426            #[doc(hidden)]
6427            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6428            #[cfg(test)]
6429            #[allow(dead_code, unreachable_patterns)]
6430            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6431                match _t {
6432                    alloy_sol_types::private::AssertTypeEq::<
6433                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6434                    >(_) => {}
6435                }
6436            }
6437            #[automatically_derived]
6438            #[doc(hidden)]
6439            impl ::core::convert::From<getTotalStakeHistoryLengthReturn> for UnderlyingRustTuple<'_> {
6440                fn from(value: getTotalStakeHistoryLengthReturn) -> Self {
6441                    (value._0,)
6442                }
6443            }
6444            #[automatically_derived]
6445            #[doc(hidden)]
6446            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeHistoryLengthReturn {
6447                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6448                    Self { _0: tuple.0 }
6449                }
6450            }
6451        }
6452        #[automatically_derived]
6453        impl alloy_sol_types::SolCall for getTotalStakeHistoryLengthCall {
6454            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6455            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6456            type Return = alloy::sol_types::private::primitives::aliases::U256;
6457            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6458            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6459            const SIGNATURE: &'static str = "getTotalStakeHistoryLength(uint8)";
6460            const SELECTOR: [u8; 4] = [4u8, 145u8, 180u8, 28u8];
6461            #[inline]
6462            fn new<'a>(
6463                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6464            ) -> Self {
6465                tuple.into()
6466            }
6467            #[inline]
6468            fn tokenize(&self) -> Self::Token<'_> {
6469                (
6470                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
6471                        &self.quorumNumber,
6472                    ),
6473                )
6474            }
6475            #[inline]
6476            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6477                (
6478                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6479                        ret,
6480                    ),
6481                )
6482            }
6483            #[inline]
6484            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6485                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6486                    |r| {
6487                        let r: getTotalStakeHistoryLengthReturn = r.into();
6488                        r._0
6489                    },
6490                )
6491            }
6492            #[inline]
6493            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6494                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6495                    data,
6496                )
6497                .map(|r| {
6498                    let r: getTotalStakeHistoryLengthReturn = r.into();
6499                    r._0
6500                })
6501            }
6502        }
6503    };
6504    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6505    /**Function with signature `getTotalStakeIndicesAtBlockNumber(uint32,bytes)` and selector `0x81c07502`.
6506    ```solidity
6507    function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory);
6508    ```*/
6509    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6510    #[derive(Clone)]
6511    pub struct getTotalStakeIndicesAtBlockNumberCall {
6512        #[allow(missing_docs)]
6513        pub blockNumber: u32,
6514        #[allow(missing_docs)]
6515        pub quorumNumbers: alloy::sol_types::private::Bytes,
6516    }
6517    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6518    ///Container type for the return parameters of the [`getTotalStakeIndicesAtBlockNumber(uint32,bytes)`](getTotalStakeIndicesAtBlockNumberCall) function.
6519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6520    #[derive(Clone)]
6521    pub struct getTotalStakeIndicesAtBlockNumberReturn {
6522        #[allow(missing_docs)]
6523        pub _0: alloy::sol_types::private::Vec<u32>,
6524    }
6525    #[allow(
6526        non_camel_case_types,
6527        non_snake_case,
6528        clippy::pub_underscore_fields,
6529        clippy::style
6530    )]
6531    const _: () = {
6532        use alloy::sol_types as alloy_sol_types;
6533        {
6534            #[doc(hidden)]
6535            type UnderlyingSolTuple<'a> = (
6536                alloy::sol_types::sol_data::Uint<32>,
6537                alloy::sol_types::sol_data::Bytes,
6538            );
6539            #[doc(hidden)]
6540            type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes);
6541            #[cfg(test)]
6542            #[allow(dead_code, unreachable_patterns)]
6543            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6544                match _t {
6545                    alloy_sol_types::private::AssertTypeEq::<
6546                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6547                    >(_) => {}
6548                }
6549            }
6550            #[automatically_derived]
6551            #[doc(hidden)]
6552            impl ::core::convert::From<getTotalStakeIndicesAtBlockNumberCall> for UnderlyingRustTuple<'_> {
6553                fn from(value: getTotalStakeIndicesAtBlockNumberCall) -> Self {
6554                    (value.blockNumber, value.quorumNumbers)
6555                }
6556            }
6557            #[automatically_derived]
6558            #[doc(hidden)]
6559            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeIndicesAtBlockNumberCall {
6560                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6561                    Self {
6562                        blockNumber: tuple.0,
6563                        quorumNumbers: tuple.1,
6564                    }
6565                }
6566            }
6567        }
6568        {
6569            #[doc(hidden)]
6570            type UnderlyingSolTuple<'a> =
6571                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,);
6572            #[doc(hidden)]
6573            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<u32>,);
6574            #[cfg(test)]
6575            #[allow(dead_code, unreachable_patterns)]
6576            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6577                match _t {
6578                    alloy_sol_types::private::AssertTypeEq::<
6579                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6580                    >(_) => {}
6581                }
6582            }
6583            #[automatically_derived]
6584            #[doc(hidden)]
6585            impl ::core::convert::From<getTotalStakeIndicesAtBlockNumberReturn> for UnderlyingRustTuple<'_> {
6586                fn from(value: getTotalStakeIndicesAtBlockNumberReturn) -> Self {
6587                    (value._0,)
6588                }
6589            }
6590            #[automatically_derived]
6591            #[doc(hidden)]
6592            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeIndicesAtBlockNumberReturn {
6593                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6594                    Self { _0: tuple.0 }
6595                }
6596            }
6597        }
6598        #[automatically_derived]
6599        impl alloy_sol_types::SolCall for getTotalStakeIndicesAtBlockNumberCall {
6600            type Parameters<'a> = (
6601                alloy::sol_types::sol_data::Uint<32>,
6602                alloy::sol_types::sol_data::Bytes,
6603            );
6604            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6605            type Return = alloy::sol_types::private::Vec<u32>;
6606            type ReturnTuple<'a> =
6607                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,);
6608            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6609            const SIGNATURE: &'static str = "getTotalStakeIndicesAtBlockNumber(uint32,bytes)";
6610            const SELECTOR: [u8; 4] = [129u8, 192u8, 117u8, 2u8];
6611            #[inline]
6612            fn new<'a>(
6613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6614            ) -> Self {
6615                tuple.into()
6616            }
6617            #[inline]
6618            fn tokenize(&self) -> Self::Token<'_> {
6619                (
6620                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
6621                        &self.blockNumber,
6622                    ),
6623                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6624                        &self.quorumNumbers,
6625                    ),
6626                )
6627            }
6628            #[inline]
6629            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6630                (<alloy::sol_types::sol_data::Array<
6631                    alloy::sol_types::sol_data::Uint<32>,
6632                > as alloy_sol_types::SolType>::tokenize(ret),)
6633            }
6634            #[inline]
6635            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6636                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6637                    |r| {
6638                        let r: getTotalStakeIndicesAtBlockNumberReturn = r.into();
6639                        r._0
6640                    },
6641                )
6642            }
6643            #[inline]
6644            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6645                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6646                    data,
6647                )
6648                .map(|r| {
6649                    let r: getTotalStakeIndicesAtBlockNumberReturn = r.into();
6650                    r._0
6651                })
6652            }
6653        }
6654    };
6655    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6656    /**Function with signature `getTotalStakeUpdateAtIndex(uint8,uint256)` and selector `0xb6904b78`.
6657    ```solidity
6658    function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
6659    ```*/
6660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6661    #[derive(Clone)]
6662    pub struct getTotalStakeUpdateAtIndexCall {
6663        #[allow(missing_docs)]
6664        pub quorumNumber: u8,
6665        #[allow(missing_docs)]
6666        pub index: alloy::sol_types::private::primitives::aliases::U256,
6667    }
6668    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6669    ///Container type for the return parameters of the [`getTotalStakeUpdateAtIndex(uint8,uint256)`](getTotalStakeUpdateAtIndexCall) function.
6670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6671    #[derive(Clone)]
6672    pub struct getTotalStakeUpdateAtIndexReturn {
6673        #[allow(missing_docs)]
6674        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6675    }
6676    #[allow(
6677        non_camel_case_types,
6678        non_snake_case,
6679        clippy::pub_underscore_fields,
6680        clippy::style
6681    )]
6682    const _: () = {
6683        use alloy::sol_types as alloy_sol_types;
6684        {
6685            #[doc(hidden)]
6686            type UnderlyingSolTuple<'a> = (
6687                alloy::sol_types::sol_data::Uint<8>,
6688                alloy::sol_types::sol_data::Uint<256>,
6689            );
6690            #[doc(hidden)]
6691            type UnderlyingRustTuple<'a> =
6692                (u8, alloy::sol_types::private::primitives::aliases::U256);
6693            #[cfg(test)]
6694            #[allow(dead_code, unreachable_patterns)]
6695            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6696                match _t {
6697                    alloy_sol_types::private::AssertTypeEq::<
6698                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6699                    >(_) => {}
6700                }
6701            }
6702            #[automatically_derived]
6703            #[doc(hidden)]
6704            impl ::core::convert::From<getTotalStakeUpdateAtIndexCall> for UnderlyingRustTuple<'_> {
6705                fn from(value: getTotalStakeUpdateAtIndexCall) -> Self {
6706                    (value.quorumNumber, value.index)
6707                }
6708            }
6709            #[automatically_derived]
6710            #[doc(hidden)]
6711            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeUpdateAtIndexCall {
6712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6713                    Self {
6714                        quorumNumber: tuple.0,
6715                        index: tuple.1,
6716                    }
6717                }
6718            }
6719        }
6720        {
6721            #[doc(hidden)]
6722            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
6723            #[doc(hidden)]
6724            type UnderlyingRustTuple<'a> =
6725                (<IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,);
6726            #[cfg(test)]
6727            #[allow(dead_code, unreachable_patterns)]
6728            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6729                match _t {
6730                    alloy_sol_types::private::AssertTypeEq::<
6731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6732                    >(_) => {}
6733                }
6734            }
6735            #[automatically_derived]
6736            #[doc(hidden)]
6737            impl ::core::convert::From<getTotalStakeUpdateAtIndexReturn> for UnderlyingRustTuple<'_> {
6738                fn from(value: getTotalStakeUpdateAtIndexReturn) -> Self {
6739                    (value._0,)
6740                }
6741            }
6742            #[automatically_derived]
6743            #[doc(hidden)]
6744            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTotalStakeUpdateAtIndexReturn {
6745                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6746                    Self { _0: tuple.0 }
6747                }
6748            }
6749        }
6750        #[automatically_derived]
6751        impl alloy_sol_types::SolCall for getTotalStakeUpdateAtIndexCall {
6752            type Parameters<'a> = (
6753                alloy::sol_types::sol_data::Uint<8>,
6754                alloy::sol_types::sol_data::Uint<256>,
6755            );
6756            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6757            type Return = <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType;
6758            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
6759            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6760            const SIGNATURE: &'static str = "getTotalStakeUpdateAtIndex(uint8,uint256)";
6761            const SELECTOR: [u8; 4] = [182u8, 144u8, 75u8, 120u8];
6762            #[inline]
6763            fn new<'a>(
6764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6765            ) -> Self {
6766                tuple.into()
6767            }
6768            #[inline]
6769            fn tokenize(&self) -> Self::Token<'_> {
6770                (
6771                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
6772                        &self.quorumNumber,
6773                    ),
6774                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6775                        &self.index,
6776                    ),
6777                )
6778            }
6779            #[inline]
6780            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6781                (<IStakeRegistryTypes::StakeUpdate as alloy_sol_types::SolType>::tokenize(ret),)
6782            }
6783            #[inline]
6784            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6785                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6786                    |r| {
6787                        let r: getTotalStakeUpdateAtIndexReturn = r.into();
6788                        r._0
6789                    },
6790                )
6791            }
6792            #[inline]
6793            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6794                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6795                    data,
6796                )
6797                .map(|r| {
6798                    let r: getTotalStakeUpdateAtIndexReturn = r.into();
6799                    r._0
6800                })
6801            }
6802        }
6803    };
6804    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6805    /**Function with signature `initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])` and selector `0x75d4173a`.
6806    ```solidity
6807    function initializeDelegatedStakeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
6808    ```*/
6809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6810    #[derive(Clone)]
6811    pub struct initializeDelegatedStakeQuorumCall {
6812        #[allow(missing_docs)]
6813        pub quorumNumber: u8,
6814        #[allow(missing_docs)]
6815        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
6816        #[allow(missing_docs)]
6817        pub _strategyParams: alloy::sol_types::private::Vec<
6818            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6819        >,
6820    }
6821    ///Container type for the return parameters of the [`initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])`](initializeDelegatedStakeQuorumCall) function.
6822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6823    #[derive(Clone)]
6824    pub struct initializeDelegatedStakeQuorumReturn {}
6825    #[allow(
6826        non_camel_case_types,
6827        non_snake_case,
6828        clippy::pub_underscore_fields,
6829        clippy::style
6830    )]
6831    const _: () = {
6832        use alloy::sol_types as alloy_sol_types;
6833        {
6834            #[doc(hidden)]
6835            type UnderlyingSolTuple<'a> = (
6836                alloy::sol_types::sol_data::Uint<8>,
6837                alloy::sol_types::sol_data::Uint<96>,
6838                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
6839            );
6840            #[doc(hidden)]
6841            type UnderlyingRustTuple<'a> = (
6842                u8,
6843                alloy::sol_types::private::primitives::aliases::U96,
6844                alloy::sol_types::private::Vec<
6845                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6846                >,
6847            );
6848            #[cfg(test)]
6849            #[allow(dead_code, unreachable_patterns)]
6850            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6851                match _t {
6852                    alloy_sol_types::private::AssertTypeEq::<
6853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6854                    >(_) => {}
6855                }
6856            }
6857            #[automatically_derived]
6858            #[doc(hidden)]
6859            impl ::core::convert::From<initializeDelegatedStakeQuorumCall> for UnderlyingRustTuple<'_> {
6860                fn from(value: initializeDelegatedStakeQuorumCall) -> Self {
6861                    (
6862                        value.quorumNumber,
6863                        value.minimumStake,
6864                        value._strategyParams,
6865                    )
6866                }
6867            }
6868            #[automatically_derived]
6869            #[doc(hidden)]
6870            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeDelegatedStakeQuorumCall {
6871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6872                    Self {
6873                        quorumNumber: tuple.0,
6874                        minimumStake: tuple.1,
6875                        _strategyParams: tuple.2,
6876                    }
6877                }
6878            }
6879        }
6880        {
6881            #[doc(hidden)]
6882            type UnderlyingSolTuple<'a> = ();
6883            #[doc(hidden)]
6884            type UnderlyingRustTuple<'a> = ();
6885            #[cfg(test)]
6886            #[allow(dead_code, unreachable_patterns)]
6887            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6888                match _t {
6889                    alloy_sol_types::private::AssertTypeEq::<
6890                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6891                    >(_) => {}
6892                }
6893            }
6894            #[automatically_derived]
6895            #[doc(hidden)]
6896            impl ::core::convert::From<initializeDelegatedStakeQuorumReturn> for UnderlyingRustTuple<'_> {
6897                fn from(value: initializeDelegatedStakeQuorumReturn) -> Self {
6898                    ()
6899                }
6900            }
6901            #[automatically_derived]
6902            #[doc(hidden)]
6903            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeDelegatedStakeQuorumReturn {
6904                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6905                    Self {}
6906                }
6907            }
6908        }
6909        impl initializeDelegatedStakeQuorumReturn {
6910            fn _tokenize(
6911                &self,
6912            ) -> <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::ReturnToken<'_>
6913            {
6914                ()
6915            }
6916        }
6917        #[automatically_derived]
6918        impl alloy_sol_types::SolCall for initializeDelegatedStakeQuorumCall {
6919            type Parameters<'a> = (
6920                alloy::sol_types::sol_data::Uint<8>,
6921                alloy::sol_types::sol_data::Uint<96>,
6922                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
6923            );
6924            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6925            type Return = initializeDelegatedStakeQuorumReturn;
6926            type ReturnTuple<'a> = ();
6927            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6928            const SIGNATURE: &'static str =
6929                "initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])";
6930            const SELECTOR: [u8; 4] = [117u8, 212u8, 23u8, 58u8];
6931            #[inline]
6932            fn new<'a>(
6933                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6934            ) -> Self {
6935                tuple.into()
6936            }
6937            #[inline]
6938            fn tokenize(&self) -> Self::Token<'_> {
6939                (
6940                    <alloy::sol_types::sol_data::Uint<
6941                        8,
6942                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6943                    <alloy::sol_types::sol_data::Uint<
6944                        96,
6945                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
6946                    <alloy::sol_types::sol_data::Array<
6947                        IStakeRegistryTypes::StrategyParams,
6948                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
6949                )
6950            }
6951            #[inline]
6952            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6953                initializeDelegatedStakeQuorumReturn::_tokenize(ret)
6954            }
6955            #[inline]
6956            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6957                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
6958                    .map(Into::into)
6959            }
6960            #[inline]
6961            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6962                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6963                    data,
6964                )
6965                .map(Into::into)
6966            }
6967        }
6968    };
6969    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6970    /**Function with signature `initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])` and selector `0xcc5a7c20`.
6971    ```solidity
6972    function initializeSlashableStakeQuorum(uint8 quorumNumber, uint96 minimumStake, uint32 lookAheadPeriod, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
6973    ```*/
6974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6975    #[derive(Clone)]
6976    pub struct initializeSlashableStakeQuorumCall {
6977        #[allow(missing_docs)]
6978        pub quorumNumber: u8,
6979        #[allow(missing_docs)]
6980        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
6981        #[allow(missing_docs)]
6982        pub lookAheadPeriod: u32,
6983        #[allow(missing_docs)]
6984        pub _strategyParams: alloy::sol_types::private::Vec<
6985            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6986        >,
6987    }
6988    ///Container type for the return parameters of the [`initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])`](initializeSlashableStakeQuorumCall) function.
6989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6990    #[derive(Clone)]
6991    pub struct initializeSlashableStakeQuorumReturn {}
6992    #[allow(
6993        non_camel_case_types,
6994        non_snake_case,
6995        clippy::pub_underscore_fields,
6996        clippy::style
6997    )]
6998    const _: () = {
6999        use alloy::sol_types as alloy_sol_types;
7000        {
7001            #[doc(hidden)]
7002            type UnderlyingSolTuple<'a> = (
7003                alloy::sol_types::sol_data::Uint<8>,
7004                alloy::sol_types::sol_data::Uint<96>,
7005                alloy::sol_types::sol_data::Uint<32>,
7006                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7007            );
7008            #[doc(hidden)]
7009            type UnderlyingRustTuple<'a> = (
7010                u8,
7011                alloy::sol_types::private::primitives::aliases::U96,
7012                u32,
7013                alloy::sol_types::private::Vec<
7014                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
7015                >,
7016            );
7017            #[cfg(test)]
7018            #[allow(dead_code, unreachable_patterns)]
7019            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7020                match _t {
7021                    alloy_sol_types::private::AssertTypeEq::<
7022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7023                    >(_) => {}
7024                }
7025            }
7026            #[automatically_derived]
7027            #[doc(hidden)]
7028            impl ::core::convert::From<initializeSlashableStakeQuorumCall> for UnderlyingRustTuple<'_> {
7029                fn from(value: initializeSlashableStakeQuorumCall) -> Self {
7030                    (
7031                        value.quorumNumber,
7032                        value.minimumStake,
7033                        value.lookAheadPeriod,
7034                        value._strategyParams,
7035                    )
7036                }
7037            }
7038            #[automatically_derived]
7039            #[doc(hidden)]
7040            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeSlashableStakeQuorumCall {
7041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7042                    Self {
7043                        quorumNumber: tuple.0,
7044                        minimumStake: tuple.1,
7045                        lookAheadPeriod: tuple.2,
7046                        _strategyParams: tuple.3,
7047                    }
7048                }
7049            }
7050        }
7051        {
7052            #[doc(hidden)]
7053            type UnderlyingSolTuple<'a> = ();
7054            #[doc(hidden)]
7055            type UnderlyingRustTuple<'a> = ();
7056            #[cfg(test)]
7057            #[allow(dead_code, unreachable_patterns)]
7058            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7059                match _t {
7060                    alloy_sol_types::private::AssertTypeEq::<
7061                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7062                    >(_) => {}
7063                }
7064            }
7065            #[automatically_derived]
7066            #[doc(hidden)]
7067            impl ::core::convert::From<initializeSlashableStakeQuorumReturn> for UnderlyingRustTuple<'_> {
7068                fn from(value: initializeSlashableStakeQuorumReturn) -> Self {
7069                    ()
7070                }
7071            }
7072            #[automatically_derived]
7073            #[doc(hidden)]
7074            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeSlashableStakeQuorumReturn {
7075                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7076                    Self {}
7077                }
7078            }
7079        }
7080        impl initializeSlashableStakeQuorumReturn {
7081            fn _tokenize(
7082                &self,
7083            ) -> <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::ReturnToken<'_>
7084            {
7085                ()
7086            }
7087        }
7088        #[automatically_derived]
7089        impl alloy_sol_types::SolCall for initializeSlashableStakeQuorumCall {
7090            type Parameters<'a> = (
7091                alloy::sol_types::sol_data::Uint<8>,
7092                alloy::sol_types::sol_data::Uint<96>,
7093                alloy::sol_types::sol_data::Uint<32>,
7094                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7095            );
7096            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7097            type Return = initializeSlashableStakeQuorumReturn;
7098            type ReturnTuple<'a> = ();
7099            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7100            const SIGNATURE: &'static str =
7101                "initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])";
7102            const SELECTOR: [u8; 4] = [204u8, 90u8, 124u8, 32u8];
7103            #[inline]
7104            fn new<'a>(
7105                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7106            ) -> Self {
7107                tuple.into()
7108            }
7109            #[inline]
7110            fn tokenize(&self) -> Self::Token<'_> {
7111                (
7112                    <alloy::sol_types::sol_data::Uint<
7113                        8,
7114                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7115                    <alloy::sol_types::sol_data::Uint<
7116                        96,
7117                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
7118                    <alloy::sol_types::sol_data::Uint<
7119                        32,
7120                    > as alloy_sol_types::SolType>::tokenize(&self.lookAheadPeriod),
7121                    <alloy::sol_types::sol_data::Array<
7122                        IStakeRegistryTypes::StrategyParams,
7123                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
7124                )
7125            }
7126            #[inline]
7127            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7128                initializeSlashableStakeQuorumReturn::_tokenize(ret)
7129            }
7130            #[inline]
7131            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7132                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7133                    .map(Into::into)
7134            }
7135            #[inline]
7136            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7137                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7138                    data,
7139                )
7140                .map(Into::into)
7141            }
7142        }
7143    };
7144    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7145    /**Function with signature `minimumStakeForQuorum(uint8)` and selector `0xc46778a5`.
7146    ```solidity
7147    function minimumStakeForQuorum(uint8) external view returns (uint96);
7148    ```*/
7149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7150    #[derive(Clone)]
7151    pub struct minimumStakeForQuorumCall(pub u8);
7152    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7153    ///Container type for the return parameters of the [`minimumStakeForQuorum(uint8)`](minimumStakeForQuorumCall) function.
7154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7155    #[derive(Clone)]
7156    pub struct minimumStakeForQuorumReturn {
7157        #[allow(missing_docs)]
7158        pub _0: alloy::sol_types::private::primitives::aliases::U96,
7159    }
7160    #[allow(
7161        non_camel_case_types,
7162        non_snake_case,
7163        clippy::pub_underscore_fields,
7164        clippy::style
7165    )]
7166    const _: () = {
7167        use alloy::sol_types as alloy_sol_types;
7168        {
7169            #[doc(hidden)]
7170            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
7171            #[doc(hidden)]
7172            type UnderlyingRustTuple<'a> = (u8,);
7173            #[cfg(test)]
7174            #[allow(dead_code, unreachable_patterns)]
7175            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7176                match _t {
7177                    alloy_sol_types::private::AssertTypeEq::<
7178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7179                    >(_) => {}
7180                }
7181            }
7182            #[automatically_derived]
7183            #[doc(hidden)]
7184            impl ::core::convert::From<minimumStakeForQuorumCall> for UnderlyingRustTuple<'_> {
7185                fn from(value: minimumStakeForQuorumCall) -> Self {
7186                    (value.0,)
7187                }
7188            }
7189            #[automatically_derived]
7190            #[doc(hidden)]
7191            impl ::core::convert::From<UnderlyingRustTuple<'_>> for minimumStakeForQuorumCall {
7192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7193                    Self(tuple.0)
7194                }
7195            }
7196        }
7197        {
7198            #[doc(hidden)]
7199            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
7200            #[doc(hidden)]
7201            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
7202            #[cfg(test)]
7203            #[allow(dead_code, unreachable_patterns)]
7204            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7205                match _t {
7206                    alloy_sol_types::private::AssertTypeEq::<
7207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7208                    >(_) => {}
7209                }
7210            }
7211            #[automatically_derived]
7212            #[doc(hidden)]
7213            impl ::core::convert::From<minimumStakeForQuorumReturn> for UnderlyingRustTuple<'_> {
7214                fn from(value: minimumStakeForQuorumReturn) -> Self {
7215                    (value._0,)
7216                }
7217            }
7218            #[automatically_derived]
7219            #[doc(hidden)]
7220            impl ::core::convert::From<UnderlyingRustTuple<'_>> for minimumStakeForQuorumReturn {
7221                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7222                    Self { _0: tuple.0 }
7223                }
7224            }
7225        }
7226        #[automatically_derived]
7227        impl alloy_sol_types::SolCall for minimumStakeForQuorumCall {
7228            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
7229            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7230            type Return = alloy::sol_types::private::primitives::aliases::U96;
7231            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
7232            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7233            const SIGNATURE: &'static str = "minimumStakeForQuorum(uint8)";
7234            const SELECTOR: [u8; 4] = [196u8, 103u8, 120u8, 165u8];
7235            #[inline]
7236            fn new<'a>(
7237                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7238            ) -> Self {
7239                tuple.into()
7240            }
7241            #[inline]
7242            fn tokenize(&self) -> Self::Token<'_> {
7243                (
7244                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
7245                        &self.0,
7246                    ),
7247                )
7248            }
7249            #[inline]
7250            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7251                (
7252                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
7253                        ret,
7254                    ),
7255                )
7256            }
7257            #[inline]
7258            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7259                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7260                    |r| {
7261                        let r: minimumStakeForQuorumReturn = r.into();
7262                        r._0
7263                    },
7264                )
7265            }
7266            #[inline]
7267            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7268                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7269                    data,
7270                )
7271                .map(|r| {
7272                    let r: minimumStakeForQuorumReturn = r.into();
7273                    r._0
7274                })
7275            }
7276        }
7277    };
7278    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7279    /**Function with signature `modifyStrategyParams(uint8,uint256[],uint96[])` and selector `0x20b66298`.
7280    ```solidity
7281    function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external;
7282    ```*/
7283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7284    #[derive(Clone)]
7285    pub struct modifyStrategyParamsCall {
7286        #[allow(missing_docs)]
7287        pub quorumNumber: u8,
7288        #[allow(missing_docs)]
7289        pub strategyIndices:
7290            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
7291        #[allow(missing_docs)]
7292        pub newMultipliers:
7293            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
7294    }
7295    ///Container type for the return parameters of the [`modifyStrategyParams(uint8,uint256[],uint96[])`](modifyStrategyParamsCall) function.
7296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7297    #[derive(Clone)]
7298    pub struct modifyStrategyParamsReturn {}
7299    #[allow(
7300        non_camel_case_types,
7301        non_snake_case,
7302        clippy::pub_underscore_fields,
7303        clippy::style
7304    )]
7305    const _: () = {
7306        use alloy::sol_types as alloy_sol_types;
7307        {
7308            #[doc(hidden)]
7309            type UnderlyingSolTuple<'a> = (
7310                alloy::sol_types::sol_data::Uint<8>,
7311                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7312                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7313            );
7314            #[doc(hidden)]
7315            type UnderlyingRustTuple<'a> = (
7316                u8,
7317                alloy::sol_types::private::Vec<
7318                    alloy::sol_types::private::primitives::aliases::U256,
7319                >,
7320                alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
7321            );
7322            #[cfg(test)]
7323            #[allow(dead_code, unreachable_patterns)]
7324            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7325                match _t {
7326                    alloy_sol_types::private::AssertTypeEq::<
7327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7328                    >(_) => {}
7329                }
7330            }
7331            #[automatically_derived]
7332            #[doc(hidden)]
7333            impl ::core::convert::From<modifyStrategyParamsCall> for UnderlyingRustTuple<'_> {
7334                fn from(value: modifyStrategyParamsCall) -> Self {
7335                    (
7336                        value.quorumNumber,
7337                        value.strategyIndices,
7338                        value.newMultipliers,
7339                    )
7340                }
7341            }
7342            #[automatically_derived]
7343            #[doc(hidden)]
7344            impl ::core::convert::From<UnderlyingRustTuple<'_>> for modifyStrategyParamsCall {
7345                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7346                    Self {
7347                        quorumNumber: tuple.0,
7348                        strategyIndices: tuple.1,
7349                        newMultipliers: tuple.2,
7350                    }
7351                }
7352            }
7353        }
7354        {
7355            #[doc(hidden)]
7356            type UnderlyingSolTuple<'a> = ();
7357            #[doc(hidden)]
7358            type UnderlyingRustTuple<'a> = ();
7359            #[cfg(test)]
7360            #[allow(dead_code, unreachable_patterns)]
7361            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7362                match _t {
7363                    alloy_sol_types::private::AssertTypeEq::<
7364                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7365                    >(_) => {}
7366                }
7367            }
7368            #[automatically_derived]
7369            #[doc(hidden)]
7370            impl ::core::convert::From<modifyStrategyParamsReturn> for UnderlyingRustTuple<'_> {
7371                fn from(value: modifyStrategyParamsReturn) -> Self {
7372                    ()
7373                }
7374            }
7375            #[automatically_derived]
7376            #[doc(hidden)]
7377            impl ::core::convert::From<UnderlyingRustTuple<'_>> for modifyStrategyParamsReturn {
7378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7379                    Self {}
7380                }
7381            }
7382        }
7383        impl modifyStrategyParamsReturn {
7384            fn _tokenize(
7385                &self,
7386            ) -> <modifyStrategyParamsCall as alloy_sol_types::SolCall>::ReturnToken<'_>
7387            {
7388                ()
7389            }
7390        }
7391        #[automatically_derived]
7392        impl alloy_sol_types::SolCall for modifyStrategyParamsCall {
7393            type Parameters<'a> = (
7394                alloy::sol_types::sol_data::Uint<8>,
7395                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7396                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7397            );
7398            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7399            type Return = modifyStrategyParamsReturn;
7400            type ReturnTuple<'a> = ();
7401            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7402            const SIGNATURE: &'static str = "modifyStrategyParams(uint8,uint256[],uint96[])";
7403            const SELECTOR: [u8; 4] = [32u8, 182u8, 98u8, 152u8];
7404            #[inline]
7405            fn new<'a>(
7406                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7407            ) -> Self {
7408                tuple.into()
7409            }
7410            #[inline]
7411            fn tokenize(&self) -> Self::Token<'_> {
7412                (
7413                    <alloy::sol_types::sol_data::Uint<
7414                        8,
7415                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7416                    <alloy::sol_types::sol_data::Array<
7417                        alloy::sol_types::sol_data::Uint<256>,
7418                    > as alloy_sol_types::SolType>::tokenize(&self.strategyIndices),
7419                    <alloy::sol_types::sol_data::Array<
7420                        alloy::sol_types::sol_data::Uint<96>,
7421                    > as alloy_sol_types::SolType>::tokenize(&self.newMultipliers),
7422                )
7423            }
7424            #[inline]
7425            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7426                modifyStrategyParamsReturn::_tokenize(ret)
7427            }
7428            #[inline]
7429            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7430                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7431                    .map(Into::into)
7432            }
7433            #[inline]
7434            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7435                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7436                    data,
7437                )
7438                .map(Into::into)
7439            }
7440        }
7441    };
7442    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7443    /**Function with signature `registerOperator(address,bytes32,bytes)` and selector `0x25504777`.
7444    ```solidity
7445    function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory);
7446    ```*/
7447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7448    #[derive(Clone)]
7449    pub struct registerOperatorCall {
7450        #[allow(missing_docs)]
7451        pub operator: alloy::sol_types::private::Address,
7452        #[allow(missing_docs)]
7453        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
7454        #[allow(missing_docs)]
7455        pub quorumNumbers: alloy::sol_types::private::Bytes,
7456    }
7457    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7458    ///Container type for the return parameters of the [`registerOperator(address,bytes32,bytes)`](registerOperatorCall) function.
7459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7460    #[derive(Clone)]
7461    pub struct registerOperatorReturn {
7462        #[allow(missing_docs)]
7463        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
7464        #[allow(missing_docs)]
7465        pub _1: alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
7466    }
7467    #[allow(
7468        non_camel_case_types,
7469        non_snake_case,
7470        clippy::pub_underscore_fields,
7471        clippy::style
7472    )]
7473    const _: () = {
7474        use alloy::sol_types as alloy_sol_types;
7475        {
7476            #[doc(hidden)]
7477            type UnderlyingSolTuple<'a> = (
7478                alloy::sol_types::sol_data::Address,
7479                alloy::sol_types::sol_data::FixedBytes<32>,
7480                alloy::sol_types::sol_data::Bytes,
7481            );
7482            #[doc(hidden)]
7483            type UnderlyingRustTuple<'a> = (
7484                alloy::sol_types::private::Address,
7485                alloy::sol_types::private::FixedBytes<32>,
7486                alloy::sol_types::private::Bytes,
7487            );
7488            #[cfg(test)]
7489            #[allow(dead_code, unreachable_patterns)]
7490            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7491                match _t {
7492                    alloy_sol_types::private::AssertTypeEq::<
7493                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7494                    >(_) => {}
7495                }
7496            }
7497            #[automatically_derived]
7498            #[doc(hidden)]
7499            impl ::core::convert::From<registerOperatorCall> for UnderlyingRustTuple<'_> {
7500                fn from(value: registerOperatorCall) -> Self {
7501                    (value.operator, value.operatorId, value.quorumNumbers)
7502                }
7503            }
7504            #[automatically_derived]
7505            #[doc(hidden)]
7506            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerOperatorCall {
7507                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7508                    Self {
7509                        operator: tuple.0,
7510                        operatorId: tuple.1,
7511                        quorumNumbers: tuple.2,
7512                    }
7513                }
7514            }
7515        }
7516        {
7517            #[doc(hidden)]
7518            type UnderlyingSolTuple<'a> = (
7519                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7520                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7521            );
7522            #[doc(hidden)]
7523            type UnderlyingRustTuple<'a> = (
7524                alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
7525                alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
7526            );
7527            #[cfg(test)]
7528            #[allow(dead_code, unreachable_patterns)]
7529            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7530                match _t {
7531                    alloy_sol_types::private::AssertTypeEq::<
7532                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7533                    >(_) => {}
7534                }
7535            }
7536            #[automatically_derived]
7537            #[doc(hidden)]
7538            impl ::core::convert::From<registerOperatorReturn> for UnderlyingRustTuple<'_> {
7539                fn from(value: registerOperatorReturn) -> Self {
7540                    (value._0, value._1)
7541                }
7542            }
7543            #[automatically_derived]
7544            #[doc(hidden)]
7545            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerOperatorReturn {
7546                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7547                    Self {
7548                        _0: tuple.0,
7549                        _1: tuple.1,
7550                    }
7551                }
7552            }
7553        }
7554        impl registerOperatorReturn {
7555            fn _tokenize(
7556                &self,
7557            ) -> <registerOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7558                (
7559                    <alloy::sol_types::sol_data::Array<
7560                        alloy::sol_types::sol_data::Uint<96>,
7561                    > as alloy_sol_types::SolType>::tokenize(&self._0),
7562                    <alloy::sol_types::sol_data::Array<
7563                        alloy::sol_types::sol_data::Uint<96>,
7564                    > as alloy_sol_types::SolType>::tokenize(&self._1),
7565                )
7566            }
7567        }
7568        #[automatically_derived]
7569        impl alloy_sol_types::SolCall for registerOperatorCall {
7570            type Parameters<'a> = (
7571                alloy::sol_types::sol_data::Address,
7572                alloy::sol_types::sol_data::FixedBytes<32>,
7573                alloy::sol_types::sol_data::Bytes,
7574            );
7575            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7576            type Return = registerOperatorReturn;
7577            type ReturnTuple<'a> = (
7578                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7579                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7580            );
7581            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7582            const SIGNATURE: &'static str = "registerOperator(address,bytes32,bytes)";
7583            const SELECTOR: [u8; 4] = [37u8, 80u8, 71u8, 119u8];
7584            #[inline]
7585            fn new<'a>(
7586                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7587            ) -> Self {
7588                tuple.into()
7589            }
7590            #[inline]
7591            fn tokenize(&self) -> Self::Token<'_> {
7592                (
7593                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7594                        &self.operator,
7595                    ),
7596                    <alloy::sol_types::sol_data::FixedBytes<
7597                        32,
7598                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
7599                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7600                        &self.quorumNumbers,
7601                    ),
7602                )
7603            }
7604            #[inline]
7605            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7606                registerOperatorReturn::_tokenize(ret)
7607            }
7608            #[inline]
7609            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7610                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7611                    .map(Into::into)
7612            }
7613            #[inline]
7614            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7615                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7616                    data,
7617                )
7618                .map(Into::into)
7619            }
7620        }
7621    };
7622    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7623    /**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
7624    ```solidity
7625    function registryCoordinator() external view returns (address);
7626    ```*/
7627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7628    #[derive(Clone)]
7629    pub struct registryCoordinatorCall;
7630    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7631    ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
7632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7633    #[derive(Clone)]
7634    pub struct registryCoordinatorReturn {
7635        #[allow(missing_docs)]
7636        pub _0: alloy::sol_types::private::Address,
7637    }
7638    #[allow(
7639        non_camel_case_types,
7640        non_snake_case,
7641        clippy::pub_underscore_fields,
7642        clippy::style
7643    )]
7644    const _: () = {
7645        use alloy::sol_types as alloy_sol_types;
7646        {
7647            #[doc(hidden)]
7648            type UnderlyingSolTuple<'a> = ();
7649            #[doc(hidden)]
7650            type UnderlyingRustTuple<'a> = ();
7651            #[cfg(test)]
7652            #[allow(dead_code, unreachable_patterns)]
7653            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7654                match _t {
7655                    alloy_sol_types::private::AssertTypeEq::<
7656                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7657                    >(_) => {}
7658                }
7659            }
7660            #[automatically_derived]
7661            #[doc(hidden)]
7662            impl ::core::convert::From<registryCoordinatorCall> for UnderlyingRustTuple<'_> {
7663                fn from(value: registryCoordinatorCall) -> Self {
7664                    ()
7665                }
7666            }
7667            #[automatically_derived]
7668            #[doc(hidden)]
7669            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorCall {
7670                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7671                    Self
7672                }
7673            }
7674        }
7675        {
7676            #[doc(hidden)]
7677            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7678            #[doc(hidden)]
7679            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7680            #[cfg(test)]
7681            #[allow(dead_code, unreachable_patterns)]
7682            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7683                match _t {
7684                    alloy_sol_types::private::AssertTypeEq::<
7685                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7686                    >(_) => {}
7687                }
7688            }
7689            #[automatically_derived]
7690            #[doc(hidden)]
7691            impl ::core::convert::From<registryCoordinatorReturn> for UnderlyingRustTuple<'_> {
7692                fn from(value: registryCoordinatorReturn) -> Self {
7693                    (value._0,)
7694                }
7695            }
7696            #[automatically_derived]
7697            #[doc(hidden)]
7698            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorReturn {
7699                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7700                    Self { _0: tuple.0 }
7701                }
7702            }
7703        }
7704        #[automatically_derived]
7705        impl alloy_sol_types::SolCall for registryCoordinatorCall {
7706            type Parameters<'a> = ();
7707            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7708            type Return = alloy::sol_types::private::Address;
7709            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7710            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7711            const SIGNATURE: &'static str = "registryCoordinator()";
7712            const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
7713            #[inline]
7714            fn new<'a>(
7715                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7716            ) -> Self {
7717                tuple.into()
7718            }
7719            #[inline]
7720            fn tokenize(&self) -> Self::Token<'_> {
7721                ()
7722            }
7723            #[inline]
7724            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7725                (
7726                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7727                        ret,
7728                    ),
7729                )
7730            }
7731            #[inline]
7732            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7733                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7734                    |r| {
7735                        let r: registryCoordinatorReturn = r.into();
7736                        r._0
7737                    },
7738                )
7739            }
7740            #[inline]
7741            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7742                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7743                    data,
7744                )
7745                .map(|r| {
7746                    let r: registryCoordinatorReturn = r.into();
7747                    r._0
7748                })
7749            }
7750        }
7751    };
7752    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7753    /**Function with signature `removeStrategies(uint8,uint256[])` and selector `0x5f1f2d77`.
7754    ```solidity
7755    function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external;
7756    ```*/
7757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7758    #[derive(Clone)]
7759    pub struct removeStrategiesCall {
7760        #[allow(missing_docs)]
7761        pub quorumNumber: u8,
7762        #[allow(missing_docs)]
7763        pub indicesToRemove:
7764            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
7765    }
7766    ///Container type for the return parameters of the [`removeStrategies(uint8,uint256[])`](removeStrategiesCall) function.
7767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7768    #[derive(Clone)]
7769    pub struct removeStrategiesReturn {}
7770    #[allow(
7771        non_camel_case_types,
7772        non_snake_case,
7773        clippy::pub_underscore_fields,
7774        clippy::style
7775    )]
7776    const _: () = {
7777        use alloy::sol_types as alloy_sol_types;
7778        {
7779            #[doc(hidden)]
7780            type UnderlyingSolTuple<'a> = (
7781                alloy::sol_types::sol_data::Uint<8>,
7782                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7783            );
7784            #[doc(hidden)]
7785            type UnderlyingRustTuple<'a> = (
7786                u8,
7787                alloy::sol_types::private::Vec<
7788                    alloy::sol_types::private::primitives::aliases::U256,
7789                >,
7790            );
7791            #[cfg(test)]
7792            #[allow(dead_code, unreachable_patterns)]
7793            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7794                match _t {
7795                    alloy_sol_types::private::AssertTypeEq::<
7796                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7797                    >(_) => {}
7798                }
7799            }
7800            #[automatically_derived]
7801            #[doc(hidden)]
7802            impl ::core::convert::From<removeStrategiesCall> for UnderlyingRustTuple<'_> {
7803                fn from(value: removeStrategiesCall) -> Self {
7804                    (value.quorumNumber, value.indicesToRemove)
7805                }
7806            }
7807            #[automatically_derived]
7808            #[doc(hidden)]
7809            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeStrategiesCall {
7810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7811                    Self {
7812                        quorumNumber: tuple.0,
7813                        indicesToRemove: tuple.1,
7814                    }
7815                }
7816            }
7817        }
7818        {
7819            #[doc(hidden)]
7820            type UnderlyingSolTuple<'a> = ();
7821            #[doc(hidden)]
7822            type UnderlyingRustTuple<'a> = ();
7823            #[cfg(test)]
7824            #[allow(dead_code, unreachable_patterns)]
7825            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7826                match _t {
7827                    alloy_sol_types::private::AssertTypeEq::<
7828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7829                    >(_) => {}
7830                }
7831            }
7832            #[automatically_derived]
7833            #[doc(hidden)]
7834            impl ::core::convert::From<removeStrategiesReturn> for UnderlyingRustTuple<'_> {
7835                fn from(value: removeStrategiesReturn) -> Self {
7836                    ()
7837                }
7838            }
7839            #[automatically_derived]
7840            #[doc(hidden)]
7841            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeStrategiesReturn {
7842                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7843                    Self {}
7844                }
7845            }
7846        }
7847        impl removeStrategiesReturn {
7848            fn _tokenize(
7849                &self,
7850            ) -> <removeStrategiesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7851                ()
7852            }
7853        }
7854        #[automatically_derived]
7855        impl alloy_sol_types::SolCall for removeStrategiesCall {
7856            type Parameters<'a> = (
7857                alloy::sol_types::sol_data::Uint<8>,
7858                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7859            );
7860            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7861            type Return = removeStrategiesReturn;
7862            type ReturnTuple<'a> = ();
7863            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7864            const SIGNATURE: &'static str = "removeStrategies(uint8,uint256[])";
7865            const SELECTOR: [u8; 4] = [95u8, 31u8, 45u8, 119u8];
7866            #[inline]
7867            fn new<'a>(
7868                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7869            ) -> Self {
7870                tuple.into()
7871            }
7872            #[inline]
7873            fn tokenize(&self) -> Self::Token<'_> {
7874                (
7875                    <alloy::sol_types::sol_data::Uint<
7876                        8,
7877                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7878                    <alloy::sol_types::sol_data::Array<
7879                        alloy::sol_types::sol_data::Uint<256>,
7880                    > as alloy_sol_types::SolType>::tokenize(&self.indicesToRemove),
7881                )
7882            }
7883            #[inline]
7884            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7885                removeStrategiesReturn::_tokenize(ret)
7886            }
7887            #[inline]
7888            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7889                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7890                    .map(Into::into)
7891            }
7892            #[inline]
7893            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7894                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7895                    data,
7896                )
7897                .map(Into::into)
7898            }
7899        }
7900    };
7901    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7902    /**Function with signature `setMinimumStakeForQuorum(uint8,uint96)` and selector `0xbc9a40c3`.
7903    ```solidity
7904    function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external;
7905    ```*/
7906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7907    #[derive(Clone)]
7908    pub struct setMinimumStakeForQuorumCall {
7909        #[allow(missing_docs)]
7910        pub quorumNumber: u8,
7911        #[allow(missing_docs)]
7912        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
7913    }
7914    ///Container type for the return parameters of the [`setMinimumStakeForQuorum(uint8,uint96)`](setMinimumStakeForQuorumCall) function.
7915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7916    #[derive(Clone)]
7917    pub struct setMinimumStakeForQuorumReturn {}
7918    #[allow(
7919        non_camel_case_types,
7920        non_snake_case,
7921        clippy::pub_underscore_fields,
7922        clippy::style
7923    )]
7924    const _: () = {
7925        use alloy::sol_types as alloy_sol_types;
7926        {
7927            #[doc(hidden)]
7928            type UnderlyingSolTuple<'a> = (
7929                alloy::sol_types::sol_data::Uint<8>,
7930                alloy::sol_types::sol_data::Uint<96>,
7931            );
7932            #[doc(hidden)]
7933            type UnderlyingRustTuple<'a> =
7934                (u8, alloy::sol_types::private::primitives::aliases::U96);
7935            #[cfg(test)]
7936            #[allow(dead_code, unreachable_patterns)]
7937            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7938                match _t {
7939                    alloy_sol_types::private::AssertTypeEq::<
7940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7941                    >(_) => {}
7942                }
7943            }
7944            #[automatically_derived]
7945            #[doc(hidden)]
7946            impl ::core::convert::From<setMinimumStakeForQuorumCall> for UnderlyingRustTuple<'_> {
7947                fn from(value: setMinimumStakeForQuorumCall) -> Self {
7948                    (value.quorumNumber, value.minimumStake)
7949                }
7950            }
7951            #[automatically_derived]
7952            #[doc(hidden)]
7953            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setMinimumStakeForQuorumCall {
7954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7955                    Self {
7956                        quorumNumber: tuple.0,
7957                        minimumStake: tuple.1,
7958                    }
7959                }
7960            }
7961        }
7962        {
7963            #[doc(hidden)]
7964            type UnderlyingSolTuple<'a> = ();
7965            #[doc(hidden)]
7966            type UnderlyingRustTuple<'a> = ();
7967            #[cfg(test)]
7968            #[allow(dead_code, unreachable_patterns)]
7969            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7970                match _t {
7971                    alloy_sol_types::private::AssertTypeEq::<
7972                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7973                    >(_) => {}
7974                }
7975            }
7976            #[automatically_derived]
7977            #[doc(hidden)]
7978            impl ::core::convert::From<setMinimumStakeForQuorumReturn> for UnderlyingRustTuple<'_> {
7979                fn from(value: setMinimumStakeForQuorumReturn) -> Self {
7980                    ()
7981                }
7982            }
7983            #[automatically_derived]
7984            #[doc(hidden)]
7985            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setMinimumStakeForQuorumReturn {
7986                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7987                    Self {}
7988                }
7989            }
7990        }
7991        impl setMinimumStakeForQuorumReturn {
7992            fn _tokenize(
7993                &self,
7994            ) -> <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::ReturnToken<'_>
7995            {
7996                ()
7997            }
7998        }
7999        #[automatically_derived]
8000        impl alloy_sol_types::SolCall for setMinimumStakeForQuorumCall {
8001            type Parameters<'a> = (
8002                alloy::sol_types::sol_data::Uint<8>,
8003                alloy::sol_types::sol_data::Uint<96>,
8004            );
8005            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8006            type Return = setMinimumStakeForQuorumReturn;
8007            type ReturnTuple<'a> = ();
8008            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8009            const SIGNATURE: &'static str = "setMinimumStakeForQuorum(uint8,uint96)";
8010            const SELECTOR: [u8; 4] = [188u8, 154u8, 64u8, 195u8];
8011            #[inline]
8012            fn new<'a>(
8013                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8014            ) -> Self {
8015                tuple.into()
8016            }
8017            #[inline]
8018            fn tokenize(&self) -> Self::Token<'_> {
8019                (
8020                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8021                        &self.quorumNumber,
8022                    ),
8023                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
8024                        &self.minimumStake,
8025                    ),
8026                )
8027            }
8028            #[inline]
8029            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8030                setMinimumStakeForQuorumReturn::_tokenize(ret)
8031            }
8032            #[inline]
8033            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8034                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8035                    .map(Into::into)
8036            }
8037            #[inline]
8038            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8039                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8040                    data,
8041                )
8042                .map(Into::into)
8043            }
8044        }
8045    };
8046    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8047    /**Function with signature `setSlashableStakeLookahead(uint8,uint32)` and selector `0xe086adb3`.
8048    ```solidity
8049    function setSlashableStakeLookahead(uint8 quorumNumber, uint32 _lookAheadBlocks) external;
8050    ```*/
8051    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8052    #[derive(Clone)]
8053    pub struct setSlashableStakeLookaheadCall {
8054        #[allow(missing_docs)]
8055        pub quorumNumber: u8,
8056        #[allow(missing_docs)]
8057        pub _lookAheadBlocks: u32,
8058    }
8059    ///Container type for the return parameters of the [`setSlashableStakeLookahead(uint8,uint32)`](setSlashableStakeLookaheadCall) function.
8060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8061    #[derive(Clone)]
8062    pub struct setSlashableStakeLookaheadReturn {}
8063    #[allow(
8064        non_camel_case_types,
8065        non_snake_case,
8066        clippy::pub_underscore_fields,
8067        clippy::style
8068    )]
8069    const _: () = {
8070        use alloy::sol_types as alloy_sol_types;
8071        {
8072            #[doc(hidden)]
8073            type UnderlyingSolTuple<'a> = (
8074                alloy::sol_types::sol_data::Uint<8>,
8075                alloy::sol_types::sol_data::Uint<32>,
8076            );
8077            #[doc(hidden)]
8078            type UnderlyingRustTuple<'a> = (u8, u32);
8079            #[cfg(test)]
8080            #[allow(dead_code, unreachable_patterns)]
8081            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8082                match _t {
8083                    alloy_sol_types::private::AssertTypeEq::<
8084                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8085                    >(_) => {}
8086                }
8087            }
8088            #[automatically_derived]
8089            #[doc(hidden)]
8090            impl ::core::convert::From<setSlashableStakeLookaheadCall> for UnderlyingRustTuple<'_> {
8091                fn from(value: setSlashableStakeLookaheadCall) -> Self {
8092                    (value.quorumNumber, value._lookAheadBlocks)
8093                }
8094            }
8095            #[automatically_derived]
8096            #[doc(hidden)]
8097            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setSlashableStakeLookaheadCall {
8098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8099                    Self {
8100                        quorumNumber: tuple.0,
8101                        _lookAheadBlocks: tuple.1,
8102                    }
8103                }
8104            }
8105        }
8106        {
8107            #[doc(hidden)]
8108            type UnderlyingSolTuple<'a> = ();
8109            #[doc(hidden)]
8110            type UnderlyingRustTuple<'a> = ();
8111            #[cfg(test)]
8112            #[allow(dead_code, unreachable_patterns)]
8113            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8114                match _t {
8115                    alloy_sol_types::private::AssertTypeEq::<
8116                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8117                    >(_) => {}
8118                }
8119            }
8120            #[automatically_derived]
8121            #[doc(hidden)]
8122            impl ::core::convert::From<setSlashableStakeLookaheadReturn> for UnderlyingRustTuple<'_> {
8123                fn from(value: setSlashableStakeLookaheadReturn) -> Self {
8124                    ()
8125                }
8126            }
8127            #[automatically_derived]
8128            #[doc(hidden)]
8129            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setSlashableStakeLookaheadReturn {
8130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8131                    Self {}
8132                }
8133            }
8134        }
8135        impl setSlashableStakeLookaheadReturn {
8136            fn _tokenize(
8137                &self,
8138            ) -> <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::ReturnToken<'_>
8139            {
8140                ()
8141            }
8142        }
8143        #[automatically_derived]
8144        impl alloy_sol_types::SolCall for setSlashableStakeLookaheadCall {
8145            type Parameters<'a> = (
8146                alloy::sol_types::sol_data::Uint<8>,
8147                alloy::sol_types::sol_data::Uint<32>,
8148            );
8149            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8150            type Return = setSlashableStakeLookaheadReturn;
8151            type ReturnTuple<'a> = ();
8152            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8153            const SIGNATURE: &'static str = "setSlashableStakeLookahead(uint8,uint32)";
8154            const SELECTOR: [u8; 4] = [224u8, 134u8, 173u8, 179u8];
8155            #[inline]
8156            fn new<'a>(
8157                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8158            ) -> Self {
8159                tuple.into()
8160            }
8161            #[inline]
8162            fn tokenize(&self) -> Self::Token<'_> {
8163                (
8164                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8165                        &self.quorumNumber,
8166                    ),
8167                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
8168                        &self._lookAheadBlocks,
8169                    ),
8170                )
8171            }
8172            #[inline]
8173            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8174                setSlashableStakeLookaheadReturn::_tokenize(ret)
8175            }
8176            #[inline]
8177            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8178                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8179                    .map(Into::into)
8180            }
8181            #[inline]
8182            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8183                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8184                    data,
8185                )
8186                .map(Into::into)
8187            }
8188        }
8189    };
8190    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8191    /**Function with signature `slashableStakeLookAheadPerQuorum(uint8)` and selector `0x9ab4d6ff`.
8192    ```solidity
8193    function slashableStakeLookAheadPerQuorum(uint8 quorumNumber) external view returns (uint32);
8194    ```*/
8195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8196    #[derive(Clone)]
8197    pub struct slashableStakeLookAheadPerQuorumCall {
8198        #[allow(missing_docs)]
8199        pub quorumNumber: u8,
8200    }
8201    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8202    ///Container type for the return parameters of the [`slashableStakeLookAheadPerQuorum(uint8)`](slashableStakeLookAheadPerQuorumCall) function.
8203    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8204    #[derive(Clone)]
8205    pub struct slashableStakeLookAheadPerQuorumReturn {
8206        #[allow(missing_docs)]
8207        pub _0: u32,
8208    }
8209    #[allow(
8210        non_camel_case_types,
8211        non_snake_case,
8212        clippy::pub_underscore_fields,
8213        clippy::style
8214    )]
8215    const _: () = {
8216        use alloy::sol_types as alloy_sol_types;
8217        {
8218            #[doc(hidden)]
8219            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8220            #[doc(hidden)]
8221            type UnderlyingRustTuple<'a> = (u8,);
8222            #[cfg(test)]
8223            #[allow(dead_code, unreachable_patterns)]
8224            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8225                match _t {
8226                    alloy_sol_types::private::AssertTypeEq::<
8227                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8228                    >(_) => {}
8229                }
8230            }
8231            #[automatically_derived]
8232            #[doc(hidden)]
8233            impl ::core::convert::From<slashableStakeLookAheadPerQuorumCall> for UnderlyingRustTuple<'_> {
8234                fn from(value: slashableStakeLookAheadPerQuorumCall) -> Self {
8235                    (value.quorumNumber,)
8236                }
8237            }
8238            #[automatically_derived]
8239            #[doc(hidden)]
8240            impl ::core::convert::From<UnderlyingRustTuple<'_>> for slashableStakeLookAheadPerQuorumCall {
8241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8242                    Self {
8243                        quorumNumber: tuple.0,
8244                    }
8245                }
8246            }
8247        }
8248        {
8249            #[doc(hidden)]
8250            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8251            #[doc(hidden)]
8252            type UnderlyingRustTuple<'a> = (u32,);
8253            #[cfg(test)]
8254            #[allow(dead_code, unreachable_patterns)]
8255            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8256                match _t {
8257                    alloy_sol_types::private::AssertTypeEq::<
8258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8259                    >(_) => {}
8260                }
8261            }
8262            #[automatically_derived]
8263            #[doc(hidden)]
8264            impl ::core::convert::From<slashableStakeLookAheadPerQuorumReturn> for UnderlyingRustTuple<'_> {
8265                fn from(value: slashableStakeLookAheadPerQuorumReturn) -> Self {
8266                    (value._0,)
8267                }
8268            }
8269            #[automatically_derived]
8270            #[doc(hidden)]
8271            impl ::core::convert::From<UnderlyingRustTuple<'_>> for slashableStakeLookAheadPerQuorumReturn {
8272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8273                    Self { _0: tuple.0 }
8274                }
8275            }
8276        }
8277        #[automatically_derived]
8278        impl alloy_sol_types::SolCall for slashableStakeLookAheadPerQuorumCall {
8279            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8280            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8281            type Return = u32;
8282            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8283            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8284            const SIGNATURE: &'static str = "slashableStakeLookAheadPerQuorum(uint8)";
8285            const SELECTOR: [u8; 4] = [154u8, 180u8, 214u8, 255u8];
8286            #[inline]
8287            fn new<'a>(
8288                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8289            ) -> Self {
8290                tuple.into()
8291            }
8292            #[inline]
8293            fn tokenize(&self) -> Self::Token<'_> {
8294                (
8295                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8296                        &self.quorumNumber,
8297                    ),
8298                )
8299            }
8300            #[inline]
8301            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8302                (
8303                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
8304                        ret,
8305                    ),
8306                )
8307            }
8308            #[inline]
8309            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8310                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8311                    |r| {
8312                        let r: slashableStakeLookAheadPerQuorumReturn = r.into();
8313                        r._0
8314                    },
8315                )
8316            }
8317            #[inline]
8318            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8319                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8320                    data,
8321                )
8322                .map(|r| {
8323                    let r: slashableStakeLookAheadPerQuorumReturn = r.into();
8324                    r._0
8325                })
8326            }
8327        }
8328    };
8329    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8330    /**Function with signature `stakeTypePerQuorum(uint8)` and selector `0x697fbd93`.
8331    ```solidity
8332    function stakeTypePerQuorum(uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeType);
8333    ```*/
8334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8335    #[derive(Clone)]
8336    pub struct stakeTypePerQuorumCall {
8337        #[allow(missing_docs)]
8338        pub quorumNumber: u8,
8339    }
8340    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8341    ///Container type for the return parameters of the [`stakeTypePerQuorum(uint8)`](stakeTypePerQuorumCall) function.
8342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8343    #[derive(Clone)]
8344    pub struct stakeTypePerQuorumReturn {
8345        #[allow(missing_docs)]
8346        pub _0: <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
8347    }
8348    #[allow(
8349        non_camel_case_types,
8350        non_snake_case,
8351        clippy::pub_underscore_fields,
8352        clippy::style
8353    )]
8354    const _: () = {
8355        use alloy::sol_types as alloy_sol_types;
8356        {
8357            #[doc(hidden)]
8358            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8359            #[doc(hidden)]
8360            type UnderlyingRustTuple<'a> = (u8,);
8361            #[cfg(test)]
8362            #[allow(dead_code, unreachable_patterns)]
8363            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8364                match _t {
8365                    alloy_sol_types::private::AssertTypeEq::<
8366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8367                    >(_) => {}
8368                }
8369            }
8370            #[automatically_derived]
8371            #[doc(hidden)]
8372            impl ::core::convert::From<stakeTypePerQuorumCall> for UnderlyingRustTuple<'_> {
8373                fn from(value: stakeTypePerQuorumCall) -> Self {
8374                    (value.quorumNumber,)
8375                }
8376            }
8377            #[automatically_derived]
8378            #[doc(hidden)]
8379            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeTypePerQuorumCall {
8380                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8381                    Self {
8382                        quorumNumber: tuple.0,
8383                    }
8384                }
8385            }
8386        }
8387        {
8388            #[doc(hidden)]
8389            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeType,);
8390            #[doc(hidden)]
8391            type UnderlyingRustTuple<'a> =
8392                (<IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,);
8393            #[cfg(test)]
8394            #[allow(dead_code, unreachable_patterns)]
8395            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8396                match _t {
8397                    alloy_sol_types::private::AssertTypeEq::<
8398                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8399                    >(_) => {}
8400                }
8401            }
8402            #[automatically_derived]
8403            #[doc(hidden)]
8404            impl ::core::convert::From<stakeTypePerQuorumReturn> for UnderlyingRustTuple<'_> {
8405                fn from(value: stakeTypePerQuorumReturn) -> Self {
8406                    (value._0,)
8407                }
8408            }
8409            #[automatically_derived]
8410            #[doc(hidden)]
8411            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeTypePerQuorumReturn {
8412                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8413                    Self { _0: tuple.0 }
8414                }
8415            }
8416        }
8417        #[automatically_derived]
8418        impl alloy_sol_types::SolCall for stakeTypePerQuorumCall {
8419            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8420            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8421            type Return = <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType;
8422            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeType,);
8423            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8424            const SIGNATURE: &'static str = "stakeTypePerQuorum(uint8)";
8425            const SELECTOR: [u8; 4] = [105u8, 127u8, 189u8, 147u8];
8426            #[inline]
8427            fn new<'a>(
8428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8429            ) -> Self {
8430                tuple.into()
8431            }
8432            #[inline]
8433            fn tokenize(&self) -> Self::Token<'_> {
8434                (
8435                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8436                        &self.quorumNumber,
8437                    ),
8438                )
8439            }
8440            #[inline]
8441            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8442                (<IStakeRegistryTypes::StakeType as alloy_sol_types::SolType>::tokenize(ret),)
8443            }
8444            #[inline]
8445            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8446                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8447                    |r| {
8448                        let r: stakeTypePerQuorumReturn = r.into();
8449                        r._0
8450                    },
8451                )
8452            }
8453            #[inline]
8454            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8455                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8456                    data,
8457                )
8458                .map(|r| {
8459                    let r: stakeTypePerQuorumReturn = r.into();
8460                    r._0
8461                })
8462            }
8463        }
8464    };
8465    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8466    /**Function with signature `strategiesPerQuorum(uint8,uint256)` and selector `0x9f3ccf65`.
8467    ```solidity
8468    function strategiesPerQuorum(uint8 quorumNumber, uint256) external view returns (address);
8469    ```*/
8470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8471    #[derive(Clone)]
8472    pub struct strategiesPerQuorumCall {
8473        #[allow(missing_docs)]
8474        pub quorumNumber: u8,
8475        #[allow(missing_docs)]
8476        pub _1: alloy::sol_types::private::primitives::aliases::U256,
8477    }
8478    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8479    ///Container type for the return parameters of the [`strategiesPerQuorum(uint8,uint256)`](strategiesPerQuorumCall) function.
8480    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8481    #[derive(Clone)]
8482    pub struct strategiesPerQuorumReturn {
8483        #[allow(missing_docs)]
8484        pub _0: alloy::sol_types::private::Address,
8485    }
8486    #[allow(
8487        non_camel_case_types,
8488        non_snake_case,
8489        clippy::pub_underscore_fields,
8490        clippy::style
8491    )]
8492    const _: () = {
8493        use alloy::sol_types as alloy_sol_types;
8494        {
8495            #[doc(hidden)]
8496            type UnderlyingSolTuple<'a> = (
8497                alloy::sol_types::sol_data::Uint<8>,
8498                alloy::sol_types::sol_data::Uint<256>,
8499            );
8500            #[doc(hidden)]
8501            type UnderlyingRustTuple<'a> =
8502                (u8, alloy::sol_types::private::primitives::aliases::U256);
8503            #[cfg(test)]
8504            #[allow(dead_code, unreachable_patterns)]
8505            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8506                match _t {
8507                    alloy_sol_types::private::AssertTypeEq::<
8508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8509                    >(_) => {}
8510                }
8511            }
8512            #[automatically_derived]
8513            #[doc(hidden)]
8514            impl ::core::convert::From<strategiesPerQuorumCall> for UnderlyingRustTuple<'_> {
8515                fn from(value: strategiesPerQuorumCall) -> Self {
8516                    (value.quorumNumber, value._1)
8517                }
8518            }
8519            #[automatically_derived]
8520            #[doc(hidden)]
8521            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategiesPerQuorumCall {
8522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8523                    Self {
8524                        quorumNumber: tuple.0,
8525                        _1: tuple.1,
8526                    }
8527                }
8528            }
8529        }
8530        {
8531            #[doc(hidden)]
8532            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8533            #[doc(hidden)]
8534            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8535            #[cfg(test)]
8536            #[allow(dead_code, unreachable_patterns)]
8537            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8538                match _t {
8539                    alloy_sol_types::private::AssertTypeEq::<
8540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8541                    >(_) => {}
8542                }
8543            }
8544            #[automatically_derived]
8545            #[doc(hidden)]
8546            impl ::core::convert::From<strategiesPerQuorumReturn> for UnderlyingRustTuple<'_> {
8547                fn from(value: strategiesPerQuorumReturn) -> Self {
8548                    (value._0,)
8549                }
8550            }
8551            #[automatically_derived]
8552            #[doc(hidden)]
8553            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategiesPerQuorumReturn {
8554                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8555                    Self { _0: tuple.0 }
8556                }
8557            }
8558        }
8559        #[automatically_derived]
8560        impl alloy_sol_types::SolCall for strategiesPerQuorumCall {
8561            type Parameters<'a> = (
8562                alloy::sol_types::sol_data::Uint<8>,
8563                alloy::sol_types::sol_data::Uint<256>,
8564            );
8565            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8566            type Return = alloy::sol_types::private::Address;
8567            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8568            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8569            const SIGNATURE: &'static str = "strategiesPerQuorum(uint8,uint256)";
8570            const SELECTOR: [u8; 4] = [159u8, 60u8, 207u8, 101u8];
8571            #[inline]
8572            fn new<'a>(
8573                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8574            ) -> Self {
8575                tuple.into()
8576            }
8577            #[inline]
8578            fn tokenize(&self) -> Self::Token<'_> {
8579                (
8580                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8581                        &self.quorumNumber,
8582                    ),
8583                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8584                        &self._1,
8585                    ),
8586                )
8587            }
8588            #[inline]
8589            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8590                (
8591                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8592                        ret,
8593                    ),
8594                )
8595            }
8596            #[inline]
8597            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8598                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8599                    |r| {
8600                        let r: strategiesPerQuorumReturn = r.into();
8601                        r._0
8602                    },
8603                )
8604            }
8605            #[inline]
8606            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8607                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8608                    data,
8609                )
8610                .map(|r| {
8611                    let r: strategiesPerQuorumReturn = r.into();
8612                    r._0
8613                })
8614            }
8615        }
8616    };
8617    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8618    /**Function with signature `strategyParams(uint8,uint256)` and selector `0x08732461`.
8619    ```solidity
8620    function strategyParams(uint8 quorumNumber, uint256) external view returns (address strategy, uint96 multiplier);
8621    ```*/
8622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8623    #[derive(Clone)]
8624    pub struct strategyParamsCall {
8625        #[allow(missing_docs)]
8626        pub quorumNumber: u8,
8627        #[allow(missing_docs)]
8628        pub _1: alloy::sol_types::private::primitives::aliases::U256,
8629    }
8630    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8631    ///Container type for the return parameters of the [`strategyParams(uint8,uint256)`](strategyParamsCall) function.
8632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8633    #[derive(Clone)]
8634    pub struct strategyParamsReturn {
8635        #[allow(missing_docs)]
8636        pub strategy: alloy::sol_types::private::Address,
8637        #[allow(missing_docs)]
8638        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
8639    }
8640    #[allow(
8641        non_camel_case_types,
8642        non_snake_case,
8643        clippy::pub_underscore_fields,
8644        clippy::style
8645    )]
8646    const _: () = {
8647        use alloy::sol_types as alloy_sol_types;
8648        {
8649            #[doc(hidden)]
8650            type UnderlyingSolTuple<'a> = (
8651                alloy::sol_types::sol_data::Uint<8>,
8652                alloy::sol_types::sol_data::Uint<256>,
8653            );
8654            #[doc(hidden)]
8655            type UnderlyingRustTuple<'a> =
8656                (u8, alloy::sol_types::private::primitives::aliases::U256);
8657            #[cfg(test)]
8658            #[allow(dead_code, unreachable_patterns)]
8659            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8660                match _t {
8661                    alloy_sol_types::private::AssertTypeEq::<
8662                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8663                    >(_) => {}
8664                }
8665            }
8666            #[automatically_derived]
8667            #[doc(hidden)]
8668            impl ::core::convert::From<strategyParamsCall> for UnderlyingRustTuple<'_> {
8669                fn from(value: strategyParamsCall) -> Self {
8670                    (value.quorumNumber, value._1)
8671                }
8672            }
8673            #[automatically_derived]
8674            #[doc(hidden)]
8675            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsCall {
8676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8677                    Self {
8678                        quorumNumber: tuple.0,
8679                        _1: tuple.1,
8680                    }
8681                }
8682            }
8683        }
8684        {
8685            #[doc(hidden)]
8686            type UnderlyingSolTuple<'a> = (
8687                alloy::sol_types::sol_data::Address,
8688                alloy::sol_types::sol_data::Uint<96>,
8689            );
8690            #[doc(hidden)]
8691            type UnderlyingRustTuple<'a> = (
8692                alloy::sol_types::private::Address,
8693                alloy::sol_types::private::primitives::aliases::U96,
8694            );
8695            #[cfg(test)]
8696            #[allow(dead_code, unreachable_patterns)]
8697            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8698                match _t {
8699                    alloy_sol_types::private::AssertTypeEq::<
8700                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8701                    >(_) => {}
8702                }
8703            }
8704            #[automatically_derived]
8705            #[doc(hidden)]
8706            impl ::core::convert::From<strategyParamsReturn> for UnderlyingRustTuple<'_> {
8707                fn from(value: strategyParamsReturn) -> Self {
8708                    (value.strategy, value.multiplier)
8709                }
8710            }
8711            #[automatically_derived]
8712            #[doc(hidden)]
8713            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsReturn {
8714                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8715                    Self {
8716                        strategy: tuple.0,
8717                        multiplier: tuple.1,
8718                    }
8719                }
8720            }
8721        }
8722        impl strategyParamsReturn {
8723            fn _tokenize(
8724                &self,
8725            ) -> <strategyParamsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8726                (
8727                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8728                        &self.strategy,
8729                    ),
8730                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
8731                        &self.multiplier,
8732                    ),
8733                )
8734            }
8735        }
8736        #[automatically_derived]
8737        impl alloy_sol_types::SolCall for strategyParamsCall {
8738            type Parameters<'a> = (
8739                alloy::sol_types::sol_data::Uint<8>,
8740                alloy::sol_types::sol_data::Uint<256>,
8741            );
8742            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8743            type Return = strategyParamsReturn;
8744            type ReturnTuple<'a> = (
8745                alloy::sol_types::sol_data::Address,
8746                alloy::sol_types::sol_data::Uint<96>,
8747            );
8748            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8749            const SIGNATURE: &'static str = "strategyParams(uint8,uint256)";
8750            const SELECTOR: [u8; 4] = [8u8, 115u8, 36u8, 97u8];
8751            #[inline]
8752            fn new<'a>(
8753                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8754            ) -> Self {
8755                tuple.into()
8756            }
8757            #[inline]
8758            fn tokenize(&self) -> Self::Token<'_> {
8759                (
8760                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8761                        &self.quorumNumber,
8762                    ),
8763                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8764                        &self._1,
8765                    ),
8766                )
8767            }
8768            #[inline]
8769            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8770                strategyParamsReturn::_tokenize(ret)
8771            }
8772            #[inline]
8773            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8774                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8775                    .map(Into::into)
8776            }
8777            #[inline]
8778            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8779                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8780                    data,
8781                )
8782                .map(Into::into)
8783            }
8784        }
8785    };
8786    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8787    /**Function with signature `strategyParamsByIndex(uint8,uint256)` and selector `0xadc804da`.
8788    ```solidity
8789    function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StrategyParams memory);
8790    ```*/
8791    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8792    #[derive(Clone)]
8793    pub struct strategyParamsByIndexCall {
8794        #[allow(missing_docs)]
8795        pub quorumNumber: u8,
8796        #[allow(missing_docs)]
8797        pub index: alloy::sol_types::private::primitives::aliases::U256,
8798    }
8799    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8800    ///Container type for the return parameters of the [`strategyParamsByIndex(uint8,uint256)`](strategyParamsByIndexCall) function.
8801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8802    #[derive(Clone)]
8803    pub struct strategyParamsByIndexReturn {
8804        #[allow(missing_docs)]
8805        pub _0: <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
8806    }
8807    #[allow(
8808        non_camel_case_types,
8809        non_snake_case,
8810        clippy::pub_underscore_fields,
8811        clippy::style
8812    )]
8813    const _: () = {
8814        use alloy::sol_types as alloy_sol_types;
8815        {
8816            #[doc(hidden)]
8817            type UnderlyingSolTuple<'a> = (
8818                alloy::sol_types::sol_data::Uint<8>,
8819                alloy::sol_types::sol_data::Uint<256>,
8820            );
8821            #[doc(hidden)]
8822            type UnderlyingRustTuple<'a> =
8823                (u8, alloy::sol_types::private::primitives::aliases::U256);
8824            #[cfg(test)]
8825            #[allow(dead_code, unreachable_patterns)]
8826            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8827                match _t {
8828                    alloy_sol_types::private::AssertTypeEq::<
8829                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8830                    >(_) => {}
8831                }
8832            }
8833            #[automatically_derived]
8834            #[doc(hidden)]
8835            impl ::core::convert::From<strategyParamsByIndexCall> for UnderlyingRustTuple<'_> {
8836                fn from(value: strategyParamsByIndexCall) -> Self {
8837                    (value.quorumNumber, value.index)
8838                }
8839            }
8840            #[automatically_derived]
8841            #[doc(hidden)]
8842            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsByIndexCall {
8843                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8844                    Self {
8845                        quorumNumber: tuple.0,
8846                        index: tuple.1,
8847                    }
8848                }
8849            }
8850        }
8851        {
8852            #[doc(hidden)]
8853            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StrategyParams,);
8854            #[doc(hidden)]
8855            type UnderlyingRustTuple<'a> =
8856                (<IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,);
8857            #[cfg(test)]
8858            #[allow(dead_code, unreachable_patterns)]
8859            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8860                match _t {
8861                    alloy_sol_types::private::AssertTypeEq::<
8862                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8863                    >(_) => {}
8864                }
8865            }
8866            #[automatically_derived]
8867            #[doc(hidden)]
8868            impl ::core::convert::From<strategyParamsByIndexReturn> for UnderlyingRustTuple<'_> {
8869                fn from(value: strategyParamsByIndexReturn) -> Self {
8870                    (value._0,)
8871                }
8872            }
8873            #[automatically_derived]
8874            #[doc(hidden)]
8875            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsByIndexReturn {
8876                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8877                    Self { _0: tuple.0 }
8878                }
8879            }
8880        }
8881        #[automatically_derived]
8882        impl alloy_sol_types::SolCall for strategyParamsByIndexCall {
8883            type Parameters<'a> = (
8884                alloy::sol_types::sol_data::Uint<8>,
8885                alloy::sol_types::sol_data::Uint<256>,
8886            );
8887            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8888            type Return =
8889                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType;
8890            type ReturnTuple<'a> = (IStakeRegistryTypes::StrategyParams,);
8891            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8892            const SIGNATURE: &'static str = "strategyParamsByIndex(uint8,uint256)";
8893            const SELECTOR: [u8; 4] = [173u8, 200u8, 4u8, 218u8];
8894            #[inline]
8895            fn new<'a>(
8896                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8897            ) -> Self {
8898                tuple.into()
8899            }
8900            #[inline]
8901            fn tokenize(&self) -> Self::Token<'_> {
8902                (
8903                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
8904                        &self.quorumNumber,
8905                    ),
8906                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8907                        &self.index,
8908                    ),
8909                )
8910            }
8911            #[inline]
8912            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8913                (
8914                    <IStakeRegistryTypes::StrategyParams as alloy_sol_types::SolType>::tokenize(
8915                        ret,
8916                    ),
8917                )
8918            }
8919            #[inline]
8920            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8921                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8922                    |r| {
8923                        let r: strategyParamsByIndexReturn = r.into();
8924                        r._0
8925                    },
8926                )
8927            }
8928            #[inline]
8929            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8930                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8931                    data,
8932                )
8933                .map(|r| {
8934                    let r: strategyParamsByIndexReturn = r.into();
8935                    r._0
8936                })
8937            }
8938        }
8939    };
8940    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8941    /**Function with signature `strategyParamsLength(uint8)` and selector `0x3ca5a5f5`.
8942    ```solidity
8943    function strategyParamsLength(uint8 quorumNumber) external view returns (uint256);
8944    ```*/
8945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8946    #[derive(Clone)]
8947    pub struct strategyParamsLengthCall {
8948        #[allow(missing_docs)]
8949        pub quorumNumber: u8,
8950    }
8951    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8952    ///Container type for the return parameters of the [`strategyParamsLength(uint8)`](strategyParamsLengthCall) function.
8953    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8954    #[derive(Clone)]
8955    pub struct strategyParamsLengthReturn {
8956        #[allow(missing_docs)]
8957        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8958    }
8959    #[allow(
8960        non_camel_case_types,
8961        non_snake_case,
8962        clippy::pub_underscore_fields,
8963        clippy::style
8964    )]
8965    const _: () = {
8966        use alloy::sol_types as alloy_sol_types;
8967        {
8968            #[doc(hidden)]
8969            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8970            #[doc(hidden)]
8971            type UnderlyingRustTuple<'a> = (u8,);
8972            #[cfg(test)]
8973            #[allow(dead_code, unreachable_patterns)]
8974            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8975                match _t {
8976                    alloy_sol_types::private::AssertTypeEq::<
8977                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8978                    >(_) => {}
8979                }
8980            }
8981            #[automatically_derived]
8982            #[doc(hidden)]
8983            impl ::core::convert::From<strategyParamsLengthCall> for UnderlyingRustTuple<'_> {
8984                fn from(value: strategyParamsLengthCall) -> Self {
8985                    (value.quorumNumber,)
8986                }
8987            }
8988            #[automatically_derived]
8989            #[doc(hidden)]
8990            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsLengthCall {
8991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8992                    Self {
8993                        quorumNumber: tuple.0,
8994                    }
8995                }
8996            }
8997        }
8998        {
8999            #[doc(hidden)]
9000            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9001            #[doc(hidden)]
9002            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
9003            #[cfg(test)]
9004            #[allow(dead_code, unreachable_patterns)]
9005            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9006                match _t {
9007                    alloy_sol_types::private::AssertTypeEq::<
9008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9009                    >(_) => {}
9010                }
9011            }
9012            #[automatically_derived]
9013            #[doc(hidden)]
9014            impl ::core::convert::From<strategyParamsLengthReturn> for UnderlyingRustTuple<'_> {
9015                fn from(value: strategyParamsLengthReturn) -> Self {
9016                    (value._0,)
9017                }
9018            }
9019            #[automatically_derived]
9020            #[doc(hidden)]
9021            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsLengthReturn {
9022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9023                    Self { _0: tuple.0 }
9024                }
9025            }
9026        }
9027        #[automatically_derived]
9028        impl alloy_sol_types::SolCall for strategyParamsLengthCall {
9029            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
9030            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9031            type Return = alloy::sol_types::private::primitives::aliases::U256;
9032            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9033            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9034            const SIGNATURE: &'static str = "strategyParamsLength(uint8)";
9035            const SELECTOR: [u8; 4] = [60u8, 165u8, 165u8, 245u8];
9036            #[inline]
9037            fn new<'a>(
9038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9039            ) -> Self {
9040                tuple.into()
9041            }
9042            #[inline]
9043            fn tokenize(&self) -> Self::Token<'_> {
9044                (
9045                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
9046                        &self.quorumNumber,
9047                    ),
9048                )
9049            }
9050            #[inline]
9051            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9052                (
9053                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9054                        ret,
9055                    ),
9056                )
9057            }
9058            #[inline]
9059            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9060                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9061                    |r| {
9062                        let r: strategyParamsLengthReturn = r.into();
9063                        r._0
9064                    },
9065                )
9066            }
9067            #[inline]
9068            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9069                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9070                    data,
9071                )
9072                .map(|r| {
9073                    let r: strategyParamsLengthReturn = r.into();
9074                    r._0
9075                })
9076            }
9077        }
9078    };
9079    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9080    /**Function with signature `updateOperatorsStake(address[],bytes32[],uint8)` and selector `0x6c3fb4bf`.
9081    ```solidity
9082    function updateOperatorsStake(address[] memory operators, bytes32[] memory operatorIds, uint8 quorumNumber) external returns (bool[] memory);
9083    ```*/
9084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9085    #[derive(Clone)]
9086    pub struct updateOperatorsStakeCall {
9087        #[allow(missing_docs)]
9088        pub operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9089        #[allow(missing_docs)]
9090        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
9091        #[allow(missing_docs)]
9092        pub quorumNumber: u8,
9093    }
9094    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9095    ///Container type for the return parameters of the [`updateOperatorsStake(address[],bytes32[],uint8)`](updateOperatorsStakeCall) function.
9096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9097    #[derive(Clone)]
9098    pub struct updateOperatorsStakeReturn {
9099        #[allow(missing_docs)]
9100        pub _0: alloy::sol_types::private::Vec<bool>,
9101    }
9102    #[allow(
9103        non_camel_case_types,
9104        non_snake_case,
9105        clippy::pub_underscore_fields,
9106        clippy::style
9107    )]
9108    const _: () = {
9109        use alloy::sol_types as alloy_sol_types;
9110        {
9111            #[doc(hidden)]
9112            type UnderlyingSolTuple<'a> = (
9113                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9114                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
9115                alloy::sol_types::sol_data::Uint<8>,
9116            );
9117            #[doc(hidden)]
9118            type UnderlyingRustTuple<'a> = (
9119                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9120                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
9121                u8,
9122            );
9123            #[cfg(test)]
9124            #[allow(dead_code, unreachable_patterns)]
9125            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9126                match _t {
9127                    alloy_sol_types::private::AssertTypeEq::<
9128                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9129                    >(_) => {}
9130                }
9131            }
9132            #[automatically_derived]
9133            #[doc(hidden)]
9134            impl ::core::convert::From<updateOperatorsStakeCall> for UnderlyingRustTuple<'_> {
9135                fn from(value: updateOperatorsStakeCall) -> Self {
9136                    (value.operators, value.operatorIds, value.quorumNumber)
9137                }
9138            }
9139            #[automatically_derived]
9140            #[doc(hidden)]
9141            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateOperatorsStakeCall {
9142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9143                    Self {
9144                        operators: tuple.0,
9145                        operatorIds: tuple.1,
9146                        quorumNumber: tuple.2,
9147                    }
9148                }
9149            }
9150        }
9151        {
9152            #[doc(hidden)]
9153            type UnderlyingSolTuple<'a> =
9154                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,);
9155            #[doc(hidden)]
9156            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<bool>,);
9157            #[cfg(test)]
9158            #[allow(dead_code, unreachable_patterns)]
9159            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9160                match _t {
9161                    alloy_sol_types::private::AssertTypeEq::<
9162                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9163                    >(_) => {}
9164                }
9165            }
9166            #[automatically_derived]
9167            #[doc(hidden)]
9168            impl ::core::convert::From<updateOperatorsStakeReturn> for UnderlyingRustTuple<'_> {
9169                fn from(value: updateOperatorsStakeReturn) -> Self {
9170                    (value._0,)
9171                }
9172            }
9173            #[automatically_derived]
9174            #[doc(hidden)]
9175            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateOperatorsStakeReturn {
9176                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9177                    Self { _0: tuple.0 }
9178                }
9179            }
9180        }
9181        #[automatically_derived]
9182        impl alloy_sol_types::SolCall for updateOperatorsStakeCall {
9183            type Parameters<'a> = (
9184                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9185                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
9186                alloy::sol_types::sol_data::Uint<8>,
9187            );
9188            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9189            type Return = alloy::sol_types::private::Vec<bool>;
9190            type ReturnTuple<'a> =
9191                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,);
9192            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9193            const SIGNATURE: &'static str = "updateOperatorsStake(address[],bytes32[],uint8)";
9194            const SELECTOR: [u8; 4] = [108u8, 63u8, 180u8, 191u8];
9195            #[inline]
9196            fn new<'a>(
9197                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9198            ) -> Self {
9199                tuple.into()
9200            }
9201            #[inline]
9202            fn tokenize(&self) -> Self::Token<'_> {
9203                (
9204                    <alloy::sol_types::sol_data::Array<
9205                        alloy::sol_types::sol_data::Address,
9206                    > as alloy_sol_types::SolType>::tokenize(&self.operators),
9207                    <alloy::sol_types::sol_data::Array<
9208                        alloy::sol_types::sol_data::FixedBytes<32>,
9209                    > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
9210                    <alloy::sol_types::sol_data::Uint<
9211                        8,
9212                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9213                )
9214            }
9215            #[inline]
9216            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9217                (<alloy::sol_types::sol_data::Array<
9218                    alloy::sol_types::sol_data::Bool,
9219                > as alloy_sol_types::SolType>::tokenize(ret),)
9220            }
9221            #[inline]
9222            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9223                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9224                    |r| {
9225                        let r: updateOperatorsStakeReturn = r.into();
9226                        r._0
9227                    },
9228                )
9229            }
9230            #[inline]
9231            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9232                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9233                    data,
9234                )
9235                .map(|r| {
9236                    let r: updateOperatorsStakeReturn = r.into();
9237                    r._0
9238                })
9239            }
9240        }
9241    };
9242    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9243    /**Function with signature `weightOfOperatorForQuorum(uint8,address)` and selector `0x1f9b74e0`.
9244    ```solidity
9245    function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96);
9246    ```*/
9247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9248    #[derive(Clone)]
9249    pub struct weightOfOperatorForQuorumCall {
9250        #[allow(missing_docs)]
9251        pub quorumNumber: u8,
9252        #[allow(missing_docs)]
9253        pub operator: alloy::sol_types::private::Address,
9254    }
9255    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9256    ///Container type for the return parameters of the [`weightOfOperatorForQuorum(uint8,address)`](weightOfOperatorForQuorumCall) function.
9257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9258    #[derive(Clone)]
9259    pub struct weightOfOperatorForQuorumReturn {
9260        #[allow(missing_docs)]
9261        pub _0: alloy::sol_types::private::primitives::aliases::U96,
9262    }
9263    #[allow(
9264        non_camel_case_types,
9265        non_snake_case,
9266        clippy::pub_underscore_fields,
9267        clippy::style
9268    )]
9269    const _: () = {
9270        use alloy::sol_types as alloy_sol_types;
9271        {
9272            #[doc(hidden)]
9273            type UnderlyingSolTuple<'a> = (
9274                alloy::sol_types::sol_data::Uint<8>,
9275                alloy::sol_types::sol_data::Address,
9276            );
9277            #[doc(hidden)]
9278            type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address);
9279            #[cfg(test)]
9280            #[allow(dead_code, unreachable_patterns)]
9281            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9282                match _t {
9283                    alloy_sol_types::private::AssertTypeEq::<
9284                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9285                    >(_) => {}
9286                }
9287            }
9288            #[automatically_derived]
9289            #[doc(hidden)]
9290            impl ::core::convert::From<weightOfOperatorForQuorumCall> for UnderlyingRustTuple<'_> {
9291                fn from(value: weightOfOperatorForQuorumCall) -> Self {
9292                    (value.quorumNumber, value.operator)
9293                }
9294            }
9295            #[automatically_derived]
9296            #[doc(hidden)]
9297            impl ::core::convert::From<UnderlyingRustTuple<'_>> for weightOfOperatorForQuorumCall {
9298                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9299                    Self {
9300                        quorumNumber: tuple.0,
9301                        operator: tuple.1,
9302                    }
9303                }
9304            }
9305        }
9306        {
9307            #[doc(hidden)]
9308            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
9309            #[doc(hidden)]
9310            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U96,);
9311            #[cfg(test)]
9312            #[allow(dead_code, unreachable_patterns)]
9313            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9314                match _t {
9315                    alloy_sol_types::private::AssertTypeEq::<
9316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9317                    >(_) => {}
9318                }
9319            }
9320            #[automatically_derived]
9321            #[doc(hidden)]
9322            impl ::core::convert::From<weightOfOperatorForQuorumReturn> for UnderlyingRustTuple<'_> {
9323                fn from(value: weightOfOperatorForQuorumReturn) -> Self {
9324                    (value._0,)
9325                }
9326            }
9327            #[automatically_derived]
9328            #[doc(hidden)]
9329            impl ::core::convert::From<UnderlyingRustTuple<'_>> for weightOfOperatorForQuorumReturn {
9330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9331                    Self { _0: tuple.0 }
9332                }
9333            }
9334        }
9335        #[automatically_derived]
9336        impl alloy_sol_types::SolCall for weightOfOperatorForQuorumCall {
9337            type Parameters<'a> = (
9338                alloy::sol_types::sol_data::Uint<8>,
9339                alloy::sol_types::sol_data::Address,
9340            );
9341            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9342            type Return = alloy::sol_types::private::primitives::aliases::U96;
9343            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
9344            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9345            const SIGNATURE: &'static str = "weightOfOperatorForQuorum(uint8,address)";
9346            const SELECTOR: [u8; 4] = [31u8, 155u8, 116u8, 224u8];
9347            #[inline]
9348            fn new<'a>(
9349                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9350            ) -> Self {
9351                tuple.into()
9352            }
9353            #[inline]
9354            fn tokenize(&self) -> Self::Token<'_> {
9355                (
9356                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
9357                        &self.quorumNumber,
9358                    ),
9359                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9360                        &self.operator,
9361                    ),
9362                )
9363            }
9364            #[inline]
9365            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9366                (
9367                    <alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
9368                        ret,
9369                    ),
9370                )
9371            }
9372            #[inline]
9373            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9374                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9375                    |r| {
9376                        let r: weightOfOperatorForQuorumReturn = r.into();
9377                        r._0
9378                    },
9379                )
9380            }
9381            #[inline]
9382            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9383                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9384                    data,
9385                )
9386                .map(|r| {
9387                    let r: weightOfOperatorForQuorumReturn = r.into();
9388                    r._0
9389                })
9390            }
9391        }
9392    };
9393    ///Container for all the [`StakeRegistry`](self) function calls.
9394    #[derive(serde::Serialize, serde::Deserialize)]
9395    pub enum StakeRegistryCalls {
9396        #[allow(missing_docs)]
9397        MAX_WEIGHING_FUNCTION_LENGTH(MAX_WEIGHING_FUNCTION_LENGTHCall),
9398        #[allow(missing_docs)]
9399        WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall),
9400        #[allow(missing_docs)]
9401        addStrategies(addStrategiesCall),
9402        #[allow(missing_docs)]
9403        allocationManager(allocationManagerCall),
9404        #[allow(missing_docs)]
9405        avsDirectory(avsDirectoryCall),
9406        #[allow(missing_docs)]
9407        delegation(delegationCall),
9408        #[allow(missing_docs)]
9409        deregisterOperator(deregisterOperatorCall),
9410        #[allow(missing_docs)]
9411        getCurrentStake(getCurrentStakeCall),
9412        #[allow(missing_docs)]
9413        getCurrentTotalStake(getCurrentTotalStakeCall),
9414        #[allow(missing_docs)]
9415        getLatestStakeUpdate(getLatestStakeUpdateCall),
9416        #[allow(missing_docs)]
9417        getStakeAtBlockNumber(getStakeAtBlockNumberCall),
9418        #[allow(missing_docs)]
9419        getStakeAtBlockNumberAndIndex(getStakeAtBlockNumberAndIndexCall),
9420        #[allow(missing_docs)]
9421        getStakeHistory(getStakeHistoryCall),
9422        #[allow(missing_docs)]
9423        getStakeHistoryLength(getStakeHistoryLengthCall),
9424        #[allow(missing_docs)]
9425        getStakeUpdateAtIndex(getStakeUpdateAtIndexCall),
9426        #[allow(missing_docs)]
9427        getStakeUpdateIndexAtBlockNumber(getStakeUpdateIndexAtBlockNumberCall),
9428        #[allow(missing_docs)]
9429        getTotalStakeAtBlockNumberFromIndex(getTotalStakeAtBlockNumberFromIndexCall),
9430        #[allow(missing_docs)]
9431        getTotalStakeHistoryLength(getTotalStakeHistoryLengthCall),
9432        #[allow(missing_docs)]
9433        getTotalStakeIndicesAtBlockNumber(getTotalStakeIndicesAtBlockNumberCall),
9434        #[allow(missing_docs)]
9435        getTotalStakeUpdateAtIndex(getTotalStakeUpdateAtIndexCall),
9436        #[allow(missing_docs)]
9437        initializeDelegatedStakeQuorum(initializeDelegatedStakeQuorumCall),
9438        #[allow(missing_docs)]
9439        initializeSlashableStakeQuorum(initializeSlashableStakeQuorumCall),
9440        #[allow(missing_docs)]
9441        minimumStakeForQuorum(minimumStakeForQuorumCall),
9442        #[allow(missing_docs)]
9443        modifyStrategyParams(modifyStrategyParamsCall),
9444        #[allow(missing_docs)]
9445        registerOperator(registerOperatorCall),
9446        #[allow(missing_docs)]
9447        registryCoordinator(registryCoordinatorCall),
9448        #[allow(missing_docs)]
9449        removeStrategies(removeStrategiesCall),
9450        #[allow(missing_docs)]
9451        setMinimumStakeForQuorum(setMinimumStakeForQuorumCall),
9452        #[allow(missing_docs)]
9453        setSlashableStakeLookahead(setSlashableStakeLookaheadCall),
9454        #[allow(missing_docs)]
9455        slashableStakeLookAheadPerQuorum(slashableStakeLookAheadPerQuorumCall),
9456        #[allow(missing_docs)]
9457        stakeTypePerQuorum(stakeTypePerQuorumCall),
9458        #[allow(missing_docs)]
9459        strategiesPerQuorum(strategiesPerQuorumCall),
9460        #[allow(missing_docs)]
9461        strategyParams(strategyParamsCall),
9462        #[allow(missing_docs)]
9463        strategyParamsByIndex(strategyParamsByIndexCall),
9464        #[allow(missing_docs)]
9465        strategyParamsLength(strategyParamsLengthCall),
9466        #[allow(missing_docs)]
9467        updateOperatorsStake(updateOperatorsStakeCall),
9468        #[allow(missing_docs)]
9469        weightOfOperatorForQuorum(weightOfOperatorForQuorumCall),
9470    }
9471    #[automatically_derived]
9472    impl StakeRegistryCalls {
9473        /// All the selectors of this enum.
9474        ///
9475        /// Note that the selectors might not be in the same order as the variants.
9476        /// No guarantees are made about the order of the selectors.
9477        ///
9478        /// Prefer using `SolInterface` methods instead.
9479        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9480            [4u8, 145u8, 180u8, 28u8],
9481            [8u8, 115u8, 36u8, 97u8],
9482            [31u8, 155u8, 116u8, 224u8],
9483            [32u8, 182u8, 98u8, 152u8],
9484            [37u8, 80u8, 71u8, 119u8],
9485            [44u8, 217u8, 89u8, 64u8],
9486            [60u8, 165u8, 165u8, 245u8],
9487            [75u8, 210u8, 110u8, 9u8],
9488            [84u8, 1u8, 237u8, 39u8],
9489            [94u8, 90u8, 103u8, 117u8],
9490            [95u8, 31u8, 45u8, 119u8],
9491            [105u8, 127u8, 189u8, 147u8],
9492            [107u8, 58u8, 167u8, 46u8],
9493            [108u8, 63u8, 180u8, 191u8],
9494            [109u8, 20u8, 169u8, 135u8],
9495            [117u8, 212u8, 23u8, 58u8],
9496            [124u8, 23u8, 35u8, 71u8],
9497            [129u8, 192u8, 117u8, 2u8],
9498            [154u8, 180u8, 214u8, 255u8],
9499            [159u8, 60u8, 207u8, 101u8],
9500            [172u8, 107u8, 251u8, 3u8],
9501            [173u8, 200u8, 4u8, 218u8],
9502            [182u8, 144u8, 75u8, 120u8],
9503            [188u8, 154u8, 64u8, 195u8],
9504            [189u8, 41u8, 184u8, 205u8],
9505            [196u8, 103u8, 120u8, 165u8],
9506            [198u8, 1u8, 82u8, 125u8],
9507            [200u8, 41u8, 76u8, 86u8],
9508            [202u8, 138u8, 167u8, 199u8],
9509            [204u8, 90u8, 124u8, 32u8],
9510            [213u8, 236u8, 204u8, 5u8],
9511            [221u8, 152u8, 70u8, 185u8],
9512            [223u8, 92u8, 247u8, 35u8],
9513            [224u8, 134u8, 173u8, 179u8],
9514            [242u8, 190u8, 148u8, 174u8],
9515            [248u8, 81u8, 225u8, 152u8],
9516            [250u8, 40u8, 198u8, 39u8],
9517        ];
9518    }
9519    #[automatically_derived]
9520    impl alloy_sol_types::SolInterface for StakeRegistryCalls {
9521        const NAME: &'static str = "StakeRegistryCalls";
9522        const MIN_DATA_LENGTH: usize = 0usize;
9523        const COUNT: usize = 37usize;
9524        #[inline]
9525        fn selector(&self) -> [u8; 4] {
9526            match self {
9527                Self::MAX_WEIGHING_FUNCTION_LENGTH(_) => {
9528                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
9529                }
9530                Self::WEIGHTING_DIVISOR(_) => {
9531                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::SELECTOR
9532                }
9533                Self::addStrategies(_) => <addStrategiesCall as alloy_sol_types::SolCall>::SELECTOR,
9534                Self::allocationManager(_) => {
9535                    <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR
9536                }
9537                Self::avsDirectory(_) => <avsDirectoryCall as alloy_sol_types::SolCall>::SELECTOR,
9538                Self::delegation(_) => <delegationCall as alloy_sol_types::SolCall>::SELECTOR,
9539                Self::deregisterOperator(_) => {
9540                    <deregisterOperatorCall as alloy_sol_types::SolCall>::SELECTOR
9541                }
9542                Self::getCurrentStake(_) => {
9543                    <getCurrentStakeCall as alloy_sol_types::SolCall>::SELECTOR
9544                }
9545                Self::getCurrentTotalStake(_) => {
9546                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::SELECTOR
9547                }
9548                Self::getLatestStakeUpdate(_) => {
9549                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::SELECTOR
9550                }
9551                Self::getStakeAtBlockNumber(_) => {
9552                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9553                }
9554                Self::getStakeAtBlockNumberAndIndex(_) => {
9555                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::SELECTOR
9556                }
9557                Self::getStakeHistory(_) => {
9558                    <getStakeHistoryCall as alloy_sol_types::SolCall>::SELECTOR
9559                }
9560                Self::getStakeHistoryLength(_) => {
9561                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
9562                }
9563                Self::getStakeUpdateAtIndex(_) => {
9564                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
9565                }
9566                Self::getStakeUpdateIndexAtBlockNumber(_) => {
9567                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9568                }
9569                Self::getTotalStakeAtBlockNumberFromIndex(_) => {
9570                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::SELECTOR
9571                }
9572                Self::getTotalStakeHistoryLength(_) => {
9573                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
9574                }
9575                Self::getTotalStakeIndicesAtBlockNumber(_) => {
9576                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9577                }
9578                Self::getTotalStakeUpdateAtIndex(_) => {
9579                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
9580                }
9581                Self::initializeDelegatedStakeQuorum(_) => {
9582                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9583                }
9584                Self::initializeSlashableStakeQuorum(_) => {
9585                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9586                }
9587                Self::minimumStakeForQuorum(_) => {
9588                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9589                }
9590                Self::modifyStrategyParams(_) => {
9591                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::SELECTOR
9592                }
9593                Self::registerOperator(_) => {
9594                    <registerOperatorCall as alloy_sol_types::SolCall>::SELECTOR
9595                }
9596                Self::registryCoordinator(_) => {
9597                    <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
9598                }
9599                Self::removeStrategies(_) => {
9600                    <removeStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
9601                }
9602                Self::setMinimumStakeForQuorum(_) => {
9603                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9604                }
9605                Self::setSlashableStakeLookahead(_) => {
9606                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::SELECTOR
9607                }
9608                Self::slashableStakeLookAheadPerQuorum(_) => {
9609                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9610                }
9611                Self::stakeTypePerQuorum(_) => {
9612                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9613                }
9614                Self::strategiesPerQuorum(_) => {
9615                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9616                }
9617                Self::strategyParams(_) => {
9618                    <strategyParamsCall as alloy_sol_types::SolCall>::SELECTOR
9619                }
9620                Self::strategyParamsByIndex(_) => {
9621                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::SELECTOR
9622                }
9623                Self::strategyParamsLength(_) => {
9624                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::SELECTOR
9625                }
9626                Self::updateOperatorsStake(_) => {
9627                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::SELECTOR
9628                }
9629                Self::weightOfOperatorForQuorum(_) => {
9630                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9631                }
9632            }
9633        }
9634        #[inline]
9635        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9636            Self::SELECTORS.get(i).copied()
9637        }
9638        #[inline]
9639        fn valid_selector(selector: [u8; 4]) -> bool {
9640            Self::SELECTORS.binary_search(&selector).is_ok()
9641        }
9642        #[inline]
9643        #[allow(non_snake_case)]
9644        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
9645            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<StakeRegistryCalls>] = &[
9646                {
9647                    fn getTotalStakeHistoryLength(
9648                        data: &[u8],
9649                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9650                        <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
9651                                data,
9652                            )
9653                            .map(StakeRegistryCalls::getTotalStakeHistoryLength)
9654                    }
9655                    getTotalStakeHistoryLength
9656                },
9657                {
9658                    fn strategyParams(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
9659                        <strategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9660                            .map(StakeRegistryCalls::strategyParams)
9661                    }
9662                    strategyParams
9663                },
9664                {
9665                    fn weightOfOperatorForQuorum(
9666                        data: &[u8],
9667                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9668                        <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9669                            data,
9670                        )
9671                        .map(StakeRegistryCalls::weightOfOperatorForQuorum)
9672                    }
9673                    weightOfOperatorForQuorum
9674                },
9675                {
9676                    fn modifyStrategyParams(
9677                        data: &[u8],
9678                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9679                        <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9680                            .map(StakeRegistryCalls::modifyStrategyParams)
9681                    }
9682                    modifyStrategyParams
9683                },
9684                {
9685                    fn registerOperator(
9686                        data: &[u8],
9687                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9688                        <registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9689                            .map(StakeRegistryCalls::registerOperator)
9690                    }
9691                    registerOperator
9692                },
9693                {
9694                    fn getStakeHistory(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
9695                        <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9696                            .map(StakeRegistryCalls::getStakeHistory)
9697                    }
9698                    getStakeHistory
9699                },
9700                {
9701                    fn strategyParamsLength(
9702                        data: &[u8],
9703                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9704                        <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9705                            .map(StakeRegistryCalls::strategyParamsLength)
9706                    }
9707                    strategyParamsLength
9708                },
9709                {
9710                    fn getStakeHistoryLength(
9711                        data: &[u8],
9712                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9713                        <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
9714                            data,
9715                        )
9716                        .map(StakeRegistryCalls::getStakeHistoryLength)
9717                    }
9718                    getStakeHistoryLength
9719                },
9720                {
9721                    fn getCurrentStake(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
9722                        <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9723                            .map(StakeRegistryCalls::getCurrentStake)
9724                    }
9725                    getCurrentStake
9726                },
9727                {
9728                    fn WEIGHTING_DIVISOR(
9729                        data: &[u8],
9730                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9731                        <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9732                            .map(StakeRegistryCalls::WEIGHTING_DIVISOR)
9733                    }
9734                    WEIGHTING_DIVISOR
9735                },
9736                {
9737                    fn removeStrategies(
9738                        data: &[u8],
9739                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9740                        <removeStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9741                            .map(StakeRegistryCalls::removeStrategies)
9742                    }
9743                    removeStrategies
9744                },
9745                {
9746                    fn stakeTypePerQuorum(
9747                        data: &[u8],
9748                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9749                        <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9750                            .map(StakeRegistryCalls::stakeTypePerQuorum)
9751                    }
9752                    stakeTypePerQuorum
9753                },
9754                {
9755                    fn avsDirectory(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
9756                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9757                            .map(StakeRegistryCalls::avsDirectory)
9758                    }
9759                    avsDirectory
9760                },
9761                {
9762                    fn updateOperatorsStake(
9763                        data: &[u8],
9764                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9765                        <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9766                            .map(StakeRegistryCalls::updateOperatorsStake)
9767                    }
9768                    updateOperatorsStake
9769                },
9770                {
9771                    fn registryCoordinator(
9772                        data: &[u8],
9773                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9774                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9775                            .map(StakeRegistryCalls::registryCoordinator)
9776                    }
9777                    registryCoordinator
9778                },
9779                {
9780                    fn initializeDelegatedStakeQuorum(
9781                        data: &[u8],
9782                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9783                        <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9784                                data,
9785                            )
9786                            .map(StakeRegistryCalls::initializeDelegatedStakeQuorum)
9787                    }
9788                    initializeDelegatedStakeQuorum
9789                },
9790                {
9791                    fn MAX_WEIGHING_FUNCTION_LENGTH(
9792                        data: &[u8],
9793                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9794                        <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
9795                                data,
9796                            )
9797                            .map(StakeRegistryCalls::MAX_WEIGHING_FUNCTION_LENGTH)
9798                    }
9799                    MAX_WEIGHING_FUNCTION_LENGTH
9800                },
9801                {
9802                    fn getTotalStakeIndicesAtBlockNumber(
9803                        data: &[u8],
9804                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9805                        <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9806                                data,
9807                            )
9808                            .map(StakeRegistryCalls::getTotalStakeIndicesAtBlockNumber)
9809                    }
9810                    getTotalStakeIndicesAtBlockNumber
9811                },
9812                {
9813                    fn slashableStakeLookAheadPerQuorum(
9814                        data: &[u8],
9815                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9816                        <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9817                                data,
9818                            )
9819                            .map(StakeRegistryCalls::slashableStakeLookAheadPerQuorum)
9820                    }
9821                    slashableStakeLookAheadPerQuorum
9822                },
9823                {
9824                    fn strategiesPerQuorum(
9825                        data: &[u8],
9826                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9827                        <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9828                            .map(StakeRegistryCalls::strategiesPerQuorum)
9829                    }
9830                    strategiesPerQuorum
9831                },
9832                {
9833                    fn getStakeUpdateAtIndex(
9834                        data: &[u8],
9835                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9836                        <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9837                            data,
9838                        )
9839                        .map(StakeRegistryCalls::getStakeUpdateAtIndex)
9840                    }
9841                    getStakeUpdateAtIndex
9842                },
9843                {
9844                    fn strategyParamsByIndex(
9845                        data: &[u8],
9846                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9847                        <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9848                            data,
9849                        )
9850                        .map(StakeRegistryCalls::strategyParamsByIndex)
9851                    }
9852                    strategyParamsByIndex
9853                },
9854                {
9855                    fn getTotalStakeUpdateAtIndex(
9856                        data: &[u8],
9857                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9858                        <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9859                                data,
9860                            )
9861                            .map(StakeRegistryCalls::getTotalStakeUpdateAtIndex)
9862                    }
9863                    getTotalStakeUpdateAtIndex
9864                },
9865                {
9866                    fn setMinimumStakeForQuorum(
9867                        data: &[u8],
9868                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9869                        <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9870                            data,
9871                        )
9872                        .map(StakeRegistryCalls::setMinimumStakeForQuorum)
9873                    }
9874                    setMinimumStakeForQuorum
9875                },
9876                {
9877                    fn deregisterOperator(
9878                        data: &[u8],
9879                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9880                        <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9881                            .map(StakeRegistryCalls::deregisterOperator)
9882                    }
9883                    deregisterOperator
9884                },
9885                {
9886                    fn minimumStakeForQuorum(
9887                        data: &[u8],
9888                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9889                        <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9890                            data,
9891                        )
9892                        .map(StakeRegistryCalls::minimumStakeForQuorum)
9893                    }
9894                    minimumStakeForQuorum
9895                },
9896                {
9897                    fn addStrategies(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
9898                        <addStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9899                            .map(StakeRegistryCalls::addStrategies)
9900                    }
9901                    addStrategies
9902                },
9903                {
9904                    fn getTotalStakeAtBlockNumberFromIndex(
9905                        data: &[u8],
9906                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9907                        <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9908                                data,
9909                            )
9910                            .map(StakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex)
9911                    }
9912                    getTotalStakeAtBlockNumberFromIndex
9913                },
9914                {
9915                    fn allocationManager(
9916                        data: &[u8],
9917                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9918                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9919                            .map(StakeRegistryCalls::allocationManager)
9920                    }
9921                    allocationManager
9922                },
9923                {
9924                    fn initializeSlashableStakeQuorum(
9925                        data: &[u8],
9926                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9927                        <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9928                                data,
9929                            )
9930                            .map(StakeRegistryCalls::initializeSlashableStakeQuorum)
9931                    }
9932                    initializeSlashableStakeQuorum
9933                },
9934                {
9935                    fn getCurrentTotalStake(
9936                        data: &[u8],
9937                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9938                        <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9939                            .map(StakeRegistryCalls::getCurrentTotalStake)
9940                    }
9941                    getCurrentTotalStake
9942                },
9943                {
9944                    fn getStakeUpdateIndexAtBlockNumber(
9945                        data: &[u8],
9946                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9947                        <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9948                                data,
9949                            )
9950                            .map(StakeRegistryCalls::getStakeUpdateIndexAtBlockNumber)
9951                    }
9952                    getStakeUpdateIndexAtBlockNumber
9953                },
9954                {
9955                    fn delegation(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
9956                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9957                            .map(StakeRegistryCalls::delegation)
9958                    }
9959                    delegation
9960                },
9961                {
9962                    fn setSlashableStakeLookahead(
9963                        data: &[u8],
9964                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9965                        <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_decode_raw(
9966                                data,
9967                            )
9968                            .map(StakeRegistryCalls::setSlashableStakeLookahead)
9969                    }
9970                    setSlashableStakeLookahead
9971                },
9972                {
9973                    fn getStakeAtBlockNumberAndIndex(
9974                        data: &[u8],
9975                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9976                        <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9977                                data,
9978                            )
9979                            .map(StakeRegistryCalls::getStakeAtBlockNumberAndIndex)
9980                    }
9981                    getStakeAtBlockNumberAndIndex
9982                },
9983                {
9984                    fn getLatestStakeUpdate(
9985                        data: &[u8],
9986                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9987                        <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9988                            .map(StakeRegistryCalls::getLatestStakeUpdate)
9989                    }
9990                    getLatestStakeUpdate
9991                },
9992                {
9993                    fn getStakeAtBlockNumber(
9994                        data: &[u8],
9995                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9996                        <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9997                            data,
9998                        )
9999                        .map(StakeRegistryCalls::getStakeAtBlockNumber)
10000                    }
10001                    getStakeAtBlockNumber
10002                },
10003            ];
10004            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10005                return Err(alloy_sol_types::Error::unknown_selector(
10006                    <Self as alloy_sol_types::SolInterface>::NAME,
10007                    selector,
10008                ));
10009            };
10010            DECODE_SHIMS[idx](data)
10011        }
10012        #[inline]
10013        #[allow(non_snake_case)]
10014        fn abi_decode_raw_validate(
10015            selector: [u8; 4],
10016            data: &[u8],
10017        ) -> alloy_sol_types::Result<Self> {
10018            static DECODE_VALIDATE_SHIMS: &[fn(
10019                &[u8],
10020            )
10021                -> alloy_sol_types::Result<StakeRegistryCalls>] = &[
10022                {
10023                    fn getTotalStakeHistoryLength(
10024                        data: &[u8],
10025                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10026                        <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10027                                data,
10028                            )
10029                            .map(StakeRegistryCalls::getTotalStakeHistoryLength)
10030                    }
10031                    getTotalStakeHistoryLength
10032                },
10033                {
10034                    fn strategyParams(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
10035                        <strategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10036                            data,
10037                        )
10038                        .map(StakeRegistryCalls::strategyParams)
10039                    }
10040                    strategyParams
10041                },
10042                {
10043                    fn weightOfOperatorForQuorum(
10044                        data: &[u8],
10045                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10046                        <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10047                                data,
10048                            )
10049                            .map(StakeRegistryCalls::weightOfOperatorForQuorum)
10050                    }
10051                    weightOfOperatorForQuorum
10052                },
10053                {
10054                    fn modifyStrategyParams(
10055                        data: &[u8],
10056                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10057                        <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10058                                data,
10059                            )
10060                            .map(StakeRegistryCalls::modifyStrategyParams)
10061                    }
10062                    modifyStrategyParams
10063                },
10064                {
10065                    fn registerOperator(
10066                        data: &[u8],
10067                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10068                        <registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10069                            data,
10070                        )
10071                        .map(StakeRegistryCalls::registerOperator)
10072                    }
10073                    registerOperator
10074                },
10075                {
10076                    fn getStakeHistory(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
10077                        <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10078                            data,
10079                        )
10080                        .map(StakeRegistryCalls::getStakeHistory)
10081                    }
10082                    getStakeHistory
10083                },
10084                {
10085                    fn strategyParamsLength(
10086                        data: &[u8],
10087                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10088                        <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10089                                data,
10090                            )
10091                            .map(StakeRegistryCalls::strategyParamsLength)
10092                    }
10093                    strategyParamsLength
10094                },
10095                {
10096                    fn getStakeHistoryLength(
10097                        data: &[u8],
10098                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10099                        <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10100                                data,
10101                            )
10102                            .map(StakeRegistryCalls::getStakeHistoryLength)
10103                    }
10104                    getStakeHistoryLength
10105                },
10106                {
10107                    fn getCurrentStake(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
10108                        <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10109                            data,
10110                        )
10111                        .map(StakeRegistryCalls::getCurrentStake)
10112                    }
10113                    getCurrentStake
10114                },
10115                {
10116                    fn WEIGHTING_DIVISOR(
10117                        data: &[u8],
10118                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10119                        <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10120                                data,
10121                            )
10122                            .map(StakeRegistryCalls::WEIGHTING_DIVISOR)
10123                    }
10124                    WEIGHTING_DIVISOR
10125                },
10126                {
10127                    fn removeStrategies(
10128                        data: &[u8],
10129                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10130                        <removeStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10131                            data,
10132                        )
10133                        .map(StakeRegistryCalls::removeStrategies)
10134                    }
10135                    removeStrategies
10136                },
10137                {
10138                    fn stakeTypePerQuorum(
10139                        data: &[u8],
10140                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10141                        <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10142                                data,
10143                            )
10144                            .map(StakeRegistryCalls::stakeTypePerQuorum)
10145                    }
10146                    stakeTypePerQuorum
10147                },
10148                {
10149                    fn avsDirectory(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
10150                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10151                            data,
10152                        )
10153                        .map(StakeRegistryCalls::avsDirectory)
10154                    }
10155                    avsDirectory
10156                },
10157                {
10158                    fn updateOperatorsStake(
10159                        data: &[u8],
10160                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10161                        <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10162                                data,
10163                            )
10164                            .map(StakeRegistryCalls::updateOperatorsStake)
10165                    }
10166                    updateOperatorsStake
10167                },
10168                {
10169                    fn registryCoordinator(
10170                        data: &[u8],
10171                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10172                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10173                                data,
10174                            )
10175                            .map(StakeRegistryCalls::registryCoordinator)
10176                    }
10177                    registryCoordinator
10178                },
10179                {
10180                    fn initializeDelegatedStakeQuorum(
10181                        data: &[u8],
10182                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10183                        <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10184                                data,
10185                            )
10186                            .map(StakeRegistryCalls::initializeDelegatedStakeQuorum)
10187                    }
10188                    initializeDelegatedStakeQuorum
10189                },
10190                {
10191                    fn MAX_WEIGHING_FUNCTION_LENGTH(
10192                        data: &[u8],
10193                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10194                        <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10195                                data,
10196                            )
10197                            .map(StakeRegistryCalls::MAX_WEIGHING_FUNCTION_LENGTH)
10198                    }
10199                    MAX_WEIGHING_FUNCTION_LENGTH
10200                },
10201                {
10202                    fn getTotalStakeIndicesAtBlockNumber(
10203                        data: &[u8],
10204                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10205                        <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10206                                data,
10207                            )
10208                            .map(StakeRegistryCalls::getTotalStakeIndicesAtBlockNumber)
10209                    }
10210                    getTotalStakeIndicesAtBlockNumber
10211                },
10212                {
10213                    fn slashableStakeLookAheadPerQuorum(
10214                        data: &[u8],
10215                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10216                        <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10217                                data,
10218                            )
10219                            .map(StakeRegistryCalls::slashableStakeLookAheadPerQuorum)
10220                    }
10221                    slashableStakeLookAheadPerQuorum
10222                },
10223                {
10224                    fn strategiesPerQuorum(
10225                        data: &[u8],
10226                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10227                        <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10228                                data,
10229                            )
10230                            .map(StakeRegistryCalls::strategiesPerQuorum)
10231                    }
10232                    strategiesPerQuorum
10233                },
10234                {
10235                    fn getStakeUpdateAtIndex(
10236                        data: &[u8],
10237                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10238                        <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10239                                data,
10240                            )
10241                            .map(StakeRegistryCalls::getStakeUpdateAtIndex)
10242                    }
10243                    getStakeUpdateAtIndex
10244                },
10245                {
10246                    fn strategyParamsByIndex(
10247                        data: &[u8],
10248                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10249                        <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10250                                data,
10251                            )
10252                            .map(StakeRegistryCalls::strategyParamsByIndex)
10253                    }
10254                    strategyParamsByIndex
10255                },
10256                {
10257                    fn getTotalStakeUpdateAtIndex(
10258                        data: &[u8],
10259                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10260                        <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10261                                data,
10262                            )
10263                            .map(StakeRegistryCalls::getTotalStakeUpdateAtIndex)
10264                    }
10265                    getTotalStakeUpdateAtIndex
10266                },
10267                {
10268                    fn setMinimumStakeForQuorum(
10269                        data: &[u8],
10270                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10271                        <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10272                                data,
10273                            )
10274                            .map(StakeRegistryCalls::setMinimumStakeForQuorum)
10275                    }
10276                    setMinimumStakeForQuorum
10277                },
10278                {
10279                    fn deregisterOperator(
10280                        data: &[u8],
10281                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10282                        <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10283                                data,
10284                            )
10285                            .map(StakeRegistryCalls::deregisterOperator)
10286                    }
10287                    deregisterOperator
10288                },
10289                {
10290                    fn minimumStakeForQuorum(
10291                        data: &[u8],
10292                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10293                        <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10294                                data,
10295                            )
10296                            .map(StakeRegistryCalls::minimumStakeForQuorum)
10297                    }
10298                    minimumStakeForQuorum
10299                },
10300                {
10301                    fn addStrategies(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
10302                        <addStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10303                            data,
10304                        )
10305                        .map(StakeRegistryCalls::addStrategies)
10306                    }
10307                    addStrategies
10308                },
10309                {
10310                    fn getTotalStakeAtBlockNumberFromIndex(
10311                        data: &[u8],
10312                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10313                        <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10314                                data,
10315                            )
10316                            .map(StakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex)
10317                    }
10318                    getTotalStakeAtBlockNumberFromIndex
10319                },
10320                {
10321                    fn allocationManager(
10322                        data: &[u8],
10323                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10324                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10325                                data,
10326                            )
10327                            .map(StakeRegistryCalls::allocationManager)
10328                    }
10329                    allocationManager
10330                },
10331                {
10332                    fn initializeSlashableStakeQuorum(
10333                        data: &[u8],
10334                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10335                        <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10336                                data,
10337                            )
10338                            .map(StakeRegistryCalls::initializeSlashableStakeQuorum)
10339                    }
10340                    initializeSlashableStakeQuorum
10341                },
10342                {
10343                    fn getCurrentTotalStake(
10344                        data: &[u8],
10345                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10346                        <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10347                                data,
10348                            )
10349                            .map(StakeRegistryCalls::getCurrentTotalStake)
10350                    }
10351                    getCurrentTotalStake
10352                },
10353                {
10354                    fn getStakeUpdateIndexAtBlockNumber(
10355                        data: &[u8],
10356                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10357                        <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10358                                data,
10359                            )
10360                            .map(StakeRegistryCalls::getStakeUpdateIndexAtBlockNumber)
10361                    }
10362                    getStakeUpdateIndexAtBlockNumber
10363                },
10364                {
10365                    fn delegation(data: &[u8]) -> alloy_sol_types::Result<StakeRegistryCalls> {
10366                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
10367                            .map(StakeRegistryCalls::delegation)
10368                    }
10369                    delegation
10370                },
10371                {
10372                    fn setSlashableStakeLookahead(
10373                        data: &[u8],
10374                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10375                        <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10376                                data,
10377                            )
10378                            .map(StakeRegistryCalls::setSlashableStakeLookahead)
10379                    }
10380                    setSlashableStakeLookahead
10381                },
10382                {
10383                    fn getStakeAtBlockNumberAndIndex(
10384                        data: &[u8],
10385                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10386                        <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10387                                data,
10388                            )
10389                            .map(StakeRegistryCalls::getStakeAtBlockNumberAndIndex)
10390                    }
10391                    getStakeAtBlockNumberAndIndex
10392                },
10393                {
10394                    fn getLatestStakeUpdate(
10395                        data: &[u8],
10396                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10397                        <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10398                                data,
10399                            )
10400                            .map(StakeRegistryCalls::getLatestStakeUpdate)
10401                    }
10402                    getLatestStakeUpdate
10403                },
10404                {
10405                    fn getStakeAtBlockNumber(
10406                        data: &[u8],
10407                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10408                        <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10409                                data,
10410                            )
10411                            .map(StakeRegistryCalls::getStakeAtBlockNumber)
10412                    }
10413                    getStakeAtBlockNumber
10414                },
10415            ];
10416            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10417                return Err(alloy_sol_types::Error::unknown_selector(
10418                    <Self as alloy_sol_types::SolInterface>::NAME,
10419                    selector,
10420                ));
10421            };
10422            DECODE_VALIDATE_SHIMS[idx](data)
10423        }
10424        #[inline]
10425        fn abi_encoded_size(&self) -> usize {
10426            match self {
10427                Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => {
10428                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
10429                        inner,
10430                    )
10431                }
10432                Self::WEIGHTING_DIVISOR(inner) => {
10433                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_encoded_size(
10434                        inner,
10435                    )
10436                }
10437                Self::addStrategies(inner) => {
10438                    <addStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10439                        inner,
10440                    )
10441                }
10442                Self::allocationManager(inner) => {
10443                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
10444                        inner,
10445                    )
10446                }
10447                Self::avsDirectory(inner) => {
10448                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
10449                        inner,
10450                    )
10451                }
10452                Self::delegation(inner) => {
10453                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10454                }
10455                Self::deregisterOperator(inner) => {
10456                    <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10457                        inner,
10458                    )
10459                }
10460                Self::getCurrentStake(inner) => {
10461                    <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10462                        inner,
10463                    )
10464                }
10465                Self::getCurrentTotalStake(inner) => {
10466                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10467                        inner,
10468                    )
10469                }
10470                Self::getLatestStakeUpdate(inner) => {
10471                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10472                        inner,
10473                    )
10474                }
10475                Self::getStakeAtBlockNumber(inner) => {
10476                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10477                        inner,
10478                    )
10479                }
10480                Self::getStakeAtBlockNumberAndIndex(inner) => {
10481                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10482                        inner,
10483                    )
10484                }
10485                Self::getStakeHistory(inner) => {
10486                    <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
10487                        inner,
10488                    )
10489                }
10490                Self::getStakeHistoryLength(inner) => {
10491                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10492                        inner,
10493                    )
10494                }
10495                Self::getStakeUpdateAtIndex(inner) => {
10496                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10497                        inner,
10498                    )
10499                }
10500                Self::getStakeUpdateIndexAtBlockNumber(inner) => {
10501                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10502                        inner,
10503                    )
10504                }
10505                Self::getTotalStakeAtBlockNumberFromIndex(inner) => {
10506                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10507                        inner,
10508                    )
10509                }
10510                Self::getTotalStakeHistoryLength(inner) => {
10511                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10512                        inner,
10513                    )
10514                }
10515                Self::getTotalStakeIndicesAtBlockNumber(inner) => {
10516                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10517                        inner,
10518                    )
10519                }
10520                Self::getTotalStakeUpdateAtIndex(inner) => {
10521                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10522                        inner,
10523                    )
10524                }
10525                Self::initializeDelegatedStakeQuorum(inner) => {
10526                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10527                        inner,
10528                    )
10529                }
10530                Self::initializeSlashableStakeQuorum(inner) => {
10531                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10532                        inner,
10533                    )
10534                }
10535                Self::minimumStakeForQuorum(inner) => {
10536                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10537                        inner,
10538                    )
10539                }
10540                Self::modifyStrategyParams(inner) => {
10541                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10542                        inner,
10543                    )
10544                }
10545                Self::registerOperator(inner) => {
10546                    <registerOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10547                        inner,
10548                    )
10549                }
10550                Self::registryCoordinator(inner) => {
10551                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10552                        inner,
10553                    )
10554                }
10555                Self::removeStrategies(inner) => {
10556                    <removeStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10557                        inner,
10558                    )
10559                }
10560                Self::setMinimumStakeForQuorum(inner) => {
10561                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10562                        inner,
10563                    )
10564                }
10565                Self::setSlashableStakeLookahead(inner) => {
10566                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_encoded_size(
10567                        inner,
10568                    )
10569                }
10570                Self::slashableStakeLookAheadPerQuorum(inner) => {
10571                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10572                        inner,
10573                    )
10574                }
10575                Self::stakeTypePerQuorum(inner) => {
10576                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10577                        inner,
10578                    )
10579                }
10580                Self::strategiesPerQuorum(inner) => {
10581                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10582                        inner,
10583                    )
10584                }
10585                Self::strategyParams(inner) => {
10586                    <strategyParamsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10587                        inner,
10588                    )
10589                }
10590                Self::strategyParamsByIndex(inner) => {
10591                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10592                        inner,
10593                    )
10594                }
10595                Self::strategyParamsLength(inner) => {
10596                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10597                        inner,
10598                    )
10599                }
10600                Self::updateOperatorsStake(inner) => {
10601                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10602                        inner,
10603                    )
10604                }
10605                Self::weightOfOperatorForQuorum(inner) => {
10606                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10607                        inner,
10608                    )
10609                }
10610            }
10611        }
10612        #[inline]
10613        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10614            match self {
10615                Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => {
10616                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
10617                        inner,
10618                        out,
10619                    )
10620                }
10621                Self::WEIGHTING_DIVISOR(inner) => {
10622                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_encode_raw(
10623                        inner,
10624                        out,
10625                    )
10626                }
10627                Self::addStrategies(inner) => {
10628                    <addStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10629                        inner,
10630                        out,
10631                    )
10632                }
10633                Self::allocationManager(inner) => {
10634                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
10635                        inner,
10636                        out,
10637                    )
10638                }
10639                Self::avsDirectory(inner) => {
10640                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
10641                        inner,
10642                        out,
10643                    )
10644                }
10645                Self::delegation(inner) => {
10646                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
10647                        inner,
10648                        out,
10649                    )
10650                }
10651                Self::deregisterOperator(inner) => {
10652                    <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10653                        inner,
10654                        out,
10655                    )
10656                }
10657                Self::getCurrentStake(inner) => {
10658                    <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10659                        inner,
10660                        out,
10661                    )
10662                }
10663                Self::getCurrentTotalStake(inner) => {
10664                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10665                        inner,
10666                        out,
10667                    )
10668                }
10669                Self::getLatestStakeUpdate(inner) => {
10670                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10671                        inner,
10672                        out,
10673                    )
10674                }
10675                Self::getStakeAtBlockNumber(inner) => {
10676                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10677                        inner,
10678                        out,
10679                    )
10680                }
10681                Self::getStakeAtBlockNumberAndIndex(inner) => {
10682                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10683                        inner,
10684                        out,
10685                    )
10686                }
10687                Self::getStakeHistory(inner) => {
10688                    <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
10689                        inner,
10690                        out,
10691                    )
10692                }
10693                Self::getStakeHistoryLength(inner) => {
10694                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10695                        inner,
10696                        out,
10697                    )
10698                }
10699                Self::getStakeUpdateAtIndex(inner) => {
10700                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10701                        inner,
10702                        out,
10703                    )
10704                }
10705                Self::getStakeUpdateIndexAtBlockNumber(inner) => {
10706                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10707                        inner,
10708                        out,
10709                    )
10710                }
10711                Self::getTotalStakeAtBlockNumberFromIndex(inner) => {
10712                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10713                        inner,
10714                        out,
10715                    )
10716                }
10717                Self::getTotalStakeHistoryLength(inner) => {
10718                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10719                        inner,
10720                        out,
10721                    )
10722                }
10723                Self::getTotalStakeIndicesAtBlockNumber(inner) => {
10724                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10725                        inner,
10726                        out,
10727                    )
10728                }
10729                Self::getTotalStakeUpdateAtIndex(inner) => {
10730                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10731                        inner,
10732                        out,
10733                    )
10734                }
10735                Self::initializeDelegatedStakeQuorum(inner) => {
10736                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10737                        inner,
10738                        out,
10739                    )
10740                }
10741                Self::initializeSlashableStakeQuorum(inner) => {
10742                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10743                        inner,
10744                        out,
10745                    )
10746                }
10747                Self::minimumStakeForQuorum(inner) => {
10748                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10749                        inner,
10750                        out,
10751                    )
10752                }
10753                Self::modifyStrategyParams(inner) => {
10754                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10755                        inner,
10756                        out,
10757                    )
10758                }
10759                Self::registerOperator(inner) => {
10760                    <registerOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10761                        inner,
10762                        out,
10763                    )
10764                }
10765                Self::registryCoordinator(inner) => {
10766                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10767                        inner,
10768                        out,
10769                    )
10770                }
10771                Self::removeStrategies(inner) => {
10772                    <removeStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10773                        inner,
10774                        out,
10775                    )
10776                }
10777                Self::setMinimumStakeForQuorum(inner) => {
10778                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10779                        inner,
10780                        out,
10781                    )
10782                }
10783                Self::setSlashableStakeLookahead(inner) => {
10784                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_encode_raw(
10785                        inner,
10786                        out,
10787                    )
10788                }
10789                Self::slashableStakeLookAheadPerQuorum(inner) => {
10790                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10791                        inner,
10792                        out,
10793                    )
10794                }
10795                Self::stakeTypePerQuorum(inner) => {
10796                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10797                        inner,
10798                        out,
10799                    )
10800                }
10801                Self::strategiesPerQuorum(inner) => {
10802                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10803                        inner,
10804                        out,
10805                    )
10806                }
10807                Self::strategyParams(inner) => {
10808                    <strategyParamsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10809                        inner,
10810                        out,
10811                    )
10812                }
10813                Self::strategyParamsByIndex(inner) => {
10814                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10815                        inner,
10816                        out,
10817                    )
10818                }
10819                Self::strategyParamsLength(inner) => {
10820                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10821                        inner,
10822                        out,
10823                    )
10824                }
10825                Self::updateOperatorsStake(inner) => {
10826                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10827                        inner,
10828                        out,
10829                    )
10830                }
10831                Self::weightOfOperatorForQuorum(inner) => {
10832                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10833                        inner,
10834                        out,
10835                    )
10836                }
10837            }
10838        }
10839    }
10840    ///Container for all the [`StakeRegistry`](self) custom errors.
10841    #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
10842    pub enum StakeRegistryErrors {
10843        #[allow(missing_docs)]
10844        BelowMinimumStakeRequirement(BelowMinimumStakeRequirement),
10845        #[allow(missing_docs)]
10846        EmptyStakeHistory(EmptyStakeHistory),
10847        #[allow(missing_docs)]
10848        InputArrayLengthMismatch(InputArrayLengthMismatch),
10849        #[allow(missing_docs)]
10850        InputArrayLengthZero(InputArrayLengthZero),
10851        #[allow(missing_docs)]
10852        InputDuplicateStrategy(InputDuplicateStrategy),
10853        #[allow(missing_docs)]
10854        InputMultiplierZero(InputMultiplierZero),
10855        #[allow(missing_docs)]
10856        InvalidBlockNumber(InvalidBlockNumber),
10857        #[allow(missing_docs)]
10858        LookAheadPeriodTooLong(LookAheadPeriodTooLong),
10859        #[allow(missing_docs)]
10860        OnlySlashingRegistryCoordinator(OnlySlashingRegistryCoordinator),
10861        #[allow(missing_docs)]
10862        OnlySlashingRegistryCoordinatorOwner(OnlySlashingRegistryCoordinatorOwner),
10863        #[allow(missing_docs)]
10864        QuorumAlreadyExists(QuorumAlreadyExists),
10865        #[allow(missing_docs)]
10866        QuorumDoesNotExist(QuorumDoesNotExist),
10867        #[allow(missing_docs)]
10868        QuorumNotSlashable(QuorumNotSlashable),
10869    }
10870    #[automatically_derived]
10871    impl StakeRegistryErrors {
10872        /// All the selectors of this enum.
10873        ///
10874        /// Note that the selectors might not be in the same order as the variants.
10875        /// No guarantees are made about the order of the selectors.
10876        ///
10877        /// Prefer using `SolInterface` methods instead.
10878        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10879            [47u8, 81u8, 6u8, 228u8],
10880            [64u8, 254u8, 39u8, 198u8],
10881            [67u8, 54u8, 148u8, 92u8],
10882            [67u8, 113u8, 74u8, 253u8],
10883            [78u8, 71u8, 132u8, 108u8],
10884            [114u8, 87u8, 18u8, 81u8],
10885            [121u8, 108u8, 197u8, 37u8],
10886            [123u8, 116u8, 52u8, 11u8],
10887            [163u8, 190u8, 37u8, 131u8],
10888            [176u8, 6u8, 200u8, 20u8],
10889            [204u8, 100u8, 101u8, 115u8],
10890            [206u8, 152u8, 194u8, 75u8],
10891            [230u8, 33u8, 159u8, 234u8],
10892        ];
10893    }
10894    #[automatically_derived]
10895    impl alloy_sol_types::SolInterface for StakeRegistryErrors {
10896        const NAME: &'static str = "StakeRegistryErrors";
10897        const MIN_DATA_LENGTH: usize = 0usize;
10898        const COUNT: usize = 13usize;
10899        #[inline]
10900        fn selector(&self) -> [u8; 4] {
10901            match self {
10902                Self::BelowMinimumStakeRequirement(_) => {
10903                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::SELECTOR
10904                }
10905                Self::EmptyStakeHistory(_) => {
10906                    <EmptyStakeHistory as alloy_sol_types::SolError>::SELECTOR
10907                }
10908                Self::InputArrayLengthMismatch(_) => {
10909                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
10910                }
10911                Self::InputArrayLengthZero(_) => {
10912                    <InputArrayLengthZero as alloy_sol_types::SolError>::SELECTOR
10913                }
10914                Self::InputDuplicateStrategy(_) => {
10915                    <InputDuplicateStrategy as alloy_sol_types::SolError>::SELECTOR
10916                }
10917                Self::InputMultiplierZero(_) => {
10918                    <InputMultiplierZero as alloy_sol_types::SolError>::SELECTOR
10919                }
10920                Self::InvalidBlockNumber(_) => {
10921                    <InvalidBlockNumber as alloy_sol_types::SolError>::SELECTOR
10922                }
10923                Self::LookAheadPeriodTooLong(_) => {
10924                    <LookAheadPeriodTooLong as alloy_sol_types::SolError>::SELECTOR
10925                }
10926                Self::OnlySlashingRegistryCoordinator(_) => {
10927                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::SELECTOR
10928                }
10929                Self::OnlySlashingRegistryCoordinatorOwner(_) => {
10930                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
10931                }
10932                Self::QuorumAlreadyExists(_) => {
10933                    <QuorumAlreadyExists as alloy_sol_types::SolError>::SELECTOR
10934                }
10935                Self::QuorumDoesNotExist(_) => {
10936                    <QuorumDoesNotExist as alloy_sol_types::SolError>::SELECTOR
10937                }
10938                Self::QuorumNotSlashable(_) => {
10939                    <QuorumNotSlashable as alloy_sol_types::SolError>::SELECTOR
10940                }
10941            }
10942        }
10943        #[inline]
10944        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10945            Self::SELECTORS.get(i).copied()
10946        }
10947        #[inline]
10948        fn valid_selector(selector: [u8; 4]) -> bool {
10949            Self::SELECTORS.binary_search(&selector).is_ok()
10950        }
10951        #[inline]
10952        #[allow(non_snake_case)]
10953        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
10954            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<StakeRegistryErrors>] = &[
10955                {
10956                    fn LookAheadPeriodTooLong(
10957                        data: &[u8],
10958                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10959                        <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_decode_raw(data)
10960                            .map(StakeRegistryErrors::LookAheadPeriodTooLong)
10961                    }
10962                    LookAheadPeriodTooLong
10963                },
10964                {
10965                    fn BelowMinimumStakeRequirement(
10966                        data: &[u8],
10967                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10968                        <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_decode_raw(
10969                            data,
10970                        )
10971                        .map(StakeRegistryErrors::BelowMinimumStakeRequirement)
10972                    }
10973                    BelowMinimumStakeRequirement
10974                },
10975                {
10976                    fn QuorumAlreadyExists(
10977                        data: &[u8],
10978                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10979                        <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(data)
10980                            .map(StakeRegistryErrors::QuorumAlreadyExists)
10981                    }
10982                    QuorumAlreadyExists
10983                },
10984                {
10985                    fn InputArrayLengthMismatch(
10986                        data: &[u8],
10987                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10988                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
10989                            data,
10990                        )
10991                        .map(StakeRegistryErrors::InputArrayLengthMismatch)
10992                    }
10993                    InputArrayLengthMismatch
10994                },
10995                {
10996                    fn InvalidBlockNumber(
10997                        data: &[u8],
10998                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10999                        <InvalidBlockNumber as alloy_sol_types::SolError>::abi_decode_raw(data)
11000                            .map(StakeRegistryErrors::InvalidBlockNumber)
11001                    }
11002                    InvalidBlockNumber
11003                },
11004                {
11005                    fn InputMultiplierZero(
11006                        data: &[u8],
11007                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11008                        <InputMultiplierZero as alloy_sol_types::SolError>::abi_decode_raw(data)
11009                            .map(StakeRegistryErrors::InputMultiplierZero)
11010                    }
11011                    InputMultiplierZero
11012                },
11013                {
11014                    fn InputArrayLengthZero(
11015                        data: &[u8],
11016                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11017                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw(data)
11018                            .map(StakeRegistryErrors::InputArrayLengthZero)
11019                    }
11020                    InputArrayLengthZero
11021                },
11022                {
11023                    fn InputDuplicateStrategy(
11024                        data: &[u8],
11025                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11026                        <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_decode_raw(data)
11027                            .map(StakeRegistryErrors::InputDuplicateStrategy)
11028                    }
11029                    InputDuplicateStrategy
11030                },
11031                {
11032                    fn QuorumNotSlashable(
11033                        data: &[u8],
11034                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11035                        <QuorumNotSlashable as alloy_sol_types::SolError>::abi_decode_raw(data)
11036                            .map(StakeRegistryErrors::QuorumNotSlashable)
11037                    }
11038                    QuorumNotSlashable
11039                },
11040                {
11041                    fn OnlySlashingRegistryCoordinator(
11042                        data: &[u8],
11043                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11044                        <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw(
11045                                data,
11046                            )
11047                            .map(StakeRegistryErrors::OnlySlashingRegistryCoordinator)
11048                    }
11049                    OnlySlashingRegistryCoordinator
11050                },
11051                {
11052                    fn EmptyStakeHistory(
11053                        data: &[u8],
11054                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11055                        <EmptyStakeHistory as alloy_sol_types::SolError>::abi_decode_raw(data)
11056                            .map(StakeRegistryErrors::EmptyStakeHistory)
11057                    }
11058                    EmptyStakeHistory
11059                },
11060                {
11061                    fn OnlySlashingRegistryCoordinatorOwner(
11062                        data: &[u8],
11063                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11064                        <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
11065                                data,
11066                            )
11067                            .map(
11068                                StakeRegistryErrors::OnlySlashingRegistryCoordinatorOwner,
11069                            )
11070                    }
11071                    OnlySlashingRegistryCoordinatorOwner
11072                },
11073                {
11074                    fn QuorumDoesNotExist(
11075                        data: &[u8],
11076                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11077                        <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw(data)
11078                            .map(StakeRegistryErrors::QuorumDoesNotExist)
11079                    }
11080                    QuorumDoesNotExist
11081                },
11082            ];
11083            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11084                return Err(alloy_sol_types::Error::unknown_selector(
11085                    <Self as alloy_sol_types::SolInterface>::NAME,
11086                    selector,
11087                ));
11088            };
11089            DECODE_SHIMS[idx](data)
11090        }
11091        #[inline]
11092        #[allow(non_snake_case)]
11093        fn abi_decode_raw_validate(
11094            selector: [u8; 4],
11095            data: &[u8],
11096        ) -> alloy_sol_types::Result<Self> {
11097            static DECODE_VALIDATE_SHIMS: &[fn(
11098                &[u8],
11099            )
11100                -> alloy_sol_types::Result<StakeRegistryErrors>] = &[
11101                {
11102                    fn LookAheadPeriodTooLong(
11103                        data: &[u8],
11104                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11105                        <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(
11106                                data,
11107                            )
11108                            .map(StakeRegistryErrors::LookAheadPeriodTooLong)
11109                    }
11110                    LookAheadPeriodTooLong
11111                },
11112                {
11113                    fn BelowMinimumStakeRequirement(
11114                        data: &[u8],
11115                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11116                        <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_decode_raw_validate(
11117                                data,
11118                            )
11119                            .map(StakeRegistryErrors::BelowMinimumStakeRequirement)
11120                    }
11121                    BelowMinimumStakeRequirement
11122                },
11123                {
11124                    fn QuorumAlreadyExists(
11125                        data: &[u8],
11126                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11127                        <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
11128                            data,
11129                        )
11130                        .map(StakeRegistryErrors::QuorumAlreadyExists)
11131                    }
11132                    QuorumAlreadyExists
11133                },
11134                {
11135                    fn InputArrayLengthMismatch(
11136                        data: &[u8],
11137                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11138                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
11139                                data,
11140                            )
11141                            .map(StakeRegistryErrors::InputArrayLengthMismatch)
11142                    }
11143                    InputArrayLengthMismatch
11144                },
11145                {
11146                    fn InvalidBlockNumber(
11147                        data: &[u8],
11148                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11149                        <InvalidBlockNumber as alloy_sol_types::SolError>::abi_decode_raw_validate(
11150                            data,
11151                        )
11152                        .map(StakeRegistryErrors::InvalidBlockNumber)
11153                    }
11154                    InvalidBlockNumber
11155                },
11156                {
11157                    fn InputMultiplierZero(
11158                        data: &[u8],
11159                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11160                        <InputMultiplierZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
11161                            data,
11162                        )
11163                        .map(StakeRegistryErrors::InputMultiplierZero)
11164                    }
11165                    InputMultiplierZero
11166                },
11167                {
11168                    fn InputArrayLengthZero(
11169                        data: &[u8],
11170                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11171                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
11172                                data,
11173                            )
11174                            .map(StakeRegistryErrors::InputArrayLengthZero)
11175                    }
11176                    InputArrayLengthZero
11177                },
11178                {
11179                    fn InputDuplicateStrategy(
11180                        data: &[u8],
11181                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11182                        <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_decode_raw_validate(
11183                                data,
11184                            )
11185                            .map(StakeRegistryErrors::InputDuplicateStrategy)
11186                    }
11187                    InputDuplicateStrategy
11188                },
11189                {
11190                    fn QuorumNotSlashable(
11191                        data: &[u8],
11192                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11193                        <QuorumNotSlashable as alloy_sol_types::SolError>::abi_decode_raw_validate(
11194                            data,
11195                        )
11196                        .map(StakeRegistryErrors::QuorumNotSlashable)
11197                    }
11198                    QuorumNotSlashable
11199                },
11200                {
11201                    fn OnlySlashingRegistryCoordinator(
11202                        data: &[u8],
11203                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11204                        <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw_validate(
11205                                data,
11206                            )
11207                            .map(StakeRegistryErrors::OnlySlashingRegistryCoordinator)
11208                    }
11209                    OnlySlashingRegistryCoordinator
11210                },
11211                {
11212                    fn EmptyStakeHistory(
11213                        data: &[u8],
11214                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11215                        <EmptyStakeHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
11216                            data,
11217                        )
11218                        .map(StakeRegistryErrors::EmptyStakeHistory)
11219                    }
11220                    EmptyStakeHistory
11221                },
11222                {
11223                    fn OnlySlashingRegistryCoordinatorOwner(
11224                        data: &[u8],
11225                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11226                        <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
11227                                data,
11228                            )
11229                            .map(
11230                                StakeRegistryErrors::OnlySlashingRegistryCoordinatorOwner,
11231                            )
11232                    }
11233                    OnlySlashingRegistryCoordinatorOwner
11234                },
11235                {
11236                    fn QuorumDoesNotExist(
11237                        data: &[u8],
11238                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11239                        <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw_validate(
11240                            data,
11241                        )
11242                        .map(StakeRegistryErrors::QuorumDoesNotExist)
11243                    }
11244                    QuorumDoesNotExist
11245                },
11246            ];
11247            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11248                return Err(alloy_sol_types::Error::unknown_selector(
11249                    <Self as alloy_sol_types::SolInterface>::NAME,
11250                    selector,
11251                ));
11252            };
11253            DECODE_VALIDATE_SHIMS[idx](data)
11254        }
11255        #[inline]
11256        fn abi_encoded_size(&self) -> usize {
11257            match self {
11258                Self::BelowMinimumStakeRequirement(inner) => {
11259                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_encoded_size(
11260                        inner,
11261                    )
11262                }
11263                Self::EmptyStakeHistory(inner) => {
11264                    <EmptyStakeHistory as alloy_sol_types::SolError>::abi_encoded_size(
11265                        inner,
11266                    )
11267                }
11268                Self::InputArrayLengthMismatch(inner) => {
11269                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
11270                        inner,
11271                    )
11272                }
11273                Self::InputArrayLengthZero(inner) => {
11274                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encoded_size(
11275                        inner,
11276                    )
11277                }
11278                Self::InputDuplicateStrategy(inner) => {
11279                    <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_encoded_size(
11280                        inner,
11281                    )
11282                }
11283                Self::InputMultiplierZero(inner) => {
11284                    <InputMultiplierZero as alloy_sol_types::SolError>::abi_encoded_size(
11285                        inner,
11286                    )
11287                }
11288                Self::InvalidBlockNumber(inner) => {
11289                    <InvalidBlockNumber as alloy_sol_types::SolError>::abi_encoded_size(
11290                        inner,
11291                    )
11292                }
11293                Self::LookAheadPeriodTooLong(inner) => {
11294                    <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_encoded_size(
11295                        inner,
11296                    )
11297                }
11298                Self::OnlySlashingRegistryCoordinator(inner) => {
11299                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_encoded_size(
11300                        inner,
11301                    )
11302                }
11303                Self::OnlySlashingRegistryCoordinatorOwner(inner) => {
11304                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
11305                        inner,
11306                    )
11307                }
11308                Self::QuorumAlreadyExists(inner) => {
11309                    <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
11310                        inner,
11311                    )
11312                }
11313                Self::QuorumDoesNotExist(inner) => {
11314                    <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encoded_size(
11315                        inner,
11316                    )
11317                }
11318                Self::QuorumNotSlashable(inner) => {
11319                    <QuorumNotSlashable as alloy_sol_types::SolError>::abi_encoded_size(
11320                        inner,
11321                    )
11322                }
11323            }
11324        }
11325        #[inline]
11326        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11327            match self {
11328                Self::BelowMinimumStakeRequirement(inner) => {
11329                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_encode_raw(
11330                        inner,
11331                        out,
11332                    )
11333                }
11334                Self::EmptyStakeHistory(inner) => {
11335                    <EmptyStakeHistory as alloy_sol_types::SolError>::abi_encode_raw(
11336                        inner,
11337                        out,
11338                    )
11339                }
11340                Self::InputArrayLengthMismatch(inner) => {
11341                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
11342                        inner,
11343                        out,
11344                    )
11345                }
11346                Self::InputArrayLengthZero(inner) => {
11347                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encode_raw(
11348                        inner,
11349                        out,
11350                    )
11351                }
11352                Self::InputDuplicateStrategy(inner) => {
11353                    <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_encode_raw(
11354                        inner,
11355                        out,
11356                    )
11357                }
11358                Self::InputMultiplierZero(inner) => {
11359                    <InputMultiplierZero as alloy_sol_types::SolError>::abi_encode_raw(
11360                        inner,
11361                        out,
11362                    )
11363                }
11364                Self::InvalidBlockNumber(inner) => {
11365                    <InvalidBlockNumber as alloy_sol_types::SolError>::abi_encode_raw(
11366                        inner,
11367                        out,
11368                    )
11369                }
11370                Self::LookAheadPeriodTooLong(inner) => {
11371                    <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_encode_raw(
11372                        inner,
11373                        out,
11374                    )
11375                }
11376                Self::OnlySlashingRegistryCoordinator(inner) => {
11377                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_encode_raw(
11378                        inner,
11379                        out,
11380                    )
11381                }
11382                Self::OnlySlashingRegistryCoordinatorOwner(inner) => {
11383                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
11384                        inner,
11385                        out,
11386                    )
11387                }
11388                Self::QuorumAlreadyExists(inner) => {
11389                    <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
11390                        inner,
11391                        out,
11392                    )
11393                }
11394                Self::QuorumDoesNotExist(inner) => {
11395                    <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encode_raw(
11396                        inner,
11397                        out,
11398                    )
11399                }
11400                Self::QuorumNotSlashable(inner) => {
11401                    <QuorumNotSlashable as alloy_sol_types::SolError>::abi_encode_raw(
11402                        inner,
11403                        out,
11404                    )
11405                }
11406            }
11407        }
11408    }
11409    ///Container for all the [`StakeRegistry`](self) events.
11410    #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
11411    pub enum StakeRegistryEvents {
11412        #[allow(missing_docs)]
11413        LookAheadPeriodChanged(LookAheadPeriodChanged),
11414        #[allow(missing_docs)]
11415        MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated),
11416        #[allow(missing_docs)]
11417        OperatorStakeUpdate(OperatorStakeUpdate),
11418        #[allow(missing_docs)]
11419        QuorumCreated(QuorumCreated),
11420        #[allow(missing_docs)]
11421        StakeTypeSet(StakeTypeSet),
11422        #[allow(missing_docs)]
11423        StrategyAddedToQuorum(StrategyAddedToQuorum),
11424        #[allow(missing_docs)]
11425        StrategyMultiplierUpdated(StrategyMultiplierUpdated),
11426        #[allow(missing_docs)]
11427        StrategyRemovedFromQuorum(StrategyRemovedFromQuorum),
11428    }
11429    #[automatically_derived]
11430    impl StakeRegistryEvents {
11431        /// All the selectors of this enum.
11432        ///
11433        /// Note that the selectors might not be in the same order as the variants.
11434        /// No guarantees are made about the order of the selectors.
11435        ///
11436        /// Prefer using `SolInterface` methods instead.
11437        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11438            [
11439                16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8, 69u8, 240u8,
11440                84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8, 19u8, 211u8, 48u8, 33u8,
11441                130u8, 173u8, 150u8, 127u8, 84u8, 4u8,
11442            ],
11443            [
11444                17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8, 110u8,
11445                170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8, 205u8, 22u8, 52u8,
11446                55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8,
11447            ],
11448            [
11449                38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8, 217u8,
11450                64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8, 31u8, 196u8,
11451                135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8,
11452            ],
11453            [
11454                40u8, 215u8, 53u8, 139u8, 121u8, 240u8, 45u8, 33u8, 184u8, 183u8, 225u8, 122u8,
11455                239u8, 196u8, 24u8, 90u8, 100u8, 48u8, 138u8, 163u8, 116u8, 6u8, 250u8, 91u8,
11456                239u8, 192u8, 91u8, 145u8, 147u8, 44u8, 57u8, 199u8,
11457            ],
11458            [
11459                47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8, 83u8,
11460                119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8, 208u8, 143u8,
11461                18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8,
11462            ],
11463            [
11464                49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8, 207u8, 61u8,
11465                129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8, 248u8, 211u8, 221u8,
11466                182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8,
11467            ],
11468            [
11469                124u8, 17u8, 46u8, 134u8, 60u8, 207u8, 0u8, 120u8, 98u8, 226u8, 201u8, 226u8, 88u8,
11470                25u8, 201u8, 51u8, 254u8, 219u8, 201u8, 53u8, 10u8, 100u8, 67u8, 66u8, 59u8, 74u8,
11471                133u8, 153u8, 194u8, 232u8, 165u8, 45u8,
11472            ],
11473            [
11474                131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8, 100u8,
11475                190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8, 74u8, 192u8,
11476                42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8,
11477            ],
11478        ];
11479    }
11480    #[automatically_derived]
11481    impl alloy_sol_types::SolEventInterface for StakeRegistryEvents {
11482        const NAME: &'static str = "StakeRegistryEvents";
11483        const COUNT: usize = 8usize;
11484        fn decode_raw_log(
11485            topics: &[alloy_sol_types::Word],
11486            data: &[u8],
11487        ) -> alloy_sol_types::Result<Self> {
11488            match topics.first().copied() {
11489                Some(<LookAheadPeriodChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11490                    <LookAheadPeriodChanged as alloy_sol_types::SolEvent>::decode_raw_log(
11491                        topics, data,
11492                    )
11493                    .map(Self::LookAheadPeriodChanged)
11494                }
11495                Some(
11496                    <MinimumStakeForQuorumUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11497                ) => <MinimumStakeForQuorumUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11498                    topics, data,
11499                )
11500                .map(Self::MinimumStakeForQuorumUpdated),
11501                Some(<OperatorStakeUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11502                    <OperatorStakeUpdate as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11503                        .map(Self::OperatorStakeUpdate)
11504                }
11505                Some(<QuorumCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11506                    <QuorumCreated as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11507                        .map(Self::QuorumCreated)
11508                }
11509                Some(<StakeTypeSet as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11510                    <StakeTypeSet as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11511                        .map(Self::StakeTypeSet)
11512                }
11513                Some(<StrategyAddedToQuorum as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11514                    <StrategyAddedToQuorum as alloy_sol_types::SolEvent>::decode_raw_log(
11515                        topics, data,
11516                    )
11517                    .map(Self::StrategyAddedToQuorum)
11518                }
11519                Some(<StrategyMultiplierUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11520                    <StrategyMultiplierUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11521                        topics, data,
11522                    )
11523                    .map(Self::StrategyMultiplierUpdated)
11524                }
11525                Some(<StrategyRemovedFromQuorum as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11526                    <StrategyRemovedFromQuorum as alloy_sol_types::SolEvent>::decode_raw_log(
11527                        topics, data,
11528                    )
11529                    .map(Self::StrategyRemovedFromQuorum)
11530                }
11531                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11532                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11533                    log: alloy_sol_types::private::Box::new(
11534                        alloy_sol_types::private::LogData::new_unchecked(
11535                            topics.to_vec(),
11536                            data.to_vec().into(),
11537                        ),
11538                    ),
11539                }),
11540            }
11541        }
11542    }
11543    #[automatically_derived]
11544    impl alloy_sol_types::private::IntoLogData for StakeRegistryEvents {
11545        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11546            match self {
11547                Self::LookAheadPeriodChanged(inner) => {
11548                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11549                }
11550                Self::MinimumStakeForQuorumUpdated(inner) => {
11551                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11552                }
11553                Self::OperatorStakeUpdate(inner) => {
11554                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11555                }
11556                Self::QuorumCreated(inner) => {
11557                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11558                }
11559                Self::StakeTypeSet(inner) => {
11560                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11561                }
11562                Self::StrategyAddedToQuorum(inner) => {
11563                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11564                }
11565                Self::StrategyMultiplierUpdated(inner) => {
11566                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11567                }
11568                Self::StrategyRemovedFromQuorum(inner) => {
11569                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11570                }
11571            }
11572        }
11573        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11574            match self {
11575                Self::LookAheadPeriodChanged(inner) => {
11576                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11577                }
11578                Self::MinimumStakeForQuorumUpdated(inner) => {
11579                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11580                }
11581                Self::OperatorStakeUpdate(inner) => {
11582                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11583                }
11584                Self::QuorumCreated(inner) => {
11585                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11586                }
11587                Self::StakeTypeSet(inner) => {
11588                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11589                }
11590                Self::StrategyAddedToQuorum(inner) => {
11591                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11592                }
11593                Self::StrategyMultiplierUpdated(inner) => {
11594                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11595                }
11596                Self::StrategyRemovedFromQuorum(inner) => {
11597                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11598                }
11599            }
11600        }
11601    }
11602    use alloy::contract as alloy_contract;
11603    /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance.
11604
11605    See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/
11606    #[inline]
11607    pub const fn new<
11608        P: alloy_contract::private::Provider<N>,
11609        N: alloy_contract::private::Network,
11610    >(
11611        address: alloy_sol_types::private::Address,
11612        provider: P,
11613    ) -> StakeRegistryInstance<P, N> {
11614        StakeRegistryInstance::<P, N>::new(address, provider)
11615    }
11616    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11617
11618    Returns a new instance of the contract, if the deployment was successful.
11619
11620    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11621    #[inline]
11622    pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
11623        provider: P,
11624        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11625        _delegationManager: alloy::sol_types::private::Address,
11626        _avsDirectory: alloy::sol_types::private::Address,
11627        _allocationManager: alloy::sol_types::private::Address,
11628    ) -> impl ::core::future::Future<Output = alloy_contract::Result<StakeRegistryInstance<P, N>>>
11629    {
11630        StakeRegistryInstance::<P, N>::deploy(
11631            provider,
11632            _slashingRegistryCoordinator,
11633            _delegationManager,
11634            _avsDirectory,
11635            _allocationManager,
11636        )
11637    }
11638    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11639    and constructor arguments, if any.
11640
11641    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11642    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11643    #[inline]
11644    pub fn deploy_builder<
11645        P: alloy_contract::private::Provider<N>,
11646        N: alloy_contract::private::Network,
11647    >(
11648        provider: P,
11649        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11650        _delegationManager: alloy::sol_types::private::Address,
11651        _avsDirectory: alloy::sol_types::private::Address,
11652        _allocationManager: alloy::sol_types::private::Address,
11653    ) -> alloy_contract::RawCallBuilder<P, N> {
11654        StakeRegistryInstance::<P, N>::deploy_builder(
11655            provider,
11656            _slashingRegistryCoordinator,
11657            _delegationManager,
11658            _avsDirectory,
11659            _allocationManager,
11660        )
11661    }
11662    /**A [`StakeRegistry`](self) instance.
11663
11664    Contains type-safe methods for interacting with an on-chain instance of the
11665    [`StakeRegistry`](self) contract located at a given `address`, using a given
11666    provider `P`.
11667
11668    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11669    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11670    be used to deploy a new instance of the contract.
11671
11672    See the [module-level documentation](self) for all the available methods.*/
11673    #[derive(Clone)]
11674    pub struct StakeRegistryInstance<P, N = alloy_contract::private::Ethereum> {
11675        address: alloy_sol_types::private::Address,
11676        provider: P,
11677        _network: ::core::marker::PhantomData<N>,
11678    }
11679    #[automatically_derived]
11680    impl<P, N> ::core::fmt::Debug for StakeRegistryInstance<P, N> {
11681        #[inline]
11682        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11683            f.debug_tuple("StakeRegistryInstance")
11684                .field(&self.address)
11685                .finish()
11686        }
11687    }
11688    /// Instantiation and getters/setters.
11689    #[automatically_derived]
11690    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
11691        StakeRegistryInstance<P, N>
11692    {
11693        /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance.
11694
11695        See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/
11696        #[inline]
11697        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
11698            Self {
11699                address,
11700                provider,
11701                _network: ::core::marker::PhantomData,
11702            }
11703        }
11704        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11705
11706        Returns a new instance of the contract, if the deployment was successful.
11707
11708        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11709        #[inline]
11710        pub async fn deploy(
11711            provider: P,
11712            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11713            _delegationManager: alloy::sol_types::private::Address,
11714            _avsDirectory: alloy::sol_types::private::Address,
11715            _allocationManager: alloy::sol_types::private::Address,
11716        ) -> alloy_contract::Result<StakeRegistryInstance<P, N>> {
11717            let call_builder = Self::deploy_builder(
11718                provider,
11719                _slashingRegistryCoordinator,
11720                _delegationManager,
11721                _avsDirectory,
11722                _allocationManager,
11723            );
11724            let contract_address = call_builder.deploy().await?;
11725            Ok(Self::new(contract_address, call_builder.provider))
11726        }
11727        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11728        and constructor arguments, if any.
11729
11730        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11731        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11732        #[inline]
11733        pub fn deploy_builder(
11734            provider: P,
11735            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11736            _delegationManager: alloy::sol_types::private::Address,
11737            _avsDirectory: alloy::sol_types::private::Address,
11738            _allocationManager: alloy::sol_types::private::Address,
11739        ) -> alloy_contract::RawCallBuilder<P, N> {
11740            alloy_contract::RawCallBuilder::new_raw_deploy(
11741                provider,
11742                [
11743                    &BYTECODE[..],
11744                    &alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
11745                        _slashingRegistryCoordinator,
11746                        _delegationManager,
11747                        _avsDirectory,
11748                        _allocationManager,
11749                    })[..],
11750                ]
11751                .concat()
11752                .into(),
11753            )
11754        }
11755        /// Returns a reference to the address.
11756        #[inline]
11757        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11758            &self.address
11759        }
11760        /// Sets the address.
11761        #[inline]
11762        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11763            self.address = address;
11764        }
11765        /// Sets the address and returns `self`.
11766        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11767            self.set_address(address);
11768            self
11769        }
11770        /// Returns a reference to the provider.
11771        #[inline]
11772        pub const fn provider(&self) -> &P {
11773            &self.provider
11774        }
11775    }
11776    impl<P: ::core::clone::Clone, N> StakeRegistryInstance<&P, N> {
11777        /// Clones the provider and returns a new instance with the cloned provider.
11778        #[inline]
11779        pub fn with_cloned_provider(self) -> StakeRegistryInstance<P, N> {
11780            StakeRegistryInstance {
11781                address: self.address,
11782                provider: ::core::clone::Clone::clone(&self.provider),
11783                _network: ::core::marker::PhantomData,
11784            }
11785        }
11786    }
11787    /// Function calls.
11788    #[automatically_derived]
11789    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
11790        StakeRegistryInstance<P, N>
11791    {
11792        /// Creates a new call builder using this contract instance's provider and address.
11793        ///
11794        /// Note that the call can be any function call, not just those defined in this
11795        /// contract. Prefer using the other methods for building type-safe contract calls.
11796        pub fn call_builder<C: alloy_sol_types::SolCall>(
11797            &self,
11798            call: &C,
11799        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
11800            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11801        }
11802        ///Creates a new call builder for the [`MAX_WEIGHING_FUNCTION_LENGTH`] function.
11803        pub fn MAX_WEIGHING_FUNCTION_LENGTH(
11804            &self,
11805        ) -> alloy_contract::SolCallBuilder<&P, MAX_WEIGHING_FUNCTION_LENGTHCall, N> {
11806            self.call_builder(&MAX_WEIGHING_FUNCTION_LENGTHCall)
11807        }
11808        ///Creates a new call builder for the [`WEIGHTING_DIVISOR`] function.
11809        pub fn WEIGHTING_DIVISOR(
11810            &self,
11811        ) -> alloy_contract::SolCallBuilder<&P, WEIGHTING_DIVISORCall, N> {
11812            self.call_builder(&WEIGHTING_DIVISORCall)
11813        }
11814        ///Creates a new call builder for the [`addStrategies`] function.
11815        pub fn addStrategies(
11816            &self,
11817            quorumNumber: u8,
11818            _strategyParams: alloy::sol_types::private::Vec<
11819                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
11820            >,
11821        ) -> alloy_contract::SolCallBuilder<&P, addStrategiesCall, N> {
11822            self.call_builder(&addStrategiesCall {
11823                quorumNumber,
11824                _strategyParams,
11825            })
11826        }
11827        ///Creates a new call builder for the [`allocationManager`] function.
11828        pub fn allocationManager(
11829            &self,
11830        ) -> alloy_contract::SolCallBuilder<&P, allocationManagerCall, N> {
11831            self.call_builder(&allocationManagerCall)
11832        }
11833        ///Creates a new call builder for the [`avsDirectory`] function.
11834        pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder<&P, avsDirectoryCall, N> {
11835            self.call_builder(&avsDirectoryCall)
11836        }
11837        ///Creates a new call builder for the [`delegation`] function.
11838        pub fn delegation(&self) -> alloy_contract::SolCallBuilder<&P, delegationCall, N> {
11839            self.call_builder(&delegationCall)
11840        }
11841        ///Creates a new call builder for the [`deregisterOperator`] function.
11842        pub fn deregisterOperator(
11843            &self,
11844            operatorId: alloy::sol_types::private::FixedBytes<32>,
11845            quorumNumbers: alloy::sol_types::private::Bytes,
11846        ) -> alloy_contract::SolCallBuilder<&P, deregisterOperatorCall, N> {
11847            self.call_builder(&deregisterOperatorCall {
11848                operatorId,
11849                quorumNumbers,
11850            })
11851        }
11852        ///Creates a new call builder for the [`getCurrentStake`] function.
11853        pub fn getCurrentStake(
11854            &self,
11855            operatorId: alloy::sol_types::private::FixedBytes<32>,
11856            quorumNumber: u8,
11857        ) -> alloy_contract::SolCallBuilder<&P, getCurrentStakeCall, N> {
11858            self.call_builder(&getCurrentStakeCall {
11859                operatorId,
11860                quorumNumber,
11861            })
11862        }
11863        ///Creates a new call builder for the [`getCurrentTotalStake`] function.
11864        pub fn getCurrentTotalStake(
11865            &self,
11866            quorumNumber: u8,
11867        ) -> alloy_contract::SolCallBuilder<&P, getCurrentTotalStakeCall, N> {
11868            self.call_builder(&getCurrentTotalStakeCall { quorumNumber })
11869        }
11870        ///Creates a new call builder for the [`getLatestStakeUpdate`] function.
11871        pub fn getLatestStakeUpdate(
11872            &self,
11873            operatorId: alloy::sol_types::private::FixedBytes<32>,
11874            quorumNumber: u8,
11875        ) -> alloy_contract::SolCallBuilder<&P, getLatestStakeUpdateCall, N> {
11876            self.call_builder(&getLatestStakeUpdateCall {
11877                operatorId,
11878                quorumNumber,
11879            })
11880        }
11881        ///Creates a new call builder for the [`getStakeAtBlockNumber`] function.
11882        pub fn getStakeAtBlockNumber(
11883            &self,
11884            operatorId: alloy::sol_types::private::FixedBytes<32>,
11885            quorumNumber: u8,
11886            blockNumber: u32,
11887        ) -> alloy_contract::SolCallBuilder<&P, getStakeAtBlockNumberCall, N> {
11888            self.call_builder(&getStakeAtBlockNumberCall {
11889                operatorId,
11890                quorumNumber,
11891                blockNumber,
11892            })
11893        }
11894        ///Creates a new call builder for the [`getStakeAtBlockNumberAndIndex`] function.
11895        pub fn getStakeAtBlockNumberAndIndex(
11896            &self,
11897            quorumNumber: u8,
11898            blockNumber: u32,
11899            operatorId: alloy::sol_types::private::FixedBytes<32>,
11900            index: alloy::sol_types::private::primitives::aliases::U256,
11901        ) -> alloy_contract::SolCallBuilder<&P, getStakeAtBlockNumberAndIndexCall, N> {
11902            self.call_builder(&getStakeAtBlockNumberAndIndexCall {
11903                quorumNumber,
11904                blockNumber,
11905                operatorId,
11906                index,
11907            })
11908        }
11909        ///Creates a new call builder for the [`getStakeHistory`] function.
11910        pub fn getStakeHistory(
11911            &self,
11912            operatorId: alloy::sol_types::private::FixedBytes<32>,
11913            quorumNumber: u8,
11914        ) -> alloy_contract::SolCallBuilder<&P, getStakeHistoryCall, N> {
11915            self.call_builder(&getStakeHistoryCall {
11916                operatorId,
11917                quorumNumber,
11918            })
11919        }
11920        ///Creates a new call builder for the [`getStakeHistoryLength`] function.
11921        pub fn getStakeHistoryLength(
11922            &self,
11923            operatorId: alloy::sol_types::private::FixedBytes<32>,
11924            quorumNumber: u8,
11925        ) -> alloy_contract::SolCallBuilder<&P, getStakeHistoryLengthCall, N> {
11926            self.call_builder(&getStakeHistoryLengthCall {
11927                operatorId,
11928                quorumNumber,
11929            })
11930        }
11931        ///Creates a new call builder for the [`getStakeUpdateAtIndex`] function.
11932        pub fn getStakeUpdateAtIndex(
11933            &self,
11934            quorumNumber: u8,
11935            operatorId: alloy::sol_types::private::FixedBytes<32>,
11936            index: alloy::sol_types::private::primitives::aliases::U256,
11937        ) -> alloy_contract::SolCallBuilder<&P, getStakeUpdateAtIndexCall, N> {
11938            self.call_builder(&getStakeUpdateAtIndexCall {
11939                quorumNumber,
11940                operatorId,
11941                index,
11942            })
11943        }
11944        ///Creates a new call builder for the [`getStakeUpdateIndexAtBlockNumber`] function.
11945        pub fn getStakeUpdateIndexAtBlockNumber(
11946            &self,
11947            operatorId: alloy::sol_types::private::FixedBytes<32>,
11948            quorumNumber: u8,
11949            blockNumber: u32,
11950        ) -> alloy_contract::SolCallBuilder<&P, getStakeUpdateIndexAtBlockNumberCall, N> {
11951            self.call_builder(&getStakeUpdateIndexAtBlockNumberCall {
11952                operatorId,
11953                quorumNumber,
11954                blockNumber,
11955            })
11956        }
11957        ///Creates a new call builder for the [`getTotalStakeAtBlockNumberFromIndex`] function.
11958        pub fn getTotalStakeAtBlockNumberFromIndex(
11959            &self,
11960            quorumNumber: u8,
11961            blockNumber: u32,
11962            index: alloy::sol_types::private::primitives::aliases::U256,
11963        ) -> alloy_contract::SolCallBuilder<&P, getTotalStakeAtBlockNumberFromIndexCall, N>
11964        {
11965            self.call_builder(&getTotalStakeAtBlockNumberFromIndexCall {
11966                quorumNumber,
11967                blockNumber,
11968                index,
11969            })
11970        }
11971        ///Creates a new call builder for the [`getTotalStakeHistoryLength`] function.
11972        pub fn getTotalStakeHistoryLength(
11973            &self,
11974            quorumNumber: u8,
11975        ) -> alloy_contract::SolCallBuilder<&P, getTotalStakeHistoryLengthCall, N> {
11976            self.call_builder(&getTotalStakeHistoryLengthCall { quorumNumber })
11977        }
11978        ///Creates a new call builder for the [`getTotalStakeIndicesAtBlockNumber`] function.
11979        pub fn getTotalStakeIndicesAtBlockNumber(
11980            &self,
11981            blockNumber: u32,
11982            quorumNumbers: alloy::sol_types::private::Bytes,
11983        ) -> alloy_contract::SolCallBuilder<&P, getTotalStakeIndicesAtBlockNumberCall, N> {
11984            self.call_builder(&getTotalStakeIndicesAtBlockNumberCall {
11985                blockNumber,
11986                quorumNumbers,
11987            })
11988        }
11989        ///Creates a new call builder for the [`getTotalStakeUpdateAtIndex`] function.
11990        pub fn getTotalStakeUpdateAtIndex(
11991            &self,
11992            quorumNumber: u8,
11993            index: alloy::sol_types::private::primitives::aliases::U256,
11994        ) -> alloy_contract::SolCallBuilder<&P, getTotalStakeUpdateAtIndexCall, N> {
11995            self.call_builder(&getTotalStakeUpdateAtIndexCall {
11996                quorumNumber,
11997                index,
11998            })
11999        }
12000        ///Creates a new call builder for the [`initializeDelegatedStakeQuorum`] function.
12001        pub fn initializeDelegatedStakeQuorum(
12002            &self,
12003            quorumNumber: u8,
12004            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
12005            _strategyParams: alloy::sol_types::private::Vec<
12006                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
12007            >,
12008        ) -> alloy_contract::SolCallBuilder<&P, initializeDelegatedStakeQuorumCall, N> {
12009            self.call_builder(&initializeDelegatedStakeQuorumCall {
12010                quorumNumber,
12011                minimumStake,
12012                _strategyParams,
12013            })
12014        }
12015        ///Creates a new call builder for the [`initializeSlashableStakeQuorum`] function.
12016        pub fn initializeSlashableStakeQuorum(
12017            &self,
12018            quorumNumber: u8,
12019            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
12020            lookAheadPeriod: u32,
12021            _strategyParams: alloy::sol_types::private::Vec<
12022                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
12023            >,
12024        ) -> alloy_contract::SolCallBuilder<&P, initializeSlashableStakeQuorumCall, N> {
12025            self.call_builder(&initializeSlashableStakeQuorumCall {
12026                quorumNumber,
12027                minimumStake,
12028                lookAheadPeriod,
12029                _strategyParams,
12030            })
12031        }
12032        ///Creates a new call builder for the [`minimumStakeForQuorum`] function.
12033        pub fn minimumStakeForQuorum(
12034            &self,
12035            _0: u8,
12036        ) -> alloy_contract::SolCallBuilder<&P, minimumStakeForQuorumCall, N> {
12037            self.call_builder(&minimumStakeForQuorumCall(_0))
12038        }
12039        ///Creates a new call builder for the [`modifyStrategyParams`] function.
12040        pub fn modifyStrategyParams(
12041            &self,
12042            quorumNumber: u8,
12043            strategyIndices: alloy::sol_types::private::Vec<
12044                alloy::sol_types::private::primitives::aliases::U256,
12045            >,
12046            newMultipliers: alloy::sol_types::private::Vec<
12047                alloy::sol_types::private::primitives::aliases::U96,
12048            >,
12049        ) -> alloy_contract::SolCallBuilder<&P, modifyStrategyParamsCall, N> {
12050            self.call_builder(&modifyStrategyParamsCall {
12051                quorumNumber,
12052                strategyIndices,
12053                newMultipliers,
12054            })
12055        }
12056        ///Creates a new call builder for the [`registerOperator`] function.
12057        pub fn registerOperator(
12058            &self,
12059            operator: alloy::sol_types::private::Address,
12060            operatorId: alloy::sol_types::private::FixedBytes<32>,
12061            quorumNumbers: alloy::sol_types::private::Bytes,
12062        ) -> alloy_contract::SolCallBuilder<&P, registerOperatorCall, N> {
12063            self.call_builder(&registerOperatorCall {
12064                operator,
12065                operatorId,
12066                quorumNumbers,
12067            })
12068        }
12069        ///Creates a new call builder for the [`registryCoordinator`] function.
12070        pub fn registryCoordinator(
12071            &self,
12072        ) -> alloy_contract::SolCallBuilder<&P, registryCoordinatorCall, N> {
12073            self.call_builder(&registryCoordinatorCall)
12074        }
12075        ///Creates a new call builder for the [`removeStrategies`] function.
12076        pub fn removeStrategies(
12077            &self,
12078            quorumNumber: u8,
12079            indicesToRemove: alloy::sol_types::private::Vec<
12080                alloy::sol_types::private::primitives::aliases::U256,
12081            >,
12082        ) -> alloy_contract::SolCallBuilder<&P, removeStrategiesCall, N> {
12083            self.call_builder(&removeStrategiesCall {
12084                quorumNumber,
12085                indicesToRemove,
12086            })
12087        }
12088        ///Creates a new call builder for the [`setMinimumStakeForQuorum`] function.
12089        pub fn setMinimumStakeForQuorum(
12090            &self,
12091            quorumNumber: u8,
12092            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
12093        ) -> alloy_contract::SolCallBuilder<&P, setMinimumStakeForQuorumCall, N> {
12094            self.call_builder(&setMinimumStakeForQuorumCall {
12095                quorumNumber,
12096                minimumStake,
12097            })
12098        }
12099        ///Creates a new call builder for the [`setSlashableStakeLookahead`] function.
12100        pub fn setSlashableStakeLookahead(
12101            &self,
12102            quorumNumber: u8,
12103            _lookAheadBlocks: u32,
12104        ) -> alloy_contract::SolCallBuilder<&P, setSlashableStakeLookaheadCall, N> {
12105            self.call_builder(&setSlashableStakeLookaheadCall {
12106                quorumNumber,
12107                _lookAheadBlocks,
12108            })
12109        }
12110        ///Creates a new call builder for the [`slashableStakeLookAheadPerQuorum`] function.
12111        pub fn slashableStakeLookAheadPerQuorum(
12112            &self,
12113            quorumNumber: u8,
12114        ) -> alloy_contract::SolCallBuilder<&P, slashableStakeLookAheadPerQuorumCall, N> {
12115            self.call_builder(&slashableStakeLookAheadPerQuorumCall { quorumNumber })
12116        }
12117        ///Creates a new call builder for the [`stakeTypePerQuorum`] function.
12118        pub fn stakeTypePerQuorum(
12119            &self,
12120            quorumNumber: u8,
12121        ) -> alloy_contract::SolCallBuilder<&P, stakeTypePerQuorumCall, N> {
12122            self.call_builder(&stakeTypePerQuorumCall { quorumNumber })
12123        }
12124        ///Creates a new call builder for the [`strategiesPerQuorum`] function.
12125        pub fn strategiesPerQuorum(
12126            &self,
12127            quorumNumber: u8,
12128            _1: alloy::sol_types::private::primitives::aliases::U256,
12129        ) -> alloy_contract::SolCallBuilder<&P, strategiesPerQuorumCall, N> {
12130            self.call_builder(&strategiesPerQuorumCall { quorumNumber, _1 })
12131        }
12132        ///Creates a new call builder for the [`strategyParams`] function.
12133        pub fn strategyParams(
12134            &self,
12135            quorumNumber: u8,
12136            _1: alloy::sol_types::private::primitives::aliases::U256,
12137        ) -> alloy_contract::SolCallBuilder<&P, strategyParamsCall, N> {
12138            self.call_builder(&strategyParamsCall { quorumNumber, _1 })
12139        }
12140        ///Creates a new call builder for the [`strategyParamsByIndex`] function.
12141        pub fn strategyParamsByIndex(
12142            &self,
12143            quorumNumber: u8,
12144            index: alloy::sol_types::private::primitives::aliases::U256,
12145        ) -> alloy_contract::SolCallBuilder<&P, strategyParamsByIndexCall, N> {
12146            self.call_builder(&strategyParamsByIndexCall {
12147                quorumNumber,
12148                index,
12149            })
12150        }
12151        ///Creates a new call builder for the [`strategyParamsLength`] function.
12152        pub fn strategyParamsLength(
12153            &self,
12154            quorumNumber: u8,
12155        ) -> alloy_contract::SolCallBuilder<&P, strategyParamsLengthCall, N> {
12156            self.call_builder(&strategyParamsLengthCall { quorumNumber })
12157        }
12158        ///Creates a new call builder for the [`updateOperatorsStake`] function.
12159        pub fn updateOperatorsStake(
12160            &self,
12161            operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
12162            operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
12163            quorumNumber: u8,
12164        ) -> alloy_contract::SolCallBuilder<&P, updateOperatorsStakeCall, N> {
12165            self.call_builder(&updateOperatorsStakeCall {
12166                operators,
12167                operatorIds,
12168                quorumNumber,
12169            })
12170        }
12171        ///Creates a new call builder for the [`weightOfOperatorForQuorum`] function.
12172        pub fn weightOfOperatorForQuorum(
12173            &self,
12174            quorumNumber: u8,
12175            operator: alloy::sol_types::private::Address,
12176        ) -> alloy_contract::SolCallBuilder<&P, weightOfOperatorForQuorumCall, N> {
12177            self.call_builder(&weightOfOperatorForQuorumCall {
12178                quorumNumber,
12179                operator,
12180            })
12181        }
12182    }
12183    /// Event filters.
12184    #[automatically_derived]
12185    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
12186        StakeRegistryInstance<P, N>
12187    {
12188        /// Creates a new event filter using this contract instance's provider and address.
12189        ///
12190        /// Note that the type can be any event, not just those defined in this contract.
12191        /// Prefer using the other methods for building type-safe event filters.
12192        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12193            &self,
12194        ) -> alloy_contract::Event<&P, E, N> {
12195            alloy_contract::Event::new_sol(&self.provider, &self.address)
12196        }
12197        ///Creates a new event filter for the [`LookAheadPeriodChanged`] event.
12198        pub fn LookAheadPeriodChanged_filter(
12199            &self,
12200        ) -> alloy_contract::Event<&P, LookAheadPeriodChanged, N> {
12201            self.event_filter::<LookAheadPeriodChanged>()
12202        }
12203        ///Creates a new event filter for the [`MinimumStakeForQuorumUpdated`] event.
12204        pub fn MinimumStakeForQuorumUpdated_filter(
12205            &self,
12206        ) -> alloy_contract::Event<&P, MinimumStakeForQuorumUpdated, N> {
12207            self.event_filter::<MinimumStakeForQuorumUpdated>()
12208        }
12209        ///Creates a new event filter for the [`OperatorStakeUpdate`] event.
12210        pub fn OperatorStakeUpdate_filter(
12211            &self,
12212        ) -> alloy_contract::Event<&P, OperatorStakeUpdate, N> {
12213            self.event_filter::<OperatorStakeUpdate>()
12214        }
12215        ///Creates a new event filter for the [`QuorumCreated`] event.
12216        pub fn QuorumCreated_filter(&self) -> alloy_contract::Event<&P, QuorumCreated, N> {
12217            self.event_filter::<QuorumCreated>()
12218        }
12219        ///Creates a new event filter for the [`StakeTypeSet`] event.
12220        pub fn StakeTypeSet_filter(&self) -> alloy_contract::Event<&P, StakeTypeSet, N> {
12221            self.event_filter::<StakeTypeSet>()
12222        }
12223        ///Creates a new event filter for the [`StrategyAddedToQuorum`] event.
12224        pub fn StrategyAddedToQuorum_filter(
12225            &self,
12226        ) -> alloy_contract::Event<&P, StrategyAddedToQuorum, N> {
12227            self.event_filter::<StrategyAddedToQuorum>()
12228        }
12229        ///Creates a new event filter for the [`StrategyMultiplierUpdated`] event.
12230        pub fn StrategyMultiplierUpdated_filter(
12231            &self,
12232        ) -> alloy_contract::Event<&P, StrategyMultiplierUpdated, N> {
12233            self.event_filter::<StrategyMultiplierUpdated>()
12234        }
12235        ///Creates a new event filter for the [`StrategyRemovedFromQuorum`] event.
12236        pub fn StrategyRemovedFromQuorum_filter(
12237            &self,
12238        ) -> alloy_contract::Event<&P, StrategyRemovedFromQuorum, N> {
12239            self.event_filter::<StrategyRemovedFromQuorum>()
12240        }
12241    }
12242}