Ë
    Æªb‚  ã                   ó.  — d Z ddlmZ ddlZ eg d¢ed¬«      Zddd	d
ddœZ ej                  dej                  «      Z
 ej                  dej                  «      Z ej                  d«      Z ej                  dej                  «      Z ej                  d«      Z ej                  dej                   z   «      Z ej                  d«      Z edd«      Zd ej                  dej                  «      fd ej                  d«      fd ej                  d«      fd ej                  dej                  ej                  z  «      fdefde
fd ej                  dej(                  «      fd  ej                  d!ej*                  «      fd" ej                  d#d$j-                   eej0                  e«      «      z  «      fd% ej                  d&ej                  «      fd' ej                  d(ej(                  ej                  z  «      fgZd)„ Zd*„ Zd+„ Zd-d,„Zy).zí
    babel.messages.jslexer
    ~~~~~~~~~~~~~~~~~~~~~~

    A simple JavaScript 1.5 lexer which is used for the JavaScript
    extractor.

    :copyright: (c) 2013-2022 by the Babel Team.
    :license: BSD, see LICENSE for more details.
é    )Ú
namedtupleN)+ú+ú-Ú*ú%z!=z==ú<ú>z<=z>=ú=z+=z-=z*=z%=z<<z>>z>>>z<<=z>>=z>>>=ú&z&=ú|z|=z&&z||ú^z^=ú(ú)ú[ú]ú{ú}ú!ú--ú++ú~ú,ú;ú.ú:T)ÚkeyÚreverseúúú
úú	)ÚbÚfÚnÚrÚtz[\w$_][\w\d$_]*z[\w$_][\w\d$_.]*[\w\d$_.]z/=?z%/(?:[^/\\]*(?:\\.[^/\\]*)*)/[a-zA-Z]*z(\r\n|\n|\r)z\\z[a-fA-F0-9]{1,4}ÚTokenztype value linenoz\s+z<!--.*Úlinecommentz//.*Úmultilinecommentz	/\*.*?\*/Údotted_nameÚnameÚnumberzb(
        (?:0|[1-9]\d*)
        (\.\d+)?
        ([eE][-+]?\d+)? |
        (0x[a-fA-F0-9]+)
    )Újsx_tagz(?:</?[^>\s]+|/>)Úoperatorz(%s)r   Útemplate_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`ÚstringzT(
        '(?:[^'\\]*(?:\\.[^'\\]*)*)'  |
        "(?:[^"\\]*(?:\\.[^"\\]*)*)"
    )c                 ó‚   — g }t         D ]3  \  }}| s|rd|v rŒ|s|dk(  rŒ|dk(  r|sŒd}|j                  ||f«       Œ5 |S )ze
    Get a tokenization rule list given the passed syntax options.

    Internal to this module.
    Újsxr0   r+   r,   )Ú_rulesÚappend)r3   Údottedr0   ÚrulesÚ
token_typeÚrules         ú8/usr/lib/python3/dist-packages/babel/messages/jslexer.pyÚ	get_rulesr;   8   se   € ð €EÜ"ò 	)Ñˆ
�DÙ‘z e¨zÑ&9ØÙ :Ð1BÒ#BØØ˜Ò&ÙØØˆJØ�‰�j $Ð'Õ(ð	)ð €Ló    c                 óX   — | j                   dk(  r| j                  dv S | j                   dv S )zzA helper function that helps the tokenizer to decide if the current
    token may be followed by a division operator.
    r/   )r   r   r   r   r   )r,   r-   r1   Úregexp)ÚtypeÚvalue)Útokens    r:   Úindicates_divisionrB   L   s0   € ð ‡z�z�ZÒØ�{‰{Ð9Ð9Ð9Ø�:‰:Ð?Ð?Ð?r<   c                 ó¨  — | r| d   | d   k(  r| d   dv sJ d«       ‚t         j                  d| dd «      } g }|j                  }d}	 | j                  d|«      }|dk  rn½ || || «       | |dz      }|t        v r |t        |   «       nŒ|dv r€t
        j                  | |d	z   «      }|�\|j                  «       }t        |«      dk(  r"	  |t        t        |d«      «      «       |dz   }Œ£ |||z   «       |j                  «       }Œ¿ ||«       n ||«       |d	z   }ŒÕ|t        | «      k  r || |d
 «       dj                  |«      S # t        $ r Y Œhw xY w)z¥Unquote a string with JavaScript rules.  The string has to start with
    string delimiters (``'``, ``"`` or the back-tick/grave accent (for template strings).)
    r   éÿÿÿÿz"'`z)string provided is not properly delimitedz\1é   ú\ÚuUé   Né   é   é   Ú )Úline_join_reÚsubr5   ÚfindÚescapesÚuni_escape_reÚmatchÚgroupÚlenÚchrÚintÚ
ValueErrorÚendÚjoin)r1   ÚresultÚaddÚposÚ
escape_posÚ	next_charÚescapedÚescaped_values           r:   Úunquote_stringra   U   sŒ  € ñ �f˜Q‘i 6¨"¡:Ò-°&¸±)¸vÑ2Eð 4Ø3ó4ÐEä×Ñ˜e V¨A¨b \Ó2€FØ€FØ
�-‰-€CØ
€Cà
à—[‘[  sÓ+ˆ
Ø˜Š>ØÙˆF�3�zÐ"Ô#ð ˜:¨™>Ñ*ˆ	ØœÑÙ”˜	Ñ"Õ#ð ˜$ÑÜ#×)Ñ)¨&°*¸q±.ÓAˆGØÐ"Ø '§¡£�Ü�}Ó%¨Ò*ð!ÙœC¤ M°2Ó 6Ó7Ô8ð )¨1™n˜Ø Ù�I Ñ-Ô.Ø—k‘k“m�Øá�I•ñ �	ŒNØ˜1‰nˆðK ðN ŒS�‹[ÒÙˆF�3�4ˆLÔà�8‰8�FÓÐøô' &ò Ùðús   ÃE Å	EÅEc              #   óÖ  K  — d}d}d}t        | «      }t        |||¬«      }||k  rÁ|D ]  \  }	}
|
j                  | |«      }|€Œ n< |rt        j                  | |«      }d}	nt        j                  | |«      }d}	|€|dz  }Œ`|j                  «       }|	�t        |	||«      }t        |«      }|–— |t        t        j                  |«      «      z  }|j                  «       }||k  rŒÀyy­w)zì
    Tokenize JavaScript/JSX source.  Returns a generator of tokens.

    :param jsx: Enable (limited) JSX parsing.
    :param dotted: Read dotted names as single name token.
    :param template_string: Support ES6 template strings
    Fr   rE   )r3   r6   r0   Nr/   r>   )rT   r;   rR   Údivision_reÚregex_rerS   r(   rB   Úline_reÚfindallrX   )Úsourcer3   r6   r0   Ú
may_divider\   ÚlinenorX   r7   r8   r9   rR   Útoken_valuerA   s                 r:   Útokenizerk   �   sþ   è ø€ ð €JØ
€CØ€FÜ
ˆf‹+€CÜ˜# f¸oÔN€Eà
�Š)à %ò 	ÑˆJ˜Ø—J‘J˜v sÓ+ˆEØÑ Ùð	ñ Ü#×)Ñ)¨&°#Ó6�Ø'‘
ä Ÿ™ v¨sÓ3�Ø%�
Øˆ}à�q‘�Øà—k‘k“mˆØÐ!Ü˜* k°6Ó:ˆEÜ+¨EÓ2ˆJØŠKØ”#”g—o‘o kÓ2Ó3Ñ3ˆØ�i‰i‹kˆð9 ��)ùs   ‚AC)ÁB"C)Ã'C))TTT)Ú__doc__Úcollectionsr   ÚreÚsortedrT   Ú	operatorsrP   ÚcompileÚUNICODEÚname_reÚdotted_name_rerc   ÚDOTALLrd   re   ÚpatternrM   rQ   r(   ÚVERBOSEÚIrY   ÚmapÚescaper4   r;   rB   ra   rk   © r<   r:   ú<module>r|      s  ðñ	õ #Û 	áò ð
 �Dô€	ð ˜4 d°¸DÑ
A€à
ˆ"�*‰*Ð'¨¯©Ó
4€Ø�—‘Ð8¸"¿*¹*ÓE€Øˆb�j‰j˜Ó €Øˆ2�:‰:Ð>ÀÇ	Á	ÓJ€Ø
ˆ"�*‰*�_Ó
%€Øˆr�z‰z˜% '§/¡/Ñ1Ó2€Ø�—
‘
Ð.Ó/€á�7Ð/Ó0€ð 
ˆ:ˆ2�:‰:�f˜bŸj™jÓ)Ð*Ø	ˆ:ˆ2�:‰:�iÓ Ð!Ø�J�B—J‘J˜wÓ'Ð(Ø˜˜Ÿ™ L°"·*±*¸r¿y¹yÑ2HÓIÐJØ�NÐ#ØˆWÐØˆzˆr�z‰zð 	ð
 �*‰*óð ð �
�—
‘
Ð/°·±Ó6Ð7Ø��—‘˜G c§h¡h©s°2·9±9¸iÓ/HÓ&IÑIÓJÐKØ˜
˜Ÿ
™
Ð#FÈÏ
É
ÓSÐTØˆzˆr�z‰zð 	ð �*‰*�r—y‘yÑ
 ó"ð #ð!
€ò.ò(@ò5ôp*r<   