+
    *:žg'  ã                  ó€  a € 0 t $ R t^ RIHt ^ RIt^ RIHt ^ RIHt ]	! . RNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/N]
R0R17      tR2]R3&   R4R5R6R7R8R9R:R;R<R=/tR>]R?&   ]P                  ! R@]P                  4      t]P                  ! RA]P                  4      t]P                  ! RB4      t]P                  ! RC]P&                  4      t]P                  ! RD4      t]P                  ! RE]P,                  ,           4      t]P                  ! RF4      t]P                  ! RG4      t ! RH RI]4      tR]P                  ! RJ]P                  4      3R]P                  ! RK4      3RL]P                  ! RM4      3RN]P                  ! RO]P                  ]P&                  ,          4      3RP]3RQ]3RR]P                  ! RS]P6                  4      3RT]P                  ! RU]P8                  4      3RV]P                  ! RWRP;                  ]! ]P>                  ]4      4      ,          4      3RX]P                  ! RY]P                  4      3RZ]P                  ! R[]P6                  ]P&                  ,          4      3.t R\]R]&   R^ R_ lt!R` Ra lt"Rb Rc lt#RfRd Re llt$R# )gzÕ
babel.messages.jslexer
~~~~~~~~~~~~~~~~~~~~~~

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

:copyright: (c) 2013-2025 by the Babel Team.
:license: BSD, see LICENSE for more details.
)ÚannotationsN)Ú	Generator)Ú
NamedTupleÚ+Ú-Ú*Ú%z!=z==Ú<Ú>z<=z>=Ú=z+=z-=z*=z%=z<<z>>z>>>z<<=z>>=z>>>=Ú&z&=Ú|z|=z&&z||Ú^z^=Ú(Ú)Ú[Ú]Ú{Ú}Ú!ú--ú++Ú~Ú,Ú;Ú.Ú:T)ÚkeyÚreversez	list[str]Ú	operatorsÚbÚÚfÚÚnÚ
ÚrÚÚtÚ	zdict[str, str]Úescapesz[\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}z[a-fA-F0-9]{1,2}c                  ó6   € ] tR t^$t$ R]R&   R]R&   R]R&   RtR# )ÚTokenÚstrÚtypeÚvalueÚintÚlineno© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r2   ó    Ú8/usr/lib/python3/dist-packages/babel/messages/jslexer.pyr,   r,   $   s   ‡ Ø
ƒIØƒJØ‡Kr9   r,   z\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)Útemplate_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`ÚstringzT(
        '(?:[^'\\]*(?:\\.[^'\\]*)*)'  |
        "(?:[^"\\]*(?:\\.[^"\\]*)*)"
    )ú(list[tuple[str | None, re.Pattern[str]]]Ú_rulesc               ó(   € V ^8„  d   QhRRRRRRRR/# )é   ÚjsxÚboolÚdottedrB   ÚreturnrD   r2   )Úformats   "r:   Ú__annotate__rM   A   s)   € ÷ ñ �4ð  ð ¸ð ÐAiñ r9   c                óÆ   € . p\          FT  w  rEV '       g   V'       d
   RV9   d   K  V'       g
   VR8X  d   K/  VR8X  d   V'       g   K@  RpVP                  WE34       KV  	  V# )zY
Get a tokenization rule list given the passed syntax options.

Internal to this module.
rH   rB   r=   r>   )rE   Úappend)rH   rJ   rB   ÚrulesÚ
token_typeÚrules   &&&   r:   Ú	get_rulesrS   A   s\   € ð €Eß"Ñˆ
ß—z e¨zÔ&9Ùß :Ð1BÔ#BÙØ˜Ô&ßÙØˆJØ�‰�jÐ'Ö(ñ #ð €Lr9   c               ó    € V ^8„  d   QhRRRR/# )rG   Útokenr,   rK   rI   r2   )rL   s   "r:   rM   rM   U   s   € ÷ @ñ @˜eð @¨ñ @r9   c                ó`   € V P                   R8X  d   V P                  R9   # V P                   R9   # )zrA helper function that helps the tokenizer to decide if the current
token may be followed by a division operator.
rA   )r   r   r   r   r   )r>   r?   rC   Úregexp)r.   r/   )rU   s   &r:   Úindicates_divisionrX   U   s0   € ð ‡z�z�ZÔØ�{‰{Ð9Ñ9Ð9Ø�:‰:Ð?Ñ?Ð?r9   c               ó    € V ^8„  d   QhRRRR/# )rG   rC   r-   rK   r2   )rL   s   "r:   rM   rM   ^   s   € ÷ @ñ @˜3ð @ 3ñ @r9   c                ó  € V '       d$   V ^ ,          V R	,          8X  d   V ^ ,          R9   g   Q R4       h\         P                  RV ^R	 4      p . pVP                  p^ p V P                  RV4      pV^ 8  d   EM[V! WV 4       W^,           ,          pV\        9   d   V! \        V,          4       EMVR9   d‘   \
        P                  W^,           4      pVeh   VP                  4       p\        V4      ^8X  d(    V! \        \        V^4      4      4       V^,           pKÃ  V! WW,           4       VP                  4       pKã  V! V4       MVR9   dq   \        P                  W^,           4      pVeH   VP                  4       pV! \        \        V^4      4      4       V^,           \        V4      ,           pEKZ  V! V4       MV! V4       V^,           pEKw  V\        V 4      8  d   V! WR 4       RP                  V4      #   \         d     Lìi ; i)
z�Unquote a string with JavaScript rules.  The string has to start with
string delimiters (``'``, ``"`` or the back-tick/grave accent (for template strings).)
z"'`z)string provided is not properly delimitedz\1Ú\ÚuUNÚxXÚ éÿÿÿÿ)Úline_join_reÚsubrO   Úfindr*   Úuni_escape_reÚmatchÚgroupÚlenÚchrr0   Ú
ValueErrorÚendÚhex_escape_reÚjoin)rC   ÚresultÚaddÚposÚ
escape_posÚ	next_charÚescapedÚescaped_values   &       r:   Úunquote_stringrs   ^   sØ  € ÷ �f˜Q•i 6¨"¥:Ô-°&¸µ)¸vÔ2Eð 4Ø3ó4ÐEä×Ñ˜e V¨A¨b \Ó2€FØ€FØ
�-‰-€CØ
€Cà
à—[‘[  sÓ+ˆ
Ø˜Œ>ÙÙˆF�zÐ"Ô#ð ¨�>Õ*ˆ	ØœÔÙ”˜	Õ"Ö#ð ˜$ÔÜ#×)Ñ)¨&¸qµ.ÓAˆGØÒ"Ø '§¡£�Ü�}Ó%¨Ô*ð!ÙœC¤ M°2Ó 6Ó7Ô8ð )¨1�n˜Ù Ù�IÕ-Ô.Ø—k‘k“m�Ùá�I•ð ˜$ÔÜ#×)Ñ)¨&¸qµ.ÓAˆGØÒ"Ø '§¡£�Ù”Cœ˜M¨2Ó.Ó/Ô0Ø  1•n¤s¨=Ó'9Õ9�Úá�I•ñ �	ŒNØ˜1�n‹à
ŒS�‹[ÔÙˆF�4ˆLÔà�7‰7�6‹?Ðøô= &ô Ùðús   Ã9G> Ç>HÈHc               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )rG   Úsourcer-   rH   rI   rJ   rB   r1   r0   rK   zGenerator[Token, None, None]r2   )rL   s   "r:   rM   rM   ¡   s=   € ÷ +ñ +�Sð +˜tð +°Dð +ÐRVð +Ðgjð +ð  tPñ +r9   c              #  óî  "  € Rp^ p\        V 4      p\        WVR7      pWg8  dÏ   V F  w  ršV
P                  W4      pVf   K   MH	  V'       d   \        P                  W4      pRp	M\        P                  W4      pRp	Vf   V^,          pKn  VP                  4       pV	e   \        WœV4      p\        V4      pVx € V\        \        P                  V4      4      ,          pVP                  4       pKÔ  R# 5i)a9  
Tokenize JavaScript/JSX source.  Returns a generator of tokens.

:param source: The JavaScript source to tokenize.
:param jsx: Enable (limited) JSX parsing.
:param dotted: Read dotted names as single name token.
:param template_string: Support ES6 template strings
:param lineno: starting line number (optional)
F)rH   rJ   rB   NrA   rW   )rf   rS   rd   Údivision_reÚregex_rere   r,   rX   Úline_reÚfindallri   )ru   rH   rJ   rB   r1   Ú
may_dividern   ri   rP   rQ   rR   rd   Útoken_valuerU   s   &&&&&         r:   Útokenizer}   ¡   sá   é € ð €JØ
€CÜ
ˆf‹+€CÜ˜#¸oÔN€Eà
Œ)ã %ÑˆJØ—J‘J˜vÓ+ˆEØÔ Ùñ !&÷ Ü#×)Ñ)¨&Ó6�Ø'‘
ä Ÿ™ vÓ3�Ø%�
ØŠ}à�q•�Ùà—k‘k“mˆØÒ!Ü˜*°6Ó:ˆEÜ+¨EÓ2ˆJØŠKØ”#”g—o‘o kÓ2Ó3Õ3ˆØ�i‰i‹kŠñ9 ùs   ‚<C5ÁC5ÁB&C5)TTTé   )%Ú__conditional_annotations__Ú__doc__Ú
__future__r   ÚreÚcollections.abcr   Útypingr   Úsortedrf   r   r7   r*   ÚcompileÚUNICODEÚname_reÚdotted_name_rerw   ÚDOTALLrx   ry   Úpatternr`   rc   rj   r,   ÚVERBOSEÚIrk   ÚmapÚescaperE   rS   rX   rs   r}   )r   s   @r:   Ú<module>r�      s¸  øðô	õ #ã 	Ý %Ý áð ØðØ	ðØðØðØðØ"ðØ$'ðØ),ðØ.2ðØ48ðØ:=ðàðà
ðàðàðà ðà"&ðà(-ðà/4ðà6;ðð ðð ðð ðð ðð !ðð #'ðð )-ðð /2ðð 48ðð :=ðð ?Bðð ð	ð 
ð	ð ð	ð ð	ð ð	ð "ð	ð $(ð	ð *-ð	ð /2ð	ð 47ð	ð 9<ð	ð >Að	ð
 �Dô€	ˆ9ó ð   c¨4°°d¸CÀÀsÈDÐQ€ˆÓ Qà
�*Š*Ð'¨¯©Ó
4€Ø—’Ð8¸"¿*¹*ÓE€Ø�jŠj˜Ó €Ø�:Š:Ð>ÀÇ	Á	ÓJ€Ø
�*Š*�_Ó
%€Ø�zŠz˜% '§/¡/Õ1Ó2€Ø—
’
Ð.Ó/€Ø—
’
Ð.Ó/€ôˆJô ð 
ˆ2�:Š:�f˜bŸj™jÓ)Ð*Ø	ˆ2�:Š:�iÓ Ð!Ø�B—J’J˜wÓ'Ð(Ø˜Ÿš L°"·*±*¸r¿y¹yÕ2HÓIÐJØ�NÐ#ØˆWÐØˆr�zŠzð 	ð
 �*‰*óð ð �—
’
Ð/°·±Ó6Ð7Ø�—’˜G c§h¡h©s°2·9±9¸iÓ/HÓ&IÕIÓJÐKØ˜Ÿ
š
Ð#FÈÏ
É
ÓSÐTØˆr�zŠzð 	ð �*‰*�r—y‘yÕ
 ó"ð #ð!4€Ð0ó õ.õ(@õ@÷F+ñ +r9   