
    (iXM                     h   d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZmZmZ d dlmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z%m&Z& d d	l'm(Z(  G d
 dee jR                        Z* G d de*      Z+ G d de*      Z, G d de,      Z- G d de-      Z. G d de.      Z/ G d de-      Z0 G d de0      Z1 e1dd      Z2 G d de1      Z3 G d  d!e0      Z4 G d" d#e4      Z5 G d$ d%e0      Z6 G d& d'e6      Z7 G d( d)e7      Z8 G d* d+e6      Z9 G d, d-e9      Z: G d. d/e-      Z; G d0 d1e;      Z< G d2 d3e-      Z= G d4 d5e=      Z> G d6 d7e*      Z? G d8 d9e?      Z@ G d: d;e*      ZA G d< d=eA      ZB G d> d?e*      ZC G d@ dAeC      ZD G dB dCeC      ZE G dD dEeC      ZFy)F    N)
accumulate)AnyOptionalType)	int_to_big_endian
is_address
is_booleanis_bytes
is_integeris_list_like	is_numberis_textto_canonical_address)	BaseCoderparse_tuple_type_strparse_type_str)EncodingTypeErrorIllegalValueValueOutOfBounds)TENabi_decimal_contextceil32compute_signed_fixed_boundscompute_signed_integer_boundscompute_unsigned_fixed_boundscompute_unsigned_integer_bounds)fpadzpad
zpad_right)abbrc            
           e Zd ZdZej
                  dedefd       Zej
                  deddfd       Z	e
edfdedee   dee   ddfd	       Zdedefd
Zy)BaseEncoderz
    Base class for all encoder classes.  Subclass this if you want to define a
    custom encoder class.  Subclasses must also implement
    :any:`BaseCoder.from_type_str`.
    valuereturnc                      y)z
        Encodes the given value as a sequence of bytes.  Should raise
        :any:`exceptions.EncodingError` if ``value`` cannot be encoded.
        N selfr#   s     A/var/www/br/venv/lib/python3.12/site-packages/eth_abi/encoding.pyencodezBaseEncoder.encode=           Nc                      y)z
        Checks whether or not the given value can be encoded by this encoder.
        If the given value cannot be encoded, must raise
        :any:`exceptions.EncodingError`.
        Nr&   r'   s     r)   validate_valuezBaseEncoder.validate_valueD   r+   r,   excmsgc           
      z     |dt        |       dt        |       d| j                   |d       d|z          )zf
        Throws a standard exception for when a value is not encodable by an
        encoder.
        zValue `z
` of type z cannot be encoded by  z: )r    type__name__)clsr#   r/   r0   s       r)   invalidate_valuezBaseEncoder.invalidate_valueL   s[     d5k]*T%[M9O||n3;RAC
 	
59CZAC
 	
r,   c                 $    | j                  |      S N)r*   r'   s     r)   __call__zBaseEncoder.__call__\   s    {{5!!r,   )r4   
__module____qualname____doc__abcabstractmethodr   bytesr*   r.   classmethodr   r   	Exceptionr   strr6   r9   r&   r,   r)   r"   r"   6   s     	C E   	C D     1!	

 )_
 c]	

 

 
"c "e "r,   r"   )	metaclassc                   H     e Zd ZdZ fdZ fdZd Zd Zed        Z	 xZ
S )TupleEncoderNc                 f    t        |   di | t        d | j                  D              | _        y )Nc              3   6   K   | ]  }t        |d d        yw)
is_dynamicFN)getattr).0es     r)   	<genexpr>z(TupleEncoder.__init__.<locals>.<genexpr>f   s     U!gau=Us   r&   )super__init__anyencodersrH   r(   kwargs	__class__s     r)   rN   zTupleEncoder.__init__c   s)    "6"Ut}}UUr,   c                 P    t         |           | j                  t        d      y )Nz`encoders` may not be none)rM   validaterP   
ValueErrorr(   rS   s    r)   rU   zTupleEncoder.validateh   s)    == 9:: !r,   c           
         t        |      s| j                  |d       t        |      t        | j                        k7  r;| j                  |t        dt        |       dt        | j                         d       t        || j                        D ]  \  }}	 |j                  |        y # t        $ r  ||       Y .w xY w)Nz/must be list-like object such as array or tupler0   
value has  items when  were expectedr/   r0   )r   r6   lenrP   r   zipr.   AttributeError)r(   r#   itemencoders       r)   r.   zTupleEncoder.validate_valuen   s    E"!!E " 
 u:T]]++!!$ ULT]]9K8L M    "  !6 	MD'&&t,	 " s   B,,C ?C c                   	 | j                  |       g }g }t        || j                        D ]c  \  }}t        |dd      r)|j	                  d        |j	                   ||             <|j	                   ||             |j	                  d       e t        d |D              	dt        t        t        t        |d d                   z   }t        	fdt        ||      D              }dj                  |t        |      z         }|S )NrH   Fr,   c              3   :   K   | ]  }|dn
t        |        y w)N    )r^   )rJ   ra   s     r)   rL   z&TupleEncoder.encode.<locals>.<genexpr>   s     X"#d);Xs   r   c              3   H   K   | ]  \  }}|t        |z         n|  y wr8   encode_uint_256)rJ   chunkoffsethead_lengths      r)   rL   z&TupleEncoder.encode.<locals>.<genexpr>   s0      
v 6;]OK&01M
s   ")r.   r_   rP   rI   appendsumtupler   mapr^   join)
r(   valuesraw_head_chunkstail_chunksr#   rb   tail_offsetshead_chunksencoded_valuerm   s
            @r)   r*   zTupleEncoder.encode   s    F#!&$--8 	(NE7we4&&t,""75>2&&wu~6""3'	( XXXeJs3CR8H/I$JKK 
!$_l!C
 

 u[/A!ABr,   c                 R    t        fd|j                  D              } | |      S )Nc              3   \   K   | ]#  }j                  |j                                % y wr8   )get_encoderto_type_str)rJ   cregistrys     r)   rL   z-TupleEncoder.from_type_str.<locals>.<genexpr>   s'      
67H  1
s   ),)rP   )rp   
components)r5   abi_typer~   rP   s     ` r)   from_type_strzTupleEncoder.from_type_str   s-     
;C;N;N
 
 H%%r,   )r4   r:   r;   rP   rN   rU   r.   r*   r   r   __classcell__rS   s   @r)   rE   rE   `   s1    HV
;*. & &r,   rE   c                   >     e Zd ZdZdZdZdZdZ fdZd Z	d Z
 xZS )FixedSizeEncoderNc                 ~   t         |           | j                  t        d      | j                  t        d      | j
                  t        d      | j                  t        d      | j                  dz  dk7  rt        d| j                   d      | j                  | j                  dz  kD  rt        d	      y )
Nz `value_bit_size` may not be nonez `data_byte_size` may not be nonez`encode_fn` may not be nonez`is_big_endian` may not be none   r   zInvalid value bit size: z. Must be a multiple of 8z!Value byte size exceeds data size)rM   rU   value_bit_sizerV   data_byte_size	encode_fnis_big_endianrW   s    r)   rU   zFixedSizeEncoder.validate   s    &?@@&?@@>>!:;;%>??"a'*4+>+>*? @* * 
 !4!4q!88@AA 9r,   c                     t        d      )Nz!Must be implemented by subclasses)NotImplementedErrorr'   s     r)   r.   zFixedSizeEncoder.validate_value   s    !"EFFr,   c                     | j                  |       | j                  t        d      | j                  |      }| j                  rt	        || j
                        }|S t        || j
                        }|S )Nz`encode_fn` is None)r.   r   AssertionErrorr   r   r   r   r(   r#   base_encoded_valuepadded_encoded_values       r)   r*   zFixedSizeEncoder.encode   sv    E">>! !677!^^E2#'(:D<O<O#P  $# $..@$BUBU#V ##r,   )r4   r:   r;   r   r   r   type_check_fnr   rU   r.   r*   r   r   s   @r)   r   r      s-    NNIMMB*G$r,   r   c                       e Zd ZdZy)Fixed32ByteSizeEncoderre   Nr4   r:   r;   r   r&   r,   r)   r   r          Nr,   r   c                   P    e Zd ZdZdZed        Zed        Z ed      d        Z	y)BooleanEncoderr   Tc                 >    t        |      s| j                  |       y y r8   )r	   r6   r5   r#   s     r)   r.   zBooleanEncoder.validate_value       %   ' !r,   c                 ,    |du ry|du ryt        d      )NT   F    	Invariant)rV   r   s     r)   r   zBooleanEncoder.encode_fn   s!    D=e^[))r,   boolc                      |        S r8   r&   r5   r   r~   s      r)   r   zBooleanEncoder.from_type_str   	    ur,   N)
r4   r:   r;   r   r   r@   r.   r   r   r   r&   r,   r)   r   r      sK    NM( ( * * F r,   r   c                       e Zd ZdZy)PackedBooleanEncoder   Nr   r&   r,   r)   r   r      s    Nr,   r   c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )NumberEncoderTNc                 ~    t         |           | j                  t        d      | j                  t        d      y )Nz`bounds_fn` cannot be nullz`type_check_fn` cannot be null)rM   rU   	bounds_fnrV   r   rW   s    r)   rU   zNumberEncoder.validate   sA    >>!9::%=>> &r,   c                    | j                   t        d      | j                  |      s| j                  |       | j                  d uxr | j                  |      }|r| j                  |t               | j                  | j                        \  }}||k  s||kD  r-| j                  |t        d| j                   d| d| d       y y )Nz`type_check_fn` is None)r/   zCannot be encoded in z  bits. Must be bounded between [z, z].r]   )r   r   r6   illegal_value_fnr   r   r   r   )r(   r#   illegal_valuelower_boundupper_bounds        r)   r.   zNumberEncoder.validate_value   s    % !:;;!!%(!!%(--T9 
d>S>S?
 !!%\!:#'>>$2E2E#F [;%+"5!!$+D,?,?+@ A'=;-r; "  #6r,   )
r4   r:   r;   r   r   r   r   rU   r.   r   r   s   @r)   r   r      s"    MIM?r,   r   c                   X    e Zd Z ee      Z ee      Z ee      Z	 e
d      d        Zy)UnsignedIntegerEncoderuintc                 (     | |j                         S Nr   subr   s      r)   r   z$UnsignedIntegerEncoder.from_type_str      (,,//r,   N)r4   r:   r;   staticmethodr   r   r   r   r   r   r   r   r&   r,   r)   r   r     s9    ./I<=I ,MF0 0r,   r      re   r   r   c                   (    e Zd Z ed      d        Zy)PackedUnsignedIntegerEncoderr   c                 D     | |j                   |j                   dz        S Nr   r   r   r   s      r)   r   z*PackedUnsignedIntegerEncoder.from_type_str!  "    #<<#<<1,
 	
r,   Nr4   r:   r;   r   r   r&   r,   r)   r   r      s    F
 
r,   r   c                   T    e Zd Z ee      Z ee      Zd Zd Z	 e
d      d        Zy)SignedIntegerEncoderc                 8    t        |d| j                  z  z        S N   )r   r   r'   s     r)   r   zSignedIntegerEncoder.encode_fn-  s     !T-@-@*@!ABBr,   c                     | j                  |       | j                  |      }|dk\  rt        || j                        }|S t	        || j                        }|S Nr   r.   r   r   r   r   r   s       r)   r*   zSignedIntegerEncoder.encode0  ^    E"!^^E2A:#'(:D<O<O#P  $# $((:D<O<O#P ##r,   intc                 (     | |j                         S r   r   r   s      r)   r   z"SignedIntegerEncoder.from_type_str;  r   r,   N)r4   r:   r;   r   r   r   r   r   r   r*   r   r   r&   r,   r)   r   r   )  s;    :;I ,MC	$ E0 0r,   r   c                   (    e Zd Z ed      d        Zy)PackedSignedIntegerEncoderr   c                 D     | |j                   |j                   dz        S r   r   r   s      r)   r   z(PackedSignedIntegerEncoder.from_type_strA  r   r,   Nr   r&   r,   r)   r   r   @  s    E
 
r,   r   c                   L     e Zd ZdZed        Zed        Z fdZ fdZ xZ	S )BaseFixedEncoderNc                 >    t        |       xr t        | t               S r8   )r   
isinstancefloatr#   s    r)   r   zBaseFixedEncoder.type_check_fnL  s    @
5%(@$@@r,   c                 |    t        | t        j                        r"| j                         xs | j	                         S y)NF)r   decimalDecimalis_nanis_infiniter   s    r)   r   z!BaseFixedEncoder.illegal_value_fnP  s-    eW__-<<>8U%6%6%88r,   c                    t         |   |       t        j                  t              5  |t
        | j                   z  z  }d d d        dkD  r2| j                  |t        dt        |       d| j                          y y # 1 sw Y   AxY w)Nr   zresidue z) outside allowed fractional precision of r]   )
rM   r.   r   localcontextr   r   frac_placesr6   r   repr)r(   r#   residuerS   s      r)   r.   zBaseFixedEncoder.validate_valueW  s    u%!!"56 	7sT%5%5$556G	7 Q;!! tG}o-V##$& "  	7 	7s   BBc                     t         |           | j                  t        d      | j                  dk  s| j                  dkD  rt        d      y )Nzmust specify `frac_places`r   P   z&`frac_places` must be in range (0, 80])rM   rU   r   rV   rW   s    r)   rU   zBaseFixedEncoder.validatee  sR    #9::q D$4$4r$9EFF %:r,   )
r4   r:   r;   r   r   r   r   r.   rU   r   r   s   @r)   r   r   I  sA    KA A  G Gr,   r   c                   4    e Zd Zd Zd Z ed      d        Zy)UnsignedFixedEncoderc                 B    t        | j                  | j                        S r8   )r   r   r   r(   r   s     r)   r   zUnsignedFixedEncoder.bounds_fnp  s    ,T-@-@$BRBRSSr,   c                     t        j                  t              5  |t        | j                  z  z  }t        |      }d d d        t        |      S # 1 sw Y   t              S xY wr8   )r   r   r   r   r   r   r   )r(   r#   scaled_valueinteger_values       r)   r   zUnsignedFixedEncoder.encode_fns  sZ    !!"56 	. 3(8(8#88L-M	. !//		. !//s   "AA"ufixedc                 4    |j                   \  }} | ||      S N)r   r   r   r5   r   r~   r   r   s        r)   r   z"UnsignedFixedEncoder.from_type_strz  #    &.ll#)#
 	
r,   N)r4   r:   r;   r   r   r   r   r&   r,   r)   r   r   o  s&    T0 H
 
r,   r   c                   (    e Zd Z ed      d        Zy)PackedUnsignedFixedEncoderr   c                 <    |j                   \  }} | ||dz  |      S Nr   )r   r   r   r   r   s        r)   r   z(PackedUnsignedFixedEncoder.from_type_str  +    &.ll#))Q.#
 	
r,   Nr   r&   r,   r)   r   r     s    H
 
r,   r   c                   :    e Zd Zd Zd Zd Z ed      d        Zy)SignedFixedEncoderc                 B    t        | j                  | j                        S r8   )r   r   r   r   s     r)   r   zSignedFixedEncoder.bounds_fn  s    *4+>+>@P@PQQr,   c                     t        j                  t              5  |t        | j                  z  z  }t        |      }d d d        d| j                  z  z  }t        |      S # 1 sw Y   &xY wr   )r   r   r   r   r   r   r   r   )r(   r#   r   r   unsigned_integer_values        r)   r   zSignedFixedEncoder.encode_fn  si    !!"56 	. 3(8(8#88L-M	. "/!T5H5H2H!I !788	. 	.s   "A!!A*c                     | j                  |       | j                  |      }|dk\  rt        || j                        }|S t	        || j                        }|S r   r   r   s       r)   r*   zSignedFixedEncoder.encode  r   r,   fixedc                 4    |j                   \  }} | ||      S r   r   r   s        r)   r   z SignedFixedEncoder.from_type_str  r   r,   N)r4   r:   r;   r   r   r*   r   r   r&   r,   r)   r   r     s+    R9	$ G
 
r,   r   c                   (    e Zd Z ed      d        Zy)PackedSignedFixedEncoderr   c                 <    |j                   \  }} | ||dz  |      S r   r   r   s        r)   r   z&PackedSignedFixedEncoder.from_type_str  r   r,   Nr   r&   r,   r)   r   r     s    G
 
r,   r   c                   b     e Zd ZdZ ee      ZdZed        Z	 fdZ
 ed      d        Z xZS )AddressEncoder   Tc                 >    t        |      s| j                  |       y y r8   )r   r6   r   s     r)   r.   zAddressEncoder.validate_value  r   r,   c                 V    t         |           | j                  dk7  rt        d      y )Nr  z$Addresses must be 160 bits in length)rM   rU   r   rV   rW   s    r)   rU   zAddressEncoder.validate  s-    &(CDD )r,   addressc                      |        S r8   r&   r   s      r)   r   zAddressEncoder.from_type_str  r   r,   )r4   r:   r;   r   r   r   r   r   r@   r.   rU   r   r   r   r   s   @r)   r   r     sI    N12IM( (E I r,   r   c                       e Zd ZdZy)PackedAddressEncoder   Nr   r&   r,   r)   r  r    r   r,   r  c                   B    e Zd ZdZd Zed        Z ed      d        Zy)BytesEncoderFc                     t        |      s| j                  |       | j                  dz  }t        |      |kD  r| j                  |t        d| d       y y )Nr   z!exceeds total byte size for bytesz	 encodingr]   )r
   r6   r   r^   r   )r(   r#   	byte_sizes      r)   r.   zBytesEncoder.validate_value  s]    !!%(''1,	u:	!!!$7	{)L "  "r,   c                     | S r8   r&   r   s    r)   r   zBytesEncoder.encode_fn  s    r,   r?   c                 .     | |j                   dz        S )Nr   r   r   r   s      r)   r   zBytesEncoder.from_type_str  s    (,,"233r,   N)	r4   r:   r;   r   r.   r   r   r   r   r&   r,   r)   r
  r
    s9    M
   G4 4r,   r
  c                   (    e Zd Z ed      d        Zy)PackedBytesEncoderr?   c                 D     | |j                   dz  |j                         S r   r   r   s      r)   r   z PackedBytesEncoder.from_type_str  s"    #<<!+#<<
 	
r,   Nr   r&   r,   r)   r  r    s    G
 
r,   r  c                   L    e Zd ZdZed        Zed        Z ed      d        Zy)ByteStringEncoderTc                 >    t        |      s| j                  |       y y r8   )r
   r6   r   s     r)   r.   z ByteStringEncoder.validate_value  s      ' r,   c                     | j                  |       t        |      }t        |      }t        |t	        |            }||z   S r8   )r.   r^   rj   r   r   )r5   r#   value_lengthencoded_sizepadded_values        r)   r*   zByteStringEncoder.encode   s?    5!5z&|4!%)=>l**r,   r?   c                      |        S r8   r&   r   s      r)   r   zByteStringEncoder.from_type_str
  r   r,   N	r4   r:   r;   rH   r@   r.   r*   r   r   r&   r,   r)   r  r    sF    J( ( + + G r,   r  c                        e Zd ZdZed        Zy)PackedByteStringEncoderFc                 (    | j                  |       |S r8   )r.   r   s     r)   r*   zPackedByteStringEncoder.encode  s    5!r,   Nr4   r:   r;   rH   r@   r*   r&   r,   r)   r  r    s    J r,   r  c                   L    e Zd ZdZed        Zed        Z ed      d        Zy)TextStringEncoderTc                 >    t        |      s| j                  |       y y r8   )r   r6   r   s     r)   r.   z TextStringEncoder.validate_value  s    u~  ' r,   c                     | j                  |       t        j                  |d      }t        |      }t	        |      }t        |t        |            }||z   S Nutf8)r.   codecsr*   r^   rj   r   r   )r5   r#   value_as_bytesr  r  r  s         r)   r*   zTextStringEncoder.encode   sP    5!uf5>*&|4!.&2FGl**r,   stringc                      |        S r8   r&   r   s      r)   r   zTextStringEncoder.from_type_str,  r   r,   Nr  r&   r,   r)   r   r     sF    J( ( 	+ 	+ H r,   r   c                        e Zd ZdZed        Zy)PackedTextStringEncoderFc                 P    | j                  |       t        j                  |d      S r#  )r.   r%  r*   r   s     r)   r*   zPackedTextStringEncoder.encode4  s!    5!}}UF++r,   Nr  r&   r,   r)   r*  r*  1  s    J, ,r,   r*  c                   L     e Zd ZdZ fdZd Zd Z ed      d        Z xZ	S )BaseArrayEncoderNc                 P    t         |           | j                  t        d      y )Nz`item_encoder` may not be none)rM   rU   item_encoderrV   rW   s    r)   rU   zBaseArrayEncoder.validate=  s+    $=>> %r,   c                     t        |      s| j                  |d       |D ]  }| j                  j                  |        y )Nz(must be list-like such as array or tuplerY   )r   r6   r/  r.   )r(   r#   ra   s      r)   r.   zBaseArrayEncoder.validate_valueC  sH    E"!!> " 
  	3D,,T2	3r,   c                    | j                  |       | j                  t        d      t        fd|D              }t	        dd      }|rt        |      dk(  rdj                  |      S dt        |      z  dt        t        t        t
        |d d	                   z   }t        fd
|D              }dj                  ||z         S )Nz`item_encoder` is Nonec              3   .   K   | ]  } |        y wr8   r&   )rJ   ir/  s     r)   rL   z3BaseArrayEncoder.encode_elements.<locals>.<genexpr>S  s     ;LO;s   rH   Fr   r,   re   rf   rg   c              3   :   K   | ]  }t        |z           y wr8   ri   )rJ   rl   rm   s     r)   rL   z3BaseArrayEncoder.encode_elements.<locals>.<genexpr>[  s       
6<OK&01
s   )	r.   r/  r   rp   rI   r^   rr   r   rq   )r(   r#   ru   items_are_dynamicrv   rw   rm   r/  s         @@r)   encode_elementsz BaseArrayEncoder.encode_elementsM  s    E"(( !9::;U;;#L,F CJ!O88K((3u:oeJs3CR8H/I$JKK 
@L
 
 xxk122r,   Twith_arrlistc                     |j                  |j                  j                               }|j                  d   }t	        |      dk(  rt        |d   |      S t        |      S Nrg   r   r   )
array_sizer/  )r/  )r{   	item_typer|   arrlistr^   SizedArrayEncoderDynamicArrayEncoderr5   r   r~   r/  
array_specs        r)   r   zBaseArrayEncoder.from_type_str`  sa    ++H,>,>,J,J,LM%%b)
z?a$%a=)  'LAAr,   )
r4   r:   r;   r/  rU   r.   r6  r   r   r   r   s   @r)   r-  r-  :  s2    L?33& &B 'Br,   r-  c                   F     e Zd ZdZ fdZd Z ed      d        Z xZS )PackedArrayEncoderNc           	          t         |   |       | j                  Lt        |      | j                  k7  r3| j	                  |t
        dt        |       d| j                   d       y y y NrZ   r[   r\   r]   )rM   r.   r;  r^   r6   r   r(   r#   rS   s     r)   r.   z!PackedArrayEncoder.validate_values  sl    u%??&3u:+H!!$ UL8I J  "  ,I&r,   c                 (    | j                  |      }|S r8   r6  r(   r#   encoded_elementss      r)   r*   zPackedArrayEncoder.encode~      //6r,   Tr7  c                     |j                  |j                  j                               }|j                  d   }t	        |      dk(  r | |d   |      S  | |      S r:  )r{   r<  r|   r=  r^   r@  s        r)   r   z PackedArrayEncoder.from_type_str  sa    ++H,>,>,J,J,LM%%b)
z?a%a=) 
 L11r,   )	r4   r:   r;   r;  r.   r*   r   r   r   r   s   @r)   rC  rC  p  s+    J	 
 &
2 '
2r,   rC  c                   <     e Zd ZdZ fdZ fdZ fdZd Z xZS )r>  Nc                 Z    t        |   di | | j                  j                  | _        y )Nr&   )rM   rN   r/  rH   rQ   s     r)   rN   zSizedArrayEncoder.__init__  s&    "6"++66r,   c                 P    t         |           | j                  t        d      y )Nz`array_size` may not be none)rM   rU   r;  rV   rW   s    r)   rU   zSizedArrayEncoder.validate  s)    ??";<< #r,   c           	          t         |   |       t        |      | j                  k7  r3| j	                  |t
        dt        |       d| j                   d       y y rE  )rM   r.   r^   r;  r6   r   rF  s     r)   r.   z SizedArrayEncoder.validate_value  s_    u%u:(!!$ UL8I J  "  )r,   c                 (    | j                  |      }|S r8   rH  rI  s      r)   r*   zSizedArrayEncoder.encode  rK  r,   )	r4   r:   r;   r;  rN   rU   r.   r*   r   r   s   @r)   r>  r>    s    J7
=	 r,   r>  c                       e Zd ZdZd Zy)r?  Tc                 Z    t        t        |            }| j                  |      }||z   }|S r8   )rj   r^   r6  )r(   r#   r  rJ  rx   s        r)   r*   zDynamicArrayEncoder.encode  s2    &s5z2//6$'77r,   N)r4   r:   r;   rH   r*   r&   r,   r)   r?  r?    s    Jr,   r?  )Gr=   r%  r   	itertoolsr   typingr   r   r   	eth_utilsr   r   r	   r
   r   r   r   r   r   eth_abi.baser   r   r   eth_abi.exceptionsr   r   r   eth_abi.utils.numericr   r   r   r   r   r   r   eth_abi.utils.paddingr   r   r   eth_abi.utils.stringr    ABCMetar"   rE   r   r   r   r   r   r   rj   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r   r*  r-  rC  r>  r?  r&   r,   r)   <module>r]     s   
   
 
 
 
 
   

'")s{{ '"T@&; @&F*${ *$Z- + .> !* !H0] 0 )BO
#9 
0= 0.
!5 
#G} #GL
+ 
*	
!5 	

) 
D	
1 	
+ *> 4) 40
 
 ./  2,/ ,3B{ 3Bl2) 2B (  >* r,   