
    DgD                     <   d dl Z d dlZd dlZd dlmZmZmZmZ ej                  d    dk(  Z	dZ
d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      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    N)openBytesIOSEEK_CURSEEK_END   z0.10)r   
   c                   T    e Zd Zd Zd Zd Zd Zed        Zed        Z	ed        Z
y)	KaitaiStructc                     || _         y N)_io)selfstreams     L/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/kaitaistruct.py__init__zKaitaiStruct.__init__   s	        c                     | S r    r   s    r   	__enter__zKaitaiStruct.__enter__       r   c                 $    | j                          y r   closer   argskwargss      r   __exit__zKaitaiStruct.__exit__"       

r   c                 8    | j                   j                          y r   r   r   r   s    r   r   zKaitaiStruct.close%       r   c                 z    t        |d      }	  | t        |            S # t        $ r |j                           w xY w)Nrb)r   KaitaiStream	Exceptionr   )clsfilenamefs      r   	from_filezKaitaiStruct.from_file(   s=    4 	|A'' 	GGI	s    :c                 6     | t        t        |                  S r   )r%   r   )r'   bufs     r   
from_byteszKaitaiStruct.from_bytes2   s    <-..r   c                 $     | t        |            S r   )r%   )r'   ios     r   from_iozKaitaiStruct.from_io6   s    <#$$r   N)__name__
__module____qualname__r   r   r   r   classmethodr*   r-   r0   r   r   r   r
   r
      sR       / / % %r   r
   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 ej                  d	      Z ej                  d
      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z( ej                  d%      Z) ej                  d&      Z* ej                  d'      Z+ ej                  d(      Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8e9d5        Z:e9d6        Z;e9d7        Z<e9d8        Z=e9d9        Z>e9d:        Z?e9d;        Z@e9d<        ZAe9d=        ZBe9d>        ZCe9d?        ZDy@)Ar%   c                 2    || _         | j                          y r   )r   align_to_byte)r   r/   s     r   r   zKaitaiStream.__init__<   s    r   c                     | S r   r   r   s    r   r   zKaitaiStream.__enter__@   r   r   c                 $    | j                          y r   r   r   s      r   r   zKaitaiStream.__exit__C   r   r   c                 8    | j                   j                          y r   r!   r   s    r   r   zKaitaiStream.closeF   r"   r   c                     | j                   dkD  ry| j                  }|j                  d      }|dk(  ry|j                  dt               y)Nr   F   r   T)	bits_leftr   readseekr   )r   r/   ts      r   is_eofzKaitaiStream.is_eofM   sB    >>AXXGGAJ8
Hr   c                 :    | j                   j                  |       y r   )r   r@   r   ns     r   r@   zKaitaiStream.seekY   s    ar   c                 6    | j                   j                         S r   )r   tellr   s    r   poszKaitaiStream.pos\       xx}}r   c                     | j                   }|j                         }|j                  dt              }|j                  |       |S Nr   )r   rG   r@   r   )r   r/   cur_pos	full_sizes       r   sizezKaitaiStream.size_   s:     XX'')GGAx(	
r   bz>hz>iz>qz<hz<iz<qBz>Hz>Iz>Qz<Hz<Iz<Qc                 d    t         j                  j                  | j                  d            d   S Nr<   r   )r%   	packer_s1unpack
read_bytesr   s    r   read_s1zKaitaiStream.read_s1   '    %%,,T__Q-?@CCr   c                 d    t         j                  j                  | j                  d            d   S Nr   r   )r%   packer_s2berT   rU   r   s    r   	read_s2bezKaitaiStream.read_s2be   '    ''..tq/AB1EEr   c                 d    t         j                  j                  | j                  d            d   S N   r   )r%   packer_s4berT   rU   r   s    r   	read_s4bezKaitaiStream.read_s4be   r\   r   c                 d    t         j                  j                  | j                  d            d   S N   r   )r%   packer_s8berT   rU   r   s    r   	read_s8bezKaitaiStream.read_s8be   r\   r   c                 d    t         j                  j                  | j                  d            d   S rY   )r%   packer_s2lerT   rU   r   s    r   	read_s2lezKaitaiStream.read_s2le   r\   r   c                 d    t         j                  j                  | j                  d            d   S r^   )r%   packer_s4lerT   rU   r   s    r   	read_s4lezKaitaiStream.read_s4le   r\   r   c                 d    t         j                  j                  | j                  d            d   S rc   )r%   packer_s8lerT   rU   r   s    r   	read_s8lezKaitaiStream.read_s8le   r\   r   c                 d    t         j                  j                  | j                  d            d   S rR   )r%   	packer_u1rT   rU   r   s    r   read_u1zKaitaiStream.read_u1   rW   r   c                 d    t         j                  j                  | j                  d            d   S rY   )r%   packer_u2berT   rU   r   s    r   	read_u2bezKaitaiStream.read_u2be   r\   r   c                 d    t         j                  j                  | j                  d            d   S r^   )r%   packer_u4berT   rU   r   s    r   	read_u4bezKaitaiStream.read_u4be   r\   r   c                 d    t         j                  j                  | j                  d            d   S rc   )r%   packer_u8berT   rU   r   s    r   	read_u8bezKaitaiStream.read_u8be   r\   r   c                 d    t         j                  j                  | j                  d            d   S rY   )r%   packer_u2lerT   rU   r   s    r   	read_u2lezKaitaiStream.read_u2le   r\   r   c                 d    t         j                  j                  | j                  d            d   S r^   )r%   packer_u4lerT   rU   r   s    r   	read_u4lezKaitaiStream.read_u4le   r\   r   c                 d    t         j                  j                  | j                  d            d   S rc   )r%   packer_u8lerT   rU   r   s    r   	read_u8lezKaitaiStream.read_u8le   r\   r   z>fz>dz<fz<dc                 d    t         j                  j                  | j                  d            d   S r^   )r%   packer_f4berT   rU   r   s    r   	read_f4bezKaitaiStream.read_f4be   r\   r   c                 d    t         j                  j                  | j                  d            d   S rc   )r%   packer_f8berT   rU   r   s    r   	read_f8bezKaitaiStream.read_f8be   r\   r   c                 d    t         j                  j                  | j                  d            d   S r^   )r%   packer_f4lerT   rU   r   s    r   	read_f4lezKaitaiStream.read_f4le   r\   r   c                 d    t         j                  j                  | j                  d            d   S rc   )r%   packer_f8lerT   rU   r   s    r   	read_f8lezKaitaiStream.read_f8le   r\   r   c                      d| _         d| _        y rK   )r>   bitsr   s    r   r7   zKaitaiStream.align_to_byte   s    	r   c                    d}|| j                   z
  }| dz  | _         |dkD  re|dz
  dz  dz   }| j                  |      }t        rt        |      }|D ]
  }|dz  |z  } |}|| j                   z	  | j                  |z  z  }|| _        n| j                  | z	  }d| j                   z  dz
  }| xj                  |z  c_        |S )Nr   rd   r<   )r>   rU   PY2	bytearrayr   )	r   rE   resbits_neededbytes_neededr,   bytenew_bitsmasks	            r   read_bits_int_bezKaitaiStream.read_bits_int_be   s    $..(%)? )1_2a7L//,/Cn &Qho& H'$)){*BBC DI))|+CT^^#q(		T	
r   c                 $    | j                  |      S r   )r   rD   s     r   read_bits_intzKaitaiStream.read_bits_int  s    $$Q''r   c                    d}|| j                   z
  }|dkD  rt|dz
  dz  dz   }| j                  |      }t        rt        |      }t	        |      D ]  \  }}|||dz  z  z  } ||z	  }|| j                   z  | j
                  z  }|| _        n!| j
                  }| xj
                  |z  c_        | dz  | _         d|z  dz
  }	||	z  }|S )Nr   r<   rd   )r>   rU   r   r   	enumerater   )
r   rE   r   r   r   r,   ir   r   r   s
             r   read_bits_int_lezKaitaiStream.read_bits_int_le  s    $..(? )1_2a7L//,/Cn$S> '4tA&' k)H'$))3C DI))CII!OI%)Q!|t
r   c                 z   |dk  rt        d|fz        d}|dk\  r`t        t        | j                  dd             r@| j                  j	                         r&| j                         | j                         z
  }||k  }|r+| j                  j                  |      }t        |      }||k  }|st        d|fz        S )Nr   z$requested invalid %d amount of bytesTi   seekablez/requested %d bytes, but only %d bytes available)

ValueErrorcallablegetattrr   r   rN   rH   r?   lenEOFError)r   rE   is_satisfiablenum_bytes_availablers        r   rU   zKaitaiStream.read_bytes(  s    q56 
   :t<=!!#"&))+
":#66Na A"%a&#66NA'()  r   c                 6    | j                   j                         S r   )r   r?   r   s    r   read_bytes_fullzKaitaiStream.read_bytes_fullN  rI   r   c                     d}	 | j                   j                  d      }|dk(  r|rt        d|fz        |S t        |      |k(  r+|r||z  }|s | j                   j	                  dt
               |S ||z  }r)Nr   r<   z1end of stream reached, but no terminator %d foundr=   )r   r?   r&   ordr@   r   )r   terminclude_termconsume_term	eos_errorr   cs          r   read_bytes_termzKaitaiStream.read_bytes_termQ  s    a ACx#K  
 1v~FA#HHMM"h/FA% r   c                 z    | j                   j                  t        |            }||k7  rt        d|d|      |S )Nzunexpected fixed contents: got z, was waiting for )r   r?   r   r&   )r   expectedactuals      r   ensure_fixed_contentsz"KaitaiStream.ensure_fixed_contentsg  s>    s8}-X#  r   c                 J    | j                  t        j                  |            S r   )rstripr%   byte_from_int)datapad_bytes     r   bytes_strip_rightzKaitaiStream.bytes_strip_rightp  s    {{<55h?@@r   c                 d    | j                  t        j                  |            \  }}}|r||z  }|S r   )	partitionr%   r   )r   r   r   new_data	term_byte_s         r   bytes_terminatezKaitaiStream.bytes_terminatet  s4    !%0J0J40P!Q)Q	!Hr   c                     t         r&t        t        fdt        |       D                    S t        fd| D              S )Nc              3   (   K   | ]	  }|z    y wr   r   .0vkeys     r   	<genexpr>z/KaitaiStream.process_xor_one.<locals>.<genexpr>  s     "Dq1s7"D   c              3   (   K   | ]	  }|z    y wr   r   r   s     r   r   z/KaitaiStream.process_xor_one.<locals>.<genexpr>  s     +QW+r   )r   bytesr   r   r   s    `r   process_xor_onezKaitaiStream.process_xor_one  s1    "DIdO"DDEE+d+++r   c                     t         rJt        t        d t        t        |       t	        j
                  t        |                  D                    S t        d t        | t	        j
                  |            D              S )Nc              3   ,   K   | ]  \  }}||z    y wr   r   r   arO   s      r   r   z0KaitaiStream.process_xor_many.<locals>.<genexpr>  s     "kTQ1q5"k   c              3   ,   K   | ]  \  }}||z    y wr   r   r   s      r   r   z0KaitaiStream.process_xor_many.<locals>.<genexpr>  s     Gtq!QUGr   )r   r   r   zip	itertoolscycler   s     r   process_xor_manyzKaitaiStream.process_xor_many  sW    "kS4)//ZcdgZhJi5j"kkllGs41E'FGGGr   c                     |dk7  rt        d|fz        | |dz  z  }t        |       }t        |      D ]  \  }}||z  dz  ||z	  z  ||<    t        |      S )Nr<   z&unable to rotate group of %d bytes yetrd      )r&   r   r   r   )r   amount
group_sizeanti_amountr   r   r   s          r   process_rotate_leftz KaitaiStream.process_rotate_left  s|    ?8 
 ga0dO | 	CGAtFNd*dk.ABAaD	CQxr   c                 (    t         rt        |       S | S r   )r   r   )r   s    r   int_from_bytezKaitaiStream.int_from_byte  s    s1v#!#r   c                 <    t         rt        |       S t        | f      S r   )r   chrr   )r   s    r   r   zKaitaiStream.byte_from_int  s    s1v-%+-r   c                 2    t         j                  | |         S r   )r%   r   )r   r   s     r   byte_array_indexzKaitaiStream.byte_array_index  s    ))$q'22r   c                 >    t         j                  t        |             S r   )r%   r   minrO   s    r   byte_array_minzKaitaiStream.byte_array_min      ))#a&11r   c                 >    t         j                  t        |             S r   )r%   r   maxr   s    r   byte_array_maxzKaitaiStream.byte_array_max  r   r   c                 6    	  | |      S # t         $ r |cY S w xY w)zResolves value using enum: if the value is not found in the map,
        we'll just use literal value per se. Works around problem with Python
        enums throwing an exception when encountering unknown value.
        )r   )enum_objvalues     r   resolve_enumzKaitaiStream.resolve_enum  s%    	E?" 	L	s   
 N)Er1   r2   r3   r   r   r   r   rB   r@   rH   rN   structStructrS   rZ   r`   re   rh   rk   rn   rq   rt   rw   rz   r}   r   r   rV   r[   ra   rf   ri   rl   ro   rr   ru   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r7   r   r   r   rU   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   ;   s   
" c"I&--%K&--%K&--%K&--%K&--%K&--%Kc"I&--%K&--%K&--%K&--%K&--%K&--%KDFFFFFFDFFFFFF  &--%K&--%K&--%K&--%KFFFF<(@$L, A A   , , H H  $ $ $ . . 3 3 2 2 2 2  r   r%   c                   "     e Zd ZdZ fdZ xZS )KaitaiStructErrorzCommon ancestor for all error originating from Kaitai Struct usage.
    Stores KSY source path, pointing to an element supposedly guilty of
    an error.
    c                 D    t         t        |   |d|       || _        y )Nz: )superr   r   src_path)r   msgr   	__class__s      r   r   zKaitaiStructError.__init__  s    /Hc0JK r   r1   r2   r3   __doc__r   __classcell__r   s   @r   r   r     s    ! !r   r   c                   "     e Zd ZdZ fdZ xZS )UndecidedEndiannessErrorzError that occurs when default endianness should be decided with
    switch, but nothing matches (although using endianness expression
    implies that there should be some positive result).
    c                 .    t         t        |   d|       y )Nz)unable to decide on endianness for a type)r   r  r   )r   r   r   s     r   r   z!UndecidedEndiannessError.__init__  s    &67bdlmr   r   r  s   @r   r  r    s    n nr   r  c                   "     e Zd ZdZ fdZ xZS )ValidationFailedErrorz~Common ancestor for all validation failures. Stores pointer to
    KaitaiStream IO object which was involved in an error.
    c                 b    t         t        |   d|j                         |fz  |       || _        y )Nz at pos %d: validation failed: %s)r   r  r   rH   r/   )r   r   r/   r   r   s       r   r   zValidationFailedError.__init__  s3    #T34VZ\Z`Z`ZbdgYh4hjrsr   r   r  s   @r   r  r    s     r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationNotEqualErrorz{Signals validation failure: we required "actual" value to be equal to
    "expected", but it turned out that it's not.
    c                 |    t         t        |   dt        |      dt        |      ||       || _        || _        y )Nznot equal, expected 
, but got )r   r
  r   reprr   r   )r   r   r   r/   r   r   s        r   r   z ValidationNotEqualError.__init__  sA    %t5^bck^lnrsynz6{}  BJ  	K r   r   r  s   @r   r
  r
         r   r
  c                   "     e Zd ZdZ fdZ xZS )ValidationLessThanErrorzSignals validation failure: we required "actual" value to be
    greater than or equal to "min", but it turned out that it's not.
    c                 |    t         t        |   dt        |      dt        |      ||       || _        || _        y )Nznot in range, min r  )r   r  r   r  r   r   )r   	min_boundr   r/   r   r   s        r   r   z ValidationLessThanError.__init__  sA    %t5\`aj\kmqrxmy6z|~  AI  	Jr   r   r  s   @r   r  r    r  r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationGreaterThanErrorzSignals validation failure: we required "actual" value to be
    less than or equal to "max", but it turned out that it's not.
    c                 |    t         t        |   dt        |      dt        |      ||       || _        || _        y )Nznot in range, max r  )r   r  r   r  r   r   )r   	max_boundr   r/   r   r   s        r   r   z#ValidationGreaterThanError.__init__  sE    ($8_cdm_nptu{p|9}  @B  DL  	Mr   r   r  s   @r   r  r    r  r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationNotAnyOfErrorzuSignals validation failure: we required "actual" value to be
    from the list, but it turned out that it's not.
    c                 V    t         t        |   dt        |      z  ||       || _        y )Nznot any of the list, got %s)r   r  r   r  r   r   r   r/   r   r   s       r   r   z ValidationNotAnyOfError.__init__  s-    %t56SW[\bWc6dfhjrsr   r   r  s   @r   r  r         r   r  c                   "     e Zd ZdZ fdZ xZS )ValidationExprErrorz{Signals validation failure: we required "actual" value to match
    the expression, but it turned out that it doesn't.
    c                 V    t         t        |   dt        |      z  ||       || _        y )Nz#not matching the expression, got %s)r   r  r   r  r   r  s       r   r   zValidationExprError.__init__  s-    !412W[_`f[g2hjlnvwr   r   r  s   @r   r  r    r  r   r  )r   sysr   r/   r   r   r   r   version_infor   __version__API_VERSIONobjectr
   r%   r&   r   r  r  r
  r  r  r  r  r   r   r   <module>r$     s     
  0 0	qQ 
 %6 %@B6 BJ!	 !n0 n- 3 3 !6 3 / r   