
    F\h%                         S r SSKrSS jrSS jr " S S\R                  5      r " S S\R
                  5      r " S	 S
\R                  5      r " S S\R                  5      rS r	g)a  Python 'utf-8-sig' Codec
This work similar to UTF-8 with the following changes:

* On encoding/writing a UTF-8 encoded BOM will be prepended/written as the
  first three bytes.

* On decoding/reading if the first three bytes are a UTF-8 encoded BOM, these
  bytes will be skipped.
    Nc                 l    [         R                  [         R                  " X5      S   -   [        U 5      4$ Nr   )codecsBOM_UTF8utf_8_encodelen)inputerrorss     */usr/lib/python3.13/encodings/utf_8_sig.pyencoder      s/    OOf11%@CCJ     c                     SnU S S [         R                  :X  a  U SS  n Sn[         R                  " XS5      u  p4X4U-   4$ )Nr      T)r   r   utf_8_decode)r	   r
   prefixoutputconsumeds        r   decoder      sK    FRayFOO#ab	,,UDAVVO$$r   c                   :    \ rS rSrS	S jrS
S jrS rS rS rSr	g)IncrementalEncoder   c                 P    [         R                  R                  X5        SU l        g N   )r   r   __init__firstselfr
   s     r   r   IncrementalEncoder.__init__   s    !!**48
r   c                     U R                   (       a;  SU l         [        R                  [        R                  " XR                  5      S   -   $ [        R                  " XR                  5      S   $ r   )r   r   r   r   r
   )r   r	   finals      r   r   IncrementalEncoder.encode   sT    ::DJ??&&ukk:1=> > &&ukk:1==r   c                 P    [         R                  R                  U 5        SU l        g r   )r   r   resetr   r   s    r   r$   IncrementalEncoder.reset'   s    !!''-
r   c                     U R                   $ Nr   r%   s    r   getstateIncrementalEncoder.getstate+   s    zzr   c                     Xl         g r(   r)   r   states     r   setstateIncrementalEncoder.setstate.   s    
r   r)   Nstrict)F)
__name__
__module____qualname____firstlineno__r   r   r$   r*   r/   __static_attributes__ r   r   r   r      s    >r   r   c                   6    \ rS rSrS	S jrS rS rS rS rSr	g)
IncrementalDecoder1   c                 P    [         R                  R                  X5        SU l        g r   )r   BufferedIncrementalDecoderr   r   r   s     r   r   IncrementalDecoder.__init__2   s    ))224@
r   c                 J   U R                   (       a|  [        U5      S:  a-  [        R                  R	                  U5      (       a  gSU l         O@SU l         US S [        R                  :X  a"  [        R
                  " USS  X#5      u  pEXES-   4$ [        R
                  " XU5      $ )Nr    r   r   )r   r   r   r   
startswithr   )r   r	   r
   r!   r   r   s         r   _buffer_decode!IncrementalDecoder._buffer_decode6   s    ::5zA~??--e44 #!"DJ
!9/**59fD 'V"QJ//""5%88r   c                 P    [         R                  R                  U 5        SU l        g r   )r   r=   r$   r   r%   s    r   r$   IncrementalDecoder.resetG   s    ))//5
r   c                 b    [         R                  R                  U 5      nUS   U R                  4$ r   )r   r=   r*   r   r-   s     r   r*   IncrementalDecoder.getstateK   s+    11::4@a$**%%r   c                 V    [         R                  R                  X5        US   U l        g r   )r   r=   r/   r   r-   s     r   r/   IncrementalDecoder.setstateP   s!    ))224?1X
r   r)   Nr1   )
r3   r4   r5   r6   r   rC   r$   r*   r/   r7   r8   r   r   r:   r:   1   s    9"&
r   r:   c                   $    \ rS rSrS rSS jrSrg)StreamWriterU   c                 h    [         R                  R                  U 5         U ?g ! [         a     g f = fr(   )r   rL   r$   r   AttributeErrorr%   s    r   r$   StreamWriter.resetV   2    !!$'	 		   $ 
11c                 B    [         R                  U l        [        X5      $ r(   )r   r   r   )r   r	   r
   s      r   r   StreamWriter.encode]   s    ))e$$r   )r   Nr1   )r3   r4   r5   r6   r$   r   r7   r8   r   r   rL   rL   U   s    %r   rL   c                   $    \ rS rSrS rSS jrSrg)StreamReadera   c                 h    [         R                  R                  U 5         U ?g ! [         a     g f = fr(   )r   rV   r$   r   rO   r%   s    r   r$   StreamReader.resetb   rQ   rR   c                 ^   [        U5      S:  a&  [        R                  R                  U5      (       a  gONUS S [        R                  :X  a7  [        R                  U l        [        R                  " USS  U5      u  p4X4S-   4$ [        R                  U l        [        R                  " X5      $ )Nr   r@   )r   r   r   rB   r   r   )r   r	   r
   r   r   s        r   r   StreamReader.decodei   s    u:>))%00  1 2AY&//) --DK!'!4!4U12Yv!FVQJ''))""511r   )r   Nr1   )r3   r4   r5   r6   r$   r   r7   r8   r   r   rV   rV   a   s    2r   rV   c            
      f    [         R                  " S[        [        [        [
        [        [        S9$ )Nz	utf-8-sig)namer   r   incrementalencoderincrementaldecoderstreamreaderstreamwriter)r   	CodecInfor   r   r   r:   rV   rL   r8   r   r   getregentryrc   y   s*    --!! r   r1   )
__doc__r   r   r   r   r=   r:   rL   rV   rc   r8   r   r   <module>re      sg    %22 .":: "H
%6&& 
%26&& 20	r   