
    F\h                         S r / SQrSrSrSrSr SSKJrJr  S	 r
S
 rSS jrSS jrSS jrSS jrS rS rS r\S:X  a  \" 5         gg! \	 a    SrSr N>f = f)zHConversions to/from quoted-printable transport encoding as per RFC 1521.)encodedecodeencodestringdecodestring   =L   s   0123456789ABCDEF        )a2b_qpb2a_qpNc                     [        U [        5      (       d   eU S;   a  U$ U S:X  a  U$ U [        :H  =(       d    SU s=:*  =(       a    S:*  Os  (       + $ )zDecide whether a particular byte ordinal needs to be quoted.

The 'quotetabs' flag indicates whether embedded tabs and spaces should be
quoted.  Note that line-ending tabs and spaces are always encoded, as per
RFC 1521.
    	   _       ~)
isinstancebytesESCAPE)c	quotetabsheaders      /usr/lib/python3.13/quopri.pyneedsquotingr      sO     aF{Dy;1tq00D011r   c                     [        U [        5      (       a  [        U 5      S:X  d   e[        U 5      n [        [        [
        U S-     [
        U S-     45      -   $ )zQuote a single character.      )r   r   lenordr   HEXr   s    r   quoter    $   sM    aCFAI--AAE3q"u:s1R4y1222r   c                    [         b,  U R                  5       n[        XBUS9nUR                  U5        gUS4S jnSnU R                  5       =n(       a  / n	Sn
USS S:X  a  USS nSn
U H\  n[	        U45      n[        XU5      (       a  [        U5      nU(       a  US:X  a  U	R                  S5        MK  U	R                  U5        M^     Ub  U" U5        [        R                  U	5      n[        U5      [        :  a2  U" US[        S	-
   S
S9  U[        S	-
  S n[        U5      [        :  a  M2  UnU R                  5       =n(       a  M  Ub  U" UW
S9  gg)ab  Read 'input', apply quoted-printable encoding, and write to 'output'.

'input' and 'output' are binary file objects. The 'quotetabs' flag
indicates whether embedded tabs and spaces should be quoted. Note that
line-ending tabs and spaces are always encoded, as per RFC 1521.
The 'header' flag indicates whether we are encoding spaces as _ as per RFC
1522.Nr   r      
c                     U (       a0  U SS  S;   a'  UR                  U S S [        U SS  5      -   U-   5        g U S:X  a  UR                  [        U 5      U-   5        g UR                  X-   5        g )Nr      .)writer    )soutputlineEnds      r   r'   encode.<locals>.write;   sd     236!LL3B%"#-/'9:$YLLqG+,LL%r   r   r%   r   r   r   s   =
)r*   )r   readr'   readliner   r   r    appendEMPTYSTRINGjoinr   MAXLINESIZE)inputr)   r   r   dataodatar'   prevlinelineoutlinestrippedr   thislines                r   r   r   ,   s[    zz|t@U & H.."
"$
"99DHAqdAA&11!H!t)t$q!  (O ##G,(mk) (>KM*F;A/H	 (mk) 9 .."
"$
"< h) r   c                     [         b
  [        XUS9$ SSKJn  U" U 5      nU" 5       n[        XEX5        UR	                  5       $ )Nr"   r	   BytesIO)r   ior<   r   getvalue)r(   r   r   r<   infpoutfps         r   r   r   g   s?    aV<<1:DIE
4	*>>r   c           	         [         b+  U R                  5       n[        X2S9nUR                  U5        gSnU R                  5       =n(       Gae  S[	        U5      pUS:  a;  XhS-
  U S:X  a0  SoS-
  nUS:  a#  XhS-
  U S;   a  US-
  nUS:  a  XhS-
  U S;   a  M  OSn	Xx:  a  XgUS-    n
U
S:X  a  U(       a
  US	-   oWS-   nOU
[
        :w  a	  XZ-   oWS-   nOUS-   U:X  a
  U	(       d  Sn	OUS-   U:  a   XgS-   US
-    [
        :X  a  U[
        -   oWS
-   nOfUS
-   U:  aU  [        XgS-   US
-    5      (       a=  [        XgS
-   US-    5      (       a%  U[        [        XgS-   US-    5      45      -   oWS-   nOXZ-   oWS-   nXx:  a  M  U	(       d  UR                  US-   5        SnU R                  5       =n(       a  GMe  U(       a  UR                  U5        gg)zRead 'input', apply quoted-printable decoding, and write to 'output'.
'input' and 'output' are binary file objects.
If 'header' is true, decode underscore as space (per RFC 1522).Nr   r   r	   r   r#   s    	r   r         )	r
   r,   r'   r-   r   r   ishexr   unhex)r2   r)   r   r3   r4   newr6   inpartialr   s              r   r   r   r   s   
 zz|t+U
C.."
"$
"#d)1q5TA#a[E)GqSa%D1QK83aC a%D1QK83 GeqsADyVDjc!fgQ3q1'U1qTA#ac]f4Fl!A1qU4!AaC=11eD1QqSM6J6JE5c!A##7"9::!AgQ3q e LLu%C3 .."
"$
"
"4 S r   c                     [         b	  [        XS9$ SSKJn  U" U 5      nU" 5       n[        X4US9  UR	                  5       $ )NrB   r	   r;   )r
   r=   r<   r   r>   )r(   r   r<   r?   r@   s        r   r   r      s=    a''1:DIE
4v&>>r   c                     [        U [        5      (       d   eSU s=:*  =(       a    S:*  Os  =(       d1    SU s=:*  =(       a    S:*  Os  =(       d    SU s=:*  =(       a    S:*  $ s  $ )zDReturn true if the byte ordinal 'c' is a hexadecimal digit in ASCII.   0   9   a   f   A   F)r   r   r   s    r   rE   rE      sR    a1F 1 1T 1FTQ5F5F$5FF5FFr   c                 6   SnU  H  n[        U45      nSUs=::  a  S::  a  O  O[        S5      nOQSUs=::  a  S::  a  O  O[        S5      S-
  nO2S	Us=::  a  S
::  a  O  O[        S	5      S-
  nO S[        U5      -   5       eUS-  [        U5      U-
  -   nM     U$ )z.Get the integer value of a hexadecimal number.r	   rM   rN   0rO   rP   a
   rQ   rR   znon-hex digit r   )r   r   repr)r(   bitsr   rH   s       r   rF   rF      s    D1$K1CAQ$CAQ$D	"A2*47225Bw#a&1*%  Kr   c                     SS K n SS Kn UR                  U R                  SS  S5      u  p#SnSnW H  u  pxUS	:X  a  S
nUS:X  d  M  S
nM     U(       a4  U(       a-  U R                  U l        [        S5        U R                  S5        W(       d  S/nSn	U H  n
U
S:X  a  U R                  R                  nO [        U
S5      n U(       a   [        XR
                  R                  5        O [        XR
                  R                  U5        U
S:w  a  UR                  5         M  M     U	(       a  U R                  U	5        g g ! UR                   aY  nU R                  U l        [        U5        [        S5        [        S5        [        S5        U R                  S5         S nAGNyS nAff = f! [         a1  nU R                  R                  U
< SU< S35        Sn	 S nAGMM  S nAff = f! U
S:w  a  UR                  5         f f = f)Nr	   r   tdz"usage: quopri [-t | -d] [file] ...z-t: quote tabsz-d: decode; default encoderC   Fz-tTz-dz -t and -d are mutually exclusive-rbz: can't open (z)
)sysgetoptargverrorstderrstdoutprintexitstdinbufferopenOSErrorr'   r   r   close)r]   r^   optsargsmsgdecotabsorU   stsfilefps               r   mainrs      s   ]]388AB<6
 DD9Td9Td  ZZ
01
C3;!!B$%
	r::,,-r::,,d3s{
 ! $  I << ZZ
c
23*+0  

  D#!FG s{
 s=   !E  6F,AG* F)AF$$F),
G'6%G""G'*H__main__)F)FF)__doc____all__r   r1   r   r/   binasciir
   r   ImportErrorr   r    r   r   r   r   rE   rF   rs   __name__ r   r   <module>r{      s    O ?	'239*v'RG
$*\ zF y  FFs   A
 

AA