Ë
    äØjj9!  ã                   óB   — d dl mZmZ ddlmZ ddlmZ  G d„ de«      Zy)é    )ÚListÚUnioné   )ÚCharSetProber)ÚProbingStatec                   ó  ‡ — e Zd ZdZdZdZdˆ fd„Zdˆ fd„Zede	fd„«       Z
ede	fd	„«       Zdefd
„Zdefd„Zdefd„Zdefd„Zdefd„Zdefd„Zdee   ddfd„Zdee   ddfd„Zdeeef   defd„Zedefd„«       Zdefd„Zˆ xZS )ÚUTF1632Proberad  
    This class simply looks for occurrences of zero bytes, and infers
    whether the file is UTF16 or UTF32 (low-endian or big-endian)
    For instance, files looking like (       [nonzero] )+
    have a good probability to be UTF32BE.  Files looking like (   [nonzero] )+
    may be guessed to be UTF16BE, and inversely for little-endian varieties.
    é   g®Gázî?ÚreturnNc                 ó  •— t         ‰| �  «        d| _        dgdz  | _        dgdz  | _        t
        j                  | _        g d¢| _        d| _	        d| _
        d| _        d| _        d| _        d| _        | j                  «        y )Nr   é   ©r   r   r   r   F)ÚsuperÚ__init__ÚpositionÚzeros_at_modÚnonzeros_at_modr   Ú	DETECTINGÚ_stateÚquadÚinvalid_utf16beÚinvalid_utf16leÚinvalid_utf32beÚinvalid_utf32leÚ'first_half_surrogate_pair_detected_16beÚ'first_half_surrogate_pair_detected_16leÚreset©ÚselfÚ	__class__s    €úc/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf1632prober.pyr   zUTF1632Prober.__init__)   s~   ø€ Ü‰ÑÔØˆŒØ˜C !™GˆÔØ !˜s Q™wˆÔÜ"×,Ñ,ˆŒÚ ˆŒ	Ø$ˆÔØ$ˆÔØ$ˆÔØ$ˆÔØ7<ˆÔ4Ø7<ˆÔ4Ø�
‰
�ó    c                 óì   •— t         ‰| �  «        d| _        dgdz  | _        dgdz  | _        t
        j                  | _        d| _        d| _	        d| _
        d| _        d| _        d| _        g d¢| _        y )Nr   r   Fr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    €r!   r   zUTF1632Prober.reset8   ss   ø€ Ü‰‰ŒØˆŒØ˜C !™GˆÔØ !˜s Q™wˆÔÜ"×,Ñ,ˆŒØ$ˆÔØ$ˆÔØ$ˆÔØ$ˆÔØ7<ˆÔ4Ø7<ˆÔ4Ú ˆ�	r"   c                 óŒ   — | j                  «       ry| j                  «       ry| j                  «       ry| j                  «       ryy)Nzutf-32bezutf-32lezutf-16bezutf-16lezutf-16)Úis_likely_utf32beÚis_likely_utf32leÚis_likely_utf16beÚis_likely_utf16le©r   s    r!   Úcharset_namezUTF1632Prober.charset_nameF   sA   € à×!Ñ!Ô#ØØ×!Ñ!Ô#ØØ×!Ñ!Ô#ØØ×!Ñ!Ô#Øàr"   c                  ó   — y)NÚ © r)   s    r!   ÚlanguagezUTF1632Prober.languageS   s   € àr"   c                 ó4   — t        d| j                  dz  «      S )Nç      ð?g      @©Úmaxr   r)   s    r!   Úapprox_32bit_charsz UTF1632Prober.approx_32bit_charsW   ó   € Ü�3˜Ÿ™¨Ñ+Ó,Ð,r"   c                 ó4   — t        d| j                  dz  «      S )Nr0   g       @r1   r)   s    r!   Úapprox_16bit_charsz UTF1632Prober.approx_16bit_charsZ   r4   r"   c                 óf  — | j                  «       }|| j                  k\  xr‘ | j                  d   |z  | j                  kD  xrp | j                  d   |z  | j                  kD  xrO | j                  d   |z  | j                  kD  xr. | j                  d   |z  | j                  kD  xr | j
                   S ©Nr   r   é   é   )r3   ÚMIN_CHARS_FOR_DETECTIONr   ÚEXPECTED_RATIOr   r   ©r   Úapprox_charss     r!   r%   zUTF1632Prober.is_likely_utf32be]   sÄ   € Ø×.Ñ.Ó0ˆØ˜t×;Ñ;Ñ;ò 
Ø×Ñ˜aÑ  <Ñ/°$×2EÑ2EÑEò )Ø×!Ñ! !Ñ$ |Ñ3°d×6IÑ6IÑIò)à×!Ñ! !Ñ$ |Ñ3°d×6IÑ6IÑIò)ð ×$Ñ$ QÑ'¨,Ñ6¸×9LÑ9LÑLò)ð ×(Ñ(Ð(ð	
r"   c                 óf  — | j                  «       }|| j                  k\  xr‘ | j                  d   |z  | j                  kD  xrp | j                  d   |z  | j                  kD  xrO | j                  d   |z  | j                  kD  xr. | j                  d   |z  | j                  kD  xr | j
                   S r8   )r3   r;   r   r<   r   r   r=   s     r!   r&   zUTF1632Prober.is_likely_utf32leg   sÄ   € Ø×.Ñ.Ó0ˆØ˜t×;Ñ;Ñ;ò 
Ø× Ñ  Ñ# lÑ2°T×5HÑ5HÑHò )Ø×!Ñ! !Ñ$ |Ñ3°d×6IÑ6IÑIò)à×!Ñ! !Ñ$ |Ñ3°d×6IÑ6IÑIò)ð ×!Ñ! !Ñ$ |Ñ3°d×6IÑ6IÑIò)ð ×(Ñ(Ð(ð	
r"   c                 ó"  — | j                  «       }|| j                  k\  xro | j                  d   | j                  d   z   |z  | j                  kD  xr> | j                  d   | j                  d   z   |z  | j                  kD  xr | j
                   S )Nr   r:   r   r9   )r6   r;   r   r<   r   r   r=   s     r!   r'   zUTF1632Prober.is_likely_utf16beq   ó¢   € Ø×.Ñ.Ó0ˆØ˜t×;Ñ;Ñ;ò 
Ø×!Ñ! !Ñ$ t×';Ñ';¸AÑ'>Ñ>À,ÑNØ×!Ñ!ñ"ò )à×"Ñ" 1Ñ%¨×(9Ñ(9¸!Ñ(<Ñ<ÀÑLØ×!Ñ!ñ"ò)ð ×(Ñ(Ð(ð	
r"   c                 ó"  — | j                  «       }|| j                  k\  xro | j                  d   | j                  d   z   |z  | j                  kD  xr> | j                  d   | j                  d   z   |z  | j                  kD  xr | j
                   S )Nr   r9   r   r:   )r6   r;   r   r<   r   r   r=   s     r!   r(   zUTF1632Prober.is_likely_utf16le{   rA   r"   r   c                 óê   — |d   dk7  s)|d   dkD  s!|d   dk(  r |d   dk(  rd|d   cxk  rdk  r
n nd| _         |d   dk7  s)|d   dkD  s!|d   dk(  r#|d   dk(  rd|d   cxk  rdk  rn y	d| _        y	y	y	y	)
zÖ
        Validate if the quad of bytes is valid UTF-32.

        UTF-32 is valid in the range 0x00000000 - 0x0010FFFF
        excluding 0x0000D800 - 0x0000DFFF

        https://en.wikipedia.org/wiki/UTF-32
        r   r   é   éØ   r9   éß   Tr:   N)r   r   )r   r   s     r!   Úvalidate_utf32_charactersz'UTF1632Prober.validate_utf32_characters…   s”   € ð �‰G�qŠLØ�A‰w˜Š~Ø�Q‘˜1’  a¡¨A¢°$¸$¸q¹'Ô2IÀTÕ2Ià#'ˆDÔ à�‰G�qŠLØ�A‰w˜Š~Ø�Q‘˜1’  a¡¨A¢°$¸$¸q¹'Ô2IÀTÕ2Ià#'ˆDÕ ð 3J �r"   Úpairc                 óz  — | j                   s2d|d   cxk  rdk  rn nd| _         n9d|d   cxk  rdk  r+n n(d| _        n d|d   cxk  rdk  rn nd| _         nd| _        | j                  s3d|d   cxk  rdk  rn nd| _        y	d|d   cxk  rdk  rn y	d| _        y	y	d|d   cxk  rdk  r	d| _        y	 d| _        y	)
a9  
        Validate if the pair of bytes is  valid UTF-16.

        UTF-16 is valid in the range 0x0000 - 0xFFFF excluding 0xD800 - 0xFFFF
        with an exception for surrogate pairs, which must be in the range
        0xD800-0xDBFF followed by 0xDC00-0xDFFF

        https://en.wikipedia.org/wiki/UTF-16
        rE   r   éÛ   TéÜ   rF   Fr   N)r   r   r   r   )r   rH   s     r!   Úvalidate_utf16_charactersz'UTF1632Prober.validate_utf16_characters›   sÊ   € ð ×;Ò;Ø�t˜A‘wÔ& $Õ&Ø?C�Õ<Ø˜˜a™Ô( DÕ(Ø'+�Õ$à�t˜A‘wÔ& $Õ&Ø?D�Õ<à'+�Ô$à×;Ò;Ø�t˜A‘wÔ& $Õ&Ø?C�Õ<Ø˜˜a™Ô( DÕ(Ø'+�Õ$ð )ð �t˜A‘wÔ& $Ò&Ø?D�Õ<ð 'ð (,�Õ$r"   Úbyte_strc                 ó®  — |D ]Å  }| j                   dz  }|| j                  |<   |dk(  rW| j                  | j                  «       | j                  | j                  dd «       | j                  | j                  dd «       |dk(  r| j                  |xx   dz  cc<   n| j
                  |xx   dz  cc<   | xj                   dz  c_         ŒÇ | j                  S )Nr   r:   r   r9   r   )r   r   rG   rL   r   r   Ústate)r   rM   ÚcÚmod4s       r!   ÚfeedzUTF1632Prober.feed»   sÂ   € Øò 	ˆAØ—=‘= 1Ñ$ˆDØˆD�I‰I�d‰OØ�qŠyØ×.Ñ.¨t¯y©yÔ9Ø×.Ñ.¨t¯y©y¸¸1¨~Ô>Ø×.Ñ.¨t¯y©y¸¸1¨~Ô>Ø�AŠvØ×!Ñ! $Ó'¨1Ñ,Ô'à×$Ñ$ TÓ*¨aÑ/Ó*Ø�MŠM˜QÑŽMð	ð �z‰zÐr"   c                 ó:  — | j                   t        j                  t        j                  hv r| j                   S | j	                  «       dkD  r!t        j                  | _         | j                   S | j
                  dkD  rt        j                  | _         | j                   S )Ngš™™™™™é?i   )r   r   ÚNOT_MEÚFOUND_ITÚget_confidencer   r)   s    r!   rO   zUTF1632Prober.stateÊ   sz   € à�;‰;œ<×.Ñ.´×0EÑ0EÐFÑFà—;‘;ÐØ×ÑÓ  4Ò'Ü&×/Ñ/ˆDŒKð
 �{‰{Ðð	 �]‰]˜XÒ%ô '×-Ñ-ˆDŒKØ�{‰{Ðr"   c                 óŠ   — | j                  «       s0| j                  «       s | j                  «       s| j                  «       rdS dS )Ng333333ë?g        )r(   r'   r&   r%   r)   s    r!   rV   zUTF1632Prober.get_confidence×   sH   € ð ×&Ñ&Ô(Ø×)Ñ)Ô+Ø×)Ñ)Ô+Ø×)Ñ)Ô+ð ð		
ð ð		
r"   )r   N) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r;   r<   r   r   ÚpropertyÚstrr*   r.   Úfloatr3   r6   Úboolr%   r&   r'   r(   r   ÚintrG   rL   r   ÚbytesÚ	bytearrayr   rR   rO   rV   Ú__classcell__)r    s   @r!   r	   r	      s  ø„ ñð !Ðà€Nõõ!ð ð
˜cò 
ó ð
ð ð˜#ò ó ðð- Eó -ð- Eó -ð
 4ó 
ð
 4ó 
ð
 4ó 
ð
 4ó 
ð(¨d°3©ið (¸Dó (ð,,¨d°3©ið ,¸Dó ,ð@˜U 5¨)Ð#3Ñ4ð ¸ó ð ð
�|ò 
ó ð
ð

 ÷ 

r"   r	   N)Útypingr   r   Úcharsetproberr   Úenumsr   r	   r-   r"   r!   ú<module>rg      s   ð÷* å (Ý ôF
�Mõ F
r"   