__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

���g�!��2�SrSSKrSSKJr SSKJr SSKJr SSK	J
r
 SSKJr
 SSKJr SS	KJr S
SKJr S
SKJr S
S
KJr S
SKJr S
SKJr S
SKJr S
SKJr S
SKJr S
SKJr S
SKJr S
SKJ r  S
SK!J"r" \RF(a
SSK$r%S
SK&J'r' \RP"S\RRS\RT4S9r+SSSSSS S!S"S#.r,S$\+S%\+4S&jr-S'\.S%\RRS(\R^S)/S44S*jr0S'\.S%\RRS(\RbS)/S44S+jr2SFS,\RfS-S.S/\Rh\.S0\Rh\.S1\Rh\RjS2\6S3\6S%\Rh\.4S4jjr7S5\RTS%\64S6jr8S7\Rr\RtS8\Rr\.S%\Rv\.4S9jr<"S:S;5r="S<S)5r>"S=S>\?5r@"S?S@\"5rA"SASB\"5rB"SCSD\C5rD"SES(\"5rEg)Gz0Compiles nodes from the parser into Python code.�N)�contextmanager)�update_wrapper)�StringIO)�chain)�	iskeyword)�escape)�Markup�)�nodes)�TemplateAssertionError)�Symbols)�VAR_LOAD_ALIAS)�VAR_LOAD_PARAMETER)�VAR_LOAD_RESOLVE)�VAR_LOAD_UNDEFINED)�EvalContext)�	Optimizer)�_PassArg)�concat)�NodeVisitor)�Environment�F.)�boundz==z!=�>z>=�<z<=�inznot in)�eq�ne�gt�gteq�lt�lteqr�notin�f�returnc
�^�SSS[RSSS[RS[R4
U4Sjjn[	UT5$)	N�self�
CodeGenerator�node�frame�Frame�kwargsr%c��>�URbVURR(d;URRXR5nXA:waURXB5$T"XU40UD6$�N)�	optimizer�eval_ctx�volatile�visit)r'r)r*r,�new_noder$s     ��1/usr/lib/python3/dist-packages/jinja2/compiler.py�new_func�optimizeconst.<locals>.new_func.sZ����>�>�%�e�n�n�.E�.E��~�~�+�+�D�.�.�A�H����z�z�(�2�2���U�-�f�-�-�)r�Expr�t�Anyr)r$r5s` r4�
optimizeconstr;-sK���
.��
.�%*�Z�Z�
.�8?�
.�KL�5�5�
.�	
���
.��(�A�&�&r7�opr(r+c	�^^�[SSS[RS[SS4U4Sjj5nU$)Nr'r(r)r*r%c�>�URR(azTURR;a`URST<S35 UR	UR
U5 URS5 UR	URU5 O^URS5 UR	UR
U5 URSTS35 UR	URU5 URS5 g)Nz environment.call_binop(context, �, �(� �))�environment�	sandboxed�intercepted_binops�writer2�left�right�r'r)r*r<s   �r4�visitor�_make_binop.<locals>.visitor>s����
���&�&�2��1A�1A�1T�1T�+T��J�J�9�"��r�B�C��J�J�t�y�y�%�(��J�J�t���J�J�t�z�z�5�)��J�J�s�O��J�J�t�y�y�%�(��J�J��2�$�a�y�!��J�J�t�z�z�5�)��
�
�3�r7)r;r�BinExprr+�r<rJs` r4�_make_binoprN=s<�����o��U�]�]��5��T���� �Nr7c	�^^�[SSS[RS[SS4U4Sjj5nU$)Nr'r(r)r*r%c�X>�URR(aMTURR;a3URST<S35 UR	UR
U5 O0URST-5 UR	UR
U5 URS5 g)Nzenvironment.call_unop(context, r?r@rB)rCrD�intercepted_unopsrFr2r)rIs   �r4rJ�_make_unop.<locals>.visitorUs|���
���&�&�2��1A�1A�1S�1S�+S��J�J�8���b�A�B��J�J�t�y�y�%�(��J�J�s�R�x� ��J�J�t�y�y�%�(��
�
�3�r7)r;r�	UnaryExprr+rMs` r4�
_make_unoprTRs>����
�o�
�U�_�_�
�U�
�t�
��
��Nr7r)rCr�name�filename�stream�
defer_init�	optimizedc���[U[R5(d[S5eUR	XX4XV5nURU5 UcURR5$g)z+Generate the python source for a node tree.z Can't compile non template nodesN)�
isinstancer�Template�	TypeError�code_generator_classr2rW�getvalue)r)rCrUrVrWrXrY�	generators        r4�generateraesc���d�E�N�N�+�+��:�;�;��0�0��8�Z��I��O�O�D��
�~����(�(�*�*�r7�valuec�d�UbU[Ld	U[Lag[U5[[[
[[[[1;ag[U5[[[[1;a[SU55$[U5[La [SUR!555$g)z)Does the node have a safe representation?Tc3�8# �UHn[U5v� M g7fr.��
has_safe_repr)�.0�vs  r4�	<genexpr>� has_safe_repr.<locals>.<genexpr>�s���3�U��=��#�#�U���c3�`# �UH$up[U5=(a [U5v� M& g7fr.re�rg�krhs   r4rirj�s$���S�]�T�Q�=��#�8�
�a�(8�8�]�s�,.F)�NotImplemented�Ellipsis�type�bool�int�float�complex�range�strr	�tuple�list�set�	frozenset�all�dict�items�rbs r4rfrf}s����}���/�5�H�3D���E�{�t�S�%��%��f�E�E���E�{�u�d�C��3�3��3�U�3�3�3��E�{�d���S�U�[�[�]�S�S�S�r7r�namesc��[U5nUHnURU5 M UR$![a UR$f=f)z�Check if the names passed are accessed undeclared.  The return value
is a set of all the undeclared names from the sequence of names found.
)�UndeclaredNameVisitorr2�VisitorExit�
undeclared)rr�rJr)s    r4�find_undeclaredr��sW��$�E�*�G�
��D��M�M�$���������
������
�s�3�
A�
Ac�l�\rSrSrS\R
\R\R4SS4Sjr	Sr
g)�MacroRef�r)r%Nc�:�XlSUlSUlSUlg�NF)r)�accesses_caller�accesses_kwargs�accesses_varargs�r'r)s  r4�__init__�MacroRef.__init__�s���	�$���$��� %��r7)r�r�r�r))�__name__�
__module__�__qualname__�__firstlineno__r9�Unionr�Macro�	CallBlockr��__static_attributes__�r7r4r�r��s+��&�Q�W�W�U�[�[�%�/�/�%A�B�&�t�&r7r�c	��\rSrSrSrSS\S\RSS\R\SS4Sjjr	SS	jr
SS
\SS4SjjrSSjr
\
rS
rg)r+�z&Holds compile time information for us.Nr0�parent�levelr%c�H�XlX lUc$[US9UlSUlSUlSUlOL[URUS9UlURUlUR
UlURUlSUlSUlSUl	SUl
SUlg)N�r�F)r0r�r
�symbols�require_output_check�buffer�block�toplevel�	rootlevel�
loop_frame�block_frame�
soft_frame)r'r0r�r�s    r4r��Frame.__init__�s���!�
����>�"��/�D�L�).�D�%�,0�D�K�+/�D�J�#�6�>�>��?�D�L�(.�(C�(C�D�%� �-�-�D�K����D�J���
�
��� ��� ���
 ��r7c���[RUR5nURR	UR5 UR
R
5UlU$)z!Create a copy of the current one.)�object�__new__�	__class__�__dict__�updater��copy�r'�rvs  r4r��
Frame.copy�sC��
�^�^�D�N�N�
+��
�����4�=�=�)��\�\�&�&�(��
��	r7�isolatedc��U(a+[URURRS-S9$[URU5$)zReturn an inner frame.r
r�)r+r0r�r�)r'r�s  r4�inner�Frame.inner�s6�������d�l�l�.@�.@�1�.D�E�E��T�]�]�D�)�)r7c�B�UR5nSUlSUlU$)z�Return a soft frame.  A soft frame may not be modified as
standalone thing as it shares the resources with the frame it
was created of, but it's not a rootlevel frame any longer.

This is only used to implement if-statements and conditional
expressions.
FT)r�r�r�r�s  r4�soft�
Frame.soft�s"���Y�Y�[�������
��	r7)r�r�r�r0r�r�r�r�r�r�r�)NN)r%zte.Self�F)r�r�r�r��__doc__rr9�Optionalrsr�r�rrr�r��__copy__r�r�r7r4r+r+�sn��0�
'+�!%�	1 ��1 ��
�
�7�#�1 ��z�z�#��	1 �

�1 �f�*�d�*�w�*���Hr7c��\rSrSrSrSrg)r��z?Exception used by the `UndeclaredNameVisitor` to signal a stop.r�N�r�r�r�r�r�r�r�r7r4r�r��s��Ir7r�c��\rSrSrSrSSjrS\RSS4SjrS\RSS4Sjr
S\RSS4S	jrS
r
g)�DependencyFinderVisitor�z.A visitor that collects filter and test calls.r%Nc�@�[5Ul[5Ulgr.)rz�filters�tests�r's r4r�� DependencyFinderVisitor.__init__�s��#&�5���!$���
r7r)c�p�URU5 URRUR5 gr.)�
generic_visitr��addrUr�s  r4�visit_Filter�$DependencyFinderVisitor.visit_Filters&�����4� ���������#r7c�p�URU5 URRUR5 gr.)r�r�r�rUr�s  r4�
visit_Test�"DependencyFinderVisitor.visit_Tests$�����4� ��
�
���t�y�y�!r7c��g)zStop visiting at blocks.Nr�r�s  r4�visit_Block�#DependencyFinderVisitor.visit_Block��r7)r�r��r%N)r�r�r�r�r�r�r�Filterr��Testr��Blockr�r�r�r7r4r�r��sO��8�'�$����$�$�$�"�u�z�z�"�d�"�'����'��'r7r�c��\rSrSrSrS\R\SS4SjrS\	RSS4SjrS\	RSS4S	jr
S
rg)r�iz�A visitor that checks if a name is accessed without being
declared.  This is different from the frame visitor as it will
not stop at closure frames.
r�r%Nc�B�[U5Ul[5Ulgr.)rzr�r�)r'r�s  r4r��UndeclaredNameVisitor.__init__s����Z��
�&)�e��r7r)c�6�URS:XadURUR;aJURR	UR5 URUR:Xa
[5egURR
UR5 g)N�load)�ctxrUr�r�r�r��discardr�s  r4�
visit_Name� UndeclaredNameVisitor.visit_Namesh���8�8�v��$�)�)�t�z�z�"9��O�O����	�	�*����$�*�*�,�!�m�#�-�
�J�J���t�y�y�)r7c��g)zStop visiting a blocks.Nr�r�s  r4r��!UndeclaredNameVisitor.visit_Block!r�r7)r�r�)r�r�r�r�r�r9�Iterablerwr�r�Namer�r�r�r�r�r7r4r�r�sP���
,�a�j�j��o�,�$�,�*�u�z�z�*�d�*�&����&��&r7r�c��\rSrSrSrSrg)�CompilerExiti%z�Raised if the compiler encountered a situation where it just
doesn't make sense to further process the code.  Any block that
raises such an exception is not further processed.
r�Nr�r�r7r4r�r�%s��r7r�c�4�\rSrSr%S�SSS\R
\S\R
\S\R
\RS\S	\S
S4Sjjr	\
S
\4Sj5rS
\S\S
S4Sjr
S
\4SjrS\S
S4SjrS�S\S\S
S4SjjrS�SjrS�S\S
S4SjjrS�S\S\R
\R*S
S4SjjrS\S
S4SjrS�S\S\S\R
\R*S
S4SjjrS\R2\R*S\S
S4SjrS \S
S4S!jrS�S \S\R
\R*S"\S
S4S#jjrS�S\R
\R*S"\S
S4S$jjrS�S\R<\R>\R@\RB4S\S%\R
\RD\\RF4S
S4S&jjr$S\R2\R*S
S4S'jr%S\S
S4S(jr&S�S\S)\S
S4S*jjr'S�S+\S,\S
\4S-jjr(S\S
\4S.jr)S\R<\RT\RV4S\S
\RX\\-44S/jr.S0\-S\S
S4S1jr/S\R*S
\4S2jr0S\S
\4S3jr1S�S4jr2S\S
S4S5jr3S�S6jr4S7\S
S4S8jr5S7\S
S4S9jr6S�S:jr7S
\4S;jr8S
\4S<jr9S\S
\4S=jr:S7\S
\4S>jr;S�S?jr<S\S
S4S@jr=S�S\R|S\R
\S
S4SAjjr?S\R�S\S
S4SBjrAS\R�S\S
S4SCjrCS\R�S\S
S4SDjrES\R<\R�\R�4S\S
S4SEjrHS\R�S\S
S4SFjrIS\R�S\S
S4SGjrJS\R�S\S
S4SHjrLS\R�S\S
S4SIjrNS\RTS\S
S4SJjrOS\RVS\S
S4SKjrPS\R�S\S
S4SLjrRS\R�S\S
S4SMjrTS\R�S\S
S4SNjrV"SOSP\R�5rX\YSQ\RFS
\RF4SRj5rZSr[\R
\X\\SS'S
\X4STjr]SU\R2\RFS
\4SVjr^S\R�S\SW\XS
\4SXjr`S\R�S\SW\XS
S4SYjraS\R�S\SW\XS
S4SZjrbS\R�S\S
S4S[jrdS\R�S\S
S4S\jrfS\R�S\S
S4S]jrhS\R�S\S
S4S^jrjS\R�S\S
S4S_jrlS\R�S\S
S4S`jrnS\R�S\S
S4SajrpS\RXS\S
S4SbjrqS\R�S\S
S4ScjrsS\R�S\S
S4Sdjru\v"Se5rw\v"Sf5rx\v"Sg5ry\v"Sh5rz\v"Si5r{\v"Sj5r|\v"Sk5r}\v"Sl5r~\v"Sm5r\�"Se5r�\�"Sf5r�\�"Sn5r�\�S\GR
S\S
S4Soj5r�\�S\GRS\S
S4Spj5r�S\GRS\S
S4Sqjr�\�S\GRS\S
S4Srj5r�\�S\GRS\S
S4Ssj5r�S\GRS\S
S4Stjr�\�S\R<\R@\RB4S\Su\S
\GR$S4Svj5r�\�S\R@S\S
S4Swj5r�\�S\RBS\S
S4Sxj5r�\�S\GR,S\S
S4Syj5r�\�S�S\R>S\Sz\S
S4S{jj5r�S\GR2S\S
S4S|jr�S\GR6S\S
S4S}jr�S\GR:S\S
S4S~jr�S\GR>S\S
S4Sjr�S\GRBS\S
S4S�jr�S\GRFS\S
S4S�jr�S\GRJS\S
S4S�jr�S\GRNS\S
S4S�jr�S\GRRS\S
S4S�jr�S\GRVS\S
S4S�jr�S\GRZS\S
S4S�jr�S\GR^S\S
S4S�jr�S\GRbS\S
S4S�jr�S\GRfS\S
S4S�jr�S\GRjS\S
S4S�jr�S�r�g)�r(i,NrCrrUrVrWrXrYr%c��Uc
[5nXlX lX0lX@lSUlXPlSUlU(a[U5Ul0Ul	0Ul
SUlSUlSUl
0Ul0Ul/UlSUlSUlSUlSUlSUlSUl/Ul/UlS/Ulg)NFrr
T�context)rrCrUrVrW�created_block_contextrXr/r�import_aliases�blocks�extends_so_far�has_known_extends�code_linenor�r��
debug_info�_write_debug_info�
_new_lines�
_last_line�_first_write�_last_identifier�_indentation�
_assign_stack�_param_def_block�_context_reference_stack)r'rCrUrVrWrXrYs       r4r��CodeGenerator.__init__-s����>��Z�F�&���	� �
���%*��"�$��04����&�{�3�D�N�13���13��� ���
"'������(*��
�)+���68���26���������!���!"������24���57���*3���%r7c��URSL$r.)r/r�s r4rY�CodeGenerator.optimizedvs���~�~�T�)�)r7�msg�linenozte.NoReturnc�D�[XURUR5e)z*Fail with a :exc:`TemplateAssertionError`.)rrUrV)r'r�rs   r4�fail�CodeGenerator.fail|s��$�S�$�)�)�T�]�]�K�Kr7c�J�U=RS-
slSUR3$)zGet a new unique identifier.r
�t_)r�r�s r4�temporary_identifier�"CodeGenerator.temporary_identifier�s'������"���D�)�)�*�+�+r7r*c�j�UR5UlURURS35 g)z7Enable buffering for the frame from that point onwards.z = []N)rr��	writeline�r'r*s  r4r��CodeGenerator.buffer�s)���0�0�2������%�,�,��u�-�.r7�force_unescapedc�>�U(d�URR(a�URS5 UR5 URSURS35 UR5 URS5 UR5 URSURS35 UR5 gURR(a URSURS35 gURSURS35 g)z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat(�))�else:zreturn concat(rBN)r0r1r	�indentr��outdent�
autoescape)r'r*rs   r4�return_buffer_contents�$CodeGenerator.return_buffer_contents�s�����~�~�&�&����@�A����
����!6�u�|�|�n�B�G�H��������w�'����
��������~�Q�?�@���������*�*����!6�u�|�|�n�B�G�H���������~�Q�7�8r7c�.�U=RS-
slg)zIndent by one.r
N�r�r�s r4r�CodeGenerator.indent�s�����Q��r7�stepc�.�U=RU-slg)zOutdent by step.Nr)r'rs  r4r�CodeGenerator.outdent�s�����T�!�r7r)c��URcURSU5 gURURS3U5 g)z%Yield or write into the frame buffer.N�yield �.append()r�r	)r'r*r)s   r4�start_write�CodeGenerator.start_write�s3���<�<���N�N�8�T�*��N�N�e�l�l�^�8�4�d�;r7c�B�URbURS5 gg)z1End the writing process started by `start_write`.NrB)r�rFr
s  r4�	end_write�CodeGenerator.end_write�s���<�<�#��J�J�s�O�$r7�sc�j�URX#5 URU5 URU5 g)z4Simple shortcut for start_write + write + end_write.N)rrFr!)r'r#r*r)s    r4�simple_write�CodeGenerator.simple_write�s)��	
����%��
�
�1�
����u�r7rc�|�URS5 UHnURX25 M g![a gf=f)z�Visit a list of nodes as block in a frame.  If the current frame
is no buffer a dummy ``if 0: yield None`` is written automatically.
�passN)r	r2r�)r'rr*r)s    r4�
blockvisit�CodeGenerator.blockvisit�s;��	��N�N�6�"����
�
�4�'����	��	�s�+.�
;�;�xc��UR(a�UR(d�URRSUR-5 U=RUR-
slUR
b8URRUR
UR45 SUlSUlURRSUR-5 SUlURRU5 g)z&Write a string into the output stream.�
NFz    r)	r�r�rWrFr�r�r��appendr�)r'r+s  r4rF�CodeGenerator.write�s����?�?��$�$����!�!�$����"8�9�� � �D�O�O�3� ��)�)�5��O�O�*�*�D�,B�,B�D�DT�DT�+U�V�-1�D�*� %�D���K�K���f�t�'8�'8�8�9��D�O������!�r7�extrac�H�URX#5 URU5 g)z!Combination of newline and write.N)�newlinerF)r'r+r)r0s    r4r	�CodeGenerator.writeline�s��	
���T�!��
�
�1�
r7c���[URSU-5UlUb>URUR:wa#URUlURUlggg)z/Add one or more newlines before the next write.r
N)�maxr�rr�r�)r'r)r0s   r4r2�CodeGenerator.newline�sL���d�o�o�q�5�y�9��������t��� >�%)�[�[�D�"�"�k�k�D�O�!?�r7�extra_kwargsc��[S[SUR5U=(d S555nURH%nUR	S5 URXR5 M' U(dhURH%nUR	S5 URXb5 M' Ub0UR
5HupxUR	SUSU35 M UR(a-UR	S5 URURU5 U(Ga!URbUR	S5 OUR	S	5 URHOnUR	UR<S
35 URURU5 UR	S5 MQ Ub1UR
5HupxUR	U<S
US35 M URb?UR	S5 URURU5 UR	S5 gUR	S
5 gURb.UR	S5 URURU5 gg)aWrites a function call to the stream for the current node.
A leading comma is added automatically.  The extra keyword
arguments may not include python keywords otherwise a syntax
error could occur.  The extra keyword arguments should be given
as python dict.
c3�j# �UH)n[[R"[U55v� M+ g7fr.)�is_python_keywordr9�castrw)rgrns  r4ri�*CodeGenerator.signature.<locals>.<genexpr>�s)���
�L��
�a�f�f�S�!�n�-�-�L�s�13c3�8# �UHoRv� M g7fr.)�key�rgr+s  r4rir<�s���7�;�a�E�E�;�rkr�r?N�=z, *z
, **dict({z, **{�: z}, **rB�}z, **)�anyrr,�argsrFr2r~�dyn_args�
dyn_kwargsr>rb)	r'r)r*r7�kwarg_workaround�arg�kwargr>rbs	         r4�	signature�CodeGenerator.signature�s����
��7�4�;�;�7��9K��L�
�
��
�9�9�C��J�J�t���J�J�s�"�� ������
�
�4� ��
�
�5�(�%��'�".�"4�"4�"6�J�C��J�J��C�5��%��1�2�#7��=�=��J�J�u���J�J�t�}�}�e�,�����*��
�
�<�(��
�
�7�#������
�
�e�i�i�]�"�-�.��
�
�5�;�;��.��
�
�4� �%��'�".�"4�"4�"6�J�C��J�J�#���5�'��4�5�#7����*��
�
�7�#��
�
�4�?�?�E�2��
�
�3���
�
�3��
�_�_�
(��J�J�v���J�J�t����.�)r7c
���[5nUHnURU5 M URURS4URURS44GHupEn[	U5H�nXt;aUR5XG'UR
S5 UR5 UR
XGSUSU<S35 UR5 UR
S5 UR5 UR
S5 UR
S	XGS
35 UR5 UR
SUSS
SU<S35 UR5 UR5 M� GM g)a�Find all filter and test names used in the template and
assign them to variables in the compiled namespace. Checking
that the names are registered with the environment is done when
compiling the Filter and Test nodes. If the node is in an If or
CondExpr node, the check is done at runtime instead.

.. versionchanged:: 3.0
    Filters and tests in If and CondExpr nodes are checked at
    runtime instead of compile time.
r�r��try:z = environment.�[�]zexcept KeyError:z
@internalcode�def z
(*unused):zraise TemplateRuntimeError("No N���� named z	 found."))	r�r2r�r��sortedrr	rr)r'rrJr)�id_mapr��
dependencyrUs        r4�pull_dependencies�CodeGenerator.pull_dependenciessC��*�+���D��M�M�$����\�\�7�?�?�I�6��
�
��
�
��
�*
�%�F�:��u�
���%�#'�#<�#<�#>�F�L����v�&����
����&�,���z�l�!�D�8�ST�U�V��������1�2����
�����/�����f�l�^�:�>�?����
����5�j��"�o�5F��d�X�Y�0����������)&�*
r7c	���/nURRR5H�unupEU[:XaMU[:Xa+URUSUR
5SU<S35 MIU[:XaURUSU35 MkU[:XaURU5 M�[S5e U(a$URSRU5S35 gg)N� = r@rBzunknown load instruction�
 = missing)r��loadsr~rrr	�get_resolve_funcrrr.�NotImplementedError�join)r'r*�undefs�target�action�params      r4�enter_frame�CodeGenerator.enter_frameHs�����',�}�}�':�':�'@�'@�'B�#�F�O�V��+�+���+�+����&���T�-B�-B�-D�,E�Q�u�i�q�Q�R��>�)����&���U�G�4�5��-�-��
�
�f�%�)�*D�E�E�(C���N�N�e�j�j��0�1��<�=�r7�with_python_scopec���U(d\/nURRHnURU5 M U(a$URSR	U5S35 ggg)NrYrZ)r�r[r.r	r^)r'r*rer_r`s     r4�leave_frame�CodeGenerator.leave_frameXsT�� ��F��-�-�-�-���
�
�f�%�.�����%�*�*�V�"4�!5�Z�@�A��	!r7�async_value�
sync_valuec�@�URR(aU$U$r.)rC�is_async)r'rirjs   r4�choose_async�CodeGenerator.choose_async`s��"�.�.�7�7�{�G�Z�Gr7c�,�UR5SU3$)NrP)rm)r'rUs  r4�func�CodeGenerator.funccs���#�#�%�&�d�4�&�1�1r7c
��UR5nURRU5 [U5nSn[	5n/n[UR5HvupxURS:XaUnURS;aURUR5 URURRUR55 Mx [URS5n	SU	;a[Ub'URU[UR5-
 O*URURR%S55 SUlSU	;a7SU;a1URURR%S55 SUlSU	;a7SU;a1URURR%S55 SUlS	UlURRU5 UR/UR1S
5SSR3U5S
3U5 UR55 UR7U5 UR9U5 UR;U5 [UR5H�upxURRUR5n
UR/SU
S35 UR55 URU[UR5-
nUR/U
S35 UR=X�5 UR?U
5 URA5 M� URC5 UREURU5 URGUSS9 URIUSS9 URA5 X#4$![a  UR!SUR"5 GNxf=f![a3 UR/U
SUR<SUR<S35 N�f=f)z/Dump the function def of a macro or call block.N�caller)r,�varargs)rsr,rtzhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr,rtF�macror@r?�):�if � is missing:rYz = undefined("parameter z was not provided", name=rB)r�re)%r�r��analyze_noder�rz�	enumeraterDrUr�r.�refr��body�defaults�len�
IndexErrorrr�declare_parameterr�r�r�r�r	rpr^rr�rc�push_parameter_definitionsr2�mark_parameter_storedr�pop_parameter_definitionsr)rrg)r'r)r*�	macro_ref�explicit_caller�skip_special_paramsrD�idxrHr�r|�defaults            r4�
macro_body�CodeGenerator.macro_bodyfsP�����
��
�
�
�"�"�4�(��T�N�	���!�e����!�$�)�)�,�H�C��x�x�8�#�"%���x�x�0�0�#�'�'����1��K�K��
�
�)�)�#�(�(�3�4�-�%�T�Y�Y�0O�P�
��z�!��*���M�M�/�C��	�	�N�"B�C����E�M�M�;�;�H�E�F�(,�I�%��z�!�h�6I�&I��K�K��
�
�7�7��A�B�(,�I�%��
�"�y�8K�'K��K�K��
�
�7�7�	�B�C�)-�I�&�&+��"�
�
�
�"�"�4�(����$�)�)�G�,�-�Q�t�y�y���.?�r�B�D�I����
����E��������'�'��.�!�$�)�)�,�H�C��-�-�#�#�C�H�H�-�C��N�N�S���\�2�3��K�K�M�	
+��-�-��c�$�)�)�n�(<�=�����#��c�{�+��
�
�7�*��&�&�s�+��L�L�N�-� 	
�&�&�(�����	�	�5�)��#�#�E�4�#�@�����$��7���������e"���I�I�1����	���B�
�����e�3�C�H�H�<�@� �X�X�L��+��
�s$�4%N�%O�&N=�<N=�:O=�<O=r�c
�`�SRSURR55n[URSS5n[	URR5S:XaUS-
nURSU<SUS	UR<SUR<SUR<S
35 g)z<Dump the macro definition for the def created by macro_body.r?c3�L# �UHn[UR5v� M g7fr.)�reprrUr?s  r4ri�*CodeGenerator.macro_def.<locals>.<genexpr>�s���H�4G�q�d�1�6�6�l�l�4G�s�"$rUNr
�,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	r^r)rD�getattrrrFr�r�r�)r'r�r*�	arg_tuplerUs     r4�	macro_def�CodeGenerator.macro_def�s����I�I�H�I�N�N�4G�4G�H�H�	��y�~�~�v�t�4���y�~�~�"�"�#�q�(����I��
�
�(����I�;�?��)�)�,�B�y�/I�/I�.L�M��)�)�,�,J�
L�	
r7c�b�SUR3nURbUSUR<3nU$)z.Return a human readable position for the node.zline � in )rrU)r'r)r�s   r4�position�CodeGenerator.position�s5���T�[�[�M�
"���9�9� ��4�t�D�I�I�=�)�B��	r7c��SRSURR5R555nSUS3$)Nr?c3�6# �UHupU<SU3v� M g7f�rANr�)rgrUr`s   r4ri�3CodeGenerator.dump_local_context.<locals>.<genexpr>�s$���
� C����h�b���!� C�s��{rB)r^r��dump_storesr~)r'r*�items_kvs   r4�dump_local_context� CodeGenerator.dump_local_context�sD���9�9�
� %�
�
� 9� 9� ;� A� A� C�
�
���H�:�R� � r7c��URS5 URS5 URS5 URS5 URS5 g)z�Writes a common preamble that is used by root and block functions.
Primarily this sets up common local helpers and enforces a generator
through a dead branch.
z$resolve = context.resolve_or_missingz!undefined = environment.undefinedzconcat = environment.concatzcond_expr_undefined = Undefinedzif 0: yield NoneN�r	r�s r4�
write_commons�CodeGenerator.write_commons�sG��
	
���=�>����:�;����4�5�	
���8�9����)�*r7c�j�URRURR55 g)a)Pushes all parameter targets from the given frame into a local
stack that permits tracking of yet to be assigned parameters.  In
particular this enables the optimization from `visit_Name` to skip
undefined expressions for parameters in macros as macros can reference
otherwise unbound parameters.
N)r�r.r��dump_param_targetsr
s  r4r��(CodeGenerator.push_parameter_definitions�s%��	
���$�$�U�]�]�%E�%E�%G�Hr7c�8�URR5 g)z+Pops the current parameter definitions set.N)r��popr�s r4r��'CodeGenerator.pop_parameter_definitions�s�����!�!�#r7r`c�d�UR(aURSRU5 gg)zpMarks a parameter in the current parameter definitions as stored.
This will skip the enforced undefined checks.
rQN)r�r��r'r`s  r4r��#CodeGenerator.mark_parameter_stored�s+��� � ��!�!�"�%�-�-�f�5�!r7c�:�URRU5 gr.)r�r.r�s  r4�push_context_reference�$CodeGenerator.push_context_reference�s���%�%�,�,�V�4r7c�8�URR5 gr.)r�r�r�s r4�pop_context_reference�#CodeGenerator.pop_context_reference�s���%�%�)�)�+r7c� �URS$)NrQ�r�r�s r4�get_context_ref�CodeGenerator.get_context_ref�s���,�,�R�0�0r7c�8�URSnUS:XagUS3$)NrQr��resolvez.resolver�r�s  r4r\�CodeGenerator.get_resolve_func�s*���.�.�r�2���Y������"�"r7c�L�UR5SURU5S3$)Nz	.derived(rB)r�r�r
s  r4�derive_context�CodeGenerator.derive_contexts,���&�&�(�)��4�3J�3J�5�3Q�2R�RS�T�Tr7c�H�UR(dgXRS;$)z4Checks if a given target is an undeclared parameter.FrQ)r�r�s  r4�parameter_is_undeclared�%CodeGenerator.parameter_is_undeclareds"���$�$���.�.�r�2�2�2r7c�J�URR[55 g)z+Pushes a new layer for assignment tracking.N)r�r.rzr�s r4�push_assign_tracking�"CodeGenerator.push_assign_trackings�����!�!�#�%�(r7c��URR5nUR(d"UR(dUR(aU(dgUVs/sHo3SSS:wdM
UPM nn[U5S:Xa�[
[U55nURRU5nUR(aURSU<SU35 gUR(aURSU<SU35 gURSU<SU35 O�UR(aURS5 O4UR(aURS	5 OURS
5 [[U55HOupuU(aURS5 URRU5nURU<SU35 MQ URS
5 UR(d�UR(doU(ag[U5S:XaURSUS<S35 gSR[[ [U555nURSUS35 ggggs snf)z_Pops the topmost level for assignment tracking and updates the
context variables if necessary.
Nr
�_z_loop_vars[�] = z_block_vars[�
context.vars[z_loop_vars.update({z_block_vars.update({�context.vars.update({r?rA�})�context.exported_vars.add(rrBzcontext.exported_vars.update((r)r�r�r�r�r�r�next�iterr�r|r	r{rSrFr^�mapr�)	r'r*�varsr+�public_namesrUr|r��	names_strs	         r4�pop_assign_tracking�!CodeGenerator.pop_assign_trackings����!�!�%�%�'���!�!��$�$��N�N���#'�8�4�a�R�a�5�C�<��4��8��t�9��>���T�
�#�D��-�-�#�#�D�)�C��������T�H�D���>�?��� � �����d�X�T�#��?�@���N�N�]�4�(�$�s�e�<�=�������4�5��"�"����5�6����6�7�&�v�d�|�4�	����J�J�t�$��m�m�'�'��-���
�
�d�X�R��u�-�.�	5�

�J�J�t��� � ��)9�)9�l��<� �A�%����!;�L��O�;N�a�P�Q� �I�I�c�$��|�0D�&E�F�	����!?�	�{�"�M�N�?K�)9� ��19s�I?�*I?c	�
�UbS5e[URUR5nSSKJn SSKJn URR(a[XT-5nO[U5nURSSRU5-5 UR(aSOSnUR[R5SLnUR[R5H`n	U	RUR ;a+UR#S	U	R<S
3U	R$5 X�R U	R'Mb UR[R&5H�n
U
R(UR*;dMU
R(nUR-5=UR*U'nSU;a0UR/SS5up�URSU
S
USU35 M�URSUSU35 M� URSUR<35 URUR1S5SUS3SS9 UR35 UR55 [7U5nS[9UR:S5;a/UR<R?S5nURUS35 UR<RAU5 S=Ul!Ul"U=(a URF(+Ul$U(aURS5 URKU5 URMUR:5 UROUR:U5 URQUSS9 URS5 U(Ga'URF(d!UR35 URS5 UR35 URR(dURS5 O�URS5 URS5 UR35 URS5 UR35 URS 5 URS5 URS5 URS!5 URSSURF(+-5 UR RU5GH�unn	URUR1S"U-5SUS3U	S5 UR35 UR55 [7U5nSUl+[9U	R:S#5nSU;a/UR<R?S5nURUS35 S$U;a6UR<R?S$5nURUS%U<S&US'35 UR<RAU	5 UUl,URS(5 URKU5 URMU	R:5 UROU	R:U5 URQUSS9 URS5 GM� SRS)UR 55nURS*US+3SS9 S,RS-URZ55nURS.U<35 g)/Nzno root frame allowedr
)�async_exported)�exportedzfrom jinja2.runtime import r?�z, environment=environmentzblock z defined twice�.zfrom z import z as zimport zname = �rootz(context, missing=missingrv)r0r'r�z = TemplateReference(context)Tzparent_template = Nonery�if parent_template is not None:z4yield from parent_template.root_render_func(context)z0agen = parent_template.root_render_func(context)rMzasync for event in agen:zyield eventzfinally: await agen.aclose()�block_)r'�superr�z = context.super(z, block_rBz_block_vars = {}c3�0# �UHo<SU3v� M g7f)z: block_Nr�r?s  r4ri�/CodeGenerator.visit_Template.<locals>.<genexpr>�s���!K�{�!�E��!��"5�{�s�z
blocks = {rB�&c3�4# �UHupUSU3v� M g7f)r@Nr�rms   r4rir��s���G��t�q�1�#�Q�q�c�
��s�z
debug_info = ).rrCrU�runtimer�r�rlrSr	r^rX�findr�Extends�find_allr�r�rr�ImportedName�
importnamer�r�rsplitrprr�r+r�r}r�r�rzr�r�r�r�rcrVr)rgrr~r�r�r�)r'r)r*r0r�r��exported_names�envenv�have_extendsr��import_�imp�alias�module�objr|rUr�r��
blocks_kv_str�debug_kv_strs                     r4�visit_Template�CodeGenerator.visit_Template=sj���}�5�5�5�}��t�/�/����;��+�%����$�$�#�H�$=�>�N�#�H�-�N����4�t�y�y��7P�P�Q�����,G���y�y����/�t�;���]�]�5�;�;�/�E��z�z�T�[�[�(��	�	�F�5�:�:�.��?����N�&+�K�K��
�
�#�0��}�}�U�%7�%7�8�G��!�!��)<�)<�<��(�(��37�3L�3L�3N�N��#�#�C�(�5��#�:�"%�*�*�S�!�"4�K�F��N�N�U�6�(�(�3�%�t�E�7�#K�L��N�N�W�S�E��e�W�#=�>�9�	
�������
�.�/�	
����y�y�� �!�!:�6�(�"�E�Q�	�	
�	
���
������h����_�T�Y�Y�	�:�:��-�-�1�1�&�9�C��N�N�c�U�"?�@�A�
�
�
�"�"�4�(�+/�/�����%1�%P�$�:P�:P�6P��"���N�N�3�4���������t�y�y�)�����	�	�5�)�����$��7�������)�)����
����@�A��K�K�M��#�#�,�,����U�V����Q�R����v�&����
����9�:����
����}�-������������=�>��L�L��$�"8�"8�8�9�:� �;�;�,�,�.�K�D�%��N�N��9�9�X��_�-�.�.G��x�r�R���
�

�K�K�M���� � ��/�K�&*�K�#�(����5F�G�J���#�!�)�)�;�;�F�C�����#��&C�D�E��*�$�!�)�)�;�;�G�D�����#��&7��x�x��v�Q�O�P����,�,�U�3� $�K���N�N�-�.����[�)��"�"�5�:�:�.��O�O�E�J�J��4����[�D��A��L�L�N�7/�:�	�	�!K�t�{�{�!K�K�
�����]�O�2�6�a��@��x�x�G�t���G�G������|�&6�7�8r7c�\�SnUR(aHUR(agURS:�a&URS5 UR	5 US-
nUR
(aUR
U5nOUR5nUR(abURSUR<S3U5 UR	5 URSUR<S3U5 UR5 URR(d2URc%URS	UR<S
US3U5 O�URSUR<S
US35 URS
5 UR	5 URUR5S3U5 UR	5 URSU5 UR5 UR5 URSURSS535 URU5 g)z.Call a block and register it for the template.rN�if parent_template is None:r
zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](rBzgen = context.blocks[rM�for event in gen:�event�	finally: �await gen.aclose()�gen.close())r�r�r�r	r�scopedr�r��requiredrUrrCrlr�rmr%)r'r)r*r�r�s     r4r��CodeGenerator.visit_Block�s������>�>��%�%���"�"�Q�&����<�=����
���
���;�;��)�)�%�0�G��*�*�,�G��=�=��N�N�3�D�I�I�=��I�4�P��K�K�M��N�N�=�d�i�i�]�,�W��
�
�L�L�N����(�(�U�\�\�-A��N�N�,�T�Y�Y�M��w�i�q�I�4�
�
�N�N�2�4�9�9�-�u�W�I�Q�O�P��N�N�6�"��K�K�M��N�N��$�$�&�'�'8�9��
�
�K�K�M����g�u�-��L�L�N��L�L�N��N�N��D�-�-�.B�M�R�S�T�
�	
���U�r7c���UR(dURSUR5 URS:�anUR(d!URS5 UR
5 URS5 UR(a
[5eUR5 URSU5 URURU5 URSUR<S35 URS5 UR
5 URS	5 UR5 UR(aS
UlU=RS-
slg)
zCalls the extender.z,cannot use extend from a non top-level scoperr�z5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(r?rBz9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)Tr
N)r�rrr�r�r	rr�rr2�templaterFrUr��r'r)r*s   r4�
visit_Extends�CodeGenerator.visit_Extends�s���~�~��I�I�D�d�k�k�R�
����"�
�)�)����@�A����
��N�N�R�S��%�%�"�n�$��������D�d�K��
�
�4�=�=�%�(��
�
�R��	�	�}�A�&�'����R�S����
����Q�R�����
�?�?�%)�D�"�	
���q� �r7c��^^�UR(a!TRS5 TR5 Sn[UR[
R5(a^[URR[5(aSnOm[URR[[45(aSnO;[UR[
R[
R45(aSnTRSUS3U5 TRURT5 TRSTR<S35 UR(asTR!5 TRS	5 TR5 TRS
5 TR!5 TRS5 TR5 SUU4S
jjnUR"(a�TRSTR%T5S35 TRS5 TR5 TRTR'5S35 U"5 TR!5 TRSTR'SS535 OETR(R*(aTRS5 U"5 OTRS5 UR(aTR!5 gg)zHandles includes.rM�get_or_select_template�get_template�select_templateztemplate = environment.r@r?rBzexcept TemplateNotFound:r(rNc�j>�TR5 TRST5 TR5 g)Nr�)rr%r)r*r's��r4�	loop_body�.CodeGenerator.visit_Include.<locals>.loop_body-s%����K�K�M����g�u�-��L�L�Nr7zNgen = template.root_render_func(template.new_context(context.get_all(), True, rr�r�r�r�zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamr�)�ignore_missingr	rr[r�r�Constrbrwrxry�Tuple�Listr2rFrUr�with_contextr�rmrCrl)r'r)r*�	func_namers` `  r4�
visit_Include�CodeGenerator.visit_Includes#�������N�N�6�"��K�K�M�,�	��d�m�m�U�[�[�1�1��$�-�-�-�-�s�3�3�*�	��D�M�M�/�/�%���?�?�-�	��
��
�
����U�Z�Z�'@�
A�
A�)�I����0���1�=�t�D��
�
�4�=�=�%�(��
�
�R��	�	�}�A�&�'�����L�L�N��N�N�5�6��K�K�M��N�N�6�"��L�L�N��N�N�7�#��K�K�M�	�	�
����N�N���+�+�E�2�3�2�7�
�

�N�N�6�"��K�K�M��N�N�d�/�/�1�2�2C�D�E��K��L�L�N��N�N��D�-�-�.B�M�R�S�T�
��
�
�
&�
&��N�N�!�
�
�K��N�N�S�T�����L�L�N�r7c��URURS5S35 URURU5 URSUR<S35 UR
(a;SURS53nURUSUR
U5S35 gURS	URS5S
35 g)N�await zenvironment.get_template(r?z).�make_module�_asyncz(context.get_all(), True, rB�_get_default_modulez	(context))rFrmr2r�rUrr�)r'r)r*�f_names    r4�_import_common�CodeGenerator._import_commonLs���	
�
�
�d�'�'��1�2�2K�L�M��
�
�4�=�=�%�(��
�
�R��	�	�}�B�'�(����"�4�#4�#4�X�#>�"?�@�F��J�J��(�4�T�5L�5L�U�5S�4T�TU�V�
�
�J�J�,�T�->�->�x�-H�,I��S�Tr7c��URURRUR5S3U5 UR(a URSUR<S35 UR
X5 UR(aBURRS5(d!URSUR<S35 ggg)zVisit regular imports.rYr�r�r��context.exported_vars.discard(rBN)r	r�r|r`r�rFr�
startswithrs   r4�visit_Import�CodeGenerator.visit_Import[s������%�-�-�+�+�D�K�K�8�9��=�t�D��>�>��J�J��t�{�{�o�T�:�;����D�(��>�>�$�+�+�"8�"8��"=�"=��N�N�;�D�K�K�?�!�L�M�#>�>r7c	�^�URU5 URS5 URUT5 /n/nURGH]n[	U[
5(aUupVOUnUR
TRRU5SU<S35 UR
STRRU5S35 UR5 URU5RSS5RSS	5nS
USU<3nUR
TRRU5SU<S
U<S35 UR5 TR(dGM"URU5 URS5(aGMLURU5 GM` U(av[!U5S:Xa7USnUR
SU<STRRU535 O0SR#U4SjU55n	UR
SU	S35 U(a^[!U5S:XaUR
SUS<S35 gSR#[%[&U55n
UR
SU
S35 gg)zVisit named imports.zincluded_template = z = getattr(included_template, z
, missing)rwrxr�z{{rBz}}z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=rBr�r
rr�r�r?c3�d># �UH%o<STRRU53v� M' g7fr�)r�r|)rgrUr*s  �r4ri�1CodeGenerator.visit_FromImport.<locals>.<genexpr>�s-����%�GP�t�h�b����!2�!2�4�!8� 9�:�y�s�-0r�r�rz)context.exported_vars.difference_update((rN)r2rFrr�r[rxr	r�r|rr��replacerr�r.rrr^r�r�)r'r)r*�	var_names�discarded_namesrUr�r��message�names_kvr�s  `        r4�visit_FromImport�CodeGenerator.visit_FromImportfsW������T���
�
�)�*����D�%�(��	����J�J�D��$��&�&�"���e����N�N��=�=�$�$�U�+�,�-/�/3�h�j�B�
�
�N�N�S����!2�!2�5�!9� :�,�G�H��K�K�M�
�}�}�T�*�2�2�3��=�E�E�c�4�P�H�!�!)�
�+7�7;�h�@�
�

�N�N��=�=�$�$�U�+�,�N�7�+�W�T�H�TU�V�
�
�L�L�N��~�~�~�� � ��'��'�'��,�,�#�*�*�5�1�9�<��9�~��"� ��|������t�h�d�5�=�=�;L�;L�T�;R�:S�T�U��9�9�%�GP�%������!7��z��E�F���?�#�q�(����!?��PQ�@R�?U�UV�W�X� �I�I�c�$��&@�A�	����?�	�{�"�M��r7c�
�UR5nSUlUR5nUR5nUR=(dR S[UR	SS9S5;=(d/ [SUR
[R555nSnU(aURRS5nURRUSS9 UR(aURRUS	S9 UR(Ga�UR5nURRUS
S9 URUR!U5S3UR5 UR#5 UR%U5 URUR'SS
55 UR)UR*U5 UR-S5 UR-UR'SS55 UR-S5 UR#5 URSUR5 UR)URU5 UR-S5 UR#5 URS5 UR)UR*U5 UR/S5 UR1USS9 UR(aVURUR!S5S3U5 UR#5 UR3U5 UR2UlU(aURUS35 UR
[R45HCn	U	R6S:XdMU	R8S:XdM'UR;SU	R<5 ME UR(a$UR5n
URU
S35 URUR'SS
5U5 UR)UR*U5 U(a(UR-SUSUR'S5S35 OUR-S5 UR(aUR-WS35 UR(aUR-S5 O�UR>R@(aU(dUR-S 5 UR)URBU5 UR>R@(aU(dUR-S!5 UR(aUR-S!5 UR(aUR-S"5 OUR-U(aS#OS5 UR#5 UR%U5 URS$5 UREURFU5 UR(aURW
S%35 UR/5 UR1X1R=(a UR(+S9 UR(asURSW
S35 UR#5 UR%U5 UREURU5 UR1U5 UR/5 UR(a�URIU5 UR/5 URKX!5 UR-UR'S&5S'35 UR>R@(aUR-S 5 UR)URBU5 UR>R@(aUR-S!5 UR-S(5 URMU5 URN(a3URNS)RQURRR5 gg)*NT�loop)r})�only)r*c3�8# �UHoRv� M g7fr.)r�)rgr�s  r4ri�*CodeGenerator.visit_For.<locals>.<genexpr>�s���H�-G�E�<�<�-G�rkr})�
for_branch�else�testz(fiter):z
async for zfor r�zauto_aiter(fiter)�fiter�:rwr�ryz%(reciter, loop_render_func, depth=0):rZ�storez8Can't assign to special loop variable in for-loop targetz = 1r?�AsynczLoopContext(r@�reciterzauto_aiter(rBz&, undefined, loop_render_func, depth):z
, undefined):z_loop_vars = {}z = 0rzloop(z, loop)rQ)*r�r��	recursiver��iter_child_nodesrCr�rr�r�r�rz�else_r0rr	rprrcrmr2r`rFrrgr�r�r�rUrrrCrlr�r)r}rrr!r��difference_update�stores)r'r)r*r��
test_frame�
else_frame�
extended_loop�loop_ref�loop_filter_funcrU�iteration_indicators           r4�	visit_For�CodeGenerator.visit_For�s����[�[�]�
� $�
���[�[�]�
��[�[�]�
�
�N�N�
I���t�4�4�)�4�D�i�P�Q�
I��H�T�]�]�5�;�;�-G�H�H�		����!�)�)�;�;�F�C�H����'�'���'�@��:�:����+�+�D�V�+�D��9�9�9�#�8�8�:�����+�+�D�V�+�D��N�N�d�i�i�(8�9�:�(�C�T�Y�Y�O��K�K�M����Z�(��N�N�4�,�,�\�6�B�C��J�J�t�{�{�J�/��J�J�v���J�J�t�(�(�)<�g�F�G��J�J�s�O��K�K�M��N�N�5�$�)�)�,��J�J�t�y�y�*�-��J�J�s�O��K�K�M��N�N�8�$��J�J�t�{�{�J�/��L�L��O����Z�4��@�
�>�>��N�N��9�9�V�$�%�%J�K�T�
�
�K�K�M��K�K�
�#�!+� 1� 1�J����N�N�h�Z�z�2�3��M�M�%�*�*�-�D��x�x�7�"�t�y�y�F�':��	�	�N��K�K��.��:�:�"&�";�";�"=���N�N�1�2�$�7�8����t�(�(��v�>��E��
�
�4�;�;�
�+���J�J��H�:�T�$�*;�*;�G�*D�)E�\�R�S��J�J�v���9�9��J�J�*�+�1�-�.��>�>��J�J�y�!����(�(���
�
�=�)��J�J�t�y�y�%�(����(�(���
�
�3���9�9��J�J�s�O��>�>��J�J�?�@��J�J�-��S�A����
�����$����(�)�����	�	�:�.��:�:��N�N�1�2�$�7�8���������.�.�*K����^�	�	
��:�:��N�N�S�!4� 5�Q�7�8��K�K�M����Z�(��O�O�D�J�J�
�3����Z�(��L�L�N��>�>��'�'�
�3��L�L�N����U�)��J�J�$�+�+�H�5�6�e�<�=����(�(��
�
�=�)��J�J�t�y�y�%�(����(�(��
�
�3���J�J�y�!��N�N�5�!�������r�"�4�4�Z�5G�5G�5N�5N�O�r7c���UR5nURSU5 URURU5 UR	S5 UR5 UR
URU5 UR5 URH~nURSU5 URURU5 UR	S5 UR5 UR
URU5 UR5 M� UR(aNURS5 UR5 UR
URU5 UR5 gg)Nrwr2zelif r)r�r	r2r0rFrr)r}r�elif_r9)r'r)r*�if_framerEs     r4�visit_If�CodeGenerator.visit_If(s����:�:�<�����u�d�#��
�
�4�9�9�h�'��
�
�3�����
�����	�	�8�,������Z�Z�E��N�N�7�E�*��J�J�u�z�z�8�,��J�J�s�O��K�K�M��O�O�E�J�J��1��L�L�N�
 ��:�:��N�N�7�#��K�K�M��O�O�D�J�J��1��L�L�N�	r7c��URX5up4UR5 UR(a`URR	S5(d URSUR<S35 UR
SUR<S35 URURRUR5S35 URXC5 g)Nr�r�rBr�r�rY)
r�r2r�rUrrFr	r�r|r�)r'r)r*�macro_framer�s     r4�visit_Macro�CodeGenerator.visit_Macro=s���!%����!=��������>�>��9�9�'�'��,�,��
�
�7��	�	�}�A�F�G��N�N�]�4�9�9�-�t�<�=��
�
�e�m�m�'�'��	�	�2�3�3�7�8����y�.r7c���URX5up4URS5 URXC5 URX!5 UR	UR
USS9 UR
U5 g)Nz	caller = T)�forward_caller)r�r	r�r�
visit_Call�callr!)r'r)r*�
call_framer�s     r4�visit_CallBlock�CodeGenerator.visit_CallBlockGs[�� $���� <��
����{�#����y�-�����%�����	�	�5���>����u�r7c�t�UR5nURRU5 URU5 UR	U5 URURU5 URX!5 URURU5 URU5 URU5 gr.)r�r�rzrcr�r)r}rr��filterr!rg)r'r)r*�filter_frames    r4�visit_FilterBlock�CodeGenerator.visit_FilterBlockOs����{�{�}�����)�)�$�/�����&����L�!�����	�	�<�0�����%����$�+�+�|�4����u������&r7c��UR5nURRU5 URU5 [	UR
UR5HHupEUR5 URXC5 URS5 URXR5 MJ URURU5 URU5 g)NrY)
r�r�rzrc�zip�targets�valuesr2r2rFr)r}rg)r'r)r*�
with_framer`�exprs      r4�
visit_With�CodeGenerator.visit_WithZs����[�[�]�
����'�'��-�����$�����d�k�k�:�L�F��L�L�N��J�J�v�*��J�J�u���J�J�t�#�	;�
	
����	�	�:�.�����$r7c�^�URU5 URURU5 gr.)r2r2r)rs   r4�visit_ExprStmt�CodeGenerator.visit_ExprStmtfs �����T���
�
�4�9�9�e�$r7c�|�\rSrSr%\R
\RS\4\S'\R
\\S'Sr	g)�CodeGenerator._FinalizeInfoij.�const�srcr�N)
r�r�r�r�r9r��Callablerw�__annotations__r�r�r7r4�
_FinalizeInforejs,���z�z�!�*�*�S�#�X�.�/�/�
�Z�Z��_�r7rjrbc��[U5$)z�The default finalize function if the environment isn't
configured with one. Or, if the environment has one, this is
called on that function's output for constants.
)rwrs r4�_default_finalize�CodeGenerator._default_finalizens���5�z�r7�	_finalizec�z^^^�TRbTR$TR=nmSnTRR(a�SnTRRm[R
S[RS[RS0R[R"T55nSnUc*S[RS[R4UU4SjjnO7UUS	3nUS:Xa*S[RS[R4UUU4S
jjnTRX5TlTR$)aIBuild the finalize function to be used on constants and at
runtime. Cached so it's only created once for all output nodes.

Returns a ``namedtuple`` with the following attributes:

``const``
    A function to finalize constant data at compile time.

``src``
    Source code to output around nodes to be evaluated at
    runtime.
Nzenvironment.finalize(r��context.eval_ctxrCrbr%c� >�T"T"U55$r.r�)rbr��env_finalizes ��r4�finalize�.CodeGenerator._make_finalize.<locals>.finalize�s���"�<��#6�7�7r7r?c�6>�T"T"TRU55$r.)rC)rbr�rrr's ���r4rsrt�s���&�|�D�4D�4D�e�'L�M�Mr7)rnrlrCrsrr��eval_context�get�from_objr9r:rj)r'rsrg�pass_argr�rrs`   @@r4�_make_finalize�CodeGenerator._make_finalizexs$����>�>�%��>�>�!�"�3�3�3��7������$�$�)�C��+�+�4�4�L�� � �)��%�%�'9��$�$�m���c��!�!�,�/��	
��H���8�A�E�E�8�a�e�e�8�8���h�Z�r�*���}�,�N����N�!�%�%�N�N��+�+�H�:����~�~�r7�groupc�*�[[U55$)z�Given a group of constant values converted from ``Output``
child nodes, produce a string to write to the template module
source.
)r�r)r'r|s  r4�_output_const_repr� CodeGenerator._output_const_repr�s��
�F�5�M�"�"r7rsc��URUR5nURR(a[U5n[	U[
R5(a[U5$URU5$)aTry to optimize a child of an ``Output`` node by trying to
convert it to constant, finalized data at compile time.

If :exc:`Impossible` is raised, the node is not constant and
will be evaluated at runtime. Any other exception will also be
evaluated at runtime for easier debugging.
)	�as_constr0rrr[r�TemplateDatarwrf)r'r)r*rsrfs     r4�_output_child_to_const�$CodeGenerator._output_child_to_const�sZ���
�
�e�n�n�-���>�>�$�$��5�M�E��d�E�.�.�/�/��u�:���~�~�e�$�$r7c�,�URR(aURS5 O>URR(aURS5 OURS5 URbURUR5 gg)zHOutput extra source code before visiting a child of an
``Output`` node.
z1(escape if context.eval_ctx.autoescape else str)(zescape(zstr(N)r0r1rFrrg�r'r)r*rss    r4�_output_child_pre�CodeGenerator._output_child_pre�sb���>�>�"�"��J�J�J�K�
�^�^�
&�
&��J�J�y�!��J�J�v���<�<�#��J�J�x�|�|�$�$r7c�d�URS5 URbURS5 gg)zGOutput extra source code after visiting a child of an
``Output`` node.
rBN)rFrgr�s    r4�_output_child_post� CodeGenerator._output_child_post�s)��	
�
�
�3���<�<�#��J�J�s�O�$r7c���UR(a3UR(agURS5 UR5 UR	5n/nUR
H�nUR(d4[U[
R5(d[
R"5eURXRU5nU(a.[US[5(aUSRU5 M�URU/5 M� URb\[U5S:XaURURS35 OURURS35 UR5 UH�n[U[5(aJUR!U5nURcURSU-5 MLURUS-5 MbURcURSU5 OUR#U5 UR%XrU5 UR'Xr5 UR)XrU5 URcM�UR+S5 M� URb2UR-5 UR[U5S:XaSOS	5 UR(aUR-5 gg![
R[4a URU5 GM�f=f)
Nr�rQr
rz	.extend((rr�rBr)r�r�r	rrzrrfr[r��
Impossibler��	Exceptionr.ryr�rr~r2r�r2r�rFr)	r'r)r*rsr}�childrf�item�vals	         r4�visit_Output�CodeGenerator.visit_Output�s?���%�%��%�%���N�N�8�9��K�K�M��&�&�(��;=��
�Z�Z�E�
��N�N�"�%��);�);�<�<��*�*�,�,��3�3�E�(�K���
�4��8�T�2�2��R�����&����U�G�$�/ �2�<�<�#��4�y�A�~����%�,�,��x�8�9����%�,�,��y�9�:��K�K�M��D��$��%�%��-�-�d�3���<�<�'��N�N�8�c�>�2��N�N�3��9�-��<�<�'��N�N�8�T�2��L�L��&��&�&�t�H�=��
�
�4�'��'�'��X�>��<�<�+��J�J�s�O�+�.�<�<�#��L�L�N��N�N�#�d�)�q�.�3�d�;��%�%��L�L�N�&��_�$�$�i�0�
����E�"��
�s�'AK�+K2�1K2c��UR5 [5nUR[R5H�nUR
U;aMUR
UR
5 URRUR
5nURSUS35 UR5 URS5 UR5 M� URU5 URURU5 URS5 URUR U5 UR#U5 g)Nzif not isinstance(z
, Namespace):zMraise TemplateRuntimeError("cannot assign attribute on non-namespace object")rY)r�rzr�r�NSRefrUr�r�r|r	rrr2r2r`rFr)r�)r'r)r*�	seen_refs�nsrefr|s      r4�visit_Assign�CodeGenerator.visit_Assign.s����!�!�#�!$��	��]�]�5�;�;�/�E��z�z�Y�&���M�M�%�*�*�%��-�-�#�#�E�J�J�/�C��N�N�/��u�M�B�C��K�K�M��N�N�F�
�
�L�L�N�0� 	
���T���
�
�4�;�;��&��
�
�5���
�
�4�9�9�e�$�� � ��'r7c�x�UR5 UR5nSUlURR	U5 URU5 UR
U5 URURU5 URU5 URURU5 URS5 URbURURU5 OURSURS35 URS5 URU5 UR!U5 g)NFz9 = (Markup if context.eval_ctx.autoescape else identity)(�concat(rB)r�r�r�r�rzrcr�r)r}r2r2r`rFrUr�r�rg)r'r)r*r�s    r4�visit_AssignBlock�CodeGenerator.visit_AssignBlockMs����!�!�#��k�k�m��,1��(����(�(��.�����%����K� �����	�	�;�/����T���
�
�4�;�;��&��
�
�N�O��;�;�"����d�k�k�;�7��J�J���!3�!3� 4�A�6�7��
�
�3��� � ��'�����%r7c	�X�URS:XalUR(d"UR(dUR(a9UR(a(URSRUR5 URRUR5nURS:XahURRU5nUb#US[:XaURU5(a'URSUR<SUSUS35 gURU5 g)	Nr4rQr�rz(undefined(name=z) if z is missing else rB)
r�r�r�r�r�r�rUr�r|�	find_loadrr�rF)r'r)r*r|r�s     r4r��CodeGenerator.visit_Namees����8�8�w���N�N�e�.�.�%�2C�2C��!�!��"�"�2�&�*�*�4�9�9�5��m�m����	�	�*��
�8�8�v���=�=�*�*�3�/�D�� ���G�1�1��4�4�S�9�9��
�
�&�t�y�y�m�5���=N�s�e�ST�U����
�
�3�r7c��URRUR5nURUSUR<S35 g)NrNrO)r�r|rUr	�attr)r'r)r*r|s    r4�visit_NSRef�CodeGenerator.visit_NSRef~s9��
�m�m����	�	�*�����#��a��	�	�}�A�.�/r7c���URUR5n[U[5(aUR	[U55 gUR	[
U55 gr.)r�r0r[rtrFrwr�)r'r)r*r�s    r4�visit_Const�CodeGenerator.visit_Const�sA���m�m�E�N�N�+���c�5�!�!��J�J�s�3�x� ��J�J�t�C�y�!r7c���UR[URUR555 g![R
a# URSUR<S35 gf=f�Nz6(Markup if context.eval_ctx.autoescape else identity)(rB)rFr�r�r0rr��datars   r4�visit_TemplateData� CodeGenerator.visit_TemplateData�sW��	��J�J�t�D�M�M�%�.�.�9�:�;�����	��J�J�H����
�UV�W�
�	�s�36�4A-�,A-c���URS5 Sn[UR5H.up4U(aURS5 URXB5 M0 URUS:XaS5 gS5 g)Nr@rQr?rz,)rB�rFr{r~r2�r'r)r*r�r�s     r4�visit_Tuple�CodeGenerator.visit_Tuple�s[���
�
�3����"�4�:�:�.�I�C���
�
�4� ��J�J�t�#�/�	
�
�
�3�!�8�4�-��-r7c���URS5 [UR5H.up4U(aURS5 URXB5 M0 URS5 g)NrNr?rOr�r�s     r4�
visit_List�CodeGenerator.visit_List�sJ���
�
�3��"�4�:�:�.�I�C���
�
�4� ��J�J�t�#�/�	
�
�
�3�r7c�F�URS5 [UR5Hfup4U(aURS5 URURU5 URS5 URUR
U5 Mh URS5 g)Nr�r?rArB)rFr{r~r2r>rbr�s     r4�
visit_Dict�CodeGenerator.visit_Dict�sn���
�
�3��"�4�:�:�.�I�C���
�
�4� ��J�J�t�x�x��'��J�J�t���J�J�t�z�z�5�)�/�	
�
�
�3�r7�+�-�*�/z//z**�%�and�orznot c�4�URR(aSnO URR(aSnOSnURUS35 URH%nURXB5 URS5 M' URS5 g)Nz8(markup_join if context.eval_ctx.volatile else str_join)�markup_join�str_joinz((r?r)r0r1rrFrr2)r'r)r*rrHs     r4�visit_Concat�CodeGenerator.visit_Concat�sr���>�>�"�"�R�I�
�^�^�
&�
&�%�I�"�I��
�
�i�[��#�$��:�:�C��J�J�s�"��J�J�t���	
�
�
�4�r7c���URS5 URURU5 URHnURX25 M URS5 g)Nr@rB)rFr2r^�opsrIs    r4�
visit_Compare�CodeGenerator.visit_Compare�sD���
�
�3���
�
�4�9�9�e�$��(�(�B��J�J�r�!���
�
�3�r7c��URS[URS35 URURU5 g)NrA)rF�	operatorsr<r2r^rs   r4�
visit_Operand�CodeGenerator.visit_Operand�s3���
�
�Q�y����)�*�!�,�-��
�
�4�9�9�e�$r7c�P�URR(aURS5 URS5 URURU5 URSUR
<S35 URR(aURS5 gg)N�(await auto_await(zenvironment.getattr(r?rBr)rCrlrFr2r)r�rs   r4�
visit_Getattr�CodeGenerator.visit_Getattr�sv�����$�$��J�J�+�,��
�
�)�*��
�
�4�9�9�e�$��
�
�R��	�	�}�A�&�'����$�$��J�J�t��%r7c��[UR[R5(a[UR	UR
U5 UR
S5 UR	URU5 UR
S5 gURR(aUR
S5 UR
S5 UR	UR
U5 UR
S5 UR	URU5 UR
S5 URR(aUR
S5 gg)NrNrOr�zenvironment.getitem(r?rBr)	r[rHr�Slicer2r)rFrCrlrs   r4�
visit_Getitem�CodeGenerator.visit_Getitem�s����d�h�h����,�,��J�J�t�y�y�%�(��J�J�s�O��J�J�t�x�x��'��J�J�s�O����(�(��
�
�/�0��J�J�-�.��J�J�t�y�y�%�(��J�J�t���J�J�t�x�x��'��J�J�s�O����(�(��
�
�4� �)r7c�@�URbURURU5 URS5 URbURURU5 URb.URS5 URURU5 gg)Nr2)�startr2rF�stoprrs   r4�visit_Slice�CodeGenerator.visit_Slice�sq���:�:�!��J�J�t�z�z�5�)��
�
�3���9�9� ��J�J�t�y�y�%�(��9�9� ��J�J�s�O��J�J�t�y�y�%�(�!r7�	is_filterc#��# �URR(aURS5 U(a[URURURS35 URRRUR5nOZURURURS35 URRRUR5nUcJUR(d9U(aSOSnURSUSUR<S3UR5 [RS[RS	[RS
0R[R"U55nUbURUS35 Sv� URX5 URS5 URR(aURS
5 gg7f)Nr�r@rUr0zNo rRr�r�rprCr?rBr)rCrlrFr�rUrwr�r�rrrr�rvrxrJ)r'r)r*r�rp�	type_namerys       r4�_filter_test_common�!CodeGenerator._filter_test_commons�������$�$��J�J�+�,���J�J�$�,�,�t�y�y�1�2�!�4�5��#�#�+�+�/�/��	�	�:�D��J�J�$�*�*�T�Y�Y�/�0��2�3��#�#�)�)�-�-�d�i�i�8�D�
�<�� 0� 0�$-��6�I��I�I��I�;�g�d�i�i�]�!�<�d�k�k�J�
���i��!�!�#5�� � �-�
��#����d�#�
�		����J�J�(��2��'�	����t�#��
�
�3�����$�$��J�J�t��%�s�G6G8c���URXS5 URbURURU5 O�URR(a-URSURSURS35 OZURR(a URSURS35 OURSURS35 SSS5 g!,(df   g=f)NTz(Markup(concat(z.)) if context.eval_ctx.autoescape else concat(rzMarkup(concat(r�rB)r�r)r2r0r1rFr�rrs   r4r��CodeGenerator.visit_Filter,s���
�
%�
%�d�4�
8��y�y�$��
�
�4�9�9�e�,����(�(��
�
�%�e�l�l�^�4C�CH�<�<�.�PR�T�����*�*��
�
�^�E�L�L�>��<�=��
�
�W�U�\�\�N�!�4�5�9�
8�
8�s�C
C)�)
C7c��URXS5 URURU5 SSS5 g!,(df   g=fr�)r�r2r)rs   r4r��CodeGenerator.visit_Test=s0��
�
%�
%�d�5�
9��J�J�t�y�y�%�(�:�
9�
9�s	�9�
Ac�D^^^�TR5mSUUU4SjjnTRS5 TRTRT5 TRS5 TRTRT5 TRS5 U"5 TRS5 g)Nc�>�TRbTRTRT5 gTRSTRT5S35 g)Nz1cond_expr_undefined("the inline if-expression on z6 evaluated to false and no else section was defined."))�expr2r2rFr�)r*r)r's���r4�write_expr2�1CodeGenerator.visit_CondExpr.<locals>.write_expr2FsL����z�z�%��
�
�4�:�:�u�-���J�J���M�M�$�'�(�)*�+�
r7r@z if z else rBr�)r�rFr2�expr1r0)r'r)r*r�s``` r4�visit_CondExpr�CodeGenerator.visit_CondExprBsq����
�
���		�		�	
�
�
�3���
�
�4�:�:�u�%��
�
�6���
�
�4�9�9�e�$��
�
�8���
��
�
�3�r7rNc��URR(aURS5 URR(aURS5 OURS5 UR	UR
U5 U(aSS0OSnUR(aSS0O0nUR(aSS0O0nU(aUR"U40UD6 OU(dU(a[U40UD6nURXU5 URS5 URR(aURS5 gg)	Nr�zenvironment.call(context, z
context.call(rs�
_loop_vars�_block_varsrBr)rCrlrFrDr2r)r�r�r�r}rJ)r'r)r*rNr7�loop_kwargs�block_kwargss       r4rO�CodeGenerator.visit_CallYs������$�$��J�J�+�,����%�%��J�J�3�4��J�J��'��
�
�4�9�9�e�$�/=��(�+�4��6;�6F�6F�|�\�2�B��9>�9J�9J�
�}�5�PR�������<�|�<�
�L���<�|�<�L����t�L�1��
�
�3�����$�$��J�J�t��%r7c�x�URURS-5 URURU5 g)Nr@)rFr>r2rbrs   r4�
visit_Keyword�CodeGenerator.visit_Keywordps(���
�
�4�8�8�c�>�"��
�
�4�:�:�u�%r7c��URS5 URURU5 URS5 g)NzMarkup(rB�rFr2r^rs   r4�visit_MarkSafe�CodeGenerator.visit_MarkSafevs+���
�
�9���
�
�4�9�9�e�$��
�
�3�r7c��URS5 URURU5 URS5 gr�r�rs   r4�visit_MarkSafeIfAutoescape�(CodeGenerator.visit_MarkSafeIfAutoescape{s.��	
�
�
�K�L��
�
�4�9�9�e�$��
�
�3�r7c�@�URSUR-5 g)Nzenvironment.�rFrUrs   r4�visit_EnvironmentAttribute�(CodeGenerator.visit_EnvironmentAttribute�s��	
�
�
�>�D�I�I�-�.r7c�\�URSUR<SUR35 g)Nzenvironment.extensions[z].)rF�
identifierrUrs   r4�visit_ExtensionAttribute�&CodeGenerator.visit_ExtensionAttribute�s'��	
�
�
�,�T�_�_�,?�r�$�)�)��M�Nr7c�T�URURUR5 gr.)rFr�r�rs   r4�visit_ImportedName� CodeGenerator.visit_ImportedName�s���
�
�4�&�&�t���7�8r7c�:�URUR5 gr.r�rs   r4�visit_InternalName� CodeGenerator.visit_InternalName�s���
�
�4�9�9�r7c�&�URS5 g)Nr�)rFrs   r4�visit_ContextReference�$CodeGenerator.visit_ContextReference�s��	
�
�
�9�r7c�D�URURU55 gr.)rFr�rs   r4�visit_DerivedContextReference�+CodeGenerator.visit_DerivedContextReference�s��	
�
�
�4�&�&�u�-�.r7c�(�URSU5 g)N�continuer�rs   r4�visit_Continue�CodeGenerator.visit_Continue�s�����z�4�(r7c�(�URSU5 g)N�breakr�rs   r4�visit_Break�CodeGenerator.visit_Break�s�����w��%r7c���UR5nURRU5 URU5 UR	UR
U5 UR
U5 gr.)r�r�rzrcr)r}rg)r'r)r*�scope_frames    r4�visit_Scope�CodeGenerator.visit_Scope�sO���k�k�m�����(�(��.�����%�����	�	�;�/�����%r7c���UR5nURUSURU535 URUS35 URURU5 URU5 UR
SS9nURRU5 URU5 URURU5 URU5 UR5 g)NrYz.vars = T)r�)rr	r�r2r�r�r�r�rzrcr)r}rgr�)r'r)r*r�rs     r4�visit_OverlayScope� CodeGenerator.visit_OverlayScope�s����'�'�)�����#��c�$�"5�"5�e�"<�!=�>�?����#��h�'�(��
�
�4�<�<��'��#�#�C�(��k�k�4�k�0�����(�(��.�����%�����	�	�;�/�����%��"�"�$r7c��URH�nURSURS35 URURU5 URRUR5n[URURU5 M� g![Ra SURl
M�f=f)Nzcontext.eval_ctx.rYT)�optionsr	r>r2rbr�r0�setattrrr�r1)r'r)r*�keywordr�s     r4�visit_EvalContextModifier�'CodeGenerator.visit_EvalContextModifier�s����|�|�G��N�N�.�w�{�{�m�3�?�@��J�J�w�}�}�e�,�
:��m�m�,�,�U�^�^�<���������S�9�$��
�#�#�
/�*.����'�
/�s�%B�%C�?Cc�J�UR5nURR5nURUS35 UR	X5 UR
HnUR
XR5 M URRU5 URSUS35 g)Nz = context.eval_ctx.save()zcontext.eval_ctx.revert(rB)rr0�saver	r!r}r2�revert)r'r)r*�old_ctx_name�	saved_ctxr�s      r4�visit_ScopedEvalContextModifier�-CodeGenerator.visit_ScopedEvalContextModifier�s����0�0�2���N�N�'�'�)�	����,��'A�B�C��&�&�t�3��Y�Y�E��J�J�u�$��
�����i�(����1�,��q�A�Br7)r�r�rnr�r�r�r�r�r�r�r�r�r�r�rXrCr�rVr�r�r�rUr/rWr��NFTr�r�)r
r.)Nr)zasync r�)�r�r�r�r�r9r�rw�TextIOrrr��propertyrYrsrrr+r�rrrr�Noderr!r%r�r)rFr	r2r��Callr�r��Mappingr:rJrVrcrgrmrpr�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�Includer�Import�
FromImportrrr'�ForrB�IfrGrKrR�FilterBlockrW�Withr_�ExprStmtrb�
NamedTuplerj�staticmethodrlrnrirzr~r8r�r�r��Outputr��Assignr��AssignBlockr�r�r�r�r�rr�r�r�r�r
r��Dictr�rN�	visit_Add�	visit_Sub�	visit_Mul�	visit_Div�visit_FloorDiv�	visit_Pow�	visit_Mod�	visit_And�visit_OrrT�	visit_Pos�	visit_Neg�	visit_Notr;�Concatr��Comparer��Operandr��Getattrr��Getitemr�r�r�r�Iteratorr�r�r��CondExprr�rO�Keywordr��MarkSafer��MarkSafeIfAutoescaper��EnvironmentAttributer��ExtensionAttributerr�r�InternalNamer�ContextReferencer	�DerivedContextReferencer�Continuer�Breakr�Scoper�OverlayScoper�EvalContextModifierr!�ScopedEvalContextModifierr(r�r�r7r4r(r(,s���(,� ��G4�"�G4��j�j��o�G4��*�*�S�/�	G4�
�
�
�1�8�8�$�G4��
G4��G4�
�G4�R�*�4�*��*�
L��L�S�L�]�L�,�c�,�
/�E�/�d�/�5:�9��9�-1�9�	
�9�(�"�C�"��"�<��<�a�j�j����.D�<�PT�<��u����DH����"��*+�*�*�U�Z�Z�*@��	
��	��
�
�5�:�:� 6�	�u�	��	��s��t��IJ�����J�J�u�z�z�2��BE��	
��*�A�J�J�u�z�z�2�*�#�*�d�*�;?�	7/��g�g�e�j�j�%�,�,��
�
�:�;�7/��7/��j�j����3����:�!6�7�	7/�

�7/�r,�q�z�z�%�*�*�'=�,�$�,�\>��>�4�>� B��B�4�B�D�B�H��H�C�H�QT�H�2��2��2�Q ��G�G�E�K�K����8�9�Q �BG�Q �	
������	!�Q �f

�8�

�E�

�d�

��U�Z�Z��C��!��!�#�!�+�I��I�$�I�$�6�C�6�D�6�5�S�5�T�5�,�1��1�#�#�#�U�E�U�c�U�3�c�3�d�3�)�)O��)O�4�)O�\@D�x9��N�N�x9�+,�:�:�e�+<�x9�	
�x9�t/����/�E�/�d�/�b(!�%�-�-�(!��(!�$�(!�T8�%�-�-�8��8�$�8�t
U��G�G�E�L�L�%�*:�*:�:�;�
U�DI�
U�	
�
U�	N����	N�e�	N��	N�5�U�%5�%5�5�e�5��5�nIP�e�i�i�IP��IP�$�IP�V�U�X�X��e����*/����/�E�/�d�/��E�O�O��E��d��	'�e�&7�&7�	'��	'�$�	'�
%�u�z�z�
%�%�
%�D�
%�%�5�>�>�%�%�%�D�%������������1�5�5����,0�I�q�z�z�-�(�/�.�
�.�`#��
�
�1�5�5�(9�#�c�#�%��J�J�%�',�%�8E�%�	�%�*%��J�J�%�',�%�8E�%�	
�%� 	��J�J�	�',�	�8E�	�	
�	�M����M�e�M��M�^(����(�e�(��(�>&�e�&7�&7�&��&�$�&�0�u�z�z��%��D��20����0�E�0�d�0�"����"�E�"�d�"��u�'9�'9��%��D��.����.�E�.�d�.��u�z�z��%��D���u�z�z��%��D���C� �I��C� �I��C� �I��C� �I� ��&�N��D�!�I��C� �I��E�"�I��4� �H��3��I��3��I��6�"�I�������e��������%�-�-����$����%�%�-�-�%��%�$�%��	�%�-�-�	��	�$�	��	��!�%�-�-�!��!�$�!��!�()����)�E�)�d�)��'��G�G�E�L�L�%�*�*�4�5�'�>C�'�PT�'�	
���D�	�'��'�R�6����6�e�6��6��6� �)�u�z�z�)�%�)�D�)��)���5�>�>��%��D����,�EJ���J�J��',��>B��	
����,&�%�-�-�&��&�$�&��5�>�>��%��D��
��.�.��7<��	
��/��.�.�/�7<�/�	
�/�
O��,�,�O�5:�O�	
�O�
9�u�'9�'9�9�%�9�D�9��u�'9�'9��%��D����*�*��38��	
��
/��1�1�/�:?�/�	
�/�
)�5�>�>�)�%�)�D�)�&����&�E�&�d�&�&����&�E�&�d�&�%�u�'9�'9�%�%�%�D�%�:��-�-�:�6;�:�	
�:�
C��3�3�
C�<A�
C�	
�
Cr7r*)Fr��typingr9�
contextlibr�	functoolsr�ior�	itertoolsrr rr:�
markupsaferr	r�r�
exceptionsr�
idtrackingr
rrrrrr/r�utilsrrrJr�
TYPE_CHECKING�typing_extensions�terCr�TypeVarrhr:rr�r;rwrLrNrSrTr\r�r+rrrarfr�r-�Setr�r�r+�RuntimeErrorr�r�r�r�r�r(r�r7r4�<module>rns0��6��%�$���2����.��&�*�(�*�� ��� ��?�?�"�(��I�I�c����C����J�/�0���
�

��

��
�
�	
�	�
'�Q�
'�1�
'� �C��A�J�J������'P�RV�'V�W��*����Z�Z��%�/�/�7�;�T�A�B��0$(����
�.�.�����*�*�S�/���j�j��o�	�

�J�J�q�x�x� ���
����Z�Z��_��0�����4��"��:�:�e�j�j�!��*+�*�*�S�/���U�U�3�Z��&�&�P�P�fJ�,�J�'�k�'�&&�K�&�,�9��bC�K�bCr7

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 1.58 KB 0644
_identifier.cpython-313.pyc File 2.04 KB 0644
async_utils.cpython-313.pyc File 4.91 KB 0644
bccache.cpython-313.pyc File 18.89 KB 0644
compiler.cpython-313.pyc File 103.15 KB 0644
constants.cpython-313.pyc File 1.48 KB 0644
debug.cpython-313.pyc File 6.39 KB 0644
defaults.cpython-313.pyc File 1.54 KB 0644
environment.cpython-313.pyc File 73.04 KB 0644
exceptions.cpython-313.pyc File 7.8 KB 0644
ext.cpython-313.pyc File 41.17 KB 0644
filters.cpython-313.pyc File 69.67 KB 0644
idtracking.cpython-313.pyc File 18.92 KB 0644
lexer.cpython-313.pyc File 31.82 KB 0644
loaders.cpython-313.pyc File 31.57 KB 0644
meta.cpython-313.pyc File 5.42 KB 0644
nativetypes.cpython-313.pyc File 6.97 KB 0644
nodes.cpython-313.pyc File 58.63 KB 0644
optimizer.cpython-313.pyc File 2.68 KB 0644
parser.cpython-313.pyc File 60.26 KB 0644
runtime.cpython-313.pyc File 47.77 KB 0644
sandbox.cpython-313.pyc File 17.88 KB 0644
tests.cpython-313.pyc File 8.67 KB 0644
utils.cpython-313.pyc File 34.12 KB 0644
visitor.cpython-313.pyc File 5.29 KB 0644
Filemanager