U e5dGh�@sdZddlZddlZddlTeehZeee hZ e e hZ eehZeeehBZdZdd�eD�Zejfdd�Zd d �Zd d �Zd,d d�ZejdZde>dZdZeefdd�Z dd�Z!dd�Z"dd�Z#dd�Z$dd�Z%dd�Z&d d!�Z'd"d#�Z(d$d%�Z)d&d'�Z*d(d)�Z+d-d*d+�Z,dS).zInternal support module for sre�N)�*))�ii1)�si)�i�)iEi�i�)i�i�)i�i�)i�i�)i�i�)i�i�)i�i�)i�i�)i�i�)i�i�)i�i�)iai�)i�i�cs.i|]&}|D]��t�fdd�|D���q qS)c3s|]}�|kr|VqdS�N�)�.0�j��ir�#/usr/lib64/python3.8/sre_compile.py� >sz.)�tuple)r�trr r � >s �rcCs ||@r||M}||B|@Srr)�flags� add_flags� del_flags� TYPE_FLAGSrrr �_combine_flagsAs rcCs�|j}t}t}t}t}t}d} d} d} |t@r\|t@s\|t@rPt j } t j } t } n t j } t j} |D�]|\} } | |k�rr|t@s�|| �|| �n�|t@r�|t| �|| �n�| | �s�|| �|| �n�| | �}| s�|t| �||�n�|| k�r|t| �||�nh|t�||�}|d�| tk�r2|t�|f| |D]}|t�||��q@|t�||�|||<q`| tk�rt| | | | �\}}|t@�r�|t@�r�|t�n(|�s�|t�n| �s�|t�n|t�||�}|d�t|||�||�|||<q`| tk�r*|t@�r |t�n|t�q`| |k�r6|t@�rLt d| f��t!| d��r�| t"k�rn|t#�n|t$�||�}|d�|| d�|| d�t%|| d|�|t&�||�|||<nl|t'�||�}|d�|| d�|| d�t%|| d|�||�|||<| t"k�r,|t(�n|t)�q`| t*k�r�| \}}}}|�rj|t+�||dd�t%||t,|||��|�r�|t+�||ddd�q`| |k�r�|| �q`| |k�rD|| �||�}|d�| ddk�r�|d�n*| d�-�\}}||k�rt d��||�t%|| d|�|t&�||�|||<q`| t.k�r�|| �||�}|d�t%|| |�|t&�||�|||<q`| t/k�r�|| �|t0@�r�t1�2| | �} |t@�r�t3�2| | �} n|t@�r�t4�2| | �} || �q`| t5k�r�|| �g}|j}| dD]N} ||�}|d�t%|| |�|t6�|||��|d�||�|||<�q|t�|D]}||�|||<�qlq`| t7k�r�|| �|t@�r�t8| } n|t@�r�t9| } || �q`| t:k�r |t@�s�|| �n,|t@�r�|t;�n| �s |t<�n|t=�|| d�q`| t>k�r�|| �|| dd�||�}|d�t%|| d|�| d�r�|t6�||�}|d�||�|d||<t%|| d|�||�|||<n||�|d||<q`t d| f��q`dS)Nrz*internal: unsupported template operator %r��z(look-behind requires fixed-width patternz%internal: unsupported operand type %r)?�append�len�_LITERAL_CODES�_REPEATING_CODES�_SUCCESS_CODES� _ASSERT_CODES�SRE_FLAG_IGNORECASE�SRE_FLAG_LOCALE�SRE_FLAG_UNICODE�_sre�unicode_iscased�unicode_tolower�_ignorecase_fixes� 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� MAX_REPEAT� REPEAT_ONE�MIN_REPEAT_ONE�_compile�SUCCESS�REPEAT� MAX_UNTIL� MIN_UNTIL� SUBPATTERN�MARKr�getwidth�CALL�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�grouprr�p�hi�tail� tailappend�skipyes�skipnorrr r=GsV                                                                 r=cCs�|j}|D]�\}}||�|tkr$q |tkr6||�q |tksF|tkr`||d�||d�q |tkrt|�|�q |tkr�|�|�q |tkr�|t @r�|t |�q�|t @r�|t |�q�||�q t d|f��q |t�dS)Nrrz%internal: unsupported set operator %r)rr,r-�RANGE�RANGE_UNI_IGNORE�CHARSET�extend� BIGCHARSETrNrrOr rPr8r.)rfrrVrXrarbrrr r3�s,      r3c Cs�g}g}td�}d}|D�]�\}} �z,|tkr�|rv|| �} d|| <|rd| |krd|| D] } d|| <qV|s~|| �r~d}nd|| <n�|tk�r&t| d| dd�} |�r|r�t|| �D]*} d|| <| |kr�|| D] } d|| <q�q�nt|| �D] } d|| <q�|�s$tt|| ��}n| D]} d|| <�qn(|tk�r@|�|| f�n|�|| f�WnZtk �r�t |�dk�r�|dd7}Yq"|�r�d}|tk�r�t }|�|| f�YnXqq"qg}d}|� d|�}|dk�rԐq(t |�dk�r�d}�q(|� d|�}|dk�r|�|t |�f��q(|�||f��q�|dk �r�|D]>\}}||dk�r\|�t|f�n|�t||dff��q6||7}|�s�t |�t |�k�r�||fS||fSt |�dk�r�t |�}|�t |f�||7}||fSt|�}i}td�}d}t�}tdd d�D]V} || | d�}||k�r4|||| d<n$||| d<||<|d7}||7}�qt |�}|gt|�|dd�<|�t|f�||7}||fS) N�FrTr�i�ri)� bytearrayr-ro�range�map�anyr,r� IndexErrorrrp�find� _mk_bitmaprq�bytes�_bytes_to_codesrs)rfr^�fixupr`�outrk�charmaprgrarbrcre�rr �runs�qri�data�comps�mapping�block�chunkrrr r0s�                   r0�rs0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111cs8|�t�ddd�����fdd�tt��d� �D�S)N�����cs"g|]}��|�|�d��qS)rr)rr �� _CODEBITS�_int�srr � �s�z_mk_bitmap..r)� translate� _BITS_TRANSrwr)�bitsr�r�rr�r r|�s�r|cCst|��d�}|��S)N�I)� memoryview�cast�tolist)�b�arrr r~�sr~cCsDt|�dkrdS|d\}}|tkr<|ddko:t|d�S|tkS)NrFrr�)rrBr9� _UNIT_CODES)rirarbrrr r9�s   r9cCsndgt|�}tdt|��D]L}||d}||||kr\|dkrNd||<q||d}q,|d||<q|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] rr)rrw)�prefix�tabler �idxrrr �_generate_overlap_table�s  r�cCs$|t@s dS|t@rtjStjSdSr)rr r!r"r%)rrrr � _get_iscased�s r�cCs�g}|j}d}t|�}|jD]�\}}|tkrF|r<||�r<q�||�q|tkr�|\}} } } t|| | �} | t@rz| t@rzq�t| | �\} }}|dkr�|dk r�t |�}n|dk r�t |�|}|� | �|s�q�qq�q||dfS||dfS)NTF) rr�r�r-rBrrr�_get_literal_prefixrrr)rWrr�� prefixappend� prefix_skipr^rarbrhrrri�flags1�prefix1� prefix_skip1�got_allrrr r��s4        r�c Csd|js dS|jd\}}|tk r"qP|\}}}}t|||�}|t@r|t@rdSqt|�}|tkrz|rp||�rpdS||fgS|tkr�g}|j} |dD]B} | s�dS| d\}}|tkr�|r�||�s�| ||f�q�dSq�|S|t k�r`|}|�r\|D]f\}}|tk�r||��rZdSq�|t kr�|ddk�r4dSt t |t |d|dd���r�dSq�|SdS)Nrri��)r�rBrrrr�r-rLrr/roryrxrw) rWrrarbrhrrr^rf� charsetappendrirrr �_get_charset_prefix�sN           r�c Csr|��\}}|tkrt}|dkr8|�tdd||g�dSg}d}g}|t@rT|t@srt||�\}}}|srt||�}|j} | t�t |�} | d�d} |r�t } |dkr�|r�| t B} n |r�| t B} | | �|tkr�| |�n| t�|dt�}| t |t��|�r@| t |��|dk�rt |�}| |�|�|�|�t|��n|�r^t|�\}} t|||�t |�| || <dS)Nr�)rD�MAXCODErr�INFOrrr�r�rr�SRE_INFO_PREFIX�SRE_INFO_LITERAL�SRE_INFO_CHARSET�minr�r0r3) rVrWrrcrjr�r�rfr�rXrd�maskrgrrr � _compile_infosR           r�cCst|ttf�Sr)� isinstance�strr})�objrrr �isstringSsr�cCs8|jj|B}g}t|||�t||j|�|�t�|Sr)�staterr�r=r�rr>)rirrVrrr �_codeVs    r�cCsdd�dd�|D��S)N�[%s]�, css$|]}dtjdd|fVqdS)z%#0*xrN)r!�CODESIZE�r�xrrr r fsz_hex_code..)�join�rVrrr � _hex_codeesr�csNddl�t��d�ttt��d���������fdd���dt���dS)Nrrc s�dd�����fdd� }��fdd�}�d7��}||k�r�|��|}|d7}t|}|tttttttfkrx||�q2|tt t t t t ttfkr��|}|d7}||d|t|�f�q2|tkr��|}|d7}tt|�}|||dd��q2|tk�r*�|}|d7}tt|�}|||d d��q2|ttttfk�rr�|}|||||d��|d||�||7}q2|ttfk�r��||d �\}} |d 7}||d || t|�t| �f�q2|tk�r�||t�||d t���|d t7}q2|tk�r��|}|d7}t d �!�fdd��||d t"j#�D���} |||| �|d t"j#7}�d7�t$|�D].} |t�||d t���|d t7}�qd�d8�q2|t%t&t't(t)fk�rΈ|}|d7}|||�q2|t*k�r��|}|||||d�|d7}q2|t+k�r|�|}|||||d�|�rr�|d||�||7}|��|}|�rf|d|||d�n|t��q |d7}q2|t,t-t.fk�r�||d�\}} } | t/k�r�d} |||| | ||d��|d||�||7}q2|t0k�r�||d �\}}||||||d�|d 7}q2|t1t2fk�rp�||d �\}}||||||d��|d ||�||7}q2|t3k�r��||d�\}}} } | t/k�r�d} |||t4|�| | ||d�|d�|t5@�r^�|d|d�\}}|d|�|d����|�}|ddd�!dd�|D��dd�!t6t|����|7�|d���|���|7�|t7@�r��d7�|d���||��d8�||7}q2t8|��q2�d8�dS)N)�tocsX|dk r"��|�|d|ff7}td����kr6dndfd�dd�t|�dS)Nz(to %d)z%*d%s �:�.z r��end)�add�print)r��args)�labels�level� offset_width�startrr �print_ps  �z!dis..dis_..print_cs"td�d�d�t|�dS)N� rr�)r�)r�)r�r�rr �print_2xsz"dis..dis_..print_2rz %#02x (%r)�� rz%#02x %#02x (%r-%r)rt�c3s|]}|�tj�j�VqdSr)�to_bytesr!r�� byteorderr�)�sysrr r �s�z$dis..dis_..�branch� MAXREPEATr��z prefix_skipz prefixr�r�css|]}d|VqdS)z%#02xNrr�rrr r �sz(%r)�z overlap�in)9�OPCODESr>r.r4r6r@rAr,r-r+�LITERAL_IGNORE�NOT_LITERAL_IGNORE�LITERAL_UNI_IGNORE�NOT_LITERAL_UNI_IGNORE�LITERAL_LOC_IGNORE�NOT_LITERAL_LOC_IGNORE�chrrFr��ATCODESrN�CHCODESr/r2r*r1rorprqr�r�rs�listr�r!r�rwrCrQrSrTrRrMrLr?r;r<r�rU�ASSERT� ASSERT_NOTr��binr�rxr�� ValueError)r�r�r�r�r ra�argrdrcrjr�r r��maxr� prefix_lenr�r��rV�dis_r�r�r�r�)r�r r�os�  � �       �     �               �   zdis..dis_)r��setrr�r�rr�r �dishsr�c Cs�t|�r|}t�||�}nd}t||�}|t@r>t�t|�|jj}dg|jj }|� �D]\}}|||<q\t � |||jj B||jj d|t|��S)Nr)r�� sre_parse�parser��SRE_FLAG_DEBUGr�r�r�� groupdict�groups�itemsr!�compilerr)rirrWrV� groupindex� indexgrouprer rrr r��s(    �r�)NNN)r)-�__doc__r!r�� sre_constantsr-r+rr?� MIN_REPEATr:rr>r.rr�r�rr4r/r�� _equivalencesr$rrr=r3r0r�r�r�r��intr|r~r9r�r�r�r�r�r�r�r�r�r�rrrr � sH  $�� 3    ,;