
    ":hN                     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 d0 d1e-      Z; G d2 d3e;      Z< G d4 d5e-      Z= G d6 d7e=      Z> G d8 d9e*      Z? G d: d;e?      Z@ G d< d=e*      ZA G d> d?eA      ZB G d@ dAe*      ZC G dB dCeC      ZD G dD dEeC      ZE G dF dGeC      ZFy)H    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     h/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/static_dependencies/ethereum/abi/encoding.pyencodezBaseEncoder.encode=   s     	    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_valueE   s     	r-   excmsgc           	           |dj                  t        |      t        |      | j                  |d            d|z               )zf
        Throws a standard exception for when a value is not encodable by an
        encoder.
        z;Value `{rep}` of type {typ} cannot be encoded by {cls}{msg} z: )reptypclsr1   )formatr"   type__name__)r6   r%   r0   r1   s       r+   invalidate_valuezBaseEncoder.invalidate_valueN   s_     IPPKKLL+B	 Q 
 	

 -13J	 Q 
 	
r-   c                 $    | j                  |      S N)r,   r)   s     r+   __call__zBaseEncoder.__call__b   s    {{5!!r-   )r9   
__module____qualname____doc__abcabstractmethodr   bytesr,   r/   classmethodr   r   	Exceptionr   strr:   r=   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>l   s     U!gau=Us   r(   )super__init__anyencodersrL   r*   kwargs	__class__s     r+   rR   zTupleEncoder.__init__i   s)    "6"Ut}}UUr-   c                 P    t         |           | j                  t        d      y )Nz`encoders` may not be none)rQ   validaterT   
ValueErrorr*   rW   s    r+   rY   zTupleEncoder.validaten   s)    == 9:: !r-   c           
         t        |      s| j                  |d       t        |      t        | j                        k7  rD| j                  |t        dj                  t        |      t        | j                                     t        || j                        D ]  \  }}	 |j                  |        y # t        $ r  ||       Y .w xY w)Nz/must be list-like object such as array or tupler1   (value has {} items when {} were expectedr0   r1   )	r   r:   lenrT   r   r7   zipr/   AttributeError)r*   r%   itemencoders       r+   r/   zTupleEncoder.validate_valuet   s    E"!!E " 
 u:T]]++!!$>EEJ& "  !6 	MD'&&t,	 " s   !B55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 )NrL   Fr-   c              3   :   K   | ]  }|dn
t        |        y w)N    )r`   )rN   rc   s     r+   rP   z&TupleEncoder.encode.<locals>.<genexpr>   s     X"#d);Xs   r   c              3   H   K   | ]  \  }}|t        |z         n|  y wr<   encode_uint_256)rN   chunkoffsethead_lengths      r+   rP   z&TupleEncoder.encode.<locals>.<genexpr>   s0      
v 6;]OK&01M
s   ")r/   ra   rT   rM   appendsumtupler   mapr`   join)
r*   valuesraw_head_chunkstail_chunksr%   rd   tail_offsetshead_chunksencoded_valuero   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r<   )get_encoderto_type_str)rN   cregistrys     r+   rP   z-TupleEncoder.from_type_str.<locals>.<genexpr>   s'      
67H  1
s   ),)rT   )rr   
components)r6   abi_typer   rT   s     ` r+   from_type_strzTupleEncoder.from_type_str   s-     
;C;N;N
 
 H%%r-   )r9   r>   r?   rT   rR   rY   r/   r,   r   r   __classcell__rW   s   @r+   rI   rI   f   s1    HV
;.0 & &r-   rI   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                  | j                              | 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   z5Invalid value bit size: {0}.  Must be a multiple of 8z!Value byte size exceeds data size)rQ   rY   value_bit_sizerZ   data_byte_size	encode_fnis_big_endianr7   r[   s    r+   rY   zFixedSizeEncoder.validate   s    &?@@&?@@>>!:;;%>??"a'GNN''  !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                  |      }| j                  rt        || j                        }|S t        || j                        }|S r<   )r/   r   r   r    r   r!   r*   r%   base_encoded_valuepadded_encoded_values       r+   r,   zFixedSizeEncoder.encode   s`    E"!^^E2#'(:D<O<O#P  $# $..@$BUBU#V ##r-   )r9   r>   r?   r   r   r   type_check_fnr   rY   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)Fixed32ByteSizeEncoderrg   Nr9   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 r<   )r
   r:   r6   r%   s     r+   r/   zBooleanEncoder.validate_value       %   ' !r-   c                 ,    |du ry|du ryt        d      )NT   F    	Invariant)rZ   r   s     r+   r   zBooleanEncoder.encode_fn   s!    D=e^[))r-   boolc                      |        S r<   r(   r6   r   r   s      r+   r   zBooleanEncoder.from_type_str   	    ur-   N)
r9   r>   r?   r   r   rD   r/   r   r   r   r(   r-   r+   r   r      sK    NM( ( * * F r-   r   c                       e Zd ZdZy)PackedBooleanEncoderr   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)rQ   rY   	bounds_fnrZ   r   r[   s    r+   rY   zNumberEncoder.validate   sA    >>!9::%=>> &r-   c           	      t   | j                  |      s| j                  |       | j                  d uxr | j                  |      }|r| j                  |t               | j	                  | j
                        \  }}||k  s||kD  r4| j                  |t        dj                  | j
                  ||             y y )N)r0   z@Cannot be encoded in {} bits.  Must be bounded between [{}, {}].r_   )r   r:   illegal_value_fnr   r   r   r   r7   )r*   r%   illegal_valuelower_boundupper_bounds        r+   r/   zNumberEncoder.validate_value  s    !!%(!!%(--T9 
d>S>S?
 !!%\!:#'>>$2E2E#F [;%+"5!!$((.++##) "  #6r-   )
r9   r>   r?   r   r   r   r   rY   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)r9   r>   r?   staticmethodr   r   r   r   r   r   r   r   r(   r-   r+   r   r     s9    ./I<=I ,MF0 0r-   r      rg   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r9   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 Nr   )r   r   r)   s     r+   r   zSignedIntegerEncoder.encode_fn9  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.encode<  ^    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_strG  r   r-   N)r9   r>   r?   r   r   r   r   r   r   r,   r   r   r(   r-   r+   r   r   5  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_strM  r   r-   Nr   r(   r-   r+   r   r   L  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 r<   )r   
isinstancefloatr%   s    r+   r   zBaseFixedEncoder.type_check_fnX  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_fn\  s-    eW__-<<>8U%6%6%88r-   c           	      0   t         |   |       t        j                  t              5  |t
        | j                   z  z  }d d d        dkD  r<| j                  |t        dj                  t        |      | j                               y y # 1 sw Y   KxY w)Nr   z5residue {} outside allowed fractional precision of {}r_   )rQ   r/   r   localcontextr   r   frac_placesr:   r   r7   repr)r*   r%   residuerW   s      r+   r/   zBaseFixedEncoder.validate_valuec  s    u%!!"56 	7sT%5%5$556G	7 Q;!! KRRM$$ "  	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])rQ   rY   r   rZ   r[   s    r+   rY   zBaseFixedEncoder.validates  sR    #9::q D$4$4r$9EFF %:r-   )
r9   r>   r?   r   r   r   r   r/   rY   r   r   s   @r+   r   r   U  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 r<   )r   r   r   r*   r   s     r+   r   zUnsignedFixedEncoder.bounds_fn~  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r<   )r   r   r   r   r   r   r   )r*   r%   scaled_valueinteger_values       r+   r   zUnsignedFixedEncoder.encode_fn  sZ    !!"56 	. 3(8(8#88L-M	. !//		. !//s   "AA"ufixedc                 4    |j                   \  }} | ||      S N)r   r   r   r6   r   r   r   r   s        r+   r   z"UnsignedFixedEncoder.from_type_str  #    &.ll#)#
 	
r-   N)r9   r>   r?   r   r   r   r   r(   r-   r+   r   r   }  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 r<   )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)r9   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 r<   )r	   r:   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)rQ   rY   r   rZ   r[   s    r+   rY   zAddressEncoder.validate  s-    &(CDD )r-   addressc                      |        S r<   r(   r   s      r+   r   zAddressEncoder.from_type_str  r   r-   )r9   r>   r?   r   r   r   r   r   rD   r/   rY   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j                  |             y y )Nr   z,exceeds total byte size for bytes{} encodingr_   )r   r:   r   r`   r   r7   )r*   r%   	byte_sizes      r+   r/   zBytesEncoder.validate_value  s_    !!%(''1,	u:	!!!$BII)T "  "r-   c                     | S r<   r(   r   s    r+   r   zBytesEncoder.encode_fn  s    r-   rC   c                 .     | |j                   dz        S )Nr   r   r   r   s      r+   r   zBytesEncoder.from_type_str  s    (,,"233r-   N)	r9   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)PackedBytesEncoderrC   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 r<   )r   r:   r   s     r+   r/   z ByteStringEncoder.validate_value	  s      ' r-   c                     | j                  |       |sd}nt        |t        t        |                  }t	        t        |            }||z   }|S )N                                    )r/   r!   r   r`   rl   )r6   r%   padded_valueencoded_sizerz   s        r+   r,   zByteStringEncoder.encode  sK    5!'L%eVCJ-?@L&s5z2$|3r-   rC   c                      |        S r<   r(   r   s      r+   r   zByteStringEncoder.from_type_str  r   r-   N	r9   r>   r?   rL   rD   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 r<   )r/   r   s     r+   r,   zPackedByteStringEncoder.encode$  s    5!r-   Nr9   r>   r?   rL   rD   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 r<   )r   r:   r   s     r+   r/   z TextStringEncoder.validate_value-  s    u~  ' r-   c                     | j                  |       t        j                  |d      }|sd}nt        |t	        t        |                  }t        t        |            }||z   }|S )Nutf8r  )r/   codecsr,   r!   r   r`   rl   )r6   r%   value_as_bytesr  r  rz   s         r+   r,   zTextStringEncoder.encode2  s]    5!uf5'L%nfS=P6QRL&s>':;$|3r-   stringc                      |        S r<   r(   r   s      r+   r   zTextStringEncoder.from_type_strB  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 )Nr"  )r/   r#  r,   r   s     r+   r,   zPackedTextStringEncoder.encodeJ  s!    5!}}UF++r-   Nr  r(   r-   r+   r(  r(  G  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)rQ   rY   item_encoderrZ   r[   s    r+   rY   zBaseArrayEncoder.validateS  s+    $=>> %r-   c                     t        |      s| j                  |d       |D ]  }| j                  j                  |        y )Nz(must be list-like such as array or tupler]   )r   r:   r-  r/   )r*   r%   rc   s      r+   r/   zBaseArrayEncoder.validate_valueY  sH    E"!!> " 
  	3D,,T2	3r-   c                 d   | j                  |       | j                  t        fd|D              }t        dd      }|sdj	                  |      S dt        |      z  dt        t        t        t
        |d d                   z   }t        fd|D              }dj	                  ||z         S )	Nc              3   .   K   | ]  } |        y wr<   r(   )rN   ir-  s     r+   rP   z3BaseArrayEncoder.encode_elements.<locals>.<genexpr>g  s     ;LO;s   rL   Fr-   rg   rh   ri   c              3   :   K   | ]  }t        |z           y wr<   rk   )rN   rn   ro   s     r+   rP   z3BaseArrayEncoder.encode_elements.<locals>.<genexpr>o  s       
6<OK&01
s   )r/   r-  rr   rM   rt   r`   r   rs   )r*   r%   rw   items_are_dynamicrx   ry   ro   r-  s         @@r+   encode_elementsz BaseArrayEncoder.encode_elementsc  s    E"((;U;;#L,F 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 Nri   r   r   )
array_sizer-  )r-  )r}   	item_typer~   arrlistr`   SizedArrayEncoderDynamicArrayEncoderr6   r   r   r-  
array_specs        r+   r   zBaseArrayEncoder.from_type_strt  sa    ++H,>,>,J,J,LM%%b)
z?a$%a=)  'LAAr-   )
r9   r>   r?   r-  rY   r/   r4  r   r   r   r   s   @r+   r+  r+  P  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                  Ut        |      | j                  k7  r<| j	                  |t
        dj                  t        |      | j                               y y y Nr^   r_   )rQ   r/   r9  r`   r:   r   r7   r*   r%   rW   s     r+   r/   z!PackedArrayEncoder.validate_value  sg    u%??&3u:+H!!$>EEJOO "  ,I&r-   c                 (    | j                  |      }|S r<   r4  r*   r%   encoded_elementss      r+   r,   zPackedArrayEncoder.encode      //6r-   Tr5  c                     |j                  |j                  j                               }|j                  d   }t	        |      dk(  r | |d   |      S  | |      S r8  )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-   )	r9   r>   r?   r9  r/   r,   r   r   r   r   s   @r+   rA  rA    s+    J 
 &
2 '
2r-   rA  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(   )rQ   rR   r-  rL   rU   s     r+   rR   zSizedArrayEncoder.__init__  s&    "6"++66r-   c                 P    t         |           | j                  t        d      y )Nz`array_size` may not be none)rQ   rY   r9  rZ   r[   s    r+   rY   zSizedArrayEncoder.validate  s)    ??";<< #r-   c           	          t         |   |       t        |      | j                  k7  r<| j	                  |t
        dj                  t        |      | j                               y y rC  )rQ   r/   r`   r9  r:   r   r7   rD  s     r+   r/   z SizedArrayEncoder.validate_value  sZ    u%u:(!!$>EEJOO "  )r-   c                 (    | j                  |      }|S r<   rF  rG  s      r+   r,   zSizedArrayEncoder.encode  rI  r-   )	r9   r>   r?   r9  rR   rY   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 r<   )rl   r`   r4  )r*   r%   r  rH  rz   s        r+   r,   zDynamicArrayEncoder.encode  s2    &s5z2//6$'77r-   N)r9   r>   r?   rL   r,   r(   r-   r+   r=  r=    s    Jr-   r=  )GrA   r#  r   	itertoolsr   typingr   r   r   utilsr   r	   r
   r   r   r   r   r   r   baser   r   r   
exceptionsr   r   r   utils.numericr   r   r   r   r   r   r   utils.paddingr   r    r!   utils.stringr"   ABCMetar$   rI   r   r   r   r   r   r   rl   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r(  r+  rA  r<  r=  r(   r-   r+   <module>r[     s   
   
 
 
 
 
   

-")s{{ -"`C&; C&L)${ )$X- + .> %* %P0] 0 )BO
#9 
0= 0.
!5 
%G} %GP
+ 
*	
!5 	

) 
D	
1 	
+ *> 4) 40
 
 6/  :,/ ,1B{ 1Bh 2)  2F (  B* r-   