Ë
    æØjjì  ã                   ó‚   — 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y)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yt        | «      }t        | «      }t        |«      D ]  \  }}|||   k7  sŒ|d| c S  |S )zJGiven an iterable of strings, returns the longest common leading substringÚ N)ÚminÚmaxÚ	enumerate)ÚmÚs1Ús2ÚiÚcs        úS/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pygments/regexopt.pyÚcommonprefixr      sN   € áØÜ	ˆQ‹€BÜ	ˆQ‹€BÜ˜"“ò ‰ˆˆ1Ø��1‘‹:Ø�b�q�6ŠMðð €Ió    c                 óZ   — dt         j                  d„ dj                  | «      «      z   dz   S )Nú[c                 ó(   — d| j                  «       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   !   s'   € Ø”—‘Ñ9¸2¿7¹7À7Ó;KÓLÑLÈsÑRÐRr   c           	      ór  ‡
‡— |xr dxs d}| sy| 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 ]3  }t        |«      dk(  r|j                  |«       Œ#|j                  |«       Œ5 t        |«      dkD  r4|r!|t        |d«      z   dz   t	        |«      z   |z   S |t	        |«      z   |z   S t        | «      }|r:t        |«      }|t        |«      z   t        | D �cg c]  }||d ‘Œ	 c}d«      z   |z   S | D �cg c]
  }|ddd	…   ‘Œ }}t        |«      }	|	rAt        |	«      Š|t        t        ˆfd
„| D «       «      d«      z   t        |	ddd	…   «      z   |z   S |dj                  d„ t        | ˆ
fd„«      D «       «      z   |z   S c c}w c c}w )zEReturn a regex that matches any string in the sorted list of strings.ú)r   r   é   Nz(?:ú?ú|éÿÿÿÿc              3   ó*   •K  — | ]
  }|d ‰  –— Œ y ­w)N© )Ú.0ÚsÚslens     €r   ú	<genexpr>z"regex_opt_inner.<locals>.<genexpr>S   s   øè ø€ Ò$@°1 Q v¨¨¤YÑ$@ùs   ƒc              3   óL   K  — | ]  }t        t        |d    «      d«      –— Œ y­w)r!   r   N)Úregex_opt_innerÚlist)r'   r   s     r   r*   z"regex_opt_inner.<locals>.<genexpr>X   s)   è ø€ ò LØô !¤ e¨A¡h£°×4ñ Lùs   ‚"$c                 ó   •— | d   ‰d   k(  S )Nr   r&   )r(   Úfirsts    €r   r   z!regex_opt_inner.<locals>.<lambda>Y   s   ø€ ¸¸1¹ÀÀqÁÑ9I€ r   )	Úlenr   r,   Úappendr   r   Úsortedr   r   )ÚstringsÚ
open_parenÚclose_parenÚ	oneletterÚrestr(   ÚprefixÚplenÚstrings_revÚsuffixr/   r)   s             @@r   r,   r,   %   s  ù€ àÒ$ Ò*¨€KáàØ�A‰J€EÜ
ˆ7ƒ|�qÒàœF 5›MÑ)¨KÑ7Ð7ÙàœO¨G°A°B¨K¸Ó?Ñ?ØñØñ ð 	 ä
ˆ5ƒz�Q‚àˆ	ØˆØò 	ˆAÜ�1‹v˜Š{Ø× Ñ  Õ#à—‘˜A•ð		ô
 ˆy‹>˜AÒÙà!¤O°D¸"Ó$=Ñ=ÀÑCÜ" 9Ó-ñ.Ø0;ñ<ð <ð ¤¨YÓ 7Ñ7¸+ÑEÐEÜ˜'Ó"€FÙÜ�6‹{ˆð œF 6›NÑ*Ü°Ö9¨A˜q  šxÒ9¸5ÓAñBàñð 	ð %,Ö,˜q�1‘T�r�T“7Ð,€KÐ,Ü˜+Ó&€FÙÜ�6‹{ˆàÜœfÓ$@¸Ô$@Ó@À%ÓHñIä�V™D˜b˜D‘\Ó"ñ#à%0ñ1ð 	1ð
 Ø�‰ñ LÜ% gÓ/IÓJôLó 	LñLð ñð ùò :ùò -s   ÄF/
Ä%F4c                 ó<   — 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.
    ú()r2   r,   )r3   r8   r;   s      r   Ú	regex_optr>   ]   s$   € ô �W‹o€GØ”O G¨SÓ1Ñ1°FÑ:Ð:r   )r   r   )Ú__doc__Úrer   Ú	itertoolsr   Úoperatorr   Úcompiler   ÚFIRST_ELEMENTr   r   r,   r>   r&   r   r   ú<module>rE      sG   ðñ	ó 
Ý Ý Ý àˆB�J‰J�Ó'€	Ù˜1“€ò	òSò5ôp	;r   