
    Rhe                     `   d Z ddlZddlmZ ddl ddlmZ ej                  ek(  sJ d       ee	hZ
eehZeehZe
eehz  ZeeeefeeeefeeeefiZej<                  fdZd	 Z d
 Z!ddZ"ejF                  dz  Z$de$z  dz
  Z%dZ&e$e'fdZ(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3ddZ4y)zInternal support module for sre    N   )_parser)*)_EXTRA_CASESzSRE module mismatchc                 *    ||z  r| | z  } | |z  | z  S N )flags	add_flags	del_flags
TYPE_FLAGSs       #/usr/lib/python3.12/re/_compiler.py_combine_flagsr      s(    :*I)++    c           
         | j                   }t        }t        }t        }t        }t
        }d }	d }
d }|t        z  rY|t        z  sP|t        z  r't        j                  }	t        j                  }
t        }n t        j                  }	t        j                  }
|D ]d  \  }}||v r |t        z  s ||        ||       &|t        z  r |t        |           ||       G |	|      s ||        ||       ` |
|      }|s |t         |           ||       ||vr |t"        |           ||        |t$                ||       } |d       |t&        u r |t(               |f||   z   D ]  } |t*                ||         |t,                ||       |z
  | |<   |t.        u rt1        ||	|
|      \  }}|t        z  r|t        z  r |t2               n*|s |t.               n|s |t4               n |t$                ||       } |d       t7        |||         ||       |z
  | |<   |t8        u r%|t:        z  r |t<                |t8               ||v r|t>        z  rtA        d|      tC        |d         r` |||   d           ||       } |d        ||d           ||d          tE        | |d   |        |tF                ||       |z
  | |<   Q |||   d           ||       } |d        ||d           ||d          tE        | |d   |        ||       |z
  | |<    |||   d          |tH        u r^|\  }}}}|r |tJ                ||dz
  dz         tE        | |tM        |||             |s |tJ                ||dz
  dz  dz          |tN        u rE |tN                ||       } |d       tE        | ||        |tF                ||       |z
  | |<   f||v r
 ||       t||v r ||        ||       } |d       |d   dk\  r	 |d       nB|d   jQ                         \  }}|tR        kD  rtA        d      ||k7  rtA        d       ||       tE        | |d   |        |tF                ||       |z
  | |<   |tT        u rp ||       |tV        z  rtX        j[                  ||      }|t        z  rt\        j[                  ||      }n|t        z  rt^        j[                  ||      } ||       |t`        u r ||       g }|j                   }|d   D ]O  } ||       } |d       tE        | ||        |tb                | ||               |d        ||       |z
  | |<   Q  |t,               |D ]  } ||       |z
  | |<    |td        u r7 ||       |t        z  r
tf        |   }n|t        z  r	th        |   } ||       ^|tj        u rP|t        z  s	 ||       n1|t        z  r |tl               n|s |tn               n |tp                ||dz
         |tr        u r ||        ||d   dz
          ||       } |d       tE        | |d   |       |d   rM |tb                ||       } |d        ||       |z
  dz   | |<   tE        | |d   |        ||       |z
  | |<   F ||       |z
  dz   | |<   YtA        d|       y )Nr   z(internal: unsupported template operator    r   zlooks too much behindz(look-behind requires fixed-width patternz#internal: unsupported operand type ):appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES_ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODE_sreunicode_iscasedunicode_tolowerr   ascii_iscasedascii_tolowerOP_LOCALE_IGNORE	OP_IGNOREOP_UNICODE_IGNOREIN_UNI_IGNORENOT_LITERALNEGATELITERALFAILUREIN_optimize_charsetIN_LOC_IGNORE	IN_IGNORE_compile_charsetANYSRE_FLAG_DOTALLANY_ALLSRE_FLAG_TEMPLATEerror_simple_compileSUCCESS
SUBPATTERNMARKr   ATOMIC_GROUPgetwidthMAXCODEATSRE_FLAG_MULTILINEAT_MULTILINEget	AT_LOCALE
AT_UNICODEBRANCHJUMPCATEGORY	CH_LOCALE
CH_UNICODEGROUPREFGROUPREF_LOC_IGNOREGROUPREF_IGNOREGROUPREF_UNI_IGNOREGROUPREF_EXISTS)codepatternr
   emit_lenLITERAL_CODESREPEATING_CODESSUCCESS_CODESASSERT_CODESiscasedtolowerfixesopavloskipkcharsethascasedgroupr   r   phitail
tailappendskipyesskipnos                               r   r4   r4   %   s   ;;DD"M&O"M LGGE""5?+B##**G**G E((G((G ^IB..RR(%b)*RR[RRR[2'Hu_*2./H':DtAw[(V UU2Y.  WQ  M!%dd!2DJ2X 1"gw NGX**u/F]#RY]#:DtAwWeT2dd*DJ3Y&WS	?"((BPQQr!u~_R(+,Dz47RURUr!ue,W!$Z$.T
_R(+,Dz47RURUr!ue,!$Z$.T
_R(+,:-/*E9iT
eAgq[!T1nUIyIJT
eAgq[]#< :DtAwT2u%Mdd*DJ= H<H:DtAw!uzQA)B< 7888 JKKRT2a5%(Mdd*DJ2XH))!%%b"-&]]2r*))^^B+H6\HDJe /Dz47r5)T
4:&Q!$Z$.T
/ M /!$Z$.T
/8^H&r]))^H8^..R(()_%()AJ?"HAqM4jG$q'T2a5%(!uT
dT!W $T
W 4q 8Wr!ue,#DzF2V $T
W 4q 8W2GHH}^Ir   c                    |j                   }| D ]  \  }} ||       |t        u r|t        u r	 ||       (|t        u s|t        u r ||d           ||d          O|t
        u r|j                  |       i|t        u r|j                  |       |t        u r;|t        z  r |t        |          |t        z  r |t        |           ||       t        d|        |t               y )Nr   r   z#internal: unsupported set operator )r   r&   r'   RANGERANGE_UNI_IGNORECHARSETextend
BIGCHARSETrC   r   rD   r   rE   r2   r(   )r[   r
   rK   rM   rV   rW   s         r   r-   r-      s    ;;D IBR<7]H5[B"22AKAK7]KKO:KKO8^&Yr]#))Z^$R2GHH+I, 	Mr   c                 @   g }g }t        d      }d}| D ]  \  }}		 	 |t        u r7|r/ ||	      }
d||
<   |r|
|v r||
   D ]  }d||<   	 |s ||	      rd}nd||	<   n|t        u rt        |	d   |	d   dz         }|r[|r+t	        ||      D ]  }d||<   ||v s||   D ]  }d||<   	  nt	        ||      D ]  }d||<   	 |sRt        t	        ||            }n<|D ]  }d||<   	 n/|t        u r|j                  ||	f       n|j                  ||	f        g }d}	 |j                  d|      }|dk  rnYt        |      dk\  rd }nH|j                  d|      }|dk  r|j                  |t        |      f       n|j                  ||f       q|l|D ]A  \  }}||z
  dk(  r|j                  t        |f       &|j                  t        ||dz
  ff       C ||z  }|st        |      t        |       k  r||fS | |fS t        |      dk(  r+t        |      }|j                  t        |f       ||z  }||fS t        |      }i }t        d      }d}t               }t        dd	d      D ]1  }|||dz    }||v r||   ||dz  <   |x||dz  <   ||<   |dz  }||z  }3 t        |      }|gt        |      z   |dd |j                  t         |f       ||z  }||fS # t        $ rB t        |      dk(  r|ddz  z  }Y |rd}|t        u rt        }|j                  ||	f       Y w xY w)
N   FTr   r       i   r   i   )	bytearrayr'   re   rangemapanyr&   r   
IndexErrorr   rf   find
_mk_bitmaprg   bytes_bytes_to_codesri   )r[   rS   fixuprU   outr`   charmapr\   rV   rW   rX   rZ   rirunsqr^   datacompsmappingblockchunks                         r   r*   r*      s   
CDnGH 9B6&="2Y&' R5[%*2Y /-.
/'GBK'+H&'5[beRU1W-A %(] 7-.
#$:-21X %756
%77 &)] /-.
/''*3w?';H!" +A)*GAJ+6\JJBx(KKR). s9x D	A
LLAq5t9>DLLAq5KKCL)*QF   	0DAq1uz

GQ<(

EAq1u:./		0
 	ts3x#g,.=    7|s'"

GT?#tH}, GnGEnGE;D1eS! 1s7#E> %eGAH/44GAHeQJEEMD dD/'22D1IJJ
D!"4KC=C  &w<3&uv~-G #H U{-RH%+&s   A8KA<KL4%LL   s   0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111c                     | j                  t              d d d   }t        t        |      d|       D cg c]  } ||||z
  | d       c}S c c}w )Nr   r   )	translate_BITS_TRANSrn   r   )bits	_CODEBITS_intsrz   s        r   rs   rs     sZ    {#DbD)A3q61yj13 1y=!$a( 3 3 3s   Ac                     t        |       j                  d      }|j                  t        j                  k(  sJ t        |      |j                  z  t        |       k(  sJ |j                         S )NI)
memoryviewcastitemsizer   CODESIZEr   tolist)bas     r   ru   ru     sW    13A::&&&q6AJJ#a&(((88:r   c                 ~    t        |       dk7  ry| d   \  }}|t        u r|d   d u xr t        |d         S |t        v S )Nr   Fr   r   )r   r6   r3   _UNIT_CODES)r^   rV   rW   s      r   r3   r3     sK    
1v{qTFB	Z!u}0B0r   c                     dgt        |       z  }t        dt        |             D ]<  }||dz
     }| |   | |   k7  r|dk(  rd||<   !||dz
     }| |   | |   k7  r|dz   ||<   > |S )aj  
    Generate an overlap table for the following prefix.
    An overlap table is a table of the same size as the prefix which
    informs about the potential self-overlap for each index in the prefix:
    - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...]
    - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with
      prefix[0:k]
    r   r   )r   rn   )prefixtablerz   idxs       r   _generate_overlap_tabler     s     C#f+E1c&k" AElQi6#;&axaa.C	 Qi6#;& QwE!H Lr   c                 h    | t         z  sy | t        z  rt        j                  S t        j                  S r   )r   r   r   r   r   )r
   s    r   _get_iscasedr     s/    &&	!	!###!!!r   c                    g }|j                   }d }t        |      }| j                  D ]  \  }}|t        u r|r
 ||      r n ||       #|t        u rn|\  }}	}
}t        ||	|
      }|t        z  r|t        z  r nNt        ||      \  }}}||t        |      }n|t        |      |z   }|j                  |       |r n n ||dfS ||dfS )NTF)r   r   r}   r'   r6   r   r   r   _get_literal_prefixr   rh   )rL   r
   r   prefixappendprefix_skiprS   rV   rW   r]   r   r   r^   flags1prefix1prefix_skip1got_alls                   r   r   r     s    F==LK5!G,, )B=72;:-/*E9i#E9i@F++0H-@F-K*G\7"$"%f+K!-"%f+"<KMM'")), {D((;%%r   c                 T   	 | j                   sy | j                   d   \  }}|t        urn(|\  }}}} t        |||      }|t        z  r
|t        z  ry Pt        |      }|t        u r|r	 ||      ry ||fgS |t        u rDg }|j                  }	|d   D ],  }
|
s y |
d   \  }}|t        u r|r ||      s |	||f       , y  |S |t        u r`|}|rZ|D ]U  \  }}|t        u r ||      s y |t        u s"|d   dkD  r y t        t        |t        |d   |d   dz                     sU y  |S y )Nr   r   i  )r}   r6   r   r   r   r   r'   rA   r   r)   re   rp   ro   rn   )rL   r
   rV   rW   r]   r   r   rS   r[   charsetappendr^   s              r   _get_charset_prefixr     sa   
||aBZ/1,y)Wui;&&5?+B  5!G	W}wr{Rz	vA 	AqTFBW}g'"+r2h'	 	r! $B=r{#5[!uv~#3wbeRU1W(=>?#$ r   c                 
   |j                         \  }}|t        kD  rt        }|dk(  r| j                  t        dd||g       y g }d}g }|t        z  r	|t
        z  st        ||      \  }}}|st        ||      }| j                  }	 |	t               t        |       }
 |	d       d}|rt        }|r|t        z  }n|r	|t        z  } |	|       |t        k  r	 |	|       n |	t               |d t         } |	|       |rR |	t        |             |t        |      } |	|       | j                  |       | j                  t        |             n!|rt        |      \  }}|rJ t        |||        t        |       |
z
  | |
<   y )Nr      )r9   r:   rh   INFOr   r   r   r   r   r   SRE_INFO_PREFIXSRE_INFO_LITERALSRE_INFO_CHARSETr   r*   r-   )rK   rL   r
   rX   r_   r   r   r[   r   rM   rY   maskr\   s                r   _compile_infor     s~    FB	G|	QwT1aR()FKG''EO,C':7E'J$W)'59G ;;DJt9Dd1gD7**D	&&J	G|RW!HS[v;K[F+F34	-g6|%.TT!DJr   c                 .    t        | t        t        f      S r   )
isinstancestrrt   )objs    r   isstringr   :  s    cC<((r   c                     | j                   j                  |z  }g }t        || |       t        || j                  |       |j                  t               |S r   )stater
   r   r4   r}   r   r5   )r^   r
   rK   s      r   _coder   =  sJ    GGMME!ED $5! T1665!KKKr   c                 8    ddj                  d | D              z  S )N[%s], c              3   R   K   | ]  }d t         j                  dz  dz   |fz   ! yw)z%#0*xr   N)r   r   .0xs     r   	<genexpr>z_hex_code.<locals>.<genexpr>M  s'     M1gq):A(>>Ms   %')join)rK   s    r   	_hex_coder   L  s    DIIMMMMMr   c                      dd l t               dt        t        t               dz
               fd dt                      y )Nr   r   c                 
    d d fd
}fd}dz   }||k  r#| |   }|dz  }t         |   }|t        t        t        t        t
        t        t        fv r
 ||       n|t        t        t        t        t        t        t        t        fv r#|   }|dz  } ||d|t!        |      fz         n|t"        u r4|   }|dz  }t%        t&        |         }|d d dk(  sJ  |||dd         nK|t(        u r4|   }|dz  }t%        t*        |         }|d d d	k(  sJ  |||dd         n|t,        t.        t0        t2        fv r)|   } |||||z           |dz   ||z          ||z  }n|t4        t6        fv r4||d
z    \  }}	|d
z  } ||d||	t!        |      t!        |	      fz         n|t8        u r- ||t;        ||dt<        z  z                 |dt<        z  z  }nW|t>        u r|   }|dz  }tA        djC                  fd||dtD        jF                  z  z    D                    }
 ||||
       |dtD        jF                  z  z  }dz  tI        |      D ],  } |t;        ||dt<        z  z                 |dt<        z  z  }. dz  n|tJ        tL        tN        tP        tR        fv r|   }|dz  } |||       ns|tT        u r|   } |||||z          |dz  }nQ|tV        u rW|   } |||||z          |r; |dz   ||z          ||z  }| |   }|r |d|||z          n |t               |r;|dz  }n|tX        tZ        t\        t^        t`        fv r=||dz    \  }}}|tb        k(  rd} |||||||z           |dz   ||z          ||z  }n|td        u r!||d
z    \  }} ||||||z          |d
z  }no|tf        th        fv r0||d
z    \  }} ||||||z           |d
z   ||z          ||z  }n1|tj        u r)|   } |||||z           |dz   ||z          ||z  }n |tl        u r||dz    \  }}}}|tb        k(  rd} |||to        |      ||||z          |dz    |tp        z  r|dz   |dz    \  }} |d|       |dz      |z    } |dddjC                  d |D              z  ddjC                  ts        t         |            z          |z    |d  |z            |z   |tt        z  rdz   |d         ||z          dz  ||z  }ntw        |      ||k  r#dz  y )N)toc                     | j                  |        |d| fz  fz  }t        dv rdndfz  ddz
  z         t        |  y )Nz(to %d)z%*d%s :.z  r   end)addprint)r   argslabelsleveloffset_widthstarts     r   print_z!dis.<locals>.dis_.<locals>.print_W  sW    ~

2bU*,,(lE%6/3sSSE!Gn&4Lr   c                  @    t        ddz  z   z         t        |   y )N r   r   )r   )r   r   r   s    r   print_2z"dis.<locals>.dis_.<locals>.print_2_  s     c<!E'1234Lr   r   z
%#02x (%r)   AT_	   	CATEGORY_r   z%#02x %#02x (%r-%r)rk   r   c              3   r   K   | ].  }|j                  t        j                  j                         0 y wr   )to_bytesr   r   	byteorder)r   r   syss     r   r   z$dis.<locals>.dis_.<locals>.<genexpr>  s.      (R,- )*

4==#--(P (Rs   47branch	MAXREPEATr      z  prefix_skipz  prefixr   r   c              3   &   K   | ]	  }d |z    yw)z%#02xNr	   r   s     r   r   z$dis.<locals>.dis_.<locals>.<genexpr>  s     .Kqw{.Ks   z(%r) z	  overlapin)<OPCODESr5   r(   r.   r0   	MAX_UNTIL	MIN_UNTILr&   r'   r%   LITERAL_IGNORENOT_LITERAL_IGNORELITERAL_UNI_IGNORENOT_LITERAL_UNI_IGNORELITERAL_LOC_IGNORENOT_LITERAL_LOC_IGNOREchrr;   r   ATCODESrC   CHCODESr)   r,   r$   r+   re   rf   rg   r   r   ri   listr   r   r   rn   r7   rF   rH   rI   rG   rB   rA   REPEAT
REPEAT_ONEMIN_REPEAT_ONEPOSSESSIVE_REPEATPOSSESSIVE_REPEAT_ONEr   rJ   ASSERT
ASSERT_NOTr8   r   binr   ro   r   
ValueError)r   r   r   r   rz   rV   argrY   rX   r_   r   jminmaxr
   
prefix_lenr   r   rK   dis_r   r   r   r   s   `                 r   r   zdis.<locals>.dis_V  s/   ! 	 		
 	
#gEaBFABgwWF4 4r
&(:*,B*,BD D 1gQr<3C/9:r1gQ'#,'2Aw%'''r3qr7#x1gQ'#,'2Aw+---r3qr7#I}mDDAwr4AdF+QqS!D&!T	/00a1BQr0BCGSW3MMNwr9T!Qi-?%@ABS)^#z!1gQsxx (R15aS$--=O9O1P(R  R Sr3(S$--''
s (AId1a#y..@&ABCi'A( 
h9L+- -1gQr3tAwr4AdF+QvAwr4AdF+1af%IAE7Dx!D&9w  Q
N)+@B B!%a1c3)#%Cr4caf5QqS!D&!T	& AaCL	Tr340Q
++ AaCL	cr440QqS!D&!T	|#Awr4AdF+QqS!D&!T	t(,Q!%eS#)#%Cr4US#!D&A!?*.21Q3!n+JO[9EE!%z)9:FJ"TYY.KF.K%KK"RWWSf-=%>>@ Z'EKeU:5E)FGZ'E++QJEDM$'QJET	 n$o #gr 	
r   )r   setr   r   )rK   r   r   r   r   r   s   `@@@@@r   disr   O  sF    UFEs3t9q=)*LI IV 	CIr   c           
         t        |       r| }t        j                  | |      } nd }t        | |      }|t        z  rt                t        |       | j                  j                  }d g| j                  j                  z  }|j                         D ]
  \  }}|||<    t        j                  ||| j                  j                  z  || j                  j                  dz
  |t        |            S )Nr   )r   r   parser   SRE_FLAG_DEBUGr   r   r   	groupdictgroupsitemsr   compiler
   tuple)r^   r
   rL   rK   
groupindex
indexgrouprZ   rz   s           r   r  r    s     {MM!U#E?D~D	 ""J!''..(J  " 1
1 <<&	qE*%
 
r   )NNN)r   )5__doc__r   r   r   
_constants_casefixr   MAGICr'   r%   r   r5   r(   r   r   r   r   r.   r)   r   
MIN_REPEATr   r   r   
MAX_REPEATr   r   r   r   r   r   r   r4   r-   r*   r   r   r:   r   intrs   ru   r3   r   r   r   r   r   r   r   r   r   r  r	   r   r   <module>r     s   &    "zzU 11 1;'7#$Ry( N3J/)74IJ  &00,qIf6JX MMA		>Q
(s 3
*"&>*X9"v)NRj
r   