U e5d&�� @s�dZddlTdZdZed�Zed�Zed�Zed�Zed �Z ee e h�Z ee eeeeeh�Zeed �feed �feed �feed �feed�feed�feed�feed�fd�Zeefeefeefeeefgfeeefgfeeefgfeeefgfeeefgfeeefgfee fd� Z!e"e#e$e%e&e'e(e)d�Z*e'e#Be)BZ+e,e(BZ-Gdd�de.�Z/Gdd�d�Z0Gdd�d�Z1Gdd�d�Z2dd�Z3dd �Z4d!d"�Z5d#d$�Z6d3d&d'�Z7d(d)�Z8d*d+�Z9d4d-d.�Z:d/d0�Z;d1d2�Z|dk�r�ddl }|j d|� �dt|d d �t | |�f}|dt k�s�|dt k�r�d| |f}|�|t| �dt|���|d}|d}||k�r*d| |f}|�|t| �dt|���|t||ff�n"|dtk�rV|dd}||��q t|�}| |�dk�r�|ddt k�r�|�r�|t|ddf�n ||d�n"|�r�|�dtdf�|t|f�q"| tk�r.|� �} | dk�rd\}}�nB| dk�rdt}}�n*| dk�r0dt}}�n| dk�r4|jdk�rX|t | | �f�q"dt}}d }}|jtk�r�||�7}�qj|d!��r�|jtk�r�||�7}�q�n|}|d��s�|t | | �f�|�| �q"|�r�t|�}|tk�r�td"��|�rBt|�}|tk�rtd"��||k�rB|�d#|� �| ��ntd$|f��|�rV|d%d�}nd}|�rr|ddtk�r�|�d&|� �| t| ���|ddtk�r�|�d'|� �| t| ���|ddt k�r�|dd\}}}}|dk�r�|�s�|�s�|}|d��rt!|||ff|d%<nt"|||ff|d%<q"| d(k�rF|t#df�q"| d)k� r�|� �d} d*}d}!d}d}|d�� r|�}|dk�r�|�d+��|d,k�r�|d-��r�|�$d.d/�}!|!�%��s�d0|!}|�|t|!�d��n�|d1��r�|�$d2d/�}!|!�%��sd0|!}|�|t|!�d��|j&�|!�}"|"dk�rFd3|!}|�|t|!�d��|�'|"��sf|�d4t|!�d��|�(|"|�|t)|"f�q"n2|�}|dk�r�|�d+��|�d5|t|�d���nd|d6k�r�d}�nR|dk�r |jdk�r�|�d7|� �| ��|�d2k�r�q"�q�q"�n|d8k�r�d}#|d-k�r||�}|dk�r>|�d+��|d9k�r`|�d:|t|�d��d%}#|j*}$|$dk�r||j+|_*t,||||d�}|#dk�r�|$dk�r�d|_*|d2��s�|�d;|� �| ��|d1k�r�|t-|#|ff�q"|t.|#|ff�q"�n$|d)k� rj|�$d2d/�}%|%�%�� rL|j&�|%�}&|&dk� r�d3|%}|�|t|%�d��n�zt|%�}&|&dk� rdt/�Wn4t/k � r�d0|%}|�|t|%�d�d�YnX|&� s�|�d�� r0t1||||d�}(|jd>k� r4|�d?��nd}(|�d2�� sT|�d;|� �| ��|t2|&|'|(ff�q"n�|t3k� s~|dk� rt4|||�})|)dk� r�|� r�|� r�ddl }|j d@|j5ddA�t|j5�dAk� r�dBnd ft6|d d �|j7t8@r"|s"t9�q"|)\}}d}n|�dC|t|�d��|dk � rrz|�:|!�}Wn<tk � rp}*z|�|*j;t|!�d�d�W5d}*~*XYnX|� s�|t8@� o�|t8@ }+t,|||+|d�}|�d2�� s�|�d;|� �| ��|dk � r�|�<||�|t ||||ff�q"| d k� r|tt=f�q"| dDk� r|tt>f�q"tdE|f��q"t?t|��ddd%�D]N},||,\}-}.|-t k� r@|.\}}}}|dk� r@|� s@|� s@|||,|,d�<� q@|S)FNz|)�#rrr �[r<z"Possible nested set at position %dr�)� stacklevel�^zunterminated character set�]z-&~|zPossible set %s at position %d�-� difference�&� intersection�~zsymmetric difference�unionz&Possible set difference at position %dr`zbad character range %s-%s�?)rr<r�+r�r�r:�,z"the repetition number is too largez"min repeat greater than max repeatzunsupported quantifier %rr_znothing to repeatzmultiple repeat�.�(Tzunexpected end of pattern�P�<�>� group name�bad character in group name %r�=�)�unknown group name %rr2zunknown extension ?P�:zmissing ), unterminated commentz=!|t@rtd��|t@s,|tO}qf|t@rftd��n(|t@rNtd��|t@rf|t@rftd��|S)Nz)cannot use LOCALE flag with a str patternz(ASCII and UNICODE flags are incompatiblez,cannot use UNICODE flag with a bytes patternz'ASCII and LOCALE flags are incompatible)rIrC�SRE_FLAG_LOCALEr��SRE_FLAG_ASCII�SRE_FLAG_UNICODE)�srcrrrr� fix_flags�s   rNcCs�t|�}|dkrt�}||_||_zt|||t@d�}WnBtk rzt�}|tB|_||_|�d�t||dd�}YnXt||j j�|j _|j dk r�|� d��|t @r�|� �|S)NrTzunbalanced parenthesis)rorrrCr�r�rr�rr7rtr(�SRE_FLAG_DEBUGrG)rCrr7r3r/rrr�parse�s&    rc s�t|���j}g�g�g��j}�����fdd�}�j}|�}|dkrL�q�|ddk�r�|d}|dk�rJd}��d�s���d ����d d �}|��r�z ||} Wn tk r�t d |��YnXnlzt |�} | dkr�t �Wn0t k �r��d |t |�d�d�YnX| t k�r4��d| t |�d��|| t |�d��q�|dk�r��jtk�r�||�7}�jtk�r�||�7}|tt |dd�d�d@���q�|tk�rZd} �jtk�r4||�7}|tk�r4|dtk�r4�jtk�r4||�7}d} t |dd�d�}|dk�r(��d|t |���|t|��| �s�|t |dd��t |�d�nRztt|d�}Wn4tk �r�|tk�r���d|t |���YnX||�q:||�q:��rΈ�d����t|t��s�dd��D����fS)NcsX|�jkr��d||���r8��d�����dd�=��t��|f���d�dS)Nr�r:)r%r(r&�joinr$)rWr��r%�literal�literalsrr7rr�addgroup�s  z parse_template..addgrouprr r<�gr:r�z missing sz"parse_template..)ror)r&� groupindexrzr(r�r�r�rvr�r�r$r'rtr�r�r�r�r�rrIrC) r3r7�sget�lappendrrr{r�r*rW�isoctalrrr�parse_template�s�       ��   �     "   �  ��      rcCsv|j}|jdd�}|\}}|dd�}z"|D]\}}||�p@|||<q.Wn tk rjtd|��YnX|�|�S)Nrr�)r�rrrvr(r)�templaterzr�emptyr%rrWr�rrr�expand_templates  r")F)rN)=�__doc__� sre_constantsr�r�� frozensetr�r�r�r�r�r�r�rfr�r�rDr�r��CATEGORYrgr�r�r�ZAT_BEGINNING_STRINGZ AT_BOUNDARYZAT_NON_BOUNDARYZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZ CATEGORY_WORDZCATEGORY_NOT_WORDZ AT_END_STRINGr��SRE_FLAG_IGNORECASEr �SRE_FLAG_MULTILINE�SRE_FLAG_DOTALLr�r �SRE_FLAG_TEMPLATEr r�rrr � Exceptionrrr6ror�r�r�r�r�r�rrrr"rrrr� sr         �       �� #rH<M: r< U