
6	Pc           @   s  d  Z  d d l Z d d l Td Z d Z e d  Z e d  Z e d  Z e d	  Z	 i e
 e d
  f d 6e
 e d  f d 6e
 e d  f d 6e
 e d  f d 6e
 e d  f d 6e
 e d  f d 6e
 e d  f d 6e
 e d  f d 6Z i
 e e f d 6e e f d 6e e f d 6e e e f g f d 6e e e f g f d 6e e e f g f d 6e e e f g f d 6e e e f g f d  6e e e f g f d! 6e e f d" 6Z i e d# 6e d$ 6e d% 6e d& 6e d' 6e  d( 6e! d) 6Z" d* f  d+     YZ# d, f  d-     YZ$ d. f  d/     YZ% d0   Z& d1   Z' d2   Z( d3   Z) d4   Z* d5 d6  Z+ d7   Z, e d8  Z- e d9  Z. e d:  Z/ e e0 e1 g  Z2 d;   Z3 d< e4 d=  Z5 d>   Z6 d?   Z7 d S(@   s   Internal support module for sreiN(   t   *s   .\[{()*+?^$|s   *+?{t
   0123456789t   01234567t   0123456789abcdefABCDEFs    	
s   s   \as   s   \bs   s   \fs   
s   \ns   s   \rs   	s   \ts   s   \vs   \s   \\s   \As   \Bs   \ds   \Ds   \ss   \Ss   \ws   \Ws   \Zt   it   Lt   mt   st   xt   tt   ut   Patternc           B   s/   e  Z d    Z d d  Z d   Z d   Z RS(   c         C   s(   d |  _  g  |  _ d |  _ i  |  _ d  S(   Ni    i   (   t   flagst   opent   groupst	   groupdict(   t   self(    (    s   /usr/lib/python2.7/sre_parse.pyt   __init__C   s    			c         C   s   |  j  } | d |  _  | d  k	 rr |  j j | d   } | d  k	 rb t d t |  | | f  n  | |  j | <n  |  j j |  | S(   Ni   s7   redefinition of group name %s as group %d; was group %d(   R   t   NoneR   t   gett   errort   reprR   t   append(   R   t   namet   gidt   ogid(    (    s   /usr/lib/python2.7/sre_parse.pyt	   opengroupH   s    	c         C   s   |  j  j |  d  S(   N(   R   t   remove(   R   R   (    (    s   /usr/lib/python2.7/sre_parse.pyt
   closegroupS   s    c         C   s   | |  j  k  o | |  j k S(   N(   R   R   (   R   R   (    (    s   /usr/lib/python2.7/sre_parse.pyt
   checkgroupU   s    N(   t   __name__t
   __module__R   R   R   R   R   (    (    (    s   /usr/lib/python2.7/sre_parse.pyR   A   s   		t
   SubPatternc           B   sh   e  Z d d   Z d d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   c         C   s4   | |  _  | d  k r g  } n  | |  _ d  |  _ d  S(   N(   t   patternR   t   datat   width(   R   R!   R"   (    (    s   /usr/lib/python2.7/sre_parse.pyR   Z   s
    			i    c         C   su  d } t  d  t  g   f } xP|  j D]E\ } } | d | Gd } | d k r Hd } x| D]! \ } } | d d | G| GHq` Wn | d k r Hd } d } x | d D]C } | d k r | d d GHn  | j | d  d } | d } q Wnm t  |  | k rYxX | D]C } t | t  rH| s.Hn  | j | d  d } q| Gd } qWn
 | Gd } | s( Hq( q( Wd  S(   Ni   s     i    t   int   brancht   or(    (   t   typeR"   t   dumpt
   isinstanceR    (   R   t   levelt   nlt   seqtypest   opt   avt   aR   (    (    s   /usr/lib/python2.7/sre_parse.pyR(   `   sB          	   c         C   s   t  |  j  S(   N(   R   R"   (   R   (    (    s   /usr/lib/python2.7/sre_parse.pyt   __repr__|   s    c         C   s   t  |  j  S(   N(   t   lenR"   (   R   (    (    s   /usr/lib/python2.7/sre_parse.pyt   __len__~   s    c         C   s   |  j  | =d  S(   N(   R"   (   R   t   index(    (    s   /usr/lib/python2.7/sre_parse.pyt   __delitem__   s    c         C   s1   t  | t  r& t |  j |  j |  S|  j | S(   N(   R)   t   sliceR    R!   R"   (   R   R3   (    (    s   /usr/lib/python2.7/sre_parse.pyt   __getitem__   s    c         C   s   | |  j  | <d  S(   N(   R"   (   R   R3   t   code(    (    s   /usr/lib/python2.7/sre_parse.pyt   __setitem__   s    c         C   s   |  j  j | |  d  S(   N(   R"   t   insert(   R   R3   R7   (    (    s   /usr/lib/python2.7/sre_parse.pyR9      s    c         C   s   |  j  j |  d  S(   N(   R"   R   (   R   R7   (    (    s   /usr/lib/python2.7/sre_parse.pyR      s    c         C   s  |  j  r |  j  Sd } } t t t t t t f } t t f } x|  j	 D]y\ } } | t
 k r t j } d } xB | d D]6 } | j   \ }	 }
 t | |	  } t | |
  } qz W| | } | | } qH | t k r | j   \ } } | | } | | } qH | t k r9| d j   \ } } | | } | | } qH | | k r| d j   \ } } | t |  | d } | t |  | d } qH | | k r| d } | d } qH | t k rH PqH qH Wt t | t j   t t | t j   f |  _  |  j  S(   Nl    i    i   i   (   R#   t   ANYt   RANGEt   INt   LITERALt   NOT_LITERALt   CATEGORYt
   MIN_REPEATt
   MAX_REPEATR"   t   BRANCHt   syst   maxintt   getwidtht   mint   maxt   CALLt
   SUBPATTERNt   longt   SUCCESSt   int(   R   t   lot   hit	   UNITCODESt   REPEATCODESR-   R.   R   t   jt   lt   h(    (    s   /usr/lib/python2.7/sre_parse.pyRE      sD    	
	



3N(   R   R   R   R   R(   R0   R2   R4   R6   R8   R9   R   RE   (    (    (    s   /usr/lib/python2.7/sre_parse.pyR    X   s   							t	   Tokenizerc           B   sA   e  Z d    Z d   Z d d  Z d   Z d   Z d   Z RS(   c         C   s    | |  _  d |  _ |  j   d  S(   Ni    (   t   stringR3   t   _Tokenizer__next(   R   RU   (    (    s   /usr/lib/python2.7/sre_parse.pyR      s    		c         C   s   |  j  t |  j  k r% d  |  _ d  S|  j |  j  } | d d k r y |  j |  j  d } Wn t k
 ry t d  n X| | } n  |  j  t |  |  _  | |  _ d  S(   Ni    s   \i   s   bogus escape (end of line)(   R3   R1   RU   R   t   nextt
   IndexErrorR   (   R   t   chart   c(    (    s   /usr/lib/python2.7/sre_parse.pyt   __next   s    	i   c         C   s*   | |  j  k r& | r" |  j   n  d Sd S(   Ni   i    (   RW   RV   (   R   RY   t   skip(    (    s   /usr/lib/python2.7/sre_parse.pyt   match   s
    c         C   s   |  j  } |  j   | S(   N(   RW   RV   (   R   t   this(    (    s   /usr/lib/python2.7/sre_parse.pyR      s    	
c         C   s   |  j  |  j f S(   N(   R3   RW   (   R   (    (    s   /usr/lib/python2.7/sre_parse.pyt   tell   s    c         C   s   | \ |  _  |  _ d  S(   N(   R3   RW   (   R   R3   (    (    s   /usr/lib/python2.7/sre_parse.pyt   seek   s    (   R   R   R   RV   R]   R   R_   R`   (    (    (    s   /usr/lib/python2.7/sre_parse.pyRT      s   				c         C   sB   d |  k o d k n pA d |  k o3 d k n pA |  d k S(   NR/   t   zt   At   Zt   _(    (   RY   (    (    s   /usr/lib/python2.7/sre_parse.pyt   isident   s    c         C   s   d |  k o d k SS(   Nt   0t   9(    (   RY   (    (    s   /usr/lib/python2.7/sre_parse.pyt   isdigit   s    c         C   sK   t  |  d  s t Sx0 |  d D]$ } t  |  r t |  r t Sq Wt S(   Ni    i   (   Re   t   FalseRh   t   True(   R   RY   (    (    s   /usr/lib/python2.7/sre_parse.pyt   isname   s    c         C   s  t  j |  } | r | St j |  } | r2 | SyO| d d !} | d k r x5 |  j t k r t |  d k  r | |  j   } qQ W| d } t |  d k r t d t d |   n  t t	 | d  d @f S| t
 k r8x5 |  j t
 k rt |  d k  r| |  j   } q W| d } t t	 | d	  d @f S| t k rZt d t |   n  t |  d k rt t | d  f SWn t k
 rn Xt d t |   d  S(
   Ni   i   R   i   s   bogus escape: %ss   \i   i   i   (   t   ESCAPESR   t
   CATEGORIESRW   t	   HEXDIGITSR1   R   R   R=   RL   t	   OCTDIGITSt   DIGITSt   ordt
   ValueError(   t   sourcet   escapeR7   RZ   (    (    s   /usr/lib/python2.7/sre_parse.pyt   _class_escape   s6    $
$
c         C   sB  t  j |  } | r | St j |  } | r2 | Sy| d d !} | d k r x5 |  j t k r t |  d k  r | |  j   } qQ Wt |  d k r t  n  t t | d d  d @f S| d k rx5 |  j t	 k r t |  d k  r | |  j   } q Wt t | d d  d @f S| t
 k r|  j t
 k r| |  j   } | d t	 k r| d t	 k r|  j t	 k r| |  j   } t t | d d  d @f Sn  t | d  } | | j k  r| j |  st d	  n  t | f St  n  t |  d k rt t | d  f SWn t k
 r*n Xt d
 t |   d  S(   Ni   i   R   i   i   i   Rf   i   s   cannot refer to open groups   bogus escape: %s(   Rm   R   Rl   RW   Rn   R1   Rr   R=   RL   Ro   Rp   R   R   R   t   GROUPREFRq   R   (   Rs   Rt   t   stateR7   RZ   t   group(    (    s   /usr/lib/python2.7/sre_parse.pyt   _escape  sH    $	$ 
	i   c         C   s  g  } | j  } |  j } xX | t |  |   | d  r@ q n  | sJ Pn  |  j sc | d d  rg Pq t d  q t |  d k r | d St |  } | j  } xw d  } xj | D]= }	 |	 s Pn  | d  k r |	 d } q |	 d | k r Pq q Wx | D] }	 |	 d =q W| |  q Pq xz | D]0 }	 t |	  d k sO|	 d d t k r#Pq#q#Wg  }
 |
 j  } x | D] }	 | |	 d  qmW| t	 |
 f  | S| j  t
 d  | f f  | S(   Nt   |t   )i    s   pattern not properly closedi   (   R   R]   t   _parseRW   R   R1   R    R   R=   R<   RB   (   Rs   Rw   t   nestedt   itemst   itemsappendt   sourcematcht
   subpatternt   subpatternappendt   prefixt   itemt   sett	   setappend(    (    s   /usr/lib/python2.7/sre_parse.pyt
   _parse_sub-  sR    			
&	c         C   s   t  |  |  } |  j d  rK t  |  |  } |  j d  rQ t d  qQ n d  } |  j ry |  j d d  ry t d  n  t |  } | j t | | | f f  | S(   NRz   s/   conditional backref with more than two branchesR{   i    s   pattern not properly closed(   R|   R]   R   R   RW   R    R   t   GROUPREF_EXISTS(   Rs   Rw   t	   condgroupt   item_yest   item_noR   (    (    s   /usr/lib/python2.7/sre_parse.pyt   _parse_sub_condh  s    s   |)s   =!<s   =!c          C   s>  t  |  } | j } |  j } |  j } t } t } t } t }	 t }
 x
|  j	 | k r[ Pn  |   } | d  k rt Pn  | j t @r | t k r qH n  | d k r x |   } | d+ k r Pq q qH q n  | r | d t k r | t t |  f  qH | d k rg  } | j } | d  r0| t d  f  n  | } x|   } | d k r_| | k r_PnL | r| d d k rt |  |  } n$ | rt t |  f } n	 t d  | d	  r|   } | d k r| d t k r| d
 d } n  | |  | t t d	  f  Pq| r| d d k r9t |  |  } n t t |  f } | d t k sk| d t k rwt d  n  | d
 } | d
 } | | k  rt d  n  | t | | f f  qt d  q:| d t k r| d
 d } n  | |  q:| |  d
 k r-| d d t k r-| | d  q7| |  d k r| d d t k r| d
 d t k r| t | d
 d
 f  q7| t | f  qH | r| d t k r| d k rd, \ } } ns| d k rd t } } nW| d k rd
 t } } n;| d k r0|  j	 d k r5| t t |  f  qH n  |  j   } d t } } d } } x# |  j	 t k r}| |  j   } q[W| d  rx) |  j	 t k r| |   } qWn | } | d  s| t t |  f  |  j |  qH n  | r t |  } n  | rt |  } n  | | k  r9t d  q9n	 t d  | rL| d } n d  } | s| |  d
 k r| d d t k rt d  n  | d d |
 k rt d  n  | d  rt | | | f f | d <q7t | | | f f | d <qH | d k r| t  d  f  qH | d k r
d
 } d  } d  } | d  r	d } | d  r| d  rd } x> |   } | d  k rt d  n  | d k rPn  | | } q_d
 } t! |  st d  qq	| d   rid } x> |   } | d  k rt d  n  | d! k rPn  | | } qt! |  s)t d  n  | j" j |  } | d  k rSt d"  n  | t# | f  qH q	|   } | d  k rt d#  n  t d$ |  q	| d%  rd } q	| d  rx, |  j	 d  k s|  j	 d! k rPn  |   q| d!  sH t d&  qH qH q	|  j	 | k r|   } d
 } | d k r_|  j	 |	 k rMt d'  n  d } |   } n  t$ |  |  } | d!  st d&  n  | d  k r| t% | | f f  qH | t& | | f f  qH q	| d  r	d } x> |   } | d  k rt d  n  | d! k r	Pn  | | } qd } t! |  rY	| j" j |  } | d  k r	t d"  q	q	y t |  } Wq	t' k
 r	t d  q	Xq	|  j	 t( k r	t d#  n  x- |  j	 t( k r	| j t( |   B| _ q	Wn  | ru
| d k r	d  } n | j) |  } | r
t* |  | |  } n t$ |  |  } | d!  s@
t d&  n  | d  k	 r\
| j+ |  n  | t, | | f f  q7x |   } | d  k r
t d#  n  | d! k r
Pn  t d(  qx
qH | d k r
| t t- f  qH | d) k r
| j t t. f  qH | r.| d d k r.t/ |  | |  } | |  qH t d*  qH | S(-   Nt   #s   
i    t   [t   ^t   ]s   \s$   unexpected end of regular expressiont   -i   s   bad character rangei   t   ?R    t   +t   {t   }t    t   ,s   bad repeat intervals   not supportedis   nothing to repeats   multiple repeatt   .t   (t   Pt   <s   unterminated namet   >s   bad character in group namet   =R{   s   unknown group names   unexpected end of patterns   unknown specifier: ?P%st   :s   unbalanced parenthesiss   syntax errors   unknown extensiont   $s   parser error(   Ns   
(   i    i   (0   R    R   R   R]   R1   t   _PATTERNENDERSt   _ASSERTCHARSt   _LOOKBEHINDASSERTCHARSt   _REPEATCODESRW   R   R   t   SRE_FLAG_VERBOSEt
   WHITESPACEt   SPECIAL_CHARSR=   Rq   t   NEGATERu   R   R<   R;   R>   t   REPEAT_CHARSt	   MAXREPEATR_   Rp   R`   RL   t   ATR@   RA   R:   Rk   R   Rv   R   t   ASSERTt
   ASSERT_NOTRr   t   FLAGSR   R   R   RI   t   AT_BEGINNINGt   AT_ENDRy   (    Rs   Rw   R   R   t	   sourcegetR   t   _lent   PATTERNENDERSt   ASSERTCHARSt   LOOKBEHINDASSERTCHARSRP   R^   R   R   t   startt   code1t   code2RM   RN   RF   RG   t   hereR   Rx   R   R   RY   R   t   dirt   pt   condnameR7   (    (    s   /usr/lib/python2.7/sre_parse.pyR|   {  s   										
 

&:
	-				
				i    c         C   s   t  |   } | d  k r$ t   } n  | | _ |  | _ t | | d  } | j   } | d k rl t d  n | r~ t d  n  | t @r | j	   n  | t
 @r | j j t
 @r t |  | j j  S| S(   Ni    R{   s   unbalanced parenthesiss-   bogus characters at end of regular expression(   RT   R   R   R   t   strR   R   R   t   SRE_FLAG_DEBUGR(   R   R!   t   parse(   R   R   R!   Rs   R   t   tail(    (    s   /usr/lib/python2.7/sre_parse.pyR     s     		
c         C   s  t  |   } | j } g  } | j } | | d  } |  d  } t |  t d  k r^ t } n t } x|   }	 |	 d  k r Pn  |	 r|	 d d k r|	 d d !}
 |
 d k rd } | j d  rxA |   } | d  k r t d	  n  | d
 k r Pn  | | } q n  | st d  n  y( t	 |  } | d k  rAt d  n  WnW t
 k
 rt |  sjt d  n  y | j | } Wqt k
 rt d  qXn X| t | f  q|
 d k r| j t k r|	 |   }	 | j t k r|	 |   }	 qn  | | t	 |	 d d  d @  q|
 t k rt } | j t k r|	 |   }	 |
 t k r|	 d t k r| j t k r|	 |   }	 t } | | t	 |	 d d  d @  qn  | s| t t	 |	 d  f  qqy | t |	 d  }	 Wn t k
 rn X| |	  qg | |	  qg d } g  } | j } d  g t |  } xG | D]? \ }
 } |
 t k rv| | | f  n
 | | | <| d } qKW| | f S(   Nc         S   sM   | r9 | d d t  k r9 t  | d d |  f | d <n | t  |  f  d  S(   Nii    i   (   R=   (   t   literalR   t   pappend(    (    s   /usr/lib/python2.7/sre_parse.pyR     s    i    R   s   \i   i   t   gR   s   unterminated group nameR   s   bad group names   negative group numbers   bad character in group names   unknown group nameRf   i   i   (   RT   R   R   R'   t   chrt   unichrR   R]   R   RL   Rr   Rk   t
   groupindext   KeyErrorRX   t   MARKRW   Ro   Rp   Ri   Rj   Rl   R1   (   Rs   R!   R   t   sgetR   R/   R   t   sept   makecharR^   RZ   R   RY   R3   t   isoctalR   R   t   groupsappendt   literals(    (    s   /usr/lib/python2.7/sre_parse.pyt   parse_template  s    		
			$' 	
c   	      C   s   | j  } | j d  } |  \ } } | } yG x@ | D]8 \ } } | |  | | <} | d  k r3 t d  q3 q3 WWn t k
 r t d  n X| j |  S(   Ni    s   unmatched groups   invalid group reference(   Rx   RU   R   R   RX   t   join(	   t   templateR]   R   R   R   R   R3   Rx   R   (    (    s   /usr/lib/python2.7/sre_parse.pyt   expand_template
  s    	(8   t   __doc__RC   t   sre_constantsR   R   R   Rp   Ro   Rn   R   R=   Rq   Rl   R   t   AT_BEGINNING_STRINGt   AT_BOUNDARYt   AT_NON_BOUNDARYR<   R?   t   CATEGORY_DIGITt   CATEGORY_NOT_DIGITt   CATEGORY_SPACEt   CATEGORY_NOT_SPACEt   CATEGORY_WORDt   CATEGORY_NOT_WORDt   AT_END_STRINGRm   t   SRE_FLAG_IGNORECASEt   SRE_FLAG_LOCALEt   SRE_FLAG_MULTILINEt   SRE_FLAG_DOTALLR   t   SRE_FLAG_TEMPLATEt   SRE_FLAG_UNICODER   R   R    RT   Re   Rh   Rk   Ru   Ry   R   R   R   R   R   R@   RA   R   R|   R   R   R   R   (    (    (    s   /usr/lib/python2.7/sre_parse.pyt   <module>   sn   

Y!					 	,;		 	W