+
    TBi'                       R t ^ RIt^ RIHtHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHt ^ R
IHt ^ RIHtHtHtHtHtHtHtHtH t  ^ RI!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t- ^ RI.H/t/H0t0 . 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R0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNt1 ! RN R]4      t2 ! RO R]4      t3 ! RP R<]4      t4 ! RQ R=]4      t5 ! RR R>]4      t6 ! RS R]4      t7 ! RT R&]4      t8 ! RU R']4      t9 ! RV R(]4      t: ! RW R*]4      t; ! RX R)]4      t< ! RY R+]4      t= ! RZ R,]4      t> ! R[ R-]4      t? ! R\ R.]4      t@ ! R] R/]4      tA ! R^ R0]4      tB ! R_ R`]4      tC ! Ra R2]4      tD ! Rb R3]4      tE ! Rc R4]4      tF ! Rd R5]4      tG ! Re R#]4      tH ! Rf Rg]4      tI ! Rh R"]4      tJ ! Ri R!]4      tK ! Rj R%]4      tL ! Rk R$]4      tM ! Rl R]4      tN ! Rm R]4      tO ! Rn R]4      tP ! Ro R]4      tQ ! Rp R]4      tR ! Rq R]4      tS ! Rr R]4      tT ! Rs R]4      tU ! Rt R]4      tV ! Ru R]4      tW ! Rv R]4      tX ! Rw R]4      tY ! Rx R]4      tZ ! Ry R]4      t[ ! Rz R]4      t\ ! R{ R ]4      t] ! R| R}]4      t^ ! R~ R1]4      t_ ! R R6]4      t` ! R R7]4      ta ! R R8]4      tb ! R R9]4      tc ! R R]4      td ! R R:]4      te ! R R;]4      tf ! R R?]4      tg ! R R]4      th ! R R@]4      ti ! R RA]4      tj ! R RB]4      tk ! R RC]4      tl ! R RD]4      tm ! R RE]4      tn ! R RF]4      to ! R RG]4      tp ! R RH]4      tq ! R RI]4      tr ! R RJ]4      ts ! R RK]4      tt ! R RL]4      tu ! R RM]4      tvR# )z
pygments.lexers.templates
~~~~~~~~~~~~~~~~~~~~~~~~~

Lexers for various template engines' markup.

:copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
N)	HtmlLexerXmlLexer)JavascriptLexer
LassoLexer)CssLexer)PhpLexer)PythonLexer)	PerlLexer)	JavaLexerTeaLangLexer)	YamlLexer)SqlLexer)	LexerDelegatingLexer
RegexLexerbygroupsincludeusingthisdefaultcombined)ErrorPunctuation
WhitespaceTextCommentOperatorKeywordNameStringNumberOtherToken)html_doctype_matcheslooks_like_xmlHtmlPhpLexerXmlPhpLexerCssPhpLexerJavascriptPhpLexerErbLexer
RhtmlLexerXmlErbLexerCssErbLexerJavascriptErbLexerSmartyLexerHtmlSmartyLexerXmlSmartyLexerCssSmartyLexerJavascriptSmartyLexerDjangoLexerHtmlDjangoLexerCssDjangoLexerXmlDjangoLexerJavascriptDjangoLexerGenshiLexerHtmlGenshiLexerGenshiTextLexerCssGenshiLexerJavascriptGenshiLexerMyghtyLexerMyghtyHtmlLexerMyghtyXmlLexerMyghtyCssLexerMyghtyJavascriptLexer
MasonLexer	MakoLexerMakoHtmlLexerMakoXmlLexerMakoJavascriptLexerMakoCssLexerJspLexerCheetahLexerCheetahHtmlLexerCheetahXmlLexerCheetahJavascriptLexerEvoqueLexerEvoqueHtmlLexerEvoqueXmlLexerColdfusionLexerColdfusionHtmlLexerColdfusionCFCLexerVelocityLexerVelocityHtmlLexerVelocityXmlLexerSspLexerTeaTemplateLexerLassoHtmlLexerLassoXmlLexerLassoCssLexerLassoJavascriptLexerHandlebarsLexerHandlebarsHtmlLexerYamlJinjaLexerLiquidLexer	TwigLexerTwigHtmlLexerAngular2LexerAngular2HtmlLexerSqlJinjaLexerc                      a  ] tR t^3t o RtRtRtR.tR.tRt	]
P                  ! R]
P                  4      tR tR	 tR
 tRtV tR# )r)   z
Generic ERB (Ruby Templating) lexer.

Just highlights ruby code between the preprocessor directives, other data
is left untouched by the lexer.

All options are also forwarded to the `RubyLexer`.
ERBhttps://github.com/ruby/erberbzapplication/x-ruby-templating z*(<%%|%%>|<%=|<%#|<%-|<%|-%>|%>|^%[^%].*?$)c                Z    ^ RI Hp V! R/ VB V n        \        P                  ! V 3/ VB  R# )    )	RubyLexerN )pygments.lexers.rubyrl   
ruby_lexerr   __init__)selfoptionsrl   s   &, >/usr/lib/python3.14/site-packages/pygments/lexers/templates.pyrp   ErbLexer.__init__E   s%    2#.g.t'w'    c              #     "   V P                   P                  V4      pVP                  4        ^ ;r4  V^ 8X  d2   VP                  4       pV\        V3x  V\        V4      ,          p^pK9  V^8X  Ed   VP                  4       pVR9   d   V\        V3x  V^,          p^ pKp  VR8X  dU   V\        P                  V3x  VP                  4       pV^,           \        V3x  V^\        V4      ,           ,          p^pK  VR9   d   V\        P                  V3x  V\        V4      ,          pVP                  4       p^ pV P                  P                  V4       F  w  rp
W,           W3x  K  	  V\        V4      ,          p^pEKS  VR9   d#   V\        V3x  V\        V4      ,          p^ pEK|  V\        P                  V^ ,          3x  ^ pV P                  P                  VR,          4       F  w  rp
V^,           V,           W3x  K  	  V\        V4      ,          p^ pEK  V^8X  g   EK  VP                  4       pVR9  d   V\        V3x  MV\        P                  V3x  V\        V4      ,          p^ pEKJ    \         d     R# i ; i5i)z
Since ERB doesn't allow "<%" and other tags inside of ruby
blocks we have to use a split approach here that fails for
that too.
z<%#:   NNN)z<%%z%%>)<%z<%=z<%-)%>z-%>)	_block_resplitreversepopr!   lenr   Preprocro   get_tokens_unprocessedr   
IndexError)rq   texttokensstateidxvaltagdatar_idxr_tokenr_values   &&         rs   r   ErbLexer.get_tokens_unprocessedJ   sA     %%d+9	A: **,Cuc/)3s8OCEaZ **,Cn,!5#o-q !!7??C77$jjl!Agw33q3s8|+ ! 44!7??C77s3x%zz| ! $ F Ft L 4EG"'+w"?? !Ms4y( !-!5#o-s3x ! "7??CF:: ! $ F Fs2w O 4EG"%'E/7"CC !Ps3x !aZ **,C-/!5#o-!7??C773s8OCE 		s*   /JG5I< -AI< <JJ
JJc                *    R V 9   d   RV 9   d   R# R# R# )rx   ry   皙?Nrm   r   s   &rs   analyse_textErbLexer.analyse_text   s    4<DDL )<ru   )ro   N)__name__
__module____qualname____firstlineno____doc__nameurlaliases	mimetypesversion_addedrecompileMrz   rp   r   r   __static_attributes____classdictcell____classdict__s   @rs   r)   r)   3   sU      D
'CgG01IM

H"$$OI(
BH ru   c                   b  a  ] tR t^t o RtRtRtR.tR.tR.t	Rt
]P                  ]P                  ,          tRR	]3R
]! ]P$                  ]]P$                  4      3R]! ]P$                  ]! ]RR7      ]P$                  4      3R]! ]P$                  ]P,                  ]4      R3R]P$                  R3.RR]3R]P$                  R3R]P$                  R3R]P0                  3R]P0                  3R]3R]P6                  3R]3R]P<                  3R]P>                  3R]P@                  3./t!R t"Rt#V t$R# )r.   z
Generic Smarty template lexer.

Just highlights smarty code between the preprocessor directives, other
data is left untouched by the lexer.
Smartyhttps://www.smarty.net/smarty*.tplzapplication/x-smartyri   root[^{]+z(\{)(\*.*?\*)(\})z(\{php\})(.*?)(\{/php\})T)startinlinez(\{)(/?[a-zA-Z_]\w*)(\s*)\{\s+#push\}#popz#[a-zA-Z_]\w*#z\$[a-zA-Z_]\w*(\.\w+)*z[~!%^&*()+=|\[\]:;,.<>/?@-](true|false|null)\b>[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?"(\\\\|\\[^\\]|[^"\\])*"'(\\\\|\\[^\\]|[^'\\])*'[a-zA-Z_]\w*c                :   R p\         P                  ! RV 4      '       d
   VR,          p\         P                  ! RV 4      '       d
   VR,          p\         P                  ! RV 4      '       d
   VR,          p\         P                  ! RV 4      '       d
   VR,          pV# )        z\{if\s+.*?\}.*?\{/if\}333333?z\{include\s+file=.*?\}z \{foreach\s+.*?\}.*?\{/foreach\}z	\{\$.*?\}{Gz?r   searchr   rvs   & rs   r   SmartyLexer.analyse_text   sw    99.55$JB99.55$JB998$??$JB99\4(($JB	ru   rm   N)%r   r   r   r   r   r   r   r   	filenamesr   r   r   	MULTILINEDOTALLflagsr!   r   r   r   r   r   r   Functionr   Variabler   r   Constantr    r   DoubleSingle	Attributer   r   r   r   r   s   @rs   r.   r.      sd     D
#CjG	I'(IMLL299$E 	u!goow@B(goouX4'Hoo'( *goot}}d;XGGOOX.

 	TNGOOW-GOOV,.&6+X6#W%5%56'(.0(&--8(&--8dnn-
F8
 
ru   c                   x  a  ] tR t^t o RtRtRtR.tRR.tRt	]
P                  ]
P                  ,          tRtR	R
]3R]! ]P$                  ]]P$                  4      3R]! ]P$                  ]4      3R],           R,           ]! ]P$                  ]P(                  ]P$                  ]4      R3R],           R,           ]! ]P$                  ]P(                  ]P$                  4      3R]R3.R]]P,                  3R]R3R],           R,           ]! ]]P,                  4      R3R]R3]! R4      .RR]3R]R3R],           R,           ]P(                  3]! R4      .RR]3]! R4      R]R3.RR]R3R ]3R!]3R"]P8                  3R#]P:                  3R$]3R%]3R&]P@                  3R]R3R']R3R(]R3R]R3R]R3R]R3./t!R) t"R*t#V t$R+# ),rS   z
Generic Velocity template lexer.

Just highlights velocity directives and variable references, other
data is left untouched by the lexer.
Velocityhttps://velocity.apache.org/velocity*.vm*.fhtmlri   r   r   z[^{#$]+z(#)(\*.*?\*)(#)z
(##)(.*?$)z(#\{?)(z)(\}?)(\s?\()directiveparamsz)(\}|\b)z\$!?\{?variablez\(
funcparamsz(\.)()r   r   r   z=(&&|\|\||==?|!=?|[-<>+*%&|^/])|\b(eq|ne|gt|lt|ge|le|not|in)\bz\[rangeoperatorz\bz\.\.z\]r   z[,:]r   r   z0[xX][0-9a-fA-F]+[Ll]?z
\b[0-9]+\br   \)r   c                   R p\         P                  ! RV \         P                  4      '       d
   VR,          p\         P                  ! RV \         P                  4      '       d
   VR,          p\         P                  ! RV \         P                  4      '       d
   VR,          p\         P                  ! RV 4      '       d
   VR,          pV# )r   z #\{?macro\}?\(.*?\).*?#\{?end\}?      ?z#\{?if\}?\(.+?\).*?#\{?end\}?r   z"#\{?foreach\}?\(.+?\).*?#\{?end\}?z6\$!?\{?[a-zA-Z_]\w*(\([^)]*\))?(\.\w+(\([^)]*\))?)*\}?r   r   r   r   r   s   & rs   r   VelocityLexer.analyse_text  s    998$		JJ$JB995tRYYGG$JB99:D"))LL$JB99 0157 7$JB	ru   rm   N)%r   r   r   r   r   r   r   r   r   r   r   r   r   r   
identifierr!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r   r   s   @rs   rS   rS      sK     D
(ClG#IMLL299$E J 	goow@Bgoow/1*$'77goot}}goo{S  *${2goot}}gooFHj1
 	'K.
"T)k4==17<K(FO
 	MHo.Z%'7L!
 	hL!Hf%

 	j1TNk"(&--8(&--8&/F##W%5%56K)K(K)K(K)K(
E2Fh ru   c                   V   a a ] tR tRt oRtRtR.tRtRR.tR.t	R	t
V 3R
 ltRtVtV ;t# )rT   i!  zU
Subclass of the `VelocityLexer` that highlights unlexed data
with the `HtmlLexer`.

zHTML+Velocityzhtml+velocityri   *.htmlr   ztext/html+velocityr   c                <   < \         SV `  ! \        \        3/ VB  R # N)superrp   r   rS   rq   rr   	__class__s   &,rs   rp   VelocityHtmlLexer.__init__/      M=W=ru   rm   )r   r   r   r   r   r   r   r   alias_filenamesr   r   rp   r   r   __classcell__r   r   s   @@rs   rT   rT   !  s?      DGM+O%&I
(C> >ru   c                   \   a a ] tR tRt oRtRtR.tRtRR.tR.t	R	t
V 3R
 ltR tRtVtV ;t# )rU   i3  zT
Subclass of the `VelocityLexer` that highlights unlexed data
with the `XmlLexer`.

zXML+Velocityzxml+velocityri   *.xmlr   zapplication/xml+velocityr   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rS   r   s   &,rs   rp   VelocityXmlLexer.__init__A  s    =<G<ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   r   )rS   r   r$   r   s   & rs   r   VelocityXmlLexer.analyse_textD  s0    ''-4$#IB	ru   rm   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   r   s   @@rs   rU   rU   3  sD      DGM'O+,I
(C= ru   c                     a  ] tR tRt o RtRtRR.tRR.tRtR	t	]
P                  ]
P                  ,          tR
R]3R]P                   R3R]3R]! ]P                   ]]]]P                   ]]P                   ]]]]P                   4      3R]! ]P                   ]]]]P                   ]]P                   ]]]]P                   4      3R]! ]P                   ]]]]P*                  4      R3R]! ]P                   ]]4      R3R]3.RR]! ]]]P*                  4      3R]! ]]]]]P*                  4      3R]P.                  3R]3R]P0                  3R]P2                  3R]P2                  3R]P6                  3R]P8                  3R]3R ]3.RR!]3R"]! ]]P                   4      R#3]! R4      .RR!]3R$]! ]]P                   4      R#3]! R4      R%]3./t R& t!R't"V t#R(# ))r3   iK  a  
Generic `Django <https://www.djangoproject.com/documentation/templates/>`_
and `Jinja <https://jinja.palletsprojects.com>`_ template lexer.

It just highlights django/jinja code between the preprocessor directives,
other data is left untouched by the lexer.
zDjango/Jinjadjangojinjazapplication/x-django-templatingzapplication/x-jinja5https://www.djangoproject.com/documentation/templatesri   r   r   \{\{varz	\{#.*?#\}zJ(\{%)(-?\s*)(comment)(\s*-?)(%\})(.*?)(\{%)(-?\s*)(endcomment)(\s*-?)(%\})B(\{%)(-?\s*)(raw)(\s*-?)(%\})(.*?)(\{%)(-?\s*)(endraw)(\s*-?)(%\})z'(\{%)(-?\s*)(filter)(\s+)([a-zA-Z_]\w*)block(\{%)(-?\s*)([a-zA-Z_]\w*)r   varnamesz(\|)(\s*)([a-zA-Z_]\w*)z#(is)(\s+)(not)?(\s+)?([a-zA-Z_]\w*)z%(_|true|false|none|True|False|None)\bzm(in|as|reversed|recursive|not|and|or|is|if|else|import|with(?:(?:out)?\s*context)?|scoped|ignore\s+missing)\bz(loop|block|super|forloop)\bz[a-zA-Z_][\w-]*z\.\w+:?"(\\\\|\\[^\\]|[^"\\])*":?'(\\\\|\\[^\\]|[^'\\])*'z ([{}()\[\]+\-*/%,:~]|[><=]=?|!=)r   r   
(-?)(\}\})r   	(-?)(%\}).c                    R p\         P                  ! RV 4      e
   VR,          p\         P                  ! RV 4      e
   VR,          p\         P                  ! RV 4      e
   VR,          pV# )r   z\{%\s*(block|extends)r   z\{%\s*if\s*.*?%\}皙?z\{\{.*?\}\}r   r   s   & rs   r   DjangoLexer.analyse_text  s\    99-t4@#IB99)40<#IB99^T*6#IB	ru   rm   N)$r   r   r   r   r   r   r   r   r   r   r   r   Sr   r!   r   r   r   r   r   r   r   r   PseudoBuiltinr   r   r   r   r    r   r   r   r   r   r   r   s   @rs   r3   r3   K  sI     D!G24IJI
ACMDD244KE 	ugoou-7#5gootWdGOOwgtoo'(1gootWdGOOGOOT7Doo'( 8gootWdDMMJ +gootW5w@EN/
2 	'hdmm463gtWdDMMBD5w~~FG -dll;/t}}%*FMM:*FMM:0(;'(.0
$ 	TNHT7??;VDJ

 	TN8D'//:FCJ;	
c7Fr ru   c                      ] tR tRtRtRtRtR.tRR.tR.t	R	t
R
R]3R]! ]P                  ]]P                  ]P                  ]! ]4      ]P                  4      3R]! ]P                  ]P                  ]P                  ]! ]4      ]P                  4      3R]! ]P                  ]P                  ]! ]4      ]P                  4      3R]! ]P                  ]P                  ]! ]4      ]P                  4      3R]P                  3R]! ]P                  ]! ]4      ]P                  4      3R]3R]! ]P                  ]! ]4      ]4      3R]! ]]4      3.
/tRtR# )r=   i  z\
Generic myghty templates lexer. Code that isn't Myghty
markup is yielded as `Token.Other`.
Myghtyhttp://www.myghty.org/myghtyz*.mytautodelegatezapplication/x-myghty0.6r   r   3(?s)(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)z#(?s)(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)z(<&[^|])(.*?)(,.*?)?(&>)(?s)(<&\|)(.*?)(,.*?)?(&>)</&>(?s)(<%!?)(.*?)(%>)(?<=^)#[^\n]*(\n|\Z)(?<=^)(%)([^\n]*)(\n|\Z)  (?sx)
                 (.+?)               # anything, followed by:
                 (?:
                  (?<=\n)(?=[%#]) |  # an eval or comment line
                  (?=</?[%&]) |      # a substitution or block or
                                     # call start or end
                                     # - don't consume
                  (\\\n) |           # an escaped newline
                  \Z                 # end of string
                 )rm   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   Tagr   r   r   r   r   r!   r   r   r   rm   ru   rs   r=   r=     sf   
 D
"CjG.)I'(IM 	TNCdhhdmmTXXDk488-. 4dhhtxxK($((45 )dhhu[/A488LN*dhhu[/A488LNdhh#dhhk 2DHH=?$g.(dhhk 2E:<	  x0	2%
Fru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
r>   i  zR
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `HtmlLexer`.
zHTML+Myghtyzhtml+myghtyztext/html+myghtyr  r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r=   r   s   &,rs   rp   MyghtyHtmlLexer.__init__      K;7;ru   rm   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   s   @@rs   r>   r>     s4     
 DoG#$I
"CM< <ru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
r?   i  zQ
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `XmlLexer`.
z
XML+Myghtyz
xml+myghtyzapplication/xml+myghtyr  r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r=   r   s   &,rs   rp   MyghtyXmlLexer.__init__      ;:':ru   rm   r  r   s   @@rs   r?   r?     s4     
 DnG)*I
"CM; ;ru   c                   R   a a ] tR tRt oRtRtRR.t. R
OtRtRt	V 3R lt
R	tVtV ;t# )rA   i  zX
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `JavascriptLexer`.
zJavaScript+Myghtyzjavascript+myghtyz	js+myghtyr  r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r=   r   s   &,rs   rp   MyghtyJavascriptLexer.__init__      +AAru   rm   )zapplication/x-javascript+myghtyztext/x-javascript+myghtyztext/javascript+mygthyr  r   s   @@rs   rA   rA     s:     
 D"K0G+I #CMB Bru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
r@   i   zQ
Subclass of the `MyghtyLexer` that highlights unlexed data
with the `CssLexer`.
z
CSS+Myghtyz
css+myghtyztext/css+myghtyr  r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r=   r   s   &,rs   rp   MyghtyCssLexer.__init__  r  ru   rm   r  r   s   @@rs   r@   r@      s4     
 DnG"#I
"CM; ;ru   c                     a  ] tR tRt o RtRtRtR.t. ROtR.t	Rt
RR	]3R
]! ]P                  ]P                   ]P                  4      3R]! ]P                  ]]P"                  ]P                  ]! ]4      ]P                  4      3R]! ]P                  RRR]! ]4      ]P                  4      3R]! ]P                  ]P"                  ]! ]4      ]P                  4      3R]! ]P                  ]P"                  ]! ]4      ]P                  4      3R]P                  3R]! ]P                  ]! ]4      ]P                  4      3R]3R]! ]P                  ]! ]4      ]4      3R]! ]! ]4      ]4      3./tR tRtV tR# )rB   i  z`
Generic mason templates lexer. Stolen from Myghty lexer. Code that isn't
Mason markup is HTML.
Masonzhttp://www.masonhq.com/masonzapplication/x-mason1.4r   r   z(?s)(<%doc>)(.*?)(</%doc>)r  z%(?s)(<%(\w+)(.*?)(>))(.*?)(</%\2\s*>)Nz(?s)(<&[^|])(.*?)(,.*?)?(&>)r	  r
  r  r  r  r  c                    R p\         P                  ! RV 4      e   RpV# \         P                  ! RV \         P                  4      e   RpV# )r   z</%(class|doc|init)>g      ?z<&.+&>g)\(?r   )r   results   & rs   r   MasonLexer.analyse_text=  sH    99,d3?F  YYy$		2>Fru   rm   )z*.mz*.mhtmlz*.mcz*.miautohandlerdhandler)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   	Multiliner   r   r   r	   r!   r   r   r   r   r   r   r   s   @rs   rB   rB     s     D
#CiGMI&'IM 	Z *dhh 1 1488<>Cdhh
DMM488Dk488-. 6dhhdD%	2BDHHMO,dhhuY/?JL*dhhuY/?JLdhh#dhhi 0$((;=$g.(dhhi 0%8:	  i 0(;	='
FB ru   c                   D   ] tR tRtRtRtRtR.tR.tR.t	Rt
R	R
]! ]P                  ]P                  ]]4      3R]! ]P                  ]P                  ]! ]4      ]4      3R]! ]P                  ]P(                  ]P                  4      3R]P*                  3R]! ]P                  ]P.                  4      R3R]! ]P                  ]P.                  ]P                  4      3R]P                  R3R]! ]P                  ]! ]4      ]P                  4      3R]! ]P                  ]! ]4      ]P                  4      3R]! ]]4      3R]3.RR]P                  3R]P.                  3]! R4      .RR]! ]P4                  ]]4      3R]P                  R3R]3.RR]R3R]R3R]R3./tR tR!# )"rC   iF  zX
Generic mako templates lexer. Code that isn't Mako
markup is yielded as `Token.Other`.
Makohttp://www.makotemplates.org/makoz*.maozapplication/x-mako0.7r   z(\s*)(%)(\s*end(?:\w+))(\n|\Z)z(\s*)(%)([^\n]*)(\n|\Z)z(\s*)(##[^\n]*)(\n|\Z)z(?s)<%doc>.*?</%doc>z(<%)([\w.:]+)r   z(</%)([\w.:]+)(>)z<%(?=([\w.:]+))	ondeftagsz(?s)(<%(?:!?))(.*?)(%>)z(\$\{)(.*?)(\})a\  (?sx)
                (.+?)                # anything, followed by:
                (?:
                 (?<=\n)(?=%|\#\#) | # an eval or comment line
                 (?=\#\*) |          # multiline comment
                 (?=</?%) |          # a python block
                                     # call start or end
                 (?=\$\{) |          # a substitution
                 (?<=\n)(?=\s*%) |
                                     # - don't consume
                 (\\\n) |            # an escaped newline
                 \Z                  # end of string
                )
            r   rx   z'(?<=<%)(include|inherit|namespace|page)z((?:\w+)\s*=)(\s*)(".*?")/?\s*>r   attr".*?"'.*?'[^\s>]+rm   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r)  r   r  r   r   r   r   r   r   rm   ru   rs   rC   rC   F  s   
 D
)ChG	I%&IM 	.doowGI'doowk8JERT&doow~~tGI$g&7&78goot||4e=!goot||W__EG+>'goou['97??KMgoou['97??KM %*, TN? 
B 	GOO$7FEN

 	)dnndF350TN	
 	ff%ff%(
[2Fru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
rD   i  zP
Subclass of the `MakoLexer` that highlights unlexed data
with the `HtmlLexer`.
z	HTML+Makoz	html+makoztext/html+makor,  r.  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rC   r   s   &,rs   rp   MakoHtmlLexer.__init__      I99ru   rm   r  r   s   @@rs   rD   rD     s4     
 DmG!"I
)CM: :ru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
rE   i  zO
Subclass of the `MakoLexer` that highlights unlexed data
with the `XmlLexer`.
zXML+Makozxml+makozapplication/xml+makor,  r.  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rC   r   s   &,rs   rp   MakoXmlLexer.__init__      988ru   rm   r  r   s   @@rs   rE   rE     s4     
 DlG'(I
)CM9 9ru   c                   R   a a ] tR tRt oRtRtRR.t. R
OtRtRt	V 3R lt
R	tVtV ;t# )rF   i  zV
Subclass of the `MakoLexer` that highlights unlexed data
with the `JavascriptLexer`.
zJavaScript+Makozjavascript+makozjs+makor,  r.  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rC   r   s   &,rs   rp   MakoJavascriptLexer.__init__  s    )?w?ru   rm   )zapplication/x-javascript+makoztext/x-javascript+makoztext/javascript+makor  r   s   @@rs   rF   rF     s:     
 D ),G)I *CM@ @ru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
rG   i  zO
Subclass of the `MakoLexer` that highlights unlexed data
with the `CssLexer`.
zCSS+Makozcss+makoztext/css+makor,  r.  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rC   r   s   &,rs   rp   MakoCssLexer.__init__  r<  ru   rm   r  r   s   @@rs   rG   rG     s4     
 DlG !I
)CM9 9ru   c                   *   a  ] tR tRt o RtR tRtV tR# )CheetahPythonLexeri  zA
Lexer for handling Cheetah's special $ tokens in Python syntax.
c              #     "   \        R/ V P                  B pVP                  V4       F8  w  r4pV\        P                  8X  d   VR 8X  d   \
        P                  pW4V3x  K:  	  R# 5i)$Nrm   )r   rr   r   r"   r   r   r   )rq   r   pylexerpostype_values   &&    rs   r   )CheetahPythonLexer.get_tokens_unprocessed  sW     --!(!?!?!EC#e## "Fs   A%A'rm   N)r   r   r   r   r   r   r   r   r   s   @rs   rD  rD    s     $ $ru   rD  c                   f   ] tR tRtRtRtRtRR.tRR.tR	R
.t	Rt
RR]! ]4      3R]3R]P                  3R]P                  3R]! ]P                  ]! ]4      ]P                  4      3R]! ]P                  ]! ]4      4      3R]! ]P                  ]! ]4      ]P                  4      3R]3R]3.	/tRtR# )rI   i  z
Generic cheetah templates lexer. Code that isn't Cheetah
markup is yielded as `Token.Other`.  This also works for
`spitfire templates`_ which use the same syntax.

.. _spitfire templates: http://code.google.com/p/spitfire/
Cheetahhttp://www.cheetahtemplate.org/cheetahspitfirez*.tmplz*.sptzapplication/x-cheetahzapplication/x-spitfireri   r   z(##[^\n]*)$z#[*](.|\n)*?[*]#z#end[^#\n]*(?:#|$)z#slurp$z(#[a-zA-Z]+)([^#\n]*)(#|$)z(\$)([a-zA-Z_][\w.]*\w)z(?s)(\$\{!?)(.*?)(\})a  (?sx)
                (.+?)               # anything, followed by:
                (?:
                 (?=\#[#a-zA-Z]*) | # an eval comment
                 (?=\$[a-zA-Z_{]) | # a substitution
                 \Z                 # end of string
                )
            r   rm   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD  r!   r   r   r   rm   ru   rs   rI   rI     s     D
+C*%G7#I(*BCIM 	w" '*"GOO4)*w.@(A(* (goou-?'@AC%goou-?'@oo'(  TN/
Fru   c                   R   a a ] tR tRt oRtRt. R
OtRR.tRtRt	V 3R lt
R	tVtV ;t# )rJ   i  zS
Subclass of the `CheetahLexer` that highlights unlexed data
with the `HtmlLexer`.
zHTML+Cheetahztext/html+cheetahztext/html+spitfirerN  ri   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rI   r   s   &,rs   rp   CheetahHtmlLexer.__init__  s    L<G<ru   rm   )zhtml+cheetahzhtml+spitfirehtmlcheetahr  r   s   @@rs   rJ   rJ     s5     
 D>G$&:;I
+CM= =ru   c                   R   a a ] tR tRt oRtRtRR.tRR.tRtR	t	V 3R
 lt
RtVtV ;t# )rK   i  zR
Subclass of the `CheetahLexer` that highlights unlexed data
with the `XmlLexer`.
zXML+Cheetahzxml+cheetahzxml+spitfirezapplication/xml+cheetahzapplication/xml+spitfirerN  ri   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rI   r   s   &,rs   rp   CheetahXmlLexer.__init__"      <;7;ru   rm   r  r   s   @@rs   rK   rK     s:     
 Dn-G*,FGI
+CM< <ru   c                   R   a a ] tR tRt oRtRt. ROt. R	OtRtRt	V 3R lt
RtVtV ;t# )
rL   i&  zY
Subclass of the `CheetahLexer` that highlights unlexed data
with the `JavascriptLexer`.
zJavaScript+CheetahrN  ri   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rI   r   s   &,rs   rp   CheetahJavascriptLexer.__init__8  s    ,B'Bru   rm   )zjavascript+cheetahz
js+cheetahzjavascript+spitfirezjs+spitfire)z application/x-javascript+cheetahztext/x-javascript+cheetahztext/javascript+cheetahz!application/x-javascript+spitfireztext/x-javascript+spitfireztext/javascript+spitfirer  r   s   @@rs   rL   rL   &  s7     
  D5G-I ,CMC Cru   c                   `   ] tR tRtRtRtRtR.tRR.tRt	R	R
]
3R]! ]]4      3R]! ]]P                  4      R3]! R4      R]
3.RR]R3R]! ]4      R3R]! ]]]! ]4      4      R3R]R3R]! ]]]4      R3.RR]! ]P                  ]! ]4      ]P                  4      3R]P(                  3./tRtR# )r:   i<  z0
A lexer that highlights genshi text templates.
zGenshi Texthttps://genshi.edgewall.org/
genshitextzapplication/x-genshi-textztext/x-genshiri   r   z[^#$\s]+z^(\s*)(##.*)$z	^(\s*)(#)	directiver   z[#$\s]z\nr   z(?:def|for|if)\s+.*z (choose|when|with)([^\S\n]+)(.*)z(choose|otherwise)\bz(end\w*)([^\S\n]*)(.*)(?<!\$)(\$\{)(.+?)(\})z(?<!\$)(\$)([a-zA-Z_][\w.]*)rm   N)r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   rm   ru   rs   r:   r:   <  s    D
(CnG,o>IM 	% xg678D'//:KHJ
 	D&!#U;%7@0gtU;%78&B$gv6&$(H&Q
 	&goou['97??KM,]]
!Fru   c                      ] tR tRtRt]P                  tRR]3R]	! ]
P                  ]! ]4      ]
P                  4      3R]3R]P                  R3R	]P                  R
3]! R4      R]3.RR]3R]P$                  R3R]P                  R3.RR]	! ]]! ]4      ]4      R3R]	! ]]! ]4      ]4      R3R]R3.R
R]3R]P$                  R3R]P$                  R3R]P                  R3.RR]R3R]R3R]R3.RR]R3]! R4      R]3.RR]R3]! R4      R]3.RR]3]! R4      .RR]	! ]
P                  ]! ]4      ]
P                  4      3R]P(                  3./	tR tR!# )"GenshiMarkupLexeri`  zL
Base lexer for Genshi markup, used by `HtmlGenshiLexer` and
`GenshiLexer`.
r   z[^<$]+z(<\?python)(.*?)(\?>)z'<\s*(script|style)\s*.*?>.*?<\s*/\1\s*>z<\s*py:[a-zA-Z0-9]+pytagz<\s*[a-zA-Z0-9:.]+r   r   z[<$]r   z[\w:-]+\s*=pyattrr0  r   z(")(.*?)(")z(')(.*?)(')r4  zpy:[\w-]+\s*=r1  "zattr-dstring'zattr-sstringz[^\s>]*stringsz[^"'$]+r`  z(?<!\$)(\$)([a-zA-Z_][\w\.]*)rm   N)r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r  r   r   r   r   r   r   r   rm   ru   rs   rb  rb  `  s   
 IIE 	%goou['97??KM 8?#TXXw7"DHHe4Je

 	TNT^^X6&)

 	HVU;-?H&QHVU;-?H&Q(

 	TNt~~x8T^^V4&)	
 	&.)&.)(

 	&&!I&M

 	&&!I&M

 	 J
 	&goou['97??KM-]]
_5Fru   rb  c                   ^   a a ] tR tRt oRtRtRR.tRt. ROtR.t	Rt
V 3R	 ltR
 tRtVtV ;t# )r9   i  z~
A lexer that highlights `genshi <https://genshi.edgewall.org/>`_ and
`kid <http://kid-templating.org/>`_ kid HTML templates.
zHTML+Genshizhtml+genshizhtml+kidri   ztext/html+genshir]  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rb  r   s   &,rs   rp   HtmlGenshiLexer.__init__  s    $5AAru   c                    R p\         P                  ! RV 4      e
   VR,          p\         P                  ! RV 4      e
   VR,          pV\        P                  ! V 4      ,           R,
          # r   z	\$\{.*?\}皙?zpy:(.*?)=["\']r   )r   r   r   r   r   s   & rs   r   HtmlGenshiLexer.analyse_text  sW    99\4(4#IB99&-9#IBI**400477ru   rm   r   *.htm*.xhtmlr   r   s   @@rs   r9   r9     sB     
 Dj)GM4O#$I
(CB8 8ru   c                   d   a a ] tR tRt oRtRt. ROtR.tRtR.t	RR.t
R	tV 3R
 ltR tRtVtV ;t# )r8   i  z}
A lexer that highlights `genshi <https://genshi.edgewall.org/>`_ and
`kid <http://kid-templating.org/>`_ kid XML templates.
Genshiz*.kidri   r   zapplication/x-genshizapplication/x-kidr]  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rb  r   s   &,rs   rp   GenshiLexer.__init__  s    #4@@ru   c                    R p\         P                  ! RV 4      e
   VR,          p\         P                  ! RV 4      e
   VR,          pV\        P                  ! V 4      ,           R,
          # rl  )r   r   r   r   r   s   & rs   r   GenshiLexer.analyse_text  sW    99\4(4#IB99&-9#IBH))$//$66ru   rm   )genshikidz
xml+genshizxml+kidr   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   r   s   @@rs   r8   r8     sI     
 D8G	IMiO')<=I
(CA7 7ru   c                   ^   a a ] tR tRt oRtRt. R
OtRtR.t. ROt	Rt
V 3R ltR tR	tVtV ;t# )r<   i  zC
A lexer that highlights javascript code in genshi text templates.
zJavaScript+Genshi Textri   *.jshttps://genshi.edgewall.orgc                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r:   r   s   &,rs   rp   JavascriptGenshiLexer.__init__  s    /EWEru   c                :    \         P                  V 4      R ,
          # 皙?r8   r   r   s   &rs   r   "JavascriptGenshiLexer.analyse_text      ''-44ru   rm   )zjs+genshitextz	js+genshizjavascript+genshitextzjavascript+genshi)zapplication/x-javascript+genshiztext/x-javascript+genshiztext/javascript+genshir   r   s   @@rs   r<   r<     sB      $D$GMhO+I (CF5 5ru   c                   \   a a ] tR tRt oRtRtRR.tRtR.tR.t	R	t
V 3R
 ltR tRtVtV ;t# )r;   i  zC
A lexer that highlights CSS definitions in genshi text templates.
zCSS+Genshi Textzcss+genshitextz
css+genshiri   *.cssztext/css+genshir}  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r:   r   s   &,rs   rp   CssGenshiLexer.__init__  s    ?>g>ru   c                :    \         P                  V 4      R ,
          # r  r  r   s   &rs   r   CssGenshiLexer.analyse_text  r  ru   rm   r   r   s   @@rs   r;   r;     sC      D.GMiO"#I
'C?5 5ru   c                   d   a a ] tR tRt oRtRt. ROtR.tRt. ROt	R.t
RtV 3R ltR	 tR
tVtV ;t# )r*   i  z
Subclass of the ERB lexer that highlights the unlexed data with the
html lexer.

Nested Javascript and CSS is highlighted too.
RHTMLz*.rhtmlri   ztext/html+rubyrg   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r)   r   s   &,rs   rp   RhtmlLexer.__init__      H88ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   g      ?)r)   r   r#   r   s   & rs   r   RhtmlLexer.analyse_text  s0    ""4(4/%%#IB	ru   rm   )rhtmlzhtml+erbz	html+rubyro  rz  r   s   @@rs   r*   r*     sC      D0GIM4O!"I
'C9 ru   c                   \   a a ] tR tRt oRtRtRR.tRtR.tR.t	R	t
V 3R
 ltR tRtVtV ;t# )r+   i  zc
Subclass of `ErbLexer` which highlights data outside preprocessor
directives with the `XmlLexer`.
zXML+Rubyzxml+rubyzxml+erbri   r   zapplication/xml+rubyrg   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r)   r   s   &,rs   rp   XmlErbLexer.__init__%      87w7ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   )r)   r   r$   r   s   & rs   r   XmlErbLexer.analyse_text(  s0    ""4(4/$#IB	ru   rm   r   r   s   @@rs   r+   r+     sC     
 D9%GMiO'(I
'C8 ru   c                   \   a a ] tR tRt oRtRtRR.tRtR.tR.t	R	t
V 3R
 ltR tRtVtV ;t# )r,   i/  zK
Subclass of `ErbLexer` which highlights unlexed data with the `CssLexer`.
zCSS+Rubyzcss+rubyzcss+erbri   r  ztext/css+rubyrg   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r)   r   s   &,rs   rp   CssErbLexer.__init__;  r  ru   c                :    \         P                  V 4      R ,
          # r  r)   r   r   s   &rs   r   CssErbLexer.analyse_text>      $$T*T11ru   rm   r   r   s   @@rs   r,   r,   /  sC      D9%GMiO !I
'C82 2ru   c                   ^   a a ] tR tRt oRtRt. R
OtRtR.t. ROt	Rt
V 3R ltR tR	tVtV ;t# )r-   iB  zR
Subclass of `ErbLexer` which highlights unlexed data with the
`JavascriptLexer`.
zJavaScript+Rubyri   r|  rg   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r)   r   s   &,rs   rp   JavascriptErbLexer.__init__Q      (>g>ru   c                :    \         P                  V 4      R ,
          # r  r  r   s   &rs   r   JavascriptErbLexer.analyse_textT  r  ru   rm   )zjavascript+rubyzjs+rubyzjavascript+erbzjs+erb)zapplication/x-javascript+rubyztext/x-javascript+rubyztext/javascript+rubyr   r   s   @@rs   r-   r-   B  s?     
 DHGMhO)I (C?2 2ru   c                   d   a a ] tR tRt oRtRtR.tR.tRt. ROt	. ROt
RtV 3R ltR	 tR
tVtV ;t# )r%   iX  z|
Subclass of `PhpLexer` that highlights unhandled data with the `HtmlLexer`.

Nested Javascript and CSS is highlighted too.
zHTML+PHPzhtml+phpz*.phtmlri   https://www.php.netc                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r   r   s   &,rs   rp   HtmlPhpLexer.__init__k  r  ru   c                t    \         P                  ! V 4      R ,
          p\        V 4      '       d
   VR,          pV# r  )r   r   r#   r   s   & rs   r   HtmlPhpLexer.analyse_textn  s0    ""4(4/%%#IB	ru   rm   )*.phpr   rp  rq  
*.php[345])zapplication/x-phpzapplication/x-httpd-phpzapplication/x-httpd-php3zapplication/x-httpd-php4zapplication/x-httpd-php5rz  r   s   @@rs   r%   r%   X  sI      DlGIM%OII  C9 ru   c                   \   a a ] tR tRt oRtRtR.tRt. ROtR.t	Rt
V 3R ltR	 tR
tVtV ;t# )r&   iu  zL
Subclass of `PhpLexer` that highlights unhandled data with the `XmlLexer`.
zXML+PHPzxml+phpri   zapplication/xml+phpr  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r   r   s   &,rs   rp   XmlPhpLexer.__init__  r  ru   c                t    \         P                  ! V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   )r   r   r$   r   s   & rs   r   XmlPhpLexer.analyse_text  s0    ""4(4/$#IB	ru   rm   )r   r  r  r   r   s   @@rs   r&   r&   u  s>      DkGM6O&'I
C8 ru   c                   Z   a a ] tR tRt oRtRtR.tRtR.tR.t	Rt
V 3R	 ltR
 tRtVtV ;t# )r'   i  zM
Subclass of `PhpLexer` which highlights unmatched data with the `CssLexer`.
zCSS+PHPzcss+phpri   r  ztext/css+phpr  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r   r   s   &,rs   rp   CssPhpLexer.__init__  r  ru   c                <    \         P                  ! V 4      R ,
          # r  r   r   r   s   &rs   r   CssPhpLexer.analyse_text  s    $$T*T11ru   rm   r   r   s   @@rs   r'   r'     s@      DkGMiO I
C82 2ru   c                   ^   a a ] tR tRt oRtRtRR.tRtR.t. ROt	Rt
V 3R	 ltR
 tRtVtV ;t# )r(   i  zT
Subclass of `PhpLexer` which highlights unmatched data with the
`JavascriptLexer`.
zJavaScript+PHPzjavascript+phpzjs+phpri   r|  r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r   r   s   &,rs   rp   JavascriptPhpLexer.__init__  r  ru   c                .    \         P                  ! V 4      # r   r  r   s   &rs   r   JavascriptPhpLexer.analyse_text  s    $$T**ru   rm   )zapplication/x-javascript+phpztext/x-javascript+phpztext/javascript+phpr   r   s   @@rs   r(   r(     sD     
 D*GMhO(I  C?+ +ru   c                   \   a a ] tR tRt oRtRtR.tRt. ROtR.t	Rt
V 3R ltR	 tR
tVtV ;t# )r/   i  z
Subclass of the `SmartyLexer` that highlights unlexed data with the
`HtmlLexer`.

Nested Javascript and CSS is highlighted too.
zHTML+Smartyzhtml+smartyri   ztext/html+smartyr   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r.   r   s   &,rs   rp   HtmlSmartyLexer.__init__  r  ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r  )r.   r   r#   r   s   & rs   r   HtmlSmartyLexer.analyse_text  0    %%d+d2%%#IB	ru   rm   )r   rp  rq  r   r   r   s   @@rs   r/   r/     s>      DoGM=O#$I
#C< ru   c                   \   a a ] tR tRt oRtRtR.tRtRR.tR.t	R	t
V 3R
 ltR tRtVtV ;t# )r0   i  zQ
Subclass of the `SmartyLexer` that highlights unlexed data with the
`XmlLexer`.
z
XML+Smartyz
xml+smartyri   r   r   zapplication/xml+smartyr   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r.   r   s   &,rs   rp   XmlSmartyLexer.__init__  r  ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   )r.   r   r$   r   s   & rs   r   XmlSmartyLexer.analyse_text  0    %%d+d2$#IB	ru   rm   r   r   s   @@rs   r0   r0     sC     
 DnGM(O)*I
#C; ru   c                   \   a a ] tR tRt oRtRtR.tRtRR.tR.t	R	t
V 3R
 ltR tRtVtV ;t# )r1   i  zQ
Subclass of the `SmartyLexer` that highlights unlexed data with the
`CssLexer`.
z
CSS+Smartyz
css+smartyri   r  r   ztext/css+smartyr   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r.   r   s   &,rs   rp   CssSmartyLexer.__init__  r  ru   c                :    \         P                  V 4      R ,
          # r  r.   r   r   s   &rs   r   CssSmartyLexer.analyse_text  r  ru   rm   r   r   s   @@rs   r1   r1     sC     
 DnGM(O"#I
#C;5 5ru   c                   `   a a ] tR tRt oRtRtRR.tRtRR.t. ROt	R	t
V 3R
 ltR tRtVtV ;t# )r2   i  zX
Subclass of the `SmartyLexer` that highlights unlexed data with the
`JavascriptLexer`.
zJavaScript+Smartyzjavascript+smartyz	js+smartyri   r|  r   r   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r.   r   s   &,rs   rp   JavascriptSmartyLexer.__init__  r  ru   c                :    \         P                  V 4      R ,
          # r  r  r   s   &rs   r   "JavascriptSmartyLexer.analyse_text
  r  ru   rm   )zapplication/x-javascript+smartyztext/x-javascript+smartyztext/javascript+smartyr   r   s   @@rs   r2   r2     sH     
 D"K0GMw'O+I $CB5 5ru   c                   h   a a ] tR tRt oRtRt. ROt. ROtRt. ROt	RR.t
RtV 3R ltR	 tR
tVtV ;t# )r4   i  z
Subclass of the `DjangoLexer` that highlights unlexed data with the
`HtmlLexer`.

Nested Javascript and CSS is highlighted too.
zHTML+Django/Jinjari   ztext/html+djangoztext/html+jinjar   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3   r   s   &,rs   rp   HtmlDjangoLexer.__init__  r  ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r  )r3   r   r#   r   s   & rs   r   HtmlDjangoLexer.analyse_text!  r  ru   rm   )zhtml+djangoz
html+jinja
htmldjango)z	*.html.j2z*.htm.j2z
*.xhtml.j2z*.html.jinja2z*.htm.jinja2z*.xhtml.jinja2ro  rz  r   s   @@rs   r4   r4     sD      D9GjIM4O#%67I
AC< ru   c                   f   a a ] tR tRt oRtRtRR.tRR.tRtR	.t	R
R.t
RtV 3R ltR tRtVtV ;t# )r6   i(  zQ
Subclass of the `DjangoLexer` that highlights unlexed data with the
`XmlLexer`.
zXML+Django/Jinjaz
xml+djangoz	xml+jinjaz*.xml.j2z*.xml.jinja2ri   r   zapplication/xml+djangozapplication/xml+jinjar   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3   r   s   &,rs   rp   XmlDjangoLexer.__init__6  r  ru   c                r    \         P                  V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   )r3   r   r$   r   s   & rs   r   XmlDjangoLexer.analyse_text9  r  ru   rm   rz  r   s   @@rs   r6   r6   (  sP     
 D[)G^,IMiO)+BCI
AC; ru   c                   f   a a ] tR tRt oRtRtRR.tRR.tRtR	.t	R
R.t
RtV 3R ltR tRtVtV ;t# )r5   i@  zQ
Subclass of the `DjangoLexer` that highlights unlexed data with the
`CssLexer`.
zCSS+Django/Jinjaz
css+djangoz	css+jinjaz*.css.j2z*.css.jinja2ri   r  ztext/css+djangoztext/css+jinjar   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3   r   s   &,rs   rp   CssDjangoLexer.__init__N  r  ru   c                :    \         P                  V 4      R ,
          # r  r3   r   r   s   &rs   r   CssDjangoLexer.analyse_textQ  r  ru   rm   rz  r   s   @@rs   r5   r5   @  sP     
 D[)G^,IMiO"$45I
AC;5 5ru   c                   f   a a ] tR tRt oRtRt. ROtRR.tRtR.t	. ROt
RtV 3R	 ltR
 tRtVtV ;t# )r7   iU  zX
Subclass of the `DjangoLexer` that highlights unlexed data with the
`JavascriptLexer`.
zJavaScript+Django/Jinjaz*.js.j2z*.js.jinja2ri   r|  r   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3   r   s   &,rs   rp   JavascriptDjangoLexer.__init__i  r  ru   c                :    \         P                  V 4      R ,
          # r  r  r   s   &rs   r   "JavascriptDjangoLexer.analyse_textl  r  ru   rm   )zjavascript+djangoz	js+djangozjavascript+jinjazjs+jinja)zapplication/x-javascript+djangozapplication/x-javascript+jinjaztext/x-javascript+djangoztext/x-javascript+jinjaztext/javascript+djangoztext/javascript+jinjarz  r   s   @@rs   r7   r7   U  sM     
 %D/GM*IMhO*I BCB5 5ru   c                   Z    ] tR tRtRtRR]R3R]3R]3R]3.RR	]R
3R]! ]4      3./t	Rt
R# )JspRootLexerip  zd
Base for the `JspLexer`. Yields `Token.Other` for area outside of
JSP tags.

.. versionadded:: 0.7
r   <%\S?seczC</?jsp:(forward|getProperty|include|plugin|setProperty|useBean).*?>[^<]+<ry   r   [\w\W]+?(?=%>|\Z)rm   N)r   r   r   r   r   r   r!   r   r
   r   r   rm   ru   rs   r  r  p  s]     	w&Su5M
 	GV$!5#34
Fru   r  c                   Z   a a ] tR tRt oRtRtR.tR.tR.tRt	Rt
V 3R	 ltR
 tRtVtV ;t# )rH   i  z
Lexer for Java Server Pages.
zJava Server Pagejspz*.jspzapplication/x-jspz.https://projects.eclipse.org/projects/ee4j.jspr.  c                <   < \         SV `  ! \        \        3/ VB  R # r   r   rp   r   r  r   s   &,rs   rp   JspLexer.__init__  rX  ru   c                    \         P                  ! V 4      R ,
          p\        V 4      '       d
   VR,          pRV 9   d   RV 9   d
   VR,          pV# r   r   rx   ry   r   )r
   r   r$   r   s   & rs   r   JspLexer.analyse_text  sF    ##D)D0$#IB4<DDL#IB	ru   rm   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   r   s   @@rs   rH   rH     s@      DgG	I$%I
:CM< ru   c                   0  a  ] tR tRt o RtRtR.tR.tR.tRt	Rt
]P                  tR	R
]3R]P                   R3R]3R]P                   3R]! ]]P(                  ]R]]4      3R]! ]]P(                  ]R]]! ]4      ]4      3R]! ]]P(                  ]R]! ]4      ]4      3R]! ]]P(                  4      3R]! ]R]! ]4      ]P(                  RR]4      3R]3.
RR]P                   3R]P                   R3R]P                   R3R]P                   3./tR tRtV tR# )rM   i  z/
For files using the Evoque templating system.
Evoqueevoquez*.evoquezapplication/x-evoquehttps://gizmojo.org/templating1.1r   z[^#$]+z#\[commentz\$\$z\$\w+:[^$\n]*\$z'(\$)(begin|end)(\{(%)?)(.*?)((?(4)%)\})Nz>(\$)(evoque|overlay)(\{(%)?)(\s*[#\w\-"\'.]+)?(.*?)((?(4)%)\})z!(\$)(\w+)(\{(%)?)(.*?)((?(4)%)\})z(\$)(else|rof|fi)z%(\$\{(%)?)(.*?)((!)(.*?))?((?(2)%)\})#z[^\]#]r   z\]#r   z[\]#]c                    RV 9   d   ^# R# )z.Evoque templates use $evoque, which is unique.z$evoqueNrm   r   s   &rs   r   EvoqueLexer.analyse_text  s     ru   rm   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r)  r   r   r   r  r   r   r   r   r   r   r   r   s   @rs   rM   rM     s     DjGI'(I
*CMIIE 	W&&	2e!2!237k4<<dk+,!k4<<deK0+?@
 2k4<<dK(+78 "8K#FG5k4{);llD$=> 5M9
< 	))*W&&0W&&/w(()	
?%FN ru   c                   Z   a a ] tR tRt oRtRtR.tR.tR.tRt	Rt
V 3R	 ltR
 tRtVtV ;t# )rN   i  zR
Subclass of the `EvoqueLexer` that highlights unlexed data with the
`HtmlLexer`.
zHTML+Evoquezhtml+evoquer   ztext/html+evoquer   r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rM   r   s   &,rs   rp   EvoqueHtmlLexer.__init__  r  ru   c                ,    \         P                  V 4      # r   rM   r   r   s   &rs   r   EvoqueHtmlLexer.analyse_text      ''--ru   rm   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   r   s   @@rs   rN   rN     s@      DoGjO#$I
*CM<. .ru   c                   Z   a a ] tR tRt oRtRtR.tR.tR.tRt	Rt
V 3R	 ltR
 tRtVtV ;t# )rO   i  zQ
Subclass of the `EvoqueLexer` that highlights unlexed data with the
`XmlLexer`.
z
XML+Evoquez
xml+evoquer   zapplication/xml+evoquer   r  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rM   r   s   &,rs   rp   EvoqueXmlLexer.__init__  r  ru   c                ,    \         P                  V 4      # r   r
  r   s   &rs   r   EvoqueXmlLexer.analyse_text  r  ru   rm   r  r   s   @@rs   rO   rO     s@      DnGiO)*I
*CM;. .ru   c                       ] tR tRtRtRtR.t. t. tRt	Rt
]P                  tRR]P                  3R	]P                   3R
]3R]3R]3R]3R]3R]3R]3R]P&                  R3R]P                  3R]3R]3R]P,                  3R]P,                  3R]! ]P2                  ]]4      3R]P8                  3R]3R]3.RR]P&                  3R]P:                  3R]P&                  3R]P&                  3R]P&                  R 3./tR!tR"# )#rP   i  z
Coldfusion statements
cfstatementcfs5https://www.adobe.com/products/coldfusion-family.htmlri   r   z//.*?\nz/\*(?:.|\n)*?\*/z\+\+|--z
[-+*/^&=!]z<=|>=|<|>|==zmod\bz"(eq|lt|gt|lte|gte|not|is|and|or)\bz\|\||&&z\?re  stringr3  \d+z(if|else|len|var|xml|default|break|switch|component|property|function|do|try|catch|in|continue|for|return|while|required|any|array|binary|boolean|component|date|guid|numeric|query|string|struct|uuid|case)\br   zD(application|session|client|cookie|super|this|variables|arguments)\bz([a-z_$][\w.]*)(\s*)(\()z[a-z_$][\w.]*z[()\[\]{};:,.\\]r   z""z#.+?#z[^"#]+r  r   rm   N) r   r   r   r   r   r   r   r   r   r   r   r   
IGNORECASEr   r   r   r)  r   r   r   r    r   r   r   r   r   r   r   r   Interpr   r   rm   ru   rs   rP   rP     sb    DgGII
ACMMME 	( '"3"34"H%h'x 2H="H6==(+ v}}%VMNUW $W%5%56T]](dmmT;79t}}- +.TN3
6 	FMM"v}}%&6==!6==&)
9#Fru   c                      ] tR tRtRtRtR.t. t. tRt	RR]
3]! R4      R	]
3.RR
]P                  R3R]3R]P                  R3R]! ]P                  ]! ]4      ]P                  4      3R]! ]P                  ]! ]4      ]P                  4      3.RR]
3R]! ]]! ]4      ]4      3R]P                  R3]! R4      R]
3R]
3.RR
]P                  R3R]P                  R3R]P                  3./tRtR# )ColdfusionMarkupLexeri2  z
Coldfusion markup only

Coldfusioncfr  r   r  tagsz<[^<>]*z<!---	cfcommentz(?s)<!--.*?-->z<cfoutput.*?>cfoutputz((?s)(<cfscript.*?>)(.+?)(</cfscript.*?>)z(?s)(</?cf(?:component|include|if|else|elseif|loop|return|dbinfo|dump|abort|location|invoke|throw|file|savecontent|mailpart|mail|header|content|zip|image|lock|argument|try|catch|break|directory|http|set|function|param)\b)(.*?)((?<!\\)>)z[^#<]+z(#)(.*?)(#)z</cfoutput.*?>r   z(?s)<[^<>]*r  r   z--->z([^<-]|<(?!!---)|-(?!-->))+rm   N)r   r   r   r   r   r   r   r   r   r   r!   r   r   r)  r   r  r   r   rP   r   r   r   rm   ru   rs   r  r  2  sP    DfGII
AC 	uFO

 	w((+6(t||Z88dllE/$:DLLIKQ dllE/$:DLLI	K
 	Xk53I&13 4 f5FOU#5M	
 	w(('2g''0+W->->?
;"Fru   r  c                   V   a a ] tR tRt oRtRtR.tRR.tR.tRt	R	t
V 3R
 ltRtVtV ;t# )rQ   ia  z
Coldfusion markup in html
zColdfusion HTMLcfmz*.cfmz*.cfmlzapplication/x-coldfusionr  ri   c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r  r   s   &,rs   rp   ColdfusionHtmlLexer.__init__l  s    $9EWEru   rm   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   s   @@rs   rQ   rQ   a  s@      DgG(#I+,I
ACMF Fru   c                   R   a a ] tR tRt oRtRtR.tR.t. tRt	Rt
V 3R ltR	tVtV ;t# )
rR   ip  z%
Coldfusion markup/script components
zColdfusion CFCcfcz*.cfcr  2.0c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   rQ   rP   r   s   &,rs   rp   ColdfusionCFCLexer.__init__{  s    ,oIIru   rm   r&  r   s   @@rs   rR   rR   p  s:      DgG	II
ACMJ Jru   c                   Z   a a ] tR tRt oRtRtR.tR.tR.tRt	Rt
V 3R	 ltR
 tRtVtV ;t# )rV   i  z!
Lexer for Scalate Server Pages.
zScalate Server Pagesspz*.sspzapplication/x-sspz"https://scalate.github.io/scalate/r#  c                <   < \         SV `  ! \        \        3/ VB  R # r   r  r   s   &,rs   rp   SspLexer.__init__  rX  ru   c                    R p\         P                  ! RV 4      '       d
   VR,          p\        V 4      '       d
   VR,          pRV 9   d   RV 9   d
   VR,          pV# )r   zval \w+\s*:g333333?rm  rx   ry   r   )r   r   r$   r   s   & rs   r   SspLexer.analyse_text  sP    99^T**#IB$#IB4<DDL#IB	ru   rm   r  r   s   @@rs   rV   rV     s@      !DgG	I$%I
.CM< ru   c                   T    ] tR tRtRtRR]R3R]3R]3.RR]R	3R
]! ]4      3./t	Rt
R# )TeaTemplateRootLexeri  zo
Base for the `TeaTemplateLexer`. Yields `Token.Other` for area outside of
code blocks.

.. versionadded:: 1.5
r   r  r  r  r  ry   r   r  rm   N)r   r   r   r   r   r   r!   r   r   r   r   rm   ru   rs   r3  r3    sR     	w&u5M

 	GV$!5#67
Fru   r3  c                   Z   a a ] tR tRt oRtRtR.tR.tR.tRt	Rt
V 3R	 ltR
 tRtVtV ;t# )rW   i  z
Lexer for Tea Templates.
Teateaz*.teaz
text/x-teaz$https://github.com/teatrove/teatrovez1.5c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3  r   s   &,rs   rp   TeaTemplateLexer.__init__  s    #7C7Cru   c                    \         P                  ! V 4      R ,
          p\        V 4      '       d
   VR,          pRV 9   d   RV 9   d
   VR,          pV# r  )r   r   r$   r   s   & rs   r   TeaTemplateLexer.analyse_text  sF    &&t,t3$#IB4<DDL#IB	ru   rm   r  r   s   @@rs   rW   rW     s@      DgG	II
0CMD ru   c                   ^   a a ] tR tRt oRtRtR.tRt. R
Ot. ROt	Rt
V 3R ltR tR	tVtV ;t# )rX   i  z
Subclass of the `LassoLexer` which highlights unhandled data with the
`HtmlLexer`.

Nested JavaScript and CSS is also highlighted.
z
HTML+Lassoz
html+lasso1.6https://www.lassosoft.comc                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r   r   s   &,rs   rp   LassoHtmlLexer.__init__  s    J:':ru   c                t    \         P                  ! V 4      R ,
          p\        V 4      '       d
   VR,          pV# r  )r   r   r#   r   s   & rs   r   LassoHtmlLexer.analyse_text  s0    $$T*T1%%#IB	ru   rm   )r   rp  rq  *.lasso*.lasso[89]*.incl*.inc*.las)ztext/html+lassozapplication/x-httpd-lassozapplication/x-httpd-lasso[89]r   r   s   @@rs   rX   rX     sA      DnGM3O2I &C; ru   c                   \   a a ] tR tRt oRtRtR.tRt. ROtR.t	Rt
V 3R ltR	 tR
tVtV ;t# )rY   i  zS
Subclass of the `LassoLexer` which highlights unhandled data with the
`XmlLexer`.
z	XML+Lassoz	xml+lassor<  zapplication/xml+lassor=  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r   r   s   &,rs   rp   LassoXmlLexer.__init__  s    :99ru   c                t    \         P                  ! V 4      R ,
          p\        V 4      '       d
   VR,          pV# r   )r   r   r$   r   s   & rs   r   LassoXmlLexer.analyse_text  s0    $$T*T1$#IB	ru   rm   )r   rB  rC  rD  rE  rF  r   r   s   @@rs   rY   rY     s@     
 DmGM3O()I
%C: ru   c                   Z   a a ] tR tRt oRtRtR.tRtR.tR.t	Rt
V 3R	 ltR
 tRtVtV ;t# )rZ   i  zS
Subclass of the `LassoLexer` which highlights unhandled data with the
`CssLexer`.
z	CSS+Lassoz	css+lassor<  r  ztext/css+lassor=  c                F   < R VR&   \         SV `  ! \        \        3/ VB  R# TrequiredelimitersN)r   rp   r   r   r   s   &,rs   rp   LassoCssLexer.__init__  s"    '+#$:99ru   c                    \         P                  ! V 4      R ,
          p\        P                  ! RV 4      '       d
   VR,          pRV 9   d
   VR,          pV# )r  z
\w+:[^;]+;r   zpadding:)r   r   r   r   r   s   & rs   r   LassoCssLexer.analyse_text
  sG    $$T*T199]D))#IB#IB	ru   rm   r   r   s   @@rs   rZ   rZ     s@     
 DmGMiO!"I
%C: ru   c                   ^   a a ] tR tRt oRtRtRR.tRtR.t. ROt	Rt
V 3R	 ltR
 tRtVtV ;t# )r[   i  zZ
Subclass of the `LassoLexer` which highlights unhandled data with the
`JavascriptLexer`.
zJavaScript+Lassozjavascript+lassozjs+lassor<  r|  r=  c                F   < R VR&   \         SV `  ! \        \        3/ VB  R# rN  )r   rp   r   r   r   s   &,rs   rp   LassoJavascriptLexer.__init__"  s"    '+#$*@@ru   c                @    \         P                  ! V 4      R ,
          pV# r  )r   r   r   s   & rs   r   !LassoJavascriptLexer.analyse_text&  s    $$T*T1	ru   rm   )zapplication/x-javascript+lassoztext/x-javascript+lassoztext/javascript+lassor   r   s   @@rs   r[   r[     sE     
 D!:.GMhO*I &CA ru   c                      ] tR tRtRtRtRtR.tRtRR]	3R	]
3R
]! ]
P                  ]4      R3R]! ]
P                  ]P                   ]P                   4      R3R]! ]
P                  ]4      R3.RR]3R]
P                  R3R]! ]]
P                  4      R3R]! ]P                   ]4      3R]! ]]]4      3R]! ]]]P(                  4      3R]! ]]]4      R3]! R4      .RR]3R]R3R]! ]]]P(                  ]4      3R]! ]]]! ]RR7      4      3R]P2                  3]! R4      .RR]P(                  3R]P(                  3R ]P(                  3.R]! R4      R!]P6                  3R"]P8                  3R#]3./tR$tR%# )&r\   i+  z
Generic handlebars template lexer.

Highlights only the Handlebars template tags (stuff between `{{` and `}}`).
Everything else is left for a delegating lexer.

Handlebarshttps://handlebarsjs.com/
handlebarsr)  r   r   z\{\{!.*\}\}z(\{\{\{)(\s*)r   z(\{\{)([#~/]+)([^\s}]*)(\{\{)(\s*)r   z\}\}\}r   z
(~?)(\}\})z([^\s}]+)(=)z(>)(\s*)(@partial-block)z(#?>)(\s*)([\w-]+)z(>)(\s*)(\()zdynamic-partialgenericr   z(lookup)(\s+)(\.|this)(\s+)z(lookup)(\s+)(\S+)r   r   z[\w-]+z[()/@a-zA-Z][\w-]*z\.[\w-]+z(this\/|\.\/|(\.\.\/)+)[\w-]+r   r   r   rm   N)r   r   r   r   r   r   r   r   r   r!   r   r   Specialr   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   ru   rs   r\   r\   +  s    D
%CnGM 	u W% x>F (goov'7'79I9IJESXgoot<eD
 	TN0HVW__=vF ht~~x@A )(7D'*JK"HWdDMM$JKhwkB  I!
$ 	TNK(+Xgt6:mmT.K L"HWd-24z-J%L M&I
 	"DMM2$--(-t}}=

 	J +FMM:*FMM:'(.0
g<Fru   c                   X   a a ] tR tRt oRtRtR.tRR.tRR.tR	t	R
t
V 3R ltRtVtV ;t# )r]   iw  zV
Subclass of the `HandlebarsLexer` that highlights unlexed data with the
`HtmlLexer`.
zHTML+Handlebarszhtml+handlebarsz*.handlebarsz*.hbsztext/html+handlebarsztext/x-handlebars-templaterZ  r)  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r\   r   s   &,rs   rp   HandlebarsHtmlLexer.__init__  s    O?w?ru   rm   r&  r   s   @@rs   r]   r]   w  sD     
 D !G)I')EFI
%CM@ @ru   c                   Z   a a ] tR tRt oRtRt. R
Ot. ROtRR.tRt	Rt
V 3R ltR	tVtV ;t# )r^   i  z{
Subclass of the `DjangoLexer` that highlights unlexed data with the
`YamlLexer`.

Commonly used in Saltstack salt states.
z
YAML+Jinjaztext/x-yaml+jinjaz
text/x-sls!https://jinja.palletsprojects.comr)  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3   r   s   &,rs   rp   YamlJinjaLexer.__init__  r  ru   rm   )z
yaml+jinjasaltsls)z*.slsz	*.yaml.j2z*.yml.j2z*.yaml.jinja2z*.yml.jinja2r&  r   s   @@rs   r^   r^     s9      D+GSI$l3I
-CM< <ru   c                      ] tR tRtRtRtRtR.tR.tRt	/ RR]
3R	]! ]]4      R
3R]! ]]]! ]RR7      4      R3R]
3.bR
R]P"                  R3R]! ]P"                  ]4      ]! RRR4      3R]! ]P"                  ]]4      R3R]! ]P(                  ]]! ]RR7      ]]4      R3R]! ]P(                  ]]4      R3R]! ]P(                  ]]4      R3R]! ]P"                  R]]4      R3R]! ]P(                  R]]4      R3R ]! ]P(                  ]]! ]RR7      ]]4      R!3R"]! ]P(                  ]4      R#3.
bR]! R4      R$]R3R%]R&3.bR&]! R4      R$]RJ3R']! ]P,                  ]]4      R(3.bR(R%]R3]! R)4      ]! R*4      .bR]! R4      ]! R4      R+]! ]! ]RR7      ]]]]! ]RR7      ]]4      3R,]3R-]P0                  3R.]! ]! ]RR7      ]]P0                  ]]! ]RR7      4      3]! R4      ]! R4      .bR/]! R4      ]! R04      .bR1R2]! ]]R]4      R3R3]! ]]P0                  ]4      R3.bR)R$]R3.bRR4]RJ3.bR0R5]R3.bR6]! R4      R7]! ]P2                  ]]4      3R8]! ]]]! ]RR7      ]]4      3]! R94      ]! R:4      ]! R;4      R<]3.bR*]! R64      R=]
3.bR>]! R64      ]! R4      R=]
3.bR#R4]RJ3]! R*4      .bR!R4]RJ3]! R>4      .bR;R?]P4                  3.bRR@]P6                  3RA]3.R9RB]P:                  3RC]P<                  3.R:RD]P@                  3RE]PB                  3.R]! R;4      ]! R94      ]! R:4      ]! R4      .RRF]3.RRG]! ]]]P(                  ]]4      RJ3R=]"3.RR]
3RH]! ]]]P(                  ]]4      R3R]
3./Ct#RIt$R# )Kr_   i  z
Lexer for Liquid templates.
liquidz.https://www.rubydoc.info/github/Shopify/liquidz*.liquidr)  r   r   z
(\{%)(\s*)ztag-or-blockz(\{\{)(\s*)([^\s}]+)r]  r^  outputr   z(if|unless|elsif|case)(?=\s+)	conditionz(when)(\s+)zend-of-block
whitespacez(else)(\s*)(%\})r   z!(capture)(\s+)([^\s%]+)(\s*)(%\})r   z(comment)(\s*)(%\})r  z(raw)(\s*)(%\})rawz(end(case|unless|if))(\s*)(%\})Nz(end([^\s%]+))(\s*)(%\})z"(cycle)(\s+)(?:([^\s:]*)(:))?(\s*)zvariable-tag-markupz([^\s%]+)(\s*)z
tag-markup\}\}z\|filtersz([^\s|:]+)(:?)(\s*)zfilter-markupz
end-of-tagzdefault-param-markupz/([^\s=!><]+)(\s*)([=!><]=?)(\s*)(\S+)(\s*)(%\})z\b!z\bnot\bz*([\w.\'"]+)(\s+)(contains)(\s+)([\w.\'"]+)zgeneric-valuezend-at-whitespaceoperatorz(\s*)((=|!|>|<)=?)(\s*)z(\s*)(\bcontains\b)(\s*)z%\}r   zparam-markupz([^\s=:]+)(\s*)(=|:)z(\{\{)(\s*)([^\s}])(\s*)(\}\})r  numberkeyword,r   zvariable-param-markupz\b(false|true)\br   z(?<=\w)\.(?=\w)z'[^']*'z"[^"]*"z\d+\.\d+r  z[ \t]+z (\{%)(\s*)(endcomment)(\s*)(%\})z(\{%)(\s*)(endraw)(\s*)(%\})rm   )r   r   )%r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Reservedr   r   r  r   r   r   Wordr   r   r   r   r   r   r    FloatIntegerr   r   r   rm   ru   rs   r_   r_     s    D
:CjGIM@tH[*=~N$k:uT9/MN DM	
@ 	-w/?/?MXg&6&6
CnlI>@ g&&
K@&J 2dhh
E$
,K +/068 $dhh
K8)Edhh
K8%A 0g&&j+FP(dhhj+>H 3dhh
D	2KM"$ : >M=
@Z 	L!k6*K+	
[@h 	L!k#34#dmm[*=P	
i@x 	K(L!*+
y@D 	N#L!?eD)4j( %i"@*!#$ X':eD)4j(-- %i"@BC IL!
E@h 	I'(
i@r 	'j(D*=vG(j(--<fF
s@@ 	k6*
A@H 	["23
I@P 	Z(
Q@Z 	L!$dnnj(;= /k:uT:/N +/0 HHI;
[@z 	N#4L!
{@D 	 N#J4L"
E@P 	["23*+
Q@Z 	["23+, 
[@f 	 '"2"23
g@n 	dmm,-

 	''

 	&,,'V^^$

 	IHHJ	
 	
#

 	0k:txx!#$46 7O	
 	t,k:txx!#$*, DM
s@Fru   c                      ] tR tRtRtRtR.tR.tRtRt	]
P                  ]
P                  ,          tRtR	tR
],           R,           t]],           tRR]3R]P(                  R3R]3R]! ]P(                  ]]]]P(                  ]]P(                  ]]]]P(                  4      3R]! ]P(                  ]]]]P(                  ]]P(                  ]]]]P(                  4      3R] R2]! ]P(                  ]]]]P2                  4      R3R]! ]P(                  ]]4      R3R]3.RR] R2]! ]]]P2                  4      3R] R2]! ]]]]]P2                  4      3R]P6                  3R]3R]P8                  3]]P:                  3R],           ]P:                  3R]3R ]P@                  3R!]PB                  3R"]3R#]3.RR$]3R%]! ]]P(                  4      R&3]"! R4      .RR$]3R']! ]]P(                  4      R&3]"! R4      R(]#3./t$R)t%R*# )+r`   ih  z
Twig template lexer.

It just highlights Twig code between the preprocessor directives,
other data is left untouched by the lexer.
Twigtwigzapplication/x-twighttps://twig.symfony.comr)  z[\\\w-]|[^\x00-\x7f]z(?:[\\_a-z]|[^\x00-\x7f])z(?:z)*r   r   r   r   z\{\#.*?\#\}r   zL(\{%)(-?\s*)(verbatim)(\s*-?)(%\})(.*?)(\{%)(-?\s*)(endverbatim)(\s*-?)(%\})z(\{%)(-?\s*)(filter)(\s+)(r   r   r   r   r   z
(\|)(\s*)(z(is)(\s+)(not)?(\s*)(z(?i)(true|false|none|null)\bz(in|not|and|b-and|or|b-or|b-xor|isif|elseif|else|importconstant|defined|divisibleby|empty|even|iterable|odd|sameasmatches|starts\s+with|ends\s+with)\bz(loop|block|parent)\bz\.z\.[0-9]+r   r   z4([{}()\[\]+\-*/,:~%]|\.\.|\?|:|\*\*|\/\/|!=|[><=]=?)r   r   r   r   r   r   rm   N)&r   r   r   r   r   r   r   r   r   r   r   r   r   r   _ident_char_ident_begin
_ident_end_ident_innerr!   r   r   r   r   r   r   r   r   r   r  r   r    r   r   r   r   r   r   r   rm   ru   rs   r`   r`   h  s    DhG%&I
$CMDD244KE *K/L+%,J*,L 	ugoou-W%1gootWdGOOW__dGToo'(
6gootWdGOOW__dGToo'( ,L>;gootWdDMMJ +gootW5u>EN-
0 	<.*hdmm46%l^15gtWdDMMBD,gnn=5 	
 &t||44==)\!4==1&!*FMM:*FMM:DhO'(.0%
* 	TNHT7??;VDJ

 	TN8D'//:FCJ;	
g9Fru   c                   T   a a ] tR tRt oRtRtR.tR.tR.tRt	Rt
V 3R	 ltR
tVtV ;t# )ra   i  zP
Subclass of the `TwigLexer` that highlights unlexed data with the
`HtmlLexer`.
z	HTML+Twigz	html+twigz*.twigztext/html+twigr|  r)  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r`   r   s   &,rs   rp   TwigHtmlLexer.__init__  r8  ru   rm   r&  r   s   @@rs   ra   ra     s;     
 DmG
I!"I
$CM: :ru   c                      ] tR tRtRtRtRtR.tRtRR]	3R	]
! ]P                  ]4      R
3R]
! ]]P                   ]]]]4      R3R]
! ]]P                   ]]4      3R]
! ]]P                   ]]]4      R3R]
! ]]P                   ]4      3.R
R]3R]P                  R3R]P&                  3R]P(                  3R]P*                  3R]3R]P.                  3R]P.                  3R]
! ]]]]]]]]4      3.	RR]R3R]R3R]R3./tRtR# )rb   i  z
Generic angular2 template lexer.

Highlights only the Angular template tags (stuff between `{{` and `}}` and
special attributes: '(event)=', '[property]=', '[(twoWayBinding)]=').
Everything else is left for a delegating lexer.
Angular2(https://angular.io/guide/template-syntaxng2z2.1r   z	[^{([*#]+r\  ngExpressionz&([([]+)([\w:.-]+)([\])]+)(\s*)(=)(\s*)r1  z([([]+)([\w:.-]+)([\])]+)(\s*)z([*#])([\w:.-]+)(\s*)(=)(\s*)z([*#])([\w:.-]+)(\s*)z\s+(\|\s+)?ro  r   z:?(true|false)r   r   r   z[a-zA-Z][\w-]*(\(.*\))?z\.[\w-]+(\(.*\))?z-(\?)(\s*)([^}\s]+)(\s*)(:)(\s*)([^}\s]+)(\s*)r2  r3  r4  rm   N)r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   Booleanr   r   r    r   r   r   rm   ru   rs   rb   rb     s    D
4CgGM 	5! Xgoot<nM 7k4>>;hPTU /k4>>;EG .k4>>44H&R%k4>>48:!
( 	T"goov. /*FMM:*FMM:'(.0 (7!4==1 >hfdHdFDQS!
& 	ff%ff%(
Q-Fru   c                   N   a a ] tR tRt oRtRtR.tR.tRtRt	V 3R lt
R	tVtV ;t# )
rc   i
	  zT
Subclass of the `Angular2Lexer` that highlights unlexed data with the
`HtmlLexer`.
zHTML + Angular2zhtml+ng2z*.ng2r  r)  c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   rb   r   s   &,rs   rp   Angular2HtmlLexer.__init__	  r   ru   rm   )r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   s   @@rs   rc   rc   
	  s3     
 DlG	I
4CM> >ru   c                   V   a a ] tR tRt oRtRtR.t. R
OtRtRt	V 3R lt
R tR	tVtV ;t# )rd   i	  z
Templated SQL lexer.
z	SQL+Jinjaz	sql+jinjard  z2.13c                <   < \         SV `  ! \        \        3/ VB  R # r   )r   rp   r   r3   r   s   &,rs   rp   SqlJinjaLexer.__init__%	  r  ru   c                    R p\         P                  ! RV 4      '       d
   VR,          p\         P                  ! RV 4      '       d
   VR,          p\         P                  ! RV 4      '       d
   VR,          pV# )r   z\{\{\s*ref\(.*\)\s*\}\}r   z\{\{\s*source\(.*\)\s*\}\}r   z\{%-?\s*macro \w+\(.*\)\s*-?%\}r   r   r   s   & rs   r   SqlJinjaLexer.analyse_text(	  s]    99/66#IB992D99$JB997>>$JB	ru   rm   )z*.sqlz*.sql.j2z*.sql.jinja2)r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   r   s   @@rs   rd   rd   	  s6      DmG5I
-CM; ru   )wr   r   pygments.lexers.htmlr   r   pygments.lexers.javascriptr   r   pygments.lexers.cssr   pygments.lexers.phpr   pygments.lexers.pythonr   pygments.lexers.perlr	   pygments.lexers.jvmr
   r   pygments.lexers.datar   pygments.lexers.sqlr   pygments.lexerr   r   r   r   r   r   r   r   r   pygments.tokenr   r   r   r   r   r   r   r   r   r    r!   r"   pygments.utilr#   r$   __all__r)   r.   rS   rT   rU   r3   r=   r>   r?   rA   r@   rB   rC   rD   rE   rF   rG   rD  rI   rJ   rK   rL   r:   rb  r9   r8   r<   r;   r*   r+   r,   r-   r%   r&   r'   r(   r/   r0   r1   r2   r4   r6   r5   r7   r  rH   rM   rN   rO   rP   r  rQ   rR   rV   r3  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   rm   ru   rs   <module>r     s;   
 4 B ( ( . * 7 * (, , ,I I I I >> = - !+-9')=  , .> 	 5	 7D	
 
 /
 1A # %2 4E  / 1H  , .>  5 7C EP  + -B  & (6 8J  7 9F  / 1B ! #7 9H  !3 5?  !   0!  2A!" #" 3#" 5F#$ !%$ #3%$ 5B%& '& ('& *9'& ;N'( ).]u ]@7* 7tQJ Qh> >$ 0R* Rj+* +\<o < ;_ ; BO B$;_ ; 3 3l?
 ?D:O : 9? 9 @/ @$9? 9$
$ 
$*: *Z= = <o < C_ C,!j !H=
 =@8o 827/ 745O 5,5_ 5& 8/ .2/ 2&2 2,? :/ ,2/ 2&+ +,o 2_ .5_ 5(5O 5,o 4_ 05_ 5*5O 56: 2 .7* 7r.o .&._ .&0j 0f,J ,^F/ FJ J 2: , ._ 8O 0O 4? 0Ij IX@/ @"<_ <&J* JZP
 Pf:O :";J ;|> > O ru   