
    ̆h'                       % S r SSKJr  SSKrSSKJr  SSKJr  \" / SQ\	SS9r
S	\S
'   SSSSSS.rS\S'   \R                  " S\R                  5      r\R                  " S\R                  5      r\R                  " S5      r\R                  " S\R$                  5      r\R                  " S5      r\R                  " S\R*                  -   5      r\R                  " S5      r\R                  " S5      r " S S\5      rS\R                  " S\R                  5      4S\R                  " S5      4S\R                  " S 5      4S!\R                  " S"\R                  \R$                  -  5      4S#\4S$\4S%\R                  " S&\R4                  5      4S'\R                  " S(\R6                  5      4S)\R                  " S*S+R9                  \" \R<                  \
5      5      -  5      4S,\R                  " S-\R                  5      4S.\R                  " S/\R4                  \R$                  -  5      4/rS0\S1'   S6S2 jr S7S3 jr!S8S4 jr"S9S:S5 jjr#g);z
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tz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                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)	Token$   strtypevalueintlineno N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r4       N/opt/services/DDDS/venv/lib/python3.13/site-packages/babel/messages/jslexer.pyr-   r-   $   s    
IJKr;   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)r   template_stringz`(?:[^`\\]*(?:\\.[^`\\]*)*)`stringzT(
        '(?:[^'\\]*(?:\\.[^'\\]*)*)'  |
        "(?:[^"\\]*(?:\\.[^"\\]*)*)"
    )(list[tuple[str | None, re.Pattern[str]]]_rulesc                    / n[          HM  u  pEU (       d  U(       a  SU;   a  M  U(       d  US:X  a  M*  US:X  a  U(       d  M9  SnUR                  XE45        MO     U$ )zY
Get a tokenization rule list given the passed syntax options.

Internal to this module.
jsxrD   r?   r@   )rG   append)rI   dottedrD   rules
token_typerules         r<   	get_rulesrO   A   s\     E"
zez&9:1B#B&Jj'( # Lr;   c                ^    U R                   S:X  a  U R                  S;   $ U R                   S;   $ )zrA helper function that helps the tokenizer to decide if the current
token may be followed by a division operator.
rC   )r   r   r   r   r   )r@   rA   rE   regexp)r0   r1   )tokens    r<   indicates_divisionrS   U   s0     zzZ{{999::???r;   c                   U (       a  U S   U S   :X  a	  U S   S;   d   S5       e[         R                  SU SS 5      n / nUR                  nSn U R                  SU5      nUS:  a  GO,U" XU 5        XS-      nU[        ;   a  U" [        U   5        OUS;   a  [
        R                  XS	-   5      nUb^  UR                  5       n[        U5      S:X  a#   U" [        [        US5      5      5        US-   nM  U" XW-   5        UR                  5       nM  U" U5        OqUS;   ac  [        R                  XS	-   5      nUb?  UR                  5       nU" [        [        US5      5      5        US	-   [        U5      -   nGM.  U" U5        OU" U5        US	-   nGMF  U[        U 5      :  a
  U" XS
 5        SR                  U5      $ ! [         a     Nf = f)zUnquote 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         xX )line_join_resubrJ   findr+   uni_escape_rematchgrouplenchrr2   
ValueErrorendhex_escape_rejoin)rE   resultaddpos
escape_pos	next_charescapedescaped_values           r<   unquote_stringrr   ^   s    fQi6":-&)v2E 434EeVAb\2FF
--C
C
[[s+
>Fz"# >*		"# $#))&q.AG" '}%*!CM2 678 )1n I-.kkmI $#))&q.AG" 'CM2./0 1ns='99I 	N1na d S[F4L776?= & s   F> >
G
Gc              #    #    SnSn[        U 5      n[        XUS9nXg:  a  U H  u  pU
R                  X5      nUc  M    OB   U(       a  [        R                  X5      nSn	O[        R                  X5      nSn	Uc  US-  nMf  UR                  5       nU	b  [        XU5      n[        U5      nUv   U[        [        R                  U5      5      -  nUR                  5       nXg:  a  M  gg7f)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)
Fr   )rI   rK   rD   NrC   rQ   rV   )re   rO   rc   division_reregex_rerd   r-   rS   line_refindallrh   )sourcerI   rK   rD   r3   
may_dividerm   rh   rL   rM   rN   rc   token_valuerR   s                 r<   tokenizer{      s      J
C
f+C#oNE
) %JJJv+E  !& #))&6'
 v3%
}qkkm!*6:E+E2JK#gook233iik9 )s   8C*B(C*(C*)rI   boolrK   r|   rD   r|   returnrF   )rR   r-   r}   r|   )rE   r/   r}   r/   )TTTrV   )rx   r/   rI   r|   rK   r|   rD   r|   r3   r2   r}   zGenerator[Token, None, None])$__doc__
__future__r   recollections.abcr   typingr   sortedre   r    r9   r+   compileUNICODEname_redotted_name_rert   DOTALLru   rv   patternr_   rb   ri   r-   VERBOSEIrj   mapescaperG   rO   rS   rr   r{   r4   r;   r<   <module>r      s   	 # 	 %  
 D	9  !%4dDQ Q
**'
48"**Ejj ::>		J
**_
%zz%'//12

./

./J  
2::fbjj)*	2::i !BJJw'(L"**ryy2HIJN#Wrzz 	
 **  

/67Gchhs299i/H&IIJK

#F

STrzz 	 **ryy
 " #!40 .(@@F+r;   