ó
    ‰*£h“! ã                   ó2  • S r SSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJ r   S
SK!J"r"  \RF                  (       a
  SSK$r%S
SK&J'r'  \RP                  " S\RR                  S\RT                  4   S9r+SSSSSS S!S"S#.r,S$\+S%\+4S& jr-S'\.S%\RR                  S(\R^                  S)/S4   4S* jr0S'\.S%\RR                  S(\Rb                  S)/S4   4S+ jr2   SFS,\Rf                  S-S.S/\Rh                  \.   S0\Rh                  \.   S1\Rh                  \Rj                     S2\6S3\6S%\Rh                  \.   4S4 jjr7S5\RT                  S%\64S6 jr8S7\Rr                  \Rt                     S8\Rr                  \.   S%\Rv                  \.   4S9 jr< " S: S;5      r= " S< S)5      r> " S= S>\?5      r@ " S? S@\"5      rA " SA SB\"5      rB " SC SD\C5      rD " SE S(\"5      rEg)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<=Úinznot in)ÚeqÚneÚgtÚgteqÚltÚlteqr   ÚnotinÚfÚreturnc           
      ó”   ^ • SSS[         R                  SSS[        R                  S[        R                  4
U 4S jjn[	        UT 5      $ )	NÚselfÚCodeGeneratorÚnodeÚframeÚFrameÚkwargsr%   c                 óÞ   >• U R                   bV  UR                  R                  (       d;  U R                   R                  XR                  5      nXA:w  a  U R                  XB5      $ T" XU40 UD6$ ©N)Ú	optimizerÚeval_ctxÚvolatileÚvisit)r'   r)   r*   r,   Únew_noder$   s        €ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-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$   r5   s   ` r4   Úoptimizeconstr;   -   sK   ø€ ð
.Øð
.Ü%*§Z¡Zð
.Ø8?ð
.ÜKLÏ5É5ð
.ä	
�‰÷
.ô ˜( AÓ&Ð&r7   Úopr(   r+   c           	      ó^   ^ • [         SSS[        R                  S[        SS 4U 4S jj5       nU$ )Nr'   r(   r)   r*   r%   c                 ó  >• U R                   R                  (       az  TU R                   R                  ;   a`  U R                  ST< S35        U R	                  UR
                  U5        U R                  S5        U R	                  UR                  U5        O^U R                  S5        U R	                  UR
                  U5        U R                  ST S35        U R	                  UR                  U5        U R                  S5        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<   rJ   s   ` r4   Ú_make_binoprN   =   s<   ø€ Üð�oð ¬U¯]©]ð Ä5ð ÈTö ó ðð  €Nr7   c           	      ó^   ^ • [         SSS[        R                  S[        SS 4U 4S jj5       nU$ )Nr'   r(   r)   r*   r%   c                 óX  >• U R                   R                  (       aM  TU R                   R                  ;   a3  U R                  ST< S35        U R	                  UR
                  U5        O0U R                  ST-   5        U R	                  UR
                  U5        U R                  S5        g )Nzenvironment.call_unop(context, r?   r@   rB   )rC   rD   Úintercepted_unopsrF   r2   r)   rI   s      €r4   rJ   Ú_make_unop.<locals>.visitorU   s|   ø€ ð ×Ñ×&×&¨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+   rM   s   ` r4   Ú
_make_unoprT   R   s>   ø€ ô ð
�oð 
¬U¯_©_ð 
ÄUð 
Ètö 
ó ð
ð €Nr7   r)   rC   r   ÚnameÚfilenameÚstreamÚ
defer_initÚ	optimizedc                 óÚ   • [        U [        R                  5      (       d  [        S5      eUR	                  XX4XV5      nUR                  U 5        Uc  UR                  R                  5       $ g)z+Generate the python source for a node tree.z Can't compile non template nodesN)Ú
isinstancer   ÚTemplateÚ	TypeErrorÚcode_generator_classr2   rW   Úgetvalue)r)   rC   rU   rV   rW   rX   rY   Ú	generators           r4   Úgeneratera   e   sc   € ô �dœEŸN™N×+Ñ+ÜÐ:Ó;Ð;à×0Ñ0Ø˜8¨Zó€Ið ‡O�O�DÔà�~Ø×Ñ×(Ñ(Ó*Ð*àr7   Úvaluec                 ód  • U b  U [         L d	  U [        L a  g[        U 5      [        [        [
        [        [        [        [        1;   a  g[        U 5      [        [        [        [        1;   a  [        S U  5       5      $ [        U 5      [        L a   [        S U R!                  5        5       5      $ g)z)Does the node have a safe representation?Tc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr.   ©Úhas_safe_repr)Ú.0Úvs     r4   Ú	<genexpr>Ú has_safe_repr.<locals>.<genexpr>†   s   é € Ð3ªU¨”= ×#Ð#ªUùó   ‚c              3   ó`   #   • U  H$  u  p[        U5      =(       a    [        U5      v •  M&     g 7fr.   re   ©rg   Úkrh   s      r4   ri   rj   ‰   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©rb   s    r4   rf   rf   }   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àr7   r   Únamesc                 óœ   • [        U5      n U  H  nUR                  U5        M     UR                  $ ! [         a     UR                  $ 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)r   r€   rJ   r)   s       r4   Úfind_undeclaredr…   Ž   sW   € ô $ EÓ*€GðÛˆDØ�M‰M˜$Öñ ð ×ÑÐøô ó ØØ×ÑÐðús   �3 ³
AÁ
Ac                   ól   • \ rS rSrS\R
                  \R                  \R                  4   SS4S jr	Sr
g)ÚMacroRefé�   r)   r%   Nc                 ó:   • Xl         SU l        SU l        SU l        g ©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__© r7   r4   r‡   r‡   �   s+   † ð&˜QŸW™W U§[¡[°%·/±/Ð%AÑBð &Àt÷ &r7   r‡   c            	       óœ   • \ rS rSrSr  SS\S\R                  S    S\R                  \   SS4S jjr	SS	 jr
SS
\SS 4S jjrSS jr\
rSrg)r+   é¥   z&Holds compile time information for us.Nr0   ÚparentÚlevelr%   c                 óH  • Xl         X l        Uc$  [        US9U l        SU l        S U l        S U l        OL[        UR                  US9U l        UR                  U l        UR
                  U l        UR                  U l        SU l        SU l        SU l	        SU l
        SU l        g )N©r�   F)r0   rœ   r   ÚsymbolsÚrequire_output_checkÚbufferÚblockÚtoplevelÚ	rootlevelÚ
loop_frameÚblock_frameÚ
soft_frame)r'   r0   rœ   r�   s       r4   r�   ÚFrame.__init__¨   s¡   € ð !Œð Œà‰>Ü"¨Ñ/ˆDŒLð ).ˆDÔ%ð ,0ˆDŒKð +/ˆD�Jô # 6§>¡>¸Ñ?ˆDŒLØ(.×(CÑ(CˆDÔ%Ø Ÿ-™-ˆDŒKØŸ™ˆDŒJð ˆŒð
 ˆŒð  ˆŒØ ˆÔð
  ˆ�r7   c                 óÌ   • [         R                  U R                  5      nUR                  R	                  U R                  5        U R
                  R                  5       Ul        U$ )z!Create a copy of the current one.)ÚobjectÚ__new__Ú	__class__Ú__dict__Úupdater    Úcopy©r'   Úrvs     r4   r°   Ú
Frame.copyÛ   sC   € ä�^‰^˜DŸN™NÓ+ˆØ
�‰×Ñ˜4Ÿ=™=Ô)Ø—\‘\×&Ñ&Ó(ˆŒ
Øˆ	r7   Úisolatedc                 ó’   • U(       a+  [        U R                  U R                  R                  S-   S9$ [        U R                  U 5      $ )zReturn an inner frame.r
   rŸ   )r+   r0   r    r�   )r'   r´   s     r4   ÚinnerÚFrame.innerâ   s6   € æÜ˜Ÿ™¨d¯l©l×.@Ñ.@À1Ñ.DÑEÐEÜ�T—]‘] DÓ)Ð)r7   c                 óB   • U R                  5       nSUl        SUl        U$ )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¢   r0   r¦   rœ   r¡   r¥   r¨   r    r¤   )NN)r%   zte.Self©F)r‘   r’   r“   r”   Ú__doc__r   r9   ÚOptionalrs   r�   r°   rr   r¶   r¹   Ú__copy__r˜   r™   r7   r4   r+   r+   ¥   sn   † Ù0ð
 '+Ø!%ñ	1 àð1 ð —
‘
˜7Ñ#ð1 ð �z‰z˜#‰ð	1 ð
 
õ1 ôfñ*˜dð *¨wõ *ôð ƒHr7   c                   ó   • \ rS rSrSrSrg)rƒ   éø   z?Exception used by the `UndeclaredNameVisitor` to signal a stop.r™   N©r‘   r’   r“   r”   r¼   r˜   r™   r7   r4   rƒ   rƒ   ø   s   † ÜIr7   rƒ   c                   ó”   • \ rS rSrSrSS jrS\R                  SS4S jrS\R                  SS4S jr
S\R                  SS4S	 jrS
rg)ÚDependencyFinderVisitoréü   z.A visitor that collects filter and test calls.r%   Nc                 ó@   • [        5       U l        [        5       U l        g r.   )rz   ÚfiltersÚtests©r'   s    r4   r�   Ú DependencyFinderVisitor.__init__ÿ   s   € Ü#&£5ˆŒÜ!$£ˆ�
r7   r)   c                 óp   • U R                  U5        U R                  R                  UR                  5        g r.   )Úgeneric_visitrÆ   ÚaddrU   rŽ   s     r4   Úvisit_FilterÚ$DependencyFinderVisitor.visit_Filter  s&   € Ø×Ñ˜4Ô Ø�‰×Ñ˜Ÿ™Õ#r7   c                 óp   • U R                  U5        U R                  R                  UR                  5        g r.   )rË   rÇ   rÌ   rU   rŽ   s     r4   Ú
visit_TestÚ"DependencyFinderVisitor.visit_Test  s$   € Ø×Ñ˜4Ô Ø�
‰
�‰�t—y‘yÕ!r7   c                 ó   • g)zStop 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™   r7   r4   rÃ   rÃ   ü   sO   † Ù8ô'ð$ §¡ð $°$ô $ð"˜uŸz™zð "¨dô "ð' §¡ð '°÷ 'r7   rÃ   c                   ó�   • \ rS rSrSrS\R                  \   SS4S jrS\	R                  SS4S jrS\	R                  SS4S	 jrS
rg)r‚   i  z•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   • [        U5      U l        [        5       U l        g r.   )rz   r€   r„   )r'   r€   s     r4   r�   ÚUndeclaredNameVisitor.__init__  s   € Ü˜“ZˆŒ
Ü&)£eˆ�r7   r)   c                 ó6  • UR                   S:X  ad  UR                  U R                  ;   aJ  U R                  R	                  UR                  5        U R                  U R                  :X  a
  [        5       eg U R                  R                  UR                  5        g )NÚload)ÚctxrU   r€   r„   rÌ   rƒ   ÚdiscardrŽ   s     r4   Ú
visit_NameÚ UndeclaredNameVisitor.visit_Name  sh   € Ø�8‰8�vÓ $§)¡)¨t¯z©zÓ"9Ø�O‰O×Ñ §	¡	Ô*Ø�‰ $§*¡*Ó,Ü!“mÐ#ð -ð �J‰J×Ñ˜tŸy™yÕ)r7   c                 ó   • g)zStop visiting a blocks.Nr™   rŽ   s     r4   rÓ   Ú!UndeclaredNameVisitor.visit_Block!  rÕ   r7   )r€   r„   )r‘   r’   r“   r”   r¼   r9   ÚIterablerw   r�   r   ÚNamerá   rÙ   rÓ   r˜   r™   r7   r4   r‚   r‚     sP   † ñð
,˜aŸj™j¨™oð ,°$ô ,ð*˜uŸz™zð *¨dô *ð& §¡ð &°÷ &r7   r‚   c                   ó   • \ rS rSrSrSrg)Ú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™   r7   r4   rè   rè   %  s   † ôr7   rè   c                   ó4  • \ rS rSr%    SŒSSS\R
                  \   S\R
                  \   S\R
                  \R                     S\S	\S
S4S jjr	\
S
\4S j5       rS\S\S
S4S jrS
\4S jrS\S
S4S jr S�S\S\S
S4S jjrSŽS jrS�S\S
S4S jjrS�S\S\R
                  \R*                     S
S4S jjrS\S
S4S jr S�S\S\S\R
                  \R*                     S
S4S jjrS\R2                  \R*                     S\S
S4S jrS \S
S4S! jr S‘S \S\R
                  \R*                     S"\S
S4S# jjrS‘S\R
                  \R*                     S"\S
S4S$ jjr S�S\R<                  \R>                  \R@                  \RB                  4   S\S%\R
                  \RD                  \\RF                  4      S
S4S& jjr$S\R2                  \R*                     S
S4S' jr%S\S
S4S( jr&S�S\S)\S
S4S* jjr'S’S+\S,\S
\4S- jjr(S\S
\4S. jr)S\R<                  \RT                  \RV                  4   S\S
\RX                  \\-4   4S/ jr.S0\-S\S
S4S1 jr/S\R*                  S
\4S2 jr0S\S
\4S3 jr1SŽS4 jr2S\S
S4S5 jr3SŽS6 jr4S7\S
S4S8 jr5S7\S
S4S9 jr6SŽS: jr7S
\4S; jr8S
\4S< jr9S\S
\4S= jr:S7\S
\4S> jr;SŽS? jr<S\S
S4S@ jr= S�S\R|                  S\R
                  \   S
S4SA jjr?S\R€                  S\S
S4SB jrAS\R„                  S\S
S4SC jrCS\Rˆ                  S\S
S4SD jrES\R<                  \RŒ                  \RŽ                  4   S\S
S4SE jrHS\RŒ                  S\S
S4SF jrIS\RŽ                  S\S
S4SG jrJS\R–                  S\S
S4SH jrLS\Rš                  S\S
S4SI jrNS\RT                  S\S
S4SJ jrOS\RV                  S\S
S4SK jrPS\R¢                  S\S
S4SL jrRS\R¦                  S\S
S4SM jrTS\Rª                  S\S
S4SN jrV " SO SP\R®                  5      rX\YSQ\RF                  S
\RF                  4SR j5       rZSr[\R
                  \X   \\SS'   S
\X4ST jr]SU\R2                  \RF                     S
\4SV jr^S\R¾                  S\SW\XS
\4SX jr`S\R¾                  S\SW\XS
S4SY jraS\R¾                  S\SW\XS
S4SZ jrbS\RÆ                  S\S
S4S[ jrdS\RÊ                  S\S
S4S\ jrfS\RÎ                  S\S
S4S] jrhS\RÒ                  S\S
S4S^ jrjS\RÖ                  S\S
S4S_ jrlS\RÚ                  S\S
S4S` jrnS\RÞ                  S\S
S4Sa jrpS\RX                  S\S
S4Sb jrqS\Rä                  S\S
S4Sc jrsS\Rè                  S\S
S4Sd jru\v" Se5      rw\v" Sf5      rx\v" Sg5      ry\v" Sh5      rz\v" Si5      r{\v" Sj5      r|\v" Sk5      r}\v" Sl5      r~\v" Sm5      r\€" Se5      r�\€" Sf5      r‚\€" Sn5      rƒ\„S\GR
                  S\S
S4So j5       r†\„S\GR                  S\S
S4Sp j5       rˆS\GR                  S\S
S4Sq jrŠ\„S\GR                  S\S
S4Sr j5       rŒ\„S\GR                  S\S
S4Ss j5       rŽS\GR                  S\S
S4St jr�\‘S\R<                  \R@                  \RB                  4   S\Su\S
\GR$                  S   4Sv j5       r“\„S\R@                  S\S
S4Sw j5       r”\„S\RB                  S\S
S4Sx j5       r•\„S\GR,                  S\S
S4Sy j5       r—\„ S�S\R>                  S\Sz\S
S4S{ jj5       r˜S\GR2                  S\S
S4S| jršS\GR6                  S\S
S4S} jrœS\GR:                  S\S
S4S~ jržS\GR>                  S\S
S4S jr S\GRB                  S\S
S4S€ jr¢S\GRF                  S\S
S4S� jr¤S\GRJ                  S\S
S4S‚ jr¦S\GRN                  S\S
S4Sƒ jr¨S\GRR                  S\S
S4S„ jrªS\GRV                  S\S
S4S… jr¬S\GRZ                  S\S
S4S† jr®S\GR^                  S\S
S4S‡ jr°S\GRb                  S\S
S4Sˆ jr²S\GRf                  S\S
S4S‰ jr´S\GRj                  S\S
S4SŠ jr¶S‹r·g)“r(   i,  NrC   r   rU   rV   rW   rX   rY   r%   c                 ó”  • Uc
  [        5       nXl        X l        X0l        X@l        SU l        XPl        S U l        U(       a  [        U5      U l        0 U l	        0 U l
        SU l        SU l        SU l        0 U l        0 U l        / U l        S U l        SU l        SU l        SU l        SU l        SU l        / U l        / U l        S/U l        g )NFr   r
   TÚcontext)r   rC   rU   rV   rW   Úcreated_block_contextrX   r/   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'   rC   rU   rV   rW   rX   rY   s          r4   r�   ÚCodeGenerator.__init__-  sê   € ð ‰>Ü“ZˆFØ&ÔØŒ	Ø ŒØŒØ%*ˆÔ"Ø$ŒØ04ˆŒæÜ& {Ó3ˆDŒNð 13ˆÔð 13ˆŒð  ˆÔð
 "'ˆÔð ˆÔð (*ˆŒ
Ø)+ˆŒð 68ˆŒØ26ˆÔð ˆŒð ˆŒð !ˆÔð !"ˆÔð ˆÔð 24ˆÔð 57ˆÔð *3¨ˆÕ%r7   c                 ó   • U R                   S L$ r.   )r/   rÈ   s    r4   rY   ÚCodeGenerator.optimizedv  s   € à�~‰~ TÐ)Ð)r7   ÚmsgÚlinenozte.NoReturnc                 óD   • [        XU R                  U R                  5      e)z*Fail with a :exc:`TemplateAssertionError`.)r   rU   rV   )r'   rÿ   r   s      r4   ÚfailÚCodeGenerator.fail|  s   € ä$ S°$·)±)¸T¿]¹]ÓKÐKr7   c                 óJ   • U =R                   S-  sl         SU R                    3$ )zGet a new unique identifier.r
   Út_)r÷   rÈ   s    r4   Útemporary_identifierÚ"CodeGenerator.temporary_identifier€  s'   € à×Ò Ñ"ÕØ�D×)Ñ)Ð*Ð+Ð+r7   r*   c                 ój   • U R                  5       Ul        U R                  UR                   S35        g)z7Enable buffering for the frame from that point onwards.z = []N)r  r¢   Ú	writeline©r'   r*   s     r4   r¢   ÚCodeGenerator.buffer…  s)   € à×0Ñ0Ó2ˆŒØ�‰˜%Ÿ,™,˜ uÐ-Õ.r7   Úforce_unescapedc                 ó>  • U(       d÷  UR                   R                  (       a¡  U R                  S5        U R                  5         U R                  SUR                   S35        U R                  5         U R                  S5        U R                  5         U R                  SUR                   S35        U R                  5         gUR                   R                  (       a   U R                  SUR                   S35        gU R                  SUR                   S35        g)z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat(ú))úelse:zreturn concat(rB   N)r0   r1   r	  Ú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Õ8r7   c                 ó.   • U =R                   S-  sl         g)zIndent by one.r
   N©rø   rÈ   s    r4   r  ÚCodeGenerator.indentž  s   € à×Ò˜QÑÖr7   Ústepc                 ó.   • U =R                   U-  sl         g)zOutdent by step.Nr  )r'   r  s     r4   r  ÚCodeGenerator.outdent¢  s   € à×Ò˜TÑ!Ör7   r)   c                 ó‚   • UR                   c  U R                  SU5        gU R                  UR                    S3U5        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Õ;r7   c                 óB   • UR                   b  U R                  S5        gg)z1End the writing process started by `start_write`.NrB   )r¢   rF   r
  s     r4   Ú	end_writeÚCodeGenerator.end_write­  s   € à�<‰<Ñ#Ø�J‰J�s�Oð $r7   Úsc                 ój   • U R                  X#5        U R                  U5        U R                  U5        g)z4Simple shortcut for start_write + write + end_write.N)r  rF   r!  )r'   r#  r*   r)   s       r4   Úsimple_writeÚCodeGenerator.simple_write²  s)   € ð 	×Ñ˜Ô%Ø�
‰
�1ŒØ�‰�uÕr7   r   c                 ó|   •  U R                  S5        U H  nU R                  X25        M     g! [         a     gf = 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	  r2   rè   )r'   r   r*   r)   s       r4   Ú
blockvisitÚCodeGenerator.blockvisitº  s;   € ð	Ø�N‰N˜6Ô"Û�Ø—
‘
˜4Ö'ò øäó 	Ùð	ús   ‚+. ®
;º;Úxc                 ó  • U R                   (       aÓ  U R                  (       dŒ  U R                  R                  SU R                   -  5        U =R                  U R                   -  sl        U R
                  b8  U R                  R                  U R
                  U R                  45        SU l        SU l        U R                  R                  SU R                  -  5        SU l         U R                  R                  U5        g)z&Write a string into the output stream.Ú
NFz    r   )	rô   rö   rW   rF   rñ   ró   rò   Úappendrø   )r'   r+  s     r4   rF   Ú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   • U R                  X#5        U R                  U5        g)z!Combination of newline and write.N)ÚnewlinerF   )r'   r+  r)   r0  s       r4   r	  ÚCodeGenerator.writelineÓ  s   € ð 	�‰�TÔ!Ø�
‰
�1�r7   c                 óÂ   • [        U R                  SU-   5      U l        Ub>  UR                  U R                  :w  a#  UR                  U l        UR                  U l        ggg)z/Add one or more newlines before the next write.r
   N)Úmaxrô   r   rõ   ró   )r'   r)   r0  s      r4   r2  ÚCodeGenerator.newlineÚ  sL   € ä˜dŸo™o¨q°5©yÓ9ˆŒØÑ §¡¨t¯©Ó >Ø%)§[¡[ˆDÔ"Ø"Ÿk™kˆD�Oð !?Ðr7   Úextra_kwargsc                 óü  • [        S [        S UR                   5       U=(       d    S5       5       5      nUR                   H%  nU R	                  S5        U R                  XR5        M'     U(       dh  UR                   H%  nU R	                  S5        U R                  Xb5        M'     Ub0  UR                  5        H  u  pxU R	                  SU SU 35        M     UR                  (       a-  U R	                  S5        U R                  UR                  U5        U(       Ga!  UR                  b  U R	                  S5        OU R	                  S	5        UR                   HO  nU R	                  UR                  < S
35        U R                  UR                  U5        U R	                  S5        MQ     Ub1  UR                  5        H  u  pxU R	                  U< S
U S35        M     UR                  b?  U R	                  S5        U R                  UR                  U5        U R	                  S5        gU R	                  S5        gUR                  b.  U R	                  S5        U R                  UR                  U5        gg)a  Writes 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.
c              3   ój   #   • U  H)  n[        [        R                  " [        U5      5      v •  M+     g 7fr.   )Úis_python_keywordr9   Úcastrw   )rg   rn   s     r4   ri   Ú*CodeGenerator.signature.<locals>.<genexpr>ï  s)   é € ð 
âL�ô œaŸfšf¤S¨!›n×-Ð-ÚLùs   ‚13c              3   ó8   #   • U  H  oR                   v •  M     g 7fr.   )Úkey©rg   r+  s     r4   ri   r<  ñ  s   é € Ð7ª; aŸEžEª;ùrk   r™   r?   NÚ=z, *z
, **dict({z, **{ú: z}, **rB   Ú}z, **)Úanyr   r,   ÚargsrF   r2   r~   Údyn_argsÚ
dyn_kwargsr>  rb   )	r'   r)   r*   r7  Úkwarg_workaroundÚargÚkwargr>  rb   s	            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—‘¨Õ.ð )r7   c           
      óà  • [        5       nU H  nUR                  U5        M     U R                  UR                  S4U R                  UR                  S44 GH  u  pEn[	        U5       Hý  nXt;  a  U R                  5       XG'   U R                  S5        U R                  5         U R                  XG    SU SU< S35        U R                  5         U R                  S5        U R                  5         U R                  S5        U R                  S	XG    S
35        U R                  5         U R                  SUSS  SU< S35        U R                  5         U R                  5         Mÿ     GM     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.Ú[Ú]zexcept KeyError:z@internalcodeúdef z
(*unused):zraise TemplateRuntimeError("No Néÿÿÿÿú named z	 found."))	rÃ   r2   rÆ   rÇ   Úsortedr  r	  r  r  )r'   r   rJ   r)   Úid_mapr€   Ú
dependencyrU   s           r4   Úpull_dependenciesÚCodeGenerator.pull_dependencies  sC  € ô *Ó+ˆãˆ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ôð —‘”Ø—‘–ô) &ò*
r7   c           	      óÐ  • / nUR                   R                  R                  5        H‘  u  nu  pEU[        :X  a  M  U[        :X  a+  U R                  U SU R                  5        SU< S35        MI  U[        :X  a  U R                  U SU 35        Mk  U[        :X  a  UR                  U5        Mˆ  [        S5      e   U(       a$  U R                  SR                  U5       S35        g g )Nú = r@   rB   zunknown load instructionú
 = missing)r    Úloadsr~   r   r   r	  Úget_resolve_funcr   r   r.  ÚNotImplementedErrorÚjoin)r'   r*   ÚundefsÚtargetÚactionÚparams         r4   Úenter_frameÚCodeGenerator.enter_frameH  sÑ   € ØˆØ',§}¡}×':Ñ':×'@Ñ'@Ö'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\  / nUR                   R                   H  nUR                  U5        M     U(       a$  U R                  SR	                  U5       S35        g g g )NrY  rZ  )r    r[  r.  r	  r^  )r'   r*   re  r_  r`  s        r4   Úleave_frameÚCodeGenerator.leave_frameX  sT   € Þ ØˆFØŸ-™-×-Ô-�Ø—‘˜fÖ%ñ .æØ—‘ %§*¡*¨VÓ"4Ð!5°ZÐ@ÕAð ð	 !r7   Úasync_valueÚ
sync_valuec                 ó@   • U R                   R                  (       a  U$ U$ r.   )rC   Úis_async)r'   ri  rj  s      r4   Úchoose_asyncÚCodeGenerator.choose_async`  s   € Ø"×.Ñ.×7×7ˆ{ÐG¸ZÐGr7   c                 ó,   • U R                  5        SU 3$ )NrP  )rm  )r'   rU   s     r4   ÚfuncÚCodeGenerator.funcc  s   € Ø×#Ñ#Ó%Ð& d¨4¨&Ð1Ð1r7   c           
      ó   • UR                  5       nUR                  R                  U5        [        U5      nSn[	        5       n/ n[        UR                  5       Hv  u  pxUR                  S:X  a  UnUR                  S;   a  UR                  UR                  5        UR                  UR                  R                  UR                  5      5        Mx     [        UR                  S5      n	SU	;   a[  Ub'   UR                  U[        UR                  5      -
       O*UR                  UR                  R%                  S5      5        SUl        SU	;   a7  SU;  a1  UR                  UR                  R%                  S5      5        SUl        SU	;   a7  SU;  a1  UR                  UR                  R%                  S5      5        SUl        S	Ul        UR                  R                  U5        U R/                  U R1                  S
5       SSR3                  U5       S3U5        U R5                  5         U R7                  U5        U R9                  U5        U R;                  U5        [        UR                  5       H»  u  pxUR                  R                  UR                  5      n
U R/                  SU
 S35        U R5                  5          UR                  U[        UR                  5      -
     nU R/                  U
 S35        U R=                  X²5        U R?                  U
5        U RA                  5         M½     U RC                  5         U RE                  UR                  U5        U RG                  USS9  U RI                  USS9  U RA                  5         X#4$ ! [         a     U R!                  SUR"                  5         GNxf = f! [         a3    U R/                  U
 SUR                  < SUR                  < S35         Níf = f)z/Dump the function def of a macro or call block.NÚcaller)r,   Úvarargs)rs  r,   rt  zhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr,   rt  FÚmacror@   r?   ú):úif ú is missing:rY  z = undefined("parameter z was not provided", name=rB   )r  ©re  )%r¶   r    Úanalyze_noder‡   rz   Ú	enumeraterD  rU   rÌ   r.  Úrefr…   ÚbodyÚdefaultsÚlenÚ
IndexErrorr  r   Údeclare_parameterr‹   rŒ   r�   r¡   r	  rp  r^  r  r¢   rc  Úpush_parameter_definitionsr2   Úmark_parameter_storedr  Úpop_parameter_definitionsr)  r  rg  )r'   r)   r*   Ú	macro_refÚexplicit_callerÚskip_special_paramsrD  ÚidxrH  r„   r|  Údefaults               r4   Ú
macro_bodyÚCodeGenerator.macro_bodyf  sP  € ð —‘“ˆØ�‰×"Ñ" 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                 ó`  • SR                  S UR                  R                   5       5      n[        UR                  SS5      n[	        UR                  R                  5      S:X  a  US-  nU R                  SU< SU S	UR                  < SUR                  < SUR                  < S
35        g)z<Dump the macro definition for the def created by macro_body.r?   c              3   óL   #   • U  H  n[        UR                  5      v •  M     g 7fr.   )ÚreprrU   r?  s     r4   ri   Ú*CodeGenerator.macro_def.<locals>.<genexpr>»  s   é € ÐHÒ4G¨qœd 1§6¡6Ÿl˜lÒ4Gùs   ‚"$rU   Nr
   Ú,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape))	r^  r)   rD  Úgetattrr  rF   rŒ   r�   r‹   )r'   r…  r*   Ú	arg_tuplerU   s        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õ	
r7   c                 ób   • SUR                    3nU R                  b  U SU R                  < 3nU$ )z.Return a human readable position for the node.zline ú in )r   rU   )r'   r)   r²   s      r4   ÚpositionÚCodeGenerator.positionÅ  s5   € à�T—[‘[�MÐ"ˆØ�9‰9Ñ Ø�4�t˜DŸI™I™=Ð)ˆBØˆ	r7   c                 óŠ   • SR                  S UR                  R                  5       R                  5        5       5      nSU S3$ )Nr?   c              3   ó6   #   • U  H  u  pU< S U 3v •  M     g7f©rA  Nr™   )rg   rU   r`  s      r4   ri   Ú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Ð Ð r7   c                 ó®   • U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        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.undefinedzconcat = environment.concatzcond_expr_undefined = Undefinedzif 0: yield NoneN©r	  rÈ   s    r4   Úwrite_commonsÚCodeGenerator.write_commonsÓ  sG   € ð
 	�‰Ð=Ô>Ø�‰Ð:Ô;Ø�‰Ð4Ô5ð 	�‰Ð8Ô9Ø�‰Ð)Õ*r7   c                 ój   • U R                   R                  UR                  R                  5       5        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     r4   r‚  Ú(CodeGenerator.push_parameter_definitionsà  s%   € ð 	×Ñ×$Ñ$ U§]¡]×%EÑ%EÓ%GÕHr7   c                 ó8   • U R                   R                  5         g)z+Pops the current parameter definitions set.N)rú   ÚpoprÈ   s    r4   r„  Ú'CodeGenerator.pop_parameter_definitionsé  s   € à×Ñ×!Ñ!Õ#r7   r`  c                 ód   • U R                   (       a  U R                   S   R                  U5        gg)zpMarks a parameter in the current parameter definitions as stored.
This will skip the enforced undefined checks.
rQ  N)rú   rà   ©r'   r`  s     r4   rƒ  Ú#CodeGenerator.mark_parameter_storedí  s+   € ð × × Ø×!Ñ! "Ñ%×-Ñ-¨fÕ5ð !r7   c                 ó:   • U R                   R                  U5        g r.   )rû   r.  r­  s     r4   Úpush_context_referenceÚ$CodeGenerator.push_context_referenceô  s   € Ø×%Ñ%×,Ñ,¨VÕ4r7   c                 ó8   • U R                   R                  5         g r.   )rû   rª  rÈ   s    r4   Úpop_context_referenceÚ#CodeGenerator.pop_context_reference÷  s   € Ø×%Ñ%×)Ñ)Õ+r7   c                 ó    • U R                   S   $ )NrQ  ©rû   rÈ   s    r4   Úget_context_refÚCodeGenerator.get_context_refú  s   € Ø×,Ñ,¨RÑ0Ð0r7   c                 ó8   • U R                   S   nUS:X  a  gU S3$ )NrQ  rë   Úresolvez.resolver¶  r­  s     r4   r\  ÚCodeGenerator.get_resolve_funcý  s*   € Ø×.Ñ.¨rÑ2ˆØ�YÓØØ�˜Ð"Ð"r7   c                 óL   • U R                  5        SU R                  U5       S3$ )Nz	.derived(rB   )r·  r   r
  s     r4   Úderive_contextÚCodeGenerator.derive_context  s,   € Ø×&Ñ&Ó(Ð)¨°4×3JÑ3JÈ5Ó3QÐ2RÐRSÐTÐTr7   c                 óH   • U R                   (       d  gXR                   S   ;   $ )z4Checks if a given target is an undeclared parameter.FrQ  )rú   r­  s     r4   Úparameter_is_undeclaredÚ%CodeGenerator.parameter_is_undeclared  s"   € à×$×$ØØ×.Ñ.¨rÑ2Ñ2Ð2r7   c                 óJ   • U R                   R                  [        5       5        g)z+Pushes a new layer for assignment tracking.N)rù   r.  rz   rÈ   s    r4   Úpush_assign_trackingÚ"CodeGenerator.push_assign_tracking  s   € à×Ñ×!Ñ!¤#£%Õ(r7   c                 ó  • U R                   R                  5       nUR                  (       d"  UR                  (       d  UR                  (       a  U(       d  gU Vs/ s H  o3SS S:w  d  M  UPM     nn[        U5      S:X  aœ  [        [        U5      5      nUR                  R                  U5      nUR                  (       a  U R                  SU< SU 35        gUR                  (       a  U R                  SU< SU 35        gU R                  SU< SU 35        OÏUR                  (       a  U R                  S5        O4UR                  (       a  U R                  S	5        OU R                  S
5        [        [        U5      5       HO  u  puU(       a  U R                  S5        UR                  R                  U5      nU R                  U< SU 35        MQ     U R                  S5        UR                  (       d�  UR                  (       do  U(       ag  [        U5      S:X  a  U R                  SUS   < S35        gSR                  [        [         [        U5      5      5      nU R                  SU S35        ggggs  snf )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(r   rB   zcontext.exported_vars.update((r  )rù   rª  r§   r¦   r¤   r  ÚnextÚiterr    r|  r	  r{  rS  rF   r^  ÚmaprŽ  )	r'   r*   Úvarsr+  Úpublic_namesrU   r|  rˆ  Ú	names_strs	            r4   Úpop_assign_trackingÚ!CodeGenerator.pop_assign_tracking  s÷  € ð ×!Ñ!×%Ñ%Ó'ˆà×!×!Ø×$×$Ø—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Ð ùò1 9s   ÁI?Á*I?c           	      ó†  • Ub   S5       e[        U R                  U R                  5      nSSKJn  SSKJn  U R                  R                  (       a  [        XT-   5      nO[        U5      nU R                  SSR                  U5      -   5        U R                  (       a  SOSnUR                  [        R                  5      S LnUR                  [        R                  5       H`  n	U	R                  U R                   ;   a+  U R#                  S	U	R                  < S
3U	R$                  5        X�R                   U	R                  '   Mb     UR                  [        R&                  5       H—  n
U
R(                  U R*                  ;  d  M  U
R(                  nU R-                  5       =U R*                  U'   nSU;   a0  UR/                  SS5      u  pÞU R                  SU SU SU 35        M€  U R                  SU SU 35        M™     U R                  SU R                  < 35        U R                  U R1                  S5       SU S3SS9  U R3                  5         U R5                  5         [7        U5      nS[9        UR:                  S5      ;   a/  UR<                  R?                  S5      nU R                  U S35        UR<                  RA                  U5        S=Ul!        Ul"        U=(       a    U RF                  (       + Ul$        U(       a  U R                  S5        U RK                  U5        U RM                  UR:                  5        U RO                  UR:                  U5        U RQ                  USS9  U RS                  5         U(       Ga'  U RF                  (       d!  U R3                  5         U R                  S5        U R3                  5         U R                  R                  (       d  U R                  S5        O•U R                  S5        U R                  S5        U R3                  5         U R                  S5        U R3                  5         U R                  S 5        U RS                  5         U RS                  5         U R                  S!5        U RS                  SU RF                  (       + -   5        U R                   RU                  5        GH†  u  nn	U R                  U R1                  S"U-   5       SU S3U	S5        U R3                  5         U R5                  5         [7        U5      nSUl+        [9        U	R:                  S#5      nSU;   a/  UR<                  R?                  S5      nU R                  U S35        S$U;   a6  UR<                  R?                  S$5      nU R                  U S%U< S&U S'35        UR<                  RA                  U	5        UUl,        U R                  S(5        U RK                  U5        U RM                  U	R:                  5        U RO                  U	R:                  U5        U RQ                  USS9  U RS                  5         GM‰     SR                  S) U R                    5       5      nU R                  S*U S+3SS9  S,R                  S- U RZ                   5       5      nU R                  S.U< 35        g )/Nzno root frame allowedr
   )Úasync_exported)Úexportedzfrom jinja2.runtime import r?   Ú z, environment=environmentzblock z defined twiceÚ.zfrom z import z as zimport zname = Úrootz(context, missing=missingrv  )r0  r'   rÈ   z = TemplateReference(context)Tzparent_template = Nonery  úif parent_template is not None:z4yield from parent_template.root_render_func(context)z0agen = parent_template.root_render_func(context)rM  zasync for event in agen:zyield eventzfinally: await agen.aclose()Úblock_)r'   ÚsuperrÜ  z = context.super(z, block_rB   z_block_vars = {}c              3   ó0   #   • U  H  o< S U 3v •  M     g7f)z: block_Nr™   r?  s     r4   ri   Ú/CodeGenerator.visit_Template.<locals>.<genexpr>²  s   é € Ð!Kº{¸!¡E¨°!°Õ"5º{ùs   ‚z
blocks = {rB  Ú&c              3   ó4   #   • U  H  u  pU S U 3v •  M     g7f)r@  Nr™   rm   s      r4   ri   rÞ  ´  s   é € ÐG²©t¨q 1 # Q q c¥
²ùs   ‚zdebug_info = ).r   rC   rU   ÚruntimerÕ  rÖ  rl  rS  r	  r^  rX   Úfindr   ÚExtendsÚfind_allrÙ   rî   r  r   ÚImportedNameÚ
importnamerí   r  Úrsplitrp  r  r¤  r+   r…   r}  r    r�  rz  r¤   r¥   rð   r¡   rc  rV  r)  rg  r  r~   r§   r£   rò   )r'   r)   r*   r0   rÕ  rÖ  Úexported_namesÚenvenvÚhave_extendsr£   Úimport_ÚimpÚaliasÚmoduleÚobjr|  rU   r§   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Õ8r7   c                 ó\  • SnUR                   (       aH  U R                  (       a  gU R                  S:”  a&  U R                  S5        U R	                  5         US-  nUR
                  (       a  U R                  U5      nOU R                  5       nUR                  (       ab  U R                  SUR                  < S3U5        U R	                  5         U R                  SUR                  < S3U5        U R                  5         U R                  R                  (       d2  UR                  c%  U R                  S	UR                  < S
U S3U5        OÍU R                  SUR                  < S
U S35        U R                  S5        U R	                  5         U R                  U R                  5        S3U5        U R	                  5         U R                  SU5        U R                  5         U R                  5         U R                  SU R                  SS5       35        U R                  U5        g)z.Call a block and register it for the template.r   Núif parent_template is None:r
   zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](rB   zgen = context.blocks[rM  úfor event in gen:Úeventú	finally: úawait gen.aclose()úgen.close())r¤   rð   rï   r	  r  Úscopedr½  r·  ÚrequiredrU   r  rC   rl  r¢   rm  r%  )r'   r)   r*   r�   rë   s        r4   rÓ   Ú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Õr7   c                 óÔ  • UR                   (       d  U R                  SUR                  5        U R                  S:”  an  U R                  (       d!  U R                  S5        U R                  5         U R                  S5        U R                  (       a
  [        5       eU R                  5         U R                  SU5        U R                  UR                  U5        U R                  SU R                  < S35        U R                  S5        U R                  5         U R                  S	5        U R                  5         UR                  (       a  S
U l        U =R                  S-  sl        g)zCalls the extender.z,cannot use extend from a non top-level scoper   rÚ  z5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(r?   rB   z9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)Tr
   N)r¤   r  r   rï   rð   r	  r  rè   r  r2   ÚtemplaterF   rU   r¥   ©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Ñ Ör7   c                 óè  ^ ^• UR                   (       a!  T R                  S5        T R                  5         Sn[        UR                  [
        R                  5      (       a^  [        UR                  R                  [        5      (       a  SnOm[        UR                  R                  [        [        45      (       a  SnO;[        UR                  [
        R                  [
        R                  45      (       a  SnT R                  SU S3U5        T R                  UR                  T5        T R                  ST R                  < S35        UR                   (       as  T R!                  5         T R                  S	5        T R                  5         T R                  S
5        T R!                  5         T R                  S5        T R                  5         SUU 4S jjnUR"                  (       a£  T R                  ST R%                  T5       S35        T R                  S5        T R                  5         T R                  T R'                  5        S35        U" 5         T R!                  5         T R                  ST R'                  SS5       35        OET R(                  R*                  (       a  T R                  S5        U" 5         OT R                  S5        UR                   (       a  T R!                  5         gg)zHandles includes.rM  Úget_or_select_templateÚget_templateÚselect_templateztemplate = environment.r@   r?   rB   zexcept TemplateNotFound:r(  r  Nc                  ój   >• TR                  5         TR                  ST 5        TR                  5         g )Nr÷  )r  r%  r  )r*   r'   s   €€r4   Ú	loop_bodyÚ.CodeGenerator.visit_Include.<locals>.loop_body-  s%   ø€ Ø�K‰KŒMØ×Ñ˜g uÔ-Ø�L‰L�Nr7   zNgen = template.root_render_func(template.new_context(context.get_all(), True, r  rö  rø  rù  rú  zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamrÖ   )Úignore_missingr	  r  r[   rÿ  r   ÚConstrb   rw   rx   ry   ÚTupleÚListr2   rF   rU   r  Úwith_contextr   rm  rC   rl  )r'   r)   r*   Ú	func_namer  s   ` `  r4   Úvisit_IncludeÚCodeGenerator.visit_Include  s#  ù€ à××Ø�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ð r7   c                 ó¢  • U R                  U R                  S5       S35        U R                  UR                  U5        U R                  SU R                  < S35        UR
                  (       a;  SU R                  S5       3nU R                  U SU R                  U5       S35        g U R                  S	U R                  S5       S
35        g )Núawait zenvironment.get_template(r?   z).Úmake_moduleÚ_asyncz(context.get_all(), True, rB   Ú_get_default_modulez	(context))rF   rm  r2   rÿ  rU   r  r   )r'   r)   r*   Úf_names       r4   Ú_import_commonÚCodeGenerator._import_commonL  s¾   € ð 	�
‰
�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ÕTr7   c                 óž  • U R                  UR                  R                  UR                  5       S3U5        UR                  (       a   U R                  SUR                  < S35        U R                  X5        UR                  (       aB  UR                  R                  S5      (       d!  U R                  SUR                  < S35        ggg)zVisit regular imports.rY  rÈ  rÇ  rÆ  úcontext.exported_vars.discard(rB   N)r	  r    r|  r`  r¤   rF   r  Ú
startswithr   s      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ð #>ˆ>r7   c           	      ó  ^• U R                  U5        U R                  S5        U R                  UT5        / n/ nUR                   GH]  n[	        U[
        5      (       a  Uu  pVOUnU R                  TR                  R                  U5       SU< S35        U R                  STR                  R                  U5       S35        U R                  5         U R                  U5      R                  SS5      R                  SS	5      nS
U SU< 3nU R                  TR                  R                  U5       SU< SU< S35        U R                  5         TR                  (       d  GM"  UR                  U5        UR                  S5      (       a  GML  UR                  U5        GM`     U(       av  [!        U5      S:X  a7  US   nU R                  SU< STR                  R                  U5       35        O0SR#                  U4S jU 5       5      n	U R                  SU	 S35        U(       a^  [!        U5      S:X  a  U R                  SUS   < S35        gSR#                  [%        [&        U5      5      n
U R                  SU
 S35        gg)zVisit named imports.zincluded_template = z = getattr(included_template, z
, missing)rw  rx  r�  z{{rB  z}}z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=rB   rÆ  r
   r   rÈ  rÇ  r?   c              3   ód   >#   • U  H%  o< S TR                   R                  U5       3v •  M'     g7fr›  )r    r|  )rg   rU   r*   s     €r4   ri   Ú1CodeGenerator.visit_FromImport.<locals>.<genexpr>�  s-   øé € ð %ÚGP¸t‘h˜b §¡×!2Ñ!2°4Ó!8Ð 9Õ:Âyùs   ƒ-0rÉ  rÊ  r  z)context.exported_vars.difference_update((r  N)r2  rF   r  r€   r[   rx   r	  r    r|  r  r—  Úreplacer  r¤   r.  r  r  r^  rÎ  rŽ  )r'   r)   r*   Ú	var_namesÚdiscarded_namesrU   rí  r—  ÚmessageÚnames_kvrÑ  s     `        r4   Úvisit_FromImportÚCodeGenerator.visit_FromImportf  sW  ø€ à�‰�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õð r7   c                 ó
  • UR                  5       nSUl        UR                  5       nUR                  5       nUR                  =(       dR    S[        UR	                  SS9S5      ;   =(       d/    [        S UR                  [        R                  5       5       5      nS nU(       a  UR                  R                  S5      nUR                  R                  USS9  UR                  (       a  UR                  R                  US	S9  UR                  (       Ga°  U R                  5       nUR                  R                  US
S9  U R                  U R!                  U5       S3UR                  5        U R#                  5         U R%                  U5        U R                  U R'                  SS5      5        U R)                  UR*                  U5        U R-                  S5        U R-                  U R'                  SS5      5        U R-                  S5        U R#                  5         U R                  SUR                  5        U R)                  UR                  U5        U R-                  S5        U R#                  5         U R                  S5        U R)                  UR*                  U5        U R/                  S5        U R1                  USS9  UR                  (       aV  U R                  U R!                  S5       S3U5        U R#                  5         U R3                  U5        UR2                  Ul        U(       a  U R                  U S35        UR                  [        R4                  5       HC  n	U	R6                  S:X  d  M  U	R8                  S:X  d  M'  U R;                  SU	R<                  5        ME     UR                  (       a$  U R                  5       n
U R                  U
 S35        U R                  U R'                  SS5      U5        U R)                  UR*                  U5        U(       a(  U R-                  SU SU R'                  S5       S35        OU R-                  S5        UR                  (       a  U R-                  W S35        UR                  (       a  U R-                  S5        O‚U R>                  R@                  (       a  U(       d  U R-                  S 5        U R)                  URB                  U5        U R>                  R@                  (       a  U(       d  U R-                  S!5        UR                  (       a  U R-                  S!5        UR                  (       a  U R-                  S"5        OU R-                  U(       a  S#OS5        U R#                  5         U R%                  U5        U R                  S$5        U RE                  URF                  U5        UR                  (       a  U R                  W
 S%35        U R/                  5         U R1                  X1R                  =(       a    UR                  (       + S9  UR                  (       as  U R                  SW
 S35        U R#                  5         U R%                  U5        U RE                  UR                  U5        U R1                  U5        U R/                  5         UR                  (       aë  U RI                  U5        U R/                  5         U RK                  X!5        U R-                  U R'                  S&5       S'35        U R>                  R@                  (       a  U R-                  S 5        U R)                  URB                  U5        U R>                  R@                  (       a  U R-                  S!5        U R-                  S(5        U RM                  U5        U RN                  (       a3  U RN                  S)   RQ                  UR                  RR                  5        g g )*NTÚloop)r}  )Úonly)r*  c              3   ó8   #   • U  H  oR                   v •  M     g 7fr.   )rû  )rg   r£   s     r4   ri   Ú*CodeGenerator.visit_For.<locals>.<genexpr>ª  s   é € ÐHÒ-G E—<–<Ò-Gùrk   r}  )Ú
for_branchÚelseÚtestz(fiter):z
async for zfor r–  zauto_aiter(fiter)ÚfiterÚ:rw  r  é   ry  z%(reciter, loop_render_func, depth=0):rZ  Ústorez8Can't assign to special loop variable in for-loop targetz = 1r?   ÚAsynczLoopContext(r@   Úreciterzauto_aiter(rB   z&, undefined, loop_render_func, depth):z, undefined):z_loop_vars = {}z = 0r  zloop(z, loop)rQ  )*r¶   r¦   Ú	recursiver…   Úiter_child_nodesrC  rä  r   rÙ   r    r�  rz  Úelse_r0  r  r	  rp  r  rc  rm  r2   r`  rF   r  rg  r¢   ræ   rß   rU   r  r   rC   rl  rÍ  r)  r}  r  r  r!  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ð r7   c                 óô  • UR                  5       nU R                  SU5        U R                  UR                  U5        U R	                  S5        U R                  5         U R                  UR                  U5        U R                  5         UR                   H~  nU R                  SU5        U R                  UR                  U5        U R	                  S5        U R                  5         U R                  UR                  U5        U R                  5         M€     UR                  (       aN  U R                  S5        U R                  5         U R                  UR                  U5        U R                  5         g g )Nrw  r2  zelif r  )r¹   r	  r2   r0  rF   r  r)  r}  r  Úelif_r9  )r'   r)   r*   Úif_framerE  s        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ð	 r7   c                 ó¼  • U R                  X5      u  p4U R                  5         UR                  (       a`  UR                  R	                  S5      (       d   U R                  SUR                  < S35        U R                  SUR                  < S35        U R                  UR                  R                  UR                  5       S35        U R                  XC5        g )NrÆ  rË  rB   rÈ  rÇ  rY  )
rŠ  r2  r¤   rU   r  rF   r	  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Õ.r7   c                 óè   • U R                  X5      u  p4U R                  S5        U R                  XC5        U R                  X!5        U R	                  UR
                  USS9  U R                  U5        g )Nz	caller = T)Úforward_caller)rŠ  r	  r“  r  Ú
visit_CallÚcallr!  )r'   r)   r*   Ú
call_framer…  s        r4   Úvisit_CallBlockÚCodeGenerator.visit_CallBlockG  s[   € Ø $§¡°Ó <Ñˆ
Ø�‰�{Ô#Ø�‰�yÔ-Ø×Ñ˜Ô%Ø�‰˜Ÿ	™	 5¸ˆÑ>Ø�‰�uÕr7   c                 ót  • UR                  5       nUR                  R                  U5        U R                  U5        U R	                  U5        U R                  UR                  U5        U R                  X!5        U R                  UR                  U5        U R                  U5        U R                  U5        g r.   )r¶   r    rz  rc  r¢   r)  r}  r  rÍ   Úfilterr!  rg  )r'   r)   r*   Úfilter_frames       r4   Úvisit_FilterBlockÚCodeGenerator.visit_FilterBlockO  s‰   € Ø—{‘{“}ˆØ×Ñ×)Ñ)¨$Ô/Ø×Ñ˜Ô&Ø�‰�LÔ!Ø�‰˜Ÿ	™	 <Ô0Ø×Ñ˜Ô%Ø×Ñ˜$Ÿ+™+ |Ô4Ø�‰�uÔØ×Ñ˜Õ&r7   c                 ó®  • UR                  5       nUR                  R                  U5        U R                  U5        [	        UR
                  UR                  5       HH  u  pEU R                  5         U R                  XC5        U R                  S5        U R                  XR5        MJ     U R                  UR                  U5        U R                  U5        g )NrY  )r¶   r    rz  rc  ÚzipÚtargetsÚvaluesr2  r2   rF   r)  r}  rg  )r'   r)   r*   Ú
with_framer`  Úexprs         r4   Ú
visit_WithÚCodeGenerator.visit_WithZ  s™   € Ø—[‘[“]ˆ
Ø×Ñ×'Ñ'¨Ô-Ø×Ñ˜Ô$Ü §¡¨d¯k©kÖ:‰LˆFØ�L‰LŒNØ�J‰J�vÔ*Ø�J‰J�uÔØ�J‰J�tÖ#ñ	 ;ð
 	�‰˜Ÿ	™	 :Ô.Ø×Ñ˜Õ$r7   c                 ó^   • U R                  U5        U R                  UR                  U5        g r.   )r2  r2   r)   r   s      r4   Úvisit_ExprStmtÚCodeGenerator.visit_ExprStmtf  s    € Ø�‰�TÔØ�
‰
�4—9‘9˜eÕ$r7   c                   ó|   • \ rS rSr% \R
                  \R                  S\4      \S'   \R
                  \   \S'   Sr	g)ÚCodeGenerator._FinalizeInfoij  .ÚconstÚsrcr™   N)
r‘   r’   r“   r”   r9   r½   ÚCallablerw   Ú__annotations__r˜   r™   r7   r4   Ú_FinalizeInfore  j  s,   ‡ Ø�z‰z˜!Ÿ*™* S¨# XÑ.Ñ/Ó/Ø�Z‰Z˜‰_Ör7   rj  rb   c                 ó   • [        U 5      $ )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.
)rw   r   s    r4   Ú_default_finalizeÚCodeGenerator._default_finalizen  s   € ô �5‹zÐr7   Ú	_finalizec                 óz  ^ ^^• T R                   b  T R                   $ T R                  =nmSnT R                  R                  (       aÓ  SnT R                  R                  m[        R
                  S[        R                  S[        R                  S0R                  [        R                  " T5      5      nSnUc*  S[        R                  S[        R                  4UU4S jjnO7U U S	3nUS:X  a*  S[        R                  S[        R                  4UUU 4S
 jjnT R                  X5      T l         T R                   $ )aI  Build 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.
Nzenvironment.finalize(rë   úcontext.eval_ctxrC   rb   r%   c                 ó    >• T" T" U 5      5      $ r.   r™   )rb   r‰  Úenv_finalizes    €€r4   ÚfinalizeÚ.CodeGenerator._make_finalize.<locals>.finalizeš  s   ø€ Ù"¡<°Ó#6Ó7Ð7r7   r?   c                 ó6   >• T" T" TR                   U 5      5      $ r.   )rC   )rb   r‰  rr  r'   s    €€€r4   rs  rt  ¢  s   ø€ Ù&¡|°D×4DÑ4DÀeÓ'LÓMÐMr7   )rn  rl  rC   rs  r   rë   Úeval_contextÚgetÚfrom_objr9   r:   rj  )r'   rs  rg  Úpass_argr‰  rr  s   `   @@r4   Ú_make_finalizeÚCodeGenerator._make_finalizex  s$  ú€ ð �>‰>Ñ%Ø—>‘>Ð!ð "×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                 ó*   • [        [        U5      5      $ )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Ó"Ð"r7   rs  c                 óú   • UR                  UR                  5      nUR                  R                  (       a  [        U5      n[	        U[
        R                  5      (       a  [        U5      $ UR                  U5      $ )a  Try 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_constr0   r  r   r[   r   ÚTemplateDatarw   rf  )r'   r)   r*   rs  rf  s        r4   Ú_output_child_to_constÚ$CodeGenerator._output_child_to_const¯  sZ   € ð —‘˜eŸn™nÓ-ˆà�>‰>×$×$Ü˜5“MˆEô �dœE×.Ñ.×/Ñ/Ü�u“:Ðà�~‰~˜eÓ$Ð$r7   c                 ó,  • UR                   R                  (       a  U R                  S5        O>UR                   R                  (       a  U R                  S5        OU R                  S5        UR                  b  U R                  UR                  5        gg)zHOutput extra source code before visiting a child of an
``Output`` node.
z1(escape if context.eval_ctx.autoescape else str)(zescape(zstr(N)r0   r1   rF   r  rg  ©r'   r)   r*   rs  s       r4   Ú_output_child_preÚCodeGenerator._output_child_preÄ  sb   € ð �>‰>×"×"Ø�J‰JÐJÕKØ�^‰^×&×&Ø�J‰J�yÕ!à�J‰J�vÔà�<‰<Ñ#Ø�J‰J�x—|‘|Õ$ð $r7   c                 ód   • U R                  S5        UR                  b  U R                  S5        gg)zGOutput extra source code after visiting a child of an
``Output`` node.
rB   N)rF   rg  r†  s       r4   Ú_output_child_postÚ CodeGenerator._output_child_postÔ  s)   € ð 	�
‰
�3Œà�<‰<Ñ#Ø�J‰J�s�Oð $r7   c                 óê  • UR                   (       a3  U R                  (       a  g U R                  S5        U R                  5         U R	                  5       n/ nUR
                   H¢  n UR                  (       d4  [        U[
        R                  5      (       d  [
        R                  " 5       eU R                  XRU5      nU(       a.  [        US   [        5      (       a  US   R                  U5        M�  UR                  U/5        M¤     UR                  b\  [        U5      S:X  a  U R                  UR                   S35        OU R                  UR                   S35        U R                  5         U Hè  n[        U[        5      (       aJ  U R!                  U5      nUR                  c  U R                  SU-   5        ML  U R                  US-   5        Mb  UR                  c  U R                  SU5        OU R#                  U5        U R%                  XrU5        U R'                  Xr5        U R)                  XrU5        UR                  c  M×  U R+                  S5        Mê     UR                  b2  U R-                  5         U R                  [        U5      S:X  a  SOS	5        UR                   (       a  U R-                  5         g g ! [
        R                  [        4 a    UR                  U5         GMŽ  f = f)
Nrõ  rQ  r
   r  z	.extend((r  r�  rB   r  )r¡   rð   r	  r  rz  r   rf  r[   r‚  Ú
Impossiblerƒ  Ú	Exceptionr.  ry   r¢   r  r~  r2  r‡  r2   rŠ  rF   r  )	r'   r)   r*   rs  r}  Ú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   Á'AKË+K2Ë1K2c                 óŠ  • U R                  5         [        5       nUR                  [        R                  5       H›  nUR
                  U;   a  M  UR                  UR
                  5        UR                  R                  UR
                  5      nU R                  SU S35        U R                  5         U R                  S5        U R                  5         M�     U R                  U5        U R                  UR                  U5        U R                  S5        U R                  UR                   U5        U R#                  U5        g )Nzif not isinstance(z, Namespace):zMraise TemplateRuntimeError("cannot assign attribute on non-namespace object")rY  )rÃ  rz   rä  r   ÚNSRefrU   rÌ   r    r|  r	  r  r  r2  r2   r`  rF   r)   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Ô$Ø× Ñ  Õ'r7   c                 óx  • U R                  5         UR                  5       nSUl        UR                  R	                  U5        U R                  U5        U R                  U5        U R                  UR                  U5        U R                  U5        U R                  UR                  U5        U R                  S5        UR                  b  U R                  UR                  U5        OU R                  SUR                   S35        U R                  S5        U R                  U5        U R!                  U5        g )NFz9 = (Markup if context.eval_ctx.autoescape else identity)(úconcat(rB   )rÃ  r¶   r¡   r    rz  rc  r¢   r)  r}  r2  r2   r`  rF   rU  rÍ   rÒ  rg  )r'   r)   r*   r§   s       r4   Úvisit_AssignBlockÚCodeGenerator.visit_AssignBlockM  sï   € Ø×!Ñ!Ô#Ø—k‘k“mˆð ,1ˆÔ(Ø×Ñ×(Ñ(¨Ô.Ø×Ñ˜Ô%Ø�‰�KÔ Ø�‰˜Ÿ	™	 ;Ô/Ø�‰�TÔØ�
‰
�4—;‘; Ô&Ø�
‰
ÐNÔOØ�;‰;Ñ"Ø×Ñ˜dŸk™k¨;Õ7à�J‰J˜ ×!3Ñ!3Ð 4°AÐ6Ô7Ø�
‰
�3ŒØ× Ñ  Ô'Ø×Ñ˜Õ%r7   c           	      óX  • UR                   S:X  al  UR                  (       d"  UR                  (       d  UR                  (       a9  U R                  (       a(  U R                  S   R                  UR                  5        UR                  R                  UR                  5      nUR                   S:X  ah  UR                  R                  U5      nUb#  US   [        :X  a  U R                  U5      (       a'  U R                  SUR                  < SU SU S35        g U R                  U5        g )	Nr4  rQ  rÞ   r   z(undefined(name=z) if z is missing else rB   )rß   r¤   r¦   r§   rù   rÌ   rU   r    r|  Ú	find_loadr   rÀ  rF   )r'   r)   r*   r|  rÞ   s        r4   rá   ÚCodeGenerator.visit_Namee  sã   € Ø�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�r7   c                 ó’   • UR                   R                  UR                  5      nU R                  U SUR                  < S35        g )NrN  rO  )r    r|  rU   r	  Úattr)r'   r)   r*   r|  s       r4   Úvisit_NSRefÚCodeGenerator.visit_NSRef~  s9   € ð
 �m‰m×Ñ §	¡	Ó*ˆØ�‰˜#˜˜a §	¡	™}¨AÐ.Õ/r7   c                 óÎ   • UR                  UR                  5      n[        U[        5      (       a  U R	                  [        U5      5        g U R	                  [        U5      5        g r.   )r�  r0   r[   rt   rF   rw   rŽ  )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Õ!r7   c                 óà   •  U R                  [        UR                  UR                  5      5      5        g ! [        R
                   a#    U R                  SUR                  < S35         g f = f©Nz6(Markup if context.eval_ctx.autoescape else identity)(rB   )rF   rŽ  r�  r0   r   r�  Údatar   s      r4   Úvisit_TemplateDataÚ CodeGenerator.visit_TemplateData�  sW   € ð	Ø�J‰J”t˜DŸM™M¨%¯.©.Ó9Ó:Õ;øÜ×Ñó 	Ø�J‰JØHÈÏÉÉÐUVÐWöð	ús   ‚36 ¶4A-Á,A-c                 óô   • U R                  S5        Sn[        UR                  5       H.  u  p4U(       a  U R                  S5        U R                  XB5        M0     U R                  US:X  a  S5        g S5        g )Nr@   rQ  r?   r   z,)rB   ©rF   r{  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Õ-¨Õ-r7   c                 óÖ   • U R                  S5        [        UR                  5       H.  u  p4U(       a  U R                  S5        U R                  XB5        M0     U R                  S5        g )NrN  r?   rO  r®  r¯  s        r4   Ú
visit_ListÚCodeGenerator.visit_Listž  sJ   € Ø�
‰
�3ŒÜ" 4§:¡:Ö.‰IˆCÞØ—
‘
˜4Ô Ø�J‰J�tÖ#ñ /ð 	�
‰
�3�r7   c                 óF  • U R                  S5        [        UR                  5       Hf  u  p4U(       a  U R                  S5        U R                  UR                  U5        U R                  S5        U R                  UR
                  U5        Mh     U R                  S5        g )Nr�  r?   rA  rB  )rF   r{  r~   r2   r>  rb   r¯  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Úorznot c                 ó4  • UR                   R                  (       a  SnO UR                   R                  (       a  SnOSnU R                  U S35        UR                   H%  nU R                  XB5        U R                  S5        M'     U R                  S5        g )Nz8(markup_join if context.eval_ctx.volatile else str_join)Úmarkup_joinÚstr_joinz((r?   r  )r0   r1   r  rF   r   r2   )r'   r)   r*   r  rH  s        r4   Úvisit_ConcatÚCodeGenerator.visit_Concat½  sr   € à�>‰>×"×"ØR‰IØ�^‰^×&×&Ø%‰Ià"ˆIØ�
‰
�i�[ Ð#Ô$Ø—:”:ˆCØ�J‰J�sÔ"Ø�J‰J�tÖñ ð 	�
‰
�4Õr7   c                 óÈ   • U R                  S5        U R                  UR                  U5        UR                   H  nU R                  X25        M     U R                  S5        g )Nr@   rB   )rF   r2   r^  ÚopsrI   s       r4   Úvisit_CompareÚCodeGenerator.visit_CompareË  sD   € à�
‰
�3ŒØ�
‰
�4—9‘9˜eÔ$Ø—(”(ˆBØ�J‰J�rÖ!ñ à�
‰
�3�r7   c                 óˆ   • U R                  S[        UR                      S35        U R                  UR                  U5        g )NrA   )rF   Ú	operatorsr<   r2   r^  r   s      r4   Úvisit_OperandÚCodeGenerator.visit_OperandÓ  s3   € Ø�
‰
�Q”y §¡Ñ)Ð*¨!Ð,Ô-Ø�
‰
�4—9‘9˜eÕ$r7   c                 óP  • U R                   R                  (       a  U R                  S5        U R                  S5        U R                  UR                  U5        U R                  SUR
                  < S35        U R                   R                  (       a  U R                  S5        g g )Nú(await auto_await(zenvironment.getattr(r?   rB   r  )rC   rl  rF   r2   r)   r¢  r   s      r4   Úvisit_GetattrÚCodeGenerator.visit_Getattr×  sv   € à×Ñ×$×$Ø�J‰JÐ+Ô,à�
‰
Ð)Ô*Ø�
‰
�4—9‘9˜eÔ$Ø�
‰
�R˜Ÿ	™	‘} AÐ&Ô'à×Ñ×$×$Ø�J‰J�tÕð %r7   c                 ó”  • [        UR                  [        R                  5      (       a[  U R	                  UR
                  U5        U R                  S5        U R	                  UR                  U5        U R                  S5        g U R                  R                  (       a  U R                  S5        U R                  S5        U R	                  UR
                  U5        U R                  S5        U R	                  UR                  U5        U R                  S5        U R                  R                  (       a  U R                  S5        g g )NrN  rO  rÍ  zenvironment.getitem(r?   rB   r  )	r[   rH  r   ÚSlicer2   r)   rF   rC   rl  r   s      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Õ ð )r7   c                 ó@  • UR                   b  U R                  UR                   U5        U R                  S5        UR                  b  U R                  UR                  U5        UR                  b.  U R                  S5        U R                  UR                  U5        g g )Nr2  )Ústartr2   rF   Ústopr  r   s      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              #   óô  #   • U R                   R                  (       a  U R                  S5        U(       a[  U R                  U R                  UR                      S35        U R                   R                  R                  UR                  5      nOZU R                  U R                  UR                      S35        U R                   R                  R                  UR                  5      nUcJ  UR                  (       d9  U(       a  SOSnU R                  SU SUR                  < S3UR                  5        [        R                  S[        R                  S	[        R                   S
0R                  [        R                  " U5      5      nUb  U R                  U S35        S v •  U R                  X5        U R                  S5        U R                   R                  (       a  U R                  S5        g g 7f)NrÍ  r@   rU  r0  zNo rR  rØ  rë   rp  rC   r?   rB   r  )rC   rl  rF   rÆ   rU   rw  rÇ   r¨   r  r   r   rë   rv  rx  rJ  )r'   r)   r*   rÙ  rp  Ú	type_namery  s          r4   Ú_filter_test_commonÚ!CodeGenerator._filter_test_common  sƒ  é € ð ×Ñ×$×$Ø�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   ‚G6G8c                 óô  • U R                  XS5         UR                  b  U R                  UR                  U5        O¢UR                  R                  (       a-  U R                  SUR                   SUR                   S35        OZUR                  R                  (       a   U R                  SUR                   S35        OU R                  SUR                   S35        S S S 5        g ! , (       d  f       g = f)NTz(Markup(concat(z.)) if context.eval_ctx.autoescape else concat(r  zMarkup(concat(r›  rB   )rÜ  r)   r2   r0   r1   rF   r¢   r  r   s      r4   rÍ   Ú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)Ã)
C7c                 ó”   • U R                  XS5         U R                  UR                  U5        S S S 5        g ! , (       d  f       g = frŠ   )rÜ  r2   r)   r   s      r4   rÐ   ÚCodeGenerator.visit_Test=  s0   € à×%Ñ% d°5Õ9Ø�J‰J�t—y‘y %Ô(÷ :×9Ö9ús	   “9¹
Ac                 óD  ^ ^^• TR                  5       mSUUU 4S jjnT R                  S5        T R                  TR                  T5        T R                  S5        T R                  TR                  T5        T R                  S5        U" 5         T R                  S5        g )Nc                  ó¢   >• TR                   b  TR                  TR                   T 5        g TR                  STR                  T5       S35        g )Nz1cond_expr_undefined("the inline if-expression on z6 evaluated to false and no else section was defined."))Úexpr2r2   rF   r—  )r*   r)   r'   s   €€€r4   Úwrite_expr2Ú1CodeGenerator.visit_CondExpr.<locals>.write_expr2F  sL   ø€ Ø�z‰zÑ%Ø—
‘
˜4Ÿ:™: uÔ-Øà�J‰JðØ—M‘M $Ó'Ð(ð )*ð+õr7   r@   z if z else rB   rÖ   )r¹   rF   r2   Úexpr1r0  )r'   r)   r*   rå  s   ``` r4   Úvisit_CondExprÚCodeGenerator.visit_CondExprB  sq   ú€ à—
‘
“ˆ÷		ñ 		ð 	�
‰
�3ŒØ�
‰
�4—:‘:˜uÔ%Ø�
‰
�6ÔØ�
‰
�4—9‘9˜eÔ$Ø�
‰
�8ÔÙŒØ�
‰
�3�r7   rN  c                 ó�  • U R                   R                  (       a  U R                  S5        U R                   R                  (       a  U R                  S5        OU R                  S5        U R	                  UR
                  U5        U(       a  SS0OS nUR                  (       a  SS0O0 nUR                  (       a  SS0O0 nU(       a  UR                  " U40 UD6  OU(       d  U(       a  [        U40 UD6nU R                  XU5        U R                  S5        U R                   R                  (       a  U R                  S5        g g )	NrÍ  zenvironment.call(context, zcontext.call(rs  Ú
_loop_varsÚ_block_varsrB   r  )rC   rl  rF   rD   r2   r)   r¦   r§   r¯   r}   rJ  )r'   r)   r*   rN  r7  Úloop_kwargsÚblock_kwargss          r4   rO  ÚCodeGenerator.visit_CallY  sô   € ð ×Ñ×$×$Ø�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Õð %r7   c                 óx   • U R                  UR                  S-   5        U R                  UR                  U5        g )Nr@  )rF   r>  r2   rb   r   s      r4   Úvisit_KeywordÚCodeGenerator.visit_Keywordp  s(   € Ø�
‰
�4—8‘8˜c‘>Ô"Ø�
‰
�4—:‘:˜uÕ%r7   c                 ó€   • U R                  S5        U R                  UR                  U5        U R                  S5        g )NzMarkup(rB   ©rF   r2   r^  r   s      r4   Úvisit_MarkSafeÚCodeGenerator.visit_MarkSafev  s+   € Ø�
‰
�9ÔØ�
‰
�4—9‘9˜eÔ$Ø�
‰
�3�r7   c                 ó€   • U R                  S5        U R                  UR                  U5        U R                  S5        g r©  rô  r   s      r4   Úvisit_MarkSafeIfAutoescapeÚ(CodeGenerator.visit_MarkSafeIfAutoescape{  s.   € ð 	�
‰
ÐKÔLØ�
‰
�4—9‘9˜eÔ$Ø�
‰
�3�r7   c                 ó@   • U R                  SUR                  -   5        g )Nzenvironment.©rF   rU   r   s      r4   Úvisit_EnvironmentAttributeÚ(CodeGenerator.visit_EnvironmentAttribute‚  s   € ð 	�
‰
�> D§I¡IÑ-Õ.r7   c                 ó\   • U R                  SUR                  < SUR                   35        g )Nzenvironment.extensions[z].)rF   Ú
identifierrU   r   s      r4   Úvisit_ExtensionAttributeÚ&CodeGenerator.visit_ExtensionAttribute‡  s'   € ð 	�
‰
Ð,¨T¯_©_Ñ,?¸rÀ$Ç)Á)ÀÐMÕNr7   c                 óT   • U R                  U R                  UR                     5        g r.   )rF   rí   ræ  r   s      r4   Úvisit_ImportedNameÚ CodeGenerator.visit_ImportedNameŒ  s   € Ø�
‰
�4×&Ñ& t§¡Ñ7Õ8r7   c                 ó:   • U R                  UR                  5        g r.   rû  r   s      r4   Úvisit_InternalNameÚ CodeGenerator.visit_InternalName�  s   € Ø�
‰
�4—9‘9Õr7   c                 ó&   • U R                  S5        g )Nrë   )rF   r   s      r4   Úvisit_ContextReferenceÚ$CodeGenerator.visit_ContextReference’  s   € ð 	�
‰
�9Õr7   c                 óD   • U R                  U R                  U5      5        g r.   )rF   r½  r   s      r4   Úvisit_DerivedContextReferenceÚ+CodeGenerator.visit_DerivedContextReference—  s   € ð 	�
‰
�4×&Ñ& uÓ-Õ.r7   c                 ó(   • U R                  SU5        g )NÚcontinuer£  r   s      r4   Úvisit_ContinueÚCodeGenerator.visit_Continueœ  s   € Ø�‰�z 4Õ(r7   c                 ó(   • U R                  SU5        g )NÚbreakr£  r   s      r4   Úvisit_BreakÚCodeGenerator.visit_BreakŸ  s   € Ø�‰�w Õ%r7   c                 óÖ   • UR                  5       nUR                  R                  U5        U R                  U5        U R	                  UR
                  U5        U R                  U5        g r.   )r¶   r    rz  rc  r)  r}  rg  )r'   r)   r*   Úscope_frames       r4   Úvisit_ScopeÚCodeGenerator.visit_Scope¢  sO   € Ø—k‘k“mˆØ×Ñ×(Ñ(¨Ô.Ø×Ñ˜Ô%Ø�‰˜Ÿ	™	 ;Ô/Ø×Ñ˜Õ%r7   c                 óà  • U R                  5       nU R                  U SU R                  U5       35        U R                  U S35        U R                  UR                  U5        U R                  U5        UR                  SS9nUR                  R                  U5        U R                  U5        U R                  UR                  U5        U R                  U5        U R                  5         g )NrY  z.vars = T)r´   )r  r	  r½  r2   rë   r°  r¶   r    rz  rc  r)  r}  rg  r³  )r'   r)   r*   rß   r  s        r4   Úvisit_OverlayScopeÚ CodeGenerator.visit_OverlayScope©  sÄ   € Ø×'Ñ'Ó)ˆØ�‰˜#˜˜c $×"5Ñ"5°eÓ"<Ð!=Ð>Ô?Ø�‰˜#˜˜hÐ'Ô(Ø�
‰
�4—<‘< Ô'Ø×#Ñ# CÔ(à—k‘k¨4�kÐ0ˆØ×Ñ×(Ñ(¨Ô.Ø×Ñ˜Ô%Ø�‰˜Ÿ	™	 ;Ô/Ø×Ñ˜Ô%Ø×"Ñ"Õ$r7   c                 ó†  • UR                    H…  nU R                  SUR                   S35        U R                  UR                  U5         UR                  R                  UR                  5      n[        UR                  UR                  U5        M‡     g ! [        R                   a    SUR                  l
         M²  f = f)Nzcontext.eval_ctx.rY  T)Úoptionsr	  r>  r2   rb   r�  r0   Úsetattrr   r�  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 Â?C c                 óJ  • U R                  5       nUR                  R                  5       nU R                  U S35        U R	                  X5        UR
                   H  nU R                  XR5        M     UR                  R                  U5        U R                  SU S35        g )Nz = context.eval_ctx.save()zcontext.eval_ctx.revert(rB   )r  r0   Ú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û   rn  rö   rø   r÷   rõ   rô   rú   ró   rî   rñ   rì   rò   rX   rC   rï   rV   rÆ   rð   rí   rU   r/   rW   rÇ   ©NFTr»   rÖ   )r
   r.   )Nr   )zasync r×  )¸r‘   r’   r“   r”   r9   r½   rw   ÚTextIOrr   r�   ÚpropertyrY   rs   r  r  r+   r¢   r  r  r  r   ÚNoder  r!  r%  rå   r)  rF   r	  r2  r•   ÚCallr×   rØ   ÚMappingr:   rJ  rV  rc  rg  rm  rp  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  ÚIncluder  ÚImportÚ
FromImportr  r  r'  ÚForrB  ÚIfrG  rK  rR  ÚFilterBlockrW  ÚWithr_  ÚExprStmtrb  Ú
NamedTuplerj  Ústaticmethodrl  rn  ri  rz  r~  r8   rƒ  r‡  rŠ  ÚOutputr’  ÚAssignr˜  ÚAssignBlockrœ  ræ   rá   r•  r£  r  r¦  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ü  ÚExtensionAttributer   rå  r  ÚInternalNamer  ÚContextReferencer	  ÚDerivedContextReferencer  ÚContinuer  ÚBreakr  ÚScoper  ÚOverlayScoper  ÚEvalContextModifierr!  ÚScopedEvalContextModifierr(  r˜   r™   r7   r4   r(   r(   ,  s¿  ‡ ð (,Ø ØñG4à"ðG4ð �j‰j˜‰oðG4ð —*‘*˜S‘/ð	G4ð
 —
‘
˜1Ÿ8™8Ñ$ðG4ð ðG4ð ðG4ð 
õG4ðR ð*˜4ó *ó ð*ð
L˜ð L Sð L¨]ô Lð, cô ,ð
/˜Eð / dô /ð 5:ñ9Øð9Ø-1ð9à	õ9ô(ñ"˜Cð "¨õ "ñ< ð <¨a¯j©j¸¿¹Ñ.Dð <ÐPTõ <ð˜uð ¨ô ð DHñØðØ"ðØ*+¯*©*°U·Z±ZÑ*@ðà	õð	 §
¡
¨5¯:©:Ñ 6ð 	¸uð 	Èô 	ð�sð ˜tô ð IJñØðØŸ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ñx9Ø—N‘Nðx9Ø+,¯:©:°eÑ+<ðx9à	õx9ðt/ §¡ð /°Eð /¸dô /ðb(! %§-¡-ð (!¸ð (!À$ô (!ðT8 %§-¡-ð 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ðnIP˜eŸi™ið IP°ð IP¸$ô IPð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ô ð20 §¡ð 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à	÷
Cr7   r*  )Fr¼   Útypingr9   Ú
contextlibr   Ú	functoolsr   Úior   Ú	itertoolsr   r   r   r:  Ú
markupsafer   r	   r×  r   Ú
exceptionsr   Ú
idtrackingr   r   r   r   r   r   r/   r   Úutilsr   r   rJ   r   ÚTYPE_CHECKINGÚtyping_extensionsÚterC   r   ÚTypeVarrh  r:   r   rÉ  r;   rw   rL   rN   rS   rT   r\   r½   r+  rr   ra   rf   rå   r-  ÚSetr…   r‡   r+   ÚRuntimeErrorrƒ   rÃ   r‚   rŽ  rè   r(   r™   r7   r4   Ú<module>rn     s0  ðÙ 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ôfJ�,ô Jô'˜kô 'ô&&˜Kô &ô,�9ô ôbC�Kõ bCr7   