hyb
2025-11-18 7539e6f48c75dcaeb808359cccfd1c0d0d182ce8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
Ë
ñúhŠãóX—dZddlZddlZddlZddlmZmZddlmZddl    m
Z
m Z m Z m Z mZddlmZmZmZmZmZmZddlmZgd¢Zej2d    «Zgd
¢Zed „«ZGd „d e«ZGd„de¬«Z Gd„de «Z!Gd„de"«Z#Gd„d«Z$e$«Z%Gd„de&«Z'Gd„d«Z(d„Z)Gd„d«Z*e*«Z+d„Z,Gd„d «Z-Gd!„d"e«Z.Gd#„d$e«Z/Gd%„d&e e/¬«Z0Gd'„d(«Z1Gd)„d*e0«Z2d+„Z3Gd,„d-e/«Z4Gd.„d/e0e4¬«Z5y)0z´
    pygments.lexer
    ~~~~~~~~~~~~~~
 
    Base lexer classes.
 
    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
éN)Ú apply_filtersÚFilter)Úget_filter_by_name)ÚErrorÚTextÚOtherÚ
WhitespaceÚ
_TokenType)Ú get_bool_optÚ get_int_optÚ get_list_optÚmake_analysatorÚFutureÚ guess_decode)Ú    regex_opt) ÚLexerÚ
RegexLexerÚExtendedRegexLexerÚDelegatingLexerÚ LexerContextÚincludeÚinheritÚbygroupsÚusingÚthisÚdefaultÚwordsÚline_rez.*?
))szutf-8)sÿþzutf-32)sþÿzutf-32be)sÿþzutf-16)sþÿzutf-16becó—y)Nç©)Úxs úMH:\Change_password\venv_build\Lib\site-packages\pip/_vendor/pygments/lexer.pyú<lambda>r$"óócó—eZdZdZd„Zy)Ú    LexerMetaz‚
    This metaclass automagically converts ``analyse_text`` methods into
    static methods which always return float values.
    có\—d|vrt|d«|d<tj||||«S)NÚ analyse_text)rÚtypeÚ__new__)ÚmcsÚnameÚbasesÚds    r#r,zLexerMeta.__new__+s3€Ø ˜QÑ Ü /°°.Ñ0AÓ BˆAˆnÑ Ü|‰|˜C  u¨aÓ0Ð0r&N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r,r!r&r#r(r(%s „ñó
1r&r(có`—eZdZdZdZgZgZgZgZdZ    dZ
dZ dZ d„Z d„Zd„Zd„Zd„Zd d    „Zd
„Zy) ra"
    Lexer for a specific language.
 
    See also :doc:`lexerdevelopment`, a high-level guide to writing
    lexers.
 
    Lexer classes have attributes used for choosing the most appropriate
    lexer based on various criteria.
 
    .. autoattribute:: name
       :no-value:
    .. autoattribute:: aliases
       :no-value:
    .. autoattribute:: filenames
       :no-value:
    .. autoattribute:: alias_filenames
    .. autoattribute:: mimetypes
       :no-value:
    .. autoattribute:: priority
 
    Lexers included in Pygments should have two additional attributes:
 
    .. autoattribute:: url
       :no-value:
    .. autoattribute:: version_added
       :no-value:
 
    Lexers included in Pygments may have additional attributes:
 
    .. autoattribute:: _example
       :no-value:
 
    You can pass options to the constructor. The basic options recognized
    by all lexers and processed by the base `Lexer` class are:
 
    ``stripnl``
        Strip leading and trailing newlines from the input (default: True).
    ``stripall``
        Strip all leading and trailing whitespace from the input
        (default: False).
    ``ensurenl``
        Make sure that the input ends with a newline (default: True).  This
        is required for some lexers that consume input linewise.
 
        .. versionadded:: 1.3
 
    ``tabsize``
        If given and greater than 0, expand tabs in the input (default: 0).
    ``encoding``
        If given, must be an encoding name. This encoding will be used to
        convert the input string to Unicode, if it is not already a Unicode
        string (default: ``'guess'``, which uses a simple UTF-8 / Locale /
        Latin1 detection.  Can also be ``'chardet'`` to use the chardet
        library, if it is installed.
    ``inencoding``
        Overrides the ``encoding`` if given.
    Nrc ól—||_t|dd«|_t|dd«|_t|dd«|_t |dd«|_|jdd    «|_|jd
«xs |j|_g|_    t|d d «D]}|j|«Œy )a‘
        This constructor takes arbitrary options as keyword arguments.
        Every subclass must first process its own options and then call
        the `Lexer` constructor, since it processes the basic
        options like `stripnl`.
 
        An example looks like this:
 
        .. sourcecode:: python
 
           def __init__(self, **options):
               self.compress = options.get('compress', '')
               Lexer.__init__(self, **options)
 
        As these options must all be specifiable as strings (due to the
        command line usage), there are various utility functions
        available to help with that, see `Utilities`_.
        ÚstripnlTÚstripallFÚensurenlÚtabsizerÚencodingÚguessÚ
inencodingÚfiltersr!N) Úoptionsr r7r8r9r r:Úgetr;r>r Ú
add_filter)Úselfr?Úfilter_s   r#Ú__init__zLexer.__init__‘s¡€ð&ˆŒ Ü# G¨Y¸Ó=ˆŒ Ü$ W¨j¸%Ó@ˆŒ Ü$ W¨j¸$Ó?ˆŒ Ü" 7¨I°qÓ9ˆŒ ØŸ ™  J°Ó8ˆŒ ØŸ ™  LÓ1ÒB°T·]±]ˆŒ ؈Œ Ü# G¨Y¸Ó;ò    %ˆGØ O‰O˜GÕ $ñ    %r&cóœ—|jr'd|jj›d|j›dSd|jj›dS)Nz<pygments.lexers.z with ú>)r?Ú    __class__r1©rBs r#Ú__repr__zLexer.__repr__¯sI€Ø <Š<Ø& t§~¡~×'>Ñ'>Ð&?¸vÀdÇlÁlÐEUÐUVÐWÐ Wà& t§~¡~×'>Ñ'>Ð&?¸qÐAÐ Ar&c ór—t|t«s t|fi|¤Ž}|jj    |«y)z8
        Add a new stream filter to this lexer.
        N)Ú
isinstancerrr>Úappend)rBrCr?s   r#rAzLexer.add_filterµs/€ô˜'¤6Ô*Ü(¨Ñ<°GÑ<ˆGØ  ‰ ×јGÕ$r&có—y)aÁ
        A static method which is called for lexer guessing.
 
        It should analyse the text and return a float in the range
        from ``0.0`` to ``1.0``.  If it returns ``0.0``, the lexer
        will not be selected as the most probable one, if it returns
        ``1.0``, it will be selected immediately.  This is used by
        `guess_lexer`.
 
        The `LexerMeta` metaclass automatically wraps this function so
        that it works like a static method (no ``self`` or ``cls``
        parameter) and the return value is automatically converted to
        `float`. If the return value is an object that is boolean `False`
        it's the same as if the return values was ``0.0``.
        Nr!)Útexts r#r*zLexer.analyse_text½r%r&cóÚ—t|t«st|jdk(rt|«\}}nu|jdk(r     t    d«‚|j|j«}|j d«r.|td«d}n|j d«r|td«d}|jdd«}|jd    d«}|jr|j«}n|jr|jd«}|j d
kDr|j#|j «}|j$r|j'd«s|dz }|S#t$r}t    d«|‚d}~wwxYw) zVApply preprocessing such as decoding the input, removing BOM and normalizing newlines.r<Úchardetzchardet is not vendored by pipzkTo enable chardet encoding guessing, please install the chardet library from http://chardet.feedparser.org/Nuz
ú
ú r)rKÚstrr;rÚ ImportErrorÚ _encoding_mapÚ
startswithÚlenÚdecoderPÚdetectr@Úreplacer8Ústripr7r:Ú
expandtabsr9Úendswith)rBrNÚ_ÚeÚdecodedÚbomr;Úencs        r#Ú_preprocess_lexer_inputzLexer._preprocess_lexer_inputÎsH€ô˜$¤Ô$؏}‰} Ò'Ü& tÓ,‘‘aØ—‘ )Ò+ðTô&Ð&FÓGÐGð$—{‘{ 4§=¡=Ó1Ø—?‘? 8Ô,ؤ H£  Ð/‘Dà‰˜xÔ(ØœC ›M˜NÐ+ð|‰|˜F DÓ)ˆØ|‰|˜D $Ó'ˆØ =Š=Ø—:‘:“<‰DØ \Š\Ø—:‘:˜dÓ#ˆDØ <‰<˜!Ò Ø—?‘? 4§<¡<Ó0ˆDØ =Š= §¡¨tÔ!4Ø D‰LˆDàˆ øôI#òTÜ%ð'LóMàRSðTûðTús¿ EÅ    E*Å E%Å%E*cóx‡‡—‰j‰«Šˆˆfd„}|«}|st|‰j‰«}|S)ae
        This method is the basic interface of a lexer. It is called by
        the `highlight()` function. It must process the text and return an
        iterable of ``(tokentype, value)`` pairs from `text`.
 
        Normally, you don't need to override this method. The default
        implementation processes the options recognized by all lexers
        (`stripnl`, `stripall` and so on), and then yields all tokens
        from `get_tokens_unprocessed()`, with the ``index`` dropped.
 
        If `unfiltered` is set to `True`, the filtering mechanism is
        bypassed even if filters are defined.
        c3óN•K—‰j‰«D] \}}}||f–—Œy­w©N)Úget_tokens_unprocessed)r^ÚtÚvrBrNs   €€r#Ústreamerz"Lexer.get_tokens.<locals>.streamers0øèø€Ø×6Ñ6°tÓ<ò ‘1aؘd“
ñ ùsƒ"%)rcrr>)rBrNÚ
unfilteredrjÚstreams``   r#Ú
get_tokenszLexer.get_tokensÿs=ù€ð×+Ñ+¨DÓ1ˆõ    ñ“ˆÙÜ" 6¨4¯<©<¸Ó>ˆF؈ r&có—t‚)aS
        This method should process the text and return an iterable of
        ``(index, tokentype, value)`` tuples where ``index`` is the starting
        position of the token within the input text.
 
        It must be overridden by subclasses. It is recommended to
        implement it as a generator to maximize effectiveness.
        )ÚNotImplementedError)rBrNs  r#rgzLexer.get_tokens_unprocesseds
€ô"Ð!r&)F)r1r2r3r4r.ÚaliasesÚ    filenamesÚalias_filenamesÚ    mimetypesÚpriorityÚurlÚ version_addedÚ_examplerDrIrAr*rcrmrgr!r&r#rr1sl„ñ8ðv €Dð€Gð
€Ið€Oð€Ið€Hð €Cð€Mð€Hò%ò<Bò %ò ò"/óbó0    "r&r)Ú    metaclasscó —eZdZdZefd„Zd„Zy)ra 
    This lexer takes two lexer as arguments. A root lexer and
    a language lexer. First everything is scanned using the language
    lexer, afterwards all ``Other`` tokens are lexed using the root
    lexer.
 
    The lexers from the ``template`` lexer package use this base lexer.
    c ór—|di|¤Ž|_|di|¤Ž|_||_tj|fi|¤Žy©Nr!)Ú
root_lexerÚlanguage_lexerÚneedlerrD)rBÚ _root_lexerÚ_language_lexerÚ_needler?s     r#rDzDelegatingLexer.__init__-s9€Ù%Ñ0¨Ñ0ˆŒÙ-Ñ8°Ñ8ˆÔ؈Œ Ü ‰tÑ'˜wÓ'r&cól—d}g}g}|jj|«D]N\}}}||jur&|r|jt    |«|f«g}||z }Œ;|j|||f«ŒP|r|jt    |«|f«t ||j j|««S)NÚ)r}rgr~rLrWÚ do_insertionsr|)rBrNÚbufferedÚ
insertionsÚ
lng_bufferÚirhris        r#rgz&DelegatingLexer.get_tokens_unprocessed3s¾€ØˆØˆ
؈
Ø×*Ñ*×AÑAÀ$ÓGò    -‰GˆAˆq!ؐD—K‘KÑÙØ×%Ñ%¤s¨8£}°jÐ&AÔBØ!#JؘA‘ ‘à×!Ñ! 1 a¨ )Õ,ð    -ñ Ø × Ñ œs 8›}¨jÐ9Ô :ܘZØ!Ÿ_™_×CÑCÀHÓMóOð    Or&N)r1r2r3r4rrDrgr!r&r#rr#s„ñð>Có(ó Or&rcó—eZdZdZy)rzI
    Indicates that a state should include rules from another state.
    N©r1r2r3r4r!r&r#rrJs „ñð    r&rcó—eZdZdZd„Zy)Ú_inheritzC
    Indicates the a state should inherit from its superclass.
    có—y)Nrr!rHs r#rIz_inherit.__repr__Us€Ør&N)r1r2r3r4rIr!r&r#rŒrŒQs „ñór&rŒcó—eZdZdZd„Zd„Zy)Úcombinedz:
    Indicates a state combined from multiple states.
    có.—tj||«Srf)Útupler,)ÚclsÚargss  r#r,zcombined.__new__`s€Ü}‰}˜S $Ó'Ð'r&có—yrfr!)rBr“s  r#rDzcombined.__init__cs€à r&N)r1r2r3r4r,rDr!r&r#rr[s„ñò(ó r&rcó:—eZdZdZd„Zd    d„Zd    d„Zd    d„Zd„Zd„Z    y)
Ú _PseudoMatchz:
    A pseudo match object constructed from a string.
    có —||_||_yrf)Ú_textÚ_start)rBÚstartrNs   r#rDz_PseudoMatch.__init__ms€ØˆŒ
؈ r&Ncó—|jSrf)r™©rBÚargs  r#ršz_PseudoMatch.startqs €Ø{‰{Ðr&cóF—|jt|j«zSrf)r™rWr˜rœs  r#Úendz_PseudoMatch.endts€Ø{‰{œS §¡›_Ñ,Ð,r&có4—|r td«‚|jS)Nz No such group)Ú
IndexErrorr˜rœs  r#Úgroupz_PseudoMatch.groupws€Ù ܘ_Ó-Ð -؏z‰zÐr&có—|jfSrf)r˜rHs r#Úgroupsz_PseudoMatch.groups|s€Ø—
‘
ˆ}Ðr&có—iSrfr!rHs r#Ú    groupdictz_PseudoMatch.groupdicts€Øˆ    r&rf)
r1r2r3r4rDršrŸr¢r¤r¦r!r&r#r–r–hs%„ñòóó-óò
ór&r–có‡—dˆfd„    }|S)zL
    Callback that yields multiple actions for each group in the match.
    c
3ó¶•K—t‰«D]®\}}|€Œ    t|«tur1|j|dz«}|sŒ1|j    |dz«||f–—ŒK|j|dz«}|€Œb|r|j    |dz«|_||t |j    |dz«|«|«D]    }|sŒ|–—Œ Œ°|r|j«|_yy­w)Né)Ú    enumerater+r
r¢ršÚposr–rŸ)ÚlexerÚmatchÚctxrˆÚactionÚdataÚitemr“s       €r#Úcallbackzbygroups.<locals>.callback‡sßøèø€Ü" 4›ò    '‰IˆAˆv؈~ØÜf“¤Ñ+Ø—{‘{ 1 q¡5Ó)ÚØŸ+™+ a¨!¡eÓ,¨f°dÐ:Ó:à—{‘{ 1 q¡5Ó)ØÑ#ÙØ"'§+¡+¨a°!©eÓ"4˜œÙ & uÜ'3°E·K±KÀÀAÁÓ4FÈÓ'MÈsó!Tò'˜âØ"&›Jñ'ð    'ñ  Ø—i‘i“kˆCGð ùsƒ<CÁ0CÁ1ACÂ8!Crfr!)r“r²s` r#rrƒsø€õ"ð& €Or&có—eZdZdZy)Ú_ThiszX
    Special singleton used for indicating the caller class.
    Used by ``using``.
    NrŠr!r&r#r´r´s„òr&r´c 󲇇‡—iŠd‰vr4‰jd«}t|ttf«r|‰d<nd|f‰d<‰tur    dˆˆfd„    }|Sdˆˆˆfd„    }|S)aÂ
    Callback that processes the match with a different lexer.
 
    The keyword arguments are forwarded to the lexer, except `state` which
    is handled separately.
 
    `state` specifies the state that the new lexer will start in, and can
    be an enumerable such as ('root', 'inline', 'string') or a simple
    string which is assumed to be on top of the root state.
 
    Note: For that to work, `_other` must not be an `ExtendedRegexLexer`.
    ÚstateÚstackÚrootc3ó*•K—‰    r.‰    j|j«|jdi‰    ¤Ž}n|}|j«}|j|j «fi‰¤ŽD]\}}}||z||f–—Œ|r|j «|_yy­wr{)Úupdater?rGršrgr¢rŸr«)
r¬r­r®ÚlxÚsrˆrhriÚ    gt_kwargsÚkwargss
        €€r#r²zusing.<locals>.callback¼s‘øèø€ñà— ‘ ˜eŸm™mÔ,Ø$U—_‘_Ñ. vÑ.‘àØ— ‘ “ ˆAØ4˜2×4Ñ4°U·[±[³]ÑPÀiÑPò "‘1aؘ!‘e˜Q kÓ!ð "áØŸ)™)›+•ðùsƒBBc3ó •K—‰
j|j«‰di‰
¤Ž}|j«}|j|j    «fi‰    ¤ŽD]\}}}||z||f–—Œ|r|j «|_yy­wr{)rºr?ršrgr¢rŸr«) r¬r­r®r»r¼rˆrhriÚ_otherr½r¾s         €€€r#r²zusing.<locals>.callbackËsøèø€à M‰M˜%Ÿ-™-Ô (ÙÑ!˜&Ñ!ˆBà— ‘ “ ˆAØ4˜2×4Ñ4°U·[±[³]ÑPÀiÑPò "‘1aؘ!‘e˜Q kÓ!ð "áØŸ)™)›+•ðùsƒBBrf)ÚpoprKÚlistr‘r)rÀr¾r¼r²r½s``  @r#rr¦seú€ð€Iؐ&ÑØ J‰JwÓ ˆÜ aœ$¤˜Ô 'Ø!"ˆIgÒ à"(¨! ˆIgÑ à ”~ö     &ð2 €O÷        &ð €Or&có—eZdZdZd„Zy)rzÑ
    Indicates a state or state action (e.g. #pop) to apply.
    For example default('#pop') is equivalent to ('', Token, '#pop')
    Note that state tuples may be used as well.
 
    .. versionadded:: 2.0
    có—||_yrf)r¶)rBr¶s  r#rDzdefault.__init__às    €Øˆ
r&N)r1r2r3r4rDr!r&r#rrØs „ñór&rcó—eZdZdZdd„Zd„Zy)rz•
    Indicates a list of literal words that is transformed into an optimized
    regex that matches any of the words.
 
    .. versionadded:: 2.0
    có.—||_||_||_yrf)rÚprefixÚsuffix)rBrrÇrÈs    r#rDzwords.__init__ës€ØˆŒ
؈Œ ؈ r&cóZ—t|j|j|j¬«S)N©rÇrÈ)rrrÇrÈrHs r#r@z    words.getðs€Ü˜Ÿ™¨D¯K©KÀÇ Á ÔLÐLr&N)rƒrƒ)r1r2r3r4rDr@r!r&r#rräs„ñó ó
Mr&rcó<—eZdZdZd„Zd„Zd„Zd„Zd
d„Zd„Z    d    „Z
y) ÚRegexLexerMetazw
    Metaclass for RegexLexer, creates the self._tokens attribute from
    self.tokens on the first instantiation.
    có‚—t|t«r|j«}tj||«j
S)zBPreprocess the regular expression component of a token definition.)rKrr@ÚreÚcompiler­)r’ÚregexÚrflagsr¶s    r#Ú_process_regexzRegexLexerMeta._process_regexús.€ä eœVÔ $Ø—I‘I“KˆE܏z‰z˜% Ó(×.Ñ.Ð.r&cóR—t|«tust|«s
Jd|›«‚|S)z5Preprocess the token component of a token definition.z0token type must be simple type or callable, not )r+r
Úcallable)r’Útokens  r#Ú_process_tokenzRegexLexerMeta._process_tokens2€äE‹{œjÑ(¬H°U¬Oð    IØ>¸u¸iÐ Hó    IÐ;àˆ r&cóä—t|t«r5|dk(ry||vr|fS|dk(r|S|dddk(rt|dd« SJd|›«‚t|t«rfd|jz}|xjd    z c_g}|D]3}||k7s
Jd
|›«‚|j |j |||««Œ5|||<|fSt|t«r|D]}||vrŒ|d vrŒ Jd|z«‚|SJd |›«‚) z=Preprocess the state transition action of a token definition.ú#popéÿÿÿÿú#pushNéz#pop:zunknown new state z_tmp_%dr©zcircular state ref )rØrÚzunknown new state def )rKrSÚintrÚ_tmpnameÚextendÚ_process_stater‘)r’Ú    new_stateÚ unprocessedÚ    processedÚ    tmp_stateÚitokensÚistates       r#Ú_process_new_statez!RegexLexerMeta._process_new_statesQ€ä i¤Ô %à˜FÒ"ØØ˜kÑ)Ø!|Ð#ؘgÒ%ؠРؘ2˜A 'Ò)ܘI a b˜MÓ*Ð*Ð*à@Р2°9°-Ð@Ó@uÜ ˜    ¤8Ô ,à! C§L¡LÑ0ˆIØ LŠL˜AÑ L؈GØ#ò FØ Ò*ÐLÐ.AÀ&ÀÐ,LÓLÐ*Ø—‘˜s×1Ñ1°+Ø2;¸Vó EõFð Fð$+ˆIiÑ  Ø<Ð Ü ˜    ¤5Ô )à#ò 2Ø +Ò-ØÐ"3Ò3ð2à(¨6Ñ1ó2ð4ð 2ðÐ à @Ð2°9°-Ð@Ó @5r&c ó~—t|t«s
Jd|›«‚|ddk7s
Jd|›«‚||vr||Sgx}||<|j}||D]?}t|t«r;||k7s
Jd|›«‚|j    |j ||t|«««ŒOt|t «rŒ`t|t«rO|j|j||«}|jtjd«jd|f«Œ¿t|«tus
Jd|›«‚    |j!|d||«}|j'|d «}
t)|«dk(rd}n|j|d||«}|j||
|f«ŒB|S#t"$r }    t%d    |d›d
|›d |›d |    ›«|    ‚d}    ~    wwxYw)z%Preprocess a single state definition.zwrong state name rú#zinvalid state name zcircular state reference rƒNzwrong rule def zuncompilable regex z
 in state z of z: r©é)rKrSÚflagsrrÞrßrŒrrær¶rLrÎrÏr­r+r‘rÒÚ    ExceptionÚ
ValueErrorrÖrW) r’rárâr¶ÚtokensrÑÚtdefràÚrexÚerrrÕs            r#rßzRegexLexerMeta._process_state)sü€ä˜%¤Ô%ÐDÐ):¸5¸)Ð'DÓDÐ%ؐQ‰x˜3ŠÐ?Ð"5°e°YР?Ó?ˆØ IÑ Ø˜UÑ#Ð #Ø$&Ð&ˆ˜5Ñ!Ø—‘ˆØ Ñ&ó     3ˆDܘ$¤Ô(à˜u’}ÐKÐ(AÀ%ÀÐ&KÓK}Ø— ‘ ˜c×0Ñ0°¸iÜ14°T³ó<ô=àܘ$¤Ô)ðܘ$¤Ô(Ø×2Ñ2°4·:±:¸{ÈIÓV    Ø— ‘ œrŸz™z¨"›~×3Ñ3°T¸9ÐEÔFØä˜“:¤Ñ&Ð B¨/¸$¸Ð(BÓ BÐ&ð rØ×(Ñ(¨¨a©°&¸%Ó@ð×&Ñ& t¨A¡wÓ/ˆEä4‹y˜AŠ~Ø ‘    à×2Ñ2°4¸±7Ø3>À    óK    ð M‰M˜3  yÐ1Ö 2ðA     3ðBˆ øôò rÜ Ð#6°t¸A±w°kÀÈEÈ9ÐTXÐY\ÐX_Ð_aÐbeÐafÐ!gÓhÐnqÐqûð rúsÄ)FÆ    F<ÆF7Æ7F<Ncó”—ix}|j|<|xs|j|}t|«D]}|j|||«Œ|S)z-Preprocess a dictionary of token definitions.)Ú _all_tokensrírÂrß)r’r.Ú    tokendefsrâr¶s     r#Úprocess_tokendefzRegexLexerMeta.process_tokendefTsS€à,.Ð.ˆ    C—O‘O DÑ)ØÒ1 §¡¨DÑ!1ˆ    Ü˜)“_ò    <ˆEØ × Ñ ˜y¨)°UÕ ;ð    <àÐr&có²—i}i}|jD]¥}|jjdi«}|j«D]t\}}|j|«}|€!|||<    |j    t
«}|||<Œ:|j|d«}|€ŒO||||dz    |j    t
«}    ||    z||<ŒvŒ§|S#t $rYŒ†wxYw#t $rYŒ•wxYw)a
        Merge tokens from superclasses in MRO order, returning a single tokendef
        dictionary.
 
        Any state that is not defined by a subclass will be inherited
        automatically.  States that *are* defined by subclasses will, by
        default, override that state in the superclass.  If a subclass wishes to
        inherit definitions from a superclass, it can use the special value
        "inherit", which will cause the superclass' state definition to be
        included at that point in the state.
        ríNr©)Ú__mro__Ú__dict__r@ÚitemsÚindexrrìrÁ)
r’ríÚ inheritableÚcÚtoksr¶røÚcuritemsÚ inherit_ndxÚ new_inh_ndxs
          r#Ú get_tokendefszRegexLexerMeta.get_tokendefs\s€ðˆØˆ Ø—‘ò    CˆAØ—:‘:—>‘> (¨BÓ/ˆDà $§
¡
£ ò C‘ uØ!Ÿ:™: eÓ,ØÐ#ð
%*F˜5‘Mð!Ø&+§k¡k´'Ó&:˜ ð*5K Ñ&Øà)Ÿo™o¨e°TÓ: ØÐ&Øð7<˜ [°¡]Ð3ðCð#(§+¡+¬gÓ"6Kð*5°{Ñ)BK Ò&ñ9 Cð    CðBˆ øô)&ò!Ù ð!ûô"òÙðús$ÁB;ÂC
Â;    CÃCÃ
    CÃCcóè—d|jvrLi|_d|_t|d«r |jrn%|j d|j ««|_tj|g|¢­i|¤ŽS)z:Instantiate cls after preprocessing its token definitions.Ú_tokensrÚtoken_variantsrƒ)
r÷ròrÝÚhasattrrrôrrr+Ú__call__)r’r“Úkwdss   r#rzRegexLexerMeta.__call__sh€à ˜CŸL™LÑ (Ø ˆCŒO؈CŒLܐsÐ,Ô-°#×2DÒ2Dàà!×2Ñ2°2°s×7HÑ7HÓ7JÓK” ä}‰}˜SÐ0 4Ò0¨4Ñ0Ð0r&rf) r1r2r3r4rÒrÖrærßrôrrr!r&r#rÌrÌôs.„ñò
/ò ò !AòF)óVò/ób 1r&rÌcó4—eZdZdZej
ZiZdd„Zy)rz±
    Base for simple stateful regular expression-based lexers.
    Simplifies the lexing process so that you need only
    provide a list of states and regular expressions.
    c#ó:K—d}|j}t|«}||d}    |D]&\}}}    |||«}
|
sŒ|8t|«tur|||
j    «f–—n|||
«Ed{–—†|
j «}|    Çt |    t«rX|    D]R} | dk(r t|«dkDsŒ|j«Œ(| dk(r|j|d«ŒB|j| «ŒTnWt |    t«r#t|    «t|«k\r|dd…=n*||    d…=n$|    dk(r|j|d«n
Jd|    ›«‚||d}n7    ||dk(rd    g}|d    }|tdf–—|dz }ŒP|t||f–—|dz }Œd7Œ#t$rYywxYw­w)
z~
        Split ``text`` into (tokentype, text) pairs.
 
        ``stack`` is the initial stack (default: ``['root']``)
        rrÙr©NrØrÚúwrong state def: rQr¸)rrÂr+r
r¢rŸrKr‘rWrÁrLrÜÚabsr    rr¡) rBrNr·r«róÚ
statestackÚ statetokensÚrexmatchr¯ràÚmr¶s             r#rgz!RegexLexer.get_tokens_unprocessed¾sÜèø€ð ˆØ—L‘Lˆ    Ü˜%“[ˆ
Ø 
¨2¡Ñ/ˆ ØØ/:ó0 Ñ+˜& )Ù˜T 3Ó'ÚØÐ)Ü ›<¬:Ñ5Ø"% v¨q¯w©w«yÐ"8Ó8á'-¨d°A£×6Ð6ØŸ%™%›'CØ Ð,ä% i´Ô7Ø)2ò= Ø#(¨F¢?Ü'*¨:£¸Ó':Ø(2¯©Õ(8Ø%*¨gÒ%5Ø$.×$5Ñ$5°jÀ±nÕ$Eà$.×$5Ñ$5°eÕ$<ñ=ô(¨    ´3Ô7ô # 9›~´°Z³Ò@Ø$.¨q©r¡Nà$.¨y©zÑ$:Ø&¨'Ò1Ø&×-Ñ-¨j¸©nÕ=àKÐ,=¸i¸]Ð*KÓK 5Ø&/°
¸2±Ñ&?˜ ÙðC0 ðJ ؘC‘y DÒ(à&, X˜
Ø&/°Ñ&7˜ Ø!¤:¨tÐ3Ò3ؘq™˜Ù Øœu d¨3¡iÐ/Ò/ؘ1‘HCñ_ð7úôP"òÙðüsM‚8F»5FÁ0F    Á1>FÂ0B!FÅ F Å2FÅ4F ÆFÆ     FÆFÆFÆFN©)r¸)    r1r2r3r4rÎÚ    MULTILINErêrírgr!r&r#rr›s„ñð L‰L€Eð0€Fô;r&rcó—eZdZdZdd„Zd„Zy)rz9
    A helper object that holds lexer position data.
    Ncó`—||_||_|xs t|«|_|xsdg|_y)Nr¸)rNr«rWrŸr·)rBrNr«r·rŸs     r#rDzLexerContext.__init__s.€ØˆŒ    ØˆŒØÒ#œ#˜d›)ˆŒØÒ&˜v˜hˆ
r&cóV—d|j›d|j›d|j›dS)Nz LexerContext(z, ú))rNr«r·rHs r#rIzLexerContext.__repr__s)€Ø˜tŸy™y˜m¨2¨d¯h©h¨\¸¸D¿J¹J¸>ÈÐKÐKr&©NN)r1r2r3r4rDrIr!r&r#rrüs„ñó'ó Lr&rcó—eZdZdZdd„Zy)rzE
    A RegexLexer that uses a context object to store its state.
    Nc#ó–K—|j}|st|d«}|d}n |}||jd}|j}    |D]Î\}}}|||j|j
«}    |    sŒ)|lt |«tur5|j||    j«f–—|    j «|_n&|||    |«Ed{–—†|s||jd}|5t|t«rŠ|D]„}
|
dk(r4t|j«dkDsŒ!|jj«Œ<|
dk(r)|jj|jd«Œj|jj|
«Œ†n‰t|t«rAt|«t|j«k\r|jdd…=nH|j|d…=n8|dk(r)|jj|jd«n
Jd|›«‚||jd}nž    |j|j
k\ry||jd    k(r9dg|_|d}|jt d    f–—|xjdz c_Œ;|jt"||jf–—|xjdz c_Œs7Œó#t$$rYywxYw­w)
z
        Split ``text`` into (tokentype, text) pairs.
        If ``context`` is given, use this lexer context instead.
        rr¸rÙr©NrØrÚr    rQ)rrr·rNr«rŸr+r
r¢rKr‘rWrÁrLrÜr
rrr¡) rBrNÚcontextrór®r r r¯ràrr¶s            r#rgz)ExtendedRegexLexer.get_tokens_unprocessedswèø€ð
—L‘Lˆ    Ùܘt QÓ'ˆCØ# FÑ+‰KàˆCØ# C§I¡I¨b¡MÑ2ˆKØ—8‘8ˆDØØ/:ó2 Ñ+˜& )Ù˜T 3§7¡7¨C¯G©GÓ4ÚØÐ)Ü ›<¬:Ñ5Ø"%§'¡'¨6°1·7±7³9Ð"<Ò<Ø&'§e¡e£g˜CGá'-¨d°A°sÓ';×;Ð;Ù#,à.7¸¿    ¹    À"¹ Ñ.F  à Ñ,ä% i´Ô7Ø)2ò< Ø#(¨F¢?Ü'*¨3¯9©9£~¸Ó'9Ø(+¯    ©    ¯ © ­Ø%*¨gÒ%5Ø$'§I¡I×$4Ñ$4°S·Y±Y¸r±]Õ$Cà$'§I¡I×$4Ñ$4°UÕ$;ñ<ô(¨    ´3Ô7ä" 9›~´°S·Y±Y³Ò?Ø$'§I¡I¨a©b¡Mà$'§I¡I¨i©jÑ$9Ø&¨'Ò1ØŸI™I×,Ñ,¨S¯Y©Y°r©]Õ;àKÐ,=¸i¸]Ð*KÓK 5Ø&/°·    ±    ¸"± Ñ&>˜ ÙðG2 ðJ Ø—w‘w #§'¡'Ò)ØØ˜CŸG™G‘}¨Ò,à%+ H˜œ    Ø&/°Ñ&7˜ Ø!Ÿg™g¤t¨TÐ1Ò1ØŸš 1™ Ù ØŸ'™'¤5¨$¨s¯w©w©-Ð7Ò7Ø—G’G˜q‘L•Gñcð<úôR"òÙðüs^‚A,K    Á/AK    ÃJ7ÃA K    ÄDK    ÈJ:È2K    È3A    J:É<K    É>7J:Ê5K    Ê:    KËK    ËKËK    r)r1r2r3r4rgr!r&r#rr s „ñô@r&rc#ó K—t|«}    t|«\}}d}d}|D]°\}}}|€|}d}    |rx|t|«z|k\rg||    ||z
}
|
r|||
f–—|t|
«z }|D]\} } } || | f–—|t| «z }Œ||z
}        t|«\}}|r|t|«z|k\rŒg|    t|«ksŒ–||||    df–—|t|«|    z
z }Œ²|r9|xsd}|D]\}}}|||f–—|t|«z }Œ    t|«\}}|rŒ8yy#t$r|Ed{–—†7YywxYw#t$rd}YŒwxYw#t$rd}YywxYw­w)ag
    Helper for lexers which must combine the results of several
    sublexers.
 
    ``insertions`` is a list of ``(index, itokens)`` pairs.
    Each ``itokens`` iterable should be inserted at position
    ``index`` into the token stream given by the ``tokens``
    argument.
 
    The result is a combined token stream.
 
    TODO: clean up the code here.
    NTrF)ÚiterÚnextÚ StopIterationrW)r†rírùräÚrealposÚinsleftrˆrhriÚoldiÚtmpvalÚit_indexÚit_tokenÚit_valueÚps               r#r„r„SsÎèø€ôjÓ!€JðܘjÓ)‰ˆˆwð €GØ€Gðò%‰ˆˆ1ˆaà ˆ?؈G؈٘!œc !›f™*¨Ò-ؐt˜E A™IÐ&ˆFÙØ˜q &Ð(Ò(Øœ3˜v›;Ñ&Ø07ò )Ñ,˜( Hؘx¨Ð1Ò1Øœ3˜x›=Ñ(‘ð )ð˜1‘9ˆDð Ü!% jÓ!1‘wñ˜!œc !›f™*¨Ó-ð ”#a“&‹=ؘ1˜a  ˜hÐ&Ò &Ø ”s˜1“v ‘}Ñ $‰Gð+%ñ0 à’,˜QˆØò    ‰GˆAˆq!ؘ1˜a-Ò Ø ”s˜1“vÑ ‰Gð    ð    Ü! *Ó-‰NˆE7ô øôE òà×ÑÙðûô4!ò ؐÙð ûô ò    ØˆGÙ ð    üs‚ EDA*EÂD,ÂEÂ*EÂ9AEÃ?D=Ä EÄEÄD)Ä D#Ä!D)Ä&EÄ(D)Ä)EÄ, D:Ä7EÄ9D:Ä:EÄ= E ÅEÅ
E Å Ecó—eZdZdZd„Zy)ÚProfilingRegexLexerMetaz>Metaclass for ProfilingRegexLexer, collects regex timing info.có臇‡‡—t|t«r-t|j|j|j¬«Šn|Št j ‰|«Štjfˆˆˆˆfd„    }|S)NrÊcóþ•—‰jdj‰
‰    fddg«}tj«}‰j|||«}tj«}|dxxdz cc<|dxx||z
z cc<|S)NrÙrr r©)Ú
_prof_dataÚ
setdefaultÚtimer­) rNr«ÚendposÚinfoÚt0ÚresÚt1r’Úcompiledrïr¶s        €€€€r#Ú
match_funcz:ProfilingRegexLexerMeta._process_regex.<locals>.match_funcžsrø€Ø—>‘> "Ñ%×0Ñ0°%¸°ÀÀ3¸xÓHˆDÜ—‘“ˆBØ—.‘.  s¨FÓ3ˆCÜ—‘“ˆBØ ‹Gq‰L‹GØ ‹Gr˜B‘wÑ ‹G؈Jr&)    rKrrrÇrÈrÎrÏÚsysÚmaxsize)r’rÐrÑr¶r2r1rïs`  ` @@r#rÒz&ProfilingRegexLexerMeta._process_regex–sZû€Ü eœUÔ #ܘEŸK™K°· ± Ø#(§<¡<ô1‰CðˆCÜ—:‘:˜c 6Ó*ˆä),¯©÷    ð    ðÐr&N)r1r2r3r4rÒr!r&r#r&r&“s
„ÙHór&r&có —eZdZdZgZdZdd„Zy)ÚProfilingRegexLexerzFDrop-in replacement for RegexLexer that does profiling of its regexes.éc#óJ‡K—‰jjji«tj    ‰||«Ed{–—†‰jjj «}t d„|j«D«ˆfd„d¬«}td„|D««}t«td‰jjt|«|fz«td«tdd    z«td
«|D]}td |z«Œtd«y7ŒÝ­w) Nc3ó¤K—|]H\\}}\}}|t|«jd«jdd«dd|d|zd|z|z f–—ŒJy­w)zu'z\\ú\NéAiè)Úreprr[rZ)Ú.0r¼ÚrÚnrhs     r#ú    <genexpr>z=ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<genexpr>´saèø€ò@á+™F˜Q ¡F Q¨ðœ4 ›7Ÿ=™=¨Ó/×7Ñ7¸ÀÓEÀcÀrÐJؘ4 !™8 T¨A¡X°¡\ô3ñ@ùs‚AAcó"•—|‰jSrf)Ú_prof_sort_index)r"rBs €r#r$z<ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<lambda>·sø€ A d×&;Ñ&;Ñ$<€r&T)ÚkeyÚreversec3ó&K—|]    }|d–—Œ y­w)éNr!)r=r"s  r#r@z=ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<genexpr>¹sèø€Ò+ ˜˜!Ñ+ùs‚z2Profiling result for %s lexing %d chars in %.3f mszn==============================================================================================================z$%-20s %-64s ncalls  tottime  percall)r¶rÐzn--------------------------------------------------------------------------------------------------------------z%-20s %-65s %5d %8.4f %8.4f) rGr)rLrrgrÁÚsortedrøÚsumÚprintr1rW)rBrNr·Úrawdatar°Ú    sum_totalr0s`      r#rgz*ProfilingRegexLexer.get_tokens_unprocessed¯sÿøèø€à ‰×!Ñ!×(Ñ(¨Ô,Ü×4Ñ4°T¸4ÀÓG×GÐGØ—.‘.×+Ñ+×/Ñ/Ó1ˆÜñ@à/6¯}©}«ô@ó=Ø"ô    $ˆô
Ñ+ dÔ+Ó+ˆ    ä ŒÜ ÐB؏~‰~×&Ñ&¬¨D«    °9Ð=ñ>ô    ?ä ˆiÔÜ Ð4Ð7IÑIÔJÜ ˆiÔØò    5ˆAÜ Ð/°!Ñ3Õ 4ð    5ä ˆiÕð#    HúsƒAD#ÁD!ÁCD#Nr)r1r2r3r4r)rBrgr!r&r#r6r6©s„ÙPà€JØÐôr&r6)6r4rÎr3r+Úpip._vendor.pygments.filterrrÚpip._vendor.pygments.filtersrÚpip._vendor.pygments.tokenrrrr    r
Úpip._vendor.pygments.utilr r r rrrÚpip._vendor.pygments.regexoptrÚ__all__rÏrrUÚ staticmethodÚ_default_analyser+r(rrrSrrŒrr‘rr–rr´rrrrrÌrrrr„r&r6r!r&r#ú<module>rTsLðñó
Û
Û ç=Ý;ßQÕQ÷*÷*å3ò *€ð ˆ"*‰*WÓ
€ò,€ ñ  ¡ Ó.Ðô    1ô    1ôo"iõo"ôdOeôOôN    ˆcô    ÷ññ ‹*€ô
 ˆuô
 ÷ñò6÷4ññ  ƒw€ò/÷d    ñ    ô MˆFô Mô d1Yôd1ôN^ .õ^÷B Lñ LôE˜ôEòP=ô@˜nôô,˜*Ð0Gör&