;ò
¢)?Bc           @   s  d  Z  d k l Z d k Z d k Z d k Z d k Z d k Z d k Z d k	 Z	 d k
 Z
 d k Z d k Z d k Z d k l Z l Z d k l Z d k l Z d k l Z d k l Z d k l Z d	 k l Z d
 k l Z d k l Z e i Z e Z e i  o' y d k Z Wq1e! j
 o q1Xn d Z" d Z# e i$ d j ot y d k% Z% Wn e! j
 o qÁXe% i& e% i' ƒ \ Z( Z) e* e) e+ e( d d ƒ ƒ Z, e% i- e% i' e, e) f ƒ n y e. e/ f Wn e0 j
 o d Z. d Z/ n Xe d „ Z1 d „  Z2 d „  Z3 d „  Z4 d Z5 e d „ Z6 e i7 d ƒ Z8 e i7 d e i9 ƒ Z: e i7 d ƒ Z; e i7 d ƒ Z< e i7 d ƒ Z= e i7 d e i9 ƒ Z> e i7 d e i9 ƒ Z? e i7 d  ƒ Z@ h  ZA h  ZB e e e d! „ ZC d" e iD f d# „  ƒ  YZD d$ e iE f d% „  ƒ  YZF d S(&   sl  HyperArch: Pipermail archiving for Mailman

     - The Dragon De Monsyne <dragondm@integral.org>

   TODO:
     - Should be able to force all HTML to be regenerated next time the
       archive is run, in case a template is changed.
     - Run a command to generate tarball of html archives for downloading
       (probably in the 'update_dirty_archives' method).
(   s   nested_scopesN(   s   decode_headers   make_header(   s   mm_cfg(   s   Utils(   s   LockFile(   s   MailList(   s   i18n(   s   SafeDict(   s   syslog(   s   ArchiverMailboxs    s   
s   darwini   i   i   i    c         C   sg   d d f d d f d d f d d f f } x& | D] \ } } |  i | | ƒ }  q1 Wt i |  | ƒ Sd  S(	   Ns   &s   &amp;s   <s   &lt;s   >s   &gt;s   "s   &quot;(   s   replss   things   repls   ss   replaces   Utilss
   uncanonstrs   lang(   s   ss   langs   repls   things   repls(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys
   html_quote^   s
    * c         C   s   t  i |  ƒ Sd  S(   N(   s   urllibs   quotes   s(   s   s(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   url_quoteh   s    c         C   s   |  i d d ƒ Sd  S(   Ns    s    (   s   ss   replace(   s   s(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   null_to_spacel   s    c         C   sÎ   y t  i i |  ƒ } Wn9 t j
 o- } | i t i j o ‚  n t	 d ƒ Sn X| d j  oB t
 i ƒ  } z t
 i | ƒ t	 d ƒ } Wd  t
 i | ƒ X| Sn | d j  o d | d Sn d | d Sd  S(   Ns   size not availableiè  s    %(size)i bytes i@B s    %d KB s    %d MB (   s   oss   paths   getsizes   filenames   sizes   OSErrors   es   errnos   ENOENTs   _s   i18ns   get_translations   otranss   set_languages   langs   outs   set_translation(   s   filenames   langs   es   otranss   outs   size(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   sizeofp   s"      s@   <META http-equiv="Content-Type" content="text/html; charset=%s">c         C   s[   t  |  t i ƒ o t i |  ƒ } n t i t |  ƒ ƒ } t i | i	 d d ƒ | ƒ Sd  S(   Ns   "s   &quot;(   s
   isinstances   args   typess   UnicodeTypes   Utilss   websafes   ss   strs
   uncanonstrs   replaces   lang(   s   args   langs   s(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   CGIescapeŠ   s    s
   ([(].*[)])s   \s*RE\s*(\[\d+\]\s*)?:\s*s   ([-+,.\w]+@[-+.\w]+)s   (\w+://[^>)\s]+)s   ^\s*$s   ^\s*<HTML>\s*$s   ^\s*</HTML>\s*$s   ^([>|:]|&gt;)+c         C   s  | t j o
 d }	 n
 | i }	 | t j o' | t j o t i } qT | i } n |  | |	 f }
 t
 i |
 ƒ } | o t i | ƒ } n | t j p
 | t j o? t i |  d | d t d | ƒ\ } } | t
 |
 <| t | <n | } | t j	 oƒ yc t | ƒ } y | i | ƒ } Wn= t j
 o1 t | t i | ƒ d ƒ } | i | ƒ } n XWq{t t f j
 o q{Xn t i | | ƒ Sd  S(   Ns    s   langs   raws   mlists   replace(   s   mlists   Nones   listnames   _internal_names   langs   mm_cfgs   DEFAULT_SERVER_LANGUAGEs   preferred_languages   templatefiles   cachekeys   _templatefilepathcaches   gets   filepaths   _templatecaches   templates   Utilss   findtexts   Trues   texts   dicts   SafeDicts   sdicts   interpolates   UnicodeErrors   unicodes
   GetCharSets	   utemplates	   TypeErrors
   ValueErrors
   uncanonstr(   s   templatefiles   dicts   langs   mlists   texts   filepaths   templates	   utemplates   sdicts   listnames   cachekey(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   quick_maketext»   s<    
	
		s   Articlec           B   s
  t  Z e i i Z e i i Z e i ƒ  Z	 e
 d g  e i e
 d „ Z e i ƒ  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e i d ƒ Z e i d ƒ Z d „  Z d „  Z  d „  Z! d „  Z d „  Z" d „  Z# RS(   Ni    c         C   sÚ  |  i | | | ƒ t |  _ t |  _ d } xT | d j oF t	 i
 |  i ƒ } | o# | i d ƒ } |  i | |  _ q. d } q. W| |  _ | |  _ t i oS t i ƒ  }
 z2 t i | ƒ t i d t d ƒ |  i ƒ |  _ Wd  t i |
 ƒ Xn | i d d ƒ } | i d d ƒ } | i  ƒ  |  _ | i  ƒ  |  _ h  |  _! | i" d	 d
 ƒ } t$ | t% i& ƒ o t' | d | d ƒ } n | oI| i  ƒ  i( ƒ  } | d d j o | d d j o | d d !} n | d d j o | d d j o | d d !} n y | i) d t* ƒ }	 Wn t, i- j
 o t }	 n X|	 o | t. i/ |  i ƒ j o9 y t' |	 | ƒ }	 Wq‰t0 t1 f j
 o t }	 q‰Xn |	 o8 g  i2 } |	 i4 ƒ  D] } | | d ƒ q¤~ |  _+ qÌn |  i6 ƒ  d  S(   Ni    iÿÿÿÿs   @s    at s   Content-Types
   text/plains   Content-Transfer-Encodings    s   charsets   us-asciii   s   "i   s   's   decodes   
(7   s   selfs   _Article__super_inits   messages   sequences   keepHeaderss   Nones   prevs   nexts   is   REpats   matchs   subjects   results   ends   langs   _langs   mlists   _mlists   mm_cfgs   ARCHIVER_OBSCURES_EMAILADDRSs   i18ns   get_translations   otranss   set_languages   res   subs   _s   emails   set_translations   gets   ctypes   cencs   lowers   decodeds	   get_params   charsets
   isinstances   typess	   TupleTypes   unicodes   strips   get_payloads   Trues   bodys   binasciis   Errors   Utilss
   GetCharSets   UnicodeErrors   LookupErrors   appends   _[1]s
   splitliness   ls   decode_headers(   s   selfs   messages   sequences   keepHeaderss   langs   mlists   results   charsets   cencs   bodys   otranss   ctypes   is   ls   _[1](    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   __init__ý   s\    		 		
% 	"" <c         C   s~   |  i i | ƒ } | o\ y t i | d d ƒ} Wn/ t i j
 o  } t	 d d | | ƒ t
 Sqv X| |  i | <n | Sd  S(   Ns   locki    s   errors   error opening list: %s
%s(   s   selfs
   _listcaches   gets   listnames   mlists   MailLists   Errorss   MMListErrors   es   syslogs   None(   s   selfs   listnames   es   mlist(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys
   _open_listD  s    	c         C   s©   |  i i ƒ  } | i d ƒ o | d } | d =n t } | o |  i i ƒ  | d <n t | d <x2 d d d f D]! } | i | ƒ o | | =qr qr Wg  | d <| Sd  S(   Ns   _mlists
   __listnames   prevs   nexts   body(
   s   selfs   __dict__s   copys   ds   has_keys   mlists   Nones   _mlists   internal_names   attr(   s   selfs   mlists   ds   attr(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   __getstate__S  s    

 
c         C   sÁ   | |  _ | i d ƒ } | o | d =|  i | ƒ | d <n | i d ƒ o3 t |  d ƒ o |  i i	 |  _
 q t i |  _
 n | i d ƒ o t |  _ n | i d ƒ o h  |  _ n d  S(   Ns
   __listnames   _mlists   _langs   cencs   decoded(   s   ds   selfs   __dict__s   gets   listnames
   _open_lists   has_keys   hasattrs   _mlists   preferred_languages   _langs   mm_cfgs   DEFAULT_SERVER_LANGUAGEs   Nones   cencs   decoded(   s   selfs   ds   listname(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   __setstate__g  s    	c         C   s*   t  |  d t ƒ t j o | |  _ n d  S(   Ns   _mlist(   s   getattrs   selfs   Nones   mlists   _mlist(   s   selfs   mlist(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   setListIfUnsetz  s    c         C   s   t  | |  i ƒ Sd  S(   N(   s
   html_quotes   bufs   selfs   _lang(   s   selfs   buf(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   quote~  s    c         C   s‚   |  i |  i ƒ } |  i |  i ƒ } | o; | |  i d <|  i |  i ƒ } | o | |  i d <qf n | o | |  i d <n d S(   s¬  MIME-decode headers.

        If the email, subject, or author attributes contain non-ASCII
        characters using the encoded-word syntax of RFC 2047, decoded versions
        of those attributes are placed in the self.decoded (a dictionary).

        If the list's charset differs from the header charset, an attempt is
        made to decode the headers as Unicode.  If that fails, they are left
        undecoded.
        s   authors   emails   subjectN(   s   selfs   decode_charsets   authors   subjects   decodeds   email(   s   selfs   subjects   emails   author(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   decode_headers  s    
 c         C   sŸ   | i d ƒ d j o t Sn t | ƒ } y t | d ƒ } | i ƒ  SWn t t	 f j
 o t Sn Xt
 i g  i } | D] \ } } | | ƒ q{ ~ ƒ Sd  S(   Ns   =?iÿÿÿÿiŸ† (   s   fields   finds   Nones   decode_headers   pairss   make_headers   hs   __unicode__s   UnicodeErrors   LookupErrors   EMPTYSTRINGs   joins   appends   _[1]s   ss   c(   s   selfs   fields   _[1]s   hs   cs   pairss   s(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   decode_charset–  s    	c         C   s  |  i i ƒ  } t i ƒ  } t i |  i ƒ z{|  i	 ƒ  \ | d <| d <|  i
 ƒ  \ | d <| d <|  i |  i ƒ | d <|  i |  i ƒ | d <|  i |  i ƒ | d <t |  i ƒ | d <t |  i ƒ | d	 <t i o1 t i d
 t d ƒ |  i ƒ } |  i i ƒ  } n |  i } |  i } |  i | ƒ | d <t | ƒ | d <|  i t i t |  i ƒ ƒ ƒ | d <|  i ƒ  | d <|  i i d d d ƒ| d <|  i i | d <d | d <Wd  t i | ƒ Xt  i! |  i ƒ } t# | | d <|  i$ | ƒ t% d | d |  i d |  i ƒSd  S(   Ns   prevs
   prev_wsubjs   nexts
   next_wsubjs
   email_htmls   titles   subject_htmls   subject_urls   in_reply_to_urls   @s    at s   author_htmls	   email_urls   datestr_htmls   bodys   listinfos   absolutei   s   listurls   listnames    s   encodings   article.htmls   langs   mlist(&   s   selfs   __dict__s   copys   ds   i18ns   get_translations   otranss   set_languages   _langs	   _get_prevs	   _get_nexts   quotes   emails   subjects	   url_quotes   in_reply_tos   mm_cfgs   ARCHIVER_OBSCURES_EMAILADDRSs   res   subs   _s   authors   _mlists   GetListEmails   emailurls   ctimes   ints   dates	   _get_bodys   GetScriptURLs	   real_names   set_translations   Utilss
   GetCharSets   charsets   html_charsets   _add_decodeds   quick_maketext(   s   selfs   emailurls   ds   authors   charsets   otrans(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   as_html¦  s<    
		% 	c         C   s   |  i o_ |  i |  i ƒ } d t |  i i ƒ } d t d ƒ d t |  i i ƒ |  i | ƒ f } n d } } | | f Sd S(   s4   Return the href and subject for the previous messages    <LINK REL="Previous"  HREF="%s">s   <LI>s   Previous message:s    <A HREF="%s">%s
</A></li>s    N(	   s   selfs   prevs   _get_subject_encs   subjects	   url_quotes   filenames   _s   quotes
   prev_wsubj(   s   selfs
   prev_wsubjs   prevs   subject(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   _get_prevÍ  s     
7
c         C   s   | i i d | i ƒ Sd S(   s®   Return the subject of art, decoded if possible.

        If the charset of the current message and art match and the
        article's subject is encoded, decode it.
        s   subjectN(   s   arts   decodeds   gets   subject(   s   selfs   art(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   _get_subject_encÛ  s     c         C   s   |  i o_ |  i |  i ƒ } d t |  i i ƒ } d t d ƒ d t |  i i ƒ |  i | ƒ f } n d } } | | f Sd S(   s4   Return the href and subject for the previous messages   <LINK REL="Next"  HREF="%s">s   <LI>s   Next message:s    <A HREF="%s">%s
</A></li>s    N(	   s   selfs   nexts   _get_subject_encs   subjects	   url_quotes   filenames   _s   quotes
   next_wsubj(   s   selfs
   next_wsubjs   nexts   subject(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   _get_nextã  s     
7
s   =([A-F0-9][A-F0-9])s   =[ 	]*$c         C   sC   y |  i } Wn t j
 o |  i } n Xt t i | ƒ ƒ Sd S(   s<   Return the message body ready for HTML, decoded if necessaryN(   s   selfs	   html_bodys   bodys   AttributeErrors   null_to_spaces   EMPTYSTRINGs   join(   s   selfs   body(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   _get_bodyô  s     c         C   sp   xi d d f d d f d d f d d f f D]= \ } } |  i i | ƒ o |  i |  i | ƒ | | <q+ q+ Wd S(	   s$   Add encoded-word keys to HTML outputs   authors   author_htmls   emails
   email_htmls   subjects   subject_htmls   titleN(   s   srcs   dsts   selfs   decodeds   has_keys   quotes   d(   s   selfs   ds   srcs   dst(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   _add_decodedü  s
     + c         C   so  |  i i ƒ  } | i d d ƒ i ƒ  o t i t i ƒ  ƒ | d <n | i d d ƒ i ƒ  o d | d <n | i d d ƒ i ƒ  o t i t i ƒ  ƒ | d <n d d d d	 g } | d
 o | i	 d ƒ n | d o | i	 d ƒ n | d o | i	 d ƒ n t
 i |  i ƒ } t | t i ƒ o" | i t i |  i ƒ d ƒ } n t i | ƒ | d | Sd  S(   Ns   fromdates    s   emails   bogus@does.not.exist.coms   datestrs   From %(email)s  %(fromdate)ss   From: %(email)s (%(author)s)s   Date: %(datestr)ss   Subject: %(subject)ss   _in_reply_tos   In-Reply-To: %(_in_reply_to)ss   _referencess   References: %(_references)ss   _message_ids   Message-ID: %(_message_id)ss   replaces   

(   s   selfs   __dict__s   copys   ds   gets   strips   times   ctimes   headerss   appends   EMPTYSTRINGs   joins   bodys
   isinstances   typess   UnicodeTypes   encodes   Utilss
   GetCharSets   _langs   NL(   s   selfs   bodys   ds   headers(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   as_text  s$    "c         C   s,   |  i | ƒ t i t |  i ƒ ƒ |  _ d  S(   N(   s   selfs   _Article__super_set_dates   messages   times   ctimes   ints   dates   fromdate(   s   selfs   message(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   _set_date  s    c         C   s   g  |  _ d } xy n oq | i ƒ  } | o Pn | o$ | i ƒ  d j o
 d } q q n | i ƒ  d j o Pn |  i i | ƒ q Wd  S(   Ni    i   s   <!--beginarticle-->s   <!--endarticle-->(   s   selfs   bodys   begins   fileobjs   readlines   lines   strips   append(   s   selfs   fileobjs   lines   begin(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   loadbody_fromHTML#  s    	 
c         C   s-   g  |  _ y
 |  ` Wn t j
 o n Xd  S(   N(   s   selfs   bodys	   html_bodys   AttributeError(   s   self(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   finished_update_article2  s
    	
($   s   __name__s
   __module__s	   pipermails   Articles   __init__s   _Article__super_inits	   _set_dates   _Article__super_set_dates   times   _last_article_times   Nones   mm_cfgs   DEFAULT_SERVER_LANGUAGEs   weakrefs   WeakValueDictionarys
   _listcaches
   _open_lists   __getstate__s   __setstate__s   setListIfUnsets   quotes   decode_headerss   decode_charsets   as_htmls	   _get_prevs   _get_subject_encs	   _get_nexts   res   compiles	   _rx_quotes   _rx_softlines	   _get_bodys   _add_decodeds   as_texts   loadbody_fromHTMLs   finished_update_article(    (    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   Article÷   s0   E								'									s   HyperArchivec           B   s—  t  Z e i i Z e i i Z e i i Z	 e i i
 Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d  „  Z d! d" d# f Z. d$ „  Z/ d% „  Z0 d& „  Z1 d' „  Z2 d( „  Z3 RS()   Niý  i°  i    s   threads   monthi   i   c         C   sŠ  | i ƒ  } t i | | ƒ } |  i | d d d | ƒ| |  _  t |  _ | i	 |  _
 t i | i	 ƒ |  _ t |  i  d ƒ o |  i  i d j o d |  _ q
|  i  i d j o d |  _ q
|  i  i d	 j o d
 |  _ q
|  i  i d j o d |  _ q
d |  _ n d } d } d } h  d d | d <d d | d <d d | d <d
 d | | | <d d | | | d <|  _ d  S(   Ns   reloadi   s   databases   archive_volume_frequencyi    s   yeari   s   quarteri   s   weeki   s   days   months   (?P<year>[0-9]{4,4})s   (?P<month>[01][0-9])s   (?P<day>[0123][0-9])s   ^s   $s   q(?P<quarter>[1234])$s   -(?P<month>[a-zA-Z]+)$s   ^Week-of-Mon-(   s   maillists   archive_dirs   dirs   HyperDatabases   dbs   selfs   _HyperArchive__super_inits   Nones
   _lock_files   preferred_languages   langs   Utilss
   GetCharSets   charsets   hasattrs   archive_volume_frequencys   ARCHIVE_PERIODs   yres   mres   dres   _volre(   s   selfs   maillists   dbs   yres   mres   dres   dir(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   __init__P  s*    		c         C   s&   t  | | d |  i i d |  i ƒSd  S(   Ns   langs   mlist(   s   Articles   msgs   sequences   selfs   maillists   preferred_language(   s   selfs   msgs   sequence(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   _makeArticleu  s    	c            sZ  ˆ  i } t i ƒ  } t i | i ƒ ‡  d †  } z” h  d | ˆ  i	 ƒ <d | ˆ  i
 ƒ <d | i d d d ƒ<d ˆ  i <} h  d t d ƒ <d	 t d	 ƒ <d
 t d
 ƒ <d t d ƒ <} Wd  t i | ƒ Xxj | i ƒ  D]\ } | d i ƒ  | d } ˆ  i | j o d | d | <qã d | | | f | d | <qã Wt d | d | ƒSd  S(   Nc            s   t  t i |  ƒ ˆ  i ƒ Sd  S(   N(   s
   html_quotes   i18ns   ctimes   ss   selfs   lang(   s   s(   s   self(    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   quotetime€  s    s   lastdates   archivedates   listinfos   absolutei   s   versions   threads   subjects   authors   datei    s    s   %s_refs"   <a href="%s.html#start">[ %s ]</a>s   archidxfoot.htmls   mlist(   s   selfs   maillists   mlists   i18ns   get_translations   otranss   set_languages   preferred_languages	   quotetimes   lastdates   archivedates   GetScriptURLs   versions   ds   _s   is   set_translations   keyss   ts   uppers   caps   types   quick_maketext(   s   selfs   otranss   is   caps   ts   mlists	   quotetimes   d(    (   s   selfs*   /var/mailman/Mailman/Archiver/HyperArch.pys	   html_footz  s"    	NF   	c            sÊ  ˆ  i } t i ƒ  } t i | i ƒ ‡  d †  } zÍ h  d t	 | i
 ˆ  i ƒ <d ˆ  i <d ˆ  i ˆ  i ƒ <d | i d d d ƒ<d | ˆ  i ƒ <d	 | ˆ  i ƒ <d
 ˆ  i <} h  d t d ƒ <d t d ƒ <d t d ƒ <d t d ƒ <} Wd  t i | ƒ Xxx | i ƒ  D]j } | d i ƒ  | d } ˆ  i | j o  d | d | <| | | d <qd | | | f | d | <qWˆ  i o t ˆ  i | d <n d | d <t d | d | ƒSd  S(   Nc            s   t  t i |  ƒ ˆ  i ƒ Sd  S(   N(   s
   html_quotes   i18ns   ctimes   ss   selfs   lang(   s   s(   s   self(    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   quotetime¡  s    s   listnames   archtypes   archives   listinfos   absolutei   s	   firstdates   lastdates   sizes   threads   subjects   authors   datei    s    s   %s_refs"   <a href="%s.html#start">[ %s ]</a>s   encodings   archidxhead.htmls   mlist(   s   selfs   maillists   mlists   i18ns   get_translations   otranss   set_languages   preferred_languages	   quotetimes
   html_quotes	   real_names   langs   types   volNameToDescs   archives   GetScriptURLs	   firstdates   lastdates   sizes   ds   _s   is   set_translations   keyss   ts   uppers   caps   charsets   html_charsets   quick_maketext(   s   selfs   otranss   is   caps   ts   mlists	   quotetimes   d(    (   s   selfs*   /var/mailman/Mailman/Archiver/HyperArch.pys	   html_head›  s*    	‡F   

	c   	      C   sÔ  |  i } | i ƒ  } t i i | i ƒ  d | d ƒ } h  d | i
 <d | i d d d ƒ<d d | | f <d t | | i ƒ <d	 d
 <} t i ƒ  } t i | i ƒ zÃ |  i o2 t d ƒ | d <d
 | d <d
 | d <d
 | d <nƒ d
 | d <t d d | i d | ƒ| d <t d d | ƒ| d <g  } x' |  i D] } | i |  i | ƒ ƒ q>Wt i | ƒ | d <Wd  t i | ƒ X| d	 c t t i | i ƒ 7<t i  o
 d } n d } t | | d | ƒSd  S(   Ns   .mboxs   listnames   listinfos   absolutei   s   fullarchs   ../%s.mbox/%s.mboxs   sizes   metas    s)   <P>Currently, there are no archives. </P>s   noarchive_msgs   archive_listing_starts   archive_listing_ends   archive_listings   archliststart.htmls   langs   mlists   archlistend.htmls   archtoc.htmls   archtocnombox.html("   s   selfs   maillists   mlists   internal_names   listnames   oss   paths   joins   archive_dirs   mboxs	   real_names   GetScriptURLs   sizeofs   preferred_languages   ds   i18ns   get_translations   otranss   set_languages   archivess   _s   quick_maketexts   accums   as   appends   html_TOC_entrys   EMPTYSTRINGs   set_translations   html_charsets   Utilss
   GetCharSets   mm_cfgs   PUBLIC_MBOXs   template(	   s   selfs   as   listnames   ds   accums   mlists   templates   mboxs   otrans(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   html_TOCÄ  s<    	#[


	
   

c         C   s"  t  i i |  i i ƒ  | d ƒ } | d } t  i i	 | ƒ o( | } | d } d t d ƒ d } nB t  i i	 | ƒ o( | } | d } d t d ƒ d } n t } | o/ | h  d | <d	 t | |  i i ƒ <} n d
 } t d h  d | <d |  i | ƒ <d | <d |  i ƒSd  S(   Ns   .txts   .gzs   .txt.gzs   <td><A href="%(url)s">[ s   Gzip'd Text%(sz)ss
   ]</a></td>s
   Text%(sz)ss   urls   szs    s   archtocentry.htmls   archives   archivelabels   textlinks   mlist(   s   oss   paths   joins   selfs   maillists   archive_dirs   archs   txtfiles   gzfiles   existss   files   urls   _s   templs   Nones   sizeofs   preferred_languages   textlinks   quick_maketexts   volNameToDesc(   s   selfs   archs   textlinks   urls   txtfiles   templs   files   gzfile(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   html_TOC_entryñ  s"    "


/'c         C   s   |  i o d Sn t i t i i t i |  i i	 ƒ  d ƒ ƒ |  _ y |  i i
 d d ƒ Wn t i j
 o d Sn Xd Sd  S(   Ni   s
   -arch.locks   timeoutf0.5i    (   s   selfs
   _lock_files   LockFiles   oss   paths   joins   mm_cfgs   LOCK_DIRs   maillists   internal_names   locks   TimeOutError(   s   self(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   GetArchLock  s    
	c         C   s.   |  i o  |  i i d d ƒ t |  _ n d  S(   Ns   unconditionallyi   (   s   selfs
   _lock_files   unlocks   None(   s   self(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   DropArchLock  s    
c         C   s’  |  i i ƒ  } | d } | d } y t i | ƒ Wn  t t i	 f j
 o d  Sn X|  i
 ƒ  o d  Sn yÁ t | ƒ } t d d | | ƒ t i d ƒ } z t | d ƒ } Wd  t i | ƒ X| i d d ƒ | i d ƒ d	 j o | i d	 ƒ n | i | i ƒ  ƒ | i ƒ  | i ƒ  t i | ƒ Wn t j
 o n Xt i | | ƒ t | ƒ } |  i | ƒ | i ƒ  t i | ƒ |  i ƒ  d  S(
   Ns   .workings   .err_unarchiveds   errorsG   Archive working file %s present.  Check %s for possibly unarchived msgsi   s   a+i   i   s   
(   s   selfs   maillists   ArchiveFileNames   names   wnames   enames   oss   stats   IOErrors   errors   GetArchLocks   opens   wfs   syslogs   umasks   omasks   efs   seeks   reads   writes   closes   unlinks   renames   archfiles   processUnixMailboxs   DropArchLock(   s   selfs   enames   archfiles   names   wnames   efs   wfs   omask(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   processListArch$  sD    

	
 


c         C   s   d | i f Sd  S(   Ns	   %06i.html(   s   articles   sequence(   s   selfs   article(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   get_filenameP  s    c         C   sD   |  i t | i ƒ ƒ } |  i t d ƒ ƒ |  i | d ƒ | Sd S(   s¦   Return a list of indexes where the article should be filed.
        A string can be returned if the list only contains one entry,
        and the empty list is legal.s   figuring article archives
s   
N(   s   selfs   dateToVolNames   floats   articles   dates   ress   messages   _(   s   selfs   articles   res(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   get_archivesS  s
     c         C   s  | i ƒ  } d t d ƒ t d ƒ t d ƒ t d ƒ t d ƒ t d ƒ t d ƒ t d	 ƒ t d
 ƒ t d ƒ t d ƒ t d ƒ g } xû|  i i ƒ  D]ê}	 t i	 |  i |	 | ƒ } | oÄt
 | i d ƒ ƒ } |	 d j oT d t d ƒ t d ƒ t d ƒ t d ƒ g } | t
 | i d ƒ ƒ }
 t d ƒ Sq{|	 d j ož | i d ƒ i ƒ  } xu t d d ƒ D]d } t i d d | d d d d d d d f	 ƒ } | i ƒ  | i ƒ  j o | | } t d ƒ Sq_q_Wt d | ‚ q{|	 d j o< | t
 | i d ƒ ƒ } t
 | i d ƒ ƒ } t d ƒ Sq{|	 d j o< | t
 | i d ƒ ƒ } t
 | i d ƒ ƒ } t d  ƒ Sq{| i d ƒ Sq‘ q‘ Wt d! | ‚ d  S("   Ns    s   Januarys   Februarys   Marchs   Aprils   Mays   Junes   Julys   Augusts	   Septembers   Octobers   Novembers   Decembers   years   quarters   Firsts   Seconds   Thirds   Fourths   %(ord)s quarter %(year)is   monthi   i   s   %BiÏ  i    s   %(month)s %(year)is   %s is not a month!s   weeks   days-   The Week Of Monday %(day)i %(month)s %(year)is   %(day)i %(month)s %(year)is   %s is not a valid volname(   s   volnames   strips   _s	   monthdicts   selfs   _volres   keyss   eachs   res   matchs   ints   groups   years   ds   ords   lowers   monthstrs   ranges   is   times   strftimes	   monthnames   months
   ValueErrors   day(   s   selfs   volnames   monthstrs   ds   is   years   days   months	   monthnames   eachs   ords   matchs	   monthdict(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   volNameToDesc\  s<    u - -
c         C   so  t  i | ƒ } |  i d j o t  i d | ƒ Sn9|  i d j ož | d d d d g j o t  i d | ƒ Sqk| d d d	 d
 g j o t  i d | ƒ Sqk| d d d d g j o t  i d | ƒ Sqkt  i d | ƒ Sn‹ |  i d j o t  i d | ƒ Sng |  i d j oF t  i | ƒ | d
 d d d } t  i | ƒ } t  i d | ƒ Sn t  i d | ƒ Sd  S(   Ns   years   %Ys   quarteri   i   i   s   %Yq1i   i   i   s   %Yq2i   i   i	   s   %Yq3s   %Yq4s   days   %Y%m%ds   weeki   i<   s   Week-of-Mon-%Y%m%ds   %Y-%B(	   s   times	   localtimes   dates	   datetuples   selfs   ARCHIVE_PERIODs   strftimes   mktimes   monday(   s   selfs   dates   mondays	   datetuple(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   dateToVolName…  s$    #c         C   sâ  | i ƒ  } xË|  i i ƒ  D]º} t i |  i | | ƒ }
 |
 o”t |
 i	 d ƒ ƒ } d } d }	 | d j o' t |
 i	 d ƒ ƒ } | d d } nö | d j o  |
 i	 d ƒ i ƒ  } g  } xQ t d d ƒ D]@ } | i t i d d	 | d d
 d
 d
 d
 d d
 f	 ƒ i ƒ  ƒ qÏ Wy | i | ƒ d } WqŒt j
 o qŒXnI | d j p
 | d j o. t |
 i	 d ƒ ƒ } t |
 i	 d ƒ ƒ }	 n y, t i | | d d
 d
 d
 d
 d d f	 ƒ SWqÖt j
 o d SqÖXq q Wd Sd  S(   Ns   yeari   s   quarteri   i   s   monthi   s   %BiÏ  i    s   weeks   dayiÿÿÿÿf0.0(   s   volnames   strips   selfs   _volres   keyss   eachs   res   matchs   ints   groups   years   months   days   qs   lowers   monthstrs   ms   ranges   is   appends   times   strftimes   indexs
   ValueErrors   mktimes   OverflowError(   s   selfs   volnames   monthstrs   is   eachs   ms   months   qs   years   days   match(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   volNameToDate   s:      >	,c            sW   ‡  d †  } ˆ  i d d d f j o ˆ  i i | ƒ n ˆ  i i ƒ  ˆ  i i ƒ  d  S(   Nc            sP   ˆ  i |  ƒ } ˆ  i | ƒ } | | j o d Sn | | j  o d Sn d Sd  S(   Ni   iÿÿÿÿi    (   s   selfs   volNameToDates   as   als   bs   bl(   s   as   bs   bls   al(   s   self(    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   sf¿  s    s   months   years   quarter(   s   sfs   selfs   ARCHIVE_PERIODs   archivess   sorts   reverse(   s   selfs   sf(    (   s   selfs*   /var/mailman/Mailman/Archiver/HyperArch.pys   sortarchives¾  s
    	c         C   sT   |  i oF t i } | i | ƒ | d d j o | i d ƒ n | i ƒ  n d  S(   Niÿÿÿÿs   
(   s   selfs   VERBOSEs   syss   stderrs   fs   writes   msgs   flush(   s   selfs   msgs   f(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   messageÎ  s    
	c         C   sK   t  i i | d ƒ } y t  i | ƒ Wn n Xt  i |  i d | ƒ d  S(   Ns
   index.htmls   .html(	   s   oss   paths   joins
   archivedirs
   index_htmls   unlinks   symlinks   selfs   DEFAULTINDEX(   s   selfs   archives
   archivedirs
   index_html(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   open_new_archiveÖ  s    c         C   sT   d |  _ |  i ƒ  GH|  i o |  i d j o! |  i t d ƒ ƒ |  i ƒ  n d  S(   Ni    s   Threads   Computing threaded index
(   s   selfs   depths	   html_heads
   THREADLAZYs   types   messages   _s   updateThreadedIndex(   s   self(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   write_index_headerÞ  s
    	c         C   s.   x t  |  i ƒ D] } d GHq W|  i ƒ  GHd  S(   Ns   </UL>(   s   ranges   selfs   depths   is	   html_foot(   s   selfs   i(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   write_index_footerå  s     	c         C   sÅ   |  i d | ƒ } |  i d | ƒ } t i o t i d t	 d ƒ | ƒ } n t
 | |  i ƒ } t
 | |  i ƒ } h  d t i | i ƒ <d | <d | i <d | <} t d | d |  i ƒGHd  S(	   Ns   subjects   authors   @s    at s   filenames   sequences   archidxentry.htmls   mlist(   s   selfs
   get_headers   articles   subjects   authors   mm_cfgs   ARCHIVER_OBSCURES_EMAILADDRSs   res   subs   _s	   CGIescapes   langs   urllibs   quotes   filenames   sequences   ds   quick_maketexts   maillist(   s   selfs   articles   ds   authors   subject(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   write_index_entryê  s    
9	c         C   s8   | i i | ƒ } | t j o t | | ƒ Sn | Sd  S(   N(   s   articles   decodeds   gets   fields   results   Nones   getattr(   s   selfs   fields   articles   result(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys
   get_headerü  s    c         C   sÛ   | d j  o |  i d ƒ d } n | |  i j o |  i } n | |  i  j  o' x[ t |  i  | ƒ D] } d GHqe Wn8 | |  i  j o' x$ t | |  i  ƒ D] } d GHqœ Wn d | | i f GH| |  _  |  i | ƒ d  S(   Ni    s   depth<0s   </UL>s   <UL>s   <!--%i %s -->(	   s   depths   selfs   messages   THREADLEVELSs   ranges   is   articles	   threadKeys   write_index_entry(   s   selfs   articles   depths   i(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   write_threadindex_entry  s     
  	c         C   sp   |  i ƒ  t i d ƒ } z% t t i i |  i d ƒ d ƒ } Wd  t i | ƒ X| i
 |  i ƒ  ƒ | i ƒ  d  S(   Ni   s
   index.htmls   w(   s   selfs   sortarchivess   oss   umasks   omasks   opens   paths   joins   basedirs   tocs   writes   html_TOCs   close(   s   selfs   tocs   omask(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys	   write_TOC  s    
% c         C   sÀ   t  i d ƒ } z t | d ƒ } Wd  t  i | ƒ X| i | i ƒ  ƒ | i	 ƒ  t  i i
 |  i d | ƒ } t  i d ƒ } z t | d ƒ } Wd  t  i | ƒ X| i | i ƒ  ƒ | i	 ƒ  d  S(   Ni   s   ws   %s.txts   a+(   s   oss   umasks   omasks   opens   paths   fs   writes   articles   as_htmls   closes   joins   selfs   basedirs   indexs   as_text(   s   selfs   indexs   articles   paths   fs   omask(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   write_article  s     
 c   	      C   s¤  |  i | ƒ t oŒt } t } t i i	 |  i
 d | ƒ } t i i	 |  i
 d | ƒ } t i i	 |  i
 d | ƒ } y t | ƒ } Wn t j
 o d  Sn Xy# t i | | ƒ t i | ƒ } Wn t t t i f j
 o n Xz% t i d ƒ } t i | d ƒ } Wd  t i | ƒ X| o. | i | i ƒ  ƒ | i ƒ  t i | ƒ n y+ | i | i ƒ  ƒ | i ƒ  | i ƒ  Wn t j
 o n Xt i | ƒ n d  S(   Ns   %s.txts	   %s.txt.gzs   %s.old.txt.gzi   s   w(   s   selfs#   _HyperArchive__super_update_archives   archives   gzips   Nones   archzs   archts   oss   paths   joins   basedirs   txtfiles   gzipfiles   oldgzips   opens   IOErrors   renames   RuntimeErrors   errors   umasks   ous   newzs   writes   reads   closes   unlink(	   s   selfs   archives   newzs   txtfiles   oldgzips   archzs   archts   ous   gzipfile(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   update_archive2  s@    	 

s   maillists
   _lock_files   charsetc         C   sa   h  } xP |  i i ƒ  D]? } | |  i j p | i ƒ  | j o |  i | | | <q q W| Sd  S(   N(   s   ds   selfs   __dict__s   keyss   eachs   _skip_attrss   upper(   s   selfs   ds   each(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   getstate\  s     $c         C   s‡  t  d ƒ } | o t | d t i ƒ o" t | t i |  i
 ƒ d ƒ } n | } | } d }
 x!t d t | ƒ ƒ D]
} | | } } d } } | t j o qu n |  i o— t i | ƒ } | t j o
 d }
 qH| i d ƒ } t | |  |  i
 ƒ d } d } |  i o$ | d 7} |
 o d | } q4n | | } d }
 n d } t i | ƒ } t! i | ƒ } xº| t j	 p
 | t j	 oŸ| t j o
 d	 } n | i$ d ƒ } | t j o
 d	 } n | i$ d ƒ } | d	 j o | | j  p
 | d	 j oj | i& d ƒ }	 t |	 ƒ } t) i* o1 t+ i, d
 | |	 ƒ }	 |  i- i. d d d ƒ} n d |	 } | } nZ | d	 j o | | j p
 | d	 j o) | i& d ƒ }	 } t |	 ƒ } | } n
 t1 d ‚ | d t | |  |  i
 ƒ t2 | ƒ t |	 |  i
 ƒ f 7} | | | } t i | ƒ } t! i | ƒ } qoW| t j o
 | t j o t | |  i
 ƒ } n | | | | } t | | <| | | <qu Wd  S(   Ns    at i    s   replaces    s   <i>s   </I>s   <BR>i   iÿÿÿÿs   @s   listinfos   absolutes   mailto:s   j==k: This can't happen!s   %s<A HREF="%s">%s</A>(3   s   _s   atmarks   liness
   isinstances   typess   UnicodeTypes   unicodes   Utilss
   GetCharSets   selfs   langs   sources   dests   last_line_was_quoteds   xranges   lens   is   Lorigs   Ls   prefixs   suffixs   Nones   IQUOTESs	   quotedpats   matchs   quoteds   ends	   CGIescapes   SHOWHTMLs   L2s   emailpats   searchs   jrs   urlpats   krs   js   starts   ks   groups   texts   lengths   mm_cfgs   ARCHIVER_OBSCURES_EMAILADDRSs   res   subs   maillists   GetScriptURLs   URLs   poss
   ValueErrors
   html_quote(   s   selfs   liness   suffixs   atmarks   URLs   poss   prefixs   quoteds   sources   texts   last_line_was_quoteds   dests   Ls   Lorigs   L2s   jrs   is   js   krs   lengths   k(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   __processbody_URLquotef  st    " 






 

'


'
	9
c         C   s  | } | } t | ƒ } d } xì | | j  oÞ x6 | | j  o t i | | ƒ t j o | d } q2 W| | j  o t | | <| d } n xT | | j  o t	 i | | ƒ t j o, | | t f \ | | <| | <| d } q W| | j  o t | | <| d } q" q" Wd  S(   Ni    i   (
   s   liness   sources   dests   lens   ls   is   htmlpats   matchs   Nones	   nohtmlpat(   s   selfs   liness   is   dests   ls   source(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   __processbody_HTML·  s&      '
 '
c         C   sî   t  t | i ƒ } |  i o |  i | ƒ n |  i | ƒ |  i	 o | o! | i
 d d ƒ | i d ƒ nq |  i o t d „  | ƒ } nQ xM t d t | ƒ ƒ D]6 } | | } | d d !d j o d | | | <q£ q£ W| | _ | Sd  S(   Ni    s   <PRE>s   </PRE>c         C   s   |  d S(   Ns   <BR>(   s   x(   s   x(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   <lambda>Û  s    i   s    	
s   <P>(   s   filters   Nones   articles   bodys   liness   selfs	   ALLOWHTMLs   _HyperArchive__processbody_HTMLs#   _HyperArchive__processbody_URLquotes   SHOWHTMLs   inserts   appends   SHOWBRs   maps   ranges   lens   is   ss	   html_body(   s   selfs   articles   is   liness   s(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   format_articleÊ  s     

 
	c   
      C   s  | i } t i i | | i ƒ } |  i	 t
 d ƒ ƒ y' t | ƒ } | i | ƒ | i ƒ  WnB t j
 o6 } | i t i j o ‚  n |  i	 t
 d ƒ ƒ n X| | _ | | _ t i d ƒ }	 z t | d ƒ } Wd  t i |	 ƒ X| i | i ƒ  ƒ | i ƒ  d  S(   Ns!   Updating HTML for article %(seq)ss%   article file %(filename)s is missing!i   s   w(   s   articles   sequences   seqs   oss   paths   joins   arcdirs   filenames   selfs   messages   _s   opens   fs   loadbody_fromHTMLs   closes   IOErrors   es   errnos   ENOENTs   prevs   nexts   umasks   omasks   writes   as_html(
   s   selfs   arcdirs   articles   prevs   nexts   es   seqs   fs   filenames   omask(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   update_articleä  s(    	 		 (4   s   __name__s
   __module__s	   pipermails   Ts   __init__s   _HyperArchive__super_inits   update_archives#   _HyperArchive__super_update_archives   update_dirty_archivess*   _HyperArchive__super_update_dirty_archivess   add_articles    _HyperArchive__super_add_articles   DIRMODEs   FILEMODEs   VERBOSEs   DEFAULTINDEXs   ARCHIVE_PERIODs
   THREADLAZYs   THREADLEVELSs	   ALLOWHTMLs   SHOWHTMLs   IQUOTESs   SHOWBRs   _makeArticles	   html_foots	   html_heads   html_TOCs   html_TOC_entrys   GetArchLocks   DropArchLocks   processListArchs   get_filenames   get_archivess   volNameToDescs   dateToVolNames   volNameToDates   sortarchivess   messages   open_new_archives   write_index_headers   write_index_footers   write_index_entrys
   get_headers   write_threadindex_entrys	   write_TOCs   write_articles   _skip_attrss   getstates#   _HyperArchive__processbody_URLquotes   _HyperArchive__processbody_HTMLs   format_articles   update_article(    (    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   HyperArchive:  s\   	%		!	)	-	"			,				)											
		(	
	Q		(G   s   __doc__s
   __future__s   nested_scopess   syss   res   errnos   urllibs   times   oss   typess   HyperDatabases	   pipermails   weakrefs   binasciis   email.Headers   decode_headers   make_headers   Mailmans   mm_cfgs   Utilss   LockFiles   MailLists   i18ns   Mailman.SafeDicts   SafeDicts   Mailman.Logging.Syslogs   syslogs   Mailman.Mailboxs   ArchiverMailboxs   _s   Nones   gzips   GZIP_ARCHIVE_TXT_FILESs   ImportErrors   EMPTYSTRINGs   NLs   platforms   resources	   getrlimits   RLIMIT_STACKs   softs   hards   mins   maxs   newsofts	   setrlimits   Trues   Falses	   NameErrors
   html_quotes	   url_quotes   null_to_spaces   sizeofs   html_charsets	   CGIescapes   compiles   paren_name_pats
   IGNORECASEs   REpats   emailpats   urlpats   blankpats   htmlpats	   nohtmlpats	   quotedpats   _templatefilepathcaches   _templatecaches   quick_maketexts   Articles   Ts   HyperArchive(3   s   urlpats   emailpats   make_headers   hards   syslogs   _templatefilepathcaches   HyperArchives	   quotedpats   newsofts   sizeofs   ArchiverMailboxs   html_charsets	   CGIescapes   LockFiles   NLs   blankpats	   nohtmlpats   errnos	   url_quotes   binasciis   MailLists   urllibs   res   _s   htmlpats   Articles   Trues   null_to_spaces   nested_scopess   times   syss   gzips   mm_cfgs   i18ns   Falses	   pipermails   quick_maketexts   typess   SafeDicts   resources   softs   Utilss   paren_name_pats   EMPTYSTRINGs   weakrefs   _templatecaches   decode_headers   HyperDatabases   oss
   html_quotes   REpat(    (    s*   /var/mailman/Mailman/Archiver/HyperArch.pys   ?   s~   												
	
			<ÿ D