§
    XŠtjì  ã                   ó†   — d Z ddlZddlmZ ddlmZ ddlmZ  ej        d¦  «        Z ed¦  «        Z	d„ Z
d„ Zd	„ Zdd„ZdS )a  
    pygments.regexopt
    ~~~~~~~~~~~~~~~~~

    An algorithm that generates optimized regexes for matching long lists of
    literal strings.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Úescape)Úgroupby)Ú
itemgetterz[\[\^\\\-\]]c                 ó¤   — | sdS t          | ¦  «        }t          | ¦  «        }t          |¦  «        D ]\  }}|||         k    r|d|…         c S Œ|S )zJGiven an iterable of strings, returns the longest common leading substringÚ N)ÚminÚmaxÚ	enumerate)ÚmÚs1Ús2ÚiÚcs        úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pygments/regexopt.pyÚcommonprefixr      sf   € àð ØˆrÝ	ˆQ‰Œ€BÝ	ˆQ‰Œ€BÝ˜"‘”ð ð ‰ˆˆ1Ø��1”Š:ˆ:Ø�b�q�b”6ˆMˆMˆMð à€Ió    c                 ól   — dt                                d„ d                     | ¦  «        ¦  «        z   dz   S )Nú[c                 ó0   — d|                       ¦   «         z   S )Nú\)Úgroup)r   s    r   ú<lambda>zmake_charset.<locals>.<lambda>"   s   € ¨°·²±	´	Ñ)9€ r   r   ú])Ú	CS_ESCAPEÚsubÚjoin)Úletterss    r   Úmake_charsetr   !   s0   € Ø•—’Ð9Ð9¸2¿7º7À7Ñ;KÔ;KÑLÔLÑLÈsÑRÐRr   c           	      ó  ‡	‡
‡— |rdpd}| sdS | d         Š	t          | ¦  «        dk    r|t          ‰	¦  «        z   |z   S ‰	s!|t          | dd…         d¦  «        z   dz   |z   S t          ‰	¦  «        dk    ršg }g }| D ]@}t          |¦  «        dk    r|                     |¦  «         Œ+|                     |¦  «         ŒAt          |¦  «        dk    r@|r)|t          |d¦  «        z   dz   t	          |¦  «        z   |z   S |t	          |¦  «        z   |z   S t          | ¦  «        }|rAt          |¦  «        Š
|t          |¦  «        z   t          ˆ
fd	„| D ¦   «         d¦  «        z   |z   S d
„ | D ¦   «         }t          |¦  «        }|rWt          |¦  «        Š|t          t          ˆfd„| D ¦   «         ¦  «        d¦  «        z   t          |ddd…         ¦  «        z   |z   S |d                     d„ t          | ˆ	fd„¦  «        D ¦   «         ¦  «        z   |z   S )zEReturn a regex that matches any string in the sorted list of strings.ú)r   r   é   Nz(?:ú?ú|c                 ó$   •— g | ]}|‰d …         ‘ŒS ©N© )Ú.0ÚsÚplens     €r   ú
<listcomp>z#regex_opt_inner.<locals>.<listcomp>J   s!   ø€ Ð9Ð9Ð9¨A˜q   œxÐ9Ð9Ð9r   c                 ó$   — g | ]}|d d d…         ‘ŒS )Néÿÿÿÿr&   )r'   r(   s     r   r*   z#regex_opt_inner.<locals>.<listcomp>M   s"   € Ð,Ð,Ð,˜q�1�T�T�r�T”7Ð,Ð,Ð,r   c              3   ó.   •K  — | ]}|d ‰ …         V — Œd S r%   r&   )r'   r(   Úslens     €r   ú	<genexpr>z"regex_opt_inner.<locals>.<genexpr>S   s-   øè è € Ð$@Ð$@°1 Q v¨¨ v¤YÐ$@Ð$@Ð$@Ð$@Ð$@Ð$@r   r,   c              3   ó\   K  — | ]'}t          t          |d          ¦  «        d¦  «        V — Œ(dS )r!   r   N)Úregex_opt_innerÚlist)r'   r   s     r   r/   z"regex_opt_inner.<locals>.<genexpr>X   sR   è è € ð Lð LØõ !¥ e¨A¤h¡¤°Ñ4Ô4ð Lð Lð Lð Lð Lð Lr   c                 ó(   •— | d         ‰d         k    S )Nr   r&   )r(   Úfirsts    €r   r   z!regex_opt_inner.<locals>.<lambda>Y   s   ø€ ¸¸1¼ÀÀqÄÒ9I€ r   )	Úlenr   r1   Úappendr   r   Úsortedr   r   )ÚstringsÚ
open_parenÚclose_parenÚ	oneletterÚrestr(   ÚprefixÚstrings_revÚsuffixr4   r)   r.   s            @@@r   r1   r1   %   s¤  øøø€ àÐ$ Ð*¨€Kàð àˆrØ�AŒJ€EÝ
ˆ7�|„|�qÒÐà�F 5™MœMÑ)¨KÑ7Ð7Øð  à�O¨G°A°B°B¬K¸Ñ?Ô?Ñ?ØñØñ ð 	 å
ˆ5�z„z�Q‚€àˆ	ØˆØð 	ð 	ˆAÝ�1‰vŒv˜Š{ˆ{Ø× Ò  Ñ#Ô#Ð#Ð#à—’˜A‘”��Ýˆy‰>Œ>˜AÒÐØð <à!¥O°D¸"Ñ$=Ô$=Ñ=ÀÑCÝ" 9Ñ-Ô-ñ.Ø0;ñ<ð <ð ¥¨YÑ 7Ô 7Ñ7¸+ÑEÐEÝ˜'Ñ"Ô"€FØð Ý�6‰{Œ{ˆð �F 6™NœNÑ*ÝÐ9Ð9Ð9Ð9°Ð9Ñ9Ô9¸5ÑAÔAñBàñð 	ð -Ð, GÐ,Ñ,Ô,€KÝ˜+Ñ&Ô&€FØð 1Ý�6‰{Œ{ˆàÝ�fÐ$@Ð$@Ð$@Ð$@¸Ð$@Ñ$@Ô$@Ñ@Ô@À%ÑHÔHñIå�V˜D˜D˜b˜D”\Ñ"Ô"ñ#à%0ñ1ð 	1ð
 Ø�Šð Lð LÝ% gÐ/IÐ/IÐ/IÐ/IÑJÔJðLñ Lô Lñ 	Lô 	LñLð ñð r   r   c                 óL   — t          | ¦  «        } |t          | d¦  «        z   |z   S )zíReturn a compiled regex that matches any string in the given list.

    The strings to match must be literal strings, not regexes.  They will be
    regex-escaped.

    *prefix* and *suffix* are pre- and appended to the final regex.
    ú()r7   r1   )r8   r=   r?   s      r   Ú	regex_optrB   ]   s)   € õ �W‰oŒo€GØ•O G¨SÑ1Ô1Ñ1°FÑ:Ð:r   )r   r   )Ú__doc__Úrer   Ú	itertoolsr   Úoperatorr   Úcompiler   ÚFIRST_ELEMENTr   r   r1   rB   r&   r   r   ú<module>rI      s½   ðð	ð 	ð 
€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àˆBŒJ�Ñ'Ô'€	Ø�
˜1‘”€ð	ð 	ð 	ðSð Sð Sð5ð 5ð 5ðp	;ð 	;ð 	;ð 	;ð 	;ð 	;r   