‡Æ
æMö9c       s@    d  Z    d k Z  d k Z  d k Z  d k Z 
 d e i f d „  ƒ  YZ b e Z d d „  Z „ d „  Z	 — d „  Z
 ® d Z µ h  e d <e d	 <e d
 <e d <d d <d d <Z ¾ h  d d	 <d d <d d <d d
 <d d <d d <Z Ç d „  Z Ì d „  Z Ú d „  Z à d „  Z d S(   s<   Various tools used by MIME-reading or MIME-writing programs.Ns   Messagec      s‰   
 d  Z    d d „ Z  d „  Z ( d „  Z : d „  Z = d „  Z E d „  Z M d „  Z R d	 „  Z U d
 „  Z	 X d „  Z
 RS(   s…   A derived class of rfc822.Message that knows about MIME headers and
	contains some hooks for decoding encoded and multipart messages.c    sd     t  i i |  | | ƒ  |  i d ƒ |  _  |  i d ƒ |  _  |  i	 ƒ   |  i
 ƒ  d  S(   Ns   content-transfer-encodings   content-type(   s   rfc822s   Messages   __init__s   selfs   fps   seekables	   getheaders   encodingheaders
   typeheaders	   parsetypes
   parseplist(   s   selfs   fps   seekables&   /mit/python/lib/python2.0/mimetools.pys   __init__ s
   i   c    s#    |  i }  | t j o  d } n  d | j o6  t i | d ƒ }  | | |  _  | |  } n   d |  _ ! t i | d ƒ } " xB t
 t | ƒ ƒ d " r) } # t i t i | | ƒ ƒ | | <q« W$ t i | d ƒ |  _ % | d |  _ & t i | d d ƒ |  _ d  S(   Ns
   text/plains   ;s    s   /i    i   (   s   selfs
   typeheaders   strs   Nones   strings   indexs   is	   plisttexts   splitfieldss   fieldss   ranges   lens   lowers   strips
   joinfieldss   types   maintypes   subtype(   s   selfs   strs   is   fieldss&   /mit/python/lib/python2.0/mimetools.pys	   parsetype s    	'c    s  ( ) |  i } * g  |  _ + xõ + | d  d j oà , | d } - d | j o / t i | d ƒ } n 1 t | ƒ } 2 | |  } 3 d | j oQ 4 t i | d ƒ } 5 t i
 t i | |  ƒ ƒ d t i | | d ƒ } n 7 |  i i t i | ƒ ƒ 8 | | } q! Wd  S(   Ni   s   ;s   =(   s   selfs	   plisttexts   strs   plists   strings   indexs   ends   lens   fs   is   lowers   strips   append(   s   selfs   strs   ends   fs   is&   /mit/python/lib/python2.0/mimetools.pys
   parseplist( s    <c    s   : ; |  i Sd  S(   N(   s   selfs   plist(   s   selfs&   /mit/python/lib/python2.0/mimetools.pys   getplist: s   c    s{   = > t  i | ƒ d } ? t | ƒ } @ xB |  i d @ r2 } A | |  | j o B t i	 | | ƒ Sn q7 WC t
 Sd  S(   Ns   =i    (   s   strings   lowers   names   lens   ns   selfs   plists   ps   rfc822s   unquotes   None(   s   selfs   names   ns   ps&   /mit/python/lib/python2.0/mimetools.pys   getparam= s    	c    sy   E F g  } G x\ |  i d G rL } H t i | d ƒ } I | d j o! J | i t i | |  ƒ ƒ n q WK | Sd  S(   Ni    s   =(	   s   results   selfs   plists   ps   strings   finds   is   appends   lower(   s   selfs   results   ps   is&   /mit/python/lib/python2.0/mimetools.pys   getparamnamesE s   	 	%c    s8   M N |  i t j o O d Sn P t i |  i ƒ Sd  S(   Ns   7bit(   s   selfs   encodingheaders   Nones   strings   lower(   s   selfs&   /mit/python/lib/python2.0/mimetools.pys   getencodingM s   c    s   R S |  i Sd  S(   N(   s   selfs   type(   s   selfs&   /mit/python/lib/python2.0/mimetools.pys   gettypeR s   c    s   U V |  i Sd  S(   N(   s   selfs   maintype(   s   selfs&   /mit/python/lib/python2.0/mimetools.pys   getmaintypeU s   c    s   X Y |  i Sd  S(   N(   s   selfs   subtype(   s   selfs&   /mit/python/lib/python2.0/mimetools.pys
   getsubtypeX s   (   s   __doc__s   __init__s	   parsetypes
   parseplists   getplists   getparams   getparamnamess   getencodings   gettypes   getmaintypes
   getsubtype(    s&   /mit/python/lib/python2.0/mimetools.pys   Message
 s   		c  	   s  d k m n d k  }  o d k } p t t j o§ q d k } r d k } s | i | i ƒ  ƒ } t y u | i	 ƒ  } Wn v w d } n Xx y y | i ƒ  } Wn z { d } n X| | d | d | a n } d |  i  ƒ  } ~ | i d d ƒ }  t d | d | Sd S(   sQ  Return a random string usable as a multipart boundary.
	The method used is so that it is *very* unlikely that the same
	string of characters will every occur again in the Universe,
	so the caller needn't check the data it is packing for the
	occurrence of the boundary.

	The boundary contains dots so you have to quote it in the header.Ns   1s   .s   %.3fi    iÿ  (   s   times   randoms   _prefixs   Nones   sockets   oss   gethostbynames   gethostnames   hostids   getuids   uids   getpids   pids	   timestamps   randints   seed(	   s   times   randoms   sockets   oss   hostids   uids   pids	   timestamps   seeds&   /mit/python/lib/python2.0/mimetools.pys   choose_boundaryd s(   c    s  „ … † | d j o# ‡ d k } ˆ | i |  | ƒ Sn ‰ | d j o# Š d k } ‹ | i |  | ƒ Sn Œ | d d d d f j o#  d k } Ž | i |  | ƒ Sn  | d d	 f j o  | i |  i ƒ  ƒ Sn ‘ t	 i
 | ƒ o ’ t |  t	 | | ƒ n ” t d
 | ‚ d S(   sD   Decode common content-transfer-encodings (base64, quopri, uuencode).s   base64Ns   quoted-printables   uuencodes
   x-uuencodes   uues   x-uues   7bits   8bits%   unknown Content-Transfer-Encoding: %s(   s   encodings   base64s   decodes   inputs   outputs   quopris   uus   writes   reads	   decodetabs   has_keys   pipethroughs
   ValueError(   s   inputs   outputs   encodings   base64s   quopris   uus&   /mit/python/lib/python2.0/mimetools.pys   decode„ s   c    s   — ˜ ™ | d j o# š d k } › | i |  | ƒ Sn œ | d j o&  d k } ž | i |  | d ƒ Sn Ÿ | d d d d f j o#   d k } ¡ | i |  | ƒ Sn ¢ | d	 d
 f j o £ | i |  i ƒ  ƒ Sn ¤ t	 i
 | ƒ o ¥ t |  t	 | | ƒ n § t d | ‚ d S(   sD   Encode common content-transfer-encodings (base64, quopri, uuencode).s   base64Ns   quoted-printablei    s   uuencodes
   x-uuencodes   uues   x-uues   7bits   8bits%   unknown Content-Transfer-Encoding: %s(   s   encodings   base64s   encodes   inputs   outputs   quopris   uus   writes   reads	   encodetabs   has_keys   pipethroughs
   ValueError(   s   inputs   outputs   encodings   base64s   quopris   uus&   /mit/python/lib/python2.0/mimetools.pys   encode— s   sa   (
TEMP=/tmp/@uu.$$
sed "s%^begin [0-7][0-7]* .*%begin 600 $TEMP%" | uudecode
cat $TEMP
rm $TEMP
)s   uuencodes
   x-uuencodes   uues   x-uues   mmencode -u -qs   quoted-printables   mmencode -u -bs   base64s   uuencode tempfiles   mmencode -qs   mmencode -bc    s9   Ç È t  i | d ƒ } É t |  | ƒ Ê | i ƒ  d  S(   Ns   w(   s   oss   popens   commands   pipes   copyliterals   inputs   close(   s   inputs   commands   pipes&   /mit/python/lib/python2.0/mimetools.pys   pipetoÇ s   c    sÃ   Ì Í t  i ƒ  } Î y Ï t | d ƒ } Wn* Ð t j
 o Ñ d G| GHÒ d  Sn XÓ t |  | ƒ Ô | i ƒ  Õ t	 i
 | d | d ƒ } Ö t | | ƒ × | i ƒ  Ø t	 i | ƒ d  S(   Ns   ws   *** Cannot create temp files    <s   r(   s   tempfiles   mktemps   tempnames   opens   temps   IOErrors   copyliterals   inputs   closes   oss   popens   commands   pipes
   copybinarys   outputs   unlink(   s   inputs   commands   outputs   tempnames   temps   pipes&   /mit/python/lib/python2.0/mimetools.pys   pipethroughÌ s   c    sN   Ú Û xA Û d o6 Ü |  i ƒ  } Ý | o Ý Pn Þ | i | ƒ q	 Wd  S(   Ni   (   s   inputs   readlines   lines   outputs   write(   s   inputs   outputs   lines&   /mit/python/lib/python2.0/mimetools.pys   copyliteralÚ s    
 c    sZ   à á d } â xD â d o9 ã |  i | ƒ } ä | o ä Pn å | i | ƒ q Wd  S(   Ni    i   (   s   BUFSIZEs   inputs   reads   lines   outputs   write(   s   inputs   outputs   BUFSIZEs   lines&   /mit/python/lib/python2.0/mimetools.pys
   copybinaryà s   	 
 (   s   __doc__s   oss   rfc822s   strings   tempfiles   Messages   Nones   _prefixs   choose_boundarys   decodes   encodes   uudecode_pipes	   decodetabs	   encodetabs   pipetos   pipethroughs   copyliterals
   copybinary(    s&   /mit/python/lib/python2.0/mimetools.pys   ? s    X	 	?	?	