™N
ïùO5c       sá  d  Z  d Z d Z d Z k Z k Z e i d e i ƒ Z e i d e i ƒ Z	 e i d e i e i
 Bƒ Z e i d e i e i
 Bƒ Z e i d ƒ Z e i d	 e i ƒ Z e i d
 e i ƒ Z e i d e i ƒ Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d „  Z d „  Z d d „ Z d d „ Z e i d ƒ Z e i d ƒ Z d „  Z e i d ƒ Z d „  Z e i d e i ƒ Z e i d e i ƒ Z e i d ƒ Z d „  Z d „  Z  k! Z! e" d j p' e# e! i$ ƒ d j o e! i$ d d  j oòk% Z% d! Z& d Z' e% i% e! i$ d" d# ƒ \ Z( Z) e# e) ƒ d d" d$ f j o e& GHe! i* d" ƒ n d% d& f e( j d' d& f e( j j p# d( d& f e( j o d' d& f e( j o e& GHe! i* d" ƒ n x› e( d r‘ \ Z+ Z, e+ d% j o
 e  Z- no e+ d' j o
 e Z- nX e+ d) j o3 y e i. e, ƒ Z Wn e& GHe! i* d" ƒ n Xn e+ d( j o
 d" Z' n q¸We# e) ƒ d j o e! i/ e! i0 f Z1 n? e# e) ƒ d" j o e) d e! i0 f Z1 n e) d e) d" f Z1 e' o e1 e' f Z1 n e2 e- e1 ƒ n d* S(+   s¢  Mimification and unmimification of mail messages.

decode quoted-printable parts of a mail message or encode using
quoted-printable.

Usage:
	mimify(input, output)
	unmimify(input, output, decode_base64 = 0)
to encode and decode respectively.  Input and output may be the name
of a file or an open file object.  Only a readline() method is used
on the input file, only a write() method is used on the output file.
When using file names, the input and output file names may be the
same.

Interactive usage:
	mimify.py -e [infile [outfile]]
	mimify.py -d [infile [outfile]]
to encode and decode respectively.  Infile defaults to standard
input and outfile to standard output.
iÈ   s
   ISO-8859-1s   > s.   ^content-transfer-encoding:\s*quoted-printables$   ^content-transfer-encoding:\s*base64s0   ^content-type:.*multipart/.*boundary="?([^;"
]*)s:   ^(content-type:.*charset=")(us-ascii|iso-8859-[0-9]+)(".*)s   ^-*
s   =([0-9a-f][0-9a-f])s   =\?iso-8859-1\?q\?([^? 	
]+)\?=s   ^subject:\s+re: s   Filec      s   d  Z  d „  Z d „  Z RS(   s~   A simple fake file object that knows about limited
	   read-ahead and boundaries.
	   The only supported method is readline().c    s   | |  _  | |  _ t |  _ d  S(   N(   s   files   selfs   boundarys   Nones   peek(   s   selfs   files   boundarys0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   __init__. s    		c    s—   |  i t j	 o d Sn |  i i ƒ  } | o | Sn |  i oN | |  i d j o | |  _ d Sn | |  i d j o | |  _ d Sn n | Sd  S(   Ns    s   
s   --
(   s   selfs   peeks   Nones   files   readlines   lines   boundary(   s   selfs   lines0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   readline3 s    
		(   s   __doc__s   __init__s   readline(    s0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   File) s    	s
   HeaderFilec      s   d „  Z  d „  Z RS(   Nc    s   | |  _  t |  _ d  S(   N(   s   files   selfs   Nones   peek(   s   selfs   files0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   __init__C s    	c    sÞ   |  i t j	 o |  i } t |  _ n |  i i ƒ  } | o | Sn t i | ƒ o | Sn xz d or |  i i ƒ  |  _ t |  i ƒ d j p% |  i d d j o |  i d d j o | Sn | |  i } t |  _ q` Wd  S(   Ni   i    s    s   	(	   s   selfs   peeks   Nones   lines   files   readlines   hes   matchs   len(   s   selfs   lines0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   readlineG s    	 >(   s   __init__s   readline(    s0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys
   HeaderFileB s    	c    s—   d } d } xx d op t i |  | ƒ } | t j o Pn | |  | | i d ƒ !t t	 i
 | i d ƒ d ƒ ƒ } | i d ƒ } q W| |  | Sd S(   s6   Decode a single line of quoted-printable text to 8bit.s    i    i   i   N(   s   newlines   poss	   mime_codes   searchs   lines   ress   Nones   starts   chrs   strings   atois   groups   end(   s   lines   newlines   poss   ress0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   mime_decodeY s      9c    s¯   d } d } x d oˆ t i |  | ƒ } | t j o Pn | i d ƒ } t	 i
 t	 i | d ƒ d ƒ } | |  | | i d ƒ !t | ƒ } | i d ƒ } q W| |  | Sd S(   s   Decode a header line to 8bit.s    i    i   s   _s    N(   s   newlines   poss	   mime_heads   searchs   lines   ress   Nones   groups   matchs   strings   joins   splits   starts   mime_decodes   end(   s   lines   newlines   poss   ress   matchs0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   mime_decode_headerf s      $c    sŽ  t  } d } d } d } |  i o |  i d  t j o
 t } n d } t	 |  ƒ } x(d o | i ƒ  }	 |	 o d Sn | o |	 t | ƒ  | j o |	 t | ƒ }	 | }
 n d }
 t |	 ƒ }	 t i |	 ƒ o d } qU n | o t i |	 ƒ o d } qU n | i |
 |	 ƒ | o t i |	 ƒ o
 d } n t i |	 ƒ } | o d | i d ƒ } n t i |	 ƒ o Pn qU W| o | p | o
 d } n xëd oã|  i ƒ  }	 |	 o d Sn t i t d |	 ƒ }	 | o |	 t | ƒ  | j o |	 t | ƒ }	 | }
 n d }
 xž | o– |	 | d j o" | i |
 |	 ƒ t  } t  }	 Pn |	 | d	 j oM | i |
 |	 ƒ t |  | ƒ } t  | | | ƒ | i! }	 |	 o Pn qn PqW|	 o | ov xc |	 d d
 j oP |	 d  }	 |  i ƒ  } | t t ƒ  t j o | t t ƒ } n |	 | }	 qÇWt# |	 ƒ }	 n |	 o | o |
 o k$ } | i% |	 ƒ }	 n |	 o | i |
 |	 ƒ n qŸWd S(   s?   Convert a quoted-printable part of a MIME mail message to 8bit.i    i   s    i   Ns   --s   \1s   --
s   
s   =
(&   s   Nones	   multiparts   quoted_printables	   is_base64s   is_repls   ifiles   boundarys   QUOTEs   prefixs
   HeaderFiles   hfiles   readlines   lines   lens   prefs   mime_decode_headers   qps   matchs   decode_base64s	   base64_res   ofiles   writes   repls   mps   mp_ress   groups   hes   res   subs	   mime_heads   Files   nifiles   unmimify_parts   peeks   newlines   mime_decodes   base64s   decodestring(   s   ifiles   ofiles   decode_base64s	   multiparts   quoted_printables	   is_base64s   is_repls   prefixs   hfiles   lines   prefs   mp_ress   nifiles   newlines   base64s0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   unmimify_partu s–     
 



 
 	 i    c 	   sù   t  |  ƒ t  d ƒ j o{ t |  ƒ } t  | ƒ t  d ƒ j o
 |  | j oE k } | i i |  ƒ \ } } | i
 |  | i i | d | ƒ ƒ n n |  } t  | ƒ t  d ƒ j o t | d ƒ } n | } t | t ƒ } t | | | ƒ | i ƒ  d S(   s>   Convert quoted-printable parts of a MIME mail message to 8bit.s    s   ,s   wN(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   unmimify_parts   decode_base64s   flush(	   s   infiles   outfiles   decode_base64s   ifiles   oss   ds   fs   ofiles   nifiles0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   unmimifyÊ s     &+s   [=-ÿ]s   [=?-ÿ]c    s…  | o
 t } n t } d } d } t |  ƒ d j o |  d  d j o# t i	 d t
 d ƒ ƒ } d } n xy d oq | i |  | ƒ } | t j o Pn | |  | | i d ƒ !t i	 d t
 | i d ƒ ƒ ƒ } | i d ƒ } qm W| |  | }  d } x| t |  ƒ d j oh d	 } x5 |  | d
 j p |  | d d
 j o | d } qW| d } | |  |  d } |  | }  qý W| |  Sd S(   sZ   Code a single line as quoted-printable.
	   If header is set, quote some extra characters.s    i    i   s   From s   =%02xs   Fi   iK   iI   s   =s   =
N(   s   headers   mime_header_chars   regs	   mime_chars   newlines   poss   lens   lines   strings   uppers   ords   searchs   ress   Nones   starts   groups   ends   i(   s   lines   headers   regs   newlines   poss   ress   is0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   mime_encodeß s8     
$
 :  &
s:   ([ 	(]|^)([-a-zA-Z0-9_+]*[-ÿ][-a-zA-Z0-9_+-ÿ]*)([ 	)]|
)c    s®   d } d } x d o‡ t i |  | ƒ } | t j o Pn d | |  | | i d ƒ !| i d ƒ t	 t
 | i d ƒ d ƒ | i d ƒ f } | i d ƒ } q W| |  | Sd S(   s.   Code a single header line as quoted-printable.s    i    i   s   %s%s%s=?%s?Q?%s?=%si   i   N(   s   newlines   poss   mime_headers   searchs   lines   ress   Nones   starts   groups   CHARSETs   mime_encodes   end(   s   lines   newlines   poss   ress0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   mime_encode_headers      Ps   ^mime-version:s   ^content-transfer-encoding:s   [-ÿ]c    sj  d } } } t } d } } }	 g  }
 d } g  } d } t |  ƒ } xd oü | i ƒ  } | o Pn | o t i | ƒ o
 d } n t i | ƒ o
 d } n t i | ƒ o> d } t i | ƒ o
 d } n t i | ƒ o
 d } n n t i | ƒ } | o d | i d ƒ } n t i | ƒ o | } Pn |
 i | ƒ qI Wx`d oX|  i ƒ  } | o Pn | o< | | d j o | } Pn | | d j o | } Pn n | o | i | ƒ qPn | ov xc | d d j oP | d  } |  i ƒ  } | t t  ƒ  t  j o | t t  ƒ } n | | } qØWt! | ƒ } n | i | ƒ |	 o" t i | ƒ o d }	 } n n | o! t | ƒ t" j o
 d } n n qPWx|
 d r} | o t# | ƒ } n t$ i | ƒ } | om |	 oL t& i' | i d ƒ ƒ d	 j o) d
 | i d ƒ t( | i d ƒ f } n n d | i d d ƒ } n | o t i | ƒ o> d } | o | d } n  | o | d } n | d } n | i* | ƒ q¹W| p | o | oG | i* d ƒ | i* d ƒ |	 o | i* d t( ƒ n | i* d ƒ n | o | o | i* d ƒ n | i* | ƒ x7 | d r- } | o t+ | d ƒ } n | i* | ƒ qRW| i* | ƒ | } xÍ | oÅ | | d j oV xO d oG |  i ƒ  } | o d Sn | o t+ | d ƒ } n | i* | ƒ q´Wn | | d j oI t, |  | ƒ } t. | | d ƒ | i/ } | o Pn | i* | ƒ q™n q™Wd S(   s@   Convert an 8bit part of a MIME mail message to quoted-printable.i    s    i   s   --s   --
s   
i   s   =
s   us-asciis   %s%s%si   s   %sus-ascii%ss   Content-Transfer-Encoding: s   base64
s   quoted-printable
s   7bit
s   Mime-Version: 1.0
s   Content-Type: text/plain; s   charset="%s"
s   charset="us-ascii"
s,   Content-Transfer-Encoding: quoted-printable
N(0   s   has_ctes   is_qps	   is_base64s   Nones	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends
   HeaderFiles   ifiles   hfiles   readlines   lines   iso_chars   searchs   mvs   matchs   is_mimes   ctes   qps	   base64_res   mps   mp_ress   groups   hes   appends   newlines   lens   QUOTEs   mime_decodes   MAXLENs   mime_encode_headers   chrsets
   chrset_ress   strings   lowers   CHARSETs   ofiles   writes   mime_encodes   Files   nifiles   mimify_parts   peek(   s   ifiles   ofiles   is_mimes   has_ctes   is_qps	   is_base64s	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends   hfiles   lines   mp_ress   newlines
   chrset_ress   nifiles0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   mimify_partsæ      


 	 	 -	   	c    sù   t  |  ƒ t  d ƒ j o{ t |  ƒ } t  | ƒ t  d ƒ j o
 |  | j oE k } | i i |  ƒ \ } } | i
 |  | i i | d | ƒ ƒ n n |  } t  | ƒ t  d ƒ j o t | d ƒ } n | } t | t ƒ } t | | d ƒ | i ƒ  d S(   s>   Convert 8bit parts of a MIME mail message to quoted-printable.s    s   ,s   wi    N(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   mimify_parts   flush(   s   infiles   outfiles   ifiles   oss   ds   fs   ofiles   nifiles0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   mimify’s     &+s   __main__s   mimifys/   Usage: mimify [-l len] -[ed] [infile [outfile]]i   s   l:edbi   s   -es    s   -ds   -bs   -lN(3   s   __doc__s   MAXLENs   CHARSETs   QUOTEs   res   strings   compiles   Is   qps	   base64_res   Ss   mps   chrsets   hes	   mime_codes	   mime_heads   repls   Files
   HeaderFiles   mime_decodes   mime_decode_headers   unmimify_parts   unmimifys	   mime_chars   mime_header_chars   mime_encodes   mime_headers   mime_encode_headers   mvs   ctes   iso_chars   mimify_parts   mimifys   syss   __name__s   lens   argvs   getopts   usages   decode_base64s   optss   argss   exits   os   as   encodes   atois   stdins   stdouts   encode_argss   apply(    s0   /var/tmp/python-root/usr/lib/python1.5/mimify.pys   ? s|   		U	 			7K	 

