Ë
    Ç[;j2 ã                   ó¼  — d dl Z  e j                  �di de“de“de“de“de“de“de“d	e“d
e“de“de“de“de“de“de“de“de“de“Ž d dlZd dlmZ d dlZddlmZ ddl	m
Z
mZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZ ddl m!Z! ddl"m#Z# ddlm$Z$ dd lm%Z% dd!lm&Z& dd"l'm(Z(m)Z)m*Z* d#d$l+m,Z,m-Z- d%d&hZ. G d'„ d(ej^                  «      Z0d)„ Z1d*„ Z2d+„ Z3 G d,„ d-e4«      Z5 G d.„ d/e4«      Z6 G d0„ d1«      Z7d2„ Z8e8 G d3„ d4«      «       Z9 G d5„ d6e9«      Z: G d7„ d8«      Z; G d9„ d:e9«      Z< G d;„ d<e9«      Z= G d=„ d>e=«      Z> G d?„ d@e9«      Z? G dA„ dBe?«      Z@ G dC„ dDe?«      ZA G dE„ dFe?«      ZB G dG„ dHeB«      ZC G dI„ dJeB«      ZD G dK„ dLe?«      ZE G dM„ dNe?«      ZF G dO„ dPe?«      ZG G dQ„ dRe9«      ZH G dS„ dTe9«      ZI G dU„ dVe9«      ZJ G dW„ dXeI«      ZK G dY„ dZeI«      ZL G d[„ d\eI«      ZM G d]„ d^eI«      ZN G d_„ d`eI«      ZO G da„ dbeI«      ZP G dc„ ddeI«      ZQ G de„ dfeI«      ZR G dg„ dhe=«      ZS G di„ dje=«      ZT G dk„ dleTe;«      ZU G dm„ dne=«      ZV G do„ dpe=«      ZW G dq„ dre=«      ZX G ds„ dte=e;«      ZY G du„ dveY«      ZZ G dw„ dxe9«      Z[ G dy„ dze9«      Z\ G d{„ d|eY«      Z] G d}„ d~eY«      Z^ G d„ d€e]«      Z_ G d�„ d‚e_«      Z` G dƒ„ d„e`«      Za G d…„ d†e`«      Zb G d‡„ dˆe]«      Zc G d‰„ dŠe=«      Zd G d‹„ dŒe=e;«      Ze G d�„ dŽee«      Zf G d�„ d�ee«      Zg G d‘„ d’e=«      Zh G d“„ d”e=«      Zi G d•„ d–e=«      Zj G d—„ d˜e=«      Zk G d™„ dše=«      Zl G d›„ dœe=«      Zm G d�„ džem«      Zn G dŸ„ d em«      Zo G d¡„ d¢em«      Zp G d£„ d¤em«      Zq G d¥„ d¦e=«      Zr G d§„ d¨e=«      Zs G d©„ dªe=«      Zt G d«„ d¬e=«      Zu G d­„ d®e<«      Zv G d¯„ d°e=«      Zw G d±„ d²e=«      Zx G d³„ d´e=«      Zy G dµ„ d¶e=«      Zz G d·„ d¸e=«      Z{ G d¹„ dºe=«      Z| G d»„ d¼e=«      Z} G d½„ d¾e9«      Z~ G d¿„ dÀe=«      Z G dÁ„ dÂe=«      Z€ G dÃ„ dÄ«      Z� G dÅ„ dÆe�e=«      Z‚ G dÇ„ dÈe9«      Zƒ G dÉ„ dÊe9«      Z„dË„ Z… G dÌ„ dÍe�e=«      Z† G dÎ„ dÏe†«      Z‡ G dÐ„ dÑe†«      Zˆ G dÒ„ dÓe�e=«      Z‰ G dÔ„ dÕe=«      ZŠ G dÖ„ d×em«      Z‹ G dØ„ dÙe=«      ZŒ G dÚ„ dÛe9«      Z� G dÜ„ dÝe=«      ZŽ G dÞ„ dßeŽ«      Z� G dà„ dáe�«      Z� G dâ„ dãe=«      Z‘ G dä„ dåe‘«      Z’ G dæ„ dçeŽ«      Z“ G dè„ dée=«      Z” G dê„ dëeŽ«      Z• G dì„ díe=e7«      Z–dî„ Z—dï„ dð„ e—dñœZ˜dò„ Z™ G dó„ dôe=«      Zš G dõ„ döe=«      Z› G d÷„ døe=«      Zœ G dù„ dúe9«      Z� G dû„ düe=e�«      Zž G dý„ dþež«      ZŸ G dÿ„ �d ež«      Z  G �d„ �de=«      Z¡ G �d„ �de9«      Z¢e%�jF                  r�dZ¤n�dZ¤ e!�jJ                  �d�d«      Z¦ e!�jJ                  �d	�d«      Z§ e!�jJ                  �d
�d«      Z¨ e!�jJ                  �d�d«      Z© e!�jJ                  �d�d«      Zª e!�jJ                  �d�d«      Z« e!�jJ                  �d�d«      Z¬ e!�jJ                  �d�d«      Z­y(  é    NÚosÚcopyÚchainÚBuiltinÚerrorÚwarningÚNamingÚ
PyrexTypesÚpy_object_typeÚModuleScopeÚ
LocalScopeÚClosureScopeÚStructOrUnionScopeÚPyClassScopeÚCppClassScopeÚUtilityCodeÚEncodedStringÚ
error_type)r   é   )r   )r   r   ÚInternalErrorÚCompileErrorÚCannotSpecialize)r	   )r
   )Ú	TypeSlots)r   r   )r   r   r   ÚPropertyScoper   r   r   ÚTemplateScopeÚGeneratorExpressionScopeÚCppScopedEnumScopeÚpunycodify_name)r   )r   )ÚFuture)ÚOptions)Ú
DebugFlags)Úhas_np_pythranÚpythran_typeÚis_pythran_bufferé   )Úadd_metaclassÚstr_to_numberÚ__init_subclass__Ú__class_getitem__c                   ó   — e Zd ZdZdZdZy)Ú
NoGilStater   r   r%   N)Ú__name__Ú
__module__Ú__qualname__ÚHasGilÚNoGilÚ
NoGilScope© ó    ú^G:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Compiler/Nodes.pyr+   r+   (   s   „ Ø€FØ€Eð �Jr3   r+   c                 ó2   — | d   j                  «       | d   fS ©Nr   r   )Úget_filenametable_entry©Úposs    r4   Úrelative_positionr:   0   s   € Ø�‰F×*Ñ*Ó,¨c°!©fÐ5Ð5r3   c                 ó  — t         j                  s|S dt        | «      z  }|€t        |«      S |j                  }|�	 |j                  |«       |st        |«      }nt        |dz   |z   «      }||_        |S # t        $ r d }Y Œ5w xY w)NzFile: %s (starting at line %s)Ú
)r    Úembed_pos_in_docstringr:   r   ÚencodingÚencodeÚUnicodeEncodeError)r9   Ú	docstringÚpos_liner>   Údocs        r4   Úembed_positionrD   4   sš   € Ü×)Ò)ØÐØ/Ô2CÀCÓ2HÑH€HØÐä˜XÓ&Ð&ð ×!Ñ!€HØÐð	Ø�O‰O˜HÔ%ñ ä˜HÓ%‰ä˜H t™O¨iÑ7Ó8ˆØ€C„LØ€Jøô "ò 	ØŠHð	ús   ½A6 Á6BÂBc                 ó   ‡ ‡— ˆˆ fd„}|S )Nc            
      ót  •— t        | «      dkD  �r!t        | d   ‰«      �r| d d \  }}dd|j                  z  ›d|j                  j                  ›d‰	j                  ›d|j
                  dd  ›d�	}|j                  «       }|j                  j                  j                  «       }|xj                  dz  c_         ‰	| i |¤Ž}|xj                  dz  c_        ||j                  j                  j                  «       k7  r3|j                  |j                  d	d
d«      «       |j                  |«       |S  ‰	| i |¤ŽS )Nr   r%   z                    /* Ú z -> Ú.z */é   ú->z<-)ÚlenÚ
isinstanceÚ
call_levelÚ	__class__r,   r9   Úinsertion_pointÚbufferÚstreamÚtellÚputlnÚreplace)
ÚargsÚkwdsÚnodeÚcodeÚmarkerrO   ÚstartÚresÚcodewriter_classÚfuncs
           €€r4   Úfzwrite_func_call.<locals>.fO   s  ø€ Üˆt‹9�q‹=œZ¨¨Q©Ð1AÕBð ˜b˜q˜‰JˆD‘$à�d—o‘oÓ%Ø—‘×'Ó'Ø—“Ø—‘˜˜’ð	ˆFð #×2Ñ2Ó4ˆOØ—K‘K×&Ñ&×+Ñ+Ó-ˆEØ�OŠO˜qÑ �OÙ˜Ð% Ñ%ˆCØ�OŠO˜qÑ �OØ˜Ÿ™×*Ñ*×/Ñ/Ó1Ò1Ø—
‘
˜6Ÿ>™>¨$°°aÓ8Ô9Ø×%Ñ% fÔ-ØˆJá˜Ð& Ñ&Ð&r3   r2   )r]   r\   r^   s   `` r4   Úwrite_func_callr_   N   s   ù€ õ'ð, €Hr3   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚVerboseCodeWriterc                 ó¾   •— ddl m} ddlm} t	        |«      }|j                  «       D ]!  \  }}t        ||«      sŒt        ||«      ||<   Œ# t        ‰| �%  | |||«      S )Nr   ©ÚFunctionTyper   )ÚCCodeWriter)
Útypesrd   ÚCodere   ÚdictÚitemsrL   r_   ÚsuperÚ__new__)	ÚclsÚnameÚbasesÚattrsrd   re   ÚmnameÚmrN   s	           €r4   rk   zVerboseCodeWriter.__new__k   sW   ø€ Ý&Ý%Ü�U“ˆØŸ™ž‰HˆE�1Ü˜!˜\Õ*Ü.¨q°+Ó>��e’ð &ô ‰w‰˜s D¨%°Ó7Ð7r3   )r,   r-   r.   rk   Ú__classcell__©rN   s   @r4   ra   ra   h   s   ø„ ÷8ð 8r3   ra   c                   ó6   ‡ — e Zd ZdZ eh d£«      Zˆ fd„Zˆ xZS )ÚCheckAnalyserszCMetaclass to check that type analysis functions return a node.
    >   Úanalyse_typesÚanalyse_expressionsÚanalyse_target_typesc                 óÐ   •— ddl m} d„ }t        |«      }|j                  «       D ]-  \  }}t	        ||«      sŒ|| j
                  v sŒ" |||«      ||<   Œ/ t        ‰| �  | |||«      S )Nr   rc   c                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                  óB   •—  ‰| i |¤Ž}|€t        ‰›d| ›d|›�«       |S )NrG   )Úprint)rU   ÚkwargsÚretvalr]   rm   s      €€r4   Úcallz3CheckAnalysers.__new__.<locals>.check.<locals>.call�   s+   ø€ Ù˜tÐ. vÑ.�Ø�>Üªªd±FÐ;Ô<Ø�r3   r2   )rm   r]   r   s   `` r4   Úcheckz%CheckAnalysers.__new__.<locals>.check€   s   ù€ õð
 ˆKr3   )rf   rd   rh   ri   rL   Úmethodsrj   rk   )	rl   rm   rn   ro   rd   r€   rp   rq   rN   s	           €r4   rk   zCheckAnalysers.__new__~   se   ø€ Ý&ò	ô �U“ˆØŸ™ž‰HˆE�1Ü˜!˜\Õ*¨u¸¿¹Ò/CÙ$ U¨A›��e’ð &ô ‰w‰˜s D¨%°Ó7Ð7r3   )r,   r-   r.   Ú__doc__Ú	frozensetr�   rk   rr   rs   s   @r4   ru   ru   u   s!   ø„ ñáò ó €G÷8ð 8r3   ru   c                   ó   — e Zd Zd„ Zy)ÚCopyWithUpTreeRefsMixinc                 ó  — | j                   }|j                  |«      }| j                  j                  «       D ]R  \  }}|| j                  v r|j                  t        |«      |«      }nt        j                  ||«      }t        |||«       ŒT |S ©N)
rN   rk   Ú__dict__ri   Úuptree_ref_attrsÚgetÚidr   ÚdeepcopyÚsetattr)ÚselfÚmemorl   ÚresultÚkÚvs         r4   Ú__deepcopy__z$CopyWithUpTreeRefsMixin.__deepcopy__�   s}   € ð �n‰nˆØ—‘˜SÓ!ˆØ—M‘M×'Ñ'Ö)‰DˆAˆqØ�D×)Ñ)Ñ)ð —H‘HœR ›U AÓ&‘ä—M‘M ! TÓ*�Ü�F˜A˜qÕ!ð *ð ˆr3   N)r,   r-   r.   r“   r2   r3   r4   r…   r…   �   s   „ ór3   r…   c                 óP   — t         j                  r t        t        «      | «      S | S r‡   )r!   Údebug_trace_code_generationr&   ra   )rl   s    r4   Ú_with_metaclassr–   £   s#   € Ü×-Ò-Ø/Œ}Ô.Ó/°Ó4Ð4à€Jr3   c                   óž   — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZd„ ZdZdZdZdd„ZdZd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zy)ÚNoder   FNc                 óH   — || _         | j                  j                  |«       y r‡   )r9   rˆ   Úupdate)rŽ   r9   Úkws      r4   Ú__init__zNode.__init__Ê   s   € ØˆŒØ�‰×Ñ˜RÕ r3   Ú	Operationc                 óJ   — t        | j                  d| j                  z  «       y )Nz%s not allowed without gil)r   r9   Úgil_message©rŽ   Úenvs     r4   Ú	gil_errorzNode.gil_errorÓ   s   € Üˆd�h‰hÐ4°t×7GÑ7GÑGÕHr3   c                 óF   — |j                  «       s| j                  «        y y r‡   )Úis_cppÚ	cpp_errorr    s     r4   Ú	cpp_checkzNode.cpp_checkØ   s   € Ø�z‰zŒ|Ø�N‰NÕð r3   c                 óJ   — t        | j                  d| j                  z  «       y )Nz%s only allowed in c++)r   r9   Úcpp_message©rŽ   s    r4   r¥   zNode.cpp_errorÜ   s   € Üˆd�h‰hÐ0°4×3CÑ3CÑCÕDr3   c           	      óÌ   — t        j                   | «      }|j                  D ]:  }t        ||«      }t        |t        «      sŒ t        |||D �cg c]  }|‘Œ c}«       Œ< |S c c}w )ac  Clone the node. This is defined as a shallow copy, except for member lists
           amongst the child attributes (from get_child_accessors) which are also
           copied. Lists containing child nodes are thus seen as a way for the node
           to hold multiple children directly; the list is not treated as a separate
           level in the tree.)r   Úchild_attrsÚgetattrrL   Úlistr�   )rŽ   r�   ÚattrnameÚvalueÚxs        r4   Ú
clone_nodezNode.clone_nodeß   s^   € ô —‘˜4“ˆØ×*Ô*ˆHÜ˜F HÓ-ˆEÜ˜%¤Õ&Ü˜ ±eÓ*<±e°ª1°eÑ*<Õ=ð +ð ˆùò +=s   Á	A!c                  ó   — y r‡   r2   r    s     r4   Úanalyse_declarationszNode.analyse_declarations  ó   € Ør3   c                 óF   — t        d| j                  j                  z  «      ‚)Nz*analyse_expressions not implemented for %s©r   rN   r,   r    s     r4   rw   zNode.analyse_expressions  s$   € ÜÐHØ�N‰N×#Ñ#ñ$ó %ð 	%r3   c                 óF   — t        d| j                  j                  z  «      ‚)Nz$generate_code not implemented for %sr¶   ©rŽ   rX   s     r4   Úgenerate_codezNode.generate_code  s$   € ÜÐBØ�N‰N×#Ñ#ñ$ó %ð 	%r3   c                 ó\   — t        | t        «      r| j                  j                  |«       y y r‡   )rL   Ú	BlockNodeÚbodyÚannotater¸   s     r4   r½   zNode.annotate  s#   € ä�dœIÔ&Ø�I‰I×Ñ˜tÕ$ð 'r3   c                 ój  — 	 | j                   S # t        $ r› | j                  }| j                  s|| _         |cY S | j                  D ]]  }t	        | |«      }|€Œt        |t        «      r"|D ]  }t        ||j                  «       «      }Œ ŒDt        ||j                  «       «      }Œ_ || _         |cY S w xY wr‡   )	Ú_end_posÚAttributeErrorr9   r«   r¬   rL   r­   ÚmaxÚend_pos)rŽ   r9   ÚattrÚchildÚcs        r4   rÂ   zNode.end_pos  sª   € ð	Ø—=‘=Ð øÜò 	Ø—(‘(ˆCØ×#Ò#Ø #�”Ø’
Ø×(Ô(�Ü  dÓ+�à�=ØÜ ¤tÔ,Û"˜Ü! # q§y¡y£{Ó3™ñ #ô ˜c 5§=¡=£?Ó3‘Cð )ð  ˆDŒMØŠJð!	ús   ‚ Ž*B2ºA5B2Â1B2c                 óT  ‡‡‡‡
— ‰dk(  ry‰€
t        «       Št        | «      ‰v r$d| j                  j                  t        | «      fz  S ‰j	                  t        | «      «       ˆˆ
ˆˆfd„Š
| j
                  j                  «       D ��cg c]  \  }}|‰vsŒ||f‘Œ }}}t        |«      dk(  r$d| j                  j                  t        | «      fz  S d|z  }d| j                  j                  t        | «      fz  }	|D ]  \  }}|	|›d|›d ‰
||d	z   «      ›d
�z  }	Œ |	d|z  z  }	|	S c c}}w )zYDebug helper method that returns a recursive string representation of this node.
        r   z<...nesting level cutoff...>z<%s (0x%x) -- already output>c           
      óä   •— t        | t        «      r| j                  |‰‰dz
  ‰«      S t        | t        «      r)ddj	                  | D �cg c]  } ‰||«      ‘Œ c}«      z  S t        | «      S c c}w )Nr   z[%s]ú, )rL   r˜   Údumpr­   ÚjoinÚrepr)r°   ÚlevelÚitemÚcutoffÚ
dump_childÚencounteredÚ
filter_outs      €€€€r4   rÏ   zNode.dump.<locals>.dump_child4  si   ø€ Ü˜!œTÔ"Ø—v‘v˜e Z°¸±¸;ÓGÐGÜ˜AœtÔ$Ø §	¡	ÉqÓ*QÉqÀt©:°d¸EÕ+BÈqÑ*QÓ RÑRÐRä˜A“w�ùò +Rs   Á	A-
z<%s (0x%x)>z  z<%s (0x%x)
ú: r   r<   z%s>)Úsetr‹   rN   r,   Úaddrˆ   ri   rK   )rŽ   rÌ   rÑ   rÎ   rÐ   Úkeyr¯   ro   Úindentr[   rÏ   s     ```     @r4   rÉ   z	Node.dump)  s$  û€ ð �QŠ;Ø1ØÐÜ›%ˆKÜˆd‹8�{Ñ"Ø2°d·n±n×6MÑ6MÌrÐRVËxÐ5XÑXÐXØ�‰œ˜4›Ô!÷	ð 15·±×0CÑ0CÔ0EÔ_Ñ0E¡* # uÈÐT^ÒI^�#�u’Ð0EˆÑ_Üˆu‹:˜Š?Ø  D§N¡N×$;Ñ$;¼RÀ»XÐ#FÑFÐFà˜E‘\ˆFØ  D§N¡N×$;Ñ$;¼RÀ»XÐ#FÑFˆCÛ#‘
��UØª²±jÀÈÐPQÉ	Õ6RÐSÑS‘ð $à�5˜6‘>Ñ!ˆCØˆJùó `s   ÂD$ÂD$c           	      óR  — | j                   sy| j                   \  }}}|j                  dd¬«      }|t        d|dz
  «      | }|d   }|r|d| |z   ||d z   }|j                  «       d	z   |d<   ||||d
z    z  }dj	                  |«      }	d|j                  «       › d|d›d|d›d|	› d�	S )z[Debug helper method that returns the source code context of this node as a string.
        Ú ÚASCIIÚignore)r>   Úerror_handlingr   é   éÿÿÿÿNz             # <<<<<<<<<<<<<<r%   r<   Ú"z":ÚdÚ:)r9   Ú	get_linesrÁ   ÚrstriprÊ   Úget_escaped_description)
rŽ   Úmark_columnrY   Úsource_descÚlineÚcolÚcontentsÚlinesÚcurrentrX   s
             r4   Údump_poszNode.dump_posG  sÙ   € ð �xŠxØØ!%§¡Ñˆ�T˜3Ø×(Ñ(°'È(Ð(ÓSˆàœ˜Q  Q¡›¨Ð-ˆØ˜‘)ˆÙØ˜d˜s�m fÑ,¨w°s°t¨}Ñ<ˆGØ—N‘NÓ$Ð'FÑFˆˆb‰	Ø�˜$˜t A™vÐ&Ñ&ˆà�y‰y˜ÓˆØ�;×6Ñ6Ó8Ð9¸¸DÀ¸8À1ÀSÈÀGÈ2ÈdÈVÐSUÐVÐVr3   r‡   )r   r8   éd   N)Fz(#)) r,   r-   r.   Úis_nameÚis_noneÚis_nonecheckÚ
is_literalÚis_terminatorÚ
is_wrapperÚis_cpropertyÚis_templated_type_nodeÚtempsr«   Úouter_attrsÚcf_stateÚcoercion_typerœ   rŸ   Únogil_checkÚin_nogil_contextr¢   r¨   r¦   r¥   r±   r³   rw   r¹   r½   rÂ   rÉ   rë   r2   r3   r4   r˜   r˜   ª   s¥   „ ð €GØ€GØ€LØ€JØ€MØ€JØ€LØ"ÐØ€Eð
 €Kð €Kà€Hð €Mò!ð €Kà€KØÐóIð €KòòEòòJò%ò%ò%ò
ó*ô<Wr3   r˜   c                   óT   — e Zd ZdZdgZed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚCompilerDirectivesNodez9
    Sets compiler directives for the children nodes
    r¼   c                 ó‚   — t        j                  |j                  fi |¤Ž} | |j                  |||j                  ¬«      S ©N)r¼   Ú
directivesrñ   )r    Úcopy_inherited_directivesrÿ   r9   rñ   )rl   r¼   r¡   rÿ   Únew_directivess        r4   Úfor_directivesz%CompilerDirectivesNode.for_directivesc  s7   € ä ×:Ñ:¸3¿>¹>ÑXÈZÑXˆÙ�4—8‘8 $°>ÐQU×QcÑQcÔdÐdr3   c                 ó€   — t        j                  |j                  «      } | |j                  |||j                  ¬«      S rþ   )r    Úcopy_for_internalrÿ   r9   rñ   )rl   r¼   r¡   r  s       r4   Úfor_internalz#CompilerDirectivesNode.for_internalh  s2   € ä ×2Ñ2°3·>±>ÓBˆÙ�4—8‘8 $°>ÐQU×QcÑQcÔdÐdr3   c                 ó‚   — |j                   }| j                   |_         | j                  j                  |«       ||_         y r‡   )rÿ   r¼   r³   ©rŽ   r¡   Úolds      r4   r³   z+CompilerDirectivesNode.analyse_declarationsm  s/   € Ø�n‰nˆØŸ™ˆŒØ�	‰	×&Ñ& sÔ+Øˆ�r3   c                 óŽ   — |j                   }| j                   |_         | j                  j                  |«      | _        ||_         | S r‡   )rÿ   r¼   rw   r  s      r4   rw   z*CompilerDirectivesNode.analyse_expressionss  s8   € Ø�n‰nˆØŸ™ˆŒØ—I‘I×1Ñ1°#Ó6ˆŒ	ØˆŒØˆr3   c                 óæ   — |j                   }|j                  j                   }| j                   |j                  _         | j                  j                  ||«       ||_         ||j                  _         y r‡   )rÿ   Úglobalstater¼   Úgenerate_function_definitions)rŽ   r¡   rX   Úenv_oldÚcode_olds        r4   r  z4CompilerDirectivesNode.generate_function_definitionsz  sW   € Ø—.‘.ˆØ×#Ñ#×.Ñ.ˆØ&*§o¡oˆ×ÑÔ#Ø�	‰	×/Ñ/°°TÔ:Ø ˆŒØ&.ˆ×ÑÕ#r3   c                 ó¾   — |j                   j                  }| j                  |j                   _        | j                  j                  |«       ||j                   _        y r‡   )r  rÿ   r¼   Úgenerate_execution_code©rŽ   rX   r  s      r4   r  z.CompilerDirectivesNode.generate_execution_code‚  sE   € Ø×Ñ×)Ñ)ˆØ&*§o¡oˆ×ÑÔ#Ø�	‰	×)Ñ)¨$Ô/Ø&)ˆ×ÑÕ#r3   c                 ó¾   — |j                   j                  }| j                  |j                   _        | j                  j                  |«       ||j                   _        y r‡   )r  rÿ   r¼   r½   r  s      r4   r½   zCompilerDirectivesNode.annotateˆ  sE   € Ø×Ñ×)Ñ)ˆØ&*§o¡oˆ×ÑÔ#Ø�	‰	×Ñ˜4Ô Ø&)ˆ×ÑÕ#r3   N)r,   r-   r.   r‚   r«   Úclassmethodr  r  r³   rw   r  r  r½   r2   r3   r4   rü   rü   Z  sS   „ ñð �(€Kàñeó ðeð ñeó ðeòòò/ò*ó*r3   rü   c                   ó   — e Zd Zd„ Zd„ Zy)r»   c                 ó†   — |j                  «       j                  }|D ]  }|j                  j                  |«       Œ |d d …= y r‡   )Úglobal_scopeÚundeclared_cached_builtinsr  Úadd_cached_builtin_decl)rŽ   r¡   rX   ÚentriesÚentrys        r4   Úgenerate_cached_builtins_declsz(BlockNode.generate_cached_builtins_decls’  s;   € Ø×"Ñ"Ó$×?Ñ?ˆÛˆEØ×Ñ×4Ñ4°UÕ;ð à’A‰Jr3   c                 óJ   — |j                   D ]  }|j                  ||«       Œ y r‡   )Úlambda_defsr  )rŽ   r¡   rX   rW   s       r4   Úgenerate_lambda_definitionsz%BlockNode.generate_lambda_definitions˜  s    € Ø—O”OˆDØ×.Ñ.¨s°DÕ9ñ $r3   N)r,   r-   r.   r  r  r2   r3   r4   r»   r»   �  s   „ òó:r3   r»   c                   ó@   — e Zd ZdgZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚStatListNodeÚstatsc                 ó   — t        | fi |¤Ž}|S r‡   )r   )r9   r¡   r›   rW   s       r4   Úcreate_analysedzStatListNode.create_analysed¢  s   € ä˜CÑ& 2Ñ&ˆØˆr3   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   ©r!  r³   ©rŽ   r¡   Ústats      r4   r³   z!StatListNode.analyse_declarations§  s   € à—J”JˆDØ×%Ñ% cÕ*ñ r3   c                 ól   — | j                   D �cg c]  }|j                  |«      ‘Œ c}| _         | S c c}w r‡   )r!  rw   r&  s      r4   rw   z StatListNode.analyse_expressions¬  s<   € ð #'§*¢*ó.Ù",˜$ð ×.Ñ.¨sÕ3Ø",ñ.ˆŒ
àˆùò.s   �1c                 óJ   — | j                   D ]  }|j                  ||«       Œ y r‡   ©r!  r  ©rŽ   r¡   rX   r'  s       r4   r  z*StatListNode.generate_function_definitions²  s    € à—J”JˆDØ×.Ñ.¨s°DÕ9ñ r3   c                 ó~   — | j                   D ].  }|j                  |j                  «       |j                  |«       Œ0 y r‡   )r!  Úmark_posr9   r  ©rŽ   rX   r'  s      r4   r  z$StatListNode.generate_execution_code·  s.   € à—J”JˆDØ�M‰M˜$Ÿ(™(Ô#Ø×(Ñ(¨Õ.ñ r3   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   ©r!  r½   r.  s      r4   r½   zStatListNode.annotate½  ó   € Ø—J”JˆDØ�M‰M˜$Õñ r3   N)r,   r-   r.   r«   Ústaticmethodr#  r³   rw   r  r  r½   r2   r3   r4   r   r   �  s6   „ ð �)€Kàñó ðò+ò
ò:ò
/ó r3   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚStatNodec                  ó   — y r‡   r2   ©rŽ   r¡   rX   s      r4   r  z&StatNode.generate_function_definitionsÏ  r´   r3   c                 óF   — t        d| j                  j                  z  «      ‚)Nz.generate_execution_code not implemented for %sr¶   r¸   s     r4   r  z StatNode.generate_execution_codeÒ  s$   € ÜÐLØ�N‰N×#Ñ#ñ$ó %ð 	%r3   N)r,   r-   r.   r  r  r2   r3   r4   r4  r4  Â  s   „ òó%r3   r4  c                   ó0   — e Zd ZdgZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚCDefExternNoder¼   c                 ól  — |j                   }d|_         | j                  j                  |«       ||_         | j                  s| j                  rg| j                  j
                  }|j                  d   sd}n|sd}nt        d„ |D «       «      }|j                  | j                  | j                  |«       y y )Nr   Úpreliminary_late_includes_cy28Fc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr‡   )rL   ÚCVarDefNode)Ú.0rW   s     r4   Ú	<genexpr>z6CDefExternNode.analyse_declarations.<locals>.<genexpr>í  s   è ø€ ÐKÁU¸Tœ: d¬K×8ÁUùs   ‚)	Úin_cincluder¼   r³   Úinclude_fileÚverbatim_includer!  rÿ   ÚallÚadd_include_file)rŽ   r¡   Úold_cinclude_flagr!  Úlates        r4   r³   z#CDefExternNode.analyse_declarationsÞ  s—   € ØŸO™OÐØˆŒØ�	‰	×&Ñ& sÔ+Ø+ˆŒà×Ò × 5Ò 5à—I‘I—O‘OˆEØ—>‘>Ð"BÒCØ‘Ùà‘äÑKÁUÓKÓK�Ø× Ñ  ×!2Ñ!2°D×4IÑ4IÈ4ÕPð !6r3   c                 óF   — | j                   j                  |«      | _         | S r‡   ©r¼   rw   r    s     r4   rw   z"CDefExternNode.analyse_expressionsð  s   € à—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr3   c                 ó<   — | j                   j                  ||«       y r‡   ©r¼   r  r6  s      r4   r  z,CDefExternNode.generate_function_definitionsõ  ó   € Ø�	‰	×/Ñ/°°TÕ:r3   c                  ó   — y r‡   r2   r¸   s     r4   r  z&CDefExternNode.generate_execution_codeø  r´   r3   c                 ó:   — | j                   j                  |«       y r‡   ©r¼   r½   r¸   s     r4   r½   zCDefExternNode.annotateû  ó   € Ø�	‰	×Ñ˜4Õ r3   N©	r,   r-   r.   r«   r³   rw   r  r  r½   r2   r3   r4   r9  r9  ×  s%   „ ð
 �(€KòQò$ò
;òó!r3   r9  c                   ó    — e Zd Zg ZdZd„ Zd„ Zy)ÚCDeclaratorNoderØ   c                  ó   — y r‡   r2   r©   s    r4   Údeclared_namezCDeclaratorNode.declared_name  s   € Ør3   c                  ó   — y r‡   r2   r©   s    r4   Úanalyse_templatesz!CDeclaratorNode.analyse_templates  s   € àr3   N)r,   r-   r.   r«   Úcalling_conventionrT  rV  r2   r3   r4   rR  rR  ÿ  s   „ ð €KàÐòór3   rR  c                   ó$   — e Zd ZdgZdZd„ Zdd„Zy)ÚCNameDeclaratorNodeÚdefaultNc                 ó   — | j                   S r‡   ©rm   r©   s    r4   rT  z!CNameDeclaratorNode.declared_name!  ó   € Ø�y‰yÐr3   c                 ó   — |rŒ| j                   dk(  r}|j                  s|j                  s|j                  rt	        | j
                  d«       nB|j                  rt	        | j
                  d«       n|j                  ddd¬«      | _         t        }|j                  r(|j                  r	 |j                  |j                  «      }|| _        | |fS # t        $ r& t	        | j
                  d| j                   z  «       Y Œ9w xY w)NrØ   úMissing argument nameúJUse spam() rather than spam(void) to declare a function with no arguments.r   )Úfor_displayÚpyrexúR'%s' cannot be specialized since its type is not a fused argument to this function)rm   Úis_ptrÚis_arrayÚ	is_bufferr   r9   Úis_voidÚdeclaration_coder   Úis_fusedÚfused_to_specificÚ
specializer   Útype)rŽ   Ú	base_typer¡   ÚnonemptyÚ
visibilityÚin_pxds         r4   ÚanalysezCNameDeclaratorNode.analyse$  sÛ   € Ù˜Ÿ	™	 Ršà×Ò 9×#5Ò#5¸×9LÒ9LÜ�d—h‘hÐ 7Õ8Ø×"Ò"Ü�d—h‘hÐ lÕmà%×6Ñ6°rÀqÐPQÐ6ÓR�”	Ü*�	à×Ò #×"7Ò"7ð!Ø%×0Ñ0°×1FÑ1FÓG�	ð ˆŒ	Ø�YˆÐøô $ò !Ü�d—h‘hØjØ—i‘iñ ö!ð!ús   Â(C Ã,C=Ã<C=©r   NF)r,   r-   r.   r«   rZ  rT  rq  r2   r3   r4   rY  rY    s   „ ð
 �+€Kà€Gòôr3   rY  c                   ó&   — e Zd ZdgZd„ Zd„ Zdd„Zy)ÚCPtrDeclaratorNodeÚbasec                 ó6   — | j                   j                  «       S r‡   ©ru  rT  r©   s    r4   rT  z CPtrDeclaratorNode.declared_name@  ó   € Ø�y‰y×&Ñ&Ó(Ð(r3   c                 ó6   — | j                   j                  «       S r‡   ©ru  rV  r©   s    r4   rV  z$CPtrDeclaratorNode.analyse_templatesC  ó   € Ø�y‰y×*Ñ*Ó,Ð,r3   Nc                 ó°   — |j                   rt        | j                  d«       t        j                  |«      }| j
                  j                  |||||¬«      S )Nz+Pointer base type cannot be a Python object©rn  ro  rp  )Úis_pyobjectr   r9   r
   Ú
c_ptr_typeru  rq  )rŽ   rm  r¡   rn  ro  rp  Úptr_types          r4   rq  zCPtrDeclaratorNode.analyseF  sK   € Ø× Ò Ü�$—(‘(ÐIÔJÜ×(Ñ(¨Ó3ˆØ�y‰y× Ñ  ¨3¸ÈjÐagÐ ÓhÐhr3   rr  )r,   r-   r.   r«   rT  rV  rq  r2   r3   r4   rt  rt  ;  s   „ ð �(€Kò)ò-ôir3   rt  c                   ó   — e Zd ZdgZd„ Zd„ Zy)Ú_CReferenceDeclaratorBaseNoderu  c                 ó6   — | j                   j                  «       S r‡   rw  r©   s    r4   rT  z+_CReferenceDeclaratorBaseNode.declared_nameP  rx  r3   c                 ó6   — | j                   j                  «       S r‡   rz  r©   s    r4   rV  z/_CReferenceDeclaratorBaseNode.analyse_templatesS  r{  r3   N)r,   r-   r.   r«   rT  rV  r2   r3   r4   r‚  r‚  M  s   „ Ø�(€Kò)ó-r3   r‚  c                   ó   — e Zd Zdd„Zy)ÚCReferenceDeclaratorNodeNc                 ó°   — |j                   rt        | j                  d«       t        j                  |«      }| j
                  j                  |||||¬«      S )Nz-Reference base type cannot be a Python objectr}  )r~  r   r9   r
   Ú
c_ref_typeru  rq  ©rŽ   rm  r¡   rn  ro  rp  Úref_types          r4   rq  z CReferenceDeclaratorNode.analyseX  sK   € Ø× Ò Ü�$—(‘(ÐKÔLÜ×(Ñ(¨Ó3ˆØ�y‰y× Ñ  ¨3¸ÈjÐagÐ ÓhÐhr3   rr  ©r,   r-   r.   rq  r2   r3   r4   r†  r†  W  ó   „ ôir3   r†  c                   ó   — e Zd Zdd„Zy)Ú CppRvalueReferenceDeclaratorNodeNc                 ó°   — |j                   rt        | j                  d«       t        j                  |«      }| j
                  j                  |||||¬«      S )Nz4Rvalue-reference base type cannot be a Python objectr}  )r~  r   r9   r
   Úcpp_rvalue_ref_typeru  rq  r‰  s          r4   rq  z(CppRvalueReferenceDeclaratorNode.analyse`  sK   € Ø× Ò Ü�$—(‘(ÐRÔSÜ×1Ñ1°)Ó<ˆØ�y‰y× Ñ  ¨3¸ÈjÐagÐ ÓhÐhr3   rr  r‹  r2   r3   r4   rŽ  rŽ  _  rŒ  r3   rŽ  c                   ó   — e Zd ZddgZdd„Zy)ÚCArrayDeclaratorNoderu  Ú	dimensionNc                 óà  — |j                   r|j                  «       s|j                  s|j                  rÐddlm} t        | j                  |«      r| j                  j                  }n| j                  f}|D �cg c]  }|j                  |«      ‘Œ }	}d |	v r1|	j                  d «      }
t        ||
   j                  d«       t        }n|j                  | j                  ||	«      }| j                  j!                  |||||¬«      S d }| j                  �r%| j                  j#                  |«      | _        | j                  j$                  j&                  s t        | j                  j                  d«       | j                  j$                  j(                  rC| j                  j*                  j,                  dk7  r t        | j                  j                  d«       t        | j                  j.                  t0        «      r| j                  j.                  n| j                  j3                  «       }|�	 t1        |«      }|j7                  «       st        | j                  d|z  «       |j8                  rt        | j                  d	«       |j                  rt        | j                  d
«       t;        j<                  ||«      }| j                  j!                  |||||¬«      S c c}w # t4        $ r Y Œ³w xY w)Nr   ©Ú	TupleNodezTemplate parameter not a typer}  zArray dimension not integerÚexternz(Array dimension cannot be const variablez%Array element type '%s' is incompletez'Array element cannot be a Python objectz"Array element cannot be a function)Úis_cpp_classÚis_template_typeÚis_cfunctionÚpython_type_constructor_nameÚ	ExprNodesr–  rL   r“  rU   Úanalyse_as_typeÚindexr   r9   r   Úspecialize_hereru  rq  Úanalyse_const_expressionrl  Úis_intÚis_constr  ro  Úconstant_resultÚintÚget_constant_c_result_codeÚ
ValueErrorÚis_completer~  r
   Úc_array_type)rŽ   rm  r¡   rn  ro  rp  r–  rU   r’   ÚvaluesÚixÚsizeÚ
array_types                r4   rq  zCArrayDeclaratorNode.analysem  sM  € Ø×#Ò#¨	×(BÑ(BÔ(DØ×&Ò&Ø×6Ò6Ý,Ü˜$Ÿ.™.¨)Ô4Ø—~‘~×*Ñ*‘à—~‘~��Ù6:Ó;±d°�a×'Ñ'¨Õ,°dˆFÐ;Ø�v‰~Ø—\‘\ $Ó'�Ü�d˜2‘h—l‘lÐ$CÔDÜ&‘	à%×5Ñ5°d·h±hÀÀVÓL�	Ø—9‘9×$Ñ$ Y°¸hÐS]ÐflÐ$ÓmÐmàˆØ�>‹>Ø!Ÿ^™^×DÑDÀSÓIˆDŒNØ—>‘>×&Ñ&×-Ò-Ü�d—n‘n×(Ñ(Ð*GÔHØ�~‰~×"Ñ"×+Ò+°·±×0DÑ0D×0OÑ0OÐS[Ò0[ä�d—n‘n×(Ñ(Ð*TÔUÜ6@ÀÇÁ×A_ÑA_ÔadÔ6e�D—N‘N×2Ò2ØŸ™×BÑBÓDð àÐðÜ˜t›9�Dð
 ×$Ñ$Ô&Ü�$—(‘(ÐCÀiÑOÔPØ× Ò Ü�$—(‘(ÐEÔFØ×!Ò!Ü�$—(‘(Ð@ÔAÜ×,Ñ,¨Y¸Ó=ˆ
Ø�y‰y× Ñ  ¨S¸8ÐPZÐciÐ ÓjÐjùòC <øô, "ò áðús   Á9KÈ.K! Ë!	K-Ë,K-rr  ©r,   r-   r.   r«   rq  r2   r3   r4   r’  r’  g  s   „ ð ˜;Ð'€Kô*kr3   r’  c                   ó@   — e Zd Zg d¢ZdZdZdZdZd„ Zd„ Z	dd„Z
d	d„Zy)
ÚCFuncDeclaratorNode)ru  rU   Úexception_valuer   Nc                 ó6   — | j                   j                  «       S r‡   rw  r©   s    r4   rT  z!CFuncDeclaratorNode.declared_name­  rx  r3   c                 ó  — t        | j                  t        «      rîddlm}m} | j                  j                  }t        ||«      r|j                  }n't        ||«      r|g}nt        |j                  d«       y g | _
        |D ]]  }t        ||«      r9| j                  j                  t        j                  |j                  «      «       ŒHt        |j                  d«       Œ_ | j                  j                  | _        | j                  S y )Nr   )r–  ÚNameNodez*Template arguments must be a list of names)rL   ru  r’  rœ  r–  r³  r“  rU   r   r9   Ú	templatesÚappendr
   ÚTemplatePlaceholderTyperm   )rŽ   r–  r³  Útemplate_nodeÚtemplate_nodesÚtemplates         r4   rV  z%CFuncDeclaratorNode.analyse_templates°  sÆ   € Ü�d—i‘iÔ!5Ô6ß6Ø ŸI™I×/Ñ/ˆMÜ˜-¨Ô3Ø!.×!3Ñ!3‘Ü˜M¨8Ô4Ø"/ ‘ä�m×'Ñ'Ð)UÔVØØˆDŒNÛ*�Ü˜h¨Ô1Ø—N‘N×)Ñ)¬*×*LÑ*LÈXÏ]É]Ó*[Õ\ä˜(Ÿ,™,Ð(TÕUð	 +ð
 Ÿ	™	Ÿ™ˆDŒIØ—>‘>Ð!àr3   c                 óŒ  ‡ ‡— |€i }|r|dz  }g }t        ‰ j                  «      D �]  \  }}	|	j                  ‰||dk(  xr ‰j                  xr d‰j                  v¬«      \  }
}|
j
                  }||v r‹||   }|j                  ‰«      }|€t        |j                  d«       n\|t        j                  urH|j                  |«      s7t        ‰ j                  j                  d«       t        |j                  d«       n|}|
j                  rt        ‰ j                  d«       |dk(  r$‰j                  r|j                  r‰j                  }|j                   rt        j"                  |j$                  «      }|j&                  rt        |	j                  d	«       t        j(                  |||	j                  «      }|	j*                  rd
|_        |	j,                  rd
|_        |j/                  |«       |	j0                  r‰ xj2                  dz  c_        �Œí‰ j2                  s�Œût        ‰ j                  d«       �Œ d }d}‰j                  d   rH|j4                  s<‰ j6                  s0‰ j8                  r$|dk7  rd‰ _        t;        ‰ j                  dd¬«       ‰ j8                  dk(  rV‰ j=                  ‰«       ‰j?                  d«       ‰j?                  d«       ‰j?                  d«       ‰j?                  d«       n|j4                  r‰ j8                  rd‰ _        |j4                  r?‰ j@                  s‰ j8                  r'‰ j8                  dk7  rt        ‰ j                  d«       �n|j4                  r6‰ j8                  s*|dk7  r%‰ j6                  rt;        ‰ j                  dd«       �nØ‰ j@                  €›‰ j8                  r�‰ j8                  dk7  r€|j@                  �t|dk7  ro|sm‰j                  satC        ‰ j                  tD        «      sGddl#m$} |jK                  ‰ j                  tM        |j@                  «      ||j@                  ¬«      ‰ _         ‰ j@                  ��‰ j8                  dk(  rÖ‰ j@                  jO                  ‰«      ‰ _         ‰ j@                  jP                  }|jR                  s†|j4                  sz|jT                  r"|jV                  j4                  s|j                  rL|t        jX                  k(  r‰ j@                  jZ                  dk(  s t        ‰ j@                  j                  d«       ‰ j@                  }�n3‰ j@                  j]                  ‰«      j_                  |‰«      jO                  ‰«      ‰ _         ‰ j@                  ja                  ‰«      }|jc                  ‰ j@                  jP                  «      s t        ‰ j@                  j                  d«       |dk7  r�|jd                  s|jf                  rw‰ j@                  ji                  «       r]	 tk        |jl                  «      }‰ j@                  jn                  |k(  r.t;        ‰ j                  d‰ j@                  jn                  z  «       	 ‰ j8                  }|jT                  rt        ‰ j                  d«       t        jr                  ||‰ jt                  ‰ j2                  ||‰ j                  jv                  ‰ jx                  ‰ jz                  ‰ j|                  ‰ j~                  ‰ j€                  ¬ «      }‰ j2                  r,|j‚                  rˆˆ fd!„}||_B        n‰ j‡                  |‰«       ‰j                  d"   }|r7|jv                  }|r"||k7  rt        ‰ j                  d#|›d$|›d%�«       ||_;        |jV                  jˆ                  rt;        ‰ j                  d&d«       |j                  D ]A  }|jP                  jˆ                  sŒ|j‹                  «       rŒ+t;        ‰ j                  d'd«       ŒC ‰ j                  j                  |‰||¬(«      S # tp        $ r Y �ŒÑw xY w))Nr   r   r2  ©rn  Úis_self_argú
Not a typeú2Signature does not agree with previous declarationúPrevious declaration herez2Function argument cannot have C name specificationr`  Tz-Non-default argument follows default argumentÚlegacy_implicit_noexceptr—  FzdImplicit noexcept declaration is deprecated. Function declaration should contain 'noexcept' keyword.r%   ©rÌ   Ú+ÚiosÚnewÚ	stdexceptÚtypeinfozAException clause not allowed for function returning Python objectz?noexcept clause is ignored for function returning Python object©Ú	ConstNode©r¯   rl  r£  Ú*zTException value must be a Python exception, or C++ function with no arguments, or *.z6Exception value incompatible with function return typez;Ambiguous exception value, same as default return value: %rz!Function cannot return a function)	Úoptional_arg_countr°  Úexception_checkrW  ÚnogilÚwith_gilÚis_overridableÚis_const_methodr´  c                 ó,   •— ‰j                  | ‰|«       y r‡   )Údeclare_optional_arg_struct)Ú	func_typeÚfused_cnamer¡   rŽ   s     €€r4   Údeclare_opt_arg_structz;CFuncDeclaratorNode.analyse.<locals>.declare_opt_arg_structV  s   ø€ Ø×4Ñ4°YÀÀ[ÕQr3   Úcallspeczcannot have both 'z' and 'z' calling conventionsz6Rvalue-reference as function return type not supportedz3Rvalue-reference as function argument not supported©ro  rp  )FÚ	enumeraterU   rq  Úis_c_class_scoperÿ   rm   r�  r   r9   r
   r   Úsame_asru  ÚcnameÚis_unspecifiedÚparent_typere  r  rm  rg  ÚCFuncTypeArgÚnot_noneÚor_nonerµ  rZ  rË  r~  Úhas_explicit_exc_clauserÌ  r   r¦   rD  r°  rL   rt  rœ  rÈ  Úfor_typeÚstrr   rl  Úis_errorrš  Úreturn_typeÚc_char_typer¯   rv   Ú	coerce_toÚas_exception_valueÚassignable_fromr¡  Úis_floatÚhas_constant_resultÚfloatÚdefault_valuer£  r¦  Ú	CFuncTypeÚhas_varargsrW  rÍ  rÎ  ÚoverridablerÐ  r´  ri  rÕ  rÒ  Úis_rvalue_referenceÚis_forwarding_reference)rŽ   rå  r¡   rn  Údirective_localsro  rp  Úfunc_type_argsÚiÚarg_nodeÚname_declaratorrl  rm   Ú	type_nodeÚ
other_typeÚfunc_argÚexc_valÚ	exc_checkrÈ  Úexc_val_typeÚtype_default_valuerÓ  rÕ  rÖ  rê   Úargs   ` `                       r4   rq  zCFuncDeclaratorNode.analyseÆ  sö  ù€ ØÐ#Ø!ÐÙØ˜‰MˆHØˆÜ$ T§Y¡Y×/‰KˆAˆxØ$,×$4Ñ$4Ø˜hØ !™VÒe¨×(<Ñ(<ÒeÀÐWZ×WeÑWeÐAeð %5ó %hÑ!ˆO˜Tð #×'Ñ'ˆDØÐ'Ñ'Ø,¨TÑ2�	Ø&×6Ñ6°sÓ;�
ØÐ%Ü˜)Ÿ-™-¨Õ6Ø¤*×";Ñ";Ñ;Ø"Ÿl™l¨:Ô6Ü˜$Ÿ)™)Ÿ-™-Ð)]Ô^Ü˜)Ÿ-™-Ð)DÕEà%�DØ×$Ò$Ü�d—h‘hÐ TÔUØ�AŠv˜#×.Ò.°4×3FÒ3Fà—‘�à�}Š}Ü!×,Ñ,¨T¯^©^Ó<�à�|Š|Ü�h—l‘lÐ$pÔqÜ!×.Ñ.¨t°T¸8¿<¹<ÓHˆHØ× Ò Ø$(�Ô!Ø×ÒØ#'�Ô Ø×!Ñ! (Ô+Ø×ÒØ×'Ò'¨1Ñ,×'Ø×(Ô(Ü�d—h‘hÐ OÖPðI 0ðL ˆØˆ	à�N‰NÐ5Ò6Ø#×/Ò/Ø×4Ò4Ø×(Ò(Ø (Ò*à#(ˆDÔ Ü�D—H‘HðOàõð
 ×Ñ 3Ò&Ø�N‰N˜3ÔØ× Ñ  Ô'Ø× Ñ  Ô'Ø× Ñ  Ô-Ø× Ñ  Õ,Ø×$Ò$¨×)=Ò)=ð $)ˆDÔ à×#Ò#Ø×)Ò)¨T×-AÒ-AØ×(Ñ(¨CÒ/Ü�$—(‘(Ð_Ö`Ø×$Ò$¨T×-AÒ-AÀjÐT\ÒF\Ðae×a}Òa}Ü�D—H‘HÐ_ÐabÖcà×#Ñ#Ð+°×0DÒ0DÈ×I]ÑI]ÐadÒIdð  ×/Ñ/Ð;ÀÈxÒAWÑ`fð ×/Ò/¼
À4Ç9Á9ÔN`Ô8aÝ8Ø/8×/AÑ/AØ ŸH™H¬C°×0KÑ0KÓ,LÐS^Ø,7×,GÑ,Gð 0Bó 0I˜Ô,ð ×#Ñ#Ñ/Ø×'Ñ'¨3Ò.Ø+/×+?Ñ+?×+XÑ+XÐY\Ó+]�DÔ(Ø#'×#7Ñ#7×#<Ñ#<�LØ(×1Ò1Ø$0×$<Ò$<Ø%1×%>Ò%>Ø-9×-EÑ-E×-QÒ-QØ-9×->Ò->Ø%1´Z×5KÑ5KÒ%KØ)-×)=Ñ)=×)CÑ)CÀsÒ)JÜ˜d×2Ñ2×6Ñ6Øtôvà"×2Ñ2’Gà+/×+?Ñ+?×+MÑ+MÈcÓ+R×+\Ñ+\Ø# Só,*ß*BÑ*BÀ3Ó*Gð Ô(à"×2Ñ2×EÑEÀcÓJ�GØ&×6Ñ6°t×7KÑ7K×7PÑ7PÔQÜ˜d×2Ñ2×6Ñ6ØVôXà" hÒ.Ø!,×!3Ò!3°{×7KÒ7KØ $× 4Ñ 4× HÑ HÔ JðNÜ16°{×7PÑ7PÓ1QÐ.ð  $×3Ñ3×CÑCÐGYÒYÜ '¨¯©Ð2oØ(,×(<Ñ(<×(LÑ(Lñ3Mõ !Nà×,Ñ,ˆIØ×#Ò#Ü�$—(‘(Ð?Ô@Ü×(Ñ(Ø˜¨×)9Ñ)9Ø#×6Ñ6Ø#°YØ#Ÿy™y×;Ñ;Ø—*‘* t§}¡}ÀT×EUÑEUØ ×0Ñ0Ø—n‘nô&ˆ	ð ×"Ò"Ø×!Ò!õRð 4J�	Õ0à×0Ñ0°¸CÔ@à—>‘> *Ñ-ˆÙØ×2Ñ2ˆGÙ˜7 hÒ.Ü�d—h’hÚ/6ºð!Bô Cà+3ˆIÔ(à× Ñ ×4Ò4Ü�D—H‘HÐVÐXYÔZØ—>”>ˆCØ�x‰x×+Ó+°C×4OÑ4OÕ4QÜ˜Ÿ™Ð"WÐYZÕ[ð "ð �y‰y× Ñ  ¨C¸JÈvÐ ÓVÐVøôY  *ò !Ú ð!ús   Ø`6 à6	aáac                 ó¾  — t        «       }dt        j                  z  }|j                  |t        j
                  | j                  «       |j                  t        |j                  «      | j                  z
  d D ]6  }|j                  |j                  |j                  |j                  dd¬«       Œ8 |j                  t        j                  | j                  j                  «      }|�t	        j                  ||«      }|j!                  «       j#                  |d|d| j                  |¬«      }d|_        d|_        t	        j(                  |j                  «      |_        y)	a  
        Declares the optional argument struct (the struct used to hold the
        values for optional arguments). For fused cdef functions, this is
        deferred as analyse_declarations is called only once (on the fused
        cdef function).
        z%snNT)Úallow_pyobjectÚallow_memoryviewÚstructr   )rm   ÚkindÚscopeÚtypedef_flagr9   rÛ  r   )r   r	   Úpyrex_prefixÚdeclare_varr
   Ú
c_int_typer9   rU   rK   rË  rm   rl  ÚmangleÚopt_arg_prefixru  Úget_fused_cnamer  Údeclare_struct_or_unionÚdefined_in_pxdÚusedr  Úop_arg_struct)	rŽ   rÓ  r¡   rÔ  r  Úarg_count_memberrÿ  Ústruct_cnameÚop_args_structs	            r4   rÒ  z/CFuncDeclaratorNode.declare_optional_arg_structm  s#  € ô #Ó$ˆØ ¤6×#6Ñ#6Ñ6ÐØ×ÑÐ*¬J×,AÑ,AÀ4Ç8Á8ÔLà—>‘>¤# i§n¡nÓ"5¸×8OÑ8OÑ"OÐ"PÓQˆCØ×Ñ˜cŸh™h¨¯©°#·'±'È$ÐaeÐÕfð Rð —z‘z¤&×"7Ñ"7¸¿¹¿¹ÓHˆàÐ"Ü%×5Ñ5°kÀ<ÓPˆLà×)Ñ)Ó+×CÑCØØØØØ—‘Øð Dó  ˆð )*ˆÔ%ØˆÔä",×"7Ñ"7¸×8KÑ8KÓ"Lˆ	Õr3   )r   NNFr‡   )r,   r-   r.   r«   rð  rË  rÐ  r´  rT  rV  rq  rÒ  r2   r3   r4   r¯  r¯  š  s6   „ ò 6€Kà€KØÐØ€OØ€Iò)òó,eWôNMr3   r¯  c                   ó   — e Zd ZdgZdd„Zy)ÚCConstDeclaratorNoderu  Nc                 ó°   — |j                   rt        | j                  d«       t        j                  |«      }| j
                  j                  |||||¬«      S )Nz)Const base type cannot be a Python objectr}  )r~  r   r9   r
   Úc_const_typeru  rq  )rŽ   rm  r¡   rn  ro  rp  Úconsts          r4   rq  zCConstDeclaratorNode.analyse“  sM   € Ø× Ò Ü�$—(‘(Ø=ô?ä×'Ñ'¨	Ó2ˆØ�y‰y× Ñ  ¨°hÈ:Ð^dÐ ÓeÐer3   rr  r­  r2   r3   r4   r  r  Ž  s   „ ð �(€Kôfr3   r  c                   ó¤   — e Zd Zg d¢ZddgZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZd„ Zed	„ «       Zed
„ «       Zdd„Zd„ Zd„ Zd„ Z	 	 dd„Zy)ÚCArgDeclNode)rm  Ú
declaratorrZ  Ú
annotationrZ  r  r   r   FNc                 ó6   — | j                   j                  «       S r‡   ©r  rT  r©   s    r4   rT  zCArgDeclNode.declared_nameÄ  ó   € Ø�‰×,Ñ,Ó.Ð.r3   c                 ó6   — | j                   j                  «       S r‡   )rm   Úas_c_string_literalr©   s    r4   Úname_cstringzCArgDeclNode.name_cstringÇ  s   € à�y‰y×,Ñ,Ó.Ð.r3   c                 óÚ   — | j                   r0t        t        j                  | j                  j
                  z   «      S t        t        j                  | j                  j
                  z   «      S r‡   )Úneeds_conversionr   r	   Ú
arg_prefixr  rm   Ú
var_prefixr©   s    r4   Ú	hdr_cnamezCArgDeclNode.hdr_cnameË  sI   € ð × Ò Ü"¤6×#4Ñ#4°t·z±z·±Ñ#FÓGÐGä"¤6×#4Ñ#4°t·z±z·±Ñ#FÓGÐGr3   c                 ó  — |r|x| j                   _        | _        | j                  �| j                  | j                  fS t	        | j
                  t        «      r´| j
                  j                  dk(  r›|r–| j                   j                  r.| j                   j                  |d¬«      }|j                  «       }n| j                   j                  }t        |«      | j
                  _        d | j                   _        d| j                   _        d}nd}d| j                   _        | j                   j                  ||¬«      }t        | j                   dd «      }|r|| j
                  _        |j                  r¨t	        | j                   t        «      rŽt	        | j
                  t         «      rt| j
                  }	t	        |	j"                  t         «      r'|	j"                  }	t	        |	j"                  t         «      rŒ'| j                   j$                  |	_        |j                   }| j&                  r=|r;|j(                  d   r,t        | j                   dd «      €| j+                  |«      }
|
�|
}| j
                  j                  |||¬«      S )	NrØ   T)Úcould_be_nameFÚarg_nameÚannotation_typingrm   ©rn  )rm  r¼  rl  r÷  rL   r  rY  rm   Úis_basic_c_typerq  Úempty_declaration_coder   Úis_argr¬   re  ÚTemplatedTypeNoder’  ru  Úarray_declaratorr  rÿ   Úinject_type_from_annotations)rŽ   r¡   rn  r¼  rl  r*  r)  rm  Úbase_arg_namer  Úarg_types              r4   rq  zCArgDeclNode.analyseÕ  sô  € ÙØ<GÐGˆD�N‰NÔ&¨Ô)9Ø�9‰9Ð Ø×'Ñ'¨¯©Ð2Ð2ô �d—o‘oÔ':Ô;ÀÇÁ×@TÑ@TÐXZÒ@ZÙØ—>‘>×1Ò1àŸ>™>×1Ñ1°#ÀTÐ1ÓJ�DØ#×:Ñ:Ó<‘Hà#Ÿ~™~×2Ñ2�HÜ'4°XÓ'>�—‘Ô$Ø&*�—‘Ô#Ø16�—‘Ô.Ø ‰Mà!ˆMØ $ˆ�‰ÔØ—N‘N×*Ñ*¨3¸mÐ*ÓLˆ	Ü §¡°
¸DÓAˆÙØ#0ˆD�O‰OÔ ð
 ×ÒÜ˜tŸ~™~Ô/@ÔAÜ˜tŸ™Ô0DÔEØŸ™ˆJÜ˜ZŸ_™_Ô.BÔCØ'Ÿ_™_�
ô ˜ZŸ_™_Ô.BÕCà"Ÿn™n×=Ñ=ˆJŒOØ!×+Ñ+ˆIð �OŠO¡¨¯©Ð7JÒ(Kô ˜DŸN™N¨F°DÓ9ÐAØ×8Ñ8¸Ó=ˆHØÐ#Ø$�	Ø�‰×&Ñ& y°#ÀÐ&ÓIÐIr3   c                 ó„  — | j                   }|sy |j                  || j                  ¬«      \  }}|�t        |j                  |d¬«      | _        |ræd|v r+|j                  «       }|r|j                  «       sn¿d| _        n·|t        u rd| _        n§| j                  rx| j                  j                  rb|j                  «       s|j                  rF|j                  «       s|j                  }| j                  sAt        | j                  d«       d| _        n#| j                  s|j                  «       rd| _        |rd| _        |S )N)Úassigned_valueT)rl  r/  ztyping.OptionalzIPEP-484 recommends 'typing.Optional[...]' for arguments that can be None.)r  Úanalyse_type_annotationrZ  ÚCAnalysedBaseTypeNoder9   rm  ÚresolveÚcan_be_optionalrà  r   rî   Úequivalent_typer   rß  Útype_from_annotation)rŽ   r¡   r  Ú	modifiersr4  s        r4   r2  z)CArgDeclNode.inject_type_from_annotations  s  € Ø—_‘_ˆ
ÙØà(×@Ñ@ÀÐUY×UaÑUaÐ@ÓbÑˆ	�8ØÐÜ2Ø—‘ X°dô<ˆDŒNñ Ø  IÑ-à#×+Ñ+Ó-�Ù H×$<Ñ$<Ô$>ð à#'�D•LØœ^Ñ+à#�•Ø—’ $§,¡,×"6Ò"6¸H×<TÑ<TÔ<VÐZb×ZrÒZrà×/Ñ/Ô1Ø'×7Ñ7�HØ—|’|Ü˜DŸH™HÐ&qÔrØ#'�D•LØ—\’\ h×&>Ñ&>Ô&@Ø $�”áØ(,ˆDÔ%Øˆr3   c                 óR  — | j                   €�| j                  r„| j                  j                  rN| j                  j                  |«       | j                  j                  | j                  j                  «       «      S |j                  | j                  «      | _         | j                   S r‡   )rí  rZ  rð   Úgenerate_evaluation_coderl  Ú	cast_coder�   Úget_argument_default_constr¸   s     r4   Úcalculate_default_value_codez)CArgDeclNode.calculate_default_value_code,  sy   € Ø×ÑÐ%Ø�|Š|Ø—<‘<×*Ò*à—L‘L×9Ñ9¸$Ô?ØŸ9™9×.Ñ.¨t¯|©|×/BÑ/BÓ/DÓEÐEØ%)×%DÑ%DÀTÇYÁYÓ%O�Ô"Ø×!Ñ!Ð!r3   c                 óT   — | j                   r| j                   j                  |«       y y r‡   )rZ  r½   r¸   s     r4   r½   zCArgDeclNode.annotate6  s    € Ø�<Š<Ø�L‰L×!Ñ! $Õ'ð r3   c                 óÌ  — | j                   }|�|j                  r|€y |xs | j                  |«      }|j                  |«       |j	                  |«       |r|j                  «       n|j                  | j                  «      }|j                  |›d|›d�«       |j                  |j                  «       | j                  «       |j                  |«       |j                  |«       y ©Nú = Ú;)rZ  rð   rB  r?  Úmake_owned_referencer�   Ú	result_asrl  rS   Úput_giverefÚgenerate_post_assignment_codeÚ
free_temps)rŽ   rX   Úoverloaded_assignmentÚcyfunc_struct_targetrZ  Útargetr�   s          r4   Úgenerate_assignment_codez%CArgDeclNode.generate_assignment_code:  s¾   € à—,‘,ˆØˆ?˜w×1Ò1Ð6JÐ6RØð &ÒP¨×)JÑ)JÈ4Ó)PˆØ×(Ñ(¨Ô.Ø×$Ñ$ TÔ*Ù%:�—‘Ô!À×@QÑ@QÐRV×R[ÑR[Ó@\ˆØ�
‰
¢ªÐ0Ô1Ø×Ñ˜Ÿ™Ó)¨4¯9©9Ô5Ø×-Ñ-¨dÔ3Ø×Ñ˜4Õ r3   )r   F©FN)r,   r-   r.   r«   rö   r¼  Úis_type_argÚ
is_genericÚis_special_method_optionalÚkw_onlyÚpos_onlyrß  rà  rl  r÷  rí  r  Ú
is_dynamicÚdefaults_class_keyr<  rT  Úpropertyr"  r'  rq  r2  rB  r½   rP  r2   r3   r4   r  r  ›  s·   „ ò, G€KØ˜lÐ+€Kà€KØ€KØ€JØ!&ÐØ€GØ€HØ€HØ€GØ€DØ€OØ€MØ€JØ€JØÐØ Ðò/ð ñ/ó ð/ð ñHó ðHó0Jòd#òJ"ò(ð DIØ6:ô!r3   r  c                   ó   — e Zd Zd„ Zy)ÚCBaseTypeNodec                 ó$   — | j                  |«      S r‡   )rq  r    s     r4   r�  zCBaseTypeNode.analyse_as_typeS  s   € Ø�|‰|˜CÓ Ð r3   N)r,   r-   r.   r�  r2   r3   r4   r[  r[  K  s   „ ó!r3   r[  c                   ó   — e Zd Zg Zdd„Zy)r8  c                 ó   — | j                   S r‡   ©rl  )rŽ   r¡   r)  s      r4   rq  zCAnalysedBaseTypeNode.analyse\  r]  r3   N©Fr­  r2   r3   r4   r8  r8  W  s   „ ð €Kôr3   r8  c                   ó,   — e Zd Zg ZdZg ZdZdZdZdd„Z	y)ÚCSimpleBaseTypeNodeNFc                 ó–  — d }| j                   rPt        j                  | j                  | j                  | j
                  «      }|�s t        | j                  d«       �nˆ| j
                  dk(  r| j                  st        }�ne| j
                  €.| j                  r|j                  r|j                  }�n3t        }�n+|}| j                  �r| j                  D ]x  }|j                  |«      }|�E|j                  s"|j                  r-|j                   j                  r|j                   j"                  }Œ[|r|j$                  r|j$                  }Œvd } n |€\t'        | j                  «      dk(  rDddlm} |j                  | j                  d   «      }|r|j,                  r ||j,                  «      }|€&|j/                  | j                  | j                  «      }|�r|j                  r|j1                  «       }|j3                  | j
                  «      }|�nÒ|rF| j                  r|j                  r|j                  }nt        }t5        | j
                  «      | _        nŠ| j8                  r[| j
                  | j8                  vr#t        | j                  d| j
                  z  «       t        j:                  | j
                  «      }n#t        | j                  d| j
                  z  «       |r3|j<                  r'|j>                  r|jA                  |j>                  «      }| jB                  rU|jD                  r|jF                  rt        | j                  d«       t        jH                  |«      }|jK                  |«       n:|t(        jL                  u r(t        jN                  }|jK                  |«       d| _!        |st        jP                  }|S )	Nz&Unrecognised type modifier combinationÚobjectr   )Ú'get_known_standard_library_module_scoper   z'%s' is not a type identifierz#can only complexify c numeric typesT))r-  r
   Úsimple_c_typeÚsignedÚlongnessrm   r   r9   Úmodule_pathr   r¼  rÙ  rÝ  Úlookupr˜  Úis_typerl  r  Ú	as_modulerK   r   re  Úknown_standard_library_importÚfind_imported_moduler  Úlookup_typer   r*  r´  r¶  ri  rj  rk  ÚcomplexÚ
is_numericÚ
is_complexÚCComplexTypeÚcreate_declaration_utility_codeÚcomplex_typeÚc_double_complex_typer   )	rŽ   r¡   r)  rl  r  rÍ   r  re  Úfound_entrys	            r4   rq  zCSimpleBaseTypeNode.analyseq  sâ  € ð ˆØ×ÒÜ×+Ñ+¨D¯K©K¸¿¹ÈÏ	É	ÓRˆDÚÜ�d—h‘hÐ HÖIØ�Y‰Y˜(Ò"¨4×+;Ò+;Ü!ŠDØ�Y‰YÐØ×Ò C×$8Ò$8à—‘’ô &’àˆEØ×Óà ×,Ô,�DØ!ŸL™L¨Ó.�EØÐ(Ø×*Ò*ØŸš¨%¯*©*×*AÒ*Aà %§
¡
× 0Ñ 0™Ù 5§?¢?Ø %§¡™à $˜Ùð -ð �=¤S¨×)9Ñ)9Ó%:¸aÒ%?õ QØ"%§*¡*¨T×-=Ñ-=¸aÑ-@Ó"A�KÙ" {×'PÒ'PÙ GÈ×HqÑHqÓ r˜Ø�=à×4Ñ4°T×5EÑ5EÀtÇxÁxÓP�EâØ×)Ò)Ø!×.Ñ.Ó0�Eà×(Ñ(¨¯©Ó3�ØÐ#ØÙ"Ø×'Ò'¨C×,@Ò,@Ø"Ÿ™™ô  .˜Ü$1°$·)±)Ó$<�D•Mà—~’~ØŸ9™9¨D¯N©NÑ:Ü! $§(¡(Ð,KÈdÏiÉiÑ,WÔXÜ)×AÑAÀ$Ç)Á)ÓL™ä˜dŸh™hÐ(GÈ$Ï)É)Ñ(SÔTÙ�D—M’M c×&;Ò&;Ø—?‘? 3×#8Ñ#8Ó9ˆDØ�<Š<Ø—?’? d§o¢oÜ�d—h‘hÐ EÔFÜ×*Ñ*¨4Ó0ˆDØ×0Ñ0°Õ5Ø”W×)Ñ)Ñ)ô
 ×3Ñ3ˆDØ×0Ñ0°Ô5ØˆDŒLÙÜ×(Ñ(ˆDØˆr3   r`  )
r,   r-   r.   r«   r*  ri  r-  rp  r¼  rq  r2   r3   r4   rb  rb  `  s(   „ ð €KØ€HØ€KØ€OØ€GØ€KôTr3   rb  c                   ó&   — e Zd ZdZddgZdd„Zd„ Zy)ÚMemoryViewSliceTypeNodeÚ
memoryviewÚbase_type_nodeÚaxesc                 óp  — | j                   j                  |«      }|j                  r|S ddlm} 	 |j                  || j                  «      }|j                  | j                  |«      st         | _        | j                  S t        j"                  ||«      | _        | j                  j%                  | j                  «       | j'                  |«       | j                  S # t        $ rO}t        |j                  |j                  «       t        j                  «       | _        | j                  cY d }~S d }~ww xY w©Nr   ©Ú
MemoryView)r{  rq  rä  rØ   r€  Úget_axes_specsr|  r   r   ÚpositionÚmessage_onlyr
   Ú	ErrorTyperl  Úvalidate_axesr9   r   ÚMemoryViewSliceTypeÚvalidate_memslice_dtypeÚuse_memview_utilities)rŽ   r¡   r)  rm  r€  Ú
axes_specsÚes          r4   rq  zMemoryViewSliceTypeNode.analyseÌ  sï   € à×'Ñ'×/Ñ/°Ó4ˆ	Ø×Ò iÐ/å ð	Ø#×2Ñ2°3¸¿	¹	ÓBˆJð ×'Ñ'¨¯©°*Ô=Ü"ˆDŒIð �y‰yÐô	 #×6Ñ6°yÀ*ÓMˆDŒIØ�I‰I×-Ñ-¨d¯h©hÔ7Ø×&Ñ& sÔ+à�y‰yÐøô ò 	Ü�!—*‘*˜aŸn™nÔ-Ü"×,Ñ,Ó.ˆDŒIØ—9‘9Õûð	ús   ±C Ã	D5Ã&AD0Ä*D5Ä0D5c                 óx   — ddl m} |j                  |j                  |j                  j
                  «      «       y r~  )rØ   r€  Úuse_utility_codeÚget_view_utility_codeÚcontextÚshared_utility_qualified_name)rŽ   r¡   r€  s      r4   rˆ  z-MemoryViewSliceTypeNode.use_memview_utilitiesã  s.   € Ý Ø×ÑØ×,Ñ,Ø—‘×9Ñ9óõ	
r3   Nr`  )r,   r-   r.   rm   r«   rq  rˆ  r2   r3   r4   ry  ry  Ç  s   „ à€DØ# VÐ,€Kóó.
r3   ry  c                   ó   — e Zd ZdgZdd„Zy)ÚCNestedBaseTypeNoderm  Nc                 óÒ  — | j                   j                  |«      }|t        j                  u rt        j                  S |j                  s)t        | j                  d|z  «       t        j                  S |j                  j                  | j                  «      }|r|j                  s7t        | j                  d|›d| j                  ›d�«       t        j                  S |j                  S )Nz'%s' is not a valid type scopeÚ'rH   z' is not a type identifier)rm  rq  r
   r   r˜  r   r9   r  Úlookup_hererm   rk  rl  )rŽ   r¡   r)  rm  Ú
type_entrys        r4   rq  zCNestedBaseTypeNode.analyseô  s©   € Ø—N‘N×*Ñ*¨3Ó/ˆ	Øœ
×-Ñ-Ñ-Ü×(Ñ(Ð(Ø×%Ò%Ü�$—(‘(Ð<¸yÑHÔIÜ×(Ñ(Ð(Ø—_‘_×0Ñ0°·±Ó;ˆ
Ù ×!3Ò!3Ü�$—(’(Â)ÈTÏYËYÐWÔXÜ×(Ñ(Ð(Ø�‰Ðr3   r‡   r­  r2   r3   r4   r‘  r‘  ì  s   „ ð �-€Kôr3   r‘  c                   ó4   — e Zd Zg d¢ZdZdZdZd„ Zdd„Zd„ Z	y)r0  )r{  Úpositional_argsÚkeyword_argsÚ
dtype_nodeTNc                 óR  — |j                   dk(  }|j                  xr | }g }| j                  D ]‡  }|j                  rŒ|j	                  |xs t        |t        «      «      5  |j                  |«      }d d d «       €(|j                  rt        |j                  d«       t        }|j                  |«       Œ‰ |j                   rA|j                   dk(  r!t        d„ | j                  D «       «      |_        |j                  «       }nd}t!        |«      D ]„  \  }	}|€Œ	|r|j"                  r|sŒ|j%                  «       rŒ+|j&                  r j)                  «       s|j&                  ||	<   ŒWt        j                  |j                   ›d|›�«       t        ||	<   Œ† |S # 1 sw Y   �Œ*xY w)Nzdataclasses.ClassVarz!unknown type in template argumentztyping.Unionc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr‡   )rî   )r>  r°   s     r4   r?  z<TemplatedTypeNode._analyse_template_types.<locals>.<genexpr>'  s   è ø€ Ð-VÑAU¸A¨a¯i­iÑAUùó   ‚Fz [...] cannot be applied to type )r›  Úin_c_type_contextr—  rî   Únew_c_type_contextrL   r[  r�  r˜  r   r9   r   rµ  ÚanyÚcontains_noneÚallows_nonerØ  r~  r:  r;  Úas_cython_attribute)
rŽ   r¡   rm  Úrequire_python_typesr�  Útemplate_typesr·  ÚttypeÚrequire_optional_typesrõ  s
             r4   Ú_analyse_template_typesz)TemplatedTypeNode._analyse_template_types  s�  € Ø(×EÑEÐI_Ñ_Ðà×1Ñ1ÒNÐ:NÐ6NÐàˆØ!×1Ô1ˆMØ×$Ò$Øà×'Ñ'Ð(9Ò(e¼ZÈÔWdÓ=eÕfØ%×5Ñ5°cÓ:�÷ gàˆ}Ø×)Ò)Ü˜-×+Ñ+Ð-PÔQÜ&�Eà×!Ñ! %Õ(ð 2ð ×1Ò1Ø×5Ñ5¸ÒGÜ*-Ñ-VÀ×AUÒAUÓ-VÓ*V�	Ô'Ø%.×%:Ñ%:Ó%<Ñ"à%*Ð"ä! .Ö1‰HˆAˆuØˆ}ØÙ#¨E×,=Ò,=ÒAWÐ`e×`uÑ`uÕ`wØ×(Ò(°×1RÑ1RÔ1TØ(-×(=Ñ(=�N 1Ò%ä˜-×+Ñ+Ø!×>Ó>Ùð.ô ô )3�N 1Ò%ð 2ð Ð÷= gÑfús   Á"FÆF&	c                 ót  — |€| j                   j                  |«      }|j                  r|S |j                  r|j	                  «       s|j
                  r¢| j                  r`| j                  j                  rJ|j                  rdnd}t        | j                  d|z  «       t        j                  | _        | j                  S | j                  ||«      }|j                  | j                  ||«      | _        �n–|j                  r¹ddlm} |j%                  | j                  || j&                  | j                  |j(                  «      }t        j*                  |fi |¤Ž| _        t-        |«      �r t/        | j                  «      �r
t        j0                  t3        | j                  «      | j                  «      | _        nÑt5        | j                  dd ¬«      }t7        | j&                  «      dkD  s| j                  j                  r,t        | j                  d«       t        j                  | _        n_| j&                  sd }	n| j&                  d	   }	t9        | j                  ||	¬
«      | _        | j:                  j                  ||«      d   | _        | j                  rY| j                  j<                  rC|j>                  r7	 | j                  jA                  |j>                  «      | _        | j                  S | j                  S # tB        $ r1 t        | j                  d| jD                  z  «       Y | j                  S w xY w)Nzc++ templateszindexed typesz %s cannot take keyword argumentsr   ©ÚBufferrØ   ©rm   rÛ  zinvalid array declarationr   )ru  r“  rc  )#r{  rq  rä  r˜  r™  r›  r˜  Úkey_value_pairsr   r9   r
   r   rl  r§  rŸ  r~  rØ   rª  Úanalyse_buffer_optionsr—  Úbuffer_defaultsÚ
BufferTyper"   r$   ÚPythranExprr#   rY  rK   r’  r1  ri  rj  rk  r   rm   )
rŽ   r¡   r)  rm  Útpr¤  rª  ÚoptionsÚempty_declaratorr“  s
             r4   rq  zTemplatedTypeNode.analyse<  s�  € ØÐØ×+Ñ+×3Ñ3°CÓ8ˆIØ×Ò iÐ/à×#Ò#¨	×(BÑ(BÔ(DØ×6Ò6à× Ò  T×%6Ñ%6×%FÒ%FØ(1×(>Ò(>‘_ÀO�Ü�d—h‘hÐ BÀRÑ GÔHÜ&×1Ñ1�”	Ø—y‘yÐ à!×9Ñ9¸#¸yÓIˆNØ!×1Ñ1°$·(±(¸CÀÓPˆDŽIà×"Ò"å à×3Ñ3Ø—‘ØØ×$Ñ$Ø×!Ñ!Ø×)Ñ)ó+ˆGô #×-Ñ-¨iÑC¸7ÑCˆDŒIÜ˜cÕ"Ô'8¸¿¹Õ'CÜ&×2Ñ2´<ÀÇ	Á	Ó3JÈDÏIÉIÓV�•	ô  3°4·8±8À"ÈDÔQÐÜ�4×'Ñ'Ó(¨1Ò,°×0AÑ0A×0QÒ0QÜ�d—h‘hÐ ;Ô<Ü&×1Ñ1�•	ð ×+Ò+Ø $‘Ià $× 4Ñ 4°QÑ 7�IÜ(<Ø—H‘HØ)Ø'ô))�Ô%ð !×1Ñ1×9Ñ9¸)ÀSÓIÈ!ÑL�”	à�9Š9˜Ÿ™×+Ò+°×0EÒ0Eð!Ø ŸI™I×0Ñ0°×1FÑ1FÓG�”	ð �y‰yÐˆt�y‰yÐøô $ò !Ü�d—h‘hØjØ—i‘iñ õ!ð �y‰yÐð!ús   Ê;*K= Ë=,L7Ì6L7c                 óŠ  — g }| }|j                   r²|j                  r¦t        |j                  «      dk(  rŽ| j                  j	                  |«      }|j
                  r'|j                  r|j                  |j                  «       |j                  d   }|j                   r%|j                  rt        |j                  «      dk(  rŒŽ|S ©Nr   r   )rô   r{  rK   r—  r�  r›  Úmodifier_namerµ  )rŽ   r¡   r=  Úmodifier_nodeÚmodifier_types        r4   Úanalyse_pytyping_modifiersz,TemplatedTypeNode.analyse_pytyping_modifiersy  s¯   € ð ˆ	ØˆØ×2Ò2°}×7SÒ7SÔX[Ð\i×\yÑ\yÓXzÐ~ÒXØ ×/Ñ/×?Ñ?ÀÓDˆMØ×9Ò9¸m×>YÒ>YØ× Ñ  ×!<Ñ!<Ô=Ø)×9Ñ9¸!Ñ<ˆMð	 ×2Ò2°}×7SÒ7SÔX[Ð\i×\yÑ\yÓXzÐ~ÓXð Ðr3   rQ  )
r,   r-   r.   r«   rô   r™  rm   r§  rq  r¹  r2   r3   r4   r0  r0    s,   „ ò1€Kð "ÐØ€JØ€Dò(óT;ózr3   r0  c                   ó   — e Zd ZddgZdd„Zy)ÚCComplexBaseTypeNoderm  r  c                 ó|   — | j                   j                  ||«      }| j                  j                  ||«      \  }}|S r‡   )rm  rq  r  )rŽ   r¡   r)  ru  Ú_rl  s         r4   rq  zCComplexBaseTypeNode.analyse�  s7   € Ø�~‰~×%Ñ% c¨=Ó9ˆØ—/‘/×)Ñ)¨$°Ó4‰ˆˆ4Øˆr3   Nr`  r­  r2   r3   r4   r»  r»  ‡  s   „ ð  Ð-€Kôr3   r»  c                   ó   — e Zd ZdgZdd„Zy)ÚCTupleBaseTypeNodeÚ
componentsc                 ó  — g }| j                   D ]N  }|j                  |«      }|j                  rt        |j                  d«       t
        c S |j                  |«       ŒP |j                  | j                  |«      }d|_        |j                  S )Nz/Tuple types can't (yet) contain Python objects.T)
rÀ  rq  r~  r   r9   r   rµ  Údeclare_tuple_typer  rl  )rŽ   r¡   r)  Úcomponent_typesrÅ   rl  r  s          r4   rq  zCTupleBaseTypeNode.analyse˜  sw   € ØˆØ—”ˆAØ—9‘9˜S“>ˆDØ×ÒÜ�a—e‘eÐNÔOÜ!Ò!Ø×"Ñ" 4Õ(ð !ð ×&Ñ& t§x¡x°ÓAˆØˆŒ
Ø�z‰zÐr3   Nr`  r­  r2   r3   r4   r¿  r¿  “  s   „ ð  �.€Kô
r3   r¿  c                   ó"   — e Zd ZdZg Zd„ Zdd„Zy)ÚFusedTypeNodea  
    Represents a fused type in a ctypedef statement:

        ctypedef cython.fused_type(int, long, long long) integral

    name            str                     name of this fused type
    types           [CSimpleBaseTypeNode]   is the list of types to be fused
    c                 ó‚   — | j                  |«      }|j                  | j                  || j                  «      }d|_        y )NT)rq  Údeclare_typedefrm   r9   r@  )rŽ   r¡   rl  r  s       r4   r³   z"FusedTypeNode.analyse_declarations±  s6   € Ø�|‰|˜CÓ ˆØ×#Ñ# D§I¡I¨t°T·X±XÓ>ˆð !ˆÕr3   c                 ó  — g }| j                   D ]X  }|j                  |«      }|st        |j                  d«       Œ-||v rt        |j                  d«       ŒH|j	                  |«       ŒZ t        j                  || j                  ¬«      S )Nr½  zType specified multiple timesr\  )rf   r�  r   r9   rµ  r
   Ú	FusedTyperm   )rŽ   r¡   r)  rf   rø  rl  s         r4   rq  zFusedTypeNode.analyse¸  st   € ØˆØŸœˆIØ×,Ñ,¨SÓ1ˆDáÜ�i—m‘m \Ô2Øà�u‰}Ü�i—m‘mÐ%DÕEà—‘˜TÕ"ð $ô ×#Ñ# E°·	±	Ô:Ð:r3   Nr`  )r,   r-   r.   r‚   r«   r³   rq  r2   r3   r4   rÅ  rÅ  ¥  s   „ ñð €Kò!ô;r3   rÅ  c                   ó   — e Zd ZdgZdd„Zy)ÚCConstOrVolatileTypeNoderm  c                 óÔ   — | j                   j                  ||«      }|j                  rt        | j                  d«       t        j                  || j                  | j                  «      S )Nz2Const/volatile base type cannot be a Python object)	rm  rq  r~  r   r9   r
   Úc_const_or_volatile_typer¢  Úis_volatile)rŽ   r¡   r)  ru  s       r4   rq  z CConstOrVolatileTypeNode.analyseÓ  sR   € Ø�~‰~×%Ñ% c¨=Ó9ˆØ×ÒÜ�$—(‘(ØFôHä×2Ñ2°4¸¿¹È×HXÑHXÓYÐYr3   Nr`  r­  r2   r3   r4   rË  rË  Ì  s   „ ð
 �-€KôZr3   rË  c                   ó$   — e Zd ZddgZdZdZdd„Zy)r=  rm  ÚdeclaratorsNc                 óâ
  — | j                   €i | _         |s|}|| _        | j                  r| j                  d   j                  «       }nd }|�µ| j                  dk7  rt        | j                  d«       t        | j                  «      dkD  r#t        | j                  d   j                  d«       t        d|«      }|j                  j                  |_
        |D ])  }|j                  |j                  || j                  «       Œ+ | j                  j                  |«      }d }| j                  j                  r| j                  j!                  |«      }|j"                  r@| j$                  s4|j&                  s|j(                  rt        | j                  d«       t*        S d | _        | j                  }| j                  D �]±  }t        | j                  «      dkD  r6t/        |t0        «      s&|j                  d   rt3        |j                  d	d«       | j4                  xr | j                  dk(  xr |j(                  }	|	rd
|_        t/        |t6        «      r.|j                  ||| j                   || j$                  ¬«      \  }
}n"|j                  |||| j$                  ¬«      \  }
}|j9                  «       s@| j                  dk(  r|j:                  s%|j<                  st        |j                  d|z  «       | j                  dk(  r"|j>                  rt        |j                  d«       |
j                  }|
j@                  }|dk(  rt        |j                  d«        y |jB                  r%| j                  dk7  rt        |j                  d«       |jD                  r%| j                  dk7  rt        |j                  d«       |jF                  ræd|j                  v rd|_$        |jK                  |||j                  || j                  | j$                  | jL                  | jN                  | j4                  ¬«	      | _        | j,                  �.tQ        jP                  | j                   «      | j,                  _         |	s�Œ¸| j,                  jR                  jU                  |«       d| j,                  _+        �Œð| j4                  rt        | j                  d«       | j                   rt        | j                  d«       |jY                  |||j                  ||| j$                  | jL                  d|¬«	      | _        tZ        j\                  s�Œƒt_        | j                  | j`                  «      | j,                  _0        �Œ´ y )Nr   r—  zOnly extern functions allowedr   z%Can't multiply declare template typesÚfunc_templatezFused types not allowed herezwarn.multiple_declaratorsz‰Non-trivial type declarators in shared declaration (e.g. mix of pointers and values). Each pointer declaration should be on its own line.F)ró  ro  rp  r×  z Variable type '%s' is incompletez'Python object cannot be declared externrØ   zMissing name in declaration.z8C++ references cannot be declared; use a pointer insteadz(C++ rvalue-references cannot be declaredr2  T)rÛ  ro  rp  Úapir=  rð  z>Variables cannot be declared with 'cpdef'. Use 'cdef' instead.z,Decorators can only be followed by functions)rÛ  ro  rp  rÓ  Úis_cdefÚpytyping_modifiers)1ró  Ú
dest_scoperÐ  rV  ro  r   r9   rK   r   Úouter_scoperÿ   Údeclare_typerm   rm  rq  rô   r¹  ri  rp  rÙ  Úis_module_scoper   r  rL   rY  r   rð  r¯  r§  re  Úis_memoryviewslicer~  rÛ  Úis_referencerñ  rš  Úis_static_methodÚdeclare_cfunctionrÓ  r=  r   rl  Úcreate_to_py_utility_codeÚcreate_wrapperr  r    Ú
docstringsrD   rC   )rŽ   r¡   rÖ  r´  Útemplate_paramrm  r=  ro  r  Úcreate_extern_wrapperr÷  rl  rm   rÛ  s                 r4   r³   z CVarDefNode.analyse_declarationsî  sl  € Ø× Ñ Ð(Ø$&ˆDÔ!ÙØˆJØ$ˆŒà×ÒØ×(Ñ(¨Ñ+×=Ñ=Ó?‰IàˆIØÐ Ø�‰ (Ò*Ü�d—h‘hÐ ?Ô@Ü�4×#Ñ#Ó$ qÒ(Ü�d×&Ñ& qÑ)×-Ñ-Ð/VÔWÜ °Ó5ˆCØ Ÿ_™_×7Ñ7ˆCŒNÛ"+�Ø× Ñ  ×!4Ñ!4°nÀdÇhÁhÕOð #,ð —N‘N×*Ñ*¨3Ó/ˆ	ð ˆ	Ø�>‰>×0Ò0ØŸ™×AÑAÀ#ÓFˆIà×Ò d§k¢k°s×7KÒ7KØ7:×7JÒ7JÜ�$—(‘(Ð:Ô;ÜÐàˆŒ
Ø—_‘_ˆ
à×*Õ*ˆJä�D×$Ñ$Ó%¨Ò)Ü& zÔ3FÔGØŸ™Ð'BÒCÜØ—N‘NðJØKLôNð
 &*×%5Ñ%5ò &=Ø)-¯©¸HÑ)Dò&=à),×)<Ñ)<ð "ñ %Ø).�
Ô&Ü˜*Ô&9Ô:Ø(2×(:Ñ(:Ø˜s°T×5JÑ5JÐWaÐjn×juÑjuð );ó )wÑ%�¡ð )3×(:Ñ(:Ø˜s¨zÀ$Ç+Á+ð );ó )OÑ%� à×#Ñ#Ô%ØŸ™¨8Ò3¸¿ºÈ×I`ÒI`Ü˜*Ÿ.™.Ð*LÈtÑ*SÔTØ�‰ (Ò*¨t×/?Ò/?Ü�j—n‘nÐ&OÔPØ"×'Ñ'ˆDØ#×)Ñ)ˆEØ�rŠzÜ�j—n‘nÐ&DÔEÙØ× Ò  T§_¡_¸Ò%@Ü�j—n‘nÐ&`ÔaØ×'Ò'¨D¯O©O¸xÒ,GÜ�j—n‘nÐ&PÔQØ× Ò Ø! S§^¡^Ñ3Ø,0�DÔ)Ø'×9Ñ9Ø˜$ 
§¡Ø¨D¯O©OÀDÇKÁKØŸ™¨D¯N©NÈ×HXÑHXð :ó Z�”
ð —:‘:Ð)Ü26·)±)¸D×<QÑ<QÓ2R�D—J‘JÔ/Û(Ø—J‘J—O‘O×=Ñ=¸cÔBØ04�D—J‘JÖ-à×#Ò#Ü˜$Ÿ(™(Ð$dÔeØ×(Ò(Ü˜$Ÿ(™(Ð$RÔSØ'×3Ñ3Ø˜$ 
§¡Ø¨J¸t¿{¹{ØŸ™¨$À9ð 4ó N�”
ô ×%Ô%Ü%3°D·H±H¸d¿h¹hÓ%G�D—J‘J–Nñs +r3   r‡   )r,   r-   r.   r«   Ú
decoratorsró  r³   r2   r3   r4   r=  r=  Û  s    „ ð  Ð.€Kà€JØÐô]Hr3   r=  c                   ó,   — e Zd ZdgZdd„Zd„ Zd„ Zd„ Zy)ÚCStructOrUnionDefNodeÚ
attributesNc                 óâ   — |j                  | j                  | j                  || j                  | j                  | j
                  | j                  | j                  | j                  ¬«	      | _	        y )N)ro  rÓ  Úpacked)
r  rm   r  r  r9   rÛ  ro  rÓ  rè  r  ©rŽ   r¡   r  s      r4   ÚdeclarezCStructOrUnionDefNode.declare\  sP   € Ø×0Ñ0Ø�I‰I�t—y‘y %¨×):Ñ):¸D¿H¹HØ�J‰J 4§?¡?¸¿¹Ø—;‘;ð 1ó  ˆ�
r3   c                 ó$  — d }| j                   �t        | j                  «      }| j                  ||«       | j                   �Ï| j                  r|j
                  sd| j                  _        | j                   D ]  }|j                  ||«       Œ | j                  dk7  rs|j                  D ]c  }|j                  }|j                  r|j                  }|j                  rŒ|| j                  j                  k(  sŒNt        |j                  d«       Œe y y y )Nr   r—  z)Struct cannot contain itself as a member.)ræ  r   rm   rê  rp  r@  r  r  r³   ro  Úvar_entriesrl  re  rm  r   r9   )rŽ   r¡   r  rÃ   rl  s        r4   r³   z*CStructOrUnionDefNode.analyse_declarationsb  sÕ   € ØˆØ�?‰?Ð&Ü& t§y¡yÓ1ˆEØ�‰�S˜%Ô Ø�?‰?Ð&Ø�{Š{ 3§?¢?Ø,-�—
‘
Ô)ØŸœ�Ø×)Ñ)¨#¨uÕ5ð (à�‰ (Ò*Ø!×-Ô-�DØŸ9™9�DØŸ-š-Ø#Ÿ~™~˜ð Ÿ-›-à˜tŸz™zŸ™Ó.Ü˜dŸh™hÐ(SÕTñ .ð +ð 'r3   c                 ó   — | S r‡   r2   r    s     r4   rw   z)CStructOrUnionDefNode.analyse_expressionst  ó   € Øˆr3   c                  ó   — y r‡   r2   r¸   s     r4   r  z-CStructOrUnionDefNode.generate_execution_codew  r´   r3   r‡   )r,   r-   r.   r«   rê  r³   rw   r  r2   r3   r4   rå  rå  N  s    „ ð  �.€Kó òUò$ór3   rå  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)ÚCppClassNodeNc           	      óÆ  — | j                   €d }n‡| j                   D ��cg c]  \  }}t        j                  || «      ‘Œ }}}t        d„ | j                   D «       «      }|r6t	        d„ | j                   d |  D «       «      st        | j                  d«       |j                  | j                  d | j                  | j                  g | j                  |¬«      | _        y c c}}w )Nc              3   ó(   K  — | ]
  \  }}| –— Œ y ­wr‡   r2   ©r>  r½  Úrequireds      r4   r?  z'CppClassNode.declare.<locals>.<genexpr>�  s   è ø€ Ð(XÉ¹+¸!¸X¨X¬Éùs   ‚c              3   ó&   K  — | ]	  \  }}|–— Œ y ­wr‡   r2   rô  s      r4   r?  z'CppClassNode.declare.<locals>.<genexpr>�  s   è ø€ Ð1wÑNv¹{¸qÀ(´(ÑNvùó   ‚zGRequired template parameters must precede optional template parameters.)Úbase_classesro  r´  )r´  r
   r¶  ÚsumrC  r   r9   Údeclare_cpp_classrm   rÛ  ro  r  )rŽ   r¡   r¤  Útemplate_namerõ  Únum_optional_templatess         r4   rê  zCppClassNode.declare‰  sÒ   € Ø�>‰>Ð!Ø!‰Nð >B¿^º^ôMÙ=KÑ"9 -°ô )×@Ñ@ÀÐT\ÐP\Õ]Ø=Kð ñ Mä%(Ñ(XÈÏÊÓ(XÓ%XÐ"Ù%¬cÑ1wÈdÏnÉnÐ]uÐ_uÐ^uÑNvÓ1wÔ.wÜ�d—h‘hÐ iÔjØ×*Ñ*Ø�I‰I�t˜TŸX™X t§z¡zØ¨¯©À>ð +ó Sˆ�
ùóMs   Ÿ!Cc           
      óà  ‡ ‡— |j                  «       st        ‰ j                  dd¬«       ‰ j                  €d x}}nQ‰ j                  D ��cg c]  \  }}|‘Œ	 }}}‰ j                  D ��cg c]  \  }}t	        j
                  || «      ‘Œ }}}d }‰ j                  �t        ‰ j                  ||¬«      }ˆ fd„}t        |‰ j                  D �	cg c]  }	|	j                  |xs |«      ‘Œ c}	«      }
|j                  ‰ j                  |‰ j                  ‰ j                  |
‰ j                  |¬«      ‰ _        ‰ j                  €y d‰ j                  _        |�‰ j                  j"                  |_        g }ˆfd„Š‰ j                  �¹‰ j$                  r|j&                  sd‰ j                  _        ‰ j                  D ]3  }t+        |dd «      }|r|j-                  |«       |j/                  |«       Œ5  ‰‰ j                  «      D ]9  }|j1                  |«       ‰ j                  €Œ!d	d
j3                  |«      z  |_        Œ; t7        ‰ j                  |¬«      ‰ _        |‰ _        y c c}}w c c}}w c c}	w )Nz0Using 'cppclass' while Cython is not in c++ moder   rÁ  )r´  c                 ój   •— | j                   s| j                  ryt        ‰j                  d| z  «       y )NTz&Base class '%s' not a struct or class.)r˜  Ú	is_structr   r9   )Ú
base_classrŽ   s    €r4   Úbase_okz2CppClassNode.analyse_declarations.<locals>.base_ok¤  s+   ø€ Ø×&Ò&¨*×*>Ò*>Øä�d—h‘hÐ HÈ:Ñ UÕVr3   )ro  r´  c              3   ó(  •K  — | D ]„  }t        |t        «      r|–— Œt        |t        «      r% ‰|j                  j                  «      E d {  –—†  ŒMt        |t
        «      sŒ^|j                  €Œk ‰|j                  «      E d {  –—†  Œ† y 7 Œ@7 Œ	­wr‡   )rL   ÚCFuncDefNoderü   r¼   r!  rñ  ræ  )ræ  rÃ   Úfunc_attributess     €r4   r  z:CppClassNode.analyse_declarations.<locals>.func_attributes³  sp   øè ø€ Û"�Ü˜d¤LÔ1Ø“JÜ Ô&<Ô=Ù.¨t¯y©y¯©Ó?×?Ñ?Ü ¤lÕ3¸¿¹Ñ8SÙ.¨t¯©Ó?×?Ñ?ñ #ð @øà?ús0   ƒA
BÁBÁBÁ$BÁ1BÂBÂBÂBrê  ztemplate <typename %s>z, typename ©r!  )r¤   r   r9   r´  r
   r¶  ræ  r   rm   Úfilterrø  rq  rú  rÛ  ro  r  r˜  rl  rp  r@  r  r¬   rê  r³   rµ  rÊ   Útemplate_declarationr   r¼   r  )rŽ   r¡   r¤  Útemplate_namesrû  r½  rõ  r  r  ÚbÚbase_class_typesÚdefined_funcsrÃ   rê  r]   r  s   `              @r4   r³   z!CppClassNode.analyse_declarations–  s0  ù€ Ø�z‰zŒ|Ü�D—H‘HØFØõð �>‰>Ð!Ø.2Ð2ˆN™^àDHÇNÂNÔSÁNÑ0@°¸qšmÀNˆNÑSà=A¿^º^ôMÙ=KÑ"9 -°ô )×@Ñ@ÀÐT\ÐP\Õ]Ø=Kð ñ MàˆØ�?‰?Ð&Ü! $§)¡)¨S¸NÔKˆEô	Wô
 " 'ÈT×M^ÒM^Ó+_ÑM^È¨A¯I©I°e²l¸sÕ,CÐM^Ñ+_Ó`ÐØ×*Ñ*Ø�I‰I�u˜dŸh™hØ�J‰JÐ(°T·_±_ÐP^ð +ó `ˆŒ
ð �:‰:ÐØØ"#ˆ�
‰
ÔØÐØŸ™Ÿ™ˆEŒJØˆô	@ð �?‰?Ð&Ø�{Š{ 3§?¢?Ø,-�—
‘
Ô)ØŸœ�Ü! $¨	°4Ó8�ÙØ—L‘L Ô'Ø×)Ñ)¨%Õ0ð	 (ñ
 (¨¯©Ö8�Ø×$Ñ$ TÔ*Ø—>‘>Ñ-Ø0HÈ=×K]ÑK]Ð^lÓKmÑ0m�DÕ-ð 9ô ! §¡°Ô?ˆŒ	Øˆ�
ùóU TùóMùò ,`s   ÁIÁ)!I%ÃI+
c                 ó‚   — | j                   j                  | j                  j                  j                  «      | _         | S r‡   )r¼   rw   r  rl  r  r    s     r4   rw   z CppClassNode.analyse_expressionsÊ  s+   € Ø—I‘I×1Ñ1°$·*±*·/±/×2GÑ2GÓHˆŒ	Øˆr3   c                 óx   — | j                   j                  | j                  j                  j                  |«       y r‡   )r¼   r  r  rl  r  r6  s      r4   r  z*CppClassNode.generate_function_definitionsÎ  s$   € Ø�	‰	×/Ñ/°·
±
·±×0EÑ0EÀtÕLr3   c                 ó:   — | j                   j                  |«       y r‡   ©r¼   r  r¸   s     r4   r  z$CppClassNode.generate_execution_codeÑ  ó   € Ø�	‰	×)Ñ)¨$Õ/r3   c                 ó:   — | j                   j                  |«       y r‡   rN  r¸   s     r4   r½   zCppClassNode.annotateÔ  rO  r3   )
r,   r-   r.   rã  rê  r³   rw   r  r  r½   r2   r3   r4   rñ  rñ  {  s*   „ ð €JòSò2òhòMò0ó!r3   rñ  c                   ó0   — e Zd ZddgZdZd„ Zd„ Zd„ Zd„ Zy)ÚCEnumDefNoderi   Úunderlying_typeNc                 óF  — d }t         j                  r t        | j                  | j                  «      }|j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  |¬«	      | _        y )N)rÛ  Úscopedr  ro  rÓ  rß  rC   )r    rà  rD   r9   rC   Údeclare_enumrm   rÛ  r  r  ro  rÓ  rß  r  )rŽ   r¡   rC   s      r4   rê  zCEnumDefNode.declareé  sw   € ØˆÜ×ÒÜ  §¡¨4¯8©8Ó4ˆCà×%Ñ%Ø�I‰I�t—x‘xØ—*‘*Ø—;‘;Ø×*Ñ*Ø—‘¨D¯H©HØ×.Ñ.°Cð &ó 9ˆ�
r3   c                 óà  — d }| j                   j                  |«      }|j                  s t        | j                   j                  d«       || j
                  j                  _         | j                  rO| j                  �Ct        | j                  |«      }| j
                  j                  |_        |j                  |_        n|}| j                  �¡| j                  r|j                  sd| j
                  _        | j                  dk7  }|rdnd }| j                  D ]S  }|j!                  || j
                  |«       |sŒ#d|j
                  j"                  �|j
                  j"                  n|z   }ŒU y y )Nz'underlying type is not an integral typer   r—  r   )r  rq  r¡  r   r9   r  rl  r  ri   r   rm   rÿ   rp  r@  r  ro  Úanalyse_enum_declarationsÚenum_int_value)rŽ   r¡   r  r  Úis_declared_enumÚnext_int_enum_valuerÍ   s          r4   r³   z!CEnumDefNode.analyse_declarationsö  s#  € ØˆØ×.Ñ.×6Ñ6°sÓ;ˆà×%Ò%Ü�$×&Ñ&×*Ñ*Ð,UÔVà*9ˆ�
‰
�‰Ô'à�;Š;˜4Ÿ:™:Ð1Ü& t§y¡y°#Ó6ˆEØŸ™Ÿ™ˆEŒJØ"Ÿ~™~ˆEÕàˆEà�:‰:Ð!Ø�{Š{ 3§?¢?Ø,-�—
‘
Ô)ð  $Ÿ™°(Ñ:Ðá'7¡!¸TÐØŸ
œ
�Ø×.Ñ.¨u°d·j±jÐBUÔVÚ#Ø*+Ø59·Z±Z×5NÑ5NÐ5Z˜Ÿ
™
×1Ò1Ð`sñ+uÑ'ñ #ð "r3   c                 ó   — | S r‡   r2   r    s     r4   rw   z CEnumDefNode.analyse_expressions  rî  r3   c                 ó6  — | j                   ry | j                  s| j                  s| j                  dk(  sy |j	                  | j
                  «       |j                  j                  t        j                  d¬«      }| j                  j                  D ]ê  }|j                  |›d|j                  ›d|j                  ||j
                  «      ›�«       |j                  |t        j                  «       |j                  d|j!                  t"        j$                  «      ›d|j                  j'                  «       ›d|›d|j)                  |j
                  «      ›�«       |j+                  |t        j                  «       Œì |j                  j-                  |«       y )	NÚpublicT©Ú
manage_refz = PyLong_FromLong(ú); zif (PyDict_SetItemString(rÈ   ú) < 0) )r  rÓ  rm   ro  r-  r9   Ú	funcstateÚallocate_tempr
   r   r  Úenum_valuesrS   rÛ  Úerror_goto_if_nullÚ
put_gotrefÚname_in_module_stater	   Úmoddict_cnamer!  Ú
error_gotoÚput_decref_clearÚrelease_temp)rŽ   rX   ÚtemprÍ   s       r4   r  z$CEnumDefNode.generate_execution_code  s(  € Ø�;Š;àØ�xŠx §¢¨d¯o©oÀÒ.Ið ð 	�‰�d—h‘hÔØ�~‰~×+Ñ+¬J×,EÑ,EÐRVÐ+ÓWˆØ—J‘J×*Ô*ˆDØ�J‰JÚØ—
“
Ø×'Ñ'¨¨d¯h©hÔ7ð9ô :ð �O‰O˜D¤*×";Ñ";Ô<Ø�JŠJØ×)Ñ)¬&×*>Ñ*>Õ?Ø—	‘	×-Ñ-Õ/ÚØ—‘ §¡Ô)ð	+ô ,ð
 ×!Ñ! $¬
×(AÑ(AÕBð +ð 	�‰×#Ñ# DÕ)r3   )	r,   r-   r.   r«   rC   rê  r³   rw   r  r2   r3   r4   r  r  Ø  s)   „ ð Ð-Ð.€KØ
€Cò9òuò>ó*r3   r  c                   ó   — e Zd ZdgZd„ Zy)ÚCEnumDefItemNoder¯   c                 ó´  — | j                   r�| j                   j                  |«      | _         | j                   j                  j                  sO| j                   j	                  t
        j                  |«      | _         | j                   j                  |«      | _         |j                  j                  r|j                  ›d| j                  ›�}n| j                  }|j                  | j                  |j                  | j                   | j                  ||j                  |j                  |j                  xr |j                  d u ¬«      x| _        }|}| j                   r›| j                   j                   r t#        | j                   j                   «      }ne| j                   j$                  s| j                   j&                  r7| j                   j                  r!| j                   j                  j(                  }nd }|�||_        |j*                  j-                  |«       |j                  r0|j                  j.                  j-                  |j                  «       y y )Nú::)rÛ  ro  rÓ  rß  )r¯   r   rl  r¡  rç  r
   r	  Úis_cpp_enumrÛ  rm   Údeclare_constr9   ro  rÓ  rß  r  rð   r'   rí   Úis_attributer  r&  rµ  r©  )rŽ   r¡   Ú
enum_entryÚincremental_int_valuerÛ  r  Ú
enum_values          r4   r  z*CEnumDefItemNode.analyse_enum_declarations:  sª  € Ø�:Š:ØŸ™×<Ñ<¸SÓAˆDŒJØ—:‘:—?‘?×)Ò)Ø!ŸZ™Z×1Ñ1´*×2GÑ2GÈÓM�”
Ø!ŸZ™Z×@Ñ@ÀÓE�”
à�?‰?×&Ò&Ø *× 0Ó 0°$·)²)Ð<‰Eà—J‘JˆEà ×.Ñ.Ø�I‰I�z—‘Ø�J‰J˜Ÿ™¨Ø!×,Ñ,°*·.±.Ø%×4Ñ4ÒP¸¿¹ÈDÐ9Pð	 /ó Rð 	RˆŒ
�Uð +ˆ
Ø�:Š:Ø�z‰z×$Ò$Ü*¨4¯:©:×+;Ñ+;Ó<‘
Ø—*‘*×$Ò$¨¯
©
×(?Ò(?ÀTÇZÁZ×EUÒEUØ!ŸZ™Z×-Ñ-×<Ñ<‘
ð "�
ØÐ!Ø#-ˆEÔ à×Ñ×%Ñ% eÔ,Ø�?Š?Ø�O‰O×"Ñ"×)Ñ)¨%¯*©*Õ5ð r3   N)r,   r-   r.   r«   r  r2   r3   r4   r0  r0  3  s   „ ð
 �)€Kó!6r3   r0  c                   ó&   — e Zd ZddgZd„ Zd„ Zd„ Zy)ÚCTypeDefNoderm  r  c                 ó¨  — | j                   j                  |«      }| j                  j                  ||| j                  | j                  ¬«      \  }}|j
                  }|j                  }|j                  ||| j                  || j                  | j                  ¬«      }|j                  rd|_        | j                  r|j                  sd|_        y y y )Nr×  )rÛ  ro  rÓ  Tr   )rm  rq  r  ro  rp  rm   rÛ  rÇ  r9   rÓ  ri  r@  r  )rŽ   r¡   ru  r÷  rl  rm   rÛ  r  s           r4   r³   z!CTypeDefNode.analyse_declarationsg  s¹   € Ø�~‰~×%Ñ% cÓ*ˆØ $§¡× 7Ñ 7Ø�# $§/¡/¸$¿+¹+ð !8ó !GÑˆ˜à×#Ñ#ˆØ×%Ñ%ˆà×#Ñ#Ø�$˜Ÿ™Ø D§O¡O¸¿¹ð $ó Cˆð �=Š=Ø $ˆEÔà�;Š;˜sŸšØ#$ˆEÕ ð  /ˆ;r3   c                 ó   — | S r‡   r2   r    s     r4   rw   z CTypeDefNode.analyse_expressionsx  rî  r3   c                  ó   — y r‡   r2   r¸   s     r4   r  z$CTypeDefNode.generate_execution_code{  r´   r3   N©r,   r-   r.   r«   r³   rw   r  r2   r3   r4   r:  r:  ^  s   „ ð  Ð-€Kò%ò"ór3   r:  c                   óÀ   — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZg ZdZdZdZdZdZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&y)ÚFuncDefNodeNFc                 ó  — d}| j                   D ]ï  }|j                  r¹d}|j                  rL|j                  j                  |«      |_        |j                  j	                  |j
                  |«      |_        Œi|j                  r5|j                  j                  rŒŒt        |j                  d«       d |_        Œªt        |j                  d«       d |_        ŒÈ|j                  rd}Œ×|sŒÚt        |j                  d«       Œñ y )Nr   r   z2This argument cannot have a non-None default valuez)This argument cannot have a default valuez/Non-default argument following default argument)rU   rZ  rS  rv   rç  rl  rT  rî   r   r9   rU  )rŽ   r¡   Údefault_seenrÿ  s       r4   Úanalyse_default_valuesz"FuncDefNode.analyse_default_values¨  sº   € ØˆØ—9”9ˆCØ�{Š{Ø �Ø—>’>Ø"%§+¡+×";Ñ";¸CÓ"@�C”KØ"%§+¡+×"7Ñ"7¸¿¹À#Ó"F�C•KØ×3Ò3ØŸ;™;×.Ó.Ü˜cŸg™gÐ'[Ô\Ø&*˜�ä˜#Ÿ'™'Ð#NÔOØ"&�C•KØ—’Ø ‘ÚÜ�c—g‘gÐPÕQñ! r3   c                 óÚ   — | j                   D ]/  }|j                  sŒ|j                  j                  |«      |_        Œ1 | j                  r!| j                  j                  |«      | _        y y r‡   )rU   r  rv   Úreturn_type_annotation©rŽ   r¡   rÿ  s      r4   Úanalyse_annotationszFuncDefNode.analyse_annotations¼  sW   € Ø—9”9ˆCØ�~‹~Ø!$§¡×!=Ñ!=¸cÓ!B�•ð ð ×&Ò&Ø*.×*EÑ*E×*SÑ*SÐTWÓ*XˆDÕ'ð 'r3   c                 óv  — | j                   }|j                  }|j                  |v r!||j                     }|j                  |«      }nNt	        |t
        «      r<|j                  r0|j                  d   r!|j                  }|j                  |«      }|€|S |S |€t        |j                  d«       |S |t        urI|j                  |«      s8t        |j                  j                  d«       t        |j                  d«       |S ||_        |j                  j                  r|j                  j                  |«       |S )Nr+  r½  r¾  r¿  )ró  rl  rm   r�  rL   r  r  rÿ   r2  r   r9   r   rÚ  rm  rr  rt  )rŽ   r¡   rÿ  ró  Ú	orig_typerø  rù  s          r4   Úalign_argument_typezFuncDefNode.align_argument_typeÃ  s  € à×0Ñ0ÐØ—H‘Hˆ	Ø�8‰8Ð'Ñ'Ø(¨¯©Ñ2ˆIØ"×2Ñ2°3Ó7‰JÜ˜œ\Ô*¨s¯~ª~À#Ç.Á.ÐQdÒBeØŸ™ˆIØ×9Ñ9¸#Ó>ˆJØÐ!Ø�
àˆJØÐÜ�)—-‘- Ô.ð ˆ
ð œnÑ,°Y×5FÑ5FÀzÔ5RÜ�#—-‘-×#Ñ#Ð%YÔZÜ�)—-‘-Ð!<Ô=ð ˆ
ð	 "ˆCŒHØ�x‰x×"Ò"à—‘×8Ñ8¸Ô=Øˆ
r3   c                  ó   — y©Nr   r2   ©rŽ   Úlenvs     r4   Úneed_gil_acquisitionz FuncDefNode.need_gil_acquisitionÝ  s   € Ør3   c                 ó�  — |}|j                   s|j                  r&|j                  }|j                   rŒ|j                  rŒ&| j                  rl| j                  rt
        nt        } || j                  j                  ||| j                  j                  ¬«      }| j                  s| j                  r*d|_        n"t        | j                  j                  ||¬«      }| j                  |_        | j                  j                  }|j                   r |j"                  xr |j$                   |_        || _        |j(                  |_        |S )N)rm   r×  Úparent_scopeÚ
scope_nameT)rm   r×  rQ  )Úis_py_class_scoperÙ  r×  Úneeds_closureÚis_generator_expressionr   r   r  rm   rÛ  Úis_generator_bodyÚis_generatorÚis_generator_scoper   rå  rl  rš  rÍ  rÎ  Úlocal_scoperÿ   )rŽ   r¡   Úgenvrl   rN  rl  s         r4   Úcreate_local_scopezFuncDefNode.create_local_scopeà  s  € ØˆØ×$Ò$¨×(=Ò(=Ø×#Ñ#ˆDð ×$Ó$¨×(=Ó(=à×ÒØ.2×.JÒ.JÕ*ÔP\ˆCÙ˜DŸJ™JŸO™OØ,0Ø-0Ø+/¯:©:×+;Ñ+;ô=ˆDð ×%Ò%¨×):Ò):Ø*.�Õ'ä 4§:¡:§?¡?Ø*.Ø+.ô0ˆDð  ×+Ñ+ˆÔØ�z‰z�‰ˆØ×ÒØŸ™Ò9¨D¯M©MÐ(9ˆDŒJØˆÔØŸ.™.ˆŒØˆr3   c                 ó:   — | j                   j                  |«       y r‡   r  r6  s      r4   Úgenerate_function_bodyz"FuncDefNode.generate_function_bodyú  r  r3   c                 ó¶0  ‡ ‡'‡(‡)— ddl m} ‰ j                  }|j                  r0|j                  s$t
        j                  ›dt
        j                  ›�}nt
        j                  }|j                  |«       ‰ j                  j                  ||«       ‰ j                  ||«       ‰ j                  j                  dk(  xr  ‰ j                  j                  j                  }‰ j                  j                  dk(  xr  ‰ j                  j                  j                  }|xs |}|r#d‰ j                   vr‰ j                   dgz   ‰ _        ‰ j#                  «       }	‰ j$                  rd}
nj|j'                  «       }
|
rX|j(                  j+                  t-        j.                  dd	«      «       |j(                  j0                  d
   r|j3                  «        |j5                  |«       |j7                  «       |_        |j:                   |j<                  _        |jA                  ‰ jB                  «       ‰ jE                  ||«       |jG                  d«       |	r|jG                  |	«       ‰ jI                  ||«      xs ‰ jJ                  }‰ jL                  r‰ jL                  jO                  ||d¬«       ‰ jO                  ||¬«       |}|jP                  s|j                  r&|jR                  }|jP                  rŒ|j                  rŒ&‰ jT                  rT|jW                  |jX                  jZ                  j]                  t
        j                  «      «       |jG                  d«       n¾‰ j^                  r²|j                  rS|jW                  |jX                  jZ                  j]                  t
        j                  «      «       |jG                  d«       |jW                  |jX                  jZ                  j]                  t
        j                  «      «       |jG                  d«       ‰ ja                  ||«       |jb                  D ]-  }|jd                  rŒ|jf                  rŒ|ji                  |«       Œ/ d}‰ jj                  }|jl                  r|jn                  r|jp                  }|jr                  sl|jt                  rd}n*|jv                  rd|jy                  |jz                  «      z   }|jG                  |j]                  t
        j|                  «      ›|›d�«       |j                  «       }‰ j�                  |«       ‰ j‚                  }|j„                  D �cg c]  }|j†                  sŒ|‘Œ }}|j:                  xr ‰ jT                  xs ‰ j^                  }d Š)d}|s|r$|j‰                  «        d|j<                  _        d}n|j                  «       Š)|
rd|j‹                  «        d }‰ jŒ                  r5‰ jŒ                  j�                  |«       ‰ jŒ                  j‘                  «       }|j“                  |«       |r‰ j•                  |«       |j                  «       }|j                  «       }|j<                  j>                   }|r‰ j—                  |«       ‰ jT                  �rt™        jš                  dd«      }t™        jœ                  |jX                  jZ                  j                  |«      }|s2d|jŸ                  |jX                  jZ                  j                   «      z  }|jG                  t
        j                  ›d|jX                  jZ                  j£                  «       ›d|›d|jŸ                  |jX                  jZ                  j                   «      ›d|jŸ                  t
        j¤                  «      ›d�
«       |jG                  dt
        j                  z  «       |jG                  t
        j                  ›d|jX                  jZ                  j§                  d«      ›d�«       |j©                  dtª        «       |jG                  |j­                  ‰ jB                  «      «       |jG                  d«       |j¯                  t
        j                  |jX                  jZ                  «       |jG                  d«       ‰ j^                  �r+‰ j°                  rK|jG                  |›d|jX                  jZ                  j£                  «       ›dt
        j²                  ›d�«       nJ|jG                  |›d|jX                  jZ                  j£                  «       ›d t
        j²                  ›d�«       |j                  r&|jG                  t
        j                  ›d|›d�«       nX‰ jT                  rL|j©                  ||jX                  jZ                  «       |jµ                  ||jX                  jZ                  «       |
r–‰ j¶                  r#t¹        ‰ j                  j                  d!z   «      }n‰ j                  j                  }|j»                  |‰ jB                  |j<                  j>                   ‰ jL                  d u¬"«       d|j<                  _^        ‰ j¿                  ||«       |jÀ                  D ]‡  }|jZ                  jv                  s.|s|jÂ                  sŒ(|jd                  rŒ5|jÅ                  |«       ŒG|jÂ                  sŒT|jd                  rŒa|jÇ                  ||j<                  j>                  ¬#«       Œ‰ |jb                  D ]Ê  }|jf                  r„|jÂ                  rx|jd                  sl|jZ                  jv                  r'|jÇ                  ||j<                  j>                  ¬#«       |jÈ                  r|jË                  |«       n|jÅ                  |«       |jZ                  jÍ                  |«      sŒ¯|jZ                  jÏ                  ||«       ŒÌ |jb                  |jÀ                  z   D ]L  }|jZ                  jÐ                  sŒ|jÒ                  jÔ                  j†                  sŒ;|j×                  ||«       ŒN ‰ jÙ                  |«       |jÀ                  D ]6  }|jZ                  jÐ                  sŒ|jÛ                  ||‰ jB                  «       Œ8 |j<                  jÜ                  rd}|rR|j:                  rF‰)�#‰)j‰                  «        d Š)d|j<                  _        |jß                  «        d|j<                  _        ‰ já                  ||«       |jA                  ‰ jB                  d¬$«       |jG                  d«       |jG                  d%«       |j<                  j>                  |j<                  j>                  ‰)d u d&œŠ(|fˆ(ˆ)fd'„	Š'‰ jj                  }‰ j                  jâ                  sØ|jt                  r+t
        j|                  } ‰'d(«       |jå                  ||«       nn|jv                  sb|jz                  }|r&|jG                  t
        j|                  ›d|›d�«       n.|jr                  s"|jG                  d)t
        j|                  z  «       |
r1|jç                  t
        j|                  ‰ jB                  |‰(d(    ¬*«       |jé                  |jê                  «      �r:‰ j                  jâ                  s|jí                  |jî                  «       |jñ                  |jê                  «       |j<                  jó                  «       D ]$  \  }} ‰'d+«       |jõ                  ||‰(d+   ¬#«       Œ& t÷        |«      d,kD  } | r•|j(                  j+                  tø        «       |jG                  d-«       |jG                  d.«        ‰'d+«       |jG                  d/«       |jG                  d0«       |D ]  }|jû                  ||«       Œ |jG                  d1«       |jv                  r7dd2l m~}! |!jÿ                  t
        j|                  |«       t
        j|                  }"n‰ �j                  «       }"|
rŠ ‰'d+«       |�j                  «        |jG                  d3«       |�j                  ‰ jB                  «       |jG                  d4«       |jç                  d5‰ jB                  ‰(d(    ¬6«       |jG                  d7«       ‰ �j                  «       }#|"€|#rµ ‰'d+«       |j<                  �j                  rF|jG                  d8t
        �j
                  z  «       |jG                  d9t
        �j
                  z  «       |�j                  ‰ j                  �j                  «       |j<                  �j                  r{|jG                  d«       ni�t        ‰ j                  jB                  d:‰ j                  �j                  z  d,«        ‰'d+«       |�j                  ‰ j                  �j                  «       |jz                  }$|"€|$r|$}"|"�9|"t
        j|                  k7  rT|jG                  t
        j|                  ›d|"›d�«       n.|jr                  s"|jG                  d)t
        j|                  z  «       |r ‰'d+«       ‰ �j                  |«       |j                  «       fˆ'ˆ(ˆ fd;„	}%| s|s|jv                  r/‰(d+   s|jv                  sJ ‚|jí                  |j8                  «       n |%«        nd<„ }%|jé                  |jî                  «      s|jé                  |jê                  «      sô|jñ                  |jî                  «       |D ]  } ‰'d(«       |jû                  ||«       Œ |r ‰'d(«       ‰ �j                  |«       |jv                  r�|�j                  |�j                  t
        j|                  «      «      }&|jG                  d=|&z  «       ‰(d(   s|j‰                  «        |jG                  d>«       ‰(d(   s|jß                  «        |jG                  d«       |jé                  |j8                  «      r" |%«        |jñ                  |j8                  «       |jb                  D ]»  }|j†                  r|jd                  rŒ|jZ                  �j                  r9|jf                  r|jÂ                  sŒL|jZ                  �j                  rB ‰'d(«       n9|jZ                  �j!                  |«      r|jZ                  �j#                  ||«       |�j%                  |‰(d(   ¬#«       Œ½ |jÀ                  D ]w  }|jd                  rŒ|jZ                  jv                  r|jÂ                  s/Œ3|s|jÂ                  sŒB|jZ                  �j                  r ‰'d(«       |�j%                  |‰(d(   ¬#«       Œy ‰ jT                  r= ‰'d(«       |�j'                  t
        j                  |jX                  jZ                  «       |j:                  sD|jz                  }$‰ �j                  «       }"|"€|$r|$}"|�j)                  t
        j|                  |«       ‰ j                  �j*                  rU‰ j                  j                  d?k(  r< ‰'d(«       |jG                  d@t
        j|                  ›dAt
        j|                  ›dB�«       |
r9d|j<                  _^        |�j-                  |j<                  j>                   ¬6«       |j<                  jÜ                  rP|�j/                  «        |�j1                  ‰ j                  j                  |¬C«       |�j3                  ‰(d(    ¬6«       |s|j:                  r&‰(d(   r!|jß                  «        d|j<                  _        |jr                  s"|jG                  dDt
        j|                  z  «       |jG                  d«       |	r|jG                  dE|	z  «       |�j5                  |j<                  «       |�j7                  «        ‰ jL                  r‰ jL                  j                  ||«       ‰ �j9                  |«       y c c}w )FNr   r©  rJ   Ú__getbuffer__Ú__releasebuffer__Úcython_unusedFÚProfilez	Profile.cÚ	linetracerØ   T©Úwith_pymethdefÚ
proto_only)re  rG  z = NULLrF  Útp_newrk   z
%s->tp_newz = (Ú)Ú(rÈ   ú, NULL);úif (unlikely(!%s)) {ÚPy_Noneú} else {Ú}z) __Pyx_CyFunction_GetClosure(ú);z) z
 (wrapper))rÍ  Úis_cpdef_func©Úhave_gil©Útraceú/* function exit code */)Úsuccessr   Úgil_state_declaredc                 ót   •— ‰|    s2‰d   s‰j                  «        d‰d<   |j                  d¬«       d‰| <   y y )Nrw  TF©Údeclare_gilstate)rz  Úput_ensure_gil)Ú	code_pathrX   Ú	gil_ownedÚgilstate_decls     €€r4   Ú
assure_gilz=FuncDefNode.generate_function_definitions.<locals>.assure_gilý  sK   ø€ Ø˜YÒ'Ø Ð!5Ò6Ø!×2Ñ2Ô4Ø6:�IÐ2Ñ3Ø×#Ñ#°UÐ#Ô;Ø'+�	˜)Ò$ð (r3   rv  z!__Pyx_pretend_to_initialize(&%s);©rå  rÍ  r   r   z0{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;Ú__Pyx_PyThreadState_declareÚ__Pyx_PyThreadState_assignz5__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);z5__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}r  z#if CYTHON_USE_SYS_MONITORINGú#elseÚNULL)rÍ  ú#endifzint %s = 0; /* StopIteration */ú
if (!%s) {z&Unraisable exception in function '%s'.c                 ó®   •— ‰d   r ‰d| ¬«       n‰d   r| j                  «        d‰d<   ‰d   ‰d   k(  sJ ‰j                  ›d‰d   ›d‰d   ›�«       ‚y )Nrv  r   )rX   Fz: error path z != success path )Úput_release_ensured_gilr9   )rX   r  r}  rŽ   s    €€€r4   Ú$align_error_path_gil_to_success_pathzWFuncDefNode.generate_function_definitions.<locals>.align_error_path_gil_to_success_pathb	  sp   ø€ à˜YÒ'Ù˜w¨TÖ2Ø˜wÒ'Ø×0Ñ0Ô2Ø).�I˜gÑ&Ø  Ñ)¨Y°yÑ-AÒAð HØ—H“H˜i¨Ó0°)¸IÒ2FðDHó HÑAr3   c                   ó   — y r‡   r2   r2   r3   r4   r‰  zWFuncDefNode.generate_function_definitions.<locals>.align_error_path_gil_to_success_pathx	  s   € ¸r3   ú	if (%s) {zOPyErr_SetString(PyExc_TypeError, "Memoryview return value is not initialized");Ú__hash__úif (unlikely(z == -1) && !PyErr_Occurred()) z = -2;)Úacquire_gilú
return %s;ú#endif /*!(%s)*/)�rØ   rª  rY  Úis_closure_scopeÚis_passthroughr	   Úcur_scope_cnameÚouter_scope_cnameÚmangle_closure_cnamesr¼   r  r  r  rm   r  rÙ  r=  Úget_preprocessor_guardrW  Ú
is_tracingr  rŒ  r   Úload_cachedrÿ   Úuse_fast_gil_utility_codeÚenter_cfunc_scopeÚ	new_labelÚreturn_from_error_cleanup_labelrÍ  r$  r}  r-  r9   r  rS   Úneeds_assignment_synthesisÚpymethdef_requiredÚpy_funcÚgenerate_function_headerrS  r×  rT  ÚputÚscope_classrl  rh  Úneeds_outer_scopeÚgenerate_argument_declarationsrì  Ú
in_closurer/  Úput_var_declarationrå  Úis_cv_qualifiedr¢  Úcv_base_typerg  r~  rÚ  Úliteral_coderí  Úretval_cnamerO   Úgenerate_keyword_listrŽ  Úbuffer_entriesr  r{  Úput_trace_declarationsÚcode_objectÚgenerate_result_codeÚ	py_resultÚput_trace_frame_initÚgetbuffer_checkÚgetbuffer_initr   ÚConstructorSlotÚget_slot_functionr)  Útypeptr_cnamer.  Úempty_tupler@  Ú
put_increfr   r+  r(  Úis_cyfunctionÚ
self_cnamerJ  rò   r   Úput_trace_startÚ	can_traceÚgenerate_argument_parsing_codeÚarg_entriesÚcf_is_reassignedÚput_var_increfÚput_var_incref_memoryviewsliceÚxdecref_cleanupÚput_var_xincrefÚneeds_explicit_constructionÚgenerate_explicit_constructionrf  Ú
buffer_auxÚbuflocal_nd_varÚput_init_varsÚgenerate_argument_type_testsÚput_acquire_arg_bufferÚneeds_refnannyrˆ  r]  rñ   Úput_init_to_py_noneÚput_trace_returnÚ
label_usedÚerror_labelÚput_gotoÚreturn_labelÚ	put_labelÚall_managed_tempsÚput_xdecrefrK   Úrestore_exception_utility_codeÚput_release_buffer_coder€  Úput_init_entryÚerror_valueÚput_trace_exception_propagatingÚput_trace_unwindÚcaller_will_check_exceptionsÚerror_without_exceptionÚerror_without_exception_cnameÚput_add_tracebackÚqualified_namer   Úput_unraisableÚgetbuffer_error_cleanupÚgetbuffer_normal_cleanupÚunlikelyÚerror_conditionÚneeds_refcountingÚrefcounting_needs_gilÚneeds_explicit_destructionÚgenerate_explicit_destructionÚput_var_xdecrefÚ
put_decrefÚput_xgiverefÚ
is_specialÚput_trace_exitÚput_declare_refcount_contextÚput_setup_refcount_contextÚput_finish_refcount_contextÚput_temp_declarationsÚexit_cfunc_scopeÚgenerate_wrapper_functions)*rŽ   r¡   rX   rª  rN  r”  Úis_getbuffer_slotÚis_releasebuffer_slotÚis_buffer_slotÚpreprocessor_guardÚtracingre  Úcenvr  Úinitrå  Útempvardecl_coderŽ  Úused_buffer_entriesÚvar_decls_definitely_need_gilÚvar_decls_need_gilr®  Úrefnanny_decl_codeÚrefnanny_setup_codeÚrefnanny_needs_gilÚtp_slotÚslot_func_cnameÚ
trace_nameÚlhsÚvalrÛ  rl  Úbuffers_presentr€  Úerr_valrü  Údefault_retvalr‰  Úcondr  r}  r~  s*   `                                      @@@r4   r  z)FuncDefNode.generate_function_definitionsý  s  û€ Ýà×ÑˆØ× Ò ¨×)<Ò)<Ü,2×,BÓ,BÜ,2×,DÒ,Dð!FÑô !'× 8Ñ 8ÐØ×"Ñ"Ð#4Ô5à�	‰	×/Ñ/°°dÔ;à×(Ñ(¨¨tÔ4à!ŸZ™ZŸ_™_°Ñ?ò ?Ø!ŸZ™Z×-Ñ-×>Ñ>ð 	à!%§¡§¡Ð4GÑ!Gò "CØ!%§¡×!1Ñ!1×!BÑ!Bð 	à*ÒCÐ.CˆÙØ d§n¡nÑ4Ø!%§¡°?Ð2CÑ!C�”à!×8Ñ8Ó:Ðà×Òà‰Gà—o‘oÓ'ˆGÙØ× Ñ ×1Ñ1Ü×+Ñ+¨I°{ÓCôEà×#Ñ#×.Ñ.¨{Ò;Ø×2Ñ2Ô4ð 	×Ñ˜tÔ$Ø/3¯~©~Ó/?ˆÔ,Ø'+§z¡z >ˆ�‰Ô ð 	�‰�d—h‘hÔØ×+Ñ+¨D°$Ô7à�
‰
�2ŒáØ�J‰JÐ)Ô*à×9Ñ9¸#¸tÓDò 2Ø×1Ñ1ð 	à�<Š<Ø�L‰L×1Ñ1Ø ^Àð 2ô Fà×%Ñ% d¸>Ð%ÔJð ˆØ×$Ò$¨×(=Ò(=Ø×#Ñ#ˆDð ×$Ó$¨×(=Ó(=à×ÒØ�H‰H�T×%Ñ%×*Ñ*×;Ñ;¼F×<RÑ<RÓSÔTØ�J‰J�s�OØ×#Ò#Ø×"Ò"Ø—‘˜×)Ñ)×.Ñ.×?Ñ?Ä×@VÑ@VÓWÔXØ—
‘
˜3”Ø�H‰H�T×%Ñ%×*Ñ*×;Ñ;¼F×<TÑ<TÓUÔVØ�J‰J�sŒOØ×+Ñ+¨D°$Ô7à×%Ô%ˆEØ×$Ó$¨¯«Ø×(Ñ(¨Õ/ð &ð
 ˆØ×&Ñ&ˆØ×&Ò&¨;×+?Ò+?ð &×2Ñ2ˆKØ×"Ò"Ø×&Ò&Ø ‘Ø×/Ò/Ø˜{×7Ñ7¸×8QÑ8QÓRÑR�à�J‰JØ×,Ñ,¬V×-@Ñ-@ÔAÚðô ð  ×/Ñ/Ó1ÐØ×"Ñ" 4Ô(ð ×&Ñ&ˆà26×2EÒ2EÓTÑ2E¨ÈÏËšuÐ2EÐÐTð )-¯
©
Ò(e¸×8JÑ8JÒ8dÈd×NdÑNdÐ%àˆØ"ÐÙÑ7Ø×ÑÔ!Ø'+ˆD�N‰NÔ$Ø!%Ñà ×0Ñ0Ó2ˆMáØ×3Ñ3Ô5ØˆKØ×ÒØ× Ñ ×5Ñ5°dÔ;Ø"×.Ñ.×8Ñ8Ó:�Ø×%Ñ% kÔ2ñ Ø× Ñ  Ô&ð .×=Ñ=Ó?ÐØ"×2Ñ2Ó4ÐØ!%§¡×!9Ñ!9Ð9Ðñ Ø×Ñ Ô%à×ÓÜ×/Ñ/°¸)ÓDˆGÜ'×9Ñ9¸$×:JÑ:J×:OÑ:O×:UÑ:UÐW^Ó_ˆOÙ"Ø".Ø×-Ñ-¨d×.>Ñ.>×.CÑ.C×.QÑ.QÓRñ#T�à�J‰JÜ×&Ó&Ø× Ñ ×%Ñ%×<Ñ<Õ>ÚØ×)Ñ)¨$×*:Ñ*:×*?Ñ*?×*MÑ*MÕNØ×)Ñ)¬&×*<Ñ*<Õ=ð?ô @ð �J‰JÐ-´×0FÑ0FÑFÔGà�J‰JÜ×&Ó&Ø× Ñ ×%Ñ%×/Ñ/°	Õ:ð<ô =ð �O‰O˜I¤~Ô6Ø�J‰J�t—‘ t§x¡xÓ0Ô1Ø�J‰J�zÔ"Ø�O‰OœF×2Ñ2°D×4DÑ4D×4IÑ4IÔJØ�J‰J�sŒOà×!Ó!Ø×!Ò!Ø—
‘
Ú%Ø×$Ñ$×)Ñ)×@Ñ@ÕBÜ×%Ó%ð'õ (ð
 —
‘
Ú%Ø×$Ñ$×)Ñ)×@Ñ@ÕBÜ×%Ó%ð'ô (ð ×"Ò"Ø—
‘
¬×)?Ó)?ÒARÐSÕTØ×#Ò#à—‘Ð 1°4×3CÑ3C×3HÑ3HÔIØ× Ñ Ð!2°D×4DÑ4D×4IÑ4IÔJáð �ŠÜ*¨4¯:©:¯?©?¸\Ñ+IÓJ‘
à!ŸZ™ZŸ_™_�
Ø× Ñ Ø˜DŸH™H°·±×0HÑ0HÐ,HÐX\×XdÑXdÐlpÐXpð !ô rà'+ˆD�N‰NÔ$à×+Ñ+¨C°Ô6ð ×%Ô%ˆEØ—:‘:×0Ò0Ù 5×#9Ó#9À5×CSÓCSØ×'Ñ'¨Õ.ð
 ×'Ó'°×0@Ó0@Ø×3Ñ3°EØ-1¯^©^×-EÑ-Eð 4õ Gð &ð ×%Ô%ˆEØ�|Š| × 6Ò 6¸u×?OÒ?OØ—:‘:×0Ò0Ø×7Ñ7¸Ø15·±×1IÑ1Ið 8ô Kà×(Ò(Ø×(Ñ(¨Õ/à×'Ñ'¨Ô.Ø�z‰z×5Ñ5°dÕ;Ø—
‘
×9Ñ9¸$ÀÕFð &ð ×%Ñ%¨×(8Ñ(8Ô8ˆEØ�z‰z×#Ó#¨×(8Ñ(8×(HÑ(H×(MÓ(MØ×$Ñ$ U¨DÕ1ð 9ð
 	×)Ñ)¨$Ô/à×%Ô%ˆEØ�z‰z×#Ó#Ø×-Ñ-¨e°T¸4¿8¹8ÕDð &ð �>‰>×(Ò(ð "&Ðá $§*¢*ØÐ(Ø×,Ñ,Ô.Ø $�Ø+/�—‘Ô(Ø×(Ñ(Ô*Ø',ˆD�N‰NÔ$ð
 	×#Ñ# C¨Ô.à�‰�d—h‘h eˆÔ,Ø�
‰
�2ŒØ�
‰
Ð-Ô.ð —~‘~×/Ñ/Ø—^‘^×-Ñ-Ø"/°4Ð"7ñ
ˆ	ð
 (,ö 	,ð ×&Ñ&ˆØ�y‰y×&Ò&Ø×&Ò&ô ×)Ñ)�Ù˜9Ô%Ø×(Ñ(¨¨kÕ:Ø ×3Ò3à!×/Ñ/�ÙØ—J‘J¬V×-@Ó-@Â#ÐFÕGØ$×,Ò,Ø—J‘JÐBÄV×EXÑEXÑXÔYáØ×%Ñ%Ü×'Ñ'¨¯©¸{ÐV_Ð`iÑVjÐRjð &ô lð �?‰?˜4×+Ñ+Õ,Ø—9‘9×*Ò*Ø—‘˜d×/Ñ/Ô0Ø�N‰N˜4×+Ñ+Ô,Ø#Ÿ~™~×?Ñ?ÖA‘��tÙ˜7Ô#Ø× Ñ  ¨°yÀÑ7IÐ ÕJð  Bô "Ð"5Ó6¸Ñ:ˆOáØ× Ñ ×1Ñ1Ô2PÔQØ—
‘
ÐMÔNØ—
‘
Ð8Ô9Ù˜7Ô#Ø—
‘
Ð7Ô8Ø—
‘
ÐRÔSÛ0�EØ×2Ñ2°4¸Õ?ð 1ð —
‘
ÐRÔSà×-Ò-Ý(Ø×)Ñ)¬&×*=Ñ*=¸tÔDÜ ×-Ñ-‘à×*Ò*Ó,�áÙ˜7Ô#Ø×4Ò4Ô6Ø—
‘
Ð:Ô;Ø×%Ò% d§h¡hÔ/Ø—
‘
˜7Ô#Ø×%Ñ% f¨d¯h©hÀ)ÈIÑBVÐ>VÐ%ÔWØ—
‘
˜8Ô$à×9Ò9Ó;ˆIØÐ"¡iÙ˜7Ô#Ø—>‘>×9Ó9Ø$×*Ñ*Ø9¼F×<`Ò<`Ñ`ôð —J‘J˜|¬f×.RÒ.RÑRÔSØ×&Ò& t§z¡z×'@Ò'@ÔAØ—>‘>×9Ó9Ø—J‘J˜s•Oå˜Ÿ
™
Ÿ™Ø@ØŸ
™
×1Ò1ñ2Ø34ô6ñ ˜7Ô#Ø×#Ò# D§J¡J×$=Ò$=Ô>Ø(×6Ñ6ˆNØˆ¡>Ø(�ØÐ"Øœf×1Ñ1Ò1Ø—J‘J¬V×-@Ó-@Â'ÐJÕKØ ×(Ò(Ø—
‘
Ð>Ä×ATÑATÑTÔUá Ù˜7Ô#Ø×,Ò,¨TÔ2à:>×:NÑ:NÓ:P÷ Hñ Ñ"3°{×7UÒ7Uà  Ò)¨[×-KÒ-KÐKÐKØ—‘˜d×BÑBÕCñ 5Õ6ò =ð �?‰?˜4×,Ñ,Ô-°T·_±_ÀT×EUÑEUÔ5VØ�N‰N˜4×,Ñ,Ô-ã,�Ù˜9Ô%Ø×.Ñ.¨t°UÕ;ð -ñ !Ù˜9Ô%Ø×-Ò-¨dÔ3à×-Ò-ð —}’} [×%@Ò%@Ä×ATÑATÓ%UÓV�Ø—
‘
Ø $Ñ&ô(à  Ò+Ø×'Ñ'Ô)Ø—
‘
Øeôgà  Ò+Ø×0Ñ0Ô2Ø—
‘
Øôð �?‰?˜4×?Ñ?Ô@Ù0Ô2Ø�N‰N˜4×?Ñ?Ô@à×%Ô%ˆEØ—:’: ×!1Ò!1Øà�z‰z×+Ó+Ø—<’<¨×(>Ò(>ØØ—:‘:×3Ó3Ù˜yÕ)Ø—‘×6Ò6°tÔ<Ø—
‘
×8Ò8¸¸uÔEà× Ò  °¸9Ñ1EÐ ÕFð &ð ×%Ô%ˆEØ×ÒØØ�z‰z×,Ò,ð ×-Ò-Øá"¨5×+AÒ+AØØ—:‘:×/Ó/Ù˜yÔ)ð × Ò  °¸9Ñ1EÐ ÕFð &ð  ×ÒÙ�yÔ!Ø�OŠOœF×2Ñ2°D×4DÑ4D×4IÑ4IÔJð �zŠzØ(×6Ñ6ˆNØ×&Ò&Ó(ˆGØˆ¡>Ø(�Ø×Òœf×1Ñ1°;Ô?à�:‰:× Ó  T§Z¡Z§_¡_¸
Ò%Bñ �yÔ!Ø�JŠJÜ×#Ó#¤V×%8Ó%8ð:ô ;ñ Ø',ˆD�N‰NÔ$Ø×Ò¨$¯.©.×*BÑ*BÐ&BÐÔCà�>‰>×(Ò(Ø×;Ò;Ô=Ø×:Ò:¸4¿:¹:¿?¹?ÐXjÐ:ÔkØ×,Ò,°yÀÑ7KÐ3KÐ,ÔLá˜4Ÿ:š:¨)°IÒ*>à×(Ñ(Ô*Ø',ˆD�N‰NÔ$à×"Ò"Ø�J‰J�|¤f×&9Ñ&9Ñ9Ô:à�
‰
�3ŒáØ�J‰JÐ)Ð,>Ñ>Ô?ð 	×.Ò.¨t¯~©~Ô>ð 	×ÒÔØ�<Š<Ø�L‰L×6Ñ6°s¸DÔAØ×'Ò'¨Õ-ùòQ Us   ÕAaÕAac                 óÎ  — |j                   j                  rt        |j                  d«       ni|j                   j	                  «       sO|j                   j
                  s9|j                   j                  s#t        |j                  d|j                   z  «       |j                  |j                  |j                   |j                  «      }|j                  r|j                  |_	        |S )NzInvalid use of 'void'z Argument type '%s' is incomplete)
rl  rg  r   r9   r§  re  rÚ  Údeclare_argrm   r  )rŽ   r¡   rÿ  r  s       r4   Údeclare_argumentzFuncDefNode.declare_argumentì	  s”   € Ø�8‰8×ÒÜ�#—'‘'Ð2Õ3Ø—‘×%Ñ%Ô'°·±×1BÒ1BÀcÇhÁh×FaÒFaÜ�#—'‘'Ð=ÀÇÁÑHÔIØ—‘ §¡¨#¯(©(°C·G±GÓ<ˆØ�>Š>Ø"Ÿ~™~ˆEÔØˆr3   c                 ó6  — |j                   j                  «       ré|j                  j                  t	        j
                  dd«      «       |j                  |j                   «      }d|j                  j                  z  }d}|j                   j                  r&|j                   j                  r|j                  rdnd}|j                  d|||j                  |j                  ||j                  |j                   «      fz  «       y t#        |j                   d«       y )	NÚArgTypeTestúFunctionArguments.cú((PyObject *)%s)r   r%   r   z8if (unlikely(!__Pyx_ArgTypeTest(%s, %s, %d, %s, %s))) %szICannot test type of extern C class without type object name specification)rl  Útypeobj_is_availabler  rŒ  r   r˜  Útypeptr_cname_in_module_stater  rÛ  Úis_builtin_typeÚrequire_exactr<  rS   Úaccept_noner"  r+  r9   r   )rŽ   rÿ  rX   r¶  Úarg_codeÚexacts         r4   Úgenerate_arg_type_testz"FuncDefNode.generate_arg_type_testö	  sá   € à�8‰8×(Ñ(Ô*Ø×Ñ×-Ñ-Ü×'Ñ'¨Ð7LÓMôOà ×>Ñ>¸s¿x¹xÓHˆMØ)¨C¯I©I¯O©OÑ;ˆHØˆEØ�x‰x×'Ò'¨C¯H©H×,BÒ,Bð !×5Ò5™¸1�Ø�J‰JØJØØ!Ø—O‘OØ×$Ñ$ØØ—O‘O C§G¡GÓ,ðN.ñ .õ/ô �#—'‘'ÐfÕgr3   c           	      óˆ  — |j                   j                  rd|j                  j                  z  }n|j                  j                  }|j	                  d|z  «       |j	                  dt        dt        |j                  «      «      |j                  |j                  |j                  «      fz  «       |j	                  d«       y )Nz
%s.memviewz,if (unlikely(((PyObject *)%s) == Py_None)) {zKPyErr_Format(PyExc_TypeError, "Argument '%%.%ds' must not be None", %s); %séÈ   rn  )
rl  rÚ  r  rÛ  rS   rÁ   rK   r"  r+  r9   )rŽ   rÿ  rX   rÛ  s       r4   Úgenerate_arg_none_checkz#FuncDefNode.generate_arg_none_check
  s”   € à�8‰8×&Ò&Ø  3§9¡9§?¡?Ñ2‰Eà—I‘I—O‘OˆEà�
‰
ÐAÀEÑIÔJØ�
‰
ÐdÜ�”S˜×)Ñ)Ó*Ó+¨S×-=Ñ-=Ø�O‰O˜CŸG™GÓ$ðh&ñ &ô 	'ð 	�
‰
�3�r3   c                  ó   — y r‡   r2   r¸   s     r4   ró  z&FuncDefNode.generate_wrapper_functions
  r´   r3   c                 ó²   — |j                  | j                  «       | j                  s0| j                  D ]   }|j                  rŒ|j                  |«       Œ" y y r‡   )r-  r9   rò   rU   rW  rP  ©rŽ   rX   rÿ  s      r4   r  z#FuncDefNode.generate_execution_code
  sC   € Ø�‰�d—h‘hÔð �ŠØ—y”y�Ø—~“~Ø×0Ñ0°Õ6ñ !ð r3   c                 óà   — | j                   j                  d   }	 |j                  j                  j                  j
                  d   j                  }||fS # t        t        f$ r d }Y ||fS w xY w)Nr   Úobj)rY  r¾  rl  rm  r  r  rÀ   ÚKeyError)rŽ   Ú	py_bufferÚobj_types      r4   Ú_get_py_buffer_infozFuncDefNode._get_py_buffer_info)
  sv   € Ø×$Ñ$×0Ñ0°Ñ3ˆ	ð	à —~‘~×/Ñ/×5Ñ5×=Ñ=¸eÑD×IÑIˆHð ˜(Ð"Ð"øô ¤Ð)ò 	à‰HØ˜(Ð"Ð"ð	ús   ›7A ÁA-Á,A-c                 óÐ   — | j                  «       \  }}|j                  }|j                  d|z  «       |j                  d«       |j                  d«       |j                  d«       y )Nzif (unlikely(%s == NULL)) {zZPyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");z
return -1;rn  )r%  rÛ  rS   )rŽ   rX   r#  r½  Úviews        r4   r²  zFuncDefNode.getbuffer_check9
  sY   € Ø×/Ñ/Ó1‰ˆ	�1Ø�‰ˆØ�
‰
Ð0°4Ñ7Ô8Ø�
‰
ð Oô 	Pà�
‰
�<Ô Ø�
‰
�3�r3   c                 óÜ   — | j                  «       \  }}|j                  }|r7|j                  r+|j                  d|z  |«       |j	                  d|z  |«       y |j                  d|z  «       y )Nú%s->objz%s->obj = NULL;)r%  rÛ  r~  rÌ  rJ  rS   ©rŽ   rX   r#  r$  r'  s        r4   r³  zFuncDefNode.getbuffer_initB
  se   € Ø"×6Ñ6Ó8Ñˆ	�8Ø�‰ˆÙ˜×,Ò,Ø×$Ñ$ Y°Ñ%5°xÔ@Ø×Ñ˜Y¨Ñ-¨xÕ8à�J‰JÐ(¨4Ñ/Õ0r3   c                 ó&  — | j                  «       \  }}|j                  }|r\|j                  rP|j                  d|z  «       |j	                  d|z  |«       |j                  d|z  |«       |j                  d«       y |j                  d|z  «       y )Nzif (%s->obj != NULL) {r)  rn  zPy_CLEAR(%s->obj);©r%  rÛ  r~  rS   r(  r,  r*  s        r4   rá  z#FuncDefNode.getbuffer_error_cleanupK
  s€   € Ø"×6Ñ6Ó8Ñˆ	�8Ø�‰ˆÙ˜×,Ò,Ø�J‰JÐ/°$Ñ6Ô7Ø�O‰O˜I¨Ñ,¨hÔ7Ø×!Ñ! )¨dÑ"2°HÔ=Ø�J‰J�s�Oà�J‰JÐ+¨dÑ2Õ3r3   c                 ó   — | j                  «       \  }}|j                  }|r]|j                  rP|j                  d|z  «       |j	                  d|z  |«       |j                  d|z  |«       |j                  d«       y y y )Nzif (%s->obj == Py_None) {r)  rn  r,  r*  s        r4   râ  z$FuncDefNode.getbuffer_normal_cleanupV
  su   € Ø"×6Ñ6Ó8Ñˆ	�8Ø�‰ˆÙ˜×,Ò,Ø�J‰JÐ2°TÑ9Ô:Ø�O‰O˜I¨Ñ,¨hÔ7Ø×!Ñ! )¨dÑ"2°HÔ=Ø�J‰J�s�Oð	 -ˆ8r3   c                 ó’  — | j                   j                  sy | j                   j                  }t        j                  | j
                  j                  «      j                  |«      }|sy |dk(  r&| j                   j                  j                  d«      sy |dv r!| j                   j                  j                  ry |j                  «       S )NÚ__long__Ú__int__©r_  r`  )r  rì  rm   r   Úget_slot_tablerY  rÿ   Úget_slot_by_method_namer  r”  rÙ  Úpreprocessor_guard_code)rŽ   rm   Úslots      r4   r–  z"FuncDefNode.get_preprocessor_guard_
  sœ   € Ø�z‰z×$Ò$ØØ�z‰z�‰ˆÜ×'Ñ'¨×(8Ñ(8×(CÑ(CÓD×\Ñ\Ð]aÓbˆÙØØ�:Ò d§j¡j×&6Ñ&6×&BÑ&BÀ9Ô&MØØÐ9Ñ9¸d¿j¹j×>NÑ>N×>_Ò>_ØØ×+Ñ+Ó-Ð-r3   )'r,   r-   r.   rŸ  rT  r£  rž  rW  rU  Úis_coroutineÚis_asyncgenrV  Úis_async_defr=  Úhas_fused_argumentsÚstar_argÚstarstar_argr¹  r®  rE  rö   rC  rG  rJ  rO  r[  r]  r  r  r  r  ró  r  r%  r²  r³  rá  râ  r–  r2   r3   r4   r@  r@    sÃ   „ ð* €GØ€MØÐØÐØ€LØ#ÐØ€LØ€KØÐØ€LØ€IØÐØ€HØ€LØ€MØ€KØ!Ðà€KòRò(Yòò4òò40òm.ò^òhò.òò7ò#ò ò1ò	4òó.r3   r@  c                   ó  ‡ — e Zd Zg d¢ZddgZdZdZdZdZdZ	dZ
dZdZdZd„ Zd„ Zed„ «       Zej$                  d	„ «       Zd
„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zdd„Zd d„Zd„ Zd„ Zd„ Zd„ Z d„ Z!ˆ fd„Z"d„ Z#d„ Z$d„ Z%ˆ fd„Z&ˆ xZ'S )!r  )rm  r  r¼   rã  Úpy_func_statrã  r=  FNc                 ó.   — | j                   j                  S r‡   )r  rm   r©   s    r4   Úunqualified_namezCFuncDefNode.unqualified_name’
  s   € Ø�z‰z�‰Ðr3   c                 ó6   — | j                   j                  «       S r‡   r  r©   s    r4   rT  zCFuncDefNode.declared_name•
  r  r3   c                 ó^   — | j                   r| j                   j                  S | j                  S r‡   )rŸ  r®  Ú_code_objectr©   s    r4   r®  zCFuncDefNode.code_object˜
  s%   € ð ,0¯<ª<ˆt�|‰|×'Ñ'ÐN¸T×=NÑ=NÐNr3   c                 ó   — || _         y r‡   )rB  )rŽ   r®  s     r4   r®  zCFuncDefNode.code_object�
  s
   € à'ˆÕr3   c                 óÌ  — |j                   d   | _        |j                  | _        | j                  €i | _        | j                  j                  |j                   j                  di «      «       | j                  �€| j                  j                  |«      }|€~| j                  j                  r| j                  j                  |«      }nLt        | j                  j                  d«       t        j                  }n| j                  j                  |«      }d|j                   v xr |j!                  d«       | _        t%        | j&                  t(        «      rG| j&                  j                  ||d| j*                  d uz  | j                  | j,                  ¬«      \  }}n;| j&                  j                  ||d| j*                  d uz  | j,                  ¬«      \  }}|j.                  st        | j                  d«       || _        | j2                  |_        | j&                  }t7        |d	«      s|j8                  }t7        |d	«      sŒ|| _        |j<                  | _        | j:                  j>                  }| j,                  d
k(  s| j@                  r"|r t        | j:                  j                  d«       |jB                  dk(  r_| j,                  dk7  rP|jD                  �-|jD                  jF                  rt        | j                  d«       ntI        | j                  dd«       tK        | j<                  |j<                  «      D �]L  \  }}| jM                  ||«       |j0                  |_        |jN                  |_'        |jP                  |_(        | jS                  |j0                  |j                  |«       |j0                  jT                  rd| _+        |j0                  jX                  r%d| jZ                  v rtI        |j                  dd«       |j0                  jX                  s|j0                  j\                  sŒø| j0                  j^                  rt        |j                  d«       �Œ&d| jZ                  v s�Œ6tI        |j                  dd«       �ŒO | jS                  |j`                  | j                  |«       |jN                  }	|jP                  }
| jb                  |_1        | j"                  |_        |je                  |	|| j                  |
| j,                  | j@                  | j*                  d u| jZ                  | j2                  | jf                  ¬«
      | _4        |j`                  | _0        | j`                  jj                  r%| j,                  dk7  rt        | j                  d«       | j`                  jl                  r&| j`                  jo                  | j                  d«       | j2                  rZ|jp                  sN| j"                  sBts        | j<                  «      dk  s#| j<                  d   j0                  jt                  sd| _        | jw                  |«       | jy                  |«       y )NÚc_compile_guardÚlocalsr½  r2  r%   )rn  ró  ro  )rn  ro  z*Suite attached to non-function declarationrU   r  zBFunction with optional arguments may not be declared public or apirÂ  r—  z/Only extern functions can throw C++ exceptions.TÚinlinez$Buffer unpacking not optimized away.r   zUBuffer may not be acquired without the GIL. Consider using memoryview slices instead.)rÛ  ro  rÓ  Údefiningr=  rð  rp  zFunction cannot return an arrayzused as a return valuer   F)=rÿ   rE  rÙ  Úis_c_class_methodró  rš   rŠ   Údirective_returnsr�  Úis_annotationrm  rq  r   r9   r
   r   r”  rÜ  rL   r  r¯  r¼   ro  rš  rl  rð  rÏ  Úhasattrru  Úcfunc_declaratorrU   rË  rÓ  rÌ  r°  rí   r   ÚziprJ  rm   rÛ  Ú_validate_type_visibilityri  r9  rf  r=  Úis_pythran_exprrÍ  rå  rÐ  rÝ  Úinline_in_pxdr  re  r˜  Úcheck_nullary_constructorrÙ  rK   r~  Údeclare_cpdef_wrapperr[  )rŽ   r¡   rm  r÷  Útypr  Úopt_arg_countÚ
formal_argÚtype_argrm   rÛ  s              r4   r³   z!CFuncDefNode.analyse_declarations¡
  sÿ  € Ø"Ÿ~™~Ð.?Ñ@ˆÔØ!$×!5Ñ!5ˆÔØ× Ñ Ð(Ø$&ˆDÔ!Ø×Ñ×$Ñ$ S§^¡^×%7Ñ%7¸À"Ó%EÔFØ×!Ñ!Ð-Ø×.Ñ.×>Ñ>¸sÓCˆIàÐ Ø×)Ñ)×7Ò7Ø $§¡× 6Ñ 6°sÓ ;‘Iä˜$×0Ñ0×4Ñ4°lÔCÜ *× 5Ñ 5‘IàŸ™×.Ñ.¨sÓ3ˆIØ .°#·.±.Ð @Ò hÈÏÉÐYgÓIhÐEhˆÔä�d—o‘oÔ':Ô;Ø#'§?¡?×#:Ñ#:Ø˜3¨¨d¯i©i¸tÐ.CÑ)DØ!%×!6Ñ!6À4Ç?Á?ð $;ó $TÑ ˆO™Sð $(§?¡?×#:Ñ#:Ø˜3¨¨d¯i©i¸tÐ.CÑ)DÐQU×Q`ÑQ`ð $;ó $bÑ ˆO˜Sà×ÒÜ�$—(‘(ÐHÔIð
 ˆŒ	Ø!×-Ñ-ˆÔØ—_‘_ˆ
Ü˜* fÔ-Ø#Ÿ™ˆJô ˜* fÕ-ð !+ˆÔØ—O‘OˆŒ	à×-Ñ-×@Ñ@ˆØ�O‰O˜xÒ'¨4¯8ª8¹Ü�$×'Ñ'×+Ñ+ØVôXð ×Ñ #Ò%¨$¯/©/¸XÒ*EØ×"Ñ"Ð.°3×3FÑ3F×3NÒ3Nô �d—h‘hØEõGô ˜Ÿ™ØEÀqôJô %(¨¯	©	°3·8±8×$<Ñ ˆJ˜Ø×$Ñ$ S¨(Ô3Ø&Ÿm™mˆJŒOØ&Ÿm™mˆJŒOØ'Ÿ~™~ˆJÔà×*Ñ*¨8¯=©=¸(¿,¹,ÈÔLà�}‰}×%Ò%Ø+/�Ô(à�}‰}×&Ò&¨8°t·~±~Ñ+EÜ˜
Ÿ™Ð(NÐPQÔRà�}‰}×&Ò&¨(¯-©-×*GÓ*GØ—9‘9—?’?Ü˜*Ÿ.™.Øqösà §¡Ó/Ü˜JŸN™NÐ,RÐTUÖVð' %=ð* 	×&Ñ& s§¡¸¿¹À#ÔFà×#Ñ#ˆØ×%Ñ%ˆà"×2Ñ2ˆÔØ#×4Ñ4ˆÔà×*Ñ*Ø�#�t—x‘xØ D§O¡O¸¿¹Ø—Y‘Y dÐ*°d·n±nØ×(Ñ(°×1CÑ1Cð	 +ó EˆŒ
ð
 Ÿ?™?ˆÔà×Ñ×$Ò$¨¯©¸HÒ)DÜ�$—(‘(Ð=Ô>Ø×Ñ×(Ò(Ø×Ñ×6Ñ6°t·x±xÐAYÔZà×Ò C×$7Ò$7À×@UÒ@UÜ�4—9‘9‹~ Ò!¨¯©°1©×):Ñ):×)FÒ)Fà#(�Ô à×"Ñ" 3Ô'Ø×Ñ Õ$r3   c                 ó   — | j                   sy | j                  rt        | j                  d«       | j	                  |j
                  ¬«      }t        j                  ||dd¬«      }| j                  rXddlm	} t        | j                   || j                  t        d«      ¬«      ¬	«      g}|d
   j                  j                  |«       ng }| j                  j                  }t!        | j                  | j                  j                  | j"                  d d | j$                  t'        | j                  |g¬«      |d¬«	      | _        |j
                  | j(                  _        | j(                  j+                  |«       d| j(                  j                  _        t'        | j                  | j(                  g¬«      | _        t0        j2                  | j(                  _        | j(                  j                  | j                  _        dx| j                  _        | j                  j6                  _        | j                  |j:                  |<   | j                  j<                  s¶|j
                  rt>        j@                  r™| jB                  r4| j                  jD                  sJ ‚| j(                  | jB                  _        y tG        | j                  | j(                  ¬«      | _!        t'        | j                  | jB                  | jH                  g¬«      | _$        y y y )Nz&static cpdef methods not yet supported)rÙ  F)Úprofilerc  r   ©r³  r2  r\  ©Ú	decoratorr   r  )	r9   rm   rU   r:  r;  rC   r¼   rã  rò   T)rŸ  )%rð  rÜ  r   r9   Úcall_self_noderÙ  rü   r  rœ  r³  ÚDecoratorNoder   r\  rv   r  rm   ÚDefNoderU   rC   r   rŸ  r³   rÏ  r=  r
   r   rl  Úas_variabler  r  Úis_final_cmethodr    Úlookup_module_cpdefÚoverrideÚis_fused_specializedÚOverrideCheckNoder¼   )rŽ   r¡   Úpy_func_bodyr³  rã  rm   s         r4   rS  z"CFuncDefNode.declare_cpdef_wrapper  s1  € Ø×ÒØØ× Ò ä�$—(‘(ÐDÔEà×*Ñ*¸3×;NÑ;NÐ*ÓOˆÜ-×<Ñ<Ø˜# u¸ð =ó ?ˆð × Ò Ý+Ü'¨¯©¹HÀTÇXÁXÔTaÐbpÓTqÔ<rÔsÐtˆJØ�q‰M×#Ñ#×1Ñ1°#Õ6àˆJà�z‰z�‰ˆÜ 4§8¡8Ø$(§J¡J§O¡OØ$(§I¡IØ(,Ø,0Ø#'§8¡8Ü$0°·±À,ÀÔ$PØ*4Ø*+ô-ˆŒð (+×':Ñ':ˆ�‰Ô$Ø�‰×)Ñ)¨#Ô.Ø,0ˆ�‰×ÑÔ)Ü(¨¯©¸$¿,¹,¸ÔHˆÔÜ&×5Ñ5ˆ�‰ÔØ!%§¡×!3Ñ!3ˆ�
‰
ÔØ8<Ð<ˆ�
‰
Œ˜$Ÿ*™*×0Ñ0Ô5à ŸJ™Jˆ�‰�DÑØ—
‘
×+Ò+Ø×(Ò(¬G×,GÒ,GØ�}Š}à—z‘z×6Ò6Ð6Ð6Ø(,¯©�—‘Õ%ä 1°$·(±(ÀDÇLÁLÔ Q�”Ü(¨¯©¸$¿-¹-ÈÏÉÐ9SÔT�•	ð -Hð ,r3   c                 óè   — | j                   dk(  xs | j                  }t        |dd«      }|rF|rC|j                  r6|j                   dv s'|j                  s|j                  st        |d«       yyyyyyy)zo
        Ensure that types used in cdef functions are public or api, or
        defined in a C header.
        r  r  N)r  r—  z:Function declared public or api may not have private types)ro  rÓ  r¬   rÙ  r@  r   )rŽ   rl  r9   r¡   Úpublic_or_apir  s         r4   rO  z&CFuncDefNode._validate_type_visibility:  st   € ð
 Ÿ™¨HÑ4Ò@¸¿¹ˆÜ˜˜g tÓ,ˆÙ™U s×':Ò':Ø×$Ñ$Ð(<Ñ<Ø—I’I ×!2Ò!2Ü�cÐWÕXð "3�Ið =ð (;˜Uˆ=r3   c                 óž  — ddl m} | j                  j                  }|r%|d t	        |«      | j                  j
                  z
   }|D �cg c]  }|j                  ‘Œ }}|r5|j                  | j                  | j                  j                  ¬«      }|}�n.| j                  j                  r‹| j                  j                  j                  j                  }	|j                  | j                  |	j                  ¬«      }
|	|
_	        |j                  | j                  |
| j                  j                  ¬«      }n�| j                  j                  d   j                  j                  }|j                  | j                  |j                  ¬«      }||_	        |j                  | j                  || j                  j                  ¬«      }|xr t        j                   }|j!                  | j                  ||D �cg c]  }|j                  | j                  |¬«      ‘Œ! c}|¬«      }t#        | j                  t$        j&                  |¬«      S c c}w c c}w )Nr   ©rœ  r\  )r!  Ú	attributer   )ÚfunctionrU   Úwrapper_call)r9   rå  r¯   )rØ   rœ  rl  rU   rK   rË  rm   r³  r9   r  rÜ  r  rÝ  ÚAttributeNoder    rb  ÚSimpleCallNodeÚReturnStatNoder
   r   )rŽ   Úomit_optional_argsrÙ  rœ  rU   rÿ  Ú	arg_namesÚcfuncÚcall_arg_namesÚclass_entryÚ
class_noder•  rW  Úskip_dispatchÚnÚc_calls                   r4   r]  zCFuncDefNode.call_self_nodeF  sÔ  € ÝØ�y‰y�~‰~ˆÙØÐAœ˜T› T§Y¡Y×%AÑ%AÑAÐBˆDÙ)-Ó.© #�S—X“X¨ˆ	Ð.ÙØ×&Ñ& t§x¡x°d·j±j·o±oÐ&ÓFˆEØ&ŠNØ�Y‰Y×'Ò'ØŸ*™*×*Ñ*×6Ñ6×<Ñ<ˆKØ"×+Ñ+¨D¯H©H¸;×;KÑ;KÐ+ÓLˆJØ*ˆJÔØ×+Ñ+¨D¯H©H¸*ÐPT×PZÑPZ×P_ÑP_Ð+Ó`‰EàŸ™Ÿ™¨Ñ*×/Ñ/×5Ñ5ˆJØ ×)Ñ)¨$¯(©(¸¿¹Ð)ÓIˆHØ'ˆHŒNØ×+Ñ+¨D¯H©H¸(ÈdÏjÉjÏoÉoÐ+Ó^ˆEà,ÒL´×1LÑ1LÐMˆØ×)Ñ)Ø�H‰HØÙ@IÓJÁ	¸1�)×$Ñ$ T§X¡X°AÐ$Õ6À	ÑJØ&ð	 *ó (ˆô
  $§(¡(¼
×8QÑ8QÐY_Ô`Ð`ùò+ /ùò& Ks   ÁIÇ2$I
c                 ó¢   — | j                   j                  D ]6  }|j                  st        |j                  d«       | j                  ||«       Œ8 y )Nr_  )rl  rU   rm   r   r9   r  rF  s      r4   Údeclare_argumentszCFuncDefNode.declare_argumentsb  s:   € Ø—9‘9—>”>ˆCØ—8’8Ü�c—g‘gÐ6Ô7Ø×!Ñ! # sÕ+ñ "r3   c                 ó.   — | j                   j                  S r‡   )rl  rÎ  rM  s     r4   rO  z!CFuncDefNode.need_gil_acquisitionh  s   € Ø�y‰y×!Ñ!Ð!r3   c                 óV  — | j                   }|j                  }|j                  r…|s‚|j                  j                  rt        | j                  d«       | j                  j                  D ]<  }|j                   j                  sŒ|j                  rŒ't        | j                  d«       Œ> y y y )Nz9Function with Python return type cannot be declared nogilz8Function declared nogil has Python locals or temporaries)
rl  rÎ  rÍ  rå  r~  r   r9   rY  rì  Úin_with_gil_block)rŽ   r¡   rl  rÎ  r  s        r4   rù   zCFuncDefNode.nogil_checkk  s   € Ø�y‰yˆØ—=‘=ˆØ�:Š:™hØ×Ñ×+Ò+Ü�d—h‘hØQôSà×)Ñ)×5Ô5�Ø—:‘:×)Ó)°%×2IÓ2IÜ˜$Ÿ(™(Ð$^Õ_ñ 6ð	 'ˆ:r3   c                 ót  — |j                   | j                  _         | j                  �!| j                  j                  |«      | _        nO| j                  �!| j                  j                  |«      | _        n"| j                  |«       | j                  |«       | j                  | j                  «      | _        | S r‡   )	rÿ   rY  r=  rw   rŸ  rC  rG  rO  rŽ  r    s     r4   rw   z CFuncDefNode.analyse_expressionsv  s“   € Ø&)§n¡nˆ×ÑÔ#Ø×ÑÐ(à $× 1Ñ 1× EÑ EÀcÓ JˆDÕØ�\‰\Ð%àŸ<™<×;Ñ;¸CÓ@ˆD�Là×'Ñ'¨Ô,Ø×$Ñ$ SÔ)Ø×4Ñ4°T×5EÑ5EÓFˆÔØˆr3   c                  ó   — y©NFr2   r6  s      r4   r�  z'CFuncDefNode.needs_assignment_synthesis„  s   € Ør3   c                 óÄ  — | j                   }g }| j                  }|j                  d t        |j                  «      |j                  z
   D ]O  }	|	j                  «       }
|j                  |	j                  «      }|j                  sd|
z  }
|j                  |
«       ŒQ |rk| j                  r_t        j                  j                  t        j                  «      }| j                  r|j                  |«       n|j                  d|z  «       |j                  r:|r8|j                  |j                   j                  t        j"                  «      «       |j$                  r|j                  d«       |sdg}|€| j&                  j(                  }|j+                  |dj-                  |«      «      }| j&                  j.                  dk(  rd|vrd}nd}d }|j1                  | j&                  j2                  «      }| j4                  j                  ||¬	«      }| j6                  xs | j&                  j8                  }| j:                  rO|r2|j<                  j>                  d
   jA                  | j:                  «       |jA                  | j:                  «       |r“| jC                  «       }|r(|j<                  j>                  d
   jA                  |«       |j<                  j>                  d
   jA                  |›|›|›d�«       |r(|j<                  j>                  d
   jA                  d«       |jA                  |›|›|›d�«       |j<                  jE                  | j&                  «       y )NzCYTHON_UNUSED %sz...ÚvoidrÈ   Úprivater2  ústatic rØ   )Údll_linkageÚmodule_declarationsz; /* proto*/r…  z {)#rY  rl  rU   rK   rË  rh  rj  rm   Úcf_usedrµ  rð  r
   r	  r	   Úskip_dispatch_cnamerc  r  Úoptional_args_cnamerï  r  Ú
func_cnameÚfunction_header_coderÊ   ro  Úbuild_function_modifiersÚfunc_modifiersrå  rI  ró   r  r  ÚpartsrS   r–  Úuse_entry_utility_code)rŽ   rX   re  Úwith_opt_argsÚwith_dispatchrÛ  r  Ú	arg_declsrl  rÿ  Úarg_declr  Údispatch_argÚentityÚstorage_classr†  r=  ÚheaderÚneeds_protor÷  s                       r4   r   z%CFuncDefNode.generate_function_header‡  sÃ  € Ø× Ñ ˆØˆ	Ø�y‰yˆØ—9‘9ÐDœc $§)¡)›n¨T×-DÑ-DÑDÓEˆCØ×+Ñ+Ó-ˆHØ—L‘L §¡Ó*ˆEØ—=’=Ø-°Ñ8�Ø×Ñ˜XÕ&ð Fñ ˜T×-Ò-Ü%×0Ñ0×AÑAÜ×*Ñ*ó,ˆLà�}Š}Ø× Ñ  Õ.à× Ñ Ð!3°lÑ!BÔCØ×"Ò"¡}Ø×Ñ˜T×/Ñ/×@Ñ@Ä×A[ÑA[Ó\Ô]Ø×ÒØ×Ñ˜UÔ#ÙØ˜ˆIØˆ=Ø—J‘J×)Ñ)ˆEØ×*Ñ*¨5°$·)±)¸IÓ2FÓGˆØ�:‰:× Ñ  IÒ-°$¸eÑ2CØ%‰MàˆMØˆØ×1Ñ1°$·*±*×2KÑ2KÓLˆ	à×!Ñ!×2Ñ2°6À{Ð2ÓSˆà×,Ñ,ÒG°·
±
×0GÑ0GˆØ×$Ò$ÙØ× Ñ ×&Ñ&Ð'<Ñ=×CÑCÀD×D]ÑD]Ô^Ø�J‰J�t×0Ñ0Ô1ÙØ!%×!<Ñ!<Ó!>ÐÙ!Ø× Ñ ×&Ñ&Ð'<Ñ=×CÑCÐDVÔWØ×Ñ×"Ñ"Ð#8Ñ9×?Ñ?Ù(5±yÂ&ÐIôKá!Ø× Ñ ×&Ñ&Ð'<Ñ=×CÑCÀHÔMØ�
‰
¡±	º6ÐBÔCØ×Ñ×/Ñ/°·
±
Õ;r3   c                 óV  — | j                   }| j                  D ]Ž  }|j                  sŒ|j                  |j                  «      }| j
                  s|j                  sŒD|j                  |«      }|j                  |j                  j                  |j                  «      ›d|›d�«       Œ� y rE  )rY  rU   rZ  rj  rm   rc  rˆ  rB  rS   rl  rh  rÛ  )rŽ   r¡   rX   r  rÿ  r  r�   s          r4   r¤  z+CFuncDefNode.generate_argument_declarationsº  s|   € Ø× Ñ ˆØ—9”9ˆCØ�{‹{ØŸ™ S§X¡XÓ.�Ø—=’= E§M£MØ ×=Ñ=¸dÓC�FØ—J‘JØŸ™×1Ñ1°#·)±)Õ<ºfð Fõ Gñ r3   c                  ó   — y r‡   r2   r¸   s     r4   r«  z"CFuncDefNode.generate_keyword_listÄ  r´   r3   c           
      ó¢  ‡‡
— d}d}| j                   }| j                  j                  �rn‰j                  dt        j
                  z  «       | j                  D �]
  Š
‰
j                  sŒ|j                  ‰
j                  «      }| j                  s|j                  rÂ‰j                  dt        j
                  ›dt        j                  ›d|›d�«       ‰
j                  }t        |d«      s|j                  }t        |d«      sŒ‰j                  ‰
j                   ›dt        j
                  ›d| j                  j#                  |j                  «      ›d	�«       |d
z  }|d
z  }�Œ t%        |«      D ]  }‰j                  d«       Œ ‰j                  d«       ˆ
ˆfd„}	| j                  D ]#  Š
 |	|j'                  ‰
j                  «      «       Œ% y )Nr   r‹  úif (rJ   zn > ú) {rm   rF  rG  r   rn  c                 óP  •— | j                   r™‰j                  sŒ‰j                  | j                  ›d| j                  ›d�«       | j
                  j                  r(| j
                  j                  ‰| j                  d«       y ‰j                  | «       ‰j                  | «       y y y )NrF  rG  T)
r¥  rZ  rS   rÛ  Úoriginal_cnamerl  rÚ  Úgenerate_incref_memoryviewslicerÀ  Úput_var_giveref)r  rÿ  rX   s    €€r4   Úput_into_closurezECFuncDefNode.generate_argument_parsing_code.<locals>.put_into_closureá  sy   ø€ Ø×Ò¨¯ªØ—
‘
¨¯«°e×6JÓ6JÐKÔLØ—:‘:×0Ò0Ø—J‘J×>Ñ>¸tÀUÇ[Á[ÐRVÕWà×'Ñ'¨Ô.Ø×(Ñ(¨Õ/ð )4Ðr3   )rY  rl  rË  rS   r	   rŠ  rU   rZ  rj  rm   rc  rˆ  r  r  rL  ru  rÛ  Úopt_arg_cnameÚranger”  )rŽ   r¡   rX   rõ  r  r  r  r  r½  r£  rÿ  s     `       @r4   r½  z+CFuncDefNode.generate_argument_parsing_codeÇ  s]  ù€ ØˆØˆØ× Ñ ˆØ�9‰9×'Ó'Ø�J‰J�{¤V×%?Ñ%?Ñ?Ô@Ø—y•y�Ø—;“;Ø!ŸL™L¨¯©Ó2�EØ—}’}¨¯ªØŸ
š
Ü$*×$>Ó$>Ü$*×$7Ó$7ºð$<ô =ð &)§^¡^˜
Ü")¨*°fÔ"=Ø)3¯©˜Jô #*¨*°fÕ"=àŸ
™
Ø$'§I£I¬v×/IÓ/IØ$(§I¡I×$;Ñ$;¸J¿O¹OÕ$Lð$Nô Oð  ™	˜Ø˜‘F’Að !ô ˜4–[�Ø—
‘
˜3•ð !à�J‰J�sŒOõ	0ð —9”9ˆCÙ˜U×.Ñ.¨s¯x©xÓ8Õ9ñ r3   c                  ó   — y r‡   r2   r¸   s     r4   Ú!generate_argument_conversion_codez.CFuncDefNode.generate_argument_conversion_codeí  r´   r3   c                 óä   — | j                   j                  D ]W  }|j                  r| j                  ||«       Œ"|j                   j                  sŒ9|j
                  rŒF| j                  ||«       ŒY y r‡   )rl  rU   Úneeds_type_testr  r~  r  r  r  s      r4   rÉ  z)CFuncDefNode.generate_argument_type_testsð  sR   € ð —9‘9—>”>ˆCØ×"Ò"Ø×+Ñ+¨C°Õ6Ø—‘×%Ó%¨c¯o«oØ×,Ñ,¨S°$Õ7ñ	 "r3   c                 óþ   •— |j                   j                  d   r,|j                  | j                  «       |j	                  d«       t
        ‰| �  |«       | j                  r| j                  j                  |«       y y )Nrc  rØ   )r  rÿ   r-  r9   rS   rj   r  r=  )rŽ   rX   rN   s     €r4   r  z$CFuncDefNode.generate_execution_codeù  sa   ø€ Ø×Ñ×&Ñ& {Ò3Ø�M‰M˜$Ÿ(™(Ô#Ø�J‰J�rŒNÜ‰Ñ'¨Ô-Ø×ÒØ×Ñ×5Ñ5°dÕ;ð r3   c                 óp   — | j                   j                  ry| j                  j                  j                  S )NÚ0)rå  r~  r  rl  r°  r©   s    r4   rØ  zCFuncDefNode.error_value  s(   € Ø×Ñ×'Ò'Øà—:‘:—?‘?×2Ñ2Ð2r3   c                 óB   — | j                   j                  j                  S r‡   )r  rl  rÌ  r©   s    r4   rÛ  z)CFuncDefNode.caller_will_check_exceptions  s   € Ø�z‰z�‰×.Ñ.Ð.r3   c                 ó€  — d}| j                   }|j                  }|j                  ��|dz  }|j                  }| j                   j                  ›t        j
                  ›d|›�|_        |j                  «        | j                  |d|j                  j                  |j                  j                  |j                  ¬«       | j                  j                  s|j                  d«       | j                  j                  }|d t        |«      | j                  j                  z
   D �cg c]  }|j                  ‘Œ }}|j                  j                  r |j!                  t        j"                  «       n|j                  r|j!                  d«       |j                  j                  r |j!                  t        j$                  «       n|j                  r|j!                  d«       |j                  | j                   j                  ›dd	j'                  |«      ›d
�«       |j                  d«       |j                  ��Œy y c c}w )Nr   r   Úwrap_)r’  r‘  rÛ  úreturn r¬  r„  ri  rÈ   ro  rn  )r  rl  Ú
prev_entryr‹  r	   r  rS   r   rÏ  rË  rå  rg  r¡  rU   rK   rÛ  rµ  r‰  rŠ  rÊ   )rŽ   rX   r‘   r  rÓ  rU   rÿ  Úarglists           r4   ró  z'CFuncDefNode.generate_wrapper_functions
  s©  € ð ˆØ—
‘
ˆØ—J‘Jˆ	Ø×ÑÑ*Ø�‰FˆAØ×$Ñ$ˆEØ04·
±
×0EÒ0EÄv×GZÓGZÑ\]Ð^ˆEÔØ�J‰JŒLØ×)Ñ)Ø�aØ#Ÿj™j×7Ñ7Ø#Ÿj™j×;Ñ;Ø×&Ñ&ð	 *ô (ð
 ×#Ñ#×+Ò+Ø—‘˜Ô#Ø—9‘9—>‘>ˆDØ,0Ð1X´#°d³)¸D¿I¹I×<XÑ<XÑ2XÑ,YÓZÑ,Y S�s—y“yÐ,YˆGÐZØ�z‰z×(Ò(Ø—‘œv×9Ñ9Õ:Ø×)Ò)Ø—‘˜sÔ#Ø�z‰z×,Ò,Ø—‘œv×9Ñ9Õ:Ø×-Ò-Ø—‘˜vÔ&Ø�J‰J D§J¡J×$9Ó$9¸4¿9¹9ÀWÕ;MÐNÔOØ�J‰J�sŒOð/ ×ÑÔ*ùò [s   Ä%H;c                 ób   •— t         ‰| �  «       }| j                  r|rJ ‚d| j                  › �S |S )Nz#if )rj   r–  rE  )rŽ   Úsuper_guardrN   s     €r4   r–  z#CFuncDefNode.get_preprocessor_guard)  s;   ø€ Ü‘gÑ4Ó6ˆØ×ÒÙ"Ð"�?Ø˜$×.Ñ.Ð/Ð0Ð0ØÐr3   )r   r   r‡   )r   r   N)(r,   r-   r.   r«   rö   rQ  rã  ró  rJ  rc  r  rÐ  r=  rB  r?  rT  rY  r®  Úsetterr³   rS  rO  r]  r{  rO  rù   rw   r�  r   r¤  r«  r½  r§  rÉ  r  rØ  rÛ  ró  r–  rr   rs   s   @r4   r  r  m
  sò   ø„ ò0 T€KØ Ð0€Kà€MØ€JØÐØÐØ€HØÐØ€OØ€LØ€Lòò/ð ñOó ðOð ×Ññ(ó ð(òh%òT-Uò^
Yóaò8,ò"ò	`òóó1<òfGòò#:òLò8ô<ò3ò/ò÷>ð r3   r  c                   ó   — e Zd Zg ZdZdZd„ Zy)ÚPyArgDeclNodeFc                 ó<   — | j                   j                  ||«       y r‡   )r  r  r6  s      r4   r  z+PyArgDeclNode.generate_function_definitions<  s   € Ø�
‰
×0Ñ0°°dÕ;r3   N)r,   r-   r.   r«   r¼  rR  r  r2   r3   r4   r·  r·  1  s   „ ð €KØ€KØ€Kó<r3   r·  c                   ó   — e Zd ZdgZy)r^  r\  N©r,   r-   r.   r«   r2   r3   r4   r^  r^  @  s   „ ð �-�Kr3   r^  c                   óø   — e Zd Zg d¢ZddgZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd	„ Z	 	 dd
„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%dd„Z&d„ Z'd„ Z(d„ Z)d d„Z*d„ Z+d„ Z,d„ Z-d„ Z.y)!r_  )rU   r:  r;  r¼   rã  rE  rã  rE  FNr¬  r   Tc                 ó&  — t        j                  | |fi |¤Ž dx}x}x}}| j                  D ]G  }|j                  r|dz  }|j                  r|dz  }|j
                  s|dz  }|j
                  rŒC|dz  }ŒI || _        || _        || _        || _	        y r6   )
r@  rœ   rU   rV  rU  rZ  Únum_posonly_argsÚnum_kwonly_argsÚnum_required_kw_argsÚnum_required_args)rŽ   r9   rV   Úpr‘   ÚrkÚrrÿ  s           r4   rœ   zDefNode.__init__y  s›   € Ü×Ñ˜T 3Ñ/¨$Ò/àÐˆÐˆAÐ��QØ—9”9ˆCØ�|Š|Ø�Q‘�Ø�{Š{Ø�Q‘�Ø—{’{Ø˜!‘G�BØ—;“;Ø�Q‘‘ð ð !"ˆÔØ ˆÔØ$&ˆÔ!Ø!"ˆÕr3   c
                 óò  — | j                   r t        | j                   j                  d«       | j                  r t        | j                  j                  d«       |xs d\  }
}|xs |	}|€®g }| j                  D ]c  }|j                  |d¬«      \  }}|j                  t        j                  |j                  d |j                  t        |j                  ¬«      «       Œe t        j                  t        |dd |||	|¬«      }t        | j                  |¬	«      }�n|€|j                  }|j                  }|j                   rd
}t#        | j                  «      t#        |j                  «      k7  s|j$                  r,t        | j                  d«       t        |j                  d«       t'        t)        | j                  |j                  «      «      D ]]  \  }\  }}|j                  |d|dk(  xr |j*                  ¬«      \  }}|�|t        j                  u sŒF|j                  |_        ||_        Œ_ |
€b|j.                  �Vddlm} |j5                  | j                  t7        |j.                  «      |j8                  |j.                  j:                  ¬«      }
t=        | j                  t?        | j                  | j                  d ¬«      | j                  d|j                   |
||j@                  |jB                  ¬«	      }tE        | j                  |xs g tG        | j                  |j8                  ¬	«      || jH                  | jJ                  |jL                  ||j@                  |jB                  ddtO        |di «      |¬«      S )Nz'cdef function cannot have star argumentz+cdef function cannot have starstar argumentr�  r   r,  )rm   rÛ  r  rl  r9   F)rå  rU   rï  r°  rÌ  rÍ  rÎ  rÏ  r_  Tzwrong number of argumentszprevious declaration herer   r»  rÇ  rÉ  r«  )ru  rU   rï  rÌ  r°  rá  rÎ  rÍ  r„  ró  )r=  rm  r  r¼   rC   rð  rl  rÎ  rÍ  ro  rÓ  ró  rJ  )(r:  r   r9   r;  rU   rq  rµ  r
   rÞ  rm   r  r   rî  r=  r  rl  rÌ  rK   rï  rØ  rN  rÙ  r÷  r°  rœ  rÈ  râ  rã  rå  Úpython_valuer¯  rY  rÎ  rÍ  r  r8  r¼   rC   rÏ  r¬   )rŽ   rs  r  rð  ÚreturnsÚ
except_valrá  r=  rÍ  rÎ  r°  rÌ  Ú
cfunc_argsrV  r÷  rl  Ú
cfunc_typerõ  rW  rÈ  r  s                        r4   Úas_cfunctionzDefNode.as_cfunction‹  s
  € à�=Š=Ü�$—-‘-×#Ñ#Ð%NÔOØ×ÒÜ�$×#Ñ#×'Ñ'Ð)VÔWØ+5Ò+F¸Ñ(ˆ˜ØÒ!˜ˆàˆ=ØˆJØ"Ÿiœi�
Ø(2×(:Ñ(:¸5È1Ð(:Ó(MÑ%� Ø×!Ñ!¤*×"9Ñ"9¸×?SÑ?SØ@DØEO×EZÑEZÜ?MØ>H¿n¹nô	#Nõ Oð (ô $×-Ñ-¼.Ø3=Ø:?Ø>BØ>MØ49Ø7?Ø=HôJˆJô   §¡¨zÔ:ŠEàˆ}ØŸ™�ØŸ™ˆJØ×)Ò)ð +/Ð'Ü�4—9‘9‹~¤ Z§_¡_Ó!5Ò5¸×9OÒ9OÜ�d—h‘hÐ ;Ô<Ü�e—i‘iÐ!<Ô=Ü-6´s¸4¿9¹9ÀjÇoÁoÓ7VÖ-WÑ)�Ñ)�J Ø(2×(:Ñ(:¸5È1ØHIÈQÉÒHiÐSX×SiÑSið );ó )lÑ%� à�< 4¬:×+DÑ+DÒ#DØ&.§m¡m�J”OØ1@�JÕ.ð .Xð Ð" z×'AÑ'AÐ'MÝ,Ø'×0Ñ0Ø—‘¤ J×$>Ñ$>Ó ?Àj×F\ÑF\Ø *× :Ñ :× GÑ Gð 1ó IˆOô )¨¯©Ü.AÀ$Ç(Á(ÐQU×QZÑQZÐbfÔ.gØ.2¯i©iØ5:Ø9C×9SÑ9SØ9HØCZØ2<×2EÑ2EØ/9×/?Ñ/?ôAˆ
ô ˜DŸH™HØ&/¢o°2Ü&;¸D¿H¹HÈ:×KaÑKaÔ&bØ'1Ø!%§¡Ø $§¡Ø(2×(AÑ(AØ!+Ø%/×%8Ñ%8Ø",×"2Ñ"2Ø'0Ø %Ü-4°UÐ<NÐPRÓ-SØ.5ô7ð 	7r3   c                 óP   — | j                   ry| j                  s| j                  ryy)z·Determines if the function's signature is compatible with a
        cdef function.  This can be used before calling
        .as_cfunction() to see if that will be successful.
        FT)rT  r:  r;  r©   s    r4   Úis_cdef_func_compatiblezDefNode.is_cdef_func_compatibleÖ  s%   € ð
 ×ÒØØ�=Š=˜D×-Ò-ØØr3   c                 ór  — | j                   rn| j                   D ]_  }|j                  }|j                  sŒ| xj                  |j                  dk(  z  c_        | xj
                  |j                  dk(  z  c_        Œa | j                  r|j                  d«      rd| _        | j
                  r|j                  d«      rd| _        |j                  s|j                  rá| j                  dk(  r|j                  rd| _        n¾| j                  dk(  r#|j                  rt        | j                  d«       nŒ| j                  t        v rz| j                  snd| _        dd	lm} | j                   xs g | _         | j                   j                  d
t        | j                   || j                  t!        d«      ¬«      ¬«      «       | j#                  |«       | j                  dk(  r| j%                  |«       n| j'                  |«       | j)                  |«       | j*                  j,                  j/                  «       | _        | j.                  t0        u rd| j2                  rX|j4                  d   rI| j*                  j6                  s3| j2                  j9                  |«      \  }}|r|j:                  r|| _        | j=                  |«       t?        | j                  | | j*                  j                  | j@                  | jB                  | jD                  | j.                  ¬«      | _#        | jF                  jI                  |«       y )Nr  r2  Frk   Tr(   z7'__init_subclass__' is not supported by extension classr   rZ  r   r\  r[  z<lambda>r+  )rO  rm   rU   r:  r;  rå  )%rã  r\  rí   Úis_classmethodrm   Úis_staticmethodr”  rS  rÙ  r   r9   ÚIMPLICIT_CLASSMETHODSrœ  r³  Úinsertr^  r   Úanalyse_argument_typesÚdeclare_lambda_functionÚdeclare_pyfunctionÚanalyse_signaturer  Ú	signaturerå  r   rE  rÿ   rì  r7  r~  r[  ÚDefNodeWrapperrU   r:  r;  Ú
py_wrapperr³   )rŽ   r¡   r\  r]   r³  r½  rå  s          r4   r³   zDefNode.analyse_declarationsá  so  € Ø�?Š?Ø!Ÿ_œ_�	Ø ×*Ñ*�Ø—<“<Ø×'Ò'¨4¯9©9¸Ñ+EÑEÕ'Ø×(Ò(¨D¯I©I¸Ñ,GÑGÖ(ð	 -ð ×Ò 3§?¡?°=Ô#Aà"'ˆDÔØ×Ò C§O¡O°NÔ$Cà#(ˆDÔ à× Ò  C×$8Ò$8Ø�y‰y˜IÒ%¨#×*?Ò*?Ø'+�Õ$Ø—‘Ð1Ò1°c×6JÒ6JÜ�d—h‘hÐ YÕZØ—‘Ô3Ñ3¸D×<OÒ<OØ&*�Ô#å/Ø"&§/¡/Ò"7°R�”Ø—‘×&Ñ& q¬-Ø—H‘H©°·±ÄÈmÓ@\Ô(]ô+_ô `ð 	×#Ñ# CÔ(Ø�9‰9˜
Ò"Ø×(Ñ(¨Õ-à×#Ñ# CÔ(à×Ñ˜sÔ#ØŸ:™:×/Ñ/×;Ñ;Ó=ˆÔà×Ñœ~Ñ-°$×2MÒ2MØ�~‰~Ð1Ò2¸4¿:¹:×;PÒ;PØ!%×!<Ñ!<×!TÑ!TÐUXÓ!Y‘��;Ù ;×#:Ò#:Ø'2�DÔ$à×Ñ Ô$ä(Ø�H‰HØØ—‘—‘Ø—‘Ø—]‘]Ø×*Ñ*Ø×(Ñ(ô*ˆŒð 	�‰×,Ñ,¨SÕ1r3   c                 ó†  — |j                   j                  di «      | _        |j                   d   }|j                  }d |_        | j                  D �]Š  }t        |d«      rd }nŠ|j                  j                  |«      }t        |«      r-|j                  r!t        j                  ||j                  g«      }|j                  j                  ||«      \  }}|j                  |_        ||_        | j!                  ||«       |r"|j"                  rt%        | j&                  d«       |j                  j)                  «       |_        d |_        d|_        d|_        d|_        |j                  j2                  s,|j                  j4                  s|j                  j6                  r»|j8                  r	d|_        �n|j<                  rd|_        nó|j                  j>                  sB|j                  j@                  s,|j                  j4                  s|j                  j6                  r2|jB                  r|jB                  jD                  €d|_        nq||_        nid|_        na|j                  jF                  sKd|_        |j<                  rt%        |j&                  d	«       |j8                  rt%        |j&                  d
«       |j                  jH                  s�Œ„d| _%        �Œ� ||_        t        |«      rEtM        | j                  «      D ��	cg c]  \  }}	|	j                  jN                  sŒ|‘Œ  c}	}| _(        y g | _(        y c c}	}w )NrF  Úallow_none_for_extension_argsrm   z9Python function argument cannot have C name specificationr   r   TFz.Only Python type arguments can have 'not None'z-Only Python type arguments can have 'or None'))rÿ   rŠ   ró  rj  rU   rL  rm  rq  r"   rP  r
   rÉ  Ú
org_bufferr  rm   rl  rJ  rÛ  r   r9   Úas_argument_typeÚhdr_typer$  r©  rS  r~  rf  rÚ  rà  r  rß  Úis_extension_typer  rZ  r£  rä  ri  r9  rØ  Úis_numpy_bufferÚnp_args_idx)
rŽ   r¡   rÚ  Úf2srÿ  r÷  rm  rl  rõ  Úas
             r4   rÒ  zDefNode.analyse_argument_types  s}  € Ø #§¡× 2Ñ 2°8¸RÓ @ˆÔØ(+¯©Ð7VÑ(WÐ%à×#Ñ#ˆØ $ˆÔà—9•9ˆCÜ�s˜FÔ#Ø"&‘àŸM™M×1Ñ1°#Ó6�	ô " #Ô&¨9×+DÒ+DÜ *× 4Ñ 4Ø!à!×,Ñ,ð6.ó !/�Ið
 —N‘N×*Ñ*¨9°cÓ:ñ &� à*×/Ñ/�”Ø�”à×$Ñ$ S¨#Ô.Ù ?×#8Ò#8Ü�d—h‘hÐ [Ô\Ø—x‘x×0Ñ0Ó2ˆCŒHØˆCŒLØ#$ˆCÔ Ø"#ˆCÔØˆCŒNØ�x‰x×#Ò# s§x¡x×'9Ò'9¸S¿X¹X×=XÒ=XØ—;’;Ø&*�C–OØ—\’\Ø&+�C•OØ—h‘h×0Ò0°C·H±H×4LÒ4LØŸ8™8×-Ò-°·±×1LÒ1LØ—{’{ s§{¡{×'BÑ'BÐ'Jà*.˜�ð +H˜�ð '+�C•OØ—X‘X×&Ò&Ø"&�”Ø—<’<Ü˜#Ÿ'™'Ð#SÔTØ—;’;Ü˜#Ÿ'™'Ð#RÔSà�x‰x× Ô Ø+/�Ö(ðc ðd !$ˆÔä˜#ÔÜ-6°t·y±yÔ-AÔ\Ñ-A¡c a¨ÀQÇVÁV×E[ÓE[¢Ð-AÒ\ˆDÕà!ˆDÕùó  ]s   ÌL=Ì'L=c                 ó®  — | j                   j                  rh| j                  rt        | j                  d«       t        | j                  «      dk(  xr | j                  xs | j                   | j                   _	        �né| j                  �sÜ| j                  �sÏ|j                  d   r.t        | j                  D �cg c]  }|j                  ‘Œ c}«      �r’| j                   j                  t        j                  u r¥t        | j                  «      dk(  r!t        j                   | j                   _        �n3t        | j                  «      dk(  �r| j                  d   j"                  �€ | j                  d   j$                  sçt        j&                  | j                   _        nÇ| j                   j                  t        j(                  u r¡t        | j                  «      dk(  r t        j*                  | j                   _        nit        | j                  «      dk(  rQ| j                  d   j"                  €8| j                  d   j$                  st        j,                  | j                   _        | j                   j                  }|j/                  «       }|j1                  «       }|t        j(                  u rU|dk(  rPt        | j                  «      dk(  r8| j                  r,t        j                  x}| j                   _        d| _        dx}}| j4                  rR|j6                  rFdx}}d| _        t9        j8                  |«      x| j                   _        }d|_        d|_        d|_        | j>                  s| j4                  r1| j@                  r%|j6                  r| jB                  jD                  d d …= tG        tI        |t        | j                  «      «      «      D �]  }| j                  |   }d|_%        ||k\  rd|_&        |jO                  |«      rc| j4                  sW| j>                  r$d|_(        tR        jT                  x|_+        |_,        nd|_'        |jZ                  x|_+        |_,        d|_.        Œš|j_                  |«      |_+        |jX                  ja                  |jV                  «      rŒÖ|jV                  jb                  r|jX                  jb                  r	d|_2        �Œd|_.        �Œ |t        | j                  «      kD  r| jg                  «        y |t        | j                  «      k  rn|j<                  s| jg                  «        | j                  D ]C  }|jJ                  sŒ|jX                  jh                  s|jX                  jj                  sŒ=d|_2        ŒE |jm                  «       }|r§t        jn                  |v r”| j                   j                  s}| j                  rJd}| j                  D ]8  }|jJ                  sŒ|j$                  rŒ|jN                  rŒ*|jP                  rŒ7d}Œ: nd}|s"|jq                  «       x}| j                   _        y y y y y c c}w )	Nz8special functions of cdef classes cannot have decoratorsr   Úalways_allow_keywordsr   r%   TrÊ  F)9r  rì  rã  r   r9   rK   rU   r:  r;  Útrivial_signaturerÿ   rC  rV  rÖ  r   Úpyfunction_signatureÚpyfunction_noargsrZ  rU  Úpyfunction_oneargÚpymethod_signatureÚ	unaryfuncÚibinaryfuncÚmax_num_fixed_argsÚmin_num_fixed_argsÚself_in_starargrÏ  rÙ  r   Úfixed_arg_formatÚhas_generic_argsrÎ  r9  Údecorator_indirectionr!  r¥  ÚminrS  rT  r¼  rR  r   Ú	type_typerÝ  rl  rÝ  r$  Úfixed_arg_typerÚ  r~  r©  Úbad_signaturerÞ  r  Úmethod_flagsÚmethod_varargsÚwith_fastcall)	rŽ   r¡   rÿ  ÚsigÚnfixedÚ
min_nfixedrõ  ÚmfÚuses_args_tuples	            r4   rÕ  zDefNode.analyse_signatureX  s¢  € Ø�:‰:× Ò Ø�ŠÜ�d—h‘hÐ ZÔ[Ü+.¨t¯y©y«>¸QÑ+>Ò+kÈÏÉÒHjÐY]×YjÑYjÐCkˆD�J‰JÖ(Ø—-“- 4×#4Ó#4Ø—N‘NÐ#:Ò;Ü°·	²	Ó:±	¨˜Ÿ›°	Ñ:Õ;à�z‰z×#Ñ#¤y×'EÑ'EÑEÜ�t—y‘y“> QÒ&Ü+4×+FÑ+F�D—J‘JÖ(Ü˜Ÿ™“^ qÓ(Ø—y‘y ‘|×+Ñ+Ñ3¸D¿I¹IÀa¹L×<PÒ<PÜ/8×/JÑ/J˜Ÿ
™
Õ,Ø—‘×%Ñ%¬×)EÑ)EÑEÜ�t—y‘y“> QÒ&Ü+4×+>Ñ+>�D—J‘JÕ(Ü˜Ÿ™“^ qÒ(Ø—y‘y ‘|×+Ñ+Ð3¸D¿I¹IÀa¹L×<PÒ<PÜ/8×/DÑ/D˜Ÿ
™
Ô,à�j‰j×"Ñ"ˆØ×'Ñ'Ó)ˆØ×+Ñ+Ó-ˆ
Ø”9×/Ñ/Ñ/°F¸a²KÜ�t—y‘y“> QÒ&¨4¯=ª=ô *3×)GÑ)GÐGˆC�$—*‘*Ô&Ø#$ˆDÔ Ø"#Ð#ˆF�Zà×Ò C×$8Ò$8Ø"#Ð#ˆF�ZØ#'ˆDÔ ä)-¯©°3«Ð7ˆD�J‰JÔ  3Ø#&ˆCÔ Ø"&ˆCÔØ#'ˆCÔ à× Ò  D×$8Ò$8Ø×(Ò(¨S×-AÒ-AØ×*Ñ*×0Ñ0²Ð3ä”s˜6¤3 t§y¡y£>Ó2×3ˆAØ—)‘)˜A‘,ˆCØˆCŒNØ�JŠØ15�Ô.Ø�‰˜qÔ!¨$×*>Ò*>Ø×&Ò&Ø&'�C”OÜ.5×.?Ñ.?Ð?�C”L 3¥8à&'�C”OØ.1¯o©oÐ=�C”L 3¤8Ø'(�Õ$à"×1Ñ1°!Ó4�”Ø—x‘x×'Ñ'¨¯©Õ5Ø—|‘|×/Ò/°C·H±H×4HÒ4HØ./˜Ö+à/0˜Ö,ð' 4ð* œ˜DŸI™I›Ò&Ø×ÑÔ ØØ”c˜$Ÿ)™)“nÒ$Ø×'Ò'Ø×"Ñ"Ô$Ø—y”y�Ø—>“> s§x¡x×'AÒ'AÀSÇXÁX×E]ÓE]Ø*+�CÕ'ð !ð ×ÑÓˆÙ”)×*Ñ*¨bÑ0¸¿¹×9NÒ9Nð �}Š}Ø"&�ØŸ9œ9�CØŸ›¨s¯{«{Ø #§£¸¿»à*/™ñ	 %ð #(�á"Ø-0×->Ñ->Ó-@Ð@��d—j‘jÕ*ð #ð! :OÐ0ˆ2ùò[ ;s   Â;Yc           	      ó€  — | j                   j                  }d|j                  «       z  }|j                  r|dz  }n"|j                  r|d|j                  «       z  z  }| j                  }| j                   j                  rd}nd}t        | j                  d|| j                  t        | j                  «      |fz  «       y )Nz%dz or morez to %dzSpecial methodÚMethodz>%s %s has wrong number of arguments (%d declared, %s expected))r  rÖ  rí  rð  Úoptional_object_arg_countrì  rm   rì  r   r9   rK   rU   )rŽ   rù  Úexpected_strrm   Údescs        r4   rõ  zDefNode.bad_signature¿  s©   € Ø�j‰j×"Ñ"ˆØ˜c×4Ñ4Ó6Ñ6ˆØ×ÒØ˜JÑ&‰LØ×*Ò*Ø˜H s×'=Ñ'=Ó'?Ñ?Ñ?ˆLØ�y‰yˆØ�:‰:× Ò Ø#‰DàˆDÜˆd�h‰hÐXØ�$—)‘)œS §¡›^¨\ð\;ñ ;õ 	<r3   c                 óì  — | j                   }|j                  |«      }|r}|j                  r,|j                  j                  st        | j                  d«       |j                  j                  r/|j                  s#| j                  st        | j                  dd«       |j                  || j                  | j                   ¬«      }|| _        |j                  |j                  «      }t!        t"        j$                  |z   |z   «      | j                  _        t(        j*                  rÈt-        | j                  | j.                  «      |_        t!        t"        j0                  |z   |z   «      |_        |j4                  rr|j                   t6        j8                  v s)|j.                  r|j                   dv r|j:                  d   rd |_        y t!        t"        j>                  |z   |z   «      |_        y y d |_        y )Nz:Only final types can have final Python (def/cpdef) methodsz¥Overriding a c(p)def method with a def method. This can lead to different methods being called depending on the call context. Consider using a cpdef method for both.é   )Úallow_redefineÚ__getattr__Úfast_getattr) rm   r”  ra  rÝ  Úis_final_typer   r9   rl  rš  Úis_builtin_cmethodrò   r   rÔ  r  Únext_idÚscope_prefixr   r	   Úpyfunc_prefixÚpyfunc_cnamer    rà  rD   rC   Úfuncdoc_prefixÚ	doc_cnamerì  r   Ú	invisiblerÿ   Úwrapperbase_cnameÚwrapperbase_prefix)rŽ   r¡   rm   r  Úprefixs        r4   rÔ  zDefNode.declare_pyfunctionÎ  s  € à�y‰yˆØ—‘ Ó%ˆÙØ×%Ò%¨c¯o©o×.KÒ.KÜ�d—h‘hÐ \Ô]Ø�z‰z×&Ò&¨u×/GÒ/GÐPT×P_ÒP_Ü˜Ÿ™ð #PàQRôTð ×&Ñ& t¨T¯X©XÈ$Ï/É/ÐFYÐ&ÓZˆØˆŒ
Ø—‘˜S×-Ñ-Ó.ˆÜ"1´&×2FÑ2FÈÑ2OÐRVÑ2VÓ"Wˆ�
‰
ÔÜ×ÒÜ& t§x¡x°·±Ó:ˆEŒIÜ-¬f×.CÑ.CÀfÑ.LÈtÑ.SÓTˆEŒOØ×ÒØ—:‘:¤×!4Ñ!4Ñ4¸E¿IºIØŸ
™
 mÑ3¸¿¹À~Ò8VØ.2�EÕ+ä.=¼f×>WÑ>WÐZ`Ñ>`ÐcgÑ>gÓ.h�EÕ+ð  ð ˆE�Ir3   c                 ó¢   — |j                  | j                  | j                  «      }d |_        || _        |j
                  | j                  _        y r‡   )rÓ  Úlambda_namer9   rC   r  rÛ  r  )rŽ   r¡   r  s      r4   rÓ  zDefNode.declare_lambda_functioné  s<   € Ø×+Ñ+¨D×,<Ñ,<¸d¿h¹hÓGˆØˆŒ	ØˆŒ
Ø"'§+¡+ˆ�
‰
Õr3   c                 óV  — | j                   D ]â  }|j                  st        |j                  d«       |j                  r^|j                  |j                  |j                  |j                  «      |_        |j                  j                  r)d|j                  _	        n| j                  ||«      |_        d|j                  _        d|j                  _        |j                  |j                  _        Œä | j                  || j                  «       | j                  || j                   «       y )Nr_  r¬  r   )rU   rm   r   r9   r$  r  rl  r  r~  rú  r  r/  r  r¼  Údeclare_python_argr:  r;  rF  s      r4   r{  zDefNode.declare_argumentsï  sÎ   € Ø—9”9ˆCØ—8’8Ü�c—g‘gÐ6Ô7Ø×#Ò#ØŸO™O¨C¯H©H°c·h±hÀÇÁÓH�”	Ø—8‘8×'Ò'Ø%(�C—I‘I•Nà ×1Ñ1°#°sÓ;�”	Ø ˆC�I‰IÔØˆC�I‰IŒNØ$'§O¡OˆC�I‰IÕ!ð ð 	×Ñ  T§]¡]Ô3Ø×Ñ  T×%6Ñ%6Õ7r3   c                 óð   — |rt|j                   d   dk7  rt        j                  }nt        }|j	                  |j
                  ||j                  «      }d|_        d|_        d|_	        d|_
        ||_        y y )NÚinfer_typesFr   r¬  )rÿ   r
   Úunspecified_typer   r  rm   r9   r/  r  rú  rÂ  r  )rŽ   r¡   rÿ  rl  r  s        r4   r  zDefNode.declare_python_argÿ  si   € ÙØ�~‰~˜mÑ,°Ò5Ü!×2Ñ2‘ä%�Ø—O‘O C§H¡H¨d°C·G±GÓ<ˆEØˆEŒLØˆEŒJØˆEŒJØ$%ˆEÔ!ØˆC�Ið r3   c                 ó^  — |j                   | j                  _         | j                  |«       | j                  |«       | j	                  |«      sC| j
                  r7| j
                  d d d…   D ]"  }|j                  j                  |«      |_        Œ$ | j                  j                  |«       | S )NrÝ   )
rÿ   rY  rC  rG  r�  rã  r\  rw   rØ  Úprepare_argument_coercion)rŽ   r¡   r\  s      r4   rw   zDefNode.analyse_expressions  s�   € Ø&)§n¡nˆ×ÑÔ#Ø×#Ñ# CÔ(Ø× Ñ  Ô%à×.Ñ.¨sÔ3¸¿ºØ!Ÿ_™_©T¨r¨TÔ2�	Ø&/×&9Ñ&9×&MÑ&MÈcÓ&R�	Õ#ð 3ð 	�‰×1Ñ1°#Ô6Øˆr3   c                 ó¤  — | j                   ry| j                  s| j                  j                  ry| j                  ry| j                  j
                  ry| j                  j                  ry|j                  s|j                  r4|€| j                  j                  d   S |j                  j                  d   S |j                  xs |j                  S )NTFÚbinding)rÏ  Úspecialized_cpdefsr  rd  Úno_assignment_synthesisrì  Úis_anonymousrÙ  rÙ  rY  rÿ   r  rS  r‘  r6  s      r4   r�  z"DefNode.needs_assignment_synthesis  s­   € Ø×ÒØØ×"Ò" d§j¡j×&EÒ&EØØ×'Ò'ØØ�:‰:× Ò ØØ�:‰:×"Ò"ØØ×Ò #×"6Ò"6Øˆ|Ø×'Ñ'×2Ñ2°9Ñ=Ð=à×'Ñ'×2Ñ2°9Ñ=Ð=Ø×$Ñ$Ò<¨×(<Ñ(<Ð<r3   c                 óB   — | j                   j                  j                  S r‡   )r  rÖ  rØ  r©   s    r4   rØ  zDefNode.error_value*  s   € Ø�z‰z×#Ñ#×/Ñ/Ð/r3   c                 óB   — | j                   j                  j                  S r‡   )r  rÖ  rÌ  r©   s    r4   rÛ  z$DefNode.caller_will_check_exceptions-  s   € Ø�z‰z×#Ñ#×3Ñ3Ð3r3   c                 óh  — | j                   rB|j                  «       }t        j                  | j                   |«      }|j	                  ||«       | j
                  rA| j                  j                  | j                  _        | j                  j	                  ||«       t        j	                  | ||«       y r‡   )
Údefaults_getterr  rü   r  r  Úpy_wrapper_requiredr  r‹  rØ  r@  )rŽ   r¡   rX   Úmodule_scopeÚdirectives_nodes        r4   r  z%DefNode.generate_function_definitions0  s‰   € Ø×Òà×+Ñ+Ó-ˆLÜ4×AÑAÀ$×BVÑBVÐXdÓeˆOØ×9Ñ9¸,ÈÔMð ×#Ò#à)-¯©×)>Ñ)>ˆD�O‰OÔ&Ø�O‰O×9Ñ9¸#¸tÔDÜ×1Ñ1°$¸¸TÕBr3   c                 óˆ  — |r*| j                   r| j                  j                  ||d«       y g }| j                  j                  j
                  r5dt        j                  z  }| j                  sd|z   }|j                  |«       d„ }| j                  D ]  }|j                   ||«      «       Œ | j                  r!|j                   || j                  «      «       | j                  r!|j                   || j                  «      «       |rdj                  |«      }nd}| j                  j                  | j                  j                   «      }	|j"                  d   }
| j%                  «       }|r|
j'                  |«       |
j'                  d|	›d	|›d
�«       |r|
j'                  d«       |j'                  d|	›d	|›d�«       y )NTúPyObject *%súCYTHON_UNUSED c                 óÀ   — | j                   }|j                  r|j                  }n|j                  }|j                  j                  |«      }|j                  sd|z   }|S )Nr+  )r  r¥  r   rÛ  rl  rh  rˆ  )rÿ  r  rÛ  Údecls       r4   Úarg_decl_codez7DefNode.generate_function_header.<locals>.arg_decl_codeK  sR   € Ø—I‘IˆEØ×ÒØ×,Ñ,‘àŸ™�Ø—:‘:×.Ñ.¨uÓ5ˆDØ—=’=Ø'¨$Ñ.�ØˆKr3   rÈ   rƒ  Údeclsr…  ri  z); /* proto */r…  rž  )r&  rØ  r   r  rÖ  Úhas_dummy_argr	   rº  r£  rµ  rU   r:  r;  rÊ   rå  rh  r  r  r–  rS   )rŽ   rX   re  rf  Úarg_code_listÚself_argr.  rÿ  r  ÚdcÚ
decls_coder÷  s               r4   r   z DefNode.generate_function_header>  sz  € ÙØ×'Ò'Ø—‘×8Ñ8Ø˜.¨$ô0àØˆØ�:‰:×Ñ×-Ò-Ø%¬×(9Ñ(9Ñ9ˆHØ×)Ò)Ø+¨hÑ6�Ø× Ñ  Ô*ò		ð —9”9ˆCØ× Ñ ¡¨sÓ!3Õ4ð à�=Š=Ø× Ñ ¡¨t¯}©}Ó!=Ô>Ø×ÒØ× Ñ ¡¨t×/@Ñ/@Ó!AÔBÙØ—y‘y Ó/‰HàˆHØ×Ñ×.Ñ.¨t¯z©z×/FÑ/FÓGˆà×%Ñ% gÑ.ˆ
Ø!×8Ñ8Ó:ÐÙØ×ÑÐ/Ô0Ø×ÒÚ,.²Ð9ô	;áØ×Ñ˜XÔ&Ø�
Š
ªªHÐ5Õ6r3   c                  ó   — y r‡   r2   r6  s      r4   r¤  z&DefNode.generate_argument_declarationsl  r´   r3   c                  ó   — y r‡   r2   r¸   s     r4   r«  zDefNode.generate_keyword_listo  r´   r3   c                 óº   ‡— ˆfd„}| j                   D ]  } ||j                  «       Œ | j                  | j                  fD ]  }|sŒ ||j                  «       Œ y )Nc                 ó¼  •— | j                   �rN| j                  j                  r}| j                  j                  €J ‚‰j                  j                  t        j                  dd«      «       ‰j                  dj                  | j                  | j                  «      «       n+‰j                  | j                  ›d| j                  ›d�«       | j                  j                  r(| j                  j                  ‰| j                  d«       y | j                  r#‰j                  | «       ‰j!                  | «       y ‰j#                  | «       ‰j%                  | «       y y )NÚIncludeStringHzStringTools.czmemcpy({0}, {1}, sizeof({0}));rF  rG  T)r¥  rl  re  r«  r  rŒ  r   r˜  rS   ÚformatrÛ  r   rÚ  r¡  rÂ  rÃ  Úput_var_xgiverefrÀ  r¢  )r  rX   s    €r4   r£  z@DefNode.generate_argument_parsing_code.<locals>.put_into_closuret  s  ø€ Ø×ÓØ—:‘:×&Ò&ð !Ÿ:™:Ÿ?™?Ð6Ð6Ð6Ø×$Ñ$×5Ñ5´k×6MÑ6MÐN^Ð`oÓ6pÔqØ—J‘JÐ?×FÑFÀuÇ{Á{ÐTY×ThÑThÓiÕjà—J‘J¨U¯[«[¸%×:NÓ:NÐOÔPØ—:‘:×0Ò0ð —J‘J×>Ñ>¸tÀUÇ[Á[ÐRVÕWØ×*Ò*ð ×(Ñ(¨Ô/Ø×)Ñ)¨%Õ0à×'Ñ'¨Ô.Ø×(Ñ(¨Õ/ð+  r3   )rU   r  r:  r;  )rŽ   r¡   rX   r£  rÿ  s     `  r4   r½  z&DefNode.generate_argument_parsing_coder  sL   ø€ ô	0ð. —9”9ˆCÙ˜SŸY™YÕ'ð à—=‘= $×"3Ñ"3Ó3ˆCÚÙ  §¡Õ+ñ 4r3   c                  ó   — y r‡   r2   r¸   s     r4   rÉ  z$DefNode.generate_argument_type_tests‘  r´   r3   )	NNTNNFNFFr‡   ©r   )/r,   r-   r.   r«   rö   rÏ  rÎ  r  Úreqd_kw_flags_cnamerò   r   rã  rE  r  rŽ  rî  Úpy_cfunc_nodeÚrequires_classobjÚdefaults_structrC   Úfused_py_funcr  rØ  r&  r‹  r%  rœ   rÊ  rÌ  r³   rÒ  rÕ  rõ  rÔ  rÓ  r{  r  rw   r�  rØ  rÛ  r  r   r¤  r«  r½  rÉ  r2   r3   r4   r_  r_  G  s   „ ò, g€KØÐ!9Ð:€Kà€OØ€Nà€KØÐØ€JØÐØ€JØ!ÐØ€EØ€KØ€OØ€MØÐØ€OØ
€Cà€MØÐØ€JØÐØ€Jà€Oò#ð$ }BØ;@óI7òV	ò52òn>"ò@eAòN<òò6.ò8ò ò
ó=ò$0ò4òCó,7ò\òò,ó>r3   r_  c                   ó¼   — e Zd ZdZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zdd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z y)r×  NFc                 óR  — t        j                  | g|¢­i |¤Ž | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        | j                  j                  | _        d | _        y r‡   )	r@  rœ   rO  r½  r¾  r¿  rÀ  rî  rÖ  )rŽ   rU   r}   s      r4   rœ   zDefNodeWrapper.__init__œ  s{   € Ü×Ñ˜TÐ3 DÒ3¨FÒ3Ø $§¡× <Ñ <ˆÔØ#Ÿ{™{×:Ñ:ˆÔØ$(§K¡K×$DÑ$DˆÔ!Ø!%§¡×!>Ñ!>ˆÔØ#Ÿ{™{×:Ñ:ˆÔØˆ�r3   c                 óf  — | j                   j                  }| j                  }|j                  |j                  «      }t        t        j                  |z   |z   «      |_        t        t        j                  |z   |z   «      |_
        |j                  | _        | j                   j                  | _        y r‡   )rO  r  rm   r
  r  r   r	   Úpywrap_prefixr‹  Úpymethdef_prefixÚpymethdef_cnamerÖ  rà  )rŽ   r¡   Útarget_entryrm   r  s        r4   r³   z#DefNodeWrapper.analyse_declarations¥  sŠ   € Ø—{‘{×(Ñ(ˆØ�y‰yˆØ—‘˜S×-Ñ-Ó.ˆÜ"1´&×2FÑ2FÈÑ2OÐRVÑ2VÓ"WˆÔÜ'6´v×7NÑ7NÐQWÑ7WÐZ^Ñ7^Ó'_ˆÔ$à%×/Ñ/ˆŒàŸ;™;×2Ñ2ˆÕr3   c                 ó.  — | j                   D ]u  }|j                  j                  s|j                  j                  |«      rŒ5Œ6|j                  sŒC|j                  j                  rŒZ|j                  j                  |«      rŒvŒw | j                  r…| j                  j                  j                  sd| j                  j                  }d|_	        |j                  D ]7  }|j                  rŒ|j                  j                  sŒ'd|j                  _        Œ9 y y y )Nr   T)rU   rl  r~  Úcreate_from_py_utility_coderÝ  rÞ  r;  r  rˆ  rÂ  Úcf_assignmentsr/  r  rí   Úcf_maybe_null)rŽ   r¡   rÿ  r  Úasss        r4   r  z(DefNodeWrapper.prepare_argument_coercion°  sÌ   € ð
 —9”9ˆCØ—8‘8×'Ò'Ø—x‘x×;Ñ;¸CÕ@ØØ—“ c§l¡l×&>Ó&>Ø—|‘|×=Ñ=¸cÕBØð ð ×Ò T×%6Ñ%6×%<Ñ%<×%DÒ%Dð ×%Ñ%×+Ñ+ˆEØ$%ˆEÔ!Ø×+Ô+�Ø—z“z c§g¡g§o£oØ,0�C—G‘GÕ)ñ ,ð &EÐr3   c                 ó¨   — t        | j                  «      }|dk(  s7|dk(  r3| j                  d   j                  s| j                  d   j                  ryyr6   )rK   rU   r¼  rR  )rŽ   Úargcounts     r4   Úsignature_has_nongeneric_argsz,DefNodeWrapper.signature_has_nongeneric_argsÆ  sD   € Ü�t—y‘y“>ˆØ�qŠ=Ø˜A’ 4§9¡9¨Q¡<×#;Ò#;Ø#'§9¡9¨Q¡<×#;Ò#;ØØr3   c                 ó.   — | j                   j                  S r‡   )rÖ  rð  r©   s    r4   Úsignature_has_generic_argsz)DefNodeWrapper.signature_has_generic_argsÎ  s   € Ø�~‰~×.Ñ.Ð.r3   c                 óÀ  — g }| j                   j                  r|j                  t        j                  «       | j
                  D �]#  }|j                  j                  rX|j                  j                  t        j                  dd«      «       |j                  d|j                  j                  z  «       Œr|j                  r�|j                  j                  sk|j                  j                   sU|j                  j"                  s?|j                  |j                  j%                  |j                  j                  «      «       Œÿ|j                  |j                  j                  «       �Œ& | j&                  r/|j                  | j&                  j                  j                  «       | j(                  r/|j                  | j(                  j                  j                  «       dj+                  |«      }| j,                  j.                  s"|j1                  dt        j2                  z  «       |j5                  | j6                  j                  j8                  ›d|›d�«       y )NÚMoveIfSupportedúCppSupport.cppú__PYX_STD_MOVE_IF_SUPPORTED(%s)rÈ   z%s = ri  ro  )rÖ  r0  rµ  r	   rº  rU   rl  r˜  r  rŒ  r   r˜  r  rÛ  rÝ  rÚ  rÿ  rr  r@  r:  r;  rÊ   rå  rg  r¡  rª  rS   rO  r  )rŽ   rX   rU   rÿ  s       r4   r]  z%DefNodeWrapper.generate_function_bodyÑ  s�  € ØˆØ�>‰>×'Ò'Ø�K‰Kœ×)Ñ)Ô*Ø—9•9ˆCØ�x‰x×$Ò$ð × Ñ ×1Ñ1Ü×+Ñ+Ð,=Ð?OÓPôRà—‘Ð=ÀÇ	Á	ÇÁÑOÕPØ—’ s§x¡x×'BÒ'BØ%(§X¡X×%7Ò%7Ø%(§X¡X×%8Ò%8Ø—‘˜CŸH™H×.Ñ.¨s¯y©y¯©Ó?Õ@à—‘˜CŸI™IŸO™OÖ,ð ð �=Š=Ø�K‰K˜Ÿ™×+Ñ+×1Ñ1Ô2Ø×ÒØ�K‰K˜×)Ñ)×/Ñ/×5Ñ5Ô6Ø�y‰y˜‹ˆØ×Ñ×'Ò'Ø�H‰H�Wœv×2Ñ2Ñ2Ô3Ø�
‰
Ø�K‰K×Ñ×*Ó*ªDð2õ 	3r3   c                 ó¨	  — | j                   j                  }|j                  | j                  «       |j	                  d«       |j	                  d«       | j                   j                  «       }|r|j	                  |«       |j                  |«       |j                  «       |_        | j                   j                  ||«      xs | j                   j                  }| j                  ||«       | j                  ||«       |j                  «       }| j                  j                  rd}nd}| j                  j                   s=|j	                  | j                  j#                  t$        j&                  «      ›|›d�«       |j)                  «        |j+                  t-        d| j.                  z  «      «       | j1                  |||«       | j3                  |«       | j5                  |«       |j7                  |j8                  «       |j                  | j                  «       |j	                  d«       |j	                  d«       |j                  d«      }|j;                  |j<                  «      rÃ|j?                  |j@                  «       |jC                  |j<                  «       |j8                  jE                  «       D ]  \  }	}
|jG                  |	|
«       Œ | jI                  «       }|�%|j	                  t$        j&                  ›d|›d�«       | jK                  |«       |j?                  |«       |jC                  |j@                  «       | jK                  |«       |jC                  |«       |jL                  D ]>  }|jN                  sŒ|jP                  r|jS                  |«       Œ.|jU                  |«       Œ@ tW        |jL                  «      }| jX                  D ]u  }|jZ                  j                  rŒ|j\                  |vsŒ)|j\                  jP                  r|jS                  |j\                  «       Œ[|jU                  |j\                  «       Œw |j_                  «        | j                  j                   s"|j	                  d	t$        j&                  z  «       |j	                  d
«       |ja                  «        |r|j	                  d|z  «       y y )NrØ   z/* Python wrapper */z = 0rG  z%s (wrapper)ru  Ú
cleaned_uprF  r�  rn  r�  )1rO  rY  r-  r9   rS   r–  rš  r›  rœ  r�  rž  r   r¤  rO   rå  r~  rg  rh  r	   rª  rî  rï  r   rm   r½  rÉ  r]  rñ  r$  rÎ  rÏ  rÐ  rÑ  rÒ  rÓ  rÔ  rØ  Ú%generate_argument_values_cleanup_coderì  r/  rÂ  ré  Úput_var_decrefrÓ   rU   rl  r  rð  rò  )rŽ   r¡   rX   rN  r÷  re  rû  Úretval_initÚvalues_cleaned_up_labelrÛ  rl  r  r  Úvar_entries_setrÿ  s                  r4   r  z,DefNodeWrapper.generate_function_definitionsì  sµ  € Ø�{‰{×&Ñ&ˆà�‰�d—h‘hÔØ�
‰
�2ŒØ�
‰
Ð)Ô*Ø!Ÿ[™[×?Ñ?ÓAÐÙØ�J‰JÐ)Ô*à×Ñ˜tÔ$Ø/3¯~©~Ó/?ˆÔ,àŸ+™+×@Ñ@ÀÀdÓKò 9ØŸ+™+×8Ñ8ð 	à×%Ñ% d¨NÔ;Ø×+Ñ+¨D°$Ô7Ø×/Ñ/Ó1Ðà×Ñ×'Ò'Ø ‰KàˆKØ×Ñ×'Ò'Ø�J‰JØ× Ñ ×1Ñ1´&×2EÑ2EÔFÚðô ð 	×)Ñ)Ô+Ø×'Ñ'¬°nÀtÇyÁyÑ6PÓ(QÔRà×+Ñ+¨D°$Ð8HÔIØ×)Ñ)¨$Ô/Ø×#Ñ# DÔ)ð 	×.Ñ.¨t¯~©~Ô>à�‰�d—h‘hÔØ�
‰
�2ŒØ�
‰
Ð-Ô.ð #'§.¡.°Ó">ÐØ�?‰?˜4×+Ñ+Ô,Ø�M‰M˜$×+Ñ+Ô,Ø�N‰N˜4×+Ñ+Ô,Ø#Ÿ~™~×?Ñ?ÖA‘��tØ× Ñ  ¨Õ-ð  Bà×&Ñ&Ó(ˆGØÐ"Ø—
‘
¬×)<Ó)<ºgÐFÔGð ×6Ñ6°tÔ<Ø�M‰MÐ1Ô2ð 	�‰�t×(Ñ(Ô)à×2Ñ2°4Ô8Ø�‰Ð.Ô/à×%Ô%ˆEØ�|‹|Ø×(Ò(Ø×(Ñ(¨Õ/à×'Ñ'¨Õ.ð &ô ˜d×.Ñ.Ó/ˆØ—9”9ˆCØ—8‘8×'Ó'¨C¯I©I¸_Ò,Lð —9‘9×,Ò,Ø×(Ñ(¨¯©Õ3à×'Ñ'¨¯	©	Õ2ð ð 	×(Ñ(Ô*Ø×Ñ×'Ò'Ø�J‰J�|¤f×&9Ñ&9Ñ9Ô:Ø�
‰
�3ŒØ×ÑÔÙØ�J‰JÐ)Ð,>Ñ>Õ?ð r3   c                 óô  — g }| j                   }|j                  s| j                  r5dt        j                  z  }|j                  sd|z   }|j                  |«       | j                  D ]z  }|j                  rŒ|j                  s|j                  r|j                  d|j                  z  «       ŒG|j                  |j                  j                  |j                  «      «       Œ| | j                  j                  }|j                  s3|j!                  «       t"        j$                  gk(  r|j                  d«       |j&                  r�dt        j(                  ›dt        j*                  ›�}	|j,                  rNdt        j(                  ›dt        j.                  ›dt        j*                  ›�}
|j                  d|
›d	|	›d
�«       n|j                  |	«       |j                  rFt1        t3        | j                  «      |j5                  «       «      D ]  }|j                  d|z  «       Œ dj7                  |«      }d}|j8                  dv r|j:                  j<                  rd}d}| j>                  j                  |j@                  «      }|›d|›d|›d�}|jC                  d|z  «       |r?| j                  jD                  r(| j                  jD                  jG                  ||d¬«       y tH        jJ                  �r|jL                  �r| j                  jD                  sì|j:                  jN                  sÖ|j                  r|jP                  r¾|jL                  }|jR                  r|jU                  «       }|j                  r|j8                  dv s0|jC                  d|jV                  ›d|jY                  «       ›d�«       |j                  r@|jC                  d«       |jC                  d|jP                  z  «       |jC                  d«       |s| j                  jD                  rF|j[                  d|j\                  z  «       |j_                  | j                  j                  dd¬«       |jC                  d|z  «       y )Nr*  r+  zCYTHON_UNUSED PyObject *unusedz
PyObject *ú, PyObject *zPyObject *const *z, Py_ssize_t z
#if CYTHON_METH_FASTCALL
z
#else
z
#endif
z%CYTHON_UNUSED PyObject *unused_arg_%srÈ   rØ   r1  Fr…  ri  rh  z%s; /*proto*/T)rf  zPyDoc_STRVAR(ro  ú #if CYTHON_UPDATE_DESCRIPTOR_DOCzstruct wrapperbase %s;r…  zstatic PyMethodDef %s = rG  )Ú
allow_skipz%s {)0rÖ  r0  rî  r	   rº  rµ  rU   rS  r¼  rR  r'  rÝ  rh  rO  r  rì  rö  r   Úmethod_noargsrð  Ú
args_cnameÚ
kwds_cnameÚuse_fastcallÚnargs_cnamer¥  rK   rì  rÊ   rm   r  rÙ  rå  r‹  rS   rB  r   r    rà  rC   Úis_property_scoper  Ú
is_unicodeÚas_utf8_stringr  r!  r¡  rH  Úput_pymethoddef)rŽ   rX   re  rf  r1  rù  r  rÿ  r  Úvarargs_argsÚfastcall_argsrx  rü  r3  r˜  Údocstrs                   r4   r   z'DefNodeWrapper.generate_function_headerC  s|  € ØˆØ�n‰nˆà×Ò × 4Ò 4Ø%¬×(9Ñ(9Ñ9ˆHØ×$Ò$Ø+¨hÑ6�Ø× Ñ  Ô*à—9”9ˆCØ—>“>Ø—?’? c§o¢oØ!×(Ñ(¨¸#¿-¹-Ñ)GÕHà!×(Ñ(ØŸ™×5Ñ5°c·m±mÓDõFð ð —‘×!Ñ!ˆØ×Ò C×$4Ñ$4Ó$6¼9×;RÑ;RÐ:SÒ$SØ× Ñ Ð!AÔBØ×Óä×%Ó%¤v×'8Ò'8ð:ˆLà×Óä×)Ó)¬6×+=Ó+=¼v×?PÒ?Pð!R�à×$Ò$â%¢|ð5õ6ð ×$Ñ$ \Ô2Ø×ÒÜœ3˜tŸy™y›>¨3×+AÑ+AÓ+CÖD�Ø×$Ñ$Ð%LÈqÑ%PÕQð Eà—9‘9˜]Ó+ˆð ˆØ�J‰JÐ@Ñ@Ø—K‘K×0Ò0Ø!ˆBØ"ˆNà×Ñ×.Ñ.¨u×/?Ñ/?Ó@ˆÚ&(ª"ªhÐ7ˆØ�
‰
�? VÑ+Ô,áØ�{‰{×(Ò(ð —‘×)Ñ)×BÑBØ˜.°Tð Cô ;àä×Ó 5§9£9Ø—K‘K×-Ò-Ø—K‘K×1Ò1Ø×%Ò%¨×)@Ò)@à—Y‘YˆFà× Ò Ø×.Ñ.Ó0�à×$Ò$¨¯©Ð7]Ñ)]Ø—
’
Ø—O“OØ×.Ñ.Õ0ð2ô 3ð ×ÒØ—
‘
Ð=Ô>Ø—
‘
Ø,¨u×/FÑ/FÑFôHà—
‘
˜8Ô$á˜TŸ[™[×6Ò6Ø�H‰HØ*¨U×-BÑ-BÑBôDà× Ñ  §¡×!2Ñ!2°CÀEÐ ÔJØ�
‰
�6˜F‘?Õ#r3   c                 ój  — | j                   D ]U  }|j                  sŒ|j                  r|j                  d|j                  z  «       Œ;|j                  |j                  «       ŒW |j                  D ]   }|j                  sŒ|j                  |«       Œ" | j                  «       rndt        j                  z  }| j                  j                  r4|j                  d«       |j                  |«       |j                  d«       n|j                  |«       |j                  dt        j                  z  «       y )NzPyObject *%s = 0;zCYTHON_UNUSED Py_ssize_t %s;ú#if !CYTHON_METH_FASTCALLr…  z"CYTHON_UNUSED PyObject *const *%s;)rU   rS  r$  rS   r'  r¦  r  rì  r/  rS  r	   rg  rÖ  rf  Úkwvalues_cname)rŽ   r¡   rX   rÿ  r  Ú
nargs_codes         r4   r¤  z-DefNodeWrapper.generate_argument_declarations–  sã   € Ø—9”9ˆCØ�~‹~Ø×'Ò'Ø—J‘JÐ2°S·]±]ÑBÕCà×,Ñ,¨S¯Y©YÕ7ð ð —_”_ˆEØ�|‹|Ø×(Ñ(¨Õ/ð %ð
 ×*Ñ*Ô,à7¼&×:LÑ:LÑLˆJØ�~‰~×*Ò*Ø—
‘
Ð6Ô7Ø—
‘
˜:Ô&Ø—
‘
˜8Õ$à—
‘
˜:Ô&ð 	�
‰
Ð7¼&×:OÑ:OÑOÕPr3   c           
      ó	  — |j                  «       }|j                  }|j                  d«      }| j                  dkD  }| j                  d uxs | j
                  d uxs |}| j                  D ]5  }	|	j                  j                  rŒ|	j                  j                  |«      rŒ6Œ7 | j                  «       �r| j                  j                  r|j                  d«       |j                  d«       |j                  t        j                  ›dt        j                   ›d�«       |j                  d«       |j                  t        j                  ›dt        j                   ›d	|j#                  d
t        j                  z  «      ›d| j%                  «       ›d�«       |j                  d«       | j                  j                  r|j                  d«       |j&                  j)                  t+        j,                  dd«      «       |j                  t        j.                  ›d| j                  j0                  ›dt        j                   ›dt        j                  ›d�«       | j                  «       s*|rt3        | j4                  d«       | j7                  |«       nF| j9                  «       s| j;                  |«       n$| j=                  | j                  ||«       d| _        ||_        |jA                  |«      �rƒ|jC                  |«       |jE                  |«       | jG                  |«       |r“| jI                  | j                  |«       | j
                  rk| j
                  jJ                  jL                  r&|jO                  | j
                  jJ                  «       n%|jQ                  | j
                  jJ                  «       | j                  D ]K  }	|	j                  j                  rŒ|	j                  jR                  sŒ1|jU                  |	jJ                  «       ŒM |jW                  | jX                  jJ                  jZ                  «       |j]                  «        |j                  d| j%                  «       z  «       |jE                  |«       y )NÚargument_unpacking_doner   rp  z#if CYTHON_ASSUME_SAFE_SIZEz = PyTuple_GET_SIZE(ro  rƒ  z = PyTuple_Size(z); if (z%s < 0z	) return rG  r…  Úfastcallr  z = __Pyx_KwValues_ri  rÈ   z.This method cannot have * or keyword argumentsTr�  )/Únew_error_labelrÏ  r›  r¾  r:  r;  rU   rl  r~  rK  rS  rÖ  rf  rS   r	   rg  rd  rã  rØ  r  rŒ  r   r˜  rq  Úfastvarr   r9   r§  rQ  Úgenerate_stararg_copy_codeÚ'generate_tuple_and_keyword_parsing_codeÚneeds_values_cleanuprÎ  rÐ  rÒ  rZ  Úgenerate_arg_decrefr  rÂ  Úput_var_xdecref_clearÚput_var_decref_clearrå  ré  rÞ  rO  rß  rð  )
rŽ   r¡   rX   Ú	decl_codeÚold_error_labelÚour_error_labelÚ	end_labelÚhas_kwonly_argsÚhas_star_or_kw_argsrÿ  s
             r4   r½  z-DefNodeWrapper.generate_argument_parsing_code¯  sf  € ð ×.Ñ.Ó0ˆØ×*Ñ*ˆØ—N‘NÐ#<Ó=ˆ	à×.Ñ.°Ñ2ˆØ"Ÿm™m°4Ð7ò @Ø× Ñ ¨Ð,ò@Ø0?ð 	ð —9”9ˆCØ—8‘8×'Ó'Ø—x‘x×;Ñ;¸CÕ@Øð ð ×*Ñ*Õ,Ø�~‰~×*Ò*Ø—
‘
Ð6Ô7Ø�J‰JÐ4Ô5Ø�J‰JÜ×"Ó"¤F×$5Ó$5ð7ô 8à�J‰J�wÔð �J‰JÜ×"Ó"Ü×!Ó!Ø—‘˜h¬×);Ñ);Ñ;Õ<Ø× Ñ Õ"ð	ô ð �J‰J�xÔ Ø�~‰~×*Ò*Ø—
‘
˜8Ô$Ø×Ñ×)Ñ)Ü×#Ñ# JÐ0EÓFô	Hà�
‰
Ü×!Ó! 4§>¡>×#9Ó#9¼6×;LÓ;LÌf×N`ÓN`ðbô 	cð ×.Ñ.Ô0Ù"Ü�d—h‘hÐ PÔQØ×2Ñ2°4Õ8à×3Ñ3Ô5ð ×+Ñ+¨DÕ1ð ×8Ñ8¸¿¹ÀDÈ)ÔTØ(,ˆDÔ%à*ˆÔØ�?‰?˜?Õ+Ø�M‰M˜)Ô$Ø�N‰N˜?Ô+Ø×6Ñ6°tÔ<á"Ø×(Ñ(¨¯©¸Ô=Ø×$Ò$Ø×(Ñ(×.Ñ.×>Ò>Ø×2Ñ2°4×3DÑ3D×3JÑ3JÕKà×1Ñ1°$×2CÑ2C×2IÑ2IÔJØ—y”y�Ø—x‘x×+Ó+°·±×0JÓ0Jð ×(Ñ(¨¯©Õ3ð	 !ð
 ×"Ñ" 4§;¡;×#4Ñ#4×#CÑ#CÔDØ×,Ñ,Ô.Ø�J‰J�| d×&6Ñ&6Ó&8Ñ8Ô9à�‰�yÕ!r3   c                 ó@   — |r|j                  |j                  «       y y r‡   )r|  r  ©rŽ   rÿ  rX   s      r4   Úgenerate_arg_xdecrefz#DefNodeWrapper.generate_arg_xdecrefþ  s   € ÙØ×&Ñ& s§y¡yÕ1ð r3   c                 ó@   — |r|j                  |j                  «       y y r‡   )r}  r  r…  s      r4   r{  z"DefNodeWrapper.generate_arg_decref  s   € ÙØ×%Ñ% c§i¡iÕ0ð r3   c                 óÄ  — d| j                  «       › d�}| j                  j                  «       }| j                  si|j                  j                  t        j                  dd«      «       |j                  dt        j                  › d|› dt        j                  › d|› d	�	«       |j                  d
t        j                  › d| j                  rdnd› dt        j                  › d| j                  j                  › dt        j                  › d�«       |j                  dt        j                  › d|› �«       | j                  �rÒ|j                  dt        j                  › d�«       |j                  j                  t        j                  dd«      «       |j                  d|› dt        j                  › d|› �«       | j                  j                   j"                  �r%d| j                  j                   _        | j                  j                   j&                  }|j                  |› d| j                  j                  › dt        j                  › dt        j(                  › d�«       |j                  d|› d|› �«       |j+                  | j                  j                   «       |j                  d«       |j                  |› d�«       |j                  d|› d|› �«       |j+                  | j                  j                   «       |j                  d«       ni|j                  j                  t        j                  d d«      «       |j                  dt        j                  › d!|› dt        j                  › d|› d�	«       | j,                  �r­| j.                  j0                  �s–| j                  j2                  rJ ‚| j                  j                   j&                  }|j                  |› d"t        j                  › d#|j5                  || j6                  «      › �«       |j+                  | j                  j                   «       |j9                  t        j:                  t<        «       |j?                  t        j:                  t<        «       |j                  |jA                  d$|› d%t        j:                  › d&�| j6                  «      «       |jB                  jE                  tF        jH                  d¬'«      }|j                  d(|› d)|› d*t        j                  › d+|› d,�	«       |j                  d-t        jJ                  › d|› d�«       |j                  d.«       |j                  |j5                  d/| j6                  «      «       |j                  d0«       |j9                  d/t<        «       |j?                  d/t<        «       |j                  |jA                  d$|› d|› d1�| j6                  «      «       |j                  d«       |jB                  jM                  |«       d2| j                  j                   _        y | j                  r�| j                  j2                  rJ ‚| j                  j                   j&                  }|j9                  t        jJ                  t<        «       |j                  |› dt        jJ                  › d�«       d2| j                  j                   _        y y )3Nr°  rG  ÚRaiseArgTupleInvalidr  r�  z$ > 0)) { __Pyx_RaiseArgtupleInvalid(z, 1, 0, 0, r"  ú }úconst Py_ssize_t rF  rØ   rã  ri  ú) ? __Pyx_NumKwargs_ú) : 0;ú < 0)) r�  z > 0) {ÚKeywordStringCheckz'if (unlikely(__Pyx_CheckKeywordStrings(rÈ   z
) == -1)) Fz = __Pyx_KwargsAsDict_ro  úif (unlikely(!z)) rm  z = PyDict_New();rn  ÚRejectKeywordsz > 0)) {__Pyx_RejectKeywords(z = PyTuple_New(z + 1); z__Pyx_PyTuple_SET_ITEM(z, 0, rh  r   úfor (ú=0; ú < ú; ú++) {z(PyObject* item = __Pyx_PyTuple_GET_ITEM(z#if !CYTHON_ASSUME_SAFE_MACROSrÍ   r…  z	+1, item)r   )'rØ  rm   r!  r:  r  rŒ  r   r˜  rS   r	   rg  Úkwds_len_cnamer;  re  rÖ  rw  r  rˆ  rÂ  rÛ  rq  Úput_var_gotrefrî  rO  rÏ  rf  r'  r9   r¸  rº  r   rJ  Úerror_goto_if_negr$  r%  r
   Úc_py_ssize_t_typerd  r-  )rŽ   rX   Ú
goto_errorÚfunction_nameÚstarstar_arg_cnameÚstar_arg_cnamer.  s          r4   rx  z)DefNodeWrapper.generate_stararg_copy_code  sÞ  € à˜t×/Ñ/Ó1Ð2°!Ð4ˆ
ØŸ	™	×5Ñ5Ó7ˆà�}Š}Ø×Ñ×-Ñ-Ü×'Ñ'Ð(>Ð@UÓVôXà�J‰JØ¤× 2Ñ 2Ð3ð 4/à/<¨o¸[Ì×I[ÑI[ÐH\Ð\_Ø�,ð ðôð 	�
‰
Ø¤× 5Ñ 5Ð6°cØ×&Ò&‰r¨JÐ7°q¼×9JÑ9JÐ8Kð LØ#Ÿ~™~×5Ñ5Ð6°a¼×8IÑ8IÐ7JÈ&ðRô	
ð
 	�
‰
�]¤6×#8Ñ#8Ð"9¸ÀÀÐMÔNà×ÓØ�J‰J˜œf×3Ñ3Ð4°HÐ=Ô>à×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>SÓTôVà�J‰JØ9¸-¸ÈÌ6×K\ÑK\ÐJ]Ð]gÐhrÐgsÐtôð
 × Ñ ×&Ñ&×.Ó.Ø:?�×!Ñ!×'Ñ'Ô7Ø%)×%6Ñ%6×%<Ñ%<×%BÑ%BÐ"Ø—
‘
Ø)Ð*Ð*@ÀÇÁ×AWÑAWÐ@XÐXYÜ×(Ñ(Ð)¨¬F×,AÑ,AÐ+BØðôð
 —
‘
˜^Ð,>Ð+?¸sÀ:À,ÐOÔPØ×#Ñ# D×$5Ñ$5×$;Ñ$;Ô<à—
‘
˜:Ô&Ø—
‘
Ð0Ð1Ð1AÐBÔCØ—
‘
˜^Ð,>Ð+?¸sÀ:À,ÐOÔPØ×#Ñ# D×$5Ñ$5×$;Ñ$;Ô<à�J‰J�s�Oð ×Ñ×-Ñ-Ü×'Ñ'Ð(8Ð:OÓPôRà�J‰JØ¤× 5Ñ 5Ð6ð 7(à(5 °b¼×9JÑ9JÐ8KÈ3Ø�,Øð	ôð ×Ó¨¯©×(CÓ(CØ—~‘~×2Ò2Ð2Ð2Ø!Ÿ]™]×0Ñ0×6Ñ6ˆNà�J‰JØ!Ð" /´&×2DÑ2DÐ1EÀWØ×*Ñ*¨>¸4¿8¹8ÓDÐEðGôð ×Ñ §¡× 3Ñ 3Ô4Ø�O‰OœF×-Ñ-¬~Ô>Ø×ÑœV×.Ñ.´Ô?Ø�J‰JØ×&Ñ&Ð)@ÀÐ@PÐPUÔV\×VgÑVgÐUhÐhiÐ'jÐlp×ltÑltÓuôwà—>‘>×/Ñ/´
×0LÑ0LÐY^Ð/Ó_ˆDØ�J‰JØ˜�v˜T $  s¬6×+=Ñ+=Ð*>¸bÀÀÀfÐMôOà�J‰JØ:¼6×;LÑ;LÐ:MÈRÐPTÈvÐUWÐXôZà�J‰JÐ7Ô8Ø�J‰J�t×.Ñ.¨v°t·x±xÓ@ÔAØ�J‰J�xÔ Ø�O‰O˜F¤NÔ3Ø×Ñ˜V¤^Ô4Ø�J‰JØ×&Ñ&Ð)@ÀÐ@PÐPRÐSWÐRXÐXaÐ'bÐdh×dlÑdlÓmôoà�J‰J�sŒOØ�N‰N×'Ñ'¨Ô-Ø23ˆD�M‰M×ÑÕ/Ø�]Š]Ø—~‘~×2Ò2Ð2Ð2Ø!Ÿ]™]×0Ñ0×6Ñ6ˆNØ�O‰OœF×-Ñ-¬~Ô>Ø�J‰JØ!Ð" #¤f×&7Ñ&7Ð%8¸Ð:ô<à23ˆD�M‰M×ÑÕ/ð r3   c                 ó@  — |j                   j                  t        j                  dd«      «       | j                  j                  «       }|j                  d«      }|j                  | j                  «      }g }g }g }	dx}
}|D ]‰  }|j                  sŒ|j                  s|j                  rŒ)|j                  r |j                  r|	n|j                  |«       ŒU|j                  |«       |j                  sŒs|
dz  }
|j                  rŒ…|dz  }Œ‹ ||	z   }| j                   | j"                  z
  }t%        |«      dkD  r#|d   j                  s|d   j                  r|dz  }t%        |«      }| j&                   xr ||k(  }t)        |«      }| j*                  s| j&                  r| j-                  ||«       t/        |«      t/        |«      z   }|D �cg c]  }|j                  rŒ|‘Œ }}|xs | j*                  }|j1                  d«       |rodj3                  |D �cg c]*  }d|j5                  |j6                  j                  «      › �‘Œ, c}d	gz   «      }|j1                  d
t8        j:                  ›d|›d�«       | j=                  |||«       |j1                  dt8        j>                  › d|rdnd› dt8        j@                  › d| jB                  jD                  › dt8        j@                  › d�«       |j1                  dt8        j>                  › d|› �«       t8        j>                  › d�}| j"                  dkD  rd|z  }|j1                  d|z  «       |sY|j                   j                  t        j                  dd«      «       |j1                  d|› dt8        j@                  › d|› �«       �nh| jG                  |||||||«       | jI                  |||«       | jK                  ||«       ||kD  rŠ|j                   j                  t        j                  dd«      «       |j1                  dt8        jL                  › d|› d �«       |j1                  d!|› d|d"›d|d"›d|d"›d#|› d$�«       |j1                  d%«       | j"                  r‘|j                   j                  t        j                  d&d«      «       |j1                  d|› d|| j"                  z   › d �«       |j1                  d'|› d(t8        j:                  › d)|
› d*|› d$�	«       |j1                  d%«       | j"                  r|dkD  s||k(  rL||k(  r| j&                  sd+}nd,}|j1                  d-t8        jL                  ||fz  «       |jO                  |«       | j"                  rÝ||kD  rA| j&                  s5|j1                  d.t8        jL                  |fz  «       |jO                  |«       |j1                  d/«       |D ]  }|j                  rŒ|j                   j                  t        j                  d&d«      «       |j5                  |j6                  j                  «      }|j1                  d0|› d|› d|› �«        �nE �nB|j1                  d/«       ||k(  rltQ        |«      D ]\  \  }}|j1                  d1|› d2| jB                  jD                  › dt8        jR                  › d|› d3�	«       |j1                  d4|› d5|› �«       Œ^ �n®|j1                  d6t8        jL                  › d7�«       | j&                  r|j1                  d8«       tU        tQ        |«      «      d d d9…   }|D ]™  \  }}||dz
  k\  r5||d   d   k7  r|j1                  d:«       |j1                  d;|dz   d<›d=�«       |j1                  d1|› d2| jB                  jD                  › dt8        jR                  › d|› d3�	«       |j1                  d4|› d5|› �«       Œ› |dk(  r"|j1                  d:«       |jW                  d>«       |j1                  d?«       | j&                  r?|r_tY        |dz
  d9d9«      D ]  }|j1                  d;|d<›d=�«       Œ |jO                  |«       n"|jW                  d@«       |jO                  |«       |j1                  d%«       | jK                  ||«       |j1                  d%«       tQ        |«      D ]  \  }}| j[                  |d1|› dA�|«       Œ |j1                  d%«       |j]                  |«      rœ|j                  dB«      }|jO                  |«       |j_                  |«       |j                   j                  t        j                  dd«      «       |j1                  dC||||t8        jL                  |fz  «       |j_                  |«       y y c c}w c c}w )DNru  r  Úargtuple_errorr   r   Ú{Ú,Ú&r¬  zPyObject ** const z[] = {ú};r‹  rF  rØ   rã  ri  rŒ  r�  r�  rŽ  z > 0z
likely(%s)r‹  r‘  z__Pyx_RejectKeywords(rÈ   r"  r‰  zfor (Py_ssize_t i = z; i < z; i++) {z7if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid(rß   z, i); rŠ  rn  ÚRaiseKeywordRequiredz7if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired(z, *(z[i - z])); z!=Ú<z } else if (unlikely(%s %s %d)) {z} else if (unlikely(%s > %d)) {rm  z__Pyx_RaiseKeywordRequired(úvalues[ú] = __Pyx_ArgRef_ro  ú3if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[ú])) úswitch (rž  údefault:rÝ   úCYTHON_FALLTHROUGH;úcase Ú2drà   ú	case  0: úbreak;ú	default: Ú]Úskipz2__Pyx_RaiseArgtupleInvalid(%s, %d, %d, %d, %s); %s)0r  rŒ  r   r˜  rm   r!  r›  r+  r9   rS  r¼  rR  rU  rZ  rµ  rV  rÀ  r¿  rK   r:  Úboolr;  Úgenerate_stararg_init_codeÚtuplerS   rÊ   Úintern_identifierr  r	   Úpykwdlist_cnameÚ#generate_argument_values_setup_coder—  re  rÖ  rw  Úgenerate_posargs_unpacking_codeÚgenerate_keyword_unpacking_codeÚ*generate_argument_defaults_assignment_coderg  rÐ  rØ  rd  r­   r¡  r¥  Úgenerate_arg_assignmentrÎ  rÒ  )rŽ   rU   rX   r~  Úself_name_csafeÚargtuple_error_labelr›  r—  Úrequired_kw_only_argsÚoptional_kw_only_argsÚnum_pos_only_argsÚnum_required_pos_only_argsrÿ  Úkw_only_argsÚmin_positional_argsÚmax_positional_argsÚhas_fixed_positional_countÚhas_kw_only_argsÚall_argsÚnon_posonly_argsÚaccept_kwd_argsÚnon_pos_args_idÚkw_unpacking_conditionÚcompareÚpystring_cnamerõ  Úreversed_argsÚskip_error_handlings                               r4   ry  z6DefNodeWrapper.generate_tuple_and_keyword_parsing_codek  s¡	  € Ø×Ñ×)Ñ)Ü×#Ñ# JÐ0EÓFô	Hð Ÿ)™)×7Ñ7Ó9ˆà#Ÿ~™~Ð.>Ó?ÐØ—_‘_ T§X¡XÓ.ˆ
àˆØ "ÐØ "ÐØ9:Ð:ÐÐ6ÛˆCØ—>’>ØØ�Š #§/¢/Øà�{Š{Ø*-¯+ª+Ñ&Ð;P×XÑXÐY\Õ]à×&Ñ& sÔ+Ø—<“<Ø%¨Ñ*Ð%ØŸ;›;Ø2°aÑ7Ñ2ð ð" -Ð/DÑDˆà"×4Ñ4°t×7PÑ7PÑPÐÜˆt‹9�qŠ=˜d 1™g×1Ò1°T¸!±W×5HÒ5HØ 1Ñ$ÐÜ! /Ó2ÐØ)-¯©Ð%6ò &7ØÐ#6Ñ6ð 	#ä Ó-Ðà×Ò §¢Ø×+Ñ+Ð,?ÀÔFä˜Ó)¬E°,Ó,?Ñ?ˆÙ+3ÓH©8 C¸3¿<»<šC¨8ÐÐHØ*Ò?¨d×.?Ñ.?ˆà�
‰
�3ŒÙØ!Ÿh™há+ó(á+�Cð �D×*Ñ*¨3¯9©9¯>©>Ó:Ð;Ò<Ø+ñ(ð �ñ(ó ˆOð �JŠJÜ×&Ó&Úð!ô "ð 	×0Ñ0°¸4ÀÔKð 	�
‰
Ø¤× 5Ñ 5Ð6°cÙ$‰r¨*Ð5°Q´v×7HÑ7HÐ6Ið JØ#Ÿ~™~×5Ñ5Ð6°a¼×8IÑ8IÐ7JÈ&ðRô	
ð
 	�
‰
�]¤6×#8Ñ#8Ð"9¸ÀÀÐMÔNä$*×$9Ñ$9Ð#:¸$Ð!?ÐØ×$Ñ$ qÒ(Ø%1Ð4JÑ%JÐ"ð 	�
‰
�;Ð!7Ñ7Ô8áà×Ñ×-Ñ-Ü×'Ñ'Ð(8Ð:OÓPôRà�J‰JÐ.¨Ð.?¸rÄ&×BSÑBSÐATÐTWÐXbÐWcÐdÖeð ×0Ñ0Ø#Ð%8Ø*Ð,<¸hÐH\Ð^bôdð ×0Ñ0Ø# X¨tô5ð ×;Ñ;¸HÀdÔKð #Ð%?Ò?Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,BÐDYÓZô\à—
‘
Ð1´&×2DÑ2DÐ1EÀVÐL_ÐK`Ð`iÐjÔkØ—
‘
ð2à&Ð' rØ1°!Ð4°BØ*¨1Ð-¨RØ*¨1Ð-ð .à!�lð #ðô
ð —
‘
˜3”à×(Ò(Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,BÐDYÓZô\à—
‘
Ð1Ð2EÐ1FÀfÐM`Ðcg×c|Ñc|ÑM|ÐL}ð  ~Gð  Hô  IØ—
‘
ð2à&Ð'ð (Ü×/Ñ/Ð0°Ð6GÐ5Hð Ià!�lð #ðôð —
‘
˜3”ð ×%Ò%Ð*=ÀÒ*AÐFYÐ]pÒFpð #Ð&9Ò9À$Ç-Â-Ø‘à�Ø�J‰JÐ9Ü×"Ñ" GÐ-@ð=Bñ Bô Cà�M‰MÐ.Ô/à×$Ò$à"Ð%8Ò8ÀÇÂØ—
‘
Ð<Ü×&Ñ&Ð(;ð@=ñ =ô >à—‘Ð2Ô3Ø�J‰J�zÔ"Û#�Ø—{“{à×$Ñ$×5Ñ5Ü#×/Ñ/Ð0FÐH]Ó^ô`à%)×%;Ñ%;¸C¿I¹I¿N¹NÓ%K�NØ—J‘JÐ!<¸_Ð<MÈRÐP^ÐO_Ð_bÐcmÐbnÐoÔpÚò $ð �J‰J�zÔ"Ø"Ð&9Ò9ô (¨Ö8‘F�A�sØ—J‘JØ! ! Ð$5°d·n±n×6LÑ6LÐ5MÈQÌv×O`ÑO`ÐNaÐacÐdeÐcfÐfhÐiôkà—J‘JÐ!TÐUVÐTWÐW[Ð\fÐ[gÐhÕiò 9ð —
‘
˜X¤f×&8Ñ&8Ð%9¸Ð>Ô?Ø—=’=Ø—J‘J˜zÔ*Ü $¤Y¨Ó%?Ó @ÁÀ2ÀÑ F�Û+‘F�A�sØÐ/°Ñ1Ò1Ø ¨aÑ 0°Ñ 3Ò3Ø ŸJ™JÐ'<Ô=ØŸ
™
 U¨1¨Q©3¨r¨(°!Ð#4Ô5Ø—J‘JØ! ! Ð$5°d·n±n×6LÑ6LÐ5MÈQÌv×O`ÑO`ÐNaÐacÐdeÐcfÐfhÐiôkà—J‘JÐ!TÐUVÐTWÐW[Ð\fÐ[gÐhÕið ,ð '¨!Ò+Ø—J‘JÐ4Ô5Ø—H‘H˜[Ô)Ø—
‘
˜8Ô$Ø—=’=Ù*Ü!&Ð':¸1Ñ'<¸bÀ"Ö!E˜AØ ŸJ™J¨¨q°¨f°A Õ7ð "FàŸ™Ð&:Õ;à—H‘H˜[Ô)Ø—M‘MÐ"6Ô7Ø—
‘
˜3”ð ×;Ñ;¸HÀdÔKà�
‰
�3Œô
   Ö)‰FˆAˆsØ×(Ñ(¨°¸°s¸!¨n¸dÕCð *ð 	�
‰
�3Œà�?‰?Ð/Ô0Ø"&§.¡.°Ó"8ÐØ�M‰MÐ-Ô.à�N‰NÐ/Ô0Ø×Ñ×-Ñ-Ü×'Ñ'Ð(>Ð@UÓVôXà�J‰JÐKØÐ!;Ø#Ð%8Ü×"Ñ"Øð	Oñ ô ð �N‰NÐ.Õ/ð 1ùò_ Iùò
(s   ÇfÇfÈ/fc                 ó\  — |j                   j                  rÔ|j                   j                  rU|j                   j                  dv r=|j                   j	                  ||j
                  ||j                  |j                  «       |j                  r/t        j                  |j                   t        j                  |«      }|j                  }|j                  |j                  ›d|›d�«       y |j                   j                  �r|j                   r|j                  d|z  «       |j                  |j                   j#                  ||j                  j                  |j
                  |«      «       |j                   r�|j                  d«       |j                  |j                  j                  ›d|j%                  |«      ›d�«       |j                   j&                  r|j)                  |j                  d¬«       |j                  d«       y y t+        |j
                  d	|j                   z  «       y )
N)r¤  rì  rF  rG  r‹  rm  Trq  rn  ú2Cannot convert Python object argument to type '%s')rl  r~  r  rm   Úconvert_to_basetyper9   r  r"  rS  r
   Útypecastr   r  rS   rÛ  Úfrom_py_functionrZ  Úfrom_py_call_coderB  rÚ  rÁ  r   )rŽ   rÿ  rÍ   rX   r  s        r4   r¾  z&DefNodeWrapper.generate_arg_assignmentU  sƒ  € Ø�8‰8×Òà�x‰x×'Ò'¨C¯H©H¯M©MÐ=MÑ,MØ—‘×,Ñ,¨T°3·7±7¸DÀ#Ç/Á/ÐSV×ScÑScÔdØ�~Š~Ü!×*Ñ*¨3¯8©8´Z×5NÑ5NÐPTÓU�Ø—I‘IˆEØ�J‰J U§[£[²$Ð7Õ8à�x‰x×(Ó(Ø—;’;à—J‘J˜{¨TÑ1Ô2Ø—
‘
˜3Ÿ8™8×5Ñ5Ø˜#Ÿ)™)Ÿ/™/¨3¯7©7°Dó:ô ;à—;’;Ø—J‘J˜zÔ*Ø—J‘JØŸ	™	Ÿ›Ø×8Ñ8¸Õ>ð @ô Að —x‘x×2Ò2Ø×;Ñ;¸C¿I¹IÐPTÐ;ÔUØ—J‘J˜s•Oð ô �c—g‘gÐSÐVY×V^ÑV^Ñ^Õ_r3   c                 óÐ  — | j                   rÄ| j                   j                  j                  r¤d| j                   j                  _        |j	                  | j                   j                  j
                  ›d| j                   j                  j
                  ›d| j                  «       ›d�«       |j                  | j                   j                  «       | j                  �r	d| j                  j                  _        |dk(  r€| j                  j                  rJ ‚|j                  t        j                  t        «       |j	                  | j                  j                  j
                  ›dt        j                  ›d�«       y |j	                  | j                  j                  j
                  › d| j                  j                  › dt        j                  › d|› dt        j                   › d	�
«       |j	                  d
| j                  j                  j"                  j%                  | j                  j                  j
                  «      › d�«       | j                   r%|j'                  | j                   j                  «       |j)                  «        |j	                  d| j                  «       › d�«       |j	                  d«       |j                  | j                  j                  «       y y )Nr   z = PyDict_New(); if (unlikely(!z
)) return rG  rF  z = __Pyx_ArgsSlice_ri  rÈ   ro  r�  ú)) {r°  rn  )r;  r  rˆ  rÂ  rS   rÛ  rØ  r˜  r:  rÖ  rf  r¸  r	   rd  r   rw  rg  rl  Únullcheck_stringr}  rð  )rŽ   rÇ  rX   s      r4   r¶  z)DefNodeWrapper.generate_stararg_init_codep  s'  € à×Ò ×!2Ñ!2×!8Ñ!8×!@Ò!@Ø67ˆD×Ñ×#Ñ#Ô3Ø�J‰JØ×!Ñ!×'Ñ'×-Ó-Ø×!Ñ!×'Ñ'×-Ó-Ø× Ñ Õ"ð$ô %ð ×Ñ × 1Ñ 1× 7Ñ 7Ô8Ø�=‹=Ø23ˆD�M‰M×ÑÔ/Ø" aÒ'ð  Ÿ>™>×6Ò6Ð6Ð6Ø—‘¤× 1Ñ 1´>ÔBØ—
‘
¨¯©×)<Ñ)<×)BÓ)BÄF×DUÓDUÐVÕWð
 —
‘
Ø—}‘}×*Ñ*×0Ñ0Ð1Ð1DÀTÇ^Á^×E[ÑE[ÐD\Ð\]Ü×(Ñ(Ð)¨Ð,?Ð+@ÀÄ6×CUÑCUÐBVØðôð
 —
‘
Ø$ T§]¡]×%8Ñ%8×%=Ñ%=×%NÑ%NÈtÏ}É}×ObÑOb×OhÑOhÓ%iÐ$jÐjoÐpôrà×$Ò$Ø×-Ñ-¨d×.?Ñ.?×.EÑ.EÔFØ×0Ñ0Ô2Ø—
‘
˜W T×%5Ñ%5Ó%7Ð$8¸Ð:Ô;Ø—
‘
˜3”Ø×#Ñ# D§M¡M×$7Ñ$7Õ8ð1 r3   c                 ó\  — t        |«      }|j                  d|dj                  d|z  «      fz  «       | j                  j                  rc|j                  d| j                  j                  ›dt
        j                  ›d| j                  j                  ›dt
        j                  ›d�	«       y y )	NzPyObject* values[%d] = {%s};r¢  r¬  ústruct z *z$ = __Pyx_CyFunction_Defaults(struct rÈ   ro  )rK   rS   rÊ   rO  rA  r	   Údynamic_args_cnamerº  )rŽ   rU   rX   r~  Úmax_argss        r4   rº  z2DefNodeWrapper.generate_argument_values_setup_code“  s‰   € Ü�t“9ˆð 	�‰Ð6Ø�c—h‘h˜s 8™|Ó,ð:.ñ .ô 	/ð �;‰;×&Ò&Ø�JŠJØ—‘×+Ó+¬V×-FÓ-FØ—‘×+Ó+¬V×->Ó->ð@õ Að 'r3   c                 óü   — t        |«      D ]n  \  }}|j                  sŒ|j                  j                  sŒ*|j	                  |«      }|j                  d|› d|› d|j                  j                  |«      › d�«       Œp y )Nzif (!values[z
]) values[z] = __Pyx_NewRef(ro  )rØ  rZ  rl  r~  rB  rS   Úas_pyobject)rŽ   rU   rX   rõ  rÿ  rí  s         r4   r½  z9DefNodeWrapper.generate_argument_defaults_assignment_code   sk   € ä –o‰FˆAˆsØ�{‹{˜sŸx™x×3Ó3Ø #× @Ñ @ÀÓ F�Ø—
‘
˜\¨!¨¨J°q°cÐ9JÈ3Ï8É8×K_ÑK_Ð`mÓKnÐJoÐoqÐrÕsñ &r3   c           	      óÀ   — | j                   sy t        j                  }|j                  d|› d|› d|› d�«       |j                  d|› d�«       |j                  d«       y )Nzfor (Py_ssize_t r“  z5 < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++rž  zPy_XDECREF(values[z]);rn  )rz  r	   Úquick_temp_cnamerS   )rŽ   rX   Úloop_vars      r4   rZ  z4DefNodeWrapper.generate_argument_values_cleanup_code§  sj   € Ø×(Ò(Øä×*Ñ*ˆØ�
‰
Ð% h Z¨t°H°:Ð=rÐs{Ðr|ð  }Að  Bô  	CØ�
‰
Ð'¨ z°Ð5Ô6Ø�
‰
�3�r3   c                 ó  — d}|D ]!  }	|	j                   sŒ|	j                  rŒ|dz  }Œ# |j                  dt        j                  z  «       | j
                  r|j                  d«       t        |dz
  |dz
  d«      D ]œ  }
|j                  d|
dz   d›d�«       |j                  d	|
› d
| j                  j                  › dt        j                  › d|
› d�	«       |j                  d|
› d|j                  | j                  «      › �«       |j                  d«       Œž |dkD  r¬|j                  d|d›d�«       t        |dz
  dd«      D ]r  }
|j                  d	|
› d
| j                  j                  › dt        j                  › d|
› d�	«       |j                  d|
› d|j                  | j                  «      › �«       Œt |j                  d«       t        |dz
  dd«      D ],  }
|j                  d|
dz   d›d�«       |j                  d«       Œ. |j                  d«       |dk(  r|j                  d«       n|j                  |«       | j
                  s"|j                  d«       |j                  |«       |j                  d«       y )Nr   r   úswitch (%s) {r¬  rÝ   r®  r¯  rà   r§  r¨  ri  rÈ   ro  r©  rª  r­  rÒ   r±  r%   r°  r²  rn  )rV  rZ  rS   r	   rg  r:  r¥  rÖ  rw  rd  r+  r9   r¡  rÐ  )rŽ   rÆ  rÇ  rÈ  rÉ  rÊ  rÀ  rX   Únum_required_posonly_argsrÿ  rõ  s              r4   r»  z.DefNodeWrapper.generate_posargs_unpacking_code°  se  € ð %&Ð!ÛˆCØ�|‹| C§K£KØ)¨QÑ.Ñ)ð ð
 	�
‰
�?¤V×%7Ñ%7Ñ7Ô8Ø�=Š=Ø�J‰J�zÔ"äÐ*¨1Ñ,Ð.GÈÑ.IÈ2ÖNˆAØ�J‰J˜˜q ™s 2˜h aÐ(Ô)Ø�J‰J˜  Ð#4°T·^±^×5KÑ5KÐ4LÈAÌf×N_ÑN_ÐM`Ð`bÐcdÐbeÐegÐhÔiØ�J‰JÐLÈQÈCÈtÐTX×TcÑTcÐdh×dlÑdlÓTmÐSnÐoÔpØ�J‰JÐ,Õ-ð	 Oð
 % qÒ(Ø�H‰H�uÐ6°rÐ:¸"Ð=Ô>ÜÐ4°QÑ6¸¸BÖ?�Ø—
‘
˜W Q CÐ'8¸¿¹×9OÑ9OÐ8PÐPQÔRX×RcÑRcÐQdÐdfÐghÐfiÐikÐlÔmØ—
‘
ÐPÐQRÐPSÐSWÐX\×XgÑXgÐhl×hpÑhpÓXqÐWrÐsÕtð @ð �J‰J�xÔ ÜÐ0°Ñ2°B¸Ö;ˆAØ�J‰J˜˜q ™s 2˜h aÐ(Ô)Ø�J‰JÐ,Õ-ð <ð 	�‰�ÔØ$¨Ò)Ø�J‰J�xÕ ð �M‰MÐ.Ô/Ø�}Š}Ø�H‰H�[Ô!Ø�M‰MÐ.Ô/Ø�
‰
�3�r3   c                 óŠ  — d}|D ]  }|j                   sŒ|dz  }Œ |dkD  r5|j                  dt        j                  |t        j                  |fz  «       n'|dkD  r"|j                  dt        j                  z  «       |dk(  rd}n.| j                  r ||z
  }|j                  d|› d|› d�«       d	}nd
}d|cxk  rt        |«      k  r	n nd|› �}nd}| j                  j                  «       }	|j                  j                  t        j                  dd«      «       |j                  | j                  dt        j                  › dt        j                  › dt        j                   › d| j"                  r | j"                  j$                  j&                  nd› d|› d|› dt        j(                  › d|	› d| j"                  d ud›d�«       y )Nr   r   zBconst Py_ssize_t kwd_pos_args = (unlikely(%s < %d)) ? 0 : %s - %d;z#const Py_ssize_t kwd_pos_args = %s;r¬  z1const Py_ssize_t used_pos_args = (kwd_pos_args < z) ? kwd_pos_args : rG  Úused_pos_argsÚkwd_pos_argsz	values + r©  ÚParseKeywordsr  z__Pyx_ParseKeywords(rÈ   rß   rh  )rV  rS   r	   rg  r:  rK   rm   r!  r  rŒ  r   r˜  Úput_error_if_negr9   re  rq  r¹  r;  r  rÛ  r—  )
rŽ   rÇ  rÊ  rX   rÃ  rÿ  Úpos_arg_countÚ
max_kwargsÚvalues_arrayr¿  s
             r4   r¼  z.DefNodeWrapper.generate_keyword_unpacking_codeØ  sÒ  € ð ÐÛˆCØ�|‹|Ø! QÑ&Ñ!ð ð ˜qÒ ð �J‰JÐ[Ü×"Ñ"Ð$5Ü×"Ñ"Ð$5ð_ñ õ ð ! 1Ò$Ø�J‰JÐ<¼v×?QÑ?QÑQÔRà !Ò#Ø‰MØ�]Š]ð -Ð/@Ñ@ˆJØ�J‰JÐJÈ:È,ÐViÐjtÐiuÐuvÐwÔxØ+‰Mà*ˆMàÐ Ô0¤3 x£=Õ0Ø&Ð'8Ð&9Ð:‰Là#ˆLàŸ)™)×7Ñ7Ó9ˆà×Ñ×)Ñ)Ü×#Ñ# OÐ5JÓKô	Mà×ÑØ�H‰HØ"Ü× Ñ Ð! ¤F×$9Ñ$9Ð#:¸"¼V×=SÑ=SÐ<TÐTVØ04×0AÒ0Aˆt× Ñ ×&Ñ&×,Ò,ÀsÐKÈ2Øˆn˜BØˆo˜RÜ×$Ñ$Ð% RØÐ˜rØ× Ñ ¨Ð,¨aÐ0Øðõ	
r3   c                 ód   — | j                   D ]!  }|j                  sŒ| j                  ||«       Œ# y r‡   )rU   r$  Úgenerate_arg_conversionr  s      r4   r§  z0DefNodeWrapper.generate_argument_conversion_code  s+   € ð —9”9ˆCØ×#Ó#Ø×,Ñ,¨S°$Õ7ñ r3   c                 ó,  — |j                   }|j                  }|j                  rm|j                  r|j	                  d|j
                  z  «       n|j	                  d|j
                  z  «       | j                  ||«       |j	                  d«       y |j                  r| j                  ||«       y |j                  |«      r6|j	                  |j                  j                  ›d|j
                  ›d�«       y t        |j                  d|›d|›d�«       y )	Nr‹  zassert(%s); {rn  rF  rG  z Cannot convert 1 argument from 'z' to 'r“  )rÝ  rl  r~  rZ  rS   r'  Ú%generate_arg_conversion_from_pyobjectÚ#generate_arg_conversion_to_pyobjectré  r  rÛ  r   r9   )rŽ   rÿ  rX   Úold_typeÚnew_types        r4   rñ  z&DefNodeWrapper.generate_arg_conversion  sÂ   € à—<‘<ˆØ—8‘8ˆØ×ÒØ�{Š{Ø—
‘
˜;¨¯©Ñ6Õ7à—
‘
˜?¨S¯]©]Ñ:Ô;Ø×6Ñ6°s¸DÔAØ�J‰J�s�OØ×!Ò!Ø×4Ñ4°S¸$Õ?à×'Ñ'¨Ô1Ø—
‘
¨¯©¯«¸#¿-»-ÐHÕIä�c—g’gÒPXÒZbÐcÕdr3   c                 óþ   — |j                   }|j                  rL|j                  |j                  |j                  |j
                  j                  |j                  |«      «       y t        |j                  d|z  «       y )NrÔ  )	rl  r×  rS   rØ  r'  r  rÛ  r9   r   )rŽ   rÿ  rX   rö  s       r4   ró  z4DefNodeWrapper.generate_arg_conversion_from_pyobject0  s`   € Ø—8‘8ˆà×$Ò$Ø�J‰J�x×1Ñ1Ø—‘Ø—	‘	—‘Ø—‘Øó	õ ô �#—'‘'ÐOÐRZÑZÕ[r3   c                 ór  — |j                   }|j                  }|r„|j                  |j                  j                  ›d|›d|j
                  ›d|j                  |j                  j                  |j                  «      ›�«       |j                  |j                  «       y t        |j                  d|z  «       y )NrF  ri  r"  z5Cannot convert argument of type '%s' to Python object)
rÝ  Úto_py_functionrS   r  rÛ  r'  r'  r9   r˜  r   )rŽ   rÿ  rX   rõ  r]   s        r4   rô  z2DefNodeWrapper.generate_arg_conversion_to_pyobject=  s†   € Ø—<‘<ˆØ×&Ñ&ˆÙØ�J‰JØ—	‘	—“ÚØ—“Ø×'Ñ'¨¯	©	¯©¸¿¹ÔAð	Cô Dð
 ×Ñ §	¡	Õ*ä�#—'‘'ÐRÐU]Ñ]Õ^r3   c                 ó8  — | j                   D ]ƒ  }|j                  r| j                  ||«       Œ"|j                  rŒ/|j                  j
                  s-|j                  j                  s|j                  j                  sŒr| j                  ||«       Œ… | j                  j                  j                  rèt        t        t        | j                   «      | j                  j!                  «       «      «      D ]¤  }|j#                  d|d›d�«       |j#                  d| j                  j                  j$                  j'                  «       › d| j                  j!                  «       › d|d›d|j)                  | j*                  «      › �«       |j#                  d«       Œ¦ y y )Nzif (unlikely(unused_arg_rß   ú != Py_None)) {z_PyErr_Format(PyExc_TypeError, "%.200s() takes %zd arguments but %zd were given", (const char*) z, (Py_ssize_t) r"  rn  )rU   r©  r  r  rl  r~  rf  rÚ  r  rO  r  rì  Úreversedr¥  rK   rÖ  rì  rS   rß  r!  r+  r9   )rŽ   rX   rÿ  rx  s       r4   rÉ  z+DefNodeWrapper.generate_argument_type_testsJ  sF  € ð —9”9ˆCØ×"Ò"Ø×+Ñ+¨C°Õ6Ø—_“_¨#¯(©(×*>Ò*>Ø*-¯(©(×*<Ò*<Ø*-¯(©(×*EÓ*EØ×,Ñ,¨S°$Õ7ð ð �;‰;×Ñ×'Ò'Üœe¤C¨¯	©	£N°D·N±N×4UÑ4UÓ4WÓXÖY�ð —
‘
Ð5°a¸°UÐ:JÐKÔLØ—
‘
ð&Ø&*§k¡k×&7Ñ&7×&FÑ&F×&ZÑ&ZÓ&\Ð%]ð ^%Ø%)§^¡^×%FÑ%FÓ%HÐ$Ið J%Ø%& q EØ˜$Ÿ/™/¨$¯(©(Ó3Ð4ð	6ôð —
‘
˜3•ñ Zð (r3   c                 ó.   — | j                   j                  S r‡   )rÖ  rØ  r©   s    r4   rØ  zDefNodeWrapper.error_valuee  s   € Ø�~‰~×)Ñ)Ð)r3   r=  )!r,   r-   r.   ÚdefnoderO  rz  rœ   r³   r  rQ  rS  r]  r  r   r¤  r½  r†  r{  rx  ry  r¾  r¶  rº  r½  rZ  r»  r¼  r§  rñ  ró  rô  rÉ  rØ  r2   r3   r4   r×  r×  •  s°   „ ð €GØ€FØ Ðòò	3ò1ò,ò/ò3ò6U@ónQ$òfQò2M"ò^2ò1òc4òJh0òT`ò6!9òFAòtòò&òP;
òz8òeò&\ò_ò ó6*r3   r×  c                   óh   ‡ — e Zd ZdZdZdZdZej                  dgz   Zˆ fd„Z	ˆ fd„Z
d„ Zˆ fd„Zˆ xZS )	ÚGeneratorDefNodeTFÚ	GeneratorÚgbodyc                 óH   •— t        |g d¬«      |d<   t        ‰| �  |fi |¤Ž y )NT)r!  rñ   r¼   )r   rj   rœ   ©rŽ   r9   r}   rN   s      €r4   rœ   zGeneratorDefNode.__init__v  s'   ø€ ä% c°À4ÔHˆˆv‰Ü‰Ñ˜Ñ' Ó'r3   c                 ó�   •— t         ‰| �  |«       | j                  | j                  _        | j                  j                  |«       y r‡   )rj   r³   rY  r  ©rŽ   r¡   rN   s     €r4   r³   z%GeneratorDefNode.analyse_declarations{  s4   ø€ Ü‰Ñ$ SÔ)Ø!%×!1Ñ!1ˆ�
‰
ÔØ�
‰
×'Ñ'¨Õ,r3   c                 óŽ  — | j                   j                  j                  }|j                  | j                  «      }|j                  | j
                  «      }|j                  | j                  «      }| j                  j                  |«       |j                  d«       |j                  d| j                  › d|› d| j                  j                  «       › dt        j                  › d|› d|› d|› d|j                  d| j                  «      › �«       |j!                  t        j                  t"        «       | j$                  rSd}|j                  |›d	t        j&                  ›d
�«       |j)                  |t"        «       |j+                  |t"        «       |j-                  «        |j                  d«       |j                  d«       y )Nr¡  z#__pyx_CoroutineObject *gen = __Pyx_z_New((__pyx_coroutine_body_t) rÈ   ú, (PyObject *) r"  Úgenzgen->classobjz  = __Pyx_CyFunction_GetClassObj(ro  zreturn (PyObject *) gen;rn  )r  r  r‹  r¸  rm   ÚqualnameÚmodule_namer®  r¯  rS   Úgen_type_namer°  r	   r“  r'  r9   rê  r   r@  rº  r¸  rJ  rð  )rŽ   r¡   rX   Ú
body_cnamerm   r
  r  Úclassobj_cnames           r4   r]  z'GeneratorDefNode.generate_function_body€  sz  € Ø—Z‘Z×%Ñ%×0Ñ0ˆ
Ø×%Ñ% d§i¡iÓ0ˆØ×)Ñ)¨$¯-©-Ó8ˆØ×,Ñ,¨T×-=Ñ-=Ó>ˆà×Ñ×-Ñ-¨dÔ3à�
‰
�3ŒØ�
‰
Ø1°$×2DÑ2DÐ1Eð F(Ø(2 |ð 4Ø× Ñ ×*Ñ*Ó,Ð-ð .Ü#×3Ñ3Ð4ð 5Øˆv�R˜�z  K =Ø�$×)Ñ)¨%°·±Ó:Ð;ð=ô	
ð 	�‰œ×.Ñ.´Ô?Ø×!Ò!Ø,ˆNØ�J‰JÚ¤× 1Ó 1ð3ô 4à�O‰O˜N¬NÔ;Ø×Ñ˜^¬^Ô<Ø×(Ñ(Ô*Ø�
‰
Ð-Ô.Ø�
‰
�3�r3   c                 óö   •— |j                  t        j                  | j                  d«      «       | j                  j                  |d¬«       t        ‰| �  ||«       | j                  j                  ||«       y )NúCoroutine.cT)Úproto)rŒ  r   r˜  r  r  r   rj   r  )rŽ   r¡   rX   rN   s      €r4   r  z.GeneratorDefNode.generate_function_definitions�  s^   ø€ Ø×Ñœ[×4Ñ4°T×5GÑ5GÈÓWÔXØ�
‰
×+Ñ+¨D¸Ð+Ô=Ü‰Ñ-¨c°4Ô8Ø�
‰
×0Ñ0°°dÕ;r3   )r,   r-   r.   rW  Úis_iterable_coroutiner  rT  r_  r«   rœ   r³   r]  r  rr   rs   s   @r4   r   r   i  sE   ø„ ð €LØ!ÐØ€MØ€Mà×%Ñ%¨¨	Ñ1€Kô(ô
-ò
÷:<ð <r3   r   c                   ó   — e Zd ZdZdZy)ÚAsyncDefNodeÚ	CoroutineTN)r,   r-   r.   r  r6  r2   r3   r4   r  r  ¤  s   „ Ø€MØ�Lr3   r  c                   ó   — e Zd ZdZdZy)ÚIterableAsyncDefNodeÚIterableCoroutineTN)r,   r-   r.   r  r  r2   r3   r4   r  r  ©  s   „ Ø'€MØ Ñr3   r  c                   ó   — e Zd ZdZdZy)ÚAsyncGenNodeÚAsyncGenTN)r,   r-   r.   r  r7  r2   r3   r4   r  r  ®  s   „ Ø€MØ�Kr3   r  c                   óN   ‡ — e Zd ZdZdZdZdZdZd	ˆ fd„	Zd„ Z	d„ Z
d
d„Zd„ Zˆ xZS )ÚGeneratorBodyDefNodeTFNc                 ó6   •— t         ‰| �  |||||d g d d ¬«	       y )N)	r9   r¼   rm   Úis_coroutine_bodyÚis_async_gen_bodyrC   rU   r:  r;  )rj   rœ   )rŽ   r9   rm   r¼   r  r   rN   s         €r4   rœ   zGeneratorBodyDefNode.__init__½  s,   ø€ Ü‰ÑØ˜$ TØ/Ø/Ø˜2¨¸4ð	 	õ 	Ar3   c                 ó.  — |j                  |j                  «      }|j                  d«      }t        j                  |z   |z   }|j	                  d t
        | j                  |d¬«      }||_        t        | j                  «      |_
        d|_        || _        y )NÚ	generatorr„  )rÛ  ro  T)r
  r  r	   Úgenbody_prefixr  r   r9   r‹  r   rm   rß  r  r  )rŽ   r¡   r  rm   rÛ  r  s         r4   Údeclare_generator_bodyz+GeneratorBodyDefNode.declare_generator_bodyÄ  s…   € Ø—‘˜S×-Ñ-Ó.ˆØ�{‰{˜;Ó'ˆÜ×%Ñ%¨Ñ.°Ñ5ˆØ—‘ ¤n°d·h±hØ&+¸	ð  ó Cˆà ˆÔÜ,¨T¯Y©YÓ7ˆÔð ˆŒ
Øˆ�
r3   c                 óH   — | j                  |«       | j                  |«       y r‡   )rÒ  r$  r    s     r4   r³   z)GeneratorBodyDefNode.analyse_declarationsÒ  s   € Ø×#Ñ# CÔ(Ø×#Ñ# CÕ(r3   c           	      óô   — d| j                   j                  ›dt        j                  ›dt        j                  ›dt        j
                  ›d�	}|r|j                  d|z  «       y |j                  d|z  «       y )Nzstatic PyObject *z(__pyx_CoroutineObject *z, CYTHON_UNUSED PyThreadState *r`  rh  z%s; /* proto */z%s /* generator body */
{)r  r‹  r	   Úgenerator_cnameÚlocal_tstate_cnameÚsent_value_cnamerS   )rŽ   rX   r  r˜  s       r4   r   z-GeneratorBodyDefNode.generate_function_headerÖ  sZ   � à�J‰J×!Ó!Ü×"Ó"Ü×%Ó%Ü×#Ó#ð	%ˆñ
 Ø�J‰JÐ(¨6Ñ1Õ2à�J‰JÐ3°fÑ<Õ=r3   c           
      óx  — | j                   }| j                  j                  ||«       |j                  |«       |j	                  «       |_        |j                  | j                  «       | j                  ||«       |j                  d«       | j                  |«       |j                  «       }|j                  dt        j                  z  «       |j                  «       }|j                  «        |j                  | j                   j"                  xs | j                   j$                  «       |j'                  «       }|r#|j)                  d¬«       d|j*                  _        | j.                  j1                  |«       |j*                  j3                  |j4                  j6                  j8                  «       |j                  «       }|j	                  d«      }|j;                  |«       |j=                  |«       |rJ|j*                  j>                  sJ ‚|jA                  | j                   j$                  | j                  d¬«       | jB                  r:|j                  |jE                  t        jF                  | j                  «      «       n¤|j                  dt        jF                  › d�«       | jH                  rd}	n| jJ                  rd	}	nd
}	|j                  dt        jF                  › d|	› d�«       |j                  |jM                  | j                  «      «       |j                  d«       | jB                  rØ| jN                  �Ì| jN                  }
|
tP        jR                  u rd}n8|
tP        jT                  u rd}n#|
tP        jV                  u rd}ntY        d|
z  «      ‚|j                  t        j                  ›d|›d|jE                  t        j                  | j                  «      ›�«       |j[                  t        j                  t\        «       | j_                  ||«       |j4                  j6                  j8                  j`                  rž|j                  |j4                  j6                  jc                  t        jd                  «      ›d|j4                  j6                  jg                  dt        jh                  z  «      ›d�«       |j                  dt        jd                  z  «       |rD| j                  jj                  s.d|j*                  _        |jm                  d| j                  ¬«       |j                  | j                  «       |j                  d«       |j                  d«       | jB                  s:| j                  jj                  s$|jo                  t        j                  t\        «       |jq                  |jr                  «      �r®| j                  jj                  s|ju                  |jv                  «       |j=                  |jr                  «       | jB                  r0| jN                  �$|jy                  t        j                  t\        «       |j*                  j{                  «       D ]  \  }}|j}                  ||«       Œ |j                  d«       |r|j                  «        t€        j‚                  |j„                  j†                  v rV|jˆ                  j‹                  t�        jŽ                  dd«      «       |j                  dt‘        | jH                  «      z  «       |j“                  | j                   j$                  «       |r|j•                  | j                  «       |j                  d«       |j=                  |jv                  «       |j—                  t        j                  t\        «       |r|j™                  «        |j                  d«       |j                  d t        jh                  z  «       |j                  d!«       |j                  d"t        jh                  z  «       |j                  d#t        jh                  z  «       |j›                  «        |j                  d$t        j                  z  «       |j                  d«       |j�                  |j*                  «       |j                  d%t        jh                  z  «       |j                  d&|z  «       |jž                  D ]  \  }}|j                  d'||fz  «       Œ |j                  d(«       |rO|jA                  | j                   j$                  | j                  d¬«       |jm                  d| j                  ¬«       |j›                  «        |j                  d)«       |j                  d«       |j¡                  «        y )*NrØ   zPyObject *%s = NULL;T)rW  Ú	first_runr�  rû  zasync generatorÚ	coroutiner"  zQ)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started z");rn  zPyList_New(0)zPySet_New(NULL)zPyDict_New()z)invalid type of inlined comprehension: %srF  r•  z%s->closurerG  zCYTHON_MAYBE_UNUSED_VAR(%s);Frl  r8   ru  zif (__Pyx_PyErr_Occurred()) {Úpep479r  z*__Pyx_Generator_Replace_StopIteration(%d);z#if !CYTHON_USE_EXC_INFO_STACKz+__Pyx_Coroutine_ResetAndClearException(%s);r…  z%s->resume_label = -1;z%__Pyx_Coroutine_clear((PyObject*)%s);r�  zswitch (%s->resume_label) {zcase 0: goto %s;zcase %d: goto %s;z2default: /* CPython raises the right error here */zreturn NULL;)QrY  r¼   r  rš  r›  rœ  r-  r9   r  rS   r   rO   r	   rª  rî  rï  r  rm   rß  r—  r­  r$  r¼  r®  r¯  Úinit_closure_tempsr¢  rl  r  Ú	use_labelrÒ  r}  r»  Ú
is_inlinedr'  r)  r   r  r+  Úinlined_comprehension_typer   Ú	list_typeÚset_typeÚ	dict_typer   r(  r   r]  rì  rh  r“  r@  r'  rñ   rÍ  rÌ  rÎ  rÏ  rÐ  rÑ  Úput_xdecref_clearrÓ  rÔ  rÙ  r   Úgenerator_stoprŽ  Úfuture_directivesr  rŒ  r   r˜  rµ  rÞ  rÚ  rë  rí  rð  rñ  Úyield_labelsrò  )rŽ   r¡   rX   rN  Úclosure_init_coderû  rø  Úresume_codeÚfirst_run_labelÚ	coro_typeÚtarget_typeÚ	comp_initrÛ  rl  rõ  Úlabels                   r4   r  z2GeneratorBodyDefNode.generate_function_definitionsá  sg  € Ø×Ñˆð 	�	‰	×/Ñ/°°dÔ;ð 	×Ñ˜tÔ$Ø/3¯~©~Ó/?ˆÔ,ð 	�‰�d—h‘hÔØ×+Ñ+¨D°$Ô7à�
‰
�2ŒØ×%Ñ% dÔ+Ø ×0Ñ0Ó2Ðà�
‰
Ð)¬F×,?Ñ,?Ñ?Ô@Ø×/Ñ/Ó1ÐØ×)Ñ)Ô+Ø×'Ñ'¨¯
©
¯©Ò(T¸4¿:¹:×;TÑ;TÔUØ—/‘/Ó#ˆÙØ×3Ñ3ÀÐ3ÔFØ'+ˆD�N‰NÔ$à×Ñ×-Ñ-¨dÔ3ð 	�‰×)Ñ)¨$×*:Ñ*:×*?Ñ*?×*EÑ*EÔFØ×*Ñ*Ó,ˆØŸ.™.¨Ó5ˆØ�‰�Ô'Ø�‰�Ô'áà—>‘>×+Ò+Ð+Ð+Ø× Ñ  §¡×!:Ñ!:¸D¿H¹HÐSWÐ ÔXà�?Š?Ø�J‰J�t×.Ñ.¬v×/FÑ/FÈÏÉÓQÕRà�J‰J˜¤v×'>Ñ'>Ð&?Ð?OÐPÔQØ×%Ò%Ø-‘	Ø×'Ò'Ø'‘	à'�	Ø�J‰JØ¤× 7Ñ 7Ð8ð 9cØclÐbmÐmpðtôð �J‰J�t—‘ t§x¡xÓ0Ô1Ø�J‰J�sŒOð �?Š?˜t×>Ñ>ÐJØ×9Ñ9ˆKØœg×/Ñ/Ñ/Ø+‘	Ø¤× 0Ñ 0Ñ0Ø-‘	Ø¤× 1Ñ 1Ñ1Ø*‘	ä#Ø?À+ÑMóOð Oà�J‰JÜ×#Ó#¢YØ×'Ñ'¬×(;Ñ(;¸T¿X¹XÔFðHô Ið �O‰OœF×/Ñ/´Ô@ð 	×#Ñ# C¨Ô.à×Ñ× Ñ ×&Ñ&×2Ò2Ø×#Ñ#Ø× Ñ ×%Ñ%×6Ñ6´v×7MÑ7MÕNØ× Ñ ×%Ñ%×/Ñ/°Ü06×0FÑ0Fñ1Gõ Hð%Iô Jð
 �J‰JÐ5¼×8NÑ8NÑNÔOá˜4Ÿ9™9×2Ò2Ø',ˆD�N‰NÔ$Ø×!Ñ! )°·±Ð!Ô:ð 	�‰�d—h‘hÔØ�
‰
�2ŒØ�
‰
Ð-Ô.ð �Š t§y¡y×'>Ò'>ð ×$Ñ$¤V×%8Ñ%8¼.ÔIð �?‰?˜4×+Ñ+Õ,Ø—9‘9×*Ò*Ø—‘˜d×/Ñ/Ô0Ø�N‰N˜4×+Ñ+Ô,Ø�Š 4×#BÑ#BÐ#NØ×&Ñ&¤v×':Ñ':¼NÔKà#Ÿ~™~×?Ñ?ÖA‘��tØ× Ñ  ¨Õ-ð  Bà�J‰JÐ6Ô7ÙØ×4Ñ4Ô6Ü×$Ñ$¨¯©×(EÑ(EÑEà× Ñ ×1Ñ1´+×2IÑ2IÈ(ÐTaÓ2bÔcØ—
‘
ÐGÌ$Èt×OeÑOeÓJfÑfÔgØ×"Ñ" 4§:¡:×#<Ñ#<Ô=ÙØ×%Ñ% d§h¡hÔ/Ø�J‰J�sŒOð 	�‰�t×(Ñ(Ô)Ø×Ñœ&×-Ñ-¬~Ô>ÙØ×ÑÔ!ð 	�
‰
Ð3Ô4Ø�
‰
Ð@Ä6×CYÑCYÑYÔZØ�
‰
�8ÔØ�
‰
Ð+¬f×.DÑ.DÑDÔEà�
‰
Ð:¼V×=SÑ=SÑSÔTØ×(Ñ(Ô*Ø�
‰
�<¤&×"5Ñ"5Ñ5Ô6Ø�
‰
�3Œð 	×.Ñ.¨t¯~©~Ô>à×ÑÐ7Ü×-Ñ-ñ/ô 	0ð 	×ÑÐ,¨Ñ>Ô?à×)Ô)‰HˆAˆuØ×ÑÐ1°Q¸°JÑ>Õ?ð *à×ÑÐNÔOÙØ×'Ñ'¨¯
©
×(AÑ(AÀ4Ç8Á8ÐZ^Ð'Ô_Ø×(Ñ(¨¸¿¹Ð(ÔAØ×/Ñ/Ô1Ø×Ñ˜.Ô)Ø×Ñ˜#Ôà×ÑÕr3   )NNNFFr`  )r,   r-   r.   rV  r0  r  r   r1  rœ   r$  r³   r   r  rr   rs   s   @r4   r  r  ³  s=   ø„ ð ÐØ€JØÐØÐØ!%ÐõAòò)ó	>ö_ r3   r  c                   ó"   — e Zd ZdgZdZd„ Zd„ Zy)re  r¼   Nc                 óð  — |j                   | _        | j                  j                  rd}nd}ddlm} |j                  | j                  t        «      | _	        |j                  | j                  | j                  | j                  |d  D �cg c])  }|j                  | j                  |j                  ¬«      ‘Œ+ c}¬«      }|j                  j                  s|j                  j                  rIt!        | j                  t#        | j                  |¬«      t%        | j                  d ¬«      g¬«      | _        nt%        | j                  |¬«      | _        | j&                  j)                  |«      | _        | S c c}w )	Nr   r   rj  r\  ©rl  rU   )Úexpr©r¯   r  )r¾  rU   rŸ  rÙ  rØ   rœ  ÚRawCNameExprNoder9   r   Ú	func_nodero  r³  rm   rå  rg  Úis_returncoder   ÚExprStatNoderp  r¼   rw   )rŽ   r¡   Ú	first_argrœ  rÿ  Ú	call_nodes         r4   rw   z%OverrideCheckNode.analyse_expressions‘  s!  € Ø—O‘OˆŒ	Ø�<‰<×'Ò'Ø‰IàˆIÝØ"×3Ñ3°D·H±H¼nÓMˆŒØ×,Ñ,Ø�H‰H˜tŸ~™~à!ŸY™Y y zÑ2ó4Ù2�cð ×$Ñ$ T§X¡X°C·H±HÐ$Õ=Ø2ñ4ð -ó 5ˆ	ð �?‰?×"Ò" c§o¡o×&CÒ&CÜ$ T§X¡XÜ˜TŸX™X¨IÔ6Ü˜tŸx™x¨tÔ4ð66ô 7ˆD�Iô ' t§x¡x°yÔAˆDŒIØ—I‘I×1Ñ1°#Ó6ˆŒ	Øˆùò4s   Â
.E3c                 óâ
  — | j                   j                  r | j                   j                  j                  n| j                   j                  }|j                  |j                  «      }| j                   j
                  rdt        j                  z  }nd| j                  d   j                  z  }|j                  d«       |j                  dt        j                  z  «       |j                  d«       | j                   j
                  s/| j                   j                  j                  j                  d«      r|j                  d«       nÝ|j                  d«       |j                  d	«       |j                  | j                   j                  j                  j                  j                   «      }|j                  d
|› d|› d�«       |j                  d|› d�«       |j                  d«       |j                  d
|› d|› d�«       |j                  d«       |j                  d«       |j                  d«       |j"                  j%                  t'        j(                  dd«      «       |j                  dt        j*                  ›dt        j,                  ›d�«       |j                  d|›dt        j*                  ›dt        j,                  ›d�«       |j                  dt        j.                  ›d|›d�«       |j                  d«       |j0                  j3                  t4        d ¬!«      }| j6                  j9                  |«       |j"                  j%                  t'        j(                  d"d«      «       |j                  |›d#|›d|›d$|j;                  || j<                  «      ›�«       |j?                  |t4        «       |j                  d%|›d&|j@                  ›d'�«       | jB                  jE                  |«       |j                  d(«       |j                  d«       |j                  t        j*                  ›d|›d�«       |j                  t        j,                  ›d)|›d�«       |j                  d*t        j.                  ›d+t        j*                  ›d'�«       |j                  t        j*                  ›d,t        j,                  ›d�«       |j                  d(«       |j                  d«       |jG                  |tH        j4                  «       |j0                  jK                  |«       |j                  d«       |j                  d(«       |j                  d«       |j                  d(«       y )-Nr  r   z /* Check if called by wrapper */zif (unlikely(%s)) ;z#/* Check if overridden in Python */rˆ   zelse {z	else if (z#if !CYTHON_USE_TYPE_SLOTSzunlikely(Py_TYPE(z) != z &&z __Pyx_PyType_HasFeature(Py_TYPE(z), Py_TPFLAGS_HAVE_GC))rƒ  z9)->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(z3), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))r…  rž  zQ#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTSÚPyDictVersioningúObjectHandling.czstatic PY_UINT64_T z = __PYX_DICT_VERSION_INIT, z = __PYX_DICT_VERSION_INIT;z0if (unlikely(!__Pyx_object_dict_version_matches(rÈ   z))) {zPY_UINT64_T z = __Pyx_get_tp_dict_version(ro  Tr   ÚPyObjectGetAttrStrz = __Pyx_PyObject_GetAttrStr(r"  zif (!__Pyx_IsSameCFunction(z, (void(*)(void)) rÚ  rn  z! = __Pyx_get_object_dict_version(r�  ú != rF  )&rŸ  rB  r  r¸  rm   rÙ  r	   Úmodule_cnamerU   rÛ  rS   r‰  r  r”  r)  rÝ  r¶  r  rŒ  r   r˜  Útp_dict_version_tempÚobj_dict_version_tempÚtype_dict_guard_tempr$  r%  r   rF  Ú	set_cnamer'  r9   r(  r‹  r¼   r  r,  r
   r-  )rŽ   rX   Úmethod_entryÚinterned_attr_cnamer2  r¶  Úfunc_node_temps          r4   r  z)OverrideCheckNode.generate_execution_code¦  s   € à;?¿<¹<×;UÒ;U�t—|‘|×1Ñ1×7Ò7Ð[_×[gÑ[g×[mÑ[mˆØ"×4Ñ4°\×5FÑ5FÓGÐð �<‰<×'Ò'Ø)¬F×,?Ñ,?Ñ?‰Hà)¨D¯I©I°a©L×,>Ñ,>Ñ>ˆHØ�
‰
Ð5Ô6Ø�
‰
Ð(¬6×+EÑ+EÑEÔFØ�
‰
Ð8Ô9Ø�<‰<×'Ò'¨4¯<©<×+=Ñ+=×+CÑ+C×+OÑ+OÐPZÔ+[Ø�J‰J�xÕ à�J‰J�{Ô#Ø�J‰JÐ3Ô4ð
 !×5Ñ5°d·l±l×6HÑ6H×6NÑ6N×6ZÑ6Z×6hÑ6hÓiˆMØ�J‰JÐ*¨8¨*°EØ(˜/¨ð.ô /à�J‰JÐ9¸(¸ÐCZÐ[Ô\Ø�J‰J�wÔØ�J‰JÐ*¨8¨*ð 5:Ø:B¸ÐCvðxô yà�J‰J�xÔ Ø�J‰J�uÔà�
‰
ÐfÔgØ×Ñ×)Ñ)Ü×#Ñ#Ð$6Ð8JÓKô	Mð 	�
Š
Ü×'Ó'¬×)EÓ)EðGô 	Hà�
Š
Ú”f×1Ó1´6×3OÓ3OðQô 	Rà�
Š
Ü×'Ó'ªð3ô 	4à�
‰
�8ÔàŸ™×5Ñ5´nÐQUÐ5ÓVˆØ�‰× Ñ  Ô0à×Ñ×)Ñ)Ü×#Ñ#Ð$8Ð:LÓMô	Oà�
‰
ÚšHÒ&9Ø×#Ñ# N°D·H±HÔ=ð?ô 	@ð 	�‰˜¬Ô7à�
Š
ÊnÐ^j×^uÓ^uÐvÔwØ�	‰	×)Ñ)¨$Ô/Ø�
‰
�3Œð
 	�
‰
ÐfÔgØ�
‰
Ü×'Ó'ªð3ô 	4à�
‰
Ü×(Ó(ª(ð4ô 	5ð 	�
Š
Ü×'Ó'¬×)DÓ)DðFô 	Gà�
‰
Ü×'Ó'¬×)EÓ)EðGô 	Hà�
‰
�3ŒØ�
‰
�8Ôà×Ñ˜n¬j×.GÑ.GÔHØ�‰×#Ñ# NÔ3à�
‰
ÐfÔgØ�
‰
�3ŒØ�
‰
�8Ôà�
‰
�3�r3   )r,   r-   r.   r«   r¼   rw   r  r2   r3   r4   re  re  ƒ  s   „ ð �(€Kà€Dòó*Xr3   re  c                   ó   — e Zd Zy)ÚClassDefNodeN©r,   r-   r.   r2   r3   r4   rY  rY    ó   „ Ør3   rY  c                   óÔ   — e Zd Zg d¢ZdZdZdZdZdZdZ	dZ
	 	 dd„Zd„ Zd„ Zd„ Z ej                   ej"                   ej$                  dej"                  d«      g«      Zd	„ Zd
„ Zd„ Zy)ÚPyClassDefNode)Údoc_noder¼   rh   Ú	metaclassÚmkwrn   Úclass_resultrO  Ú
class_cellrã  Ú
orig_basesNFc	           	      óœ  — t         j                  | |«       || _        || _        || _        || _        || _        ddlm}	 | j                  rjt        j                  rZt        | j                  | j                  «      }|	j                  ||¬«      }
|	j                  t        d«      t         |¬«      | _        nd }
| }|rÓd}d| _        |j&                  r¨|j(                  rŽt+        t-        |j(                  «      «      d d d…   D ]_  \  }}|j.                  j0                  d	k(  sŒ | j2                  �t5        |j                  d
«       |j0                  | _        |j(                  |= Œa || _        n$| j2                  €J ‚|	j9                  |«      | _        |s$| j                  s| j6                  s| j2                  r­| j2                  €g|r|j&                  s| j6                  }nd }|s-| j                  j:                  r| j                  j<                  sn|	j?                  || ¬«      | _        d}nd}|	jA                  |||
| ¬«      | _!        |	jE                  ||| |
|||¬«      | _#        n2|	jI                  |g ¬«      | _!        |	jK                  ||| |
¬«      | _#        |	j                  ||¬«      | _&        |	jO                  | j                  «      | _(        y )Nr   rj  rD  r‚   )rm   rl  r9   FTrÝ   r_  z2keyword argument 'metaclass' passed multiple times)Úclass_def_node)rm   rC   re  )rm   re  rC   Úcalculate_metaclassÚallow_py2_metaclassÚ
force_type©r¬  )rm   re  rC   r\  ))r4  rœ   rm   rC   r¼   rã  rn   rØ   rœ  r    rà  rD   r9   ÚUnicodeNoder³  r   r   r^  Úis_py3_style_classÚis_dict_literalr¬  r­   rØ  rÕ   r¯   r_  r   r`  Ú	ProxyNodeÚis_sequence_constructorrU   ÚPyClassMetaclassNodeÚPyClassNamespaceNoderh   ÚPy3ClassNodeÚclassobjÚDictNodeÚ	ClassNoderO  ÚClassCellInjectorNoderb  )rŽ   r9   rm   rn   rC   r¼   rã  r˜  Úforce_py3_semanticsrœ  r^  rg  rõ  rÍ   ÚmkdictÚneeds_metaclass_calculations                   r4   rœ   zPyClassDefNode.__init__#  s�  € ä×Ñ˜$ Ô$ØˆŒ	ØˆŒØˆŒ	Ø$ˆŒØˆŒ
ÝØ�8Š8œ×*Ò*Ü  §¡¨4¯8©8Ó4ˆCØ ×,Ñ,¨S¸Ð,Ó<ˆHØ%×.Ñ.´MÀ)Ó4LÔSaÐgjÐ.ÓkˆD�MàˆHà"5Ð5ÐÙØ"'ÐØ&*ˆDÔ#Ø×+Ò+Ø×/Ò/Ü#'¬	°,×2NÑ2NÓ(OÓ#PÑQUÐSUÐQUÔ#V™˜˜4ØŸ8™8Ÿ>™>¨[Ó8Ø#Ÿ~™~Ð9Ü % d§h¡hÐ0dÔ eð .2¯Z©Z˜DœNØ ,× <Ñ <¸QÑ ?ð $Wð  ,�D•HàŸ>™>Ð5Ð5Ð5ð %×.Ñ.¨|Ó<�”á $§*¢*°·²¸D¿NºNØ�~‰~Ð%Ù¨×(DÒ(Dà!ŸX™X‘Fà!�FÙØŸ
™
×:Ò:Ø ŸJ™JŸOšOØà%.×%CÑ%CØ¨Dð &Dó &2�D”Nà.3Ñ+à.2Ð+à!×6Ñ6Ø˜$ H¸Tð 7ó CˆDŒIà%×2Ñ2Ø˜$¨t¸Ø$?Ø$7Ø.ð	 3ó ˆD�Mð "×*Ñ*¨3ÀÐ*ÓCˆDŒIØ%×/Ñ/Ø˜$¨t¸ð 0ó CˆDŒMð  ×(Ñ(¨°4Ð(Ó8ˆŒØ#×9Ñ9¸$¿(¹(ÓCˆ�r3   c                 óF  — | j                   r!t        | j                  j                  d«       yddlm} t        | j                  dd| j                  | j                  xs |j                  | j                  g ¬«      | j                  | j                  d| j                  ¬«	      S )	zO
        Return this node as if it were declared as an extension class
        z7Python3 style class could not be represented as C classNr   rj  r„  ©rU   F)ro  r  Ú
class_namern   rã  r¼   rp  rC   )rk  r   rr  r9   rØ   rœ  ÚCClassDefNoderm   rn   r–  rã  r¼   rC   ©rŽ   rœ  s     r4   Ú	as_cclasszPyClassDefNode.as_cclassl  s�   € ð ×"Ò"Ü�$—-‘-×#Ñ#Ð%^Ô_ØåÜ˜TŸX™XØ(1Ø)-Ø(,¯	©	Ø#'§:¡:Ò#W°×1DÑ1DÀTÇXÁXÐTVÐ1DÓ1WØ(,¯©Ø"&§)¡)Ø$)Ø!%§¡ô+ð 	+r3   c                 óÂ   — |}|j                   s|j                  r&|j                  }|j                   rŒ|j                  rŒ&t        | j                  |¬«      x}| _        |S )N)rm   r×  )rS  rÙ  r×  r   rm   r  )rŽ   r¡   rZ  rù  s       r4   Úcreate_scopezPyClassDefNode.create_scope  sR   € ØˆØ×$Ò$¨×(=Ò(=Ø×#Ñ#ˆDð ×$Ó$¨×(=Ó(=ä(¨d¯i©iÀTÔJÐJˆˆtŒzØˆr3   c                 ó
  — | j                   x}}| j                  rDddlm} | j                  d d d…   D ]"  } ||j                  |j
                  |g¬«      }Œ$ d | _        || _        | j                  r| j                  j                  |«       | j                  r| j                  j                  |«       | j                  j                  |«       | j                  j                  |«       | j                  |«      }|j                  |_        | j                  j                  j                  |_        | j"                  r| j"                  j                  |«       | j$                  j                  |«       |j'                  |«       y )Nr   )ro  rÝ   rB  )rr  rã  rœ  ro  r9   r\  ra  rn   r³   r`  rO  Úanalyse_target_declarationr€  rÿ   r  rÛ  Úclass_obj_cnamer^  r¼   rG  )rŽ   r¡   Úunwrapped_class_resultra  ro  r\  rù  s          r4   r³   z#PyClassDefNode.analyse_declarations†  s&  € Ø04·±Ð=Ð Ø�?Š?Ý1Ø!Ÿ_™_©T¨r¨TÔ2�	Ù-Ø—M‘MØ&×0Ñ0Ø&˜ô )‘ð 3ð
 #ˆDŒOØ(ˆÔØ�:Š:Ø�J‰J×+Ñ+¨CÔ0Ø�8Š8Ø�H‰H×)Ñ)¨#Ô.Ø×Ñ×.Ñ.¨sÔ3Ø�‰×.Ñ.¨sÔ3Ø× Ñ  Ó%ˆØŸ.™.ˆŒØ#Ÿ{™{×0Ñ0×6Ñ6ˆÔØ�=Š=Ø�M‰M×4Ñ4°TÔ:Ø�	‰	×&Ñ& tÔ,Ø×2Ñ2°4Õ8r3   rn   c           	      óÚ  — | j                   r£| j                   j                  r"t        | j                   j                  «      dk(  skddlm}m} | j                   j                  |«      } ||j                  d| j                  t        j                  dd«       ||«      g¬«      | _         || _        | j                   r | j                   j                  |«      | _         | j                  r | j                  j                  |«      | _        | j                  r | j                  j                  |«      | _        | j                  j                  |«      | _        | j                   j                  |«      | _        | j"                  }| j$                  j                  |«      | _        | j&                  j)                  || j*                  «      | _        | j,                  j                  |«      | _        | S )Nr   r   )ÚPythonCapiCallNodeÚ	CloneNodeÚ__Pyx_PEP560_update_basesÚPy3UpdateBasesrM  )rœ  rÓ  Úutility_coderU   )rn   rn  rK   rU   rœ  r†  r‡  rw   r9   Úupdate_bases_functyper   r˜  rc  r`  r_  rh   ra  r  r¼   rO  Úanalyse_target_expressionrr  rb  )rŽ   r¡   r†  r‡  rc  rù  s         r4   rw   z"PyClassDefNode.analyse_expressions¤  sa  € Ø�:Š:˜tŸz™z×AÒAÄcÈ$Ï*É*Ï/É/ÓFZÐ^_ÒF_ß@àŸ™×7Ñ7¸Ó<ˆJÙ+¨J¯N©NØ9Ø×4Ñ4Ü(×4Ñ4Ð5EÐGYÓZÙ 
Ó+Ð,ô	.ˆDŒJð
 )ˆDŒOØ�:Š:ØŸ™×7Ñ7¸Ó<ˆDŒJØ�8Š8Ø—x‘x×3Ñ3°CÓ8ˆDŒHØ�>Š>Ø!Ÿ^™^×?Ñ?ÀÓDˆDŒNØ—I‘I×1Ñ1°#Ó6ˆŒ	Ø ×-Ñ-×AÑAÀ#ÓFˆÔØ�z‰zˆØ—I‘I×1Ñ1°$Ó7ˆŒ	Ø—k‘k×;Ñ;¸CÀÇÁÓOˆŒØŸ/™/×=Ñ=¸dÓCˆŒØˆr3   c                 óˆ   — | j                  | j                  |«       | j                  j                  | j                  |«       y r‡   )r  r  r¼   r  r6  s      r4   r  z,PyClassDefNode.generate_function_definitions½  s.   € Ø×(Ñ(¨¯©°TÔ:Ø�	‰	×/Ñ/°·
±
¸DÕAr3   c           	      ój  — |j                  | j                  «       |j                  j                  | «       | j                  }| j
                  r| j
                  j                  |«       | j                  r| j                  j                  |«       | j                  r| j                  j                  |«       | j                  r| j                  j                  |«       | j                  j                  |«       | j
                  rñ|j                  d| j                  j                  «       ›d| j
                  j                  «       ›d�«       |j                  |j                  d| j                  j                  «       ›d| j
                  j                  «       ›d�| j                  «      «       |j                  d«       | j
                  j                  |«       | j
                  j                  |«       | j                  j                  «       x|_        |_        | j$                  }|�|j&                  sd }|�|j                  |«       | j(                  j+                  |«       | j,                  j                  |«       |�*|j/                  || j,                  j                  «       «       |�"|j                  |«       |j                  |«       | j0                  j                  «       x|_        |_        | j2                  j5                  | j,                  |«       | j                  j                  |«       | j                  j                  |«       | j                  r6| j                  j                  |«       | j                  j                  |«       | j                  r6| j                  j                  |«       | j                  j                  |«       | j                  r6| j                  j                  |«       | j                  j                  |«       |j                  j7                  «        y )Nr�  rO  rž  zPyDict_SetItemString(z, "__orig_bases__", rh  rn  )r-  r9   Úpyclass_stackrµ  r  rc  r?  rn   r`  r_  rh   rS   r�   r™  Úgenerate_disposal_coderL  Únamespace_cnamerƒ  rb  Ú	is_activer¼   r  ra  Úgenerate_injection_coderr  rO  rP  Úpop)rŽ   rX   rù  rb  s       r4   r  z&PyClassDefNode.generate_execution_codeÁ  sù  € Ø�‰�d—h‘hÔØ×Ñ×!Ñ! $Ô'Ø�z‰zˆØ�?Š?Ø�O‰O×4Ñ4°TÔ:Ø�:Š:Ø�J‰J×/Ñ/°Ô5Ø�8Š8Ø�H‰H×-Ñ-¨dÔ3Ø�>Š>Ø�N‰N×3Ñ3°DÔ9Ø�	‰	×*Ñ*¨4Ô0Ø�?Š?à�JŠJ¨D¯J©J×,=Ñ,=Õ,?ÀÇÁ×AWÑAWÕAYÐZÔ[Ø�J‰JØ×&Ò&Ø—I‘I×$Ñ$Õ&¨¯©×(>Ñ(>Õ(@ð(Bà—H‘Hóôð
 �J‰J�sŒOØ�O‰O×2Ñ2°4Ô8Ø�O‰O×&Ñ& tÔ,Ø6:·i±i×6FÑ6FÓ6HÐHˆÔ˜tÔ3à—_‘_ˆ
ØÐ!¨*×*>Ò*>ØˆJàÐ!Ø×/Ñ/°Ô5Ø�	‰	×)Ñ)¨$Ô/Ø×Ñ×2Ñ2°4Ô8ØÐ!Ø×.Ñ.Ø�d×'Ñ'×.Ñ.Ó0ô2àÐ!Ø×-Ñ-¨dÔ3Ø×!Ñ! $Ô'à6:·m±m×6JÑ6JÓ6LÐLˆÔ˜tÔ3Ø�‰×,Ñ,¨T×->Ñ->ÀÔEØ�	‰	×(Ñ(¨Ô.Ø�	‰	×Ñ˜TÔ"Ø�>Š>Ø�N‰N×1Ñ1°$Ô7Ø�N‰N×%Ñ% dÔ+Ø�8Š8Ø�H‰H×+Ñ+¨DÔ1Ø�H‰H×Ñ Ô%Ø�:Š:Ø�J‰J×-Ñ-¨dÔ3Ø�J‰J×!Ñ! $Ô'Ø×Ñ×ÑÕ r3   )NNF)r,   r-   r.   r«   rã  ra  rk  r_  r`  r^  rc  rœ   r~  r€  r³   r
   rî  r   rÞ  r‹  rw   r  r  r2   r3   r4   r]  r]    s˜   „ ò(G€Kà€JØ€LØÐØ€IØ
€CØ€HØ€Jà?CØ8=óGDòR+ò&ò9ð2 1˜J×0Ñ0Ø×!Ñ!Ø#ˆJ×#Ñ# G¨j×.GÑ.GÈÓNð$
óÐò
ò2Bó6!r3   r]  c                   óˆ   — e Zd ZdgZdZdZdZdZdZdZ	dZ
dZdZed„ «       Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zedd„«       Zd„ Zy)r|  r¼   NFc                 ó,   — t        | j                  «      S r‡   )r   r{  r©   s    r4   Úpunycode_class_namez!CClassDefNode.punycode_class_name  s   € ä˜tŸ™Ó/Ð/r3   c                 óÚ   — t        | d«      sTddlm} | j                  r;|j	                  | j
                  |g | j                  d¬«      | _        | j                  S d | _        | j                  S )NÚ_buffer_defaultsr   r©  F)Úneed_complete)rL  rØ   rª  Úbuffer_defaults_noder­  Úbuffer_defaults_posr™  )rŽ   r¡   rª  s      r4   r®  zCClassDefNode.buffer_defaults  so   € Ü�tÐ/Ô0Ý Ø×(Ò(Ø(.×(EÑ(EØ×,Ñ,Ø˜˜T×6Ñ6Ø"'ð )Fó ))�Ô%ð ×$Ñ$Ð$ð )-�Ô%Ø×$Ñ$Ð$r3   c                 óv  — | j                   rI| j                  dk7  r:| j                   j                  d«      }|j                  || j                  «      }|sy |}|j                  | j                  | j                  dd| j                   d | j                  | j                  | j                  | j                  | j                  | j                  | j                  |«      | j                  ¬«      | _        | j                  r?t!        | j                  j"                  «      dkD  rd| j                  j$                  _        y y y )Nr—  rH   r   )rm   r9   rH  Úimplementingr  rm  Úobjstruct_cnameÚtypeobj_cnamero  r  Ú
check_sizerÓ  r®  Úshadowr   T)r  ro  Úsplitrn  r9   Údeclare_c_classr{  Úobjstruct_nameÚtypeobj_namer  r¡  rÓ  r®  r¢  r  rn   rK   rU   rl  Úmultiple_bases)rŽ   r¡   ri  Ú
home_scopes       r4   rê  zCClassDefNode.declare+  sý   € Ø×Ò §¡°8Ò ;Ø×*Ñ*×0Ñ0°Ó5ˆKØ×1Ñ1°+¸t¿x¹xÓHˆJÙØàˆJà×/Ñ/Ø—‘Ø—‘ØØØ×(Ñ(ØØ ×/Ñ/Ø×+Ñ+Ø—‘Ø×*Ñ*ØŸ™Ø—‘Ø ×0Ñ0°Ó5Ø—;‘;ð 0ó  ˆŒ
ð �:Š:œ#˜dŸj™jŸo™oÓ.°Ò2Ø-1ˆD�J‰J�O‰OÕ*ð 3ˆ:r3   c                 óh  — i }| j                   s|S ddlm} g }| j                   D ]è  }|j                  }d }t	        ||j
                  «      r|}|j                  }t        j                  ||«      }|dk(  r|rt        |j                  d«       d|d<   Œn|dk(  red }	i }
|rWt	        ||j                  «      r|j                  }	n4|j                  j                  }	|j                  }|r|j                  «       }
|	|
f||<   ŒØ|j!                  |«       Œê |rt        |d   j                  d	«       || _         |S )
Nr   rj  zfunctools.total_orderingz total_ordering cannot be called.TÚtotal_orderingúdataclasses.dataclassr   z8Cdef functions/classes cannot take arbitrary decorators.)rã  rØ   rœ  r\  rL   ÚCallNoderl  r   Ú'exprnode_to_known_standard_library_namer   r9   ro  rU   r—  r˜  Úas_python_dictrµ  )rŽ   r¡   Úextra_directivesrœ  Úremaining_decoratorsÚoriginal_decoratorr\  Údecorator_callÚ
known_namerU   rV   Úkwds_s               r4   Ú_handle_cclass_decoratorsz'CClassDefNode._handle_cclass_decoratorsF  sF  € ØÐØ�ŠØ#Ð#åà!Ðà"&§/¤/ÐØ*×4Ñ4ˆIð "ˆNÜ˜) Y×%7Ñ%7Ô8Ø!*�Ø%×.Ñ.�	Ü ×HÑHÈÐTWÓXˆJØÐ7Ò7Ù!Ü˜.×,Ñ,Ð.PÔQØ59Ð Ð!1Ñ2ØØÐ6Ò6Ø�Ø�Ù!Ü! .°)×2JÑ2JÔKØ-×2Ñ2™à-×=Ñ=×BÑB˜Ø .× ;Ñ ;˜Ù Ø#(×#7Ñ#7Ó#9˜DØ04°d¨|Ð  Ñ,ØØ ×'Ñ'Ð(:Õ;ð9 #2ñ:  ÜÐ& qÑ)×-Ñ-Ð/iÔjØ.ˆŒØÐr3   c                 óš  ‡ ‡— ‰j                   r"‰ j                  st        ‰ j                  d«       ‰ j	                  ‰«      }d ‰ _        ‰ j                  r—d ‰ _        ‰j                  D ]#  }|j                  ‰ j                  k(  sŒ|‰ _        Œ% ‰ j                  €Rt        ‰ j                  d ‰j                  «      ‰ _        d‰ j                  _        ‰j                  ‰ j                  «       ‰ j                  j                  �rJ‰ j                  j                  d   }|j!                  ‰«      }|t"        j$                  u r‰j'                  d«      j(                  }n[|t"        j*                  u r‰j'                  d«      j(                  }n-|t"        j,                  u r‰j'                  d«      j(                  }|€%t        |j                  d‰ j.                  z  «       �n'|t0        u rd }�n|j2                  s2|j4                  r|j6                  st        |j                  d|z  «       nÝ|j9                  «       s2t        |j                  d	|j                  ›d
‰ j.                  ›d�«       n›|j:                  rJ|j:                  j<                  r4|j>                  r(t        |j                  d	|›d
‰ j.                  ›d�«       nE|j4                  r2|j                  dv r$t        |j                  d|j                  z  «       n|‰ _        ‰j<                  jA                  dd«      dkD  r*|t"        j0                  k7  rtC        ‰ j                  dd«       ‰ jD                  d u}|rL‰ j
                  r@‰ j
                  j:                  s*‰ j
                  jF                  jI                  ˆˆ fd„«       y ‰ j                  rI‰ jJ                  dk7  r:‰ j                  jM                  d«      }‰jO                  |‰ j                  «      }	|	sy ‰}	‰ jJ                  dk(  ra‰ j                  dk(  rR‰ j.                  tP        jR                  v r6‰jT                  d d dk7  r$tC        ‰ j                  d‰ j.                  z  d«       |	jW                  ‰ j.                  ‰ j                  |xr ‰ jX                  |xr ‰ jX                   ‰ j                  ‰ j
                  ‰ j                  ‰ jZ                  ‰ j\                  ‰ jJ                  ‰ j^                  ‰ j`                  ‰ jc                  ‰«      ‰ jd                  ¬«      ‰ _3        ‰ j                  r=ti        ‰ j                  j                  «      dkD  rd‰ jf                  j(                  _5        ‰ jd                  r*‰ jf                  |	j'                  ‰ j.                  «      _6        |	‰ur@‰ jJ                  dk(  r1‰jo                  ‰ j.                  ‰ jf                  ‰ j                  «       ‰ jf                  j(                  j:                  x‰ _        }
|
�®|r;‰j<                  jq                  «       |
_        |
j<                  js                  |«       n‰j<                  |
_        d|
j<                  v rRd}|
j<                  d   }|r4|d   }|jA                  d«      }|xr |jt                  xr |jv                  }|rdnd|
_<        ‰ jz                  r5t|        j~                  r%t�        ‰ j                  ‰ jz                  «      |
_=        |rÈ‰ jD                  jƒ                  |
«       ‰ j:                  j…                  d«      }|ru|j†                  ri|
jˆ                  s]|
jŠ                  sQ‰ j:                  j�                  d«      |_G        ‰ j:                  j‘                  d|jz                  |j                  «       ‰ jX                  rd|
_D        nd|
_E        ti        ‰ j                  j                  «      dkD  �r|r‰ jX                  r-t        ‰ j                  j                  d   j                  d«       ‰ j                  j                  dd  D ]*  }|j!                  ‰«      sŒt        |j                  d «       Œ, d‰ jf                  j(                  _I        dd!lJmK} |j™                  ‰ j                  |j›                  ‰ j                  ‰ j.                  ¬"«      ‰ j                  |j�                  ‰ j                  g ¬#«      g¬$«      ‰ _O        n}‰ j
                  rO‰ j
                  j                   xs ‰ j
                  j’                  ‰ jf                  j(                  _I        d ‰ _O        n"d‰ jf                  j(                  _I        d ‰ _O        ‰j£                  ‰ jf                  «       ‰ jf                  j(                  jF                  D ]	  } |«        Œ y )%NzTObject struct name specification required for C class defined in 'extern from' blockr   r   r¤  rì  rp  z+First base of '%s' is not an extension typez'%s' is not an extension typezBase class 'z' of type 'z' is incompletez
' is final)r·  ÚbyteszGinheritance from PyVarObject types like '%s' is not currently supportedÚfreelistzIfreelists cannot be used on subtypes, only the base class can manage themc                  ó&   •— ‰j                  ‰ «      S r‡   )r³   )r¡   rŽ   s   €€r4   Ú<lambda>z4CClassDefNode.analyse_declarations.<locals>.<lambda>¯  s   ø€ À×@YÑ@YÐZ]Ô@^r3   r—  rH   Ú__builtin__é   zcpython.z %s already a builtin Cython type)rm   r9   rH  rž  r  rm  rŸ  r   r¡  ro  r  rÓ  r®  r¢  Tr«  FÚfrozenrˆ   Ú__dict__getterz'Only declare first base in declaration.z+Only one extension type base class allowed.rj  rD  ri  rz  )Rr@  r¥  r   r9   rµ  rm  r  ÚmoduleÚcimported_modulesrm   r   rŽ  Úhas_extern_classÚadd_imported_modulern   rU   r�  r
   r	  rj  rl  Úc_float_typerv  r{  r   rÞ  r  rŸ  r§  r  rÿ   r  rŠ   r   r¼   Údefered_declarationsrµ  ro  r£  rn  r   Úbuiltin_typesrß  r¤  rp  r¦  r¡  r  rÓ  r®  r¢  r  rK   r§  r`  Úadd_imported_entryr   rš   rð   r¯   Úis_c_dataclass_scoperC   r    rà  rD   r³   r”  Úis_variableÚdefinedÚimplementedÚmangle_internalÚgetter_cnameÚdeclare_propertyÚ
early_initrØ   rœ  r–  ÚIdentifierStringNoders  Útype_init_argsÚis_externalÚallocate_vtable_names)rŽ   r¡   r¯  r¿  ru  rm  Úbase_class_scopeÚhas_bodyri  r¨  r  Ú	is_frozenÚdataclass_configÚdecorator_kwargsÚfrozen_flagÚ
dict_entryÚ
other_baserœ  Úthunks   ``                 r4   r³   z"CClassDefNode.analyse_declarationsq  s`  ù€ ð
 �?Š? 4×#6Ò#6Ü�$—(‘(ÐrÔsØ×9Ñ9¸#Ó>ÐØˆŒð ×ÒØˆDŒKØ×/Ô/�Ø—;‘; $×"2Ñ"2Ó2Ø"(�D•Kð 0ð �{‰{Ð"Ü)¨$×*:Ñ*:¸DÀ#Ç+Á+ÓN�”Ø/0�—‘Ô,Ø×'Ñ'¨¯©Ô4à�:‰:�?‹?Ø—:‘:—?‘? 1Ñ%ˆDØ×,Ñ,¨SÓ1ˆIð œJ×1Ñ1Ñ1ØŸJ™J uÓ-×2Ñ2‘	Øœj×5Ñ5Ñ5ØŸJ™J wÓ/×4Ñ4‘	Øœj×>Ñ>Ñ>ØŸJ™J yÓ1×6Ñ6�	àÐ Ü�d—h‘hÐ MÐPT×P_ÑP_Ñ _Ö`ØœnÑ,Ø#'Ò Ø×0Ò0Ø#×3Ò3¸	×8QÒ8QÜ�d—h‘hÐ ?À)Ñ KÕLØ×*Ñ*Ô,Ü�d—h’hØ—N“N D§O£Oð!5õ 6à—’ Y§_¡_×%?Ò%?Ø×,Ò,Ü�d—h’hÚ˜tŸ›ð!0õ 1à×*Ò*Ø—^‘^Ð'9Ñ9Ü�d—h‘hÐ iØ!Ÿ™ñ!'õ (ð "+�”à�~‰~×!Ñ! *¨aÓ0°1Ò4¸Äj×F_ÑF_Ò9_Ü˜Ÿ™Ð"mÐopÔqà—9‘9 DÐ(ˆÙ˜Ÿš¨t¯~©~×/CÒ/Cð �N‰N×/Ñ/×6Ñ6Ô7^Ô_Øà×Ò §¡°8Ò ;Ø×*Ñ*×0Ñ0°Ó5ˆKØ×1Ñ1°+¸t¿x¹xÓHˆJÙØàˆJà�?‰?˜hÒ&Ø× Ñ  MÒ1Ø—O‘O¤w×'<Ñ'<Ñ<Ø×&Ñ& r¨Ð*¨jÒ8Ü˜Ÿ™Ð"DÀtÇÁÑ"VÐXYÔZà×/Ñ/Ø—‘Ø—‘ØÒ- $§+¡+Ø!Ò5¨$¯+©+ oØ×(Ñ(Ø—n‘nØ ×/Ñ/Ø×+Ñ+Ø—‘Ø—‘Ø×*Ñ*Ø—‘Ø ×0Ñ0°Ó5Ø—;‘;ð 0ó  ˆŒ
ð �:Š:œ#˜dŸj™jŸo™oÓ.°Ò2Ø-1ˆD�J‰J�O‰OÔ*à�;Š;Ø=A¿Z¹ZˆJ×Ñ˜dŸo™oÓ.Ô:Ø˜SÑ  T§_¡_¸Ò%@Ø×"Ñ" 4§?¡?°D·J±JÀÇÁÔIØ!ŸZ™ZŸ_™_×2Ñ2Ð2ˆŒ
�UØÐÙØ#&§>¡>×#6Ñ#6Ó#8�Ô Ø× Ñ ×'Ñ'Ð(8Õ9à#&§>¡>�Ô Ø&¨%×*:Ñ*:Ñ:Ø!�	à#(×#3Ñ#3Ð4KÑ#LÐ Ù#Ø'7¸Ñ':Ð$Ø"2×"6Ñ"6°xÓ"@�KØ +Ò \°×0FÑ0FÒ \È;×K\ÑK\�IÙ9B©XÈ�Ô*à�8Š8œ×*Ò*Ü& t§x¡x°·±Ó:ˆEŒIáØ�I‰I×*Ñ*¨5Ô1ØŸ™×/Ñ/°
Ó;ˆJÙ˜j×4Ò4¸e¿mºmÐTY×TeÒTeØ*.¯*©*×*DÑ*DÐEUÓ*V�
Ô'Ø—
‘
×+Ñ+¨J¸
¿¹È
ÏÉÔWØ�{Š{Ø !�•à$%�Ô!äˆt�z‰z�‰Ó !Ó#Ù˜tŸ{š{Ü�d—j‘j—o‘o aÑ(×,Ñ,Ð.WÔXð #Ÿj™jŸo™o¨a¨bÓ1�
Ø×-Ñ-¨cÕ2Ü˜*Ÿ.™.Ð*WÕXð 2ð *+ˆD�J‰J�O‰OÔ&Ý#Ø"+×"5Ñ"5Ø—‘Ø×4Ñ4°T·X±XÀTÇ_Á_Ð4ÓUØ—j‘jØ×(Ñ(¨¯©À2Ð(ÓFðHð #6ó #IˆDÕð
 �^Š^Ø)-¯©×)CÑ)CÒ)`ÀtÇ~Á~×G`ÑG`ˆD�J‰J�O‰OÔ&Ø"&ˆDÕà)*ˆD�J‰J�O‰OÔ&Ø"&ˆDÔà×!Ñ! $§*¡*Ô-à—Z‘Z—_‘_×9Ô9ˆEÙ�Gñ :r3   c                 óì   — | j                   r@| j                  j                  j                  }| j                   j	                  |«      | _         | j
                  r| j
                  j	                  |«       | S r‡   )r¼   r  rl  r  rw   rÐ  ré  s      r4   rw   z!CClassDefNode.analyse_expressions  sT   € Ø�9Š9Ø—J‘J—O‘O×)Ñ)ˆEØŸ	™	×5Ñ5°eÓ<ˆDŒIØ×ÒØ×Ñ×3Ñ3°CÔ8Øˆr3   c                 ó¢   — | j                   rC| j                  | j                  |«       | j                   j                  | j                  |«       y y r‡   )r¼   r  r  r  r6  s      r4   r  z+CClassDefNode.generate_function_definitions  s:   € Ø�9Š9Ø×,Ñ,¨T¯Z©Z¸Ô>Ø�I‰I×3Ñ3°D·J±JÀÕEð r3   c                 óˆ  — |j                  | j                  «       | j                  j                  j                  �sÞd }| j
                  �rs|j                  j                  t        j                  d¬«      }| j
                  j                  |«       |j                  |›d| j
                  j                  «       ›d�«       |j                  |j                  d|› �| j                  «      «       |j                  |t        j                  «       |j                  j                  t        j                   d¬«      }|j                  |› d|› d�«       |j                  |j                  d|› �| j                  «      «       |j                  j                  t        j                  d¬«      }|j                  d	«       |j                  d
«       |j                  j                  t        j                  d¬«      }|j                  |› d�«       |j                  |j#                  || j                  «      «       |j%                  |t        «       |j                  j                  t        j                  d¬«      }|j                  |› d�«       |j                  |j#                  || j                  «      «       |j%                  |t        «       |j                  j                  t        j                  d¬«      }|j                  |› d|› d| j
                  j                  «       › d�«       |j                  |j#                  || j                  «      «       |j%                  |t        «       |j                  |› d|› d|› d�«       |||fD ]=  }|j'                  |t        j                  «       |j                  j)                  |«       Œ? |j                  d«       |j                  d«       |j                  |›d| j
                  j                  «       ›d�«       |j                  |j#                  || j                  «      «       |j%                  |t        «       |j                  d|›d|›d�«       d|z  }	|j                  d|	z  «       |j                  d|z  «       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  |j+                  | j                  «      «       |j                  d«       |j                  |› d �«       |j                  j)                  |«       |j'                  |t        j                  «       |j                  j)                  |«       | j
                  j-                  |«       | j
                  j/                  |«       | j1                  | j                  ||d¬!«       |�;|j'                  |t        j                  «       |j                  j)                  |«       | j2                  r| j2                  j5                  |«       y y )"NTr   z = __Pyx_PyTuple_GET_ITEM(z, 1);z!CYTHON_ASSUME_SAFE_MACROS && !Fz* = ((PyTypeObject*)__Pyx_PyTuple_GET_ITEM(z, 0));zM#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000z/if (__Pyx_get_runtime_version() < 0x030A0000) {z> = PyObject_GetAttrString((PyObject*)&PyType_Type, "__new__");z, = PyTuple_Pack(1, (PyObject*)&PyType_Type);z = PyNumber_Add(rÈ   ro  z = PyObject_Call(rj  z} elser…  zE = __Pyx_PyType_GetSlot(&PyType_Type, tp_new, newfunc)(&PyType_Type, z)if (__Pyx_PyType_GetSlot((PyTypeObject*) z, tp_base, PyTypeObject*) != rž  z@__Pyx_PyType_GetSlot((PyTypeObject*) %s, tp_base, PyTypeObject*)zB__Pyx_TypeName base_name = __Pyx_PyType_GetFullyQualifiedName(%s);zB__Pyx_TypeName type_name = __Pyx_PyType_GetFullyQualifiedName(%s);zxPyErr_Format(PyExc_TypeError, "best base '" __Pyx_FMT_TYPENAME "' must be equal to first base '" __Pyx_FMT_TYPENAME "'",z#             base_name, type_name);z!__Pyx_DECREF_TypeName(base_name);z!__Pyx_DECREF_TypeName(type_name);rn  z = NULL;)Úbases_tuple_cnameÚcheck_heap_type_bases)r-  r9   r  rl  rÎ  rÐ  r$  r%  r
   r   r?  rS   r�   Úerror_goto_ifr¸  r   ró  r'  r(  r,  r-  r+  r�  rL  Úgenerate_type_ready_coder¼   r  )
rŽ   rX   rn   Ú
first_baseÚ
trial_typeÚtype_newÚ
type_tupleÚ
args_tupler.  Útrial_type_bases
             r4   r  z%CClassDefNode.generate_execution_code  sé  € ð 	�‰�d—h‘hÔØ�z‰z�‰×)Ó)ØˆEØ×"Ó"àŸ™×4Ñ4´Z×5NÑ5NÐ[_Ð4Ó`�à×#Ñ#×<Ñ<¸TÔBØ—
‘
ÂEÈ4×K^ÑK^×KeÑKeÕKgÐhÔiØ—
‘
˜4×-Ñ-Ð0OÐPUÈwÐ.WÐY]×YaÑYaÓbÔcØ—‘ ¤z×'@Ñ'@ÔAà!Ÿ^™^×9Ñ9¼'×:KÑ:KÐX]Ð9Ó^�
Ø—
‘
˜j˜\Ð)SÐTYÐSZÐZ`ÐaÔbØ—
‘
˜4×-Ñ-Ð0OÐPZÈ|Ð.\Ð^b×^fÑ^fÓgÔhð "Ÿ^™^×9Ñ9¼*×:SÑ:SÐ`dÐ9Óe�
à—
‘
ÐjÔkØ—
‘
ÐLÔMØŸ>™>×7Ñ7¼
×8QÑ8QÐ^bÐ7Óc�Ø—
‘
˜h˜ZÐ'eÐfÔgØ—
‘
˜4×2Ñ2°8¸T¿X¹XÓFÔGØ—‘ ¬.Ô9Ø!Ÿ^™^×9Ñ9¼*×:SÑ:SÐ`dÐ9Óe�
Ø—
‘
˜j˜\Ð)UÐVÔWØ—
‘
˜4×2Ñ2°:¸t¿x¹xÓHÔIØ—‘ 
¬NÔ;Ø!Ÿ^™^×9Ñ9¼*×:SÑ:SÐ`dÐ9Óe�
Ø—
‘
˜j˜\Ð)9¸*¸ÀRÈ×H[ÑH[×HbÑHbÓHdÐGeÐegÐhÔiØ—
‘
˜4×2Ñ2°:¸t¿x¹xÓHÔIØ—‘ 
¬NÔ;Ø—
‘
˜j˜\Ð):¸8¸*ÀBÀzÀlÐRZÐ[Ô\Ø% z°:Ó>�DØ×)Ñ)¨$´
×0IÑ0IÔJØ—N‘N×/Ñ/°Õ5ð ?ð —
‘
˜8Ô$Ø—
‘
˜8Ô$Ø—
‘
Ú × 3Ñ 3× :Ñ :Õ <ð>ô ?à—
‘
˜4×2Ñ2°:¸t¿x¹xÓHÔIØ—‘ 
¬NÔ;Ø—
’
Ú¢
ð,ô -ð #eÐgqÑ"q�Ø—
‘
Ð_ÐbqÑqÔrØ—
‘
Ð_ÐblÑlÔmØ—
‘
ð wô xà—
‘
Ð@ÔAØ—
‘
Ð>Ô?Ø—
‘
Ð>Ô?Ø—
‘
˜4Ÿ?™?¨4¯8©8Ó4Ô5Ø—
‘
˜3”à—
‘
˜j˜\¨Ð2Ô3Ø—‘×+Ñ+¨JÔ7à×%Ñ% j´*×2KÑ2KÔLØ—‘×+Ñ+¨JÔ7à×#Ñ#×:Ñ:¸4Ô@Ø×#Ñ#×.Ñ.¨tÔ4à×)Ñ)¨$¯*©*°dÈeÐkoÐ)ÔpØÐ Ø×%Ñ% e¬Z×-FÑ-FÔGØ—‘×+Ñ+¨EÔ2à�9Š9Ø�I‰I×-Ñ-¨dÕ3ð r3   c                 óÈ  — | j                   }t        j                  › d|j                  › �}|j                  }|sy | j
                  dk(  rF|j                  r9|j                  rJ ‚|j                  |j                  ›d|j                  ›d�«       y |sJ ‚|j                  sJ ‚d|j                  z  }|j                  d«       d }|s£|j                  j                  r�|j                  j                  t        d¬«      }|j                  |›d	|j                  |j                  j                  «      ›d
|j                  || j                  «      ›�«       |j!                  |t        «       |s|�r|r†|j"                  j%                  t'        j(                  dd«      «       |j+                  | j                  d|›dt-        j.                  d|j0                  «      j3                  |«      ›d|xs |›d�«       |j                  |›dt        j4                  ›d|›d|xs |›d�«       |r2|j7                  |t        ¬«       |j                  j9                  |«       |j                  |j                  || j                  «      «       nD|j                  |›dt        j4                  ›d|›d|j                  || j                  «      ›�«       t-        j.                  d|j"                  j0                  «      }	|	j;                  |«      �s�|j                  d«       |j                  |›d|	j<                  ›d|	j3                  |«      ›d�«       dD ]Ý  }
t-        j>                  |j"                  j0                  «      jA                  |
«      }	|	j3                  |«      dk(  sŒPt-        jB                  ||	«      rŒg|j                  d|›d|	j<                  ›d|›d|›d |	j<                  ›d!�«       |j                  |›d|	j<                  ›d|›d |	j<                  ›d�«       |j                  d"«       Œß |j                  d#«       |j                  d$«       |j                  d%«       |j                  d&«       |j                  d'«       |j                  d(«       |j                  d)«       |j"                  j%                  t'        j(                  d*d«      «       |j+                  | j                  d+|›d|›d�«       |j                  d'«       |rM|jE                  |t        «       |jG                  |t        «       |j                  |j                  ›d,|›d�«       |j                  |›d|j                  ›d�«       |j                  d)«       |j                  }|rñ|jH                  rÖ|jJ                  d-k7  rÇ|j                  d.|jL                  rd/nd0›|jJ                  ›d1|jL                  rd/nd0›|jJ                  ›d2�«       |j"                  j%                  t'        j(                  d3d«      «       |j                  |j                  «      }|j+                  | j                  d4|z  «       |j                  d"«       n|j                  }|rŒñ|j                  d«       t-        j>                  |j"                  j0                  «      D ]  }|jO                  ||«       Œ |j                  d)«       |j                  d5«       |j"                  j%                  t'        j(                  d6d«      «       |j+                  | j                  d7|z  «       |j                  d)«       |jQ                  d8|› �«       t-        jR                  |d9«      }t-        jR                  |d«      }|dk(  rd|dk(  r_|j                  d«       |j                  d:|›d;|›d<�«       |j                  d=|z  «       |j                  d"«       |j                  d)«       | j                   j                  jT                  D �]Ò  }|jV                  dv }|jX                  sŒtZ        j\                  sŒ0|j^                  sŒ=|rŒ@t-        j>                  | j                   j                  j0                  «      jA                  |jV                  «      }|r|ja                  «       nd }|r|j                  |«       |j                  d>«       |j                  d?«       |j                  d@|›dA|jV                  ›dB|j                  dC| j                  «      ›�«       |j                  dD«       |j                  dE|j^                  z  «       |j                  |j^                  ›dF|jb                  ›d�«       |j                  dG|j^                  z  «       |j                  d"«       |j                  d"«       |j                  d)«       |s�ŒÂ|j                  d)«       �ŒÕ |jd                  rª|j"                  j%                  t'        j(                  dHdI«      «       |j+                  | j                  dJ|›d|jf                  ›d�«       |j"                  j%                  t'        j(                  dKdI«      «       |j+                  | j                  dL|z  «       |j                  jh                  sr|j                  j0                  jk                  dM«      sM|j+                  | j                  dNt        j4                  ›d|jm                  |jn                  «      ›dO|›d�«       |jp                  s|js                  dP«      nd }|r |j                   t        u rxdQ|z  }|jL                  r|jJ                  }ndR|jJ                  z  }|j                  dS«       |j                  dT|›dU|›dV|›d|jt                  ›d�	«       |j                  d)«       ntw        |j                  dW«       |jp                  s|js                  dX«      rQny |j"                  j%                  t'        j(                  dYd«      «       |j+                  | j                  dZ|z  «       y y )[NrJ   r—  ú = &rG  z%s_specz#if CYTHON_USE_TYPE_SPECSTr   z = PyTuple_Pack(1, (PyObject *)r"  ÚValidateBasesTuplezExtensionTypes.cz__Pyx_validate_bases_tuple(z.name, Útp_dictoffsetrÈ   rh  z3 = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(ú, &ro  r_  z	, NULL); Útp_as_bufferz$#if !CYTHON_COMPILING_IN_LIMITED_APIrF  r1  r¬  zif (!z->tp_as_buffer->ú && z->tp_base->tp_as_buffer && z->tp_base->tp_as_buffer->rž  rn  z>#elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)zB/* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */z#elif defined(_MSC_VER)zU#pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")rƒ  zL#warning "The buffer protocol is not supported in the Limited C-API < 3.11."r…  ÚFixUpExtensionTypez'__Pyx_fix_up_extension_type_from_spec(&z.tp_bases = ÚPyTypeObjectzif (sizeof(rØ   rÝ  z) != sizeof(rÚ  ÚValidateExternBasez__Pyx_validate_extern_base(%s)z#if !CYTHON_USE_TYPE_SPECSÚPyType_Readyz__Pyx_PyType_Ready(%s)ú(PyObject*)Útp_getattrozCif ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!z->tp_dictoffset && z,->tp_getattro == PyObject_GenericGetAttr)) {z*%s->tp_getattro = PyObject_GenericGetAttr;ra  r¡  z7PyObject *wrapper = PyObject_GetAttrString((PyObject *)z, "z"); Úwrapperz3if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {z0%s = *((PyWrapperDescrObject *)wrapper)->d_base;z.doc = z0((PyWrapperDescrObject *)wrapper)->d_base = &%s;Ú	SetVTableúImportExport.cz__Pyx_SetVtable(ÚMergeVTablesz__Pyx_MergeVtables(%s)ÚinternalzPyObject_SetAttr(r  Ú__weakref__z%s->tp_weaklistoffsetz	struct %sz#if CYTHON_USE_TYPE_SLOTSr�  z == 0) z = offsetof(z)__weakref__ slot must be of type 'object'Ú__reduce_cython__ÚSetupReducez#__Pyx_setup_reduce((PyObject *) %s))<rl  r	   Úmodulestatevalue_cnamer¶  r  ro  r   rS   rÝ  rm  r$  r%  r   r  r'  r9   r(  r  rŒ  r   r˜  rì  r   Úget_slot_by_namerÿ   Ú	slot_coderP  r5  r-  Úis_emptyÚ	slot_namer2  r3  Úget_base_slot_functionr¸  rJ  rÑ  rŸ  r  Úgenerate_dynamic_init_codeÚput_make_object_deferredÚget_slot_code_by_nameÚpyfunc_entriesrm   rì  r    rà  r  r4  r  Úvtable_cnameÚvtabptr_cnameÚis_internalrŠ   r¸  r{  Úis_closure_class_scoper”  rÛ  r   )r  rX   rß  rà  rl  r¶  r  Útypespec_cnameÚ
tuple_tempÚbuffer_slotÚbuffer_method_namerm  Úbase_typeptr_cnamer5  Úgetattr_slot_funcÚdictoffset_slot_funcr]   rf  r÷  Úweakref_entryÚtp_weaklistoffsetÚ	objstructs                         r4   râ  z&CClassDefNode.generate_type_ready_codek  sV
  € ð �z‰zˆÜ!×8Ñ8Ð9¸¸D×<NÑ<NÐ;OÐPˆØ—
‘
ˆÙØØ×Ñ˜xÒ'ð ×!Ò!à×-Ò-Ð-Ð-Ø—
‘
Ø×&Ó&Ø×&Ó&ðô ð ñ !Ð �=Ø×%Ò%Ð%Ð%Ø&¨×);Ñ);Ñ;ˆNØ�J‰JÐ2Ô3ØˆJÙ$¨×):Ñ):×)DÒ)DØ!Ÿ^™^×9Ñ9¼.ÐUYÐ9ÓZ�
Ø—
‘
ÚØ×6Ñ6°u×7HÑ7H×7RÑ7RÕSØ×+Ñ+¨J¸¿	¹	ÔBðô ð
 —‘ 
¬NÔ;á ¢JÙ(Ø×$Ñ$×5Ñ5Ü#×/Ñ/Ð0DÐFXÓYô[à×)Ñ)¨%¯)ª)Ú&Ü!×2Ñ2°?ÀE×DTÑDTÓU×_Ñ_Ð`eÕfØ)Ò7¨ZÑ7ð6ô ð —
‘
Ú!Ü×'Ó'Ú"Ø%Ò3¨Ñ3ð	ô ñ Ø×*Ñ*¨:¼NÐ*ÔKØ—N‘N×/Ñ/°
Ô;Ø—
‘
˜4×2Ñ2°=À%Ç)Á)ÓLÕMà—
‘
â%Ü×+Ó+Ú&Ø×/Ñ/°¸u¿y¹yÔIð	ôô $×4Ñ4°^ÀT×EUÑEU×E`ÑE`ÓaˆKØ×'Ñ'¨Õ.Ø—
‘
ÐAÔBØ—
‘
Ú!Ø×)Ó)Ø×)Ñ)¨%Õ0ðô ó +QÐ&Ü"+×":Ñ":Ø×(Ñ(×3Ñ3ó#5ß5LÑ5LÐM_Ó5`ð  à"×,Ñ,¨UÓ3°sÓ:Ä9×CcÑCcÐdiÐkvÕCwØŸ
š
ò *¨;×+@Ó+@Ú)Ú)¨;×+@Ó+@ð$ô ð Ÿ
™
Ú)¨;×+@Ó+@Ú)¨;×+@Ó+@ð$ô ð Ÿ
™
 3�ð +Qð  —
‘
Ð[Ô\Ø—
‘
Ð_Ô`Ø—
‘
Ð4Ô5Ø—
‘
ÐtÔuØ—
‘
˜7Ô#Ø—
‘
ÐkÔlØ—
‘
˜8Ô$à×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà×!Ñ! %§)¢)Ú¢ð./ô 0ð �J‰J�wÔÙ Ø—‘Ð 1´>ÔBØ× Ñ Ð!2´NÔCØ—
‘
°$×2DÓ2DÒFWÐXÔYØ�J‰JÚØ×"Ó"ðô ð �J‰J�xÔ àŸ™ˆIÙØ×(Ò(¨Y×-FÑ-FÈ.Ò-Xð —J’JØ"×/Ò/™°YÐ>À×@TÓ@TØ'×4Ò4™¸)ÐCÀY×E^ÓE^ð `ô að ×$Ñ$×5Ñ5Ü#×/Ñ/Ð0DÐFXÓYô[à)-×)KÑ)KÈDÏNÉNÓ)[Ð&Ø×)Ñ)¨%¯)©)Ð5UØ*ñ6,ô -à—J‘J˜s”OØØ%×/Ñ/�	ò ð  �J‰JÐ=Ô>ä!×0Ñ0°×1AÑ1A×1LÑ1LÖM�Ø×/Ñ/°°tÕ<ð Nà�J‰J�xÔ à�J‰JÐ3Ô4Ø×Ñ×-Ñ-Ü×'Ñ'¨Ð8JÓKôMà×!Ñ! %§)¡)Ð-EÈÑ-UÔVØ�J‰J�xÔ Ø×)Ñ)¨K¸°Ð*GÔHô !*× ?Ñ ?ÀÀ}Ó UÐÜ#,×#BÑ#BÀ5È/Ó#ZÐ Ø  CÒ'Ð,@ÀCÒ,GØ—
‘
ÐAÔBà—
’
â!¢=ð2ô 3ð —
‘
ÐGØ!ñ"ô #à—
‘
˜3”Ø—
‘
˜8Ô$ð
 Ÿ
™
×(Ñ(×7Õ7�Ø ŸI™IÐ)OÐO�	Ø—O“O¬×(:Ó(:Ø×.Ó.²yÜ$×3Ñ3ØŸ
™
×(Ñ(×3Ñ3ó5ß5LÑ5LÈTÏYÉYÓ5Wð áKO¨×)EÑ)EÔ)GÐUYÐ&Ù)ØŸ
™
Ð#5Ô6Ø—J‘JÐAÔBØ—J‘J˜s”OØ—J’Jâ)Ø ŸI›IØ ×3Ñ3°I¸u¿y¹yÔIðKôLð
 —J‘JØMôOà—J‘JØJØ ×2Ñ2ñ4ô5ð —J‘JØ*.×*@Ó*@À$Ç.Ã.ÐQôSà—J‘JØJØ ×2Ñ2ñ4ô5ð —J‘J˜s”OØ—J‘J˜s”OØ—J‘J˜xÔ(Û)ØŸ
™
 8Ö,ð= 8ð@ × Ò Ø× Ñ ×1Ñ1Ü×+Ñ+¨KÐ9IÓJôLà×%Ñ% e§i¢iÚ!Ø×&Ó&ð2ô ð × Ñ ×1Ñ1Ü×+Ñ+¨NÐ<LÓMôOà×%Ñ% e§i¡iÐ1IÈMÑ1YÔZØ—:‘:×)Ò)°$·*±*×2GÑ2G×2KÑ2KÈJÔ2Wð ×%Ñ% e§i¢iÜ×'Ó'Ø×*Ñ*¨5×+;Ñ+;Õ<Ú!ð2ô ð EJ×D`ÒD`˜E×-Ñ-¨mÔ<ÐfjˆMÙØ ×%Ñ%¬Ñ7Ø(?À-Ñ(OÐ%Ø×(Ò(Ø$(×$8Ñ$8™	à$/°$×2FÑ2FÑ$F˜	Ø—J‘JÐ:Ô;Ø—J’JÚ)Ú)Ú!Ø%×+Ó+ð	 -ô .ð
 —J‘J˜xÕ(ä˜-×+Ñ+Ð-XÔYà=B×=YÒ=Yˆu× Ñ Ð!4Õ5Ð_cð × Ñ ×1Ñ1Ü×+Ñ+¨MÐ;MÓNôPà×%Ñ% e§i¡iÐ1VÐYfÑ1fÕgð 6r3   c                 ó¢   — | j                   r| j                   j                  |«       | j                  r| j                  j                  |«       y y r‡   )rÐ  r½   r¼   r¸   s     r4   r½   zCClassDefNode.annotate[  s=   € Ø×ÒØ×Ñ×(Ñ(¨Ô.Ø�9Š9Ø�I‰I×Ñ˜tÕ$ð r3   r�  )r,   r-   r.   r«   r›  rœ  r  rÓ  r¥  r¦  r¡  rã  r¢  rY  r—  r®  rê  rµ  r³   rw   r  r  r2  râ  r½   r2   r3   r4   r|  r|  ú  s“   „ ð, �(€KØÐØÐØ€LØ
€CØ€NØ€LØ€JØ€JØ€Fàñ0ó ð0ò
%ò2ò6) òV]ò~òFò
K4ð\ òmhó ðmhó^%r3   r|  c                   ó0   — e Zd ZdgZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚPropertyNoder¼   c                 óÎ   — |j                  | j                  | j                  | j                  «      | _        | j
                  j                  | j                  j                  «       y r‡   )rÍ  rm   rC   r9   r  r¼   r³   r  r    s     r4   r³   z!PropertyNode.analyse_declarationsl  s@   € Ø×)Ñ)¨$¯)©)°T·X±X¸t¿x¹xÓHˆŒ
Ø�	‰	×&Ñ& t§z¡z×'7Ñ'7Õ8r3   c                 óF   — | j                   j                  |«      | _         | S r‡   rH  r    s     r4   rw   z PropertyNode.analyse_expressionsp  ó   € Ø—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr3   c                 ó<   — | j                   j                  ||«       y r‡   rJ  r6  s      r4   r  z*PropertyNode.generate_function_definitionst  rK  r3   c                  ó   — y r‡   r2   r¸   s     r4   r  z$PropertyNode.generate_execution_codew  r´   r3   c                 ó:   — | j                   j                  |«       y r‡   rN  r¸   s     r4   r½   zPropertyNode.annotatez  rO  r3   NrP  r2   r3   r4   r  r  b  s$   „ ð �(€Kò9òò;òó!r3   r  c                   óH   — e Zd ZdZdgZdZed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚCPropertyNodezADefinition of a C property, backed by a CFuncDefNode getter.
    r¼   Tc                 óp   — | j                   j                  }|rt        |d   t        «      sJ |«       ‚|d   S rL  )r¼   r!  rL   r  )rŽ   r!  s     r4   rs  zCPropertyNode.cfunc‰  s3   € à—	‘	—‘ˆÙœ E¨!¡H¬lÔ;ÐB¸UÓBÐ;Ø�Q‰xˆr3   c                 óP  — t        | j                  |¬«      }| j                  j                  |«       |j	                  | j                  | j
                  | j                  | j                  j                  |¬«      x}| _	        | j                  j                  j                  |_        y )N)Úclass_scope)ÚctypeÚproperty_scope)r   rm   r¼   r³   rÍ  rC   r9   rs  rå  r  rÛ  rÌ  )rŽ   r¡   r  r  s       r4   r³   z"CPropertyNode.analyse_declarations�  s~   € Ü˜dŸi™i°SÔ9ˆØ�	‰	×&Ñ& uÔ-Ø ×1Ñ1Ø�I‰I�t—x‘x §¡°·±×1GÑ1GÐX]ð 2ó _ð 	_ˆ�”
à!ŸZ™Z×-Ñ-×3Ñ3ˆÕr3   c                 óF   — | j                   j                  |«      | _         | S r‡   rH  r    s     r4   rw   z!CPropertyNode.analyse_expressions–  r  r3   c                 ó<   — | j                   j                  ||«       y r‡   rJ  r6  s      r4   r  z+CPropertyNode.generate_function_definitionsš  rK  r3   c                  ó   — y r‡   r2   r¸   s     r4   r  z%CPropertyNode.generate_execution_code�  r´   r3   c                 ó:   — | j                   j                  |«       y r‡   rN  r¸   s     r4   r½   zCPropertyNode.annotate   rO  r3   N)r,   r-   r.   r‚   r«   ró   rY  rs  r³   rw   r  r  r½   r2   r3   r4   r   r   ~  s@   „ ñð �(€KØ€Làñó ðò
4òò;òó!r3   r   c                   ó"   — e Zd Zg Zd„ Zd„ Zd„ Zy)Ú
GlobalNodec                 ó^   — | j                   D ]  }|j                  || j                  «       Œ  y r‡   )ÚnamesÚdeclare_globalr9   ©rŽ   r¡   rm   s      r4   r³   zGlobalNode.analyse_declarations«  s$   € Ø—J”JˆDØ×Ñ˜t T§X¡XÕ.ñ r3   c                 ó   — | S r‡   r2   r    s     r4   rw   zGlobalNode.analyse_expressions¯  rî  r3   c                  ó   — y r‡   r2   r¸   s     r4   r  z"GlobalNode.generate_execution_code²  r´   r3   Nr>  r2   r3   r4   r+  r+  ¤  s   „ ð
 €Kò/òór3   r+  c                   ó"   — e Zd Zg Zd„ Zd„ Zd„ Zy)ÚNonlocalNodec                 ó^   — | j                   D ]  }|j                  || j                  «       Œ  y r‡   )r-  Údeclare_nonlocalr9   r/  s      r4   r³   z!NonlocalNode.analyse_declarations½  s$   € Ø—J”JˆDØ× Ñ   t§x¡xÕ0ñ r3   c                 ó   — | S r‡   r2   r    s     r4   rw   z NonlocalNode.analyse_expressionsÁ  rî  r3   c                  ó   — y r‡   r2   r¸   s     r4   r  z$NonlocalNode.generate_execution_codeÄ  r´   r3   Nr>  r2   r3   r4   r3  r3  ¶  s   „ ð
 €Kò1òór3   r3  c                   ó:   — e Zd ZdgZd„ Zd„ Zd„ ZdZd„ Zd„ Z	d„ Z
y	)
rH  rC  c                 ó˜  — ddl m} | j                  }t        ||j                  «      rÇ|j
                  j                  «       }|dk(  r§|j                  «       \  }}t        |«      rt        |j                  d«       |j                  D ]X  \  }}|j                  |«      }	|	€t        |j                  d«       Œ0|j                  |j                  |	|j                  d¬«       ŒZ t        | _        y y t#        |dd «      �N|j$                  r|j'                  |«       t        | _        y |j(                  s|j*                  rt        | _        y y y )	Nr   rj  rê  z!Variable names must be specified.úUnknown typeT)rÔ  r  )rØ   rœ  rC  rL   ÚGeneralCallNoderl  r¢  Úexplicit_args_kwdsrK   r   r9   r¬  r�  r  r¯   ÚPassStatNoderN   r¬   rí   Údeclare_from_annotationr5  Úis_subscript)
rŽ   r¡   rœ  rC  r]   rU   rV   Úvarrø  rl  s
             r4   r³   z!ExprStatNode.analyse_declarationsÏ  s  € ÝØ�y‰yˆÜ�d˜I×5Ñ5Ô6Ø—=‘=×4Ñ4Ó6ˆDØ�yÒ Ø!×4Ñ4Ó6‘
��dÜ�t”9Ü˜$Ÿ(™(Ð$GÔHØ&*×&:Ô&:‘N�C˜Ø$×4Ñ4°SÓ9�DØ�|Ü˜iŸm™m¨^Õ<àŸ™¨¯	©	°4¸¿¹È$˜ÕOð ';ô ".�•ð !ô �T˜<¨Ó.Ð:Ø�|Š|à×,Ñ,¨SÔ1Ü!-�•Ø×"Ò" d×&7Ò&7ä!-�•ð '8ð ;r3   c                 óŠ   — d| j                   _        | j                   j                  |«      | _         d| j                   _        | S r�  )rC  Úresult_is_usedrw   r    s     r4   rw   z ExprStatNode.analyse_expressionsè  s5   € Ø#(ˆ�	‰	Ô Ø—I‘I×1Ñ1°#Ó6ˆŒ	à#(ˆ�	‰	Ô Øˆr3   c                 óœ   — | j                   j                  j                  r,| j                   j                  «       r| j	                  «        y y y r‡   )rC  rl  r~  Úresult_in_tempr¢   r    s     r4   rù   zExprStatNode.nogil_checkï  s5   € Ø�9‰9�>‰>×%Ò%¨$¯)©)×*BÑ*BÔ*DØ�N‰NÕð +EÐ%r3   zDiscarding owned Python objectc                 ó  — |j                  | j                  «       d| j                  _        | j                  j	                  |«       | j                  j                  «       sm| j                  j                  «       rS| j                  j                  «       }| j                  j                  j                  sd|z  }|j                  d|z  «       | j                  j                  |«       | j                  j                  |«       y )NFz
(void)(%s)ú%s;)r-  r9   rC  rB  r?  rD  r�   rl  rg  rS   r�  rL  )rŽ   rX   r�   s      r4   r  z$ExprStatNode.generate_execution_codeõ  s°   € Ø�‰�d—h‘hÔØ#(ˆ�	‰	Ô Ø�	‰	×*Ñ*¨4Ô0Ø�y‰y×'Ñ'Ô)¨d¯i©i×.>Ñ.>Ô.@Ø—Y‘Y×%Ñ%Ó'ˆFØ—9‘9—>‘>×)Ò)Ø%¨Ñ.�Ø�J‰J�u˜v‘~Ô&Ø�	‰	×(Ñ(¨Ô.Ø�	‰	×Ñ˜TÕ"r3   c                 ó<   — | j                   j                  ||«       y r‡   )rC  r  r6  s      r4   r  z*ExprStatNode.generate_function_definitions  rK  r3   c                 ó:   — | j                   j                  |«       y r‡   )rC  r½   r¸   s     r4   r½   zExprStatNode.annotate  rO  r3   N)r,   r-   r.   r«   r³   rw   rù   rŸ   r  r  r½   r2   r3   r4   rH  rH  È  s0   „ ð
 �(€Kò.ò2òð 3€Kò
#ò;ó!r3   rH  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚAssignmentNodec                 ó  — |j                   }|j                   }|j                  rd|j                  j                  rM|j                  r@|j                  j                  s)t	        | j
                  dj                  ||«      d¬«       y y y y y )Nz4Assigning to '{}' from '{}' discards const qualifierr   rÁ  )rl  rd  rm  r¢  r   r9   r:  )rŽ   r  ÚrhsÚrhs_tÚlhs_ts        r4   Ú_warn_on_const_assignmentz(AssignmentNode._warn_on_const_assignment  sh   € Ø—‘ˆØ—‘ˆØ�<Š<˜EŸO™O×4Ò4¸¿ºÈeÏoÉo×NfÒNfÜ�D—H‘HÐT×[Ñ[Ð\aÐchÓiÐqrÖsð Og¸Ð4ˆ<r3   c                 ór   — t        |t        «      r'| j                  |j                  |j                  «       y y r‡   )rL   rJ  rO  r  rL  )rŽ   rW   s     r4   Ú_check_const_assignmentz&AssignmentNode._check_const_assignment  s)   € Ü�dœNÔ+Ø×*Ñ*¨4¯8©8°T·X±XÕ>ð ,r3   c                 ó*  — | j                  |«      }| j                  |«       t        |t        «      r`t        |t        «      sP|j
                  j                  j                  r0|j
                  j                  «       rt        | j                  d«       |S )Nz9Storing unsafe C derivative of temporary Python reference)rv   rQ  rL   rJ  ÚParallelAssignmentNoderL  rl  Úis_unowned_viewÚis_ephemeralr   r9   )rŽ   r¡   rW   s      r4   rw   z"AssignmentNode.analyse_expressions  sh   € Ø×!Ñ! #Ó&ˆØ×$Ñ$ TÔ*Ü�dœNÔ+´J¸tÔE[Ô4\Ø�x‰x�}‰}×,Ò,°·±×1FÑ1FÔ1HÜ�d—h‘hÐ [Ô\Øˆr3   c                 ó~   — |j                  | j                  «       | j                  |«       | j                  |«       y r‡   )r-  r9   Úgenerate_rhs_evaluation_coderP  r¸   s     r4   r  z&AssignmentNode.generate_execution_code'  s.   € Ø�‰�d—h‘hÔØ×)Ñ)¨$Ô/Ø×%Ñ% dÕ+r3   N)r,   r-   r.   rO  rQ  rw   r  r2   r3   r4   rJ  rJ    s   „ òtò?òó,r3   rJ  c                   óh   — e Zd ZddgZdZdZdZdZdZd„ Z	dd„Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zdd„Zd„ Zd„ Zy)ÚSingleAssignmentNoder  rL  Fc                 óJ
  — ddl m} t        | j                  |j                  «      �r
| j                  j
                  j                  «       }|�rã| j                  j                  «       \  }}|dv �rÒt        |«      dkD  rt        |d   j                  d«       y |�7|j                  d «      }|dk(  sd|vrt        |j                  d«       y |d   }nd	}|d
   j                  |«      }|€t        |d
   j                  d«       y | j                  }	|dk(  rÐt        |	|j                  «      r|	j                  |	j                  fg}
n]t        |	|j                   «      r0|	j"                  D �cg c]  }|j                  |j                  f‘Œ }
}nt        |	j                  d«       y |
D ]  \  }}|j%                  |||d|¬«       Œ t        |«      dk(  r|d   | _        �nVd| _        �nMd| _        t        |	|j                  «      st        |	j                  d«       |j)                  |	j                  || j                  d	¬«       �nï|dv �rkd| _        t        |«      d
kD  s|€!t        | j                  j                  d«       y g }|j*                  D ]W  \  }}|j                  |«      }|€t        |j                  d«       Œ0|j-                  |j.                  ||j                  f«       ŒY t        |«      t        |j*                  «      k  ry t        | j                  |j                  «      s t        | j                  j                  d«       | j                  j                  }t1        |«      }|j3                  |||d| j                  j                  «       |D ]  \  }}}|j%                  |||«       Œ n|dk(  rzd| _        |r*t        | j                  j
                  j                  d«       t5        | j                  j                  | j                  j                  |¬«      }|j7                  |«       | j&                  ry | j8                  r| j                  j;                  |«       y | j                  j=                  |«       | j                  j>                  s| j                  j@                  rq| j                  jB                  rZ| j                  jB                  jD                  s9| j                  jG                  «       }|r|| j                  jB                  _"        y y y y y c c}w )Nr   rj  )rê  Útypedefr%   zInvalid positional argument.r[  ro  zInvalid keyword argument.r„  r   r:  rê  zInvalid declarationT)rÔ  ro  zInvalid declaration.)ro  )r  Úunionz.Struct or union members must be given by name.FÚ
fused_typez*fused_type does not take keyword arguments)rm   rf   )$rØ   rœ  rL   rL  r¬  rl  r¢  r<  rK   r   r9   Úcompile_time_valuer�  r  r³  rm   r–  rU   r  Údeclaration_onlyrÇ  r¬  rµ  r¯   r   r  rÅ  r³   Úis_assignment_expressionÚ0analyse_assignment_expression_target_declarationr‚  r5  rí   r  rm  Ú!get_known_standard_library_import)rŽ   r¡   rœ  Ú	func_namerU   rV   Úkwdictro  rl  r  Úvarsr@  r9   ÚmembersÚmemberrø  rm   r  Ú	fusednodeÚstdlib_import_names                       r4   r³   z)SingleAssignmentNode.analyse_declarationsB  s9  € Ýô �d—h‘h 	× 2Ñ 2Õ3ØŸ™×)Ñ)×=Ñ=Ó?ˆIÚØ!ŸX™X×8Ñ8Ó:‘
��dØÐ 6Ò6Ü˜4“y 1’}Ü˜d 1™gŸk™kÐ+IÔJØØÐ'Ø!%×!8Ñ!8¸Ó!>˜Ø$¨	Ò1°\ÈÑ5OÜ! $§(¡(Ð,GÔHØ"Ø%+¨LÑ%9™
à%.˜
Ø ™7×2Ñ2°3Ó7�DØ�|Ü˜d 1™gŸk™k¨>Ô:ØØŸ(™(�CØ  IÒ-Ü% c¨9×+=Ñ+=Ô>Ø%(§X¡X¨s¯w©wÐ$7Ð#8™DÜ'¨¨Y×-@Ñ-@ÔAØCFÇ8Â8Ó#LÁ8¸C S§X¡X¨s¯w©wÒ$7À8˜DÑ#Lä! #§'¡'Ð+@ÔAØ"Û(,™H˜C ØŸO™O¨C°°sÀDÐU_˜OÕ`ð )-ä˜t›9¨š>à'+¨A¡w˜DžHà48˜DÖ1à04˜Ô-Ü)¨#¨y×/AÑ/AÔBÜ! #§'¡'Ð+AÔBØ×+Ñ+¨C¯H©H°d¸D¿H¹HÐQZÐ+Ö[àÐ"5Ò5Ø,0�DÔ)Ü˜4“y 1’}¨¨Ü˜dŸh™hŸl™lÐ,\Ô]ØØ �GØ-1×-AÔ-AÑ)˜ 	Ø(×8Ñ8¸Ó=˜Ø˜<Ü! )§-¡-°Õ@à#ŸN™N¨F¯L©L¸$ÀÇ
Á
Ð+KÕLð .Bô ˜7“|¤c¨$×*>Ñ*>Ó&?Ò?ØÜ% d§h¡h°	×0BÑ0BÔCÜ˜dŸh™hŸl™lÐ,BÔCØŸ8™8Ÿ=™=�DÜ.¨tÓ4�EØ×/Ñ/°°iÀÈÈtÏxÉxÏ|É|Ô\Û-4Ñ)˜  cØ×)Ñ)¨&°$¸Õ<ñ .5ð  ,Ò.à,0�DÔ)ÙÜ˜dŸh™h×/Ñ/×3Ñ3ØJôLô !.¨d¯h©h¯l©lØ37·8±8·=±=Èô!N�Ià×2Ñ2°3Ô7à× Ò Øà×,Ò,Ø—‘×IÑIÈ#ÕNà—‘×3Ñ3°CÔ8ð —H‘H×)Ò)¨T¯X©X×-=Ò-=À4Ç8Á8Ç>Â>ÐZ^×ZbÑZb×ZhÑZh÷  [Gò  [GØ)-¯©×)SÑ)SÓ)UÐ&Ù)ØGY˜Ÿ™Ÿ™ÕDð *ð [GÀ>Ð-=ùòy $Ms   Å)T c                 óþ  — ddl m} | j                  j                  |«      | _        | j                  j
                  rÎ| j                  j                  j                  j                  r¤|j                  rj| j                  j                  j                  €J| j                  j                  «       r0| j                  j                  | j                  j                  _
        n.t        | j                  d| j                  j                  › d�«       | j!                  |«      }|r|S | j                  j#                  |«      | _        | j                  j%                  |«       | j'                  |«      }|r|S t)        | j                  |j*                  «      rP| j                  j-                  | j                  «       | j                  j/                  | j                  «      | _        n‰| j                  j                  j0                  rit)        | j                  |j2                  «      sI|j3                  | j                  j                  | j                  d d ¬«      }|j#                  |«      | _        | j                  j                  j4                  �r|j7                  | j                  d| j                  j                  | j                  j                  g«      }|rŠ| j                  }d| _        |j                  j:                  | _        |j                  j<                  | _        | j:                  dk(  r“| j<                  €‡|j?                  tA        jB                  d	d
«      «       na| j                  jE                  | j                  j                  |«      }n0| j                  jE                  | j                  j                  |«      }|s:|jF                  s.|j
                  s4|jH                  s(|j                  jJ                  r|jM                  |«      }n'|j                  jJ                  r|jO                  |«      }|| _        | jP                  r7| j                  j                  j                  stS        | j                  dd«       | S )Nr   rj  zAssignment to const 'r“  )ru  rZ   ÚstopÚ=TrÂ  ÚCppExceptionConversionrV  zHAssignment in pxd file will not be executed. Suggest declaring as const.r%   )*rØ   rœ  rL  rv   r  rí   r  rl  r¢  rÙ  rú  rë  r£  r   r9   rm   Ú
unroll_rhsrx   Úgil_assignment_checkÚ
unroll_lhsrL   ÚMemoryViewIndexNodeÚanalyse_broadcast_operationÚ$analyse_as_memview_scalar_assignmentre  ÚSliceIndexNoder˜  Úlookup_operator_for_typesÚis_overloaded_assignmentrÌ  r°  rŒ  r   r˜  rç  r5  rð   r~  Úcoerce_to_tempÚcoerce_to_simpleÚfrom_pxd_cvardefr   )rŽ   r¡   Úuse_temprœ  Úunrolled_assignmentr  ÚoprL  s           r4   rv   z"SingleAssignmentNode.analyse_types   s  € Ýà—8‘8×)Ñ)¨#Ó.ˆŒà�8‰8×Ò §¡§¡× 3Ñ 3× <Ò <Ø×"Ò" t§x¡x§~¡~×':Ñ':Ð'BÀtÇxÁx×GcÑGcÔGeØ&*§h¡h×&>Ñ&>�—‘—‘Õ#ä�d—h‘hÐ"7¸¿¹¿¹°ÀaÐ HÔIà"Ÿo™o¨cÓ2ÐÙØ&Ð&à—8‘8×0Ñ0°Ó5ˆŒØ�‰×%Ñ% cÔ*Ø"Ÿo™o¨cÓ2ÐÙØ&Ð&ä�d—h‘h 	× =Ñ =Ô>Ø�H‰H×0Ñ0°·±Ô:Ø—x‘x×DÑDÀTÇXÁXÓNˆD�HØ�X‰X�]‰]×#Ò#Ü˜dŸh™h¨	×(@Ñ(@ÔAà×.Ñ.¨t¯x©x¯|©|À$Ç(Á(ÐRVÐ]aÐ.Ób�Ø×3Ñ3°CÓ8�”à�8‰8�=‰=×%Ó%Ø×.Ñ.¨t¯x©x¸¸t¿x¹x¿}¹}ÈdÏhÉhÏmÉmÐ>\Ó]ˆBÙØ—h‘h�Ø04�Ô-Ø')§w¡w×'>Ñ'>�Ô$Ø')§w¡w×'>Ñ'>�Ô$Ø×'Ñ'¨3Ò.°4×3GÑ3GÐ3OØ×(Ñ(¬×)@Ñ)@ÐAYÐ[kÓ)lÕmà—h‘h×(Ñ(¨¯©¯©¸Ó<‘à—(‘(×$Ñ$ T§X¡X§]¡]°CÓ8ˆCá�s×'Ò'Ø—K’K¨¯ªØ—‘×$Ò$à×$Ñ$ SÓ)‰CØ�X‰X×!Ò!Ø×&Ñ& sÓ+ˆCØˆŒà× Ò ¨¯©¯©×)?Ò)?ÜØ—‘ØZØôð ˆr3   c           
      ó
  — ddl m}m} |}d x}x}x}	}
|j                  j                  r|j                  j
                  }�n^|j                  j                  s|j                  j                  �r0t        ||j                  «      rU|j                  sI|j                  s=|j                  x}}t        ||j                  «      r|j                  s|j                  sŒ=t        ||j                  «      �rp|j                  }|j                  }|r |j                  t        j                  |«      }|j                  }|r!|j                  t        j                  |«      }nÃ|j                  j                  r–|j                  j
                  r€|j!                  | j"                  t%        |j                  j
                  «      t        |j                  j
                  t&        «      r|j                  j
                  n|j(                  ¬«      }nt+        | j"                  d«       y |	r |	j                  t        j                  |«      }	d„ }	  ||d «       ||d«      z
   ||	d«      z  }n?|j                  j                  r'|j                  j
                  }t        |t&        «      sy y y ||k7  rt+        | j"                  d|›d	|›�«       y g }|j/                  |«      }|g}|r.|j0                  s"|j/                  |«      }|j3                  |«       |r.|j0                  s"|j/                  |«      }|j3                  |«       |	r.|	j0                  s"|j/                  |	«      }	|j3                  |	«       t5        |«      D �]k  }|j                   j7                  | j"                  |«      }|	�yt        |	j8                  t&        «      r@|j8                  |	j8                  z  }|j                   j7                  | j"                  |«      }n|j;                  | j"                  d
|	|¬«      }|�‰t        |j8                  t&        «      rP|j=                  «       r@|j8                  |j8                  z   }|j                   j7                  | j"                  |«      }n|j?                  | j"                  d||¬«      }|j3                  |jA                  | j"                  ||jC                  |«      ¬«      «       �Œn |
||fS # t,        $ r t+        | j"                  d«       Y y w xY w)Nr   )rœ  Ú	UtilNodes)r¯   r£  z*C array iteration requires known end indexc                 óX   — | €|S | j                  «       r| j                  S t        d«      ‚)NzNot a constant.)rë  r£  r¦  )rW   Ú
none_values     r4   Ú	get_constz.SingleAssignmentNode.unroll.<locals>.get_constÿ  s1   € Ø�|Ø)Ð)Ø×1Ñ1Ô3Ø#×3Ñ3Ð3ä(Ð):Ó;Ð;r3   r   z5C array assignment currently requires known endpointsz3Assignment to/from slice of wrong length, expected z, got rÊ  )ÚoperatorÚoperand1Úoperand2rÂ  )ru  rž  )"rØ   rœ  r~  rl  Ú	is_ctupler«  rd  re  rL   rt  rZ   rk  ru  rç  r
   rš  ÚIntNoder9   rã  r¤  Úconstant_value_not_setr   r¦  Ú
LetRefNoderð   rµ  r¥  Úfor_sizer£  ÚMulNoderë  ÚAddNodeÚ	IndexNoderv   )rŽ   rW   Útarget_sizer¡   rœ  r~  ru  Ú
start_nodeÚ	stop_nodeÚ	step_nodeÚ
check_nodeÚ
slice_sizer�  ri   Úrefsrª  Úix_nodeÚ
step_valueÚindex_values                      r4   ÚunrollzSingleAssignmentNode.unrollÞ  s  € ß*àˆØ:>Ð>ˆ
Ð>�YÐ> ¨Zà�9‰9×ÒØŸ™Ÿ™ŠJà�Y‰Y×Ò §¡×!3Ó!3Ü˜T 9×#;Ñ#;Ô<ÀdÇjÂjÐTX×T]ÒT]Ø"Ÿi™iÐ'��tô ˜T 9×#;Ñ#;Ô<ÀdÇjÂjÐTX×T]ÓT]ä˜$ 	× 8Ñ 8Õ9Ø—y‘y�Ø!ŸZ™Z�
ÙØ!+×!5Ñ!5´j×6RÑ6RÐTWÓ!X�JØ ŸI™I�	ÙØ )× 3Ñ 3´J×4PÑ4PÐRUÓ V‘Ià—y‘y×)Ò)¨d¯i©i¯nªnØ$-×$5Ñ$5Ø ŸH™H¬C°·	±	·±Ó,?Ü?IÈ$Ï)É)Ï.É.ÔZ]Ô?^¨T¯Y©Y¯^ª^Ø2;×2RÑ2Rð %6ó %U™	ô
 ˜dŸh™hÐ(TÔUØÙØ )× 3Ñ 3´J×4PÑ4PÐRUÓ V�Iò<ðÙ"+¨I°tÓ"<¹yÈÐUVÓ?WÑ"WÑ[dÐenÐpqÓ[rÑ!r‘Jð
 —‘×#Ò#Ø!ŸY™YŸ^™^�
Ü! *¬cÔ2Øàð à˜Ò$Ü�$—(’(Ú™Kð)ô *ààˆØ×#Ñ# DÓ)ˆØˆvˆÙ˜j×3Ò3Ø"×-Ñ-¨jÓ9ˆJØ�K‰K˜
Ô#Ù˜Y×1Ò1Ø!×,Ñ,¨YÓ7ˆIØ�K‰K˜	Ô"Ù˜Y×1Ò1Ø!×,Ñ,¨YÓ7ˆIØ�K‰K˜	Ô"ä˜×$ˆBØ×'Ñ'×0Ñ0°·±¸2Ó>ˆGØÐ$Ü˜i×7Ñ7¼Ô=Ø!(×!8Ñ!8¸9×;TÑ;TÑ!T�JØ'×/Ñ/×8Ñ8¸¿¹À:ÓN‘Gà'×/Ñ/°·±À3ÐQZÐelÐ/Óm�GØÐ%Ü˜j×8Ñ8¼#Ô>À7×C^ÑC^ÔC`Ø")×"9Ñ"9¸J×<VÑ<VÑ"V�KØ'×/Ñ/×8Ñ8¸¿¹À;ÓO‘Gà'×/Ñ/ØŸ™¨3¸Ègð 0ó W�Gà�L‰L˜×,Ñ,¨T¯X©X¸DÈ×H]ÑH]Ð^aÓHbÐ,ÓcÖdð %ð  ˜4 Ð&Ð&øôa "ò Ü˜$Ÿ(™(Ð$[Ô\Ùðús   ÉS& Ó&TÔTc           	      ób  — ddl m} g }t        ||«      D ]7  \  }}	|j                  t	        | j
                  ||	| j                  ¬«      «       Œ9 t        | j
                  |¬«      j                  |«      }
|rt        | j
                  ||
g¬«      }
|d d d…   D ]  }|j                  ||
«      }
Œ |
S )Nr   )r~  )r  rL  Úfirst)r9   r!  rÝ   )rØ   r~  rN  rµ  rY  r9   r™  rS  rw   r   ÚLetNode)rŽ   r“  r‘  Úlhs_listÚrhs_listr¡   r~  Úassignmentsr  rL  rW   Úrefs               r4   Úunroll_assignmentsz'SingleAssignmentNode.unroll_assignments;  s¡   € ÝØˆÜ˜H hÖ/‰HˆC�Ø×ÑÔ3°D·H±HÀ#È3ÐVZ×V`ÑV`ÔaÕbð 0ä%¨$¯(©(¸+ÔF×ZÑZÐ[^Ó_ˆÙÜ D§H¡H°ZÀÐ4FÔGˆDØ™˜"˜”:ˆCØ×$Ñ$ S¨$Ó/‰Dð àˆr3   c                 óv  — ddl m} t        | j                  |j                  «      sy t        d„ | j                  j                  D «       «      ry | j                  | j                  t        | j                  j                  «      |«      }|sy |\  }}}| j                  ||| j                  j                  ||«      S )Nr   rj  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr‡   )Ú
is_starred)r>  rÿ  s     r4   r?  z2SingleAssignmentNode.unroll_rhs.<locals>.<genexpr>K  s   è ø€ Ð7© #ˆs�~�~©ùrœ  )rØ   rœ  rL   r  r–  rŸ  rU   r—  rL  rK   rŸ  )rŽ   r¡   rœ  Úunrolledr‘  r“  rL  s          r4   rn  zSingleAssignmentNode.unroll_rhsG  s‹   € ÝÜ˜$Ÿ(™( I×$7Ñ$7Ô8ØÜÑ7¨¯©¯ªÓ7Ô7Øà—;‘;˜tŸx™x¬¨T¯X©X¯]©]Ó);¸SÓAˆÙØØ (Ñˆ
�D˜#Ø×&Ñ& t¨Z¸¿¹¿¹ÈÈSÓQÐQr3   c                 ój  — | j                   j                  j                  ry ddlm} t        | j                  |j                  «      sy | j                  | j                   t        | j                  j                  «      |«      }|sy |\  }}}| j                  |||| j                  j                  |«      S ©Nr   rj  )r  rl  r…  rØ   rœ  rL   rL  r–  r—  rK   rU   rŸ  )rŽ   r¡   rœ  r£  r‘  r“  r  s          r4   rp  zSingleAssignmentNode.unroll_lhsT  s†   € Ø�8‰8�=‰=×"Ò"àÝÜ˜$Ÿ(™( I×$7Ñ$7Ô8Øà—;‘;˜tŸx™x¬¨T¯X©X¯]©]Ó);¸SÓAˆÙØØ (Ñˆ
�D˜#Ø×&Ñ& t¨Z¸¸d¿h¹h¿m¹mÈSÓQÐQr3   c                 ó:   — | j                   j                  |«       y r‡   ©rL  r?  r¸   s     r4   rW  z1SingleAssignmentNode.generate_rhs_evaluation_codeb  ó   € Ø�‰×)Ñ)¨$Õ/r3   c                 óú   — | j                   rI| j                  j                  | j                  || j                   | j                  | j
                  ¬«       y | j                  j                  | j                  |«       y )N)rM  rÌ  r°  )rv  r  rP  rL  rÌ  r°  )rŽ   rX   rM  s      r4   rP  z-SingleAssignmentNode.generate_assignment_codee  sa   € Ø×(Ò(Ø�H‰H×-Ñ-Ø—‘ØØ&*×&CÑ&CØ $× 4Ñ 4Ø $× 4Ñ 4ð .õ 6ð �H‰H×-Ñ-¨d¯h©h¸Õ=r3   c                 ó<   — | j                   j                  ||«       y r‡   ©rL  r  r6  s      r4   r  z2SingleAssignmentNode.generate_function_definitionsp  ó   € Ø�‰×.Ñ.¨s°DÕ9r3   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r‡   ©r  r½   rL  r¸   s     r4   r½   zSingleAssignmentNode.annotates  ó&   € Ø�‰×Ñ˜$ÔØ�‰×Ñ˜$Õr3   Nr=  r`  )r,   r-   r.   r«   r™  rv  r`  r_  ry  r³   rv   r—  rŸ  rn  rp  rW  rP  r  r½   r2   r3   r4   rY  rY  -  sd   „ ð ˜%�.€KØ€EØ$ÐØ$ÐØÐØÐò\Zó|<ò|['òz
òRòRò0ó	>ò:ó r3   rY  c                   óN   — e Zd Zg d¢ZdZdZdZd„ Zd„ Zd
d„Z	d„ Z
dd„Zd„ Zd	„ Zy)ÚCascadedAssignmentNode)r›  rL  Úcoerced_valuesÚcloned_valuesNc                 ó€   — t        |t        «      r.|j                  D ]  }| j                  ||j                  «       Œ  y y r‡   )rL   r±  r›  rO  rL  )rŽ   rW   r  s      r4   rQ  z.CascadedAssignmentNode._check_const_assignment‹  s4   € Ü�dÔ2Ô3Ø—}”}�Ø×.Ñ.¨s°D·H±HÕ=ñ %ð 4r3   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   )r›  r‚  )rŽ   r¡   r  s      r4   r³   z+CascadedAssignmentNode.analyse_declarations�  s   € Ø—=”=ˆCØ×*Ñ*¨3Õ/ñ !r3   c                 óð  — ddl m}m} t        «       }t	        | j
                  «      D ]Q  \  }}|j                  |«      x}| j
                  |<   |j                  |«       |j                  |j                  «       ŒS | j                  j                  |«      }t        |«      dk(  rt        t        |«      «      j                  rA|j!                  d| j                  g«      }	|	sA|j#                  |j%                  «       |«      }n |j#                  |j%                  «       |«      }|j&                  sB|j(                  s6|s"|j*                  s|j                  j,                  r|j/                  |«      }n|j1                  |«      }|j3                  «       r ||«      n|| _
        g | _        i }
g | _        | j
                  D ]Ö  }|j                  j                  xr |j!                  d|| j                  g«      }| j6                  j9                  |«       |j                  |
vsŒc|j                  |j                  k7  sŒ} || j                  «      }|s|j#                  |j                  |«      }| j4                  j9                  |«       ||
|j                  <   ŒØ g | _        | j
                  D ]I  }|
j=                  |j                  | j                  «      }| j:                  j9                   ||«      «       ŒK | S )Nr   )r‡  rm  rl  )rœ  r‡  rm  rÓ   rØ  r›  rx   ro  rÔ   rl  rL  rv   rK   ÚnextÚiterr˜  Úlookup_operatorrç  r”  rí   rð   r5  r~  rw  rx  rD  r²  Úassignment_overloadsrµ  r³  rŠ   )rŽ   r¡   rz  r‡  rm  Ú	lhs_typesrõ  r  rL  r|  r²  Ú
overloadeds               r4   rv   z$CascadedAssignmentNode.analyse_types”  sR  € ß3ô “Eˆ	Ü §¡Ö.‰FˆAˆsØ%(×%=Ñ%=¸cÓ%BÐBˆC�$—-‘- Ñ"Ø×$Ñ$ SÔ)Ø�M‰M˜#Ÿ(™(Õ#ð /ð
 �h‰h×$Ñ$ SÓ)ˆäˆy‹>˜QÒä”D˜“OÓ$×1Ò1Ø×(Ñ(¨¨s°D·H±H¨oÓ>�ÙØŸ-™-¨	¯©«¸Ó=‘Cà—m‘m I§M¡M£O°SÓ9�à�{Š{ 3§>¢>Ù˜C×,Ò,°·±×0DÒ0DØ×$Ñ$ SÓ)‰Cà×&Ñ& sÓ+ˆCØ%(×%7Ñ%7Ô%9‘9˜S”>¸sˆŒð !ˆÔØˆØ$&ˆÔ!Ø—=”=ˆCØŸ™×.Ñ.Ò\°3×3FÑ3FÀsÈSÐRV×RZÑRZÈOÓ3\ˆJØ×%Ñ%×,Ñ,¨ZÔ8Ø�x‰x˜~Ò-°#·(±(¸c¿h¹hÓ2FÙ §¡Ó)�Ù!ØŸ-™-¨¯©°#Ó6�CØ×#Ñ#×*Ñ*¨3Ô/Ø+.�˜sŸx™xÒ(ð !ð  ˆÔØ—=”=ˆCØ ×$Ñ$ S§X¡X¨t¯x©xÓ8ˆCØ×Ñ×%Ñ%¡i°£nÕ5ð !ð ˆr3   c                 ó:   — | j                   j                  |«       y r‡   r§  r¸   s     r4   rW  z3CascadedAssignmentNode.generate_rhs_evaluation_codeÅ  r¨  r3   c                 óÌ  — | j                   D ]  }|j                  |«       Œ t        | j                  | j                  | j
                  «      D ]+  \  }}}|j                  |«       |j                  |||¬«       Œ- | j                   D ]$  }|j                  |«       |j                  |«       Œ& | j                  j                  |«       | j                  j                  |«       y )N)rM  )
r²  r?  rN  r›  r³  rº  rP  r�  rL  rL  )rŽ   rX   rM  rL  r  ÚoverloadÚ	rhs_values          r4   rP  z/CascadedAssignmentNode.generate_assignment_codeÈ  sÄ   € à×&Ô&ˆCØ×(Ñ(¨Õ.ð 'ô #& d§m¡m°T×5GÑ5GÈ×IbÑIbÖ"cÑˆC��hØ×(Ñ(¨Ô.Ø×(Ñ(¨¨dÈ(Ð(ÕSð #dð ×,Ô,ˆIØ×,Ñ,¨TÔ2Ø× Ñ  Õ&ð -ð 	�‰×'Ñ'¨Ô-Ø�‰×Ñ˜DÕ!r3   c                 ó<   — | j                   j                  ||«       y r‡   r«  r6  s      r4   r  z4CascadedAssignmentNode.generate_function_definitions×  r¬  r3   c                 ó  — | j                   D ]  }|j                  |«       Œ t        | j                  | j                  «      D ]'  \  }}|j                  |«       |j                  |«       Œ) | j
                  j                  |«       y r‡   )r²  r½   rN  r›  r³  rL  )rŽ   rX   rL  r  s       r4   r½   zCascadedAssignmentNode.annotateÚ  si   € Ø×&Ô&ˆCØ�L‰L˜Õð 'ä˜DŸM™M¨4×+=Ñ+=Ö>‰HˆC�Ø�L‰L˜ÔØ�L‰L˜Õð ?ð 	�‰×Ñ˜$Õr3   r=  r`  )r,   r-   r.   r«   r³  r²  rº  rQ  r³   rv   rW  rP  r  r½   r2   r3   r4   r±  r±  x  s>   „ ò I€KØ€MØ€NØÐò>ò
0ó/òb0ó"ò:ó r3   r±  c                   ó0   — e Zd ZdgZd„ Zd„ Zd„ Zd„ Zd„ Zy)rS  r!  c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   r%  r&  s      r4   r³   z+ParallelAssignmentNode.analyse_declarationsó  s   € Ø—J”JˆDØ×%Ñ% cÕ*ñ r3   c                 ó´   — | j                   D �cg c]  }|j                  |d¬«      ‘Œ c}| _         | j                   D ]  }|j                  |«       Œ | S c c}w )Nr   )rz  )r!  rv   rQ  r&  s      r4   rw   z*ParallelAssignmentNode.analyse_expressions÷  s]   € à"&§*¢*ó.Ù",˜$ð ×(Ñ(¨°qÐ(Õ9Ø",ñ.ˆŒ
ð —J”JˆDØ×(Ñ(¨Õ.ð àˆùò.s   �Ac                 óÂ   — |j                  | j                  «       | j                  D ]  }|j                  |«       Œ | j                  D ]  }|j	                  |«       Œ y r‡   )r-  r9   r!  rW  rP  r.  s      r4   r  z.ParallelAssignmentNode.generate_execution_code  sJ   € Ø�‰�d—h‘hÔØ—J”JˆDØ×-Ñ-¨dÕ3ð à—J”JˆDØ×)Ñ)¨$Õ/ñ r3   c                 óJ   — | j                   D ]  }|j                  ||«       Œ y r‡   r*  r+  s       r4   r  z4ParallelAssignmentNode.generate_function_definitions  s    € Ø—J”JˆDØ×.Ñ.¨s°DÕ9ñ r3   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   r0  r.  s      r4   r½   zParallelAssignmentNode.annotate  r1  r3   N©	r,   r-   r.   r«   r³   rw   r  r  r½   r2   r3   r4   rS  rS  ã  s$   „ ð �)€Kò+òò0ò:ó r3   rS  c                   ó2   — e Zd ZddgZd„ Zd„ Zd„ Zd„ Zd„ Zy)	ÚInPlaceAssignmentNoder  rL  c                 ó:   — | j                   j                  |«       y r‡   ©r  r‚  r    s     r4   r³   z*InPlaceAssignmentNode.analyse_declarations)  ó   € Ø�‰×+Ñ+¨CÕ0r3   c                 ó  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  j                  s| j                  j
                  r7| j                   j                  | j                  j                  |«      | _         | S | j                  j                  j                  r=| j                  dv r/| j                   j                  t        j                  |«      | _         | S )Nz+-)rL  rv   r  rx   Úis_memview_indexÚis_buffer_accessrç  rl  Ú	is_stringr‚  r
   rš  r    s     r4   rv   z#InPlaceAssignmentNode.analyse_types,  s±   € Ø—8‘8×)Ñ)¨#Ó.ˆŒØ—8‘8×0Ñ0°Ó5ˆŒð �8‰8×$Ò$¨¯©×(AÒ(AØ—x‘x×)Ñ)¨$¯(©(¯-©-¸Ó=ˆDŒHð ˆð �X‰X�]‰]×$Ò$¨¯©¸$Ñ)>à—x‘x×)Ñ)¬*×*FÑ*FÈÓLˆDŒHØˆr3   c                 óˆ  — |j                  | j                  «       | j                  | j                  }}|j	                  |«       |j                  |«       | j                  }|dk(  rd}n|dk(  rt        | j                  d«       |j                  s|j                  r‰|j                  j                  rt        | j                  d«       |dv rE|j                  j                  r/|j                  j                  d   st        | j                  d«       |j                  |||«       nY|j                   rt        | j                  d	«       n6|j#                  |j%                  «       ›d
|›d|j%                  «       ›d�«       |j'                  |«       |j)                  |«       |j+                  |«       |j-                  |«       y )Nz//Ú/z**zNo C inplace power operatorzAIn-place operators not allowed on object buffers in this release.)rÔ  Ú%Ú	cdivisionz;In-place non-c divide operators not allowed on int buffers.z4Inplace operators not supported on memoryview slicesrG   z= rG  )r-  r9   r  rL  r?  Ú generate_subexpr_evaluation_coder‚  r   rÑ  rÐ  rl  r~  r¡  r  rÿ   Úgenerate_buffer_setitem_codeÚis_memview_slicerS   r�   Úgenerate_subexpr_disposal_codeÚfree_subexpr_tempsr�  rL  )rŽ   rX   r  rL  Úc_ops        r4   r  z-InPlaceAssignmentNode.generate_execution_code8  sM  € Ø�‰�d—h‘hÔØ—8‘8˜TŸX™XˆSˆØ×$Ñ$ TÔ*Ø×,Ñ,¨TÔ2Ø�}‰}ˆØ�4Š<Ø‰DØ�TŠ\Ü�$—(‘(Ð9Ô:Ø×Ò 3×#7Ò#7Ø�x‰x×#Ò#Ü�d—h‘hÐ cÔdØ�zÑ! c§h¡h§o¢o¸d×>NÑ>N×>YÑ>YÐZeÒ>fÜ�d—h‘hÐ ]Ô^Ø×,Ñ,¨S°$¸Õ=Ø×!Ò!Ü�$—(‘(ÐRÕSð �J‰J s§z¡z¥|²T¸3¿:¹:½<ÐHÔIØ×*Ñ*¨4Ô0Ø×Ñ˜tÔ$Ø×"Ñ" 4Ô(Ø�‰�tÕr3   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r‡   r®  r¸   s     r4   r½   zInPlaceAssignmentNode.annotateS  r¯  r3   c                 ó†   — ddl m} |j                  | j                  | j                  | j
                  | j                  «      S r¥  )rØ   rœ  Ú
binop_noder9   r‚  r  rL  r}  s     r4   Úcreate_binop_nodez'InPlaceAssignmentNode.create_binop_nodeW  s,   € ÝØ×#Ñ# D§H¡H¨d¯m©m¸T¿X¹XÀtÇxÁxÓPÐPr3   N)	r,   r-   r.   r«   r³   rv   r  r½   rà  r2   r3   r4   rË  rË    s'   „ ð$ ˜%�.€Kò1ò
òò6 óQr3   rË  c                   óH   — e Zd ZddgZd„ Zej                  ZdZd„ Z	d„ Z
d„ Zy)	ÚPrintStatNodeÚ	arg_tuplerQ   c                 ó’  — | j                   r1| j                   j                  |«      }|j                  |«      | _         | j                  j                  |«      }|j                  |«      | _        |j	                  t
        «       t        | j                  j                  «      dk(  r!| j                  r|j	                  t        «       | S )Nr   )
rQ   rw   Úcoerce_to_pyobjectrã  rŒ  Úprinting_utility_coderK   rU   Úappend_newlineÚprinting_one_utility_code)rŽ   r¡   rQ   rã  s       r4   rw   z!PrintStatNode.analyse_expressionse  s—   € Ø�;Š;Ø—[‘[×4Ñ4°SÓ9ˆFØ ×3Ñ3°CÓ8ˆDŒKØ—N‘N×6Ñ6°sÓ;ˆ	Ø"×5Ñ5°cÓ:ˆŒØ×ÑÔ2Ô3Üˆt�~‰~×"Ñ"Ó# qÒ(¨T×-@Ò-@Ø× Ñ Ô!:Ô;Øˆr3   zPython print statementc           
      ó  — |j                  | j                  «       | j                  r6| j                  j                  |«       | j                  j	                  «       }nd}t        | j                  j                  «      dk(  rš| j                  rŽ| j                  j                  d   }|j                  |«       |j                  d|›d|j	                  «       ›d|j                  | j                  «      ›�«       |j                  |«       |j                  |«       n¤| j                  j                  |«       |j                  d|| j                  j	                  «       | j                  |j                  | j                  «      fz  «       | j                  j                  |«       | j                  j                  |«       | j                  r7| j                  j                  |«       | j                  j                  |«       y y )Nr¬  r   r   zif (__Pyx_PrintOne(rÈ   r#  z#if (__Pyx_Print(%s, %s, %d) < 0) %s)r-  r9   rQ   r?  r°  rK   rã  rU   rç  rS   r+  r�  rL  )rŽ   rX   Ústream_resultrÿ  s       r4   r  z%PrintStatNode.generate_execution_codes  sy  € Ø�‰�d—h‘hÔØ�;Š;Ø�K‰K×0Ñ0°Ô6Ø ŸK™K×1Ñ1Ó3‰MàˆMÜˆt�~‰~×"Ñ"Ó# qÒ(¨T×-@Ò-@Ø—.‘.×%Ñ% aÑ(ˆCØ×(Ñ(¨Ô.à�JŠJâ!Ø—M‘M•OØ—O‘O D§H¡HÔ-ð/ô0ð
 ×&Ñ& tÔ,Ø�N‰N˜4Õ à�N‰N×3Ñ3°DÔ9Ø�J‰JØ5Ø!Ø—N‘N×,Ñ,Ó.Ø×'Ñ'Ø—O‘O D§H¡HÓ-ð	9/ñ /ô0ð �N‰N×1Ñ1°$Ô7Ø�N‰N×%Ñ% dÔ+à�;Š;Ø�K‰K×.Ñ.¨tÔ4Ø�K‰K×"Ñ" 4Õ(ð r3   c                 óŒ   — | j                   r| j                   j                  ||«       | j                  j                  ||«       y r‡   )rQ   r  rã  r6  s      r4   r  z+PrintStatNode.generate_function_definitions”  s1   € Ø�;Š;Ø�K‰K×5Ñ5°c¸4Ô@Ø�‰×4Ñ4°S¸$Õ?r3   c                 óˆ   — | j                   r| j                   j                  |«       | j                  j                  |«       y r‡   )rQ   r½   rã  r¸   s     r4   r½   zPrintStatNode.annotate™  s-   € Ø�;Š;Ø�K‰K× Ñ  Ô&Ø�‰×Ñ Õ%r3   N)r,   r-   r.   r«   rw   r˜   r¢   rù   rŸ   r  r  r½   r2   r3   r4   râ  râ  \  s4   „ ð  Ð)€Kò	ð —.‘.€KØ*€Kò)òB@ó
&r3   râ  c                   ó@   — e Zd ZdgZd„ Zej                  ZdZd„ Z	d„ Z
y)ÚExecStatNoderU   c                 óà   — t        | j                  «      D ]6  \  }}|j                  |«      }|j                  |«      }|| j                  |<   Œ8 |j	                  t
        j                  «       | S r‡   )rØ  rU   rw   rå  rŒ  r   Úpyexec_utility_code©rŽ   r¡   rõ  rÿ  s       r4   rw   z ExecStatNode.analyse_expressions¦  sa   € Ü §	¡	Ö*‰FˆAˆsØ×)Ñ)¨#Ó.ˆCØ×(Ñ(¨Ó-ˆCØˆD�I‰I�aŠLð +ð 	×ÑœW×8Ñ8Ô9Øˆr3   zPython exec statementc           	      óÎ  — |j                  | j                  «       g }| j                  D ]2  }|j                  |«       |j	                  |j                  «       «       Œ4 t        |ddgd dt        |«      z
   z   «      }|j                  j                  t        j                  d¬«      }|j                  d|f|z   z  «       | j                  D ]$  }|j                  |«       |j                  |«       Œ& |j                  |j                  || j                  «      «       |j!                  |t        «       |j#                  |t        «       |j                  j%                  |«       y )Nr¬  rÜ   Tr   z%s = __Pyx_PyExec3(%s, %s, %s);)r-  r9   rU   r?  rµ  r°  r·  rK   r$  r%  r
   r   rS   r�  rL  r'  r(  r,  r-  )rŽ   rX   rU   rÿ  Útemp_results        r4   r  z$ExecStatNode.generate_execution_code±  s  € Ø�‰�d—h‘hÔØˆØ—9”9ˆCØ×(Ñ(¨Ô.Ø�K‰K˜Ÿ™›Õ(ð ô �T˜S #˜J |¨¬#¨d«)©Ð4Ñ4Ó5ˆØ—n‘n×2Ñ2´:×3LÑ3LÐY]Ð2Ó^ˆØ�
‰
Ð4¸¸ÈÑ8MÑNÔOØ—9”9ˆCØ×&Ñ& tÔ,Ø�N‰N˜4Õ ð ð 	�
‰
Ø×#Ñ# K°·±Ó:ô	<à�‰˜¤^Ô4Ø×Ñ˜k¬>Ô:Ø�‰×#Ñ# KÕ0r3   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   ©rU   r½   r  s      r4   r½   zExecStatNode.annotateÃ  ó   € Ø—9”9ˆCØ�L‰L˜Õñ r3   N)r,   r-   r.   r«   rw   r˜   r¢   rù   rŸ   r  r½   r2   r3   r4   rî  rî  Ÿ  s*   „ ð
 �(€Kòð —.‘.€KØ)€Kò1ó$r3   rî  c                   ó8   — e Zd ZdgZdZd„ Zd„ Zd„ ZdZd„ Z	d„ Z
y	)
ÚDelStatNoderU   Fc                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   )rU   r‚  rF  s      r4   r³   z DelStatNode.analyse_declarationsÐ  s   € Ø—9”9ˆCØ×*Ñ*¨3Õ/ñ r3   c                 óì  — t        | j                  «      D �]Z  \  }}|j                  |d «      x}| j                  |<   |j                  j                  s"|j
                  rQ|j                  j                  r;|j
                  sŒm|j                  j                  sŒ„t        |j                  d«       Œ›|j                  j                  r2|j                  j                  j                  r| j                  |«       Œã|j                  j                  rt        |j                  d«       �Œ|j                  r(|j                   j                  t"        j$                  u r�ŒEt        |j                  d«       �Œ] | S )NzDeletion of global C variablezDeletion of non-heap C++ objectz&Deletion of non-Python, non-C++ object)rØ  rU   rŒ  rl  r~  rí   rÚ  r  Ú
is_cglobalr   r9   rd  rm  r˜  r¦   r?  ru  r   Úbytearray_typerñ  s       r4   rw   zDelStatNode.analyse_expressionsÔ  sõ   € Ü §	¡	×*‰FˆAˆsØ!$×!>Ñ!>¸sÀDÓ!IÐIˆC�$—)‘)˜A‘,Ø�x‰x×#Ò#¨¯ª¸¿¹×8SÒ8SØ—;“; 3§9¡9×#7Ó#7Ü˜#Ÿ'™'Ð#BÕCØ—‘—’ S§X¡X×%7Ñ%7×%DÒ%DØ—‘˜sÕ#Ø—‘×&Ò&Ü�c—g‘gÐ@ÖAØ×!Ò! c§h¡h§m¡m´w×7MÑ7MÑ&MÙä�c—g‘gÐGÖHð +ð ˆr3   c                 ót   — | j                   D ])  }|j                  j                  sŒ| j                  «        Œ+ y r‡   )rU   rl  r~  r¢   rF  s      r4   rù   zDelStatNode.nogil_checkå  s'   € Ø—9”9ˆCØ�x‰x×#Ó#Ø—‘Õ ñ r3   zDeleting Python objectc                 ór  — |j                  | j                  «       | j                  D �]  }|j                  j                  sH|j                  j
                  s2|j                  rD|j                  j                  t        j                  u r|j                  || j                  ¬«       Œ€|j                  j                  sŒ—|j                  j                  j                  sŒ¸|j                  |«       |j!                  d|j#                  «       z  «       |j%                  |«       |j'                  |«       �Œ y )N)Úignore_nonexistingz
delete %s;)r-  r9   rU   rl  r~  rÚ  r?  ru  r   rü  Úgenerate_deletion_coderÿ  rd  rm  r˜  r?  rS   r�   r�  rL  r  s      r4   r  z#DelStatNode.generate_execution_codeì  sÓ   € Ø�‰�d—h‘hÔØ—9•9ˆCØ—‘×$Ò$Ø—H‘H×/Ò/Ø×$Ò$¨¯©¯©¼'×:PÑ:PÑ)PØ×*Ñ*Ø¨T×-DÑ-Dð +õ Fà—‘—“ S§X¡X×%7Ñ%7×%DÓ%DØ×,Ñ,¨TÔ2Ø—
‘
˜<¨#¯*©*«,Ñ6Ô7Ø×*Ñ*¨4Ô0Ø—‘˜tÖ$ñ r3   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   rõ  r  s      r4   r½   zDelStatNode.annotateû  rö  r3   N)r,   r-   r.   r«   rÿ  r³   rw   rù   rŸ   r  r½   r2   r3   r4   rø  rø  È  s1   „ ð
 �(€KØÐò0òò"!ð
 +€Kò%ór3   rø  c                   ó   — e Zd Zg Zd„ Zd„ Zy)r=  c                 ó   — | S r‡   r2   r    s     r4   rw   z PassStatNode.analyse_expressions  rî  r3   c                 ón   — |j                   j                  d   r|j                  | j                  «       y y )Nrc  )r  rÿ   r-  r9   r¸   s     r4   r  z$PassStatNode.generate_execution_code  s+   € Ø×Ñ×&Ñ& {Ò3Ø�M‰M˜$Ÿ(™(Õ#ð 4r3   N)r,   r-   r.   r«   rw   r  r2   r3   r4   r=  r=     s   „ ð €Kòó$r3   r=  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚIndirectionNodez†
    This adds an indirection so that the node can be shared and a subtree can
    be removed at any time by clearing self.stats.
    c                 óB   •— t         ‰| �  |d   j                  |¬«       y )Nr   r  )rj   rœ   r9   )rŽ   r!  rN   s     €r4   rœ   zIndirectionNode.__init__  s   ø€ Ü‰Ñ˜˜q™Ÿ™¨UÐÕ3r3   )r,   r-   r.   r‚   rœ   rr   rs   s   @r4   r  r    s   ø„ ñ÷
4ð 4r3   r  c                   ó    — e Zd Zg ZdZd„ Zd„ Zy)ÚBreakStatNodeTc                 ó   — | S r‡   r2   r    s     r4   rw   z!BreakStatNode.analyse_expressions  rî  r3   c                 ó¶   — |j                  | j                  «       |j                  st        | j                  d«       y |j	                  |j                  «       y )Nzbreak statement not inside loop)r-  r9   Úbreak_labelr   rÐ  r¸   s     r4   r  z%BreakStatNode.generate_execution_code  s<   € Ø�‰�d—h‘hÔØ×ÒÜ�$—(‘(Ð=Õ>à�M‰M˜$×*Ñ*Õ+r3   N©r,   r-   r.   r«   rñ   rw   r  r2   r3   r4   r	  r	    s   „ à€KØ€Mòó,r3   r	  c                   ó    — e Zd Zg ZdZd„ Zd„ Zy)ÚContinueStatNodeTc                 ó   — | S r‡   r2   r    s     r4   rw   z$ContinueStatNode.analyse_expressions,  rî  r3   c                 ó¶   — |j                   st        | j                  d«       y |j                  | j                  «       |j	                  |j                   «       y )Nz"continue statement not inside loop)Úcontinue_labelr   r9   r-  rÐ  r¸   s     r4   r  z(ContinueStatNode.generate_execution_code/  s?   € Ø×"Ò"Ü�$—(‘(Ð@ÔAØØ�‰�d—h‘hÔØ�‰�d×)Ñ)Õ*r3   Nr  r2   r3   r4   r  r  '  s   „ à€KØ€Mòó+r3   r  c                   óJ   — e Zd ZdgZdZdZdZdZd„ Zd„ Z	dZ
d„ Zd„ Zd	„ Zd
„ Zy)rp  r¯   TFc                 óÖ  — |j                   }|| _         |st        | j                  d«       | S | j                  rõ| j                  rt        | j                  d«       | j                  j                  |«      | _        |j                  s|j                  r"t        | j                  j                  d«       | S | j                  j                  |j                   |«      | _        |j                  d   s|j                  d   r.|j                  s"|j                  |«      r|j                  |«       | S |j                  s.|j                  s"|j                  st        | j                  d«       | S )Nz!Return not inside a function bodyz$Return with value in async generatorz"Return with value in void functionrY  rc  zReturn value required)rå  r   r9   r¯   Úin_async_genrv   rg  rG  rç  rÿ   r~  Úcan_coerce_to_pyobjectrÞ  )rŽ   r¡   rå  s      r4   rw   z"ReturnStatNode.analyse_expressionsG  s  € Ø—o‘oˆØ&ˆÔÙÜ�$—(‘(Ð?Ô@ØˆKØ�:Š:Ø× Ò Ü�d—h‘hÐ FÔGØŸ™×1Ñ1°#Ó6ˆDŒJØ×"Ò" k×&?Ò&?Ü�d—j‘j—n‘nÐ&JÔKð ˆð "ŸZ™Z×1Ñ1°#·/±/À3ÓG�”
Ø—>‘> )Ò,°·±¸{Ò0KØ&×2Ò2°{×7YÑ7YÐZ]Ô7^Ø#×=Ñ=¸cÔBð ˆð	  ×'Ò'Ø'×3Ò3Ø'×5Ò5Ü�d—h‘hÐ 7Ô8Øˆr3   c                 óR   — | j                   j                  r| j                  «        y y r‡   )rå  r~  r¢   r    s     r4   rù   zReturnStatNode.nogil_check_  s    € Ø×Ñ×'Ò'Ø�N‰NÕð (r3   zReturning Python objectc                 óŒ  — |j                  | j                  «       | j                  sy | j                  }| j                  j                  r:|j                  t        j                  | j                  «       |r|j                  rd }|rô|j                  |«       | j                  j                  r[ddlm} |j                  t        j                  | j                  |j                  ||| j                  ¬«       |j                  |«       n`|j!                  |«       |j#                  t        j                  ›d|j%                  | j                  «      ›d�«       |j                  |«       |j'                  |«       n}| j                  j                  r+|j)                  t        j                  | j                  «       n<| j                  j*                  r&| j-                  || j                  j.                  «       |j0                  j2                  d   s|j0                  j2                  d   rL|j5                  t        j                  | j                  | j                  |j6                  j8                   ¬«       |j6                  j;                  «       D ]  \  }}|j=                  ||«       Œ |j?                  |j@                  «       y )	Nr   r  )Ú	lhs_cnameÚlhs_typeÚlhs_posrL  rX   rr  rF  rG  rY  rc  r€  )!r-  r9   rå  r¯   r~  rÔ  r	   rª  rî   r?  rÚ  rØ   r€  Úput_acquire_memoryviewslicerú   rK  rH  rS   rI  rL  rÌ  rG  Ú
put_returnrí  r  rÿ   rÍ  r$  r}  Útemps_holding_referencer,  rÐ  rÑ  )rŽ   rX   r¯   r€  rÛ  rl  s         r4   r  z&ReturnStatNode.generate_execution_codee  s   € Ø�‰�d—h‘hÔØ×Òàà—
‘
ˆØ×Ñ×'Ò'Ø×ÑœV×0Ñ0°$×2BÑ2BÔCÙ˜Ÿšà�áØ×*Ñ*¨4Ô0Ø×Ñ×2Ò2Ý(Ø×6Ñ6Ü$×1Ñ1Ø!×-Ñ-Ø!ŸI™IØØØ!×2Ñ2ð 7ô 4ð ×3Ñ3°DÕ9à×*Ñ*¨4Ô0Ø—
‘
Ü×'Ó'Ø—O‘O D×$4Ñ$4Õ5ð7ô 8ð ×3Ñ3°DÔ9Ø×Ñ˜TÕ"à×Ñ×+Ò+Ø×(Ñ(¬×)<Ñ)<¸d×>NÑ>NÕOØ×!Ñ!×/Ò/Ø—‘  d×&6Ñ&6×&DÑ&DÔEà×Ñ×&Ñ& yÒ1°T×5EÑ5E×5PÑ5PÐQ\Ò5]Ø×!Ñ!Ü×#Ñ#Ø—‘Ø ×,Ñ,ØŸ.™.×2Ñ2Ð2ð	 "ô ð  Ÿ>™>×AÑAÖC‰KˆE�4Ø×!Ñ! %¨Õ.ð Dð 	�‰�d×'Ñ'Õ(r3   c                 óˆ   — | j                   r|j                  d«       |j                  t        j                  ›d|›d�«       y )Nz%#pragma omp critical(__pyx_returning)rF  rG  )Úin_parallelÚputln_openmprS   r	   rª  )rŽ   rX   r¯   s      r4   r  zReturnStatNode.put_return˜  s1   € Ø×ÒØ×ÑÐEÔFØ�
‰
¤×!4Ó!4²eÐ<Õ=r3   c                 óV   — | j                   �| j                   j                  ||«       y y r‡   )r¯   r  r6  s      r4   r  z,ReturnStatNode.generate_function_definitions�  s%   € Ø�:‰:Ð!Ø�J‰J×4Ñ4°S¸$Õ?ð "r3   c                 óT   — | j                   r| j                   j                  |«       y y r‡   )r¯   r½   r¸   s     r4   r½   zReturnStatNode.annotate¡  s    € Ø�:Š:Ø�J‰J×Ñ Õ%ð r3   N)r,   r-   r.   r«   rñ   Úin_generatorr  r   rw   rù   rŸ   r  r  r  r½   r2   r3   r4   rp  rp  7  sH   „ ð �)€KØ€MØ€LØ€Lð €Kòò0ð ,€Kò1)òf>ò
@ó&r3   rp  c                   óX   — e Zd Zg d¢ZdZdZdZdZd„ Ze	j                  ZdZd„ Zd„ Zd	„ Zy)
ÚRaiseStatNode)Úexc_typeÚ	exc_valueÚexc_tbÚcauseTNFc                 óX  — | j                   r1| j                   j                  |«      }|j                  |«      | _         | j                  r­| j                  j                  |«      }| j                  rp|j
                  t        j                  u s|j
                  j                  s>ddl	m
}  ||j                  |j                  |«      gd¬«      }|j                  |d¬«      }|j                  |«      | _        | j                  r1| j                  j                  |«      }|j                  |«      | _        | j                  r1| j                  j                  |«      }|j                  |«      | _        | j                   �r,| j                  �s| j                  �s| j                   }ddlm	} t        ||j                   «      r:|j"                  s.|j$                  �|j$                  j"                  s|j&                  }|j(                  r¤|j*                  j,                  rŽddlm}	 |j0                  | _        | j2                  dk(  r	d | _         | S | j2                  d	k(  rP|j4                  rD|j0                  d
k(  r5|j6                  r)|j6                  j8                  r| j:                  sd | _         | S )Nr   r•  T)rU   Úslow)Úskip_childrenrj  )ÚSymtabÚMemoryErrorÚStopIterationÚ__next__)r'  rv   rå  r(  Úwrap_tuple_valuerl  r   Ú
tuple_typer  rœ  r–  r9   r)  r*  rØ   rL   ro  rU   rã  rl  rí   r  Ú
is_builtinr.  rm   Úbuiltin_exc_nameÚis_local_scoperQ  rÙ  Úin_try_block)
rŽ   r¡   r'  r(  r–  r)  r*  Úexcrœ  r.  s
             r4   rw   z!RaiseStatNode.analyse_expressions·  sû  € Ø�=Š=Ø—}‘}×2Ñ2°3Ó7ˆHØ$×7Ñ7¸Ó<ˆDŒMØ�>Š>ØŸ™×4Ñ4°SÓ9ˆIØ×$Ò$Ø—>‘>¤W×%7Ñ%7Ñ7¸y¿~¹~×?]Ò?]å4Ù )¨)¯-©-¸y×?[Ñ?[Ð\_Ó?`Ð>aÐhlÔ m�IØ )× 7Ñ 7¸È4Ð 7Ó P�IØ&×9Ñ9¸#Ó>ˆDŒNØ�;Š;Ø—[‘[×.Ñ.¨sÓ3ˆFØ ×3Ñ3°CÓ8ˆDŒKØ�:Š:Ø—J‘J×,Ñ,¨SÓ1ˆEØ×1Ñ1°#Ó6ˆDŒJà�=‹= §£¸¿»Ø—-‘-ˆCÝ#Ü˜3 	× 8Ñ 8Ô9ØŸš c§m¡mÐ&?ÀCÇMÁM×DVÒDVØ—l‘l�Ø�{Š{˜sŸy™y×3Ò3Ý$Ø(+¯©�Ô%Ø×(Ñ(¨MÒ9Ø$(�D”Mð ˆð ×+Ñ+¨Ò>Ø×*Ò*¨s¯x©x¸:Ò/EØ×(Ò(¨S×-=Ñ-=×-NÒ-NØ ×-Ò-ð %)�D”Màˆr3   úRaising exceptionc                 óÀ  — |j                  | j                  «       | j                  dk(  r.|j                  d|j	                  | j                  «      z  «       y | j                  dk(  rc| j
                  sW|j                  dt        j                  z  «       |j                  d|j	                  d «      z  «       d|j                  _	        y | j
                  r{| j
                  j                  |«       | j
                  j                  «       }| j
                  j                  r2|j                  j                  | j
                  j                  «       nd}| j                   r6| j                   j                  |«       | j                   j                  «       }nd}| j"                  r6| j"                  j                  |«       | j"                  j                  «       }nd}| j$                  r6| j$                  j                  |«       | j$                  j                  «       }nd}|j                  j'                  t(        «       |j                  d|›d	|›d	|›d	|›d
�	«       | j
                  | j                   | j"                  | j$                  fD ]'  }|sŒ|j+                  |«       |j-                  |«       Œ) |j                  |j	                  | j                  «      «       y )Nr/  zPyErr_NoMemory(); %sr0  z%s = 1;rF  Tr¬  z__Pyx_Raise(rÈ   ro  )r-  r9   r5  rS   r+  r'  r	   rÝ  r$  rÜ  r?  r°  rí   r  r�  r  r(  r)  r*  rŒ  Úraise_utility_coder�  rL  )rŽ   rX   Ú	type_codeÚ
value_codeÚtb_codeÚ
cause_coder!  s          r4   r  z%RaiseStatNode.generate_execution_codeä  s  € Ø�‰�d—h‘hÔØ× Ñ  MÒ1Ø�J‰JÐ-°·±ÀÇÁÓ0IÑIÔJØØ×"Ñ" oÒ5¸d¿mºmØ�J‰J�y¤6×#GÑ#GÑGÔHØ�J‰J�u˜tŸ™¨tÓ4Ñ4Ô5Ø59ˆD�N‰NÔ2Øà�=Š=Ø�M‰M×2Ñ2°4Ô8ØŸ™×/Ñ/Ó1ˆIØ�}‰}×$Ò$Ø× Ñ ×7Ñ7¸¿¹×8KÑ8KÕLàˆIØ�>Š>Ø�N‰N×3Ñ3°DÔ9ØŸ™×1Ñ1Ó3‰JàˆJØ�;Š;Ø�K‰K×0Ñ0°Ô6Ø—k‘k×+Ñ+Ó-‰GàˆGØ�:Š:Ø�J‰J×/Ñ/°Ô5ØŸ™×-Ñ-Ó/‰JàˆJØ×Ñ×)Ñ)Ô*<Ô=Ø�
Š
âÚÚÚð	ô	ð —M‘M 4§>¡>°4·;±;ÀÇ
Á
ÓKˆCÚØ×*Ñ*¨4Ô0Ø—‘˜tÕ$ð Lð 	�
‰
Ø�O‰O˜DŸH™HÓ%õ	'r3   c                 óF  — | j                   �| j                   j                  ||«       | j                  �| j                  j                  ||«       | j                  �| j                  j                  ||«       | j                  �| j                  j                  ||«       y y r‡   )r'  r  r(  r)  r*  r6  s      r4   r  z+RaiseStatNode.generate_function_definitions  s   € Ø�=‰=Ð$Ø�M‰M×7Ñ7¸¸TÔBØ�>‰>Ð%Ø�N‰N×8Ñ8¸¸dÔCØ�;‰;Ð"Ø�K‰K×5Ñ5°c¸4Ô@Ø�:‰:Ð!Ø�J‰J×4Ñ4°S¸$Õ?ð "r3   c                 ó>  — | j                   r| j                   j                  |«       | j                  r| j                  j                  |«       | j                  r| j                  j                  |«       | j                  r| j                  j                  |«       y y r‡   )r'  r½   r(  r)  r*  r¸   s     r4   r½   zRaiseStatNode.annotate  sk   € Ø�=Š=Ø�M‰M×"Ñ" 4Ô(Ø�>Š>Ø�N‰N×#Ñ# DÔ)Ø�;Š;Ø�K‰K× Ñ  Ô&Ø�:Š:Ø�J‰J×Ñ Õ%ð r3   )r,   r-   r.   r«   rñ   r5  r2  r7  rw   r˜   r¢   rù   rŸ   r  r  r½   r2   r3   r4   r&  r&  ¦  sF   „ ò ?€KØ€MØÐØÐØ€Lò(ðT —.‘.€KØ%€Kò.'ò`@ó&r3   r&  c                   ó<   — e Zd Zg ZdZd„ Zej                  ZdZ	d„ Z
y)ÚReraiseStatNodeTc                 ó   — | S r‡   r2   r    s     r4   rw   z#ReraiseStatNode.analyse_expressions.  rî  r3   r9  c           	      ó  — |j                  | j                  «       |j                  j                  }|r¹|j                  j                  t        «       |j                  |d   t        «       |j                  |d   t        «       |j                  |d   t        «       |j                  dt        |«      z  «       |j                  dj                  |D �cg c]  }|› d�‘Œ	 c}«      «       n@|j                  j                  t        j                  dd«      «       |j                  d	«       |j                  «       r|j!                  | j                  d
¬«       |j                  |j#                  | j                  «      «       y c c}w )Nr   r   r%   ú&__Pyx_ErrRestoreWithState(%s, %s, %s);rG   z = 0; ÚReRaiseExceptionúExceptions.cz__Pyx_ReraiseException();T©Úreraise)r-  r9   r$  Úexc_varsr  rŒ  rÕ  rJ  r   rë  rS   r·  rÊ   r   r˜  r—  Úput_trace_exceptionr+  )rŽ   rX   re  Úvarnames       r4   r  z'ReraiseStatNode.generate_execution_code4  s)  € Ø�‰�d—h‘hÔØ�~‰~×&Ñ&ˆÙØ×Ñ×-Ñ-Ô.LÔMØ×Ñ˜T !™W¤nÔ5Ø×Ñ˜T !™W¤nÔ5à×Ñ˜d 1™g¤~Ô6Ø�J‰JÐ?Ä%ÈÃ+ÑMÔNØ�J‰J�s—x‘xÁ4Ó HÁ4¸ G 9¨FÒ!3À4Ñ HÓIÕJà×Ñ×-Ñ-Ü×'Ñ'Ð(:¸NÓKôMà�J‰JÐ2Ô3Ø�?‰?ÔØ×$Ñ$ T§X¡X°tÐ$Ô<Ø�
‰
�4—?‘? 4§8¡8Ó,Õ-ùò !Is   ÃFN)r,   r-   r.   r«   rñ   rw   r˜   r¢   rù   rŸ   r  r2   r3   r4   rC  rC  )  s&   „ à€KØ€Mòð —.‘.€KØ%€Kó.r3   rC  c                   ó6   — e Zd Zg d¢ZdZd„ Zd„ Zd„ Zd„ Zd„ Z	y)ÚAssertStatNode)Ú	conditionr¯   Ú	exceptionNc                 ó†   — | j                   �J d«       ‚| j                  €J d«       ‚| j                  j                  |«       y )Nz0Message should have been replaced in PostParse())r¯   rQ  r³   r    s     r4   r³   z#AssertStatNode.analyse_declarationsR  s@   € Ø�z‰zÐ!ÐUÐ#UÓUÐ!Ø�~‰~Ð)Ð]Ð+]Ó]Ð)Ø�‰×+Ñ+¨CÕ0r3   c                 ó†   — | j                   j                  |«      | _         | j                  j                  |«      | _        | S r‡   )rP  Úanalyse_temp_boolean_expressionrQ  rw   r    s     r4   rw   z"AssertStatNode.analyse_expressionsW  s3   € ØŸ™×GÑGÈÓLˆŒØŸ™×;Ñ;¸CÓ@ˆŒØˆr3   c                 óò  — |j                   j                  t        j                  dd«      «       |j	                  d«       |j	                  d«       |j                  | j                  «       | j                  j                  |«       |j	                  d| j                  j                  «       z  «       | j                  j                  |«       |j	                  d«       | j                  j                  |«       | j                  j                  |«       |j	                  d«       |j	                  d«       |j	                  d|j                  | j                  d	¬
«      z  «       |j	                  d«       y )NÚAssertionsEnabledrH  z!#ifndef CYTHON_WITHOUT_ASSERTIONSz+if (unlikely(__pyx_assertions_enabled())) {rk  rn  rƒ  zif ((1)); else %sF)r  r…  )r  rŒ  r   r˜  rS   r-  r9   rP  r?  r�   rQ  r  r�  rL  r+  r¸   s     r4   r  z&AssertStatNode.generate_execution_code\  s  € Ø×Ñ×)Ñ)Ü×#Ñ#Ð$7¸ÓHô	Jà�
‰
Ð6Ô7Ø�
‰
Ð@ÔAØ�‰�d—h‘hÔØ�‰×/Ñ/°Ô5Ø�
‰
Ø" T§^¡^×%:Ñ%:Ó%<Ñ<ô	>à�‰×.Ñ.¨tÔ4Ø�
‰
Øô	à�‰×-Ñ-¨dÔ3Ø�‰×!Ñ! $Ô'Ø�
‰
Øô	à�
‰
�7Ôà�
‰
Ð&¨¯©¸¿¹È¨Ó)NÑNÔOØ�
‰
�8Õr3   c                 ót   — | j                   j                  ||«       | j                  j                  ||«       y r‡   )rP  r  rQ  r6  s      r4   r  z,AssertStatNode.generate_function_definitionsq  s*   € Ø�‰×4Ñ4°S¸$Ô?Ø�‰×4Ñ4°S¸$Õ?r3   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r‡   )rP  r½   rQ  r¸   s     r4   r½   zAssertStatNode.annotateu  s&   € Ø�‰×Ñ Ô%Ø�‰×Ñ Õ%r3   )
r,   r-   r.   r«   rQ  r³   rw   r  r  r½   r2   r3   r4   rO  rO  H  s(   „ ò 6€KØ€Iò1ò
ò
ò*@ó&r3   rO  c                   ó2   — e Zd ZddgZd„ Zd„ Zd„ Zd„ Zd„ Zy)	Ú
IfStatNodeÚ
if_clausesÚelse_clausec                 ó˜   — | j                   D ]  }|j                  |«       Œ | j                  r| j                  j                  |«       y y r‡   )r[  r³   r\  ©rŽ   r¡   Ú	if_clauses      r4   r³   zIfStatNode.analyse_declarations‚  s@   € ØŸœˆIØ×*Ñ*¨3Õ/ð )à×ÒØ×Ñ×1Ñ1°#Õ6ð r3   c                 óÄ   — | j                   D �cg c]  }|j                  |«      ‘Œ c}| _         | j                  r | j                  j                  |«      | _        | S c c}w r‡   )r[  rw   r\  r^  s      r4   rw   zIfStatNode.analyse_expressionsˆ  sT   € ØOSÏÊÓ_ÉÀ)˜9×8Ñ8¸Õ=ÈÑ_ˆŒØ×ÒØ#×/Ñ/×CÑCÀCÓHˆDÔØˆùò `s   �Ac                 ó  — |j                  | j                  «       |j                  «       }t        | j                  «      }| j
                  s|dz  }t        | j                  «      D ]  \  }}|j                  ||||k(  ¬«       Œ | j
                  rb|j                  | j
                  j                  «       |j                  d«       | j
                  j                  |«       |j                  d«       |j                  |«       y )Nr   )Úis_lastú
/*else*/ {rn  )
r-  r9   r›  rK   r[  r\  rØ  r  rS   rÒ  )rŽ   rX   r�  Úlastrõ  r_  s         r4   r  z"IfStatNode.generate_execution_codeŽ  sÆ   € Ø�‰�d—h‘hÔØ—N‘NÓ$ˆ	Ü�4—?‘?Ó#ˆØ×ÒØ�A‰IˆDÜ% d§o¡oÖ6‰LˆAˆyØ×-Ñ-¨d°IÀqÈDÁyÐ-ÕQð 7à×ÒØ�M‰M˜$×*Ñ*×.Ñ.Ô/Ø�J‰J�|Ô$Ø×Ñ×4Ñ4°TÔ:Ø�J‰J�sŒOØ�‰�yÕ!r3   c                 óœ   — | j                   D ]  }|j                  ||«       Œ | j                  �| j                  j                  ||«       y y r‡   )r[  r  r\  )rŽ   r¡   rX   Úclauses       r4   r  z(IfStatNode.generate_function_definitions�  sG   € Ø—o”oˆFØ×0Ñ0°°dÕ;ð &à×ÑÐ'Ø×Ñ×:Ñ:¸3ÀÕEð (r3   c                 ó˜   — | j                   D ]  }|j                  |«       Œ | j                  r| j                  j                  |«       y y r‡   )r[  r½   r\  )rŽ   rX   r_  s      r4   r½   zIfStatNode.annotate£  s@   € ØŸœˆIØ×Ñ˜tÕ$ð )à×ÒØ×Ñ×%Ñ% dÕ+ð r3   NrÉ  r2   r3   r4   rZ  rZ  z  s(   „ ð   Ð/€Kò7òò"òFó,r3   rZ  c                   ó6   — e Zd ZddgZdZd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚIfClauseNoderP  r¼   Nc                 ó:   — | j                   j                  |«       y r‡   )r¼   r³   r    s     r4   r³   z!IfClauseNode.analyse_declarations³  s   € Ø�	‰	×&Ñ& sÕ+r3   c                 ó†   — | j                   j                  |«      | _         | j                  j                  |«      | _        | S r‡   )rP  rT  r¼   rw   r    s     r4   rw   z IfClauseNode.analyse_expressions¶  s3   € ØŸ™×GÑGÈÓLˆŒØ—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr3   c                 óX  — | j                   j                  |«       |j                  | j                  «       | j                   j	                  «       }| j
                  r| j
                  ›d|›d�}|j                  d|z  «       | j                   j                  |«       | j                   j                  |«       | j                  j                  |«       |j                  | j                  d¬«       |s'| j                  j                  s|j                  |«       |j                  d«       y )Nri  rh  r‹  Frs  rn  )rP  r?  r-  r9   r�   Úbranch_hintrS   r�  rL  r¼   r  rñ   rÐ  )rŽ   rX   r�  rb  rP  s        r4   r  z$IfClauseNode.generate_execution_code»  sÐ   € Ø�‰×/Ñ/°Ô5Ø�‰�d—h‘hÔØ—N‘N×)Ñ)Ó+ˆ	Ø×ÒØ$(×$4Ó$4²iÐ@ˆIØ�
‰
�; Ñ*Ô+Ø�‰×-Ñ-¨dÔ3Ø�‰×!Ñ! $Ô'Ø�	‰	×)Ñ)¨$Ô/Ø�‰�d—h‘h eˆÔ,Ù˜4Ÿ9™9×2Ò2Ø�M‰M˜)Ô$Ø�
‰
�3�r3   c                 ót   — | j                   j                  ||«       | j                  j                  ||«       y r‡   )rP  r  r¼   r6  s      r4   r  z*IfClauseNode.generate_function_definitionsÊ  s*   € Ø�‰×4Ñ4°S¸$Ô?Ø�	‰	×/Ñ/°°TÕ:r3   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r‡   )rP  r½   r¼   r¸   s     r4   r½   zIfClauseNode.annotateÎ  s&   € Ø�‰×Ñ Ô%Ø�	‰	×Ñ˜4Õ r3   )
r,   r-   r.   r«   rm  r³   rw   r  r  r½   r2   r3   r4   ri  ri  ª  s,   „ ð  Ð'€KØ€Kò,òò
ò;ó!r3   ri  c                   ó,   — e Zd ZddgZd„ Zd„ Zd„ Zd„ Zy)ÚSwitchCaseNodeÚ
conditionsr¼   c                 óH   — | j                   D ]  }|j                  |«       Œ y r‡   )rr  r?  ©rŽ   rX   r
  s      r4   Ú"generate_condition_evaluation_codez1SwitchCaseNode.generate_condition_evaluation_codeÛ  s   € Ø—O”OˆDØ×)Ñ)¨$Õ/ñ $r3   c                 óÜ  — t        | j                  «      }|j                  j                  d   }t	        | j                  d«      D ]\  \  }}|j                  d|j                  «       z  «       |j                  |j                  «       |sŒF||k  sŒL|j                  d«       Œ^ | j                  j                  |«       |j                  | j                  d¬«       |j                  d«       y )Nrc  r   zcase %s:r­  Frs  r±  )rK   rr  r  rÿ   rØ  rS   r�   r-  r9   r¼   r  )rŽ   rX   Únum_conditionsÚline_tracing_enabledrõ  r
  s         r4   r  z&SwitchCaseNode.generate_execution_codeß  s²   € Ü˜TŸ_™_Ó-ˆØ#×/Ñ/×:Ñ:¸;ÑGÐÜ  §¡°!Ö4‰GˆAˆtØ�J‰J�z D§K¡K£MÑ1Ô2Ø�M‰M˜$Ÿ(™(Ô#Ú#¨¨NÓ(:à—
‘
Ð0Õ1ð 5ð 	�	‰	×)Ñ)¨$Ô/Ø�‰�d—h‘h eˆÔ,Ø�
‰
�8Õr3   c                 ó‚   — | j                   D ]  }|j                  ||«       Œ | j                  j                  ||«       y r‡   )rr  r  r¼   )rŽ   r¡   rX   r
  s       r4   r  z,SwitchCaseNode.generate_function_definitionsì  s4   € Ø—O”OˆDØ×.Ñ.¨s°DÕ9ð $à�	‰	×/Ñ/°°TÕ:r3   c                 ó~   — | j                   D ]  }|j                  |«       Œ | j                  j                  |«       y r‡   )rr  r½   r¼   rt  s      r4   r½   zSwitchCaseNode.annotateñ  s.   € Ø—O”OˆDØ�M‰M˜$Õð $à�	‰	×Ñ˜4Õ r3   N)r,   r-   r.   r«   ru  r  r  r½   r2   r3   r4   rq  rq  Ó  s"   „ ð   Ð(€Kò0òò;ó
!r3   rq  c                   ó&   — e Zd Zg d¢Zd„ Zd„ Zd„ Zy)ÚSwitchStatNode)ÚtestÚcasesr\  c                 ó”  — | j                   j                  |«       | j                  D ]  }|j                  |«       Œ |j	                  | j
                  «       |j                  d| j                   j                  «       z  «       | j                  D ]  }|j                  |«       Œ | j                  �>|j                  d«       | j                  j                  |«       |j                  d«       n|j                  d«       |j                  d«       | j                   j                  |«       | j                   j                  |«       y )Nræ  r¬  r±  zdefault: break;rn  )r}  r?  r~  ru  r-  r9   rS   r�   r  r\  r�  rL  ©rŽ   rX   Úcases      r4   r  z&SwitchStatNode.generate_execution_code   sò   € Ø�	‰	×*Ñ*¨4Ô0ð —J”JˆDØ×3Ñ3°DÕ9ð à�‰�d—h‘hÔØ�
‰
�? T§Y¡Y×%5Ñ%5Ó%7Ñ7Ô8Ø—J”JˆDØ×(Ñ(¨Õ.ð à×ÑÐ'Ø�J‰J�zÔ"Ø×Ñ×4Ñ4°TÔ:Ø�J‰J�xÕ ð
 �J‰JÐ(Ô)Ø�
‰
�3ŒØ�	‰	×(Ñ(¨Ô.Ø�	‰	×Ñ˜TÕ"r3   c                 óÔ   — | j                   j                  ||«       | j                  D ]  }|j                  ||«       Œ | j                  �| j                  j                  ||«       y y r‡   )r}  r  r~  r\  )rŽ   r¡   rX   r�  s       r4   r  z,SwitchStatNode.generate_function_definitions  s[   € Ø�	‰	×/Ñ/°°TÔ:Ø—J”JˆDØ×.Ñ.¨s°DÕ9ð à×ÑÐ'Ø×Ñ×:Ñ:¸3ÀÕEð (r3   c                 óÎ   — | j                   j                  |«       | j                  D ]  }|j                  |«       Œ | j                  �| j                  j                  |«       y y r‡   )r}  r½   r~  r\  r€  s      r4   r½   zSwitchStatNode.annotate  sS   € Ø�	‰	×Ñ˜4Ô Ø—J”JˆDØ�M‰M˜$Õð à×ÑÐ'Ø×Ñ×%Ñ% dÕ+ð (r3   N)r,   r-   r.   r«   r  r  r½   r2   r3   r4   r|  r|  ÷  s   „ ò 3€Kò#ò.Fó,r3   r|  c                   ó   — e Zd Zy)ÚLoopNodeNrZ  r2   r3   r4   r…  r…  &  r[  r3   r…  c                   ó2   — e Zd Zg d¢Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚWhileStatNode)rP  r¼   r\  c                 óŠ   — | j                   j                  |«       | j                  r| j                  j                  |«       y y r‡   )r¼   r³   r\  r    s     r4   r³   z"WhileStatNode.analyse_declarations3  s6   € Ø�	‰	×&Ñ& sÔ+Ø×ÒØ×Ñ×1Ñ1°#Õ6ð r3   c                 óö   — | j                   r | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  r | j                  j                  |«      | _        | S r‡   )rP  rT  r¼   rw   r\  r    s     r4   rw   z!WhileStatNode.analyse_expressions8  s\   € Ø�>Š>Ø!Ÿ^™^×KÑKÈCÓPˆDŒNØ—I‘I×1Ñ1°#Ó6ˆŒ	Ø×ÒØ#×/Ñ/×CÑCÀCÓHˆDÔØˆr3   c                 óT  — |j                  | j                  «       |j                  «       }|j                  d«       | j                  r}| j                  j                  |«       | j                  j                  |«       |j                  d| j                  j                  «       z  «       | j                  j                  |«       | j                  j                  |«       |j                  |j                  «       |j                  d«       |j                  }|j                  |«       | j                  rb|j                  | j                  j                  «       |j                  d«       | j                  j                  |«       |j                  d«       |j                  |«       y )Nzwhile (1) {zif (!%s) break;rn  rc  )r-  r9   Únew_loop_labelsrS   rP  r?  r�  r�   rL  r¼   r  rÒ  r  r  Úset_loop_labelsr\  )rŽ   rX   Úold_loop_labelsr  s       r4   r  z%WhileStatNode.generate_execution_code@  s-  € Ø�‰�d—h‘hÔØ×.Ñ.Ó0ˆØ�
‰
Øô	à�>Š>Ø�N‰N×3Ñ3°DÔ9Ø�N‰N×1Ñ1°$Ô7Ø�J‰JØ! D§N¡N×$9Ñ$9Ó$;Ñ;ô=à�N‰N×%Ñ% dÔ+Ø�	‰	×)Ñ)¨$Ô/Ø�‰�t×*Ñ*Ô+Ø�
‰
�3ŒØ×&Ñ&ˆØ×Ñ˜_Ô-Ø×ÒØ�M‰M˜$×*Ñ*×.Ñ.Ô/Ø�J‰J�|Ô$Ø×Ñ×4Ñ4°TÔ:Ø�J‰J�sŒOØ�‰�{Õ#r3   c                 óÞ   — | j                   r| j                   j                  ||«       | j                  j                  ||«       | j                  �| j                  j                  ||«       y y r‡   )rP  r  r¼   r\  r6  s      r4   r  z+WhileStatNode.generate_function_definitionsW  sX   € Ø�>Š>Ø�N‰N×8Ñ8¸¸dÔCØ�	‰	×/Ñ/°°TÔ:Ø×ÑÐ'Ø×Ñ×:Ñ:¸3ÀÕEð (r3   c                 óØ   — | j                   r| j                   j                  |«       | j                  j                  |«       | j                  r| j                  j                  |«       y y r‡   )rP  r½   r¼   r\  r¸   s     r4   r½   zWhileStatNode.annotate^  sO   € Ø�>Š>Ø�N‰N×#Ñ# DÔ)Ø�	‰	×Ñ˜4Ô Ø×ÒØ×Ñ×%Ñ% dÕ+ð r3   NrÉ  r2   r3   r4   r‡  r‡  *  s#   „ ò 7€Kò7ò
ò$ò.Fó,r3   r‡  c                   óD   — e Zd Zg d¢ZdxZZdxZZdxZZ	d„ Z
d„ Zd„ Zd„ Zy)ÚDictIterationNextNode)
Údict_objÚexpected_sizeÚpos_index_varÚcoerced_key_varÚcoerced_value_varÚcoerced_tuple_varÚ
key_targetÚvalue_targetÚtuple_targetÚis_dict_flagNc                 ót   — t         j                  | |j                  |||||||dt        j                  ¬«       y )NT)	r’  r“  r”  r˜  r™  rš  r›  Úis_temprl  ©r˜   rœ   r9   r
   Úc_bint_type)rŽ   r’  r“  r”  r˜  r™  rš  r›  s           r4   rœ   zDictIterationNextNode.__init__r  s=   € ä�‰Ø�(—,‘,ØØ'Ø'Ø!Ø%Ø%Ø%ØÜ×'Ñ'ð 	õ 
	)r3   c                 óÈ  — ddl m} | j                  j                  |«      | _        | j                  j                  |«      | _        | j
                  r | j
                  j                  |«      | _        | j                  rŽ| j                  j                  |«      | _        |j                  | j                  j                  t        j                  «      | _        | j                  j                  | j                  j                  |«      | _        | j                   r�| j                   j                  |«      | _        |j                  | j                   j                  t        j                  ¬«      | _        | j"                  j                  | j                   j                  |«      | _        | j&                  rŽ| j&                  j                  |«      | _        |j                  | j&                  j                  t        j                  «      | _        | j(                  j                  | j&                  j                  |«      | _        | j,                  j                  |«      | _        | S ©Nr   rj  r_  )rØ   rœ  r’  rv   r“  r”  r˜  rx   ÚTempNoder9   r
   r   Úkey_refrç  rl  r•  r™  Ú	value_refr–  rš  Ú	tuple_refr—  r›  ©rŽ   r¡   rœ  s      r4   rw   z)DictIterationNextNode.analyse_expressions€  s¸  € ÝØŸ™×3Ñ3°CÓ8ˆŒØ!×/Ñ/×=Ñ=¸cÓBˆÔØ×ÒØ!%×!3Ñ!3×!AÑ!AÀ#Ó!FˆDÔØ�?Š?Ø"Ÿo™o×BÑBÀ3ÓGˆDŒOØ$×-Ñ-¨d¯o©o×.AÑ.AÄ:×C\ÑC\Ó]ˆDŒLØ#'§<¡<×#9Ñ#9¸$¿/¹/×:NÑ:NÐPSÓ#TˆDÔ Ø×ÒØ $× 1Ñ 1× FÑ FÀsÓ KˆDÔØ&×/Ñ/°×0AÑ0A×0EÑ0EÌJ×LeÑLeÐ/ÓfˆDŒNØ%)§^¡^×%=Ñ%=¸d×>OÑ>O×>TÑ>TÐVYÓ%ZˆDÔ"Ø×ÒØ $× 1Ñ 1× FÑ FÀsÓ KˆDÔØ&×/Ñ/°×0AÑ0A×0EÑ0EÄz×G`ÑG`ÓaˆDŒNØ%)§^¡^×%=Ñ%=¸d×>OÑ>O×>TÑ>TÐVYÓ%ZˆDÔ"Ø ×-Ñ-×;Ñ;¸CÓ@ˆÔØˆr3   c                 ó<   — | j                   j                  ||«       y r‡   )r’  r  r6  s      r4   r  z3DictIterationNextNode.generate_function_definitions•  s   € Ø�‰×3Ñ3°C¸Õ>r3   c                 ó  — |j                   j                  t        j                  dd«      «       | j                  j                  |«       g }g }| j                  | j                  | j                  f| j                  | j                  | j                  f| j                  | j                  | j                  ffD ]T  \  }}}|€d}n8|j                  |||f«       |j!                  |«       d|j#                  «       z  }|j                  |«       ŒV |j$                  j'                  t(        j*                  d«      }|j-                  |›d| j                  j/                  «       ›d| j0                  j#                  «       ›d| j2                  j#                  «       ›d|d	   ›d|d
   ›d|d   ›d| j4                  j#                  «       ›d�«       |j-                  d|z  «       |j-                  |j7                  d|z  | j8                  «      «       |j$                  j;                  |«       |D ]  \  }}}|j=                  |«       Œ |D ]  \  }}}|j                  |«       Œ |D ])  \  }}}|j?                  ||«       |jA                  |«       Œ+ y )NÚ	dict_iterú
Optimize.cr„  ú&%sFz = __Pyx_dict_iter_next(rÈ   rí  r   r   r%   ro  úif (unlikely(%s == 0)) break;ú%s == -1)!r  rŒ  r   r˜  r’  r?  r£  r•  r˜  r¤  r–  r™  r¥  r—  rš  rµ  Úallocater�   r$  r%  r
   r	  rS   r°  r“  r”  r›  rá  r9   r-  Úgenerate_gotrefrP  Úrelease)	rŽ   rX   r�  Útemp_addressesr@  r�   rO  ÚaddrÚresult_temps	            r4   r  z-DictIterationNextNode.generate_execution_code˜  s0  € Ø×Ñ×)Ñ)¬+×*AÑ*AÀ+È|Ó*\Ô]Ø�‰×.Ñ.¨tÔ4àˆØˆØ%)§\¡\°4×3GÑ3GÈÏÉÐ$YØ%)§^¡^°T×5KÑ5KÈT×M^ÑM^Ð$_Ø%)§^¡^°T×5KÑ5KÈT×M^ÑM^Ð$_ó$aÑˆC�˜ð ˆ~Ø‘à×"Ñ" C¨°Ð#8Ô9Ø—‘˜TÔ"Ø˜sŸz™z›|Ñ+�Ø×!Ñ! $Õ'ð$að —n‘n×2Ñ2´:×3HÑ3HÈ%ÓPˆØ�
‰
ÚØ�M‰M×#Ñ#Õ%Ø×Ñ×%Ñ%Õ'Ø×Ñ×%Ñ%Õ'Ø˜1ÓØ˜1ÓØ˜1ÓØ×Ñ×$Ñ$Õ&ð	
ô 		ð 	�
‰
Ð2°[Ñ@ÔAØ�
‰
�4×%Ñ% j°;Ñ&>ÀÇÁÓIÔJØ�‰×#Ñ# KÔ0ó $/ÑˆC�˜Ø×Ñ Õ%ð $/ã#.ÑˆC�˜Ø×+Ñ+¨DÕ1ð $/ã#.ÑˆC�˜Ø×+Ñ+¨F°DÔ9Ø�K‰K˜Õñ $/r3   )r,   r-   r.   r«   r•  r£  r–  r¤  r—  r¥  rœ   rw   r  r  r2   r3   r4   r‘  r‘  f  s@   „ òQ€Kð !%Ð$€O�gØ$(Ð(Ð˜	Ø$(Ð(Ð˜	ò)òò*?ó'r3   r‘  c                   ó4   — e Zd Zg d¢ZdxZZd„ Zd„ Zd„ Zd„ Z	y)ÚSetIterationNextNode)Úset_objr“  r”  r–  r™  Úis_set_flagNc                 óp   — t         j                  | |j                  |||||dt        j                  ¬«	       y )NT)r¶  r“  r”  r™  r·  r�  rl  rž  )rŽ   r¶  r“  r”  r™  r·  s         r4   rœ   zSetIterationNextNode.__init__Ê  s7   € Ü�‰Ø�'—+‘+ØØ'Ø'Ø%Ø#ØÜ×'Ñ'ð 	õ 	)r3   c                 ó0  — ddl m} | j                  j                  |«      | _        | j                  j                  |«      | _        | j
                  j                  |«      | _        | j                  j                  |«      | _        |j                  | j                  j                  t        j                  ¬«      | _        | j                  j                  | j                  j                  |«      | _        | j                   j                  |«      | _        | S r¡  )rØ   rœ  r¶  rv   r“  r”  r™  rx   r¢  r9   r
   r   r¤  rç  rl  r–  r·  r¦  s      r4   rw   z(SetIterationNextNode.analyse_expressionsÕ  sÓ   € ÝØ—|‘|×1Ñ1°#Ó6ˆŒØ!×/Ñ/×=Ñ=¸cÓBˆÔØ!×/Ñ/×=Ñ=¸cÓBˆÔØ ×-Ñ-×BÑBÀ3ÓGˆÔØ"×+Ñ+¨D×,=Ñ,=×,AÑ,AÌ
×HaÑHaÐ+ÓbˆŒØ!%§¡×!9Ñ!9¸$×:KÑ:K×:PÑ:PÐRUÓ!VˆÔØ×+Ñ+×9Ñ9¸#Ó>ˆÔØˆr3   c                 ó<   — | j                   j                  ||«       y r‡   )r¶  r  r6  s      r4   r  z2SetIterationNextNode.generate_function_definitionsà  s   € Ø�‰×2Ñ2°3¸Õ=r3   c                 óÈ  — |j                   j                  t        j                  dd«      «       | j                  j                  |«       | j                  }|j                  |«       |j                  j                  t        j                  d«      }|j                  |›d| j                  j                  «       ›d| j                  j                  «       ›d| j                   j                  «       ›d|j                  «       ›d| j"                  j                  «       ›d�«       |j                  d|z  «       |j                  |j%                  d	|z  | j&                  «      «       |j                  j)                  |«       |j+                  |«       | j,                  j                  |«       | j.                  j1                  | j,                  |«       |j3                  |«       y )
NÚset_iterrª  Fz = __Pyx_set_iter_next(rÈ   rí  ro  r¬  r­  )r  rŒ  r   r˜  r¶  r?  r¤  r®  r$  r%  r
   r	  rS   r°  r“  r�   r”  r·  rá  r9   r-  r¯  r–  r™  rP  r°  )rŽ   rX   r¤  r³  s       r4   r  z,SetIterationNextNode.generate_execution_codeã  sd  € Ø×Ñ×)Ñ)¬+×*AÑ*AÀ*ÈlÓ*[Ô\Ø�‰×-Ñ-¨dÔ3à—N‘Nˆ	Ø×Ñ˜4Ô à—n‘n×2Ñ2´:×3HÑ3HÈ%ÓPˆØ�
‰
ÚØ�L‰L×"Ñ"Õ$Ø×Ñ×%Ñ%Õ'Ø×Ñ×%Ñ%Õ'Ø×ÑÕØ×Ñ×#Ñ#Õ%ð
ô 	ð 	�
‰
Ð2°[Ñ@ÔAØ�
‰
�4×%Ñ% j°;Ñ&>ÀÇÁÓIÔJØ�‰×#Ñ# KÔ0ð 	×!Ñ! $Ô'Ø×Ñ×7Ñ7¸Ô=Ø×Ñ×2Ñ2°4×3IÑ3IÈ4ÔPØ×Ñ˜$Õr3   )
r,   r-   r.   r«   r–  r¤  rœ   rw   r  r  r2   r3   r4   rµ  rµ  Â  s+   „ òG€Kð %)Ð(Ð˜	ò	)ò	ò>ó r3   rµ  c                 óp   — d|v r'|d   j                   rt        | fi |¤ŽS t        | fi |¤ŽS t        | fi |¤ŽS )NÚiterator)Úis_asyncÚAsyncForStatNodeÚForInStatNodeÚForFromStatNode)r9   r›   s     r4   ÚForStatNoderÃ  þ  sG   € Ø�RÑØˆj‰>×"Ò"Ü# CÑ.¨2Ñ.Ð.ä  Ñ+¨Ñ+Ð+ä˜sÑ) bÑ)Ð)r3   c                   ó@   — e Zd Zg d¢ZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy)
Ú_ForInStatNode)rO  rÍ   r¾  r¼   r\  NFc                 ó   — t        d«      ‚)Nz!must be implemented by subclasses)ÚNotImplementedErrorr©   s    r4   Ú_create_item_nodez _ForInStatNode._create_item_node  s   € Ü!Ð"EÓFÐFr3   c                 óÞ   — | j                   j                  |«       | j                  j                  |«       | j                  r| j                  j                  |«       | j                  «        y r‡   )rO  r‚  r¼   r³   r\  rÈ  r    s     r4   r³   z#_ForInStatNode.analyse_declarations  sO   € Ø�‰×.Ñ.¨sÔ3Ø�	‰	×&Ñ& sÔ+Ø×ÒØ×Ñ×1Ñ1°#Ô6Ø×ÑÕ r3   c                 óô  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j	                  «        | j
                  j                  |«      | _        | j                  sz| j                  j                  j                  s | j                  j                  j                  r:| j                   j                  j                  | j                  j                  «      rn5| j
                  j                  | j                   j                  |«      | _        | j                  j                  |«      | _        | j                  r | j                  j                  |«      | _        | S r‡   )rO  rx   r¾  rw   rÈ  rÍ   r¿  rl  rd  re  ré  rç  r¼   r\  r    s     r4   rw   z"_ForInStatNode.analyse_expressions   s   € Ø—k‘k×6Ñ6°sÓ;ˆŒØŸ™×9Ñ9¸#Ó>ˆŒØ×ÑÔ Ø—I‘I×1Ñ1°#Ó6ˆŒ	Ø—’Ø—‘×#Ñ#×*Ò*¨d¯m©m×.@Ñ.@×.IÒ.IØ—‘× Ñ ×0Ñ0°·±×1CÑ1CÔDààŸ	™	×+Ñ+¨D¯K©K×,<Ñ,<¸cÓBˆDŒIØ—I‘I×1Ñ1°#Ó6ˆŒ	Ø×ÒØ#×/Ñ/×CÑCÀCÓHˆDÔØˆr3   c                 ó"  — |j                  | j                  «       |j                  «       }| j                  j	                  |«       |j                  d«       | j                  j                  |«       |j                  d«       | j                  j	                  |«       | j                  j                  | j                  |«       |j                  | j                  «       | j                  j                  |«       |j                  | j                  «       |j                  |j                  «       |j                  d«       | j                  j!                  |«       | j"                  r|j%                  d«      nd }|j%                  d«      }|j'                  |j(                  g|g|xs || j                  ¬«      }|j                  | j                  «       |D ]  }| j                  j!                  |«       Œ |j+                  |«       | j                  j-                  |«       | j"                  rN|j                  d«       |j                  |«       | j"                  j                  |«       |j                  d«       |j                  |«       y )Nr’  rž  rn  Úfor_elseÚfor_end)Úskip_to_labelr9   rc  )r-  r9   r‹  r¾  r?  r¡  Úgenerate_for_loop_headerrS   rÍ   rO  rP  Úwrite_trace_liner¼   r  rÒ  r  r�  r\  r›  Úlabel_interceptorr  rŒ  rL  )rŽ   rX   r�  Ú
else_labelr�  Úlabel_interceptsr½  s          r4   r  z&_ForInStatNode.generate_execution_code1  sã  € Ø�‰�d—h‘hÔØ×.Ñ.Ó0ˆØ�‰×.Ñ.¨tÔ4Ø�‰�ÔØ�‰×.Ñ.¨tÔ4Ø�
‰
�5ÔØ�	‰	×*Ñ*¨4Ô0Ø�‰×,Ñ,¨T¯Y©Y¸Ô=Ø×Ñ˜dŸh™hÔ'Ø�	‰	×)Ñ)¨$Ô/Ø�‰�d—h‘hÔØ�‰�t×*Ñ*Ô+Ø�
‰
�3Œð 	�‰×,Ñ,¨TÔ2à37×3CÒ3C�T—^‘^ JÔ/Èˆ
Ø—N‘N 9Ó-ˆ	Ø×1Ñ1Ø×ÑÐØˆKØ$Ò1¨	Ø—‘ð	 2ó 
Ðð 	�‰�d—h‘hÔÛ!ˆAØ�M‰M×0Ñ0°Õ6ð "ð 	×Ñ˜_Ô-Ø�‰× Ñ  Ô&à×ÒØ�J‰J�|Ô$Ø�N‰N˜:Ô&Ø×Ñ×4Ñ4°TÔ:Ø�J‰J�sŒOà�‰�yÕ!r3   c                 óþ   — | j                   j                  ||«       | j                  j                  ||«       | j                  j                  ||«       | j                  �| j                  j                  ||«       y y r‡   )rO  r  r¾  r¼   r\  r6  s      r4   r  z,_ForInStatNode.generate_function_definitions[  se   € Ø�‰×1Ñ1°#°tÔ<Ø�‰×3Ñ3°C¸Ô>Ø�	‰	×/Ñ/°°TÔ:Ø×ÑÐ'Ø×Ñ×:Ñ:¸3ÀÕEð (r3   c                 ó*  — | j                   j                  |«       | j                  j                  |«       | j                  j                  |«       | j                  r| j                  j                  |«       | j
                  j                  |«       y r‡   )rO  r½   r¾  r¼   r\  rÍ   r¸   s     r4   r½   z_ForInStatNode.annotateb  sg   € Ø�‰×Ñ˜TÔ"Ø�‰×Ñ˜tÔ$Ø�	‰	×Ñ˜4Ô Ø×ÒØ×Ñ×%Ñ% dÔ+Ø�	‰	×Ñ˜4Õ r3   )r,   r-   r.   r«   rÍ   r¿  rÈ  r³   rw   r  r  r½   r2   r3   r4   rÅ  rÅ    s5   „ ò H€KØ€DØ€HòGò!òò"("òTFó!r3   rÅ  c                   ó   — e Zd ZdZd„ Zy)rÁ  Fc                 ó>   — ddl m}  || j                  «      | _        y )Nr   )ÚNextNode)rœ  rØ  r¾  rÍ   )rŽ   rØ  s     r4   rÈ  zForInStatNode._create_item_nodep  s   € Ý'Ù˜TŸ]™]Ó+ˆ�	r3   N)r,   r-   r.   r¿  rÈ  r2   r3   r4   rÁ  rÁ  k  s   „ ð €Hó,r3   rÁ  c                   ó   — e Zd ZdZd„ Zd„ Zy)rÀ  Tc                 ó�   — d|vsJ ‚ddl m} |j                  |d   j                  d ¬«      |d<   t	        j
                  | |fi |¤Ž y )NrÍ   r   rj  r¾  )rÿ  )rØ   rœ  ÚAwaitIterNextExprNoder9   rÅ  rœ   )rŽ   r9   r›   rœ  s       r4   rœ   zAsyncForStatNode.__init__}  sK   € Ø˜RÑÐÐÝà×4Ñ4°R¸
±^×5GÑ5GÈTÐ4ÓRˆˆ6‰
Ü×Ñ  cÑ0¨RÓ0r3   c                 ód   — ddl m} |j                  | j                  «      | j                  _        y r¥  )rØ   rœ  ÚAsyncNextNoder¾  rÍ   rÿ  r}  s     r4   rÈ  z"AsyncForStatNode._create_item_node„  s   € ÝØ!×/Ñ/°·±Ó>ˆ�	‰	�r3   N)r,   r-   r.   r¿  rœ   rÈ  r2   r3   r4   rÀ  rÀ  u  s   „ ð €Hò1ó?r3   rÀ  c                   ó`   — e Zd Zg d¢ZdZdZdZdZdZd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
ddddœZd„ Zd„ Zy)rÂ  )rO  Úbound1Úbound2Ústepr¼   r\  FNz&For-loop using object bounds or targetc                 ó¢   — | j                   | j                  | j                  fD ])  }|j                  j                  sŒ| j                  «        Œ+ y r‡   )rO  rß  rà  rl  r~  r¢   )rŽ   r¡   r°   s      r4   rù   zForFromStatNode.nogil_check¤  s6   € Ø—+‘+˜tŸ{™{¨D¯K©KÓ8ˆAØ�v‰v×!Ó!Ø—‘Õ ñ 9r3   c                 óÀ   — | j                   j                  |«       | j                  j                  |«       | j                  r| j                  j                  |«       y y r‡   )rO  r‚  r¼   r³   r\  r    s     r4   r³   z$ForFromStatNode.analyse_declarations©  sH   € Ø�‰×.Ñ.¨sÔ3Ø�	‰	×&Ñ& sÔ+Ø×ÒØ×Ñ×1Ñ1°#Õ6ð r3   c                 ó  — ddl m} | j                  j                  |«      | _        | j                  j                  |«      | _        | j                  j                  |«      | _        | j                  �at        | j                  |j                  «      r!t        | j                  j                  dd«       | j                  j                  |«      | _        | j                  |«       | j                  j                  }|j                  s,|j                  s t!        | j                  j                  d«       | j"                  j%                  |«      | _        | j&                  r | j&                  j%                  |«      | _        | S )Nr   rj  zdProbable infinite loop in for-from-by statement. Consider switching the directions of the relations.r%   z>for-from loop variable must be c numeric type or Python object)rØ   rœ  rO  rx   rß  rv   rà  rá  rL   ÚUnaryMinusNoder   r9   Úset_up_looprl  r~  rq  r   r¼   rw   r\  )rŽ   r¡   rœ  r=  s       r4   rw   z#ForFromStatNode.analyse_expressions¯  s  € ÝØ—k‘k×6Ñ6°sÓ;ˆŒØ—k‘k×/Ñ/°Ó4ˆŒØ—k‘k×/Ñ/°Ó4ˆŒØ�9‰9Ð Ü˜$Ÿ)™) Y×%=Ñ%=Ô>Ü˜Ÿ	™	Ÿ™ð (NØOPôRàŸ	™	×/Ñ/°Ó4ˆDŒIà×Ñ˜ÔØ—k‘k×&Ñ&ˆØ×'Ò'¨;×+AÒ+AÜ�$—+‘+—/‘/Ð#cÔdà—I‘I×1Ñ1°#Ó6ˆŒ	Ø×ÒØ#×/Ñ/×CÑCÀCÓHˆDÔØˆr3   c                 ó  — ddl m} | j                  j                  }|j                  r|}�nB|j
                  r t        | j                  j                  d«       |j                  rt        j                  nt        j                  }| j                  j                  j                  s*t        j                  || j                  j                  «      }| j                  j                  j                  s*t        j                  || j                  j                  «      }| j                  �J| j                  j                  j                  s*t        j                  || j                  j                  «      }| j                  j!                  ||«      | _        | j                  j!                  ||«      | _        | j                  j"                  s | j                  j%                  |«      | _        | j                  �W| j                  j!                  ||«      | _        | j                  j"                  s | j                  j%                  |«      | _        |j                  s|j
                  rVd| _        t)        | j                  |j*                  «      rt-        | j                  d«      ‚| j                  | _        d | _        y d| _        |j3                  | j                  ||«      }|| _        |j5                  |«      j7                  |«      | _        y )Nr   rj  zWInteger loops over enum values are fragile. Please cast to a safe integer type instead.FzEBuffer or memoryview slicing/indexing not allowed as for-loop target.T)rØ   rœ  rO  rl  rq  Úis_enumr   r9   r~  r
   Úc_long_typer	  rß  Úwidest_numeric_typerà  rá  rç  rð   rw  Úis_py_targetrL   ÚBufferIndexNoder   Úloopvar_nodeÚpy_loopvar_noder¢  r‡  rå  )rŽ   r¡   rœ  r=  Ú	loop_typeÚc_loopvar_nodes         r4   ræ  zForFromStatNode.set_up_loopÄ  s   € Ýà—k‘k×&Ñ&ˆØ×!Ò!Ø#ŠIà×"Ò"Ü˜Ÿ™Ÿ™Øqôsà2=×2IÒ2Iœ
×.Ò.Ìz×OdÑOdˆIØ—;‘;×#Ñ#×/Ò/Ü&×:Ñ:¸9ÀdÇkÁk×FVÑFVÓW�	Ø—;‘;×#Ñ#×/Ò/Ü&×:Ñ:¸9ÀdÇkÁk×FVÑFVÓW�	Ø�y‰yÐ$¨T¯Y©Y¯^©^×-GÒ-GÜ&×:Ñ:¸9ÀdÇiÁiÇnÁnÓU�	Ø—k‘k×+Ñ+¨I°sÓ;ˆŒØ—k‘k×+Ñ+¨I°sÓ;ˆŒØ�{‰{×%Ò%ØŸ+™+×4Ñ4°SÓ9ˆDŒKØ�9‰9Ð ØŸ	™	×+Ñ+¨I°sÓ;ˆDŒIØ—9‘9×'Ò'Ø ŸI™I×4Ñ4°SÓ9�”	à×!Ò! [×%8Ò%8Ø %ˆDÔÜ˜$Ÿ+™+ y×'@Ñ'@ÔAÜ˜DŸH™HÐ&mÓnÐnØ $§¡ˆDÔØ#'ˆDÕ à $ˆDÔØ&×/Ñ/°·±¸)ÀSÓIˆNØ .ˆDÔØ#,×#6Ñ#6°~Ó#F×#YÑ#YÐZ]Ó#^ˆDÕ r3   c                 ór  — |j                  | j                  «       |j                  «       }| j                  }| j                  j                  |«       | j                  j                  |«       | j                  | j                     \  }}| j                  �@| j                  j                  |«       | j                  j                  «       }|d   ›d|›�}nd}ddlm} t        | j                  |j                  «      r| j                  j!                  |«       t        | j"                  |j                  «      r| j"                  j!                  |«       | j$                  j&                  j(                  rt*        j,                  n| j$                  j&                  }|r)| j.                  s|j0                  j3                  |d«      }	n| j                  j                  «       }	|j4                  r‡|j6                  s{| j8                  d   dk(  ri|j;                  d|	›d	| j                  j                  «       ›|›d
|›d|	›d| j8                  ›d| j                  j                  «       ›d
|›d|	›|›d�«       nb|j;                  d|	›d	| j                  j                  «       ›|›d|	›d| j8                  ›d| j                  j                  «       ›d|	›|›d�«       | j"                  }
|
€)|r'|j=                  | j$                  j                  ||	«      }
|
�-|
j                  |«       | j$                  j?                  |
|«       |jA                  | j                  «       | jB                  jE                  |«       |jG                  |jH                  «       |�s…| j"                  �rx| j$                  jJ                  jL                  �r“|jO                  | j$                  j                  d «      }|j!                  |«       |jQ                  | j$                  jJ                  jR                  «      }| j$                  jJ                  jT                  jV                  r2|jX                  j[                  t]        j^                  dd«      «       d}nh|jX                  j[                  t]        j^                  dd«      «       dja                  | j$                  jJ                  jT                  jb                  «      }|j;                  ||j                  «       ||je                  |j                  «       | j$                  j                  «      fz  «       |jg                  |«       n| j$                  }|ji                  | j                  j&                  || j$                  jJ                  jT                  «      }|	|_5        |jm                  |«       | j$                  jJ                  jL                  r;|jo                  |j                  «       |j&                  «       |jq                  |«       |j;                  d«       |sM| j"                  rA| j"                  j                  |«       | j$                  j?                  | j"                  |«       |r'| j.                  s|j0                  js                  |	«       |jt                  }|jw                  |«       | jx                  r=|j;                  d«       | jx                  jE                  |«       |j;                  d«       |jG                  |«       | j                  j{                  |«       | j                  j}                  |«       | j                  j{                  |«       | j                  j}                  |«       t        | j                  |j                  «      r| j                  jq                  |«       t        | j"                  |j                  «      r| j"                  jq                  |«       | j                  �7| j                  j{                  |«       | j                  j}                  |«       y y )Nr   rl  Ú1r   rj  FÚ>r’  rF  z + r•  rG   z; ) { rG  rž  ÚGetModuleGlobalNamerM  z%__Pyx_GetModuleGlobalName(%s, %s); %sÚGetNameInClassz$__Pyx_GetNameInClass(%s, {}, %s); %srn  rc  )?r-  r9   r‹  Ú
from_rangerß  r?  rà  Úrelation_tableÚ	relation1rá  r�   rØ   rœ  rL   rí  r¢  r®  rî  rO  rl  rè  r
   ré  rë  r$  r%  r¡  rg  Ú	relation2rS   rE  rP  rÐ  r¼   r  rÒ  r  r  Úis_pyglobalÚ
PyTempNoder¸  rm   r  rÙ  r  rŒ  r   r˜  r:  r‘  r'  r¯  ÚCoerceFromPyTypeNodeÚ	temp_coder¯  rê  r°  r-  r  rŒ  r\  r�  rL  )rŽ   rX   r�  rö  ÚoffsetÚincoprá  rœ  Úloopvar_typeÚloopvar_nameÚcoerced_loopvar_nodeÚtarget_nodeÚinterned_cnameÚlookup_funcÚfrom_py_noder  s                   r4   r  z'ForFromStatNode.generate_execution_codeê  s  € Ø�‰�d—h‘hÔØ×.Ñ.Ó0ˆØ—_‘_ˆ
Ø�‰×,Ñ,¨TÔ2Ø�‰×,Ñ,¨TÔ2Ø×+Ñ+¨D¯N©NÑ;‰ˆ�Ø�9‰9Ð Ø�I‰I×.Ñ.¨tÔ4Ø—9‘9×#Ñ#Ó%ˆDØ$ Q›x©Ð.‰EàˆDåÜ�d×'Ñ'¨×);Ñ);Ô<Ø×Ñ×&Ñ& tÔ,Ü�d×*Ñ*¨I×,>Ñ,>Ô?Ø× Ñ ×)Ñ)¨$Ô/à15·±×1AÑ1A×1IÒ1I”z×-Ò-ÈtÏ{É{×O_ÑO_ˆá˜d×/Ò/ØŸ>™>×7Ñ7¸ÀeÓL‰Là×,Ñ,×3Ñ3Ó5ˆLØ×Ò |×':Ò':¸t¿~¹~ÈaÑ?PÐTWÒ?Wð �JŠJÚØ—‘×"Ñ"Ô$¢fªdÚ˜dŸn›n¨d¯k©k×.@Ñ.@Õ.BÂDÙšeð	%õ &ð �JŠJÚØ—‘×"Ñ"Ô$¢fÚ˜dŸn›n¨d¯k©k×.@Ñ.@Õ.BÙšeð	%ô &ð  $×3Ñ3ÐØÐ'©JØ#,×#=Ñ#=¸d¿k¹k¿o¹oÈ|Ð]iÓ#jÐ ØÐ+Ø ×9Ñ9¸$Ô?Ø�K‰K×0Ñ0Ð1EÀtÔLà×Ñ˜dŸh™hÔ'Ø�	‰	×)Ñ)¨$Ô/Ø�‰�t×*Ñ*Ô+â˜d×2Ó2ð �{‰{× Ñ ×,Ó,à'×2Ñ2°4·;±;·?±?ÀDÓI�Ø×$Ñ$ TÔ*Ø!%×!7Ñ!7¸¿¹×8IÑ8I×8NÑ8NÓ!O�Ø—;‘;×$Ñ$×*Ñ*×:Ò:Ø×$Ñ$×5Ñ5Ü#×/Ñ/Ð0EÐGYÓZô\à"I‘Kà×$Ñ$×5Ñ5Ü#×/Ñ/Ð0@ÐBTÓUôWà"H×"OÑ"OØŸ™×)Ñ)×/Ñ/×?Ñ?ó#A�Kà—
‘
˜;Ø×&Ñ&Ó(Ø"Ø×+Ñ+¨K×,>Ñ,>Ó,@À$Ç+Á+Ç/Á/ÓRð*Tñ Tô Uð ×+Ñ+¨DÕ1à"Ÿk™k�Ø$×9Ñ9Ø×!Ñ!×&Ñ&¨°T·[±[×5FÑ5F×5LÑ5LóNˆLà%1ˆLÔ"Ø×-Ñ-¨dÔ3Ø�{‰{× Ñ ×,Ò,Ø—‘ × 2Ñ 2Ó 4°k×6FÑ6FÔGØ×#Ñ# DÔ)à�
‰
�3Œá˜d×2Ò2ð × Ñ ×9Ñ9¸$Ô?Ø�K‰K×0Ñ0°×1EÑ1EÀtÔLÙ˜d×/Ò/Ø�N‰N×'Ñ'¨Ô5à×&Ñ&ˆØ×Ñ˜_Ô-Ø×ÒØ�J‰J�|Ô$Ø×Ñ×4Ñ4°TÔ:Ø�J‰J�sŒOØ�‰�{Ô#Ø�‰×*Ñ*¨4Ô0Ø�‰×Ñ˜tÔ$Ø�‰×*Ñ*¨4Ô0Ø�‰×Ñ˜tÔ$Ü�d×'Ñ'¨×);Ñ);Ô<Ø×Ñ×%Ñ% dÔ+Ü�d×*Ñ*¨I×,>Ñ,>Ô?Ø× Ñ ×(Ñ(¨Ô.Ø�9‰9Ð Ø�I‰I×,Ñ,¨TÔ2Ø�I‰I× Ñ  Õ&ð !r3   )rØ   ú++)z+1r	  )rØ   ú--)z-1r	  )z<=r¦  z>=ró  c                 ó†  — | j                   j                  ||«       | j                  j                  ||«       | j                  j                  ||«       | j                  �| j                  j                  ||«       | j
                  j                  ||«       | j                  �| j                  j                  ||«       y y r‡   )rO  r  rß  rà  rá  r¼   r\  r6  s      r4   r  z-ForFromStatNode.generate_function_definitionsd  s—   € Ø�‰×1Ñ1°#°tÔ<Ø�‰×1Ñ1°#°tÔ<Ø�‰×1Ñ1°#°tÔ<Ø�9‰9Ð Ø�I‰I×3Ñ3°C¸Ô>Ø�	‰	×/Ñ/°°TÔ:Ø×ÑÐ'Ø×Ñ×:Ñ:¸3ÀÕEð (r3   c                 óz  — | j                   j                  |«       | j                  j                  |«       | j                  j                  |«       | j                  r| j                  j                  |«       | j
                  j                  |«       | j                  r| j                  j                  |«       y y r‡   )rO  r½   rß  rà  rá  r¼   r\  r¸   s     r4   r½   zForFromStatNode.annotaten  s…   € Ø�‰×Ñ˜TÔ"Ø�‰×Ñ˜TÔ"Ø�‰×Ñ˜TÔ"Ø�9Š9Ø�I‰I×Ñ˜tÔ$Ø�	‰	×Ñ˜4Ô Ø×ÒØ×Ñ×%Ñ% dÕ+ð r3   )r,   r-   r.   r«   rë  rí  rî  rö  rŸ   rù   r³   rw   ræ  r  r÷  r  r½   r2   r3   r4   rÂ  rÂ  ‰  s`   „ ò$ P€Kà€LØ€LØ€OØ€Jà:€Kò!ò
7òò*$_òLp'ðh ØØØñ€NòFó,r3   rÂ  c                   ó8   — e Zd ZdZg d¢ZdZdZd„ Zd„ Zd„ Z	d„ Z
y)ÚWithStatNodea  
    Represents a Python with statement.

    Implemented by the WithTransform as follows:

        MGR = EXPR
        EXIT = MGR.__exit__
        VALUE = MGR.__enter__()
        EXC = True
        try:
            try:
                TARGET = VALUE  # optional
                BODY
            except:
                EXC = False
                if not EXIT(*EXCINFO):
                    raise
        finally:
            if EXC:
                EXIT(None, None, None)
            MGR = EXIT = VALUE = None
    )ÚmanagerÚ
enter_callrO  r¼   Nc                 ó¦   — | j                   j                  |«       | j                  j                  |«       | j                  j                  |«       y r‡   )r	  r³   r	  r¼   r    s     r4   r³   z!WithStatNode.analyse_declarations›  s8   € Ø�‰×)Ñ)¨#Ô.Ø�‰×,Ñ,¨SÔ1Ø�	‰	×&Ñ& sÕ+r3   c                 óÞ  — | j                   j                  |«      | _         | j                   j                  j                  r$t        j                  | «      j                  |«      S | j                  j                  |«      | _        | j                  r<ddl	m
}  || j                  j                  | j                  j                  «      | _        | j                  j                  |«      | _        | S )Nr   )r¢  )r	  rv   rl  Úis_cython_lock_typeÚCythonLockStatNodeÚfrom_withstatrw   r	  rO  rœ  r¢  r9   Útarget_tempr¼   )rŽ   r¡   r¢  s      r4   rw   z WithStatNode.analyse_expressions   s¥   € Ø—|‘|×1Ñ1°#Ó6ˆŒØ�<‰<×Ñ×0Ò0Ü%×3Ñ3°DÓ9×MÑMÈcÓRÐRØŸ/™/×7Ñ7¸Ó<ˆŒØ�;Š;å+Ù'¨¯©×(;Ñ(;¸T¿_¹_×=QÑ=QÓRˆDÔØ—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr3   c                 ó¬   — | j                   j                  ||«       | j                  j                  ||«       | j                  j                  ||«       y r‡   )r	  r  r	  r¼   r6  s      r4   r  z*WithStatNode.generate_function_definitions¬  s>   € Ø�‰×2Ñ2°3¸Ô=Ø�‰×5Ñ5°c¸4Ô@Ø�	‰	×/Ñ/°°TÕ:r3   c                 óÖ  — |j                  | j                  «       |j                  d«       | j                  j	                  |«       |j
                  j                  t        d¬«      | _        |j                  j                  t        j                  dd«      «       |j                  | j                  ›d| j                  j                  «       ›d|j                  t        | j                   rdnd	«      «      ›d
|j#                  | j                  | j                  «      ›�«       |j%                  | j                  t        «       |j'                  «       }|j(                  }| j*                  j	                  |«       | j,                  r™| j.                  j1                  |«       | j*                  j3                  |«       |j                  | j.                  j5                  «       ›d| j*                  j5                  «       ›d�«       | j*                  j7                  |«       n| j*                  j9                  |«       | j*                  j;                  |«       | j                  j9                  |«       | j                  j;                  |«       ||_        | j<                  j?                  |«       |jA                  |«      rt|jC                  «       }|jE                  |«       |jG                  |«       |jI                  | j                  t        «       |jE                  |«       |jG                  |«       |j
                  jK                  | j                  «       |j                  d«       y )Nz/*with:*/ {Fr   ÚPyObjectLookupSpecialrM  z  = __Pyx_PyObject_LookupSpecial(rÈ   Ú	__aexit__Ú__exit__r"  rF  rG  rn  )&r-  r9   rS   r	  r?  r$  r%  r   Úexit_varr  rŒ  r   r˜  r°  r¸  r   r¿  r'  r(  rv  rÏ  r	  rO  r	  r®  rH  r�   rK  r�  rL  r¼   r  rÎ  r›  rÐ  rÒ  r,  r-  )rŽ   rX   r  Úintermediate_error_labelÚstep_over_labels        r4   r  z$WithStatNode.generate_execution_code±  s`  € Ø�‰�d—h‘hÔØ�
‰
�=Ô!Ø�‰×-Ñ-¨dÔ3ØŸ™×4Ñ4´^ÐPUÐ4ÓVˆŒØ×Ñ×)Ñ)Ü×#Ñ#Ð$;Ð=OÓPô	Rà�
‰
Ø�M‹MØ�L‰L×"Ñ"Õ$Ø×"Ñ"¤=ÀÇÂ±ÐS]Ó#^Õ_Ø×#Ñ# D§M¡M°4·8±8Ô<ð	ô 	ð 	�‰˜Ÿ™¤~Ô6ð ×.Ñ.Ó0ˆØ#'×#3Ñ#3Ð à�‰×0Ñ0°Ô6Ø�;Š;ð ×Ñ×%Ñ% dÔ+Ø�O‰O×0Ñ0°Ô6Ø�J‰J T×%5Ñ%5×%<Ñ%<Õ%>ÀÇÁ×@VÑ@VÕ@XÐYÔZØ�O‰O×9Ñ9¸$Õ?à�O‰O×2Ñ2°4Ô8Ø�‰×"Ñ" 4Ô(à�‰×+Ñ+¨DÔ1Ø�‰×Ñ Ô%à*ˆÔØ�	‰	×)Ñ)¨$Ô/à�?‰?Ð3Ô4Ø"Ÿn™nÓ.ˆOØ�M‰M˜/Ô*Ø�N‰NÐ3Ô4Ø×!Ñ! $§-¡-´Ô@Ø�M‰M˜/Ô*Ø�N‰N˜?Ô+à�‰×#Ñ# D§M¡MÔ2Ø�
‰
�3�r3   )r,   r-   r.   r‚   r«   r	  r	  r³   rw   r  r  r2   r3   r4   r	  r	  y  s,   „ ñò8 >€Kà€JØ€Kò,ò

ò;ó
.r3   r	  c                   ó4   — e Zd ZddgZdZdZd„ Zd„ Zd„ Zd„ Z	y)ÚWithTargetAssignmentStatNoderL  r  Nc                 ó:   — | j                   j                  |«       y r‡   rÍ  r    s     r4   r³   z1WithTargetAssignmentStatNode.analyse_declarationsð  rÎ  r3   c                 óú   — | j                   j                  |«      | _         | j                   j                  |«       | j                  j                  j                  | j                   j                  |«      | _        | S r‡   )r  rx   ro  Ú	with_noder	  rç  rl  rL  r    s     r4   rw   z0WithTargetAssignmentStatNode.analyse_expressionsó  sU   € Ø—8‘8×0Ñ0°Ó5ˆŒØ�‰×%Ñ% cÔ*Ø—>‘>×-Ñ-×7Ñ7¸¿¹¿¹ÀsÓKˆŒØˆr3   c                 óÐ   — | j                   j                  |«       | j                  j                  | j                   |«       | j                  j
                  j                  |«       y r‡   )rL  r?  r  rP  r!	  r	  r°  r¸   s     r4   r  z4WithTargetAssignmentStatNode.generate_execution_codeù  sD   € Ø�‰×)Ñ)¨$Ô/Ø�‰×)Ñ)¨$¯(©(°DÔ9Ø�‰×"Ñ"×*Ñ*¨4Õ0r3   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r‡   r®  r¸   s     r4   r½   z%WithTargetAssignmentStatNode.annotateþ  r¯  r3   )
r,   r-   r.   r«   r!	  rL  r³   rw   r  r½   r2   r3   r4   r	  r	  â  s+   „ ð ˜%�.€KØ€IØ
€Cò1òò1ó
 r3   r	  c                   óR   — e Zd Zg d¢ZdZd„ Zd„ Zej                  Z	dZ
d„ Zd„ Zd„ Zy	)
ÚTryExceptStatNode)r¼   Úexcept_clausesr\  Fc                 óÎ   — | j                   j                  |«       | j                  D ]  }|j                  |«       Œ | j                  r| j                  j                  |«       y y r‡   )r¼   r³   r&	  r\  )rŽ   r¡   Úexcept_clauses      r4   r³   z&TryExceptStatNode.analyse_declarations   sT   € Ø�	‰	×&Ñ& sÔ+Ø!×0Ô0ˆMØ×.Ñ.¨sÕ3ð 1à×ÒØ×Ñ×1Ñ1°#Õ6ð r3   c                 óx  — | j                   j                  |«      | _         d}t        | j                  «      D ]L  \  }}|j                  |«      x}| j                  |<   |rt	        |j
                  d«       |j                  rŒKd}ŒN || _        | j                  r | j                  j                  |«      | _        | S )Nr   zdefault 'except:' must be lastr   )	r¼   rw   rØ  r&	  r   r9   ÚpatternÚhas_default_clauser\  )rŽ   r¡   Údefault_clause_seenrõ  r(	  s        r4   rw   z%TryExceptStatNode.analyse_expressions   s­   € Ø—I‘I×1Ñ1°#Ó6ˆŒ	ØÐÜ )¨$×*=Ñ*=Ö >ÑˆAˆ}Ø5B×5VÑ5VÐWZÓ5[Ð[ˆM˜D×/Ñ/°Ñ2Ù"Ü�m×'Ñ'Ð)IÔJØ ×(Ó(Ø&'Ñ#ð !?ð #6ˆÔØ×ÒØ#×/Ñ/×CÑCÀCÓHˆDÔØˆr3   zTry-except statementc           
      óÞ
  ‡‡— ‰j                  | j                  «       ‰j                  d«       ‰j                  }‰j                  }‰j
                  }‰j                  «       }‰j                  }‰j                  d«      }‰j                  d«      }‰j                  d«      }	‰j                  d«      }
|r‰j                  d«      nd }|r‰j                  d«      nd }‰j                  d«      }t        d	«      D �cg c]"  }‰j                  j                  t        d
«      ‘Œ$ c}Š‰j                  «       }‰j                  d«       |
‰_        |‰_        |‰_        | j                  j                  ‰«       ‰j                  | j                  d
¬«       ‰j                  d«       ‰j                  j!                  «       }‰j#                  |«      }|r¥‰j$                  j'                  t(        «       | j*                  s"|j                  d«       |j                  d«       |j                  ddj-                  ‰D �cg c]  }d|z  ‘Œ	 c}«      z  «       ‰D ]  }|j/                  |t        «       Œ ˆˆfd„}n8‰D �cg c]  }d|z  ‘Œ	 }}|j                  ddj-                  |«      z  «       d„ }|‰_        |	‰_        | j                  j0                  }| j2                  rz‰j                  | j2                  j                  «       ‰j                  d«       | j2                  j                  ‰«       ‰j                  d«       |s| j2                  j0                  }|rõ|s.‰D ]  }‰j5                  |t        «       Œ ‰j7                  |«       ‰j9                  |«       |D ]  \  }}‰j5                  ||«       Œ ‰j;                  «       r‰j=                  «        ‰j                  j>                  }| ‰j                  _        | j@                  D ]  }|jC                  ‰|«       Œ |‰j                  _        | jD                  s‰j7                  |«       ‰jG                  ||||
|	g|||||g|s‰j#                  |«      s|nd | j                  d
¬«      }|D ]  }|sŒ |«        Œ ‰j#                  |«      r>|s"‰j#                  |«      s‰j7                  |«       ‰j9                  |«       |r |«        ‰j#                  |«      r‰j9                  |«       ‰j                  d«       ‰D ]  }‰j                  jI                  |«       Œ |‰_        |‰_        |‰_        |‰_        y c c}w c c}w c c}w )Nr¡  Úexception_handledÚexcept_errorÚexcept_returnÚ
try_returnÚ	try_breakÚtry_continueÚtry_endrÜ   Fú
/*try:*/ {rs  rn  r�  r‚  z__Pyx_ExceptionSave(%s);rÈ   r«  c                  ó†   •— ‰D ]  } ‰j                  | t        «       Œ ‰j                  ddj                  ‰«      z  «       y )Nz__Pyx_ExceptionReset(%s);rÈ   )rë  r   rS   rÊ   )rm   rX   Úexc_save_varss    €€r4   Úrestore_saved_exceptionzJTryExceptStatNode.generate_execution_code.<locals>.restore_saved_exceptionP   s=   ø€ Û)�DØ×%Ñ% d¬NÕ;ð *à—
‘
Ð6ØŸ9™9 ]Ó3ñ4õ 5r3   z	(void)%s;z%s /* mark used */rG   c                   ó   — y r‡   r2   r2   r3   r4   r8	  zJTryExceptStatNode.generate_execution_code.<locals>.restore_saved_exception[   s   € Ør3   z/*else:*/ {)rÎ  r9   rt  )%r-  r9   rS   rÑ  r  r  rv  rÏ  r›  r¥  r$  r%  r   rO   r¼   r  Úall_free_managed_tempsrÎ  r  rŒ  Úreset_exception_utility_coder$  rÊ   Úput_xgotrefrñ   r\  r5  rÐ  rÒ  r—  rÙ  Úcurrent_exceptr&	  Úgenerate_handling_coder+	  rÑ  r-  )rŽ   rX   Úold_return_labelÚold_break_labelÚold_continue_labelr  r€  Úexcept_end_labelÚexcept_error_labelÚexcept_return_labelÚtry_return_labelÚtry_break_labelÚtry_continue_labelÚtry_end_labelr½  Úsave_excÚtemps_to_clean_upÚ	can_raiser@  r8	  Úmark_vars_usedÚnormal_case_terminatesÚ	temp_nameÚ	temp_typeÚouter_exceptr(	  rÓ  rÛ  r7	  s    `                          @r4   r  z)TryExceptStatNode.generate_execution_code%   sÉ  ù€ Ø�‰�d—h‘hÔØ�
‰
�3Œà×,Ñ,ÐØ×*Ñ*ˆØ!×0Ñ0ÐØ×.Ñ.Ó0ˆØ×*Ñ*ˆØŸ>™>Ð*=Ó>ÐØ!Ÿ^™^¨NÓ;ÐØ"Ÿn™n¨_Ó=ÐØŸ>™>¨,Ó7ÐÙ9H˜$Ÿ.™.¨Ô5ÈdˆÙ?Q˜TŸ^™^¨NÔ;ÐW[ÐØŸ™ yÓ1ˆô #(¨¤(ó,Ù"*˜Qð Ÿ™×5Ñ5´nÀeÕLØ"*ñ,ˆà×'Ñ'Ó)ˆØ�
‰
Øô	à,ˆÔØ*ˆÔØ0ˆÔØ�	‰	×)Ñ)¨$Ô/Ø�‰�d—h‘h eˆÔ,Ø�
‰
Øô	à ŸN™N×AÑAÓCÐØ—O‘O OÓ4ˆ	áà×Ñ×-Ñ-Ô.JÔKØ×$Ò$Ø—‘Ð<Ô=Ø—‘Ð;Ô<Ø�N‰NÐ5Ø—	‘	±-Ó@±-¨3˜5 3›;°-Ñ@ÓAñCô Dã$�Ø×$Ñ$ S¬.Õ9ð %ö5ñ <IÓI¹=°C˜k¨CÓ/¸=ˆNÐIØ�N‰NÐ/°#·(±(¸>Ó2JÑJÔKòð .ˆÔØ/ˆÔØ!%§¡×!8Ñ!8ÐØ×ÒØ�M‰M˜$×*Ñ*×.Ñ.Ô/Ø�J‰JØôà×Ñ×4Ñ4°TÔ:Ø�J‰JØôá)Ø)-×)9Ñ)9×)GÑ)GÐ&áÙ)Û(�CØ×*Ñ*¨3´Õ?ð )à—‘˜mÔ,Ø�N‰N˜?Ô+Û(9Ñ$�	˜9Ø×&Ñ& y°)Õ<ð ):ð �‰Ô Ø×4Ñ4Ô6àŸ>™>×8Ñ8ˆLà,0ˆD�N‰NÔ)Ø!%×!4Ô!4�Ø×4Ñ4°TÐ;KÕLð "5à,8ˆD�N‰NÔ)à×*Ò*Ø—‘Ð0Ô1à×1Ñ1Ø Ð2DÐFVÐXkÐlØ˜oÐ/AÐCSÐUeÐfÙ/EÈdÏoÉoÐ^kÔNl™-ÐrvØ—‘Øð 2ó 
Ðó "ˆAÚÙ'Õ)ð "ð �?‰?Ð+Ô,Ù)°$·/±/À-Ô2PØ—‘˜mÔ,Ø�N‰NÐ+Ô,ÙÙ'Ô)Ø�?‰?˜=Ô)Ø�N‰N˜=Ô)Ø�
‰
�3Œã"ˆEØ�N‰N×'Ñ'¨Õ.ð #ð -ˆÔØ*ˆÔØ0ˆÔØ*ˆÕùòO,ùò, Aùò Js   Ã;'U È9U%É:U*c                 óÔ   — | j                   j                  ||«       | j                  D ]  }|j                  ||«       Œ | j                  �| j                  j                  ||«       y y r‡   )r¼   r  r&	  r\  )rŽ   r¡   rX   r(	  s       r4   r  z/TryExceptStatNode.generate_function_definitionsŸ   s]   € Ø�	‰	×/Ñ/°°TÔ:Ø!×0Ô0ˆMØ×7Ñ7¸¸TÕBð 1à×ÑÐ'Ø×Ñ×:Ñ:¸3ÀÕEð (r3   c                 óÎ   — | j                   j                  |«       | j                  D ]  }|j                  |«       Œ | j                  r| j                  j                  |«       y y r‡   )r¼   r½   r&	  r\  )rŽ   rX   Úexcept_nodes      r4   r½   zTryExceptStatNode.annotate¦   sT   € Ø�	‰	×Ñ˜4Ô Ø×.Ô.ˆKØ× Ñ  Õ&ð /à×ÒØ×Ñ×%Ñ% dÕ+ð r3   N)r,   r-   r.   r«   r$  r³   rw   r˜   r¢   rù   rŸ   r  r  r½   r2   r3   r4   r%	  r%	     s:   „ ò <€KØ€Lò7òð —.‘.€KØ(€Kòx+òtFó,r3   r%	  c                   óJ   — e Zd Zg d¢ZdZdZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)ÚExceptClauseNode)r*	  rO  r¼   r(  NFc                 óâ   — | j                   rH| j                   j                  |«       ddlm}  || j                  | j                  |«      «      | _        | j                  j                  |«       y )Nr   )ÚExcValueNode)	rO  r‚  rœ  rW	  r9   Úinfer_exception_typer(  r¼   r³   )rŽ   r¡   rW	  s      r4   r³   z%ExceptClauseNode.analyse_declarationsÅ   sM   € Ø�;Š;Ø�K‰K×2Ñ2°3Ô7Ý/Ù)¨$¯(©(°D×4MÑ4MÈcÓ4RÓSˆDŒNØ�	‰	×&Ñ& sÕ+r3   c                 ó†  — |j                   | _        | j                  rLt        | j                  «      D ]4  \  }}|j	                  |«      }|j                  |«      | j                  |<   Œ6 | j                  r+| j                  j                  || j                  «      | _        | j                  j	                  |«      | _	        | S r‡   )
rß  rœ  r*	  rØ  rw   rå  rO  rŒ  r(  r¼   )rŽ   r¡   rõ  r*	  s       r4   rw   z$ExceptClauseNode.analyse_expressionsÌ   s–   € Ø ×/Ñ/ˆÔØ�<Š<ä'¨¯©Ö5‘
��7Ø!×5Ñ5°cÓ:�Ø")×"<Ñ"<¸SÓ"A�—‘˜Q’ð 6ð �;Š;ØŸ+™+×?Ñ?ÀÀTÇ^Á^ÓTˆDŒKà—I‘I×1Ñ1°#Ó6ˆŒ	Øˆr3   c                 ó<  — | j                   r~t        | j                   «      dk(  rf| j                   d   }|j                  rK|j                  |j                  «      }|r.|j
                  r"|j                  j                  r|j                  S t        j                  d   S )Nr   r   ÚBaseException)r*	  rK   rí   rj  rm   rk  r  Úis_builtin_scoperl  r   rÅ  )rŽ   r¡   r*	  r  s       r4   rX	  z%ExceptClauseNode.infer_exception_typeÚ   so   € Ø�<Š<œC §¡Ó-°Ò2à—l‘l 1‘oˆGØ�ŠØŸ
™
 7§<¡<Ó0�Ù˜UŸ]š]¨u¯{©{×/KÒ/KØ Ÿ:™:Ð%Ü×$Ñ$ _Ñ5Ð5r3   c                 óB   — ddl m}  |«       } || j                  «       S )Nr   )ÚHasNoExceptionHandlingVisitor)ÚParseTreeTransformsr^	  r¼   )rŽ   r^	  Útree_has_no_exceptionss      r4   Úbody_may_need_exceptionz(ExceptClauseNode.body_may_need_exceptionä   s    € ÝFÙ!>Ó!@ÐÙ)¨$¯)©)Ó4Ð4Ð4r3   c           	      óF  ‡— |j                  | j                  «       | j                  �r<t        d„ | j                  D «       «       }|r‰t	        d«      D �cg c]#  }|j
                  j                  t        d¬«      ‘Œ% }}|j                  j                  t        j                  dd«      «       |j                  dt        |«      z  «       |d   Šnd x}Š| j                  D ]  }|j                  |«       Œ | j                  D �cg c]  }|j                  «       ‘Œ }}g }‰rz|j                  j                  t        j                  d	d
«      «       t!        |«      dk(  r"|j#                  d‰›d|d   ›d|d   ›d�«       n¾|j%                  ˆfd„|D «       «       n£t!        |«      dk(  rN|j                  j                  t        j                  d	d
«      «       |j#                  d|d   ›d|d   ›d�«       nG|j                  j                  t        j                  dd«      «       |j%                  d„ |D «       «       |j
                  j                  t&        j(                  d¬«      }	|j                  |	›ddj+                  |«      ›d�«       | j                  D ]$  }|j-                  |«       |j/                  |«       Œ& |rp|j                  dt        |«      z  «       |j                  dj+                  |D �
cg c]  }
d|
z  ‘Œ	 c}
«      «       |D ]  }|j
                  j1                  |«       Œ |j                  d|	z  «       |j
                  j1                  |	«       n|j                  d«       |j3                  «       }| j4                  d uxs  | j6                  d uxs | j9                  «       }|s|r|j;                  | j<                  «       |r|j?                  | j                  «       |r²|j                  j                  t@        «       t	        d«      D �cg c]#  }|j
                  j                  t        d¬«      ‘Œ% }}dt        |«      z  }|j                  d|›d|jC                  | j                  «      ›�«       |D ]  }
|jE                  |
t        «       Œ n@|j                  j                  t        j                  dd«      «       |j                  d «       |r|j                  d!«       | j4                  r_| jF                  jI                  d   «       | jF                  j                  |«       | j4                  jK                  | jF                  |«       | j6                  �9tM        | j6                  jN                  «      D ]  \  }}|jI                  |«       Œ |jQ                  d"«      }|r'|j
                  jR                  }|j
                  _)        | jT                  jW                  |«       |r|j
                  _)        | jT                  jX                  s0|rD ]  }
|j[                  |
t        «       Œ |j]                  |«       |r’|j_                  |ja                  «       |«      D ]M  }|jc                  d   t        «       |jc                  |d   t        «       |j[                  |d   t        «       ŒO D ]  }|j
                  j1                  |«       Œ |je                  |«       |j                  d#«       y c c}w c c}w c c}
w c c}w )$Nc              3   ó~   K  — | ]5  }|j                   xs# |j                  «       xr |j                  «        –— Œ7 y ­wr‡   )rð   Ú	is_simplerD  ©r>  r*	  s     r4   r?  z:ExceptClauseNode.generate_handling_code.<locals>.<genexpr>í   s@   è ø€ ð '-á+�Gð ×"Ñ"ÒZ g×&7Ñ&7Ó&9Ò&ZÀ'×BXÑBXÓBZÐ>ZÓZÙ+ùs   ‚;=rÜ   Tr   ÚPyErrFetchRestorerH  z__Pyx_ErrFetch(&%s, &%s, &%s);r   ÚFastTypeChecksúModuleSetupCode.cr%   z#__Pyx_PyErr_GivenExceptionMatches2(rÈ   r   rh  c              3   ó0   •K  — | ]  }d ‰›d|›d�–— Œ y­w)z"__Pyx_PyErr_GivenExceptionMatches(rÈ   rh  Nr2   )r>  r*	  r'  s     €r4   r?  z:ExceptClauseNode.generate_handling_code.<locals>.<genexpr>!  s!   øè ø€ ð %á'/™Gò HPÒQXÔYÙ'/ùs   ƒz__Pyx_PyErr_ExceptionMatches2(ÚPyErrExceptionMatchesc              3   ó&   K  — | ]	  }d |z  –— Œ y­w)z __Pyx_PyErr_ExceptionMatches(%s)Nr2   re	  s     r4   r?  z:ExceptClauseNode.generate_handling_code.<locals>.<genexpr>!  s   è ø€ ð !á#+˜ð 7¸Õ@Ù#+ùr÷  FrF  z || rG  ú__Pyx_ErrRestore(%s, %s, %s);rG   ú%s = 0;r‹  z/*except:*/ {z&%s, &%s, &%szif (__Pyx_GetException(r#  z__Pyx_ErrRestore(0,0,0);z__Pyx_TraceExceptionDone();Úexcept_rn  )3r-  r9   r*	  rC  r¥  r$  r%  r   r  rŒ  r   r˜  rS   r·  r?  r°  rK   rµ  Úextendr
   r	  rÊ   r�  rL  r-  r—  rO  Úexcinfo_targetra	  rÞ  rœ  Úput_trace_exception_handledÚget_exception_utility_coder+  r<	  r(  Úset_varrP  rN  rU   r‹  rK  r¼   r  rñ   r5  rÐ  rÑ  Úget_loop_labelsr,  rŒ  )rŽ   rX   r�  Úhas_non_literalsr½  rK  r*	  ÚpatternsÚ	exc_testsÚ
match_flagr@  r.  rø  Úneeds_exceptionÚexc_argsÚtempvarrW   r�  Úold_exc_varsr'  s                      @r4   r>	  z'ExceptClauseNode.generate_handling_codeé   s&  ø€ Ø�‰�d—h‘hÔà�<‹<Ü#&ñ '-à#Ÿ|š|ó'-ó $-ð  -Ðñ  ô &+¨1¤Xó/Ù%- ð !ŸN™N×8Ñ8¼ÐTXÐ8ÕYØ%-ð ð /à× Ñ ×1Ñ1´+×2IÑ2IÐJ]Ð_mÓ2nÔoØ—
‘
Ð;¼eÀH»oÑMÔNØ# A™;‘à&*Ð*�˜8àŸ<œ<�Ø×0Ñ0°Õ6ð (à;?¿<º<ÓH¹<°˜×)Ñ)Õ+¸<ˆHÐHàˆIÙØ× Ñ ×1Ñ1Ü×+Ñ+Ð,<Ð>QÓRôTä�x“= AÒ%Ø×$Ò$Ú  (¨1£+¨x¸«{ð&õ ð ×$Ñ$ó %á'/ó%õ ô �X“ !Ò#Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,<Ð>QÓRôTà× Ò Ø˜Q“K ¨!£ð"õ ð × Ñ ×1Ñ1Ü×+Ñ+Ð,CÀ^ÓTôVà× Ñ ñ !á#+ó!ô ð
 Ÿ™×5Ñ5´j×6KÑ6KÐX]Ð5Ó^ˆJØ�J‰J¢Z°·±¸YÕ1GÐHÔIØŸ<œ<�Ø×.Ñ.¨tÔ4Ø×"Ñ" 4Õ(ð (ñ Ø—
‘
Ð:¼UÀ8»_ÑLÔMØ—
‘
˜3Ÿ8™8ÁÓ$IÁ¸ Y°£_ÀÑ$IÓJÔKÛ$�DØ—N‘N×/Ñ/°Õ5ð %ð �J‰JØØñô ð �N‰N×'Ñ'¨
Õ3à�J‰J�Ô'à—/‘/Ó#ˆà�K‰K˜tÐ#ò +Ø×Ñ tÐ+ò+à×(Ñ(Ó*ð 	ñ ™gØ×"Ñ" 4×#5Ñ#5Ô6áØ×,Ñ,¨T¯X©XÔ6áð ×Ñ×-Ñ-Ô.HÔIä!& q¤ó+Ù!)˜Að Ÿ™×4Ñ4´^ÐPTÐ4ÕUØ!)ð ð +à&¬¨x«Ñ8ˆHØ�JŠJÚ˜$Ÿ/™/¨$¯(©(Ô3ð5ô 6ã�Ø× Ñ  ¤nÕ5ñ  ð ×Ñ×-Ñ-¬k×.EÑ.EÐFYÐ[iÓ.jÔkØ�J‰JÐ1Ô2áØ�J‰JÐ4Ô5à�;Š;Ø�N‰N×"Ñ" 8¨A¡;Ô/Ø�N‰N×3Ñ3°DÔ9Ø�K‰K×0Ñ0°·±ÀÔFà×ÑÐ*Ü!$ X¨t×/BÑ/B×/GÑ/GÖ!H‘�˜Ø—‘˜WÕ%ð "Ið ×.Ñ.¨yÓ9ˆáØŸ>™>×2Ñ2ˆLØ&.ˆD�N‰NÔ#à�	‰	×)Ñ)¨$Ô/áØ&2ˆD�N‰NÔ#à�y‰y×&Ò&ÙÛ#�Cð ×*Ñ*¨3´Õ?ð $ð �M‰M˜)Ô$áØ×+Ñ+¨D×,@Ñ,@Ó,BÀOÖT�Ø×%Ñ% h¨q¡k´>ÔBØ×%Ñ% h¨q¡k´>ÔBà×&Ñ& x°¡{´NÕCð	 Uó !�Ø—‘×+Ñ+¨DÕ1ð !ð 	×Ñ˜_Ô-à�
‰
Øõ	ùòE/ùò IùòJ %Jùò:+s   Á(\Ä\Ë=\Ð!(\c                 óŒ   — | j                   �| j                   j                  ||«       | j                  j                  ||«       y r‡   )rO  r  r¼   r6  s      r4   r  z.ExceptClauseNode.generate_function_definitionsx!  s4   € Ø�;‰;Ð"Ø�K‰K×5Ñ5°c¸4Ô@Ø�	‰	×/Ñ/°°TÕ:r3   c                 óä   — | j                   r"| j                   D ]  }|j                  |«       Œ | j                  r| j                  j                  |«       | j                  j                  |«       y r‡   )r*	  r½   rO  r¼   )rŽ   rX   r*	  s      r4   r½   zExceptClauseNode.annotate}!  sP   € Ø�<Š<ØŸ<œ<�Ø× Ñ  Õ&ð (à�;Š;Ø�K‰K× Ñ  Ô&Ø�	‰	×Ñ˜4Õ r3   )r,   r-   r.   r«   r(  rp	  Úis_except_asr³   rw   rX	  ra	  r>	  r  r½   r2   r3   r4   rU	  rU	  ®   s=   „ ò" =€Kà€IØ€NØ€Lò,òò6ò5ò
Mò^;ó
!r3   rU	  c                   óŽ   — e Zd Zg d¢ZdZdZdZdZdZdZ	e
d„ «       Zd„ Zd„ Zej                  Zd	Zd
„ Zd„ Z	 dd„Zdd„Zd„ Zd„ Zy)ÚTryFinallyStatNode)r¼   Úfinally_clauseÚfinally_except_clauser   TNFc                 ó"   — t        | ||¬«      }|S )N©r¼   r‚	  )r�	  )r9   r¡   r¼   r‚	  rW   s        r4   r#  z"TryFinallyStatNode.create_analysed !  s   € ä! #¨DÀÔPˆØˆr3   c                 óî   — | j                   j                  |«       t        j                  | j                  «      | _        | j
                  j                  |«       | j                  j                  |«       y r‡   )r¼   r³   r   rŒ   r‚	  rƒ	  r    s     r4   r³   z'TryFinallyStatNode.analyse_declarations¥!  sS   € Ø�	‰	×&Ñ& sÔ+Ü%)§]¡]°4×3FÑ3FÓ%GˆÔ"Ø×"Ñ"×7Ñ7¸Ô<Ø×Ñ×0Ñ0°Õ5r3   c                 ó,  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  j                  |«      | _        |j                  r'|j                  j
                  s|j                  | _        | S r‡   )r¼   rw   r‚	  rƒ	  rå  rg  Úfunc_return_typer    s     r4   rw   z&TryFinallyStatNode.analyse_expressions«!  so   € Ø—I‘I×1Ñ1°#Ó6ˆŒ	Ø"×1Ñ1×EÑEÀcÓJˆÔØ%)×%?Ñ%?×%SÑ%SÐTWÓ%XˆÔ"Ø�?Š? 3§?¡?×#:Ò#:Ø$'§O¡OˆDÔ!Øˆr3   zTry-finally statementc           	      ó4  ‡ — |j                  ‰ j                  «       |j                  d«       |j                  }|j	                  «       }|j                  «       }|j                  }‰ j                  s||_        |j                  «       }‰ j                  j                  |«       |j                  d«       |j                  j                  «       }|j                  ‰ j                  j                  «       |j                  d«       |j                  |«       ‰ j                  gfˆ fd„	}‰ j                  xr |j                  |«      }	‰ j                  j                    }
‰ j                  j                   s_|j                  d«        |«       j                  |«       ‰ j                  j                   s|j#                  |«       |j                  d«       |	�r|j%                  |«       |j                  d«       ‰ j&                  s|j                  d«       ‰ j(                  r|j+                  «        |
r�t-        t/        d«      D �cg c]-  }|j                  j1                  t2        j4                  d	¬
«      ‘Œ/ c}«      }|j                  j1                  t3        j6                  t3        j8                  t2        j:                  «      «      d	¬
«      }nd x}}t-        t/        d«      D �cg c]#  }|j                  j1                  t<        d	¬
«      ‘Œ% c}«      }|j?                  «       r+|jA                  «        |jC                  ‰ j                  «       ‰ jE                  |||||«       |j	                  «       }|j                  d«       |j                  jF                  }|d d |j                  _#        ‰ jH                  j                  |«       ||j                  _#        |j                  d«       |
r“‰ jK                  ||||«       |r"|D ]  }|j                  jM                  |«       Œ |r|j                  jM                  |«       |j?                  «       r|jO                  ‰ j                  d¬«       |j#                  |«       |jQ                  |j                  «       |«      D ]  }‰ jS                  ||«       Œ |D ]  }|j                  jM                  |«       Œ |j                  d«       |j                  |«       |jT                  }d}tW        tY        ||«      «      D �]É  \  }\  }}|j                  |«      sŒ||k(  r|	rŒ$|j                  d|z  «       d }||k(  rÌ‰ j                  j                   s¶‰ jZ                  rª‰ j(                  sžt]        ‰ j                  t^        «      s„|j                  j1                  ‰ jZ                  d	¬
«      }|j                  |›dt`        jb                  ›d�«       ‰ jZ                  jd                  r"|j                  dt`        jb                  z  «        |«       j                  |«       ||k(  rl|rj|j                  t`        jb                  ›d|›d�«       ‰ jZ                  jd                  r|j                  d|z  «       |j                  jM                  |«       ‰ j                  j                   s|j#                  |«       |j                  d«       �ŒÌ |j%                  |«       |j                  d«       y c c}w c c}w )Nr5	  rn  z/*finally:*/ {c                 ój   •— | d   }t        j                  |«      }|‰j                  u r|| d<   |S |}|S rL  )r   rŒ   r‚	  )Ú_nextrW   Ú	node_copyrŽ   s      €r4   Úfresh_finally_clausezHTryFinallyStatNode.generate_execution_code.<locals>.fresh_finally_clauseÍ!  sD   ø€ à˜‘8ˆDÜŸ™ dÓ+ˆIØ�t×*Ñ*Ñ*Ø$��a‘ð ˆKð !�ØˆKr3   z/*normal exit:*/{z/*exception exit:*/{r�  r%   Fr   é   r¡  rÜ   TrI  r2   z%s: {rF  rG  rm	  )3r-  r9   rS   rÏ  Úall_new_labelsÚget_all_labelsÚhandle_error_caser›  r¼   r  r$  r:	  r‚	  Úset_all_labelsÚpreserve_exceptionrÎ  rñ   rÐ  rÒ  r$  Úis_try_finally_in_nogilrz  r·  r¥  r%  r
   r	  ÚCPtrTyper  ræ  r   r—  rÙ  rq	  Úput_error_catcherrK  rƒ	  Úput_error_uncatcherr-  rL  rÑ  Úput_error_cleanerrÑ  rØ  rN  rˆ	  rL   ÚGILExitNoder	   rª  r~  )rŽ   rX   r  Ú
old_labelsÚ
new_labelsrv  Úcatch_labelrJ	  r�	  Úpreserve_errorÚneeds_success_cleanupr½  Úexc_lineno_cnamesÚexc_filename_cnamerK  Úfinally_old_labelsr|	  rÛ  rÑ  rõ  r›  Ú	old_labelÚret_temps   `                      r4   r  z*TryFinallyStatNode.generate_execution_code¶!  sÄ  ø€ Ø�‰�d—h‘hÔØ�
‰
�<Ô à×*Ñ*ˆØ×(Ñ(Ó*ˆ
Ø×(Ñ(Ó*ˆ
Ø×*Ñ*ˆØ×%Ò%Ø.ˆDÔØ—n‘nÓ&ˆà�	‰	×)Ñ)¨$Ô/à�
‰
�3Œà ŸN™N×AÑAÓCÐØ�‰�d×)Ñ)×-Ñ-Ô.Ø�
‰
Ð#Ô$ð 	×Ñ˜JÔ'à(,×(;Ñ(;Ð'<õ 	ð ×0Ñ0ÒU°T·_±_À_Ó5UˆØ$(×$7Ñ$7×$EÑ$EÐ EÐà�y‰y×&Ò&Ø�J‰JÐ*Ô+Ù Ó"×:Ñ:¸4Ô@Ø×&Ñ&×4Ò4Ø—‘˜kÔ*Ø�J‰J�sŒOâØ�N‰N˜?Ô+Ø�J‰JÐ-Ô.Ø×$Ò$Ø—
‘
Ð8Ô9Ø×+Ò+Ø×%Ñ%Ô'Ù$Ü$)ä" 1œXó+'á%˜ð —N‘N×0Ñ0´×1FÑ1FÐSXÐ0ÕYØ%ñ+'ó %(Ð!ð &*§^¡^×%AÑ%AÜ×'Ñ'¬
×(?Ñ(?Ä
×@VÑ@VÓ(WÓXØ$ð &Bó &&Ñ"ð :>Ð=Ð!Ð$6Üä˜qœó#á!�Að —‘×,Ñ,¬^ÈÐ,ÕNØ!ñ#ó $ˆHð �‰Ô Ø×4Ñ4Ô6Ø×0Ñ0°·±Ô:Ø×"Ñ"ØÐ'¨Ð3DÐFXôZà!%×!4Ñ!4Ó!6Ðà�J‰J�sŒOØŸ>™>×2Ñ2ˆLØ&.¨r° lˆD�N‰NÔ#Ø×&Ñ&×>Ñ>¸tÔDØ&2ˆD�N‰NÔ#Ø�J‰J�sŒOá$Ø×(Ñ(¨¨xÐ9JÐL^Ô_Ù$Û!2˜ØŸ™×3Ñ3°EÕ:ð "3á%Ø—N‘N×/Ñ/Ð0BÔCØ—?‘?Ô$Ø×,Ñ,¨T¯X©X¸tÐ,ÔDØ—‘˜oÔ.à×+Ñ+¨D×,?Ñ,?Ó,AÐCUÖV�Ø×&Ñ& t¨XÕ6ð Wó "�Ø—‘×+Ñ+¨EÕ2ð "à�J‰J�sŒOà×Ñ˜JÔ'Ø×(Ñ(ˆØˆô *3´3°zÀ:Ó3N×)OÑ%ˆAÑ%�	˜9Ø—?‘? 9Ô-ØØ˜OÒ+±Øà�J‰J�w Ñ*Ô+ØˆHØ˜LÒ(Ø×*Ñ*×8Ò8à×-Ò-Ø $× <Ò <Ü *¨4×+>Ñ+>ÄÔ LØ#'§>¡>×#?Ñ#?Ø ×1Ñ1¸eð $@ó $E˜àŸ
™
²¼6×;NÓ;NÐ#OÔPØ×0Ñ0×<Ò<Ø ŸJ™J y´6×3FÑ3FÑ'FÔGá Ó"×:Ñ:¸4Ô@à˜LÒ(ÙØ—J‘J¬V×-@Ó-@Â(ÐKÔLØ×,Ñ,×8Ò8ØŸ
™
 9¨xÑ#7Ô8Ø—N‘N×/Ñ/°Ô9à×&Ñ&×4Ò4Ø—‘˜iÔ(Ø�J‰J�sŽOð? *PðD 	�‰�{Ô#Ø�
‰
Øõ	ùòi+'ùò#s   É2\Ë&(\c                 óÆ   — | j                   j                  ||«       | j                  j                  ||«       | j                  r| j                  j                  ||«       y y r‡   )r¼   r  r‚	  rƒ	  r6  s      r4   r  z0TryFinallyStatNode.generate_function_definitions@"  sP   € Ø�	‰	×/Ñ/°°TÔ:Ø×Ñ×9Ñ9¸#¸tÔDØ×%Ò%Ø×&Ñ&×DÑDÀSÈ$ÕOð &r3   c                 ó@  — |j                   j                  t        «       |j                   j                  t        «       |j                   j                  t        «       | j
                  r|j                  d¬«       |j                  d«       |j                  dj                  |D �cg c]  }d|z  ‘Œ	 c}«      «       |D ]  \  }}|j                  ||«       Œ |j                  d|dd  z  «       |j                  d|d d d	z  z  «       |D ]  }|j                  |t        «       Œ |rS|j                  |d
   ›dt        j                  ›d|d   ›dt        j                  ›d|›dt        j                  ›d�«       | j
                  r|j!                  «        y y c c}w )NFry  r‚  rG   rm	  z$ __Pyx_ExceptionSwap(&%s, &%s, &%s);rÜ   zTif ( unlikely(__Pyx_GetException(&%s, &%s, &%s) < 0)) __Pyx_ErrFetch(&%s, &%s, &%s);r%   r   rF  r•  r   rG  )r  rŒ  rÕ  rr	  Úswap_exception_utility_coder”	  r{  rS   rÊ   r5  r<	  r   r	   Úlineno_cnameÚclineno_cnameÚfilename_cnamerˆ  )	rŽ   rX   rJ	  rK  rŸ	  r 	  r@  rN	  rl  s	            r4   r–	  z$TryFinallyStatNode.put_error_catcherF"  sn  € à×Ñ×)Ñ)Ô*HÔIØ×Ñ×)Ñ)Ô*DÔEØ×Ñ×)Ñ)Ô*EÔFà×'Ò'Ø×Ñ°ÐÔ7Ø�
‰
Ð/Ô0à�
‰
�3—8‘8¹ÓA¹°˜Y¨›_¸ÑAÓBÔCÛ0‰OˆI�tØ×"Ñ" 9¨dÕ3ð  1ð
 	�
‰
Ð9¸HÀQÀR¸LÑHÔIØ�
‰
ð 4ð 8@ÀÀ°|ÀaÑ7Gñ	Iô 	Jó
 ˆCØ×Ñ˜S¤.Õ1ð áØ�J‰JØ! !Ó$¤f×&9Ó&9Ø! !Ó$¤f×&:Ó&:Ú"¤F×$9Ó$9ð;ô <ð
 ×'Ò'Ø×(Ñ(Õ*ð (ùò) Bs   Â'Fc                 ó
  — |j                   j                  t        «       |j                   j                  t        «       | j                  r#|j                  d¬«       |j                  d«       |dd  D ]  }|j                  |t        «       Œ |j                  d|dd  z  «       |d d D ]  }|j                  |t        «       Œ |j                  d|d d z  «       | j                  r|j                  «        |j                  dj                  |D �cg c]  }d|z  ‘Œ	 c}«      «       |rT|j                  t        j                  ›d	|d
   ›dt        j                  ›d	|d   ›dt        j                  ›d	|›d�«       y y c c}w )NFry  r‚  rÜ   ú!__Pyx_ExceptionReset(%s, %s, %s);rl	  rG   rm	  rF  r   r•  r   rG  )r  rŒ  rÕ  r;	  r”	  r{  rS   rë  r   rˆ  rÊ   r	   r§	  r¨	  r©	  )rŽ   rX   rK  rŸ	  r 	  r@  s         r4   r—	  z&TryFinallyStatNode.put_error_uncatcherg"  sO  € Ø×Ñ×)Ñ)Ô*HÔIØ×Ñ×)Ñ)Ô*FÔGà×'Ò'Ø×Ñ°ÐÔ7à�J‰JÐ3Ô4ð ˜A˜B“<ˆCØ×Ñ˜c¤>Õ2ð  à�
‰
Ð6¸À!À"¸ÑEÔFØ˜B˜Q“<ˆCØ×Ñ˜c¤>Õ2ð  à�
‰
Ð2°X¸b¸q°\ÑAÔBà×'Ò'Ø×(Ñ(Ô*à�
‰
�3—8‘8¹ÓA¹°˜Y¨›_¸ÑAÓBÔCÙØ�J‰JÜ×#Ó#Ð%6°qÓ%9Ü×$Ó$Ð&7¸Ó&:Ü×%Ó%Ò'9ð;õ <ð ùò Bs   ÄF c                 óÚ  — |j                   j                  t        «       | j                  r#|j	                  d¬«       |j                  d«       |dd  D ]  }|j                  |t        «       Œ |j                  d|dd  z  «       |d d D ]  }|j                  |t        «       Œ | j                  r|j                  «        |j                  dj                  dgdz  «      |dd  z  «       y )NFry  r‚  rÜ   r«	  rG   rm	  )r  rŒ  r;	  r”	  r{  rS   rë  r   r5  rˆ  rÊ   )rŽ   rX   rK  r@  s       r4   r˜	  z$TryFinallyStatNode.put_error_cleanerƒ"  sÓ   € Ø×Ñ×)Ñ)Ô*FÔGØ×'Ò'Ø×Ñ°ÐÔ7à�J‰JÐ3Ô4ð ˜A˜B“<ˆCØ×Ñ˜c¤>Õ2ð  à�
‰
Ð6¸À!À"¸ÑEÔFØ˜B˜Q“<ˆCØ×"Ñ" 3¬Õ7ð  à×'Ò'Ø×(Ñ(Ô*Ø�
‰
�3—8‘8˜Y˜K¨™MÓ*¨X°a°b¨\Ñ9Õ:r3   c                 óp   — | j                   j                  |«       | j                  j                  |«       y r‡   )r¼   r½   r‚	  r¸   s     r4   r½   zTryFinallyStatNode.annotate•"  s(   € Ø�	‰	×Ñ˜4Ô Ø×Ñ×$Ñ$ TÕ*r3   )NN)r,   r-   r.   r«   r“	  r‘	  rˆ	  rƒ	  r”	  r$  r2  r#  r³   rw   r˜   r¢   rù   rŸ   r  r  r–	  r—	  r˜	  r½   r2   r3   r4   r�	  r�	  †!  s„   „ ò F€KàÐð ÐØÐØ Ðà#ÐØ€Làñó ðò6òð —.‘.€KØ)€KòHòTPð FJó+óB<ò8;ó$+r3   r�	  c                   ó   — e Zd ZdZdZdZy)ÚNogilTryFinallyStatNodezJ
    A try/finally statement that may be used in nogil code sections.
    FN)r,   r-   r.   r‚   r“	  rù   r2   r3   r4   r¯	  r¯	  š"  s   „ ñð ÐØ�Kr3   r¯	  c                   ó`   ‡ — e Zd Zdgej                  z   ZdZdZd	d„Zd„ Zˆ fd„Z	d„ Z
d„ Zˆ xZS )
ÚGILStatNoderP  NTc           
      ó¤   — || _         || _        | j                  |||«       t        j	                  | ||t        ||| j                  ¬«      ¬«       y )N)ÚstateÚ
state_tempr…	  )r³	  rP  Úcreate_state_temp_if_neededr�	  rœ   r™	  r´	  )rŽ   r9   r³	  r¼   rP  s        r4   rœ   zGILStatNode.__init__®"  sP   € ØˆŒ
Ø"ˆŒØ×(Ñ(¨¨e°TÔ:Ü×#Ñ#Ø�#ØÜ&Ø˜5¨T¯_©_ô>ð 	$õ 	?r3   c                 óà   — ddl m}  |«       }|j                  |«       |j                  sy |dk(  rt        j
                  }nt        j                  }ddlm} |j                  ||«      | _
        y )Nr   ©ÚYieldNodeCollectorÚgilrj  )r_	  r¸	  ÚvisitchildrenÚyieldsr
   Úc_gilstate_typeÚc_threadstate_ptr_typerØ   rœ  r¢  r´	  )rŽ   r9   r³	  r¼   r¸	  Ú	collectorrO	  rœ  s           r4   rµ	  z'GILStatNode.create_state_temp_if_needed¸"  s[   € Ý;Ù&Ó(ˆ	Ø×Ñ Ô%Ø×ÒØà�EŠ>Ü"×2Ñ2‰Iä"×9Ñ9ˆIÝØ#×,Ñ,¨S°)Ó<ˆ�r3   c                 óÄ   •— | j                   dk(  |_        | j                   dk(  rd|_        | j                  �| j                  j	                  |«       t
        ‰| �  |«      S )Nr¹	  T)r³	  Ú_in_with_gil_blockÚhas_with_gil_blockrP  r³   rj   r  s     €r4   r³   z GILStatNode.analyse_declarationsÆ"  sT   ø€ Ø"&§*¡*°Ñ"5ˆÔØ�:‰:˜ÒØ%)ˆCÔ"à�>‰>Ð%Ø�N‰N×/Ñ/°Ô4ä‰wÑ+¨CÓ0Ð0r3   c                 ó"  — |j                  t        j                  dd«      «       | j                  � | j                  j	                  |«      | _        |j
                  }| j                  dk(  |_        t        j	                  | |«      }||_        |S )NÚForceInitThreadsrh	  rÍ  )rŒ  r   r˜  rP  rw   rÍ  r³	  r�	  )rŽ   r¡   Ú	was_nogilrW   s       r4   rw   zGILStatNode.analyse_expressionsÐ"  s|   € Ø×ÑÜ×#Ñ#Ð$6Ð8KÓLô	Nð �>‰>Ð%Ø!Ÿ^™^×?Ñ?ÀÓDˆDŒNà—I‘Iˆ	Ø—J‘J 'Ñ)ˆŒ	Ü!×5Ñ5°d¸CÓ@ˆØˆŒ	Øˆr3   c                 óª  — |j                  | j                  «       |j                  «        | j                  rD| j                  sJ ‚| j                  j                  |«       | j                  j                  «       }nd }|j                  j                  }| j                  dk(  r$|j                  |¬«       d|j                  _        n/|j                  || j                   ¬«       d|j                  _        t        j                  | |«       | j                  r| j                  j                  |«       ||j                  _        |j                  «        y )Nr¹	  )ÚvariableT)rÆ	  Úunknown_gil_stateF)r-  r9   Úbegin_blockr´	  Úscope_gil_state_knownr®  r�   r$  r}  r³	  r{  Úput_release_gilr�	  r  r°  Ú	end_block)rŽ   rX   rÆ	  Úold_gil_configs       r4   r  z#GILStatNode.generate_execution_codeÝ"  sþ   € Ø�‰�d—h‘hÔØ×ÑÔØ�?Š?ð ×-Ò-Ð-Ð-Ø�O‰O×$Ñ$ TÔ*Ø—‘×-Ñ-Ó/‰HàˆHàŸ™×1Ñ1ˆØ�:‰:˜ÒØ×Ñ¨ÐÔ2Ø'+ˆD�N‰NÕ$à× Ñ ¨(È$×JdÑJdÐFdÐ ÔeØ',ˆD�N‰NÔ$ä×2Ñ2°4¸Ô>à�?Š?Ø�O‰O×#Ñ# DÔ)à#1ˆ�‰Ô Ø�‰Õr3   r‡   )r,   r-   r.   r¯	  r«   r´	  rÉ	  rœ   rµ	  r³   rw   r  rr   rs   s   @r4   r±	  r±	  £"  s<   ø„ ð �-Ð"9×"EÑ"EÑE€KØ€JØ Ðó?ò=ô1òör3   r±	  c                   ó(   — e Zd ZdZg ZdZdZd„ Zd„ Zy)r™	  a  
    Used as the 'finally' block in a GILStatNode

    state   string   'gil' or 'nogil'
    #   scope_gil_state_known  bool  For nogil functions this can be False, since they can also be run with gil
    #                           set to False by GilCheck transform
    NTc                 ó   — | S r‡   r2   r    s     r4   rw   zGILExitNode.analyse_expressions#  rî  r3   c                 óÔ   — | j                   r| j                   j                  «       }nd }| j                  dk(  r|j                  |«       y |j	                  || j
                   ¬«       y )Nr¹	  )rÇ	  )r´	  r�   r³	  rˆ  Úput_acquire_gilrÉ	  )rŽ   rX   rÆ	  s      r4   r  z#GILExitNode.generate_execution_code#  sV   € Ø�?Š?Ø—‘×-Ñ-Ó/‰HàˆHà�:‰:˜ÒØ×(Ñ(¨Õ2à× Ñ  À×A[ÑA[Ð=[Ð Õ\r3   )	r,   r-   r.   r‚   r«   r´	  rÉ	  rw   r  r2   r3   r4   r™	  r™	  û"  s$   „ ñð €KØ€JØ Ðòó	]r3   r™	  c                   ó   — e Zd ZdZd„ Zy)ÚEnsureGILNodezI
    Ensure the GIL in nogil functions for cleanup before returning.
    c                 ó(   — |j                  d¬«       y )NFry  )r{  r¸   s     r4   r  z%EnsureGILNode.generate_execution_code#  s   € Ø×Ñ¨UÐÕ3r3   N)r,   r-   r.   r‚   r  r2   r3   r4   rÒ	  rÒ	  #  s   „ ñó4r3   rÒ	  c                   ót   ‡ — e Zd ZdZdgej
                  z   ZdZdZdZˆ fd„Z	d„ Z
ˆ fd„Zˆ fd„Zd	„ Zd
„ Zˆ xZS )ÚCriticalSectionStatNodezÅ
    Represents a freethreading Python critical section.
    In non-freethreading Python, this is a no-op.

    args    list of ExprNode    1 or 2 elements, must be object, pymutex or pymutex*
    rU   NFc          	      ó  •— t        |«      dkD  rt        j                  | _        nt        j                  | _        t        |«      dkD  rt        t        |«      «      nd| _        t        ‰| �   |f||t        || j                  ¬«      dœ|¤Ž y )Nr   rØ   )Ú
length_tag)rU   r¼   r‚	  )
rK   r
   Úc_py_critical_section2_typeÚvar_typeÚc_py_critical_section_typerã  r×	  rj   rœ   ÚCriticalSectionExitNode)rŽ   r9   rU   r¼   rV   rN   s        €r4   rœ   z CriticalSectionStatNode.__init__.#  sy   ø€ Üˆt‹9�qŠ=Ü&×BÑBˆD�Mä&×AÑAˆDŒMä,/°«I¸ªMœ#œc $›iœ.¸rˆŒä‰ÑØð	
àØÜ2Ø §¡ô1ñ		
ð ó	
r3   c                 óš   — ddl m}  |«       }|j                  | j                  «       |j                  rt        | j                  d«       y y )Nr   r·	  z0Cannot yield while in a cython.critical_section.)r_	  r¸	  rº	  r¼   r»	  r   r9   )rŽ   r¸	  r¾	  s      r4   Úcheck_for_yieldsz(CriticalSectionStatNode.check_for_yields?#  s<   € Ý;Ù&Ó(ˆ	Ø×Ñ §	¡	Ô*Ø×ÒÜ�$—(‘(ÐNÕPð r3   c                 óf   •— | j                   D ]  }|j                  |«       Œ t        ‰| �  |«      S r‡   )rU   r³   rj   )rŽ   r¡   rÿ  rN   s      €r4   r³   z,CriticalSectionStatNode.analyse_declarationsF#  s/   ø€ Ø—9”9ˆCØ×$Ñ$ SÕ)ð ä‰wÑ+¨CÓ0Ð0r3   c                 ó`  •— | j                  «        t        j                  «       }d}t        | j                  «      D ]®  \  }}|j                  |«      }|j                  |k(  s/|j                  j                  r&|j                  j                  |k(  r|dz  }d| _	        n>|j                  j                  r|j                  |«      }nt        |j                  d«       || j                  |<   Œ° |dk7  r.|t        | j                  «      k7  rt        | j                  d«       t        ‰| �  |«      S )Nr   r   TzRArguments to cython.critical_section must be Python objects, pymutex, or pymutex*.zHArguments to cython.critical_section must not mix objects and pymutexes.)rÝ	  r
   Úget_cy_pymutex_typerØ  rU   rw   rl  rd  rm  Úis_pymutex_critical_sectionr~  rw  r   r9   rK   rj   )rŽ   r¡   Úcy_pymutex_typeÚmutex_countrõ  rÿ  rN   s         €r4   rw   z+CriticalSectionStatNode.analyse_expressionsK#  s  ø€ Ø×ÑÔÜ$×8Ñ8Ó:ˆØˆÜ §	¡	Ö*‰FˆAˆsØ×)Ñ)¨#Ó.ˆCØ—‘˜OÒ+Ø—H‘H—O’O¨¯©×(:Ñ(:¸oÒ(MØ˜qÑ �Ø37�Õ0Ø—‘×%Ò%ð ×(Ñ(¨Ó-‘ô
 Ø—G‘GØhôð ˆD�I‰I�aŠLð+ +ð, ˜!Ò ¬s°4·9±9«~Ò =ÜØ—‘ØZôô ‰wÑ*¨3Ó/Ð/r3   c                 ó  — | j                   r2|j                  j                  t        j                  dd«      «       d}n1|j                  j                  t        j                  dd«      «       d}|j                  | j                  «       |j                  «        t        j                  }|j                  | j                  j                  |«      › d�«       | j                  D ]  }|j                  |«       Œ | j                   rD| j                  D �cg c].  }|j                  j                   rdnd› |j#                  «       › �‘Œ0 }}n*| j                  D �cg c]  }d|j#                  «       › �‘Œ }}|j                  d	| j$                  › d
|› d|› ddj'                  |«      › d�	«       t(        j+                  | |«       | j                  D ]$  }|j-                  |«       |j/                  |«       Œ& |j1                  «        y c c}w c c}w )NÚCriticalSectionsMutexúSynchronization.cÚMutexÚCriticalSectionsrØ   rG  r£  rô  Ú__Pyx_PyCriticalSectionÚ_Beginz(&rÈ   ro  )rá	  r  rŒ  r   r˜  r-  r9   rÈ	  r	   Úcritical_section_variablerS   rÙ	  rh  rU   r?  rl  rd  r�   r×	  rÊ   r�	  r  r�  rL  rË	  )rŽ   rX   ÚmutexrÆ	  rÿ  rU   s         r4   r  z/CriticalSectionStatNode.generate_execution_codel#  s¼  € Ø×+Ò+Ø×Ñ×-Ñ-Ü×'Ñ'Ð(?ÐATÓUôWà‰Eà×Ñ×-Ñ-Ü×'Ñ'Ð(:Ð<OÓPôRàˆEà�‰�d—h‘hÔØ×ÑÔÜ×3Ñ3ˆØ�
‰
�d—m‘m×4Ñ4°XÓ>Ð?¸qÐAÔBà—9”9ˆCØ×(Ñ(¨Õ.ð à×+Ò+ØRV×R[ÒR[Ó]ÑR[È3˜cŸh™hŸošo™°3Ð7¸¿
¹
»°~ÒFÐR[ˆDÑ]à=A¿YºYÓH¹Y°c�{ 3§:¡:£< .Ò1¸YˆDÐHØ�
‰
Ø% d§o¡oÐ%6°f¸U¸GÀ2ÀhÀZÈrÐRV×R[ÑR[Ð\`ÓRaÐQbÐbdÐeô	
ô 	×2Ñ2°4¸Ô>à—9”9ˆCØ×&Ñ& tÔ,Ø�N‰N˜4Õ ð ð 	�‰Õùò ^ùâHs   Ä3HÅH
c                 ó0   — t        | j                  d«       y )Nz!Critical sections require the GIL)r   r9   r    s     r4   rù   z#CriticalSectionStatNode.nogil_check�#  s   € Üˆd�h‰hÐ;Õ<r3   )r,   r-   r.   r‚   r�	  r«   rÙ	  r“	  rá	  rœ   rÝ	  r³   rw   r  rù   rr   rs   s   @r4   rÕ	  rÕ	   #  sO   ø„ ñð �(Ð/×;Ñ;Ñ;€Kà€HØÐØ"'Ðô
ò"Qô1ô
0òBöB=r3   rÕ	  c                   ó&   — e Zd ZdZg ZdgZd„ Zd„ Zy)rÛ	  zG
    critical_section - the CriticalSectionStatNode that owns this
    Úcritical_sectionc                 ó   — | S r‡   r2   r    s     r4   rw   z+CriticalSectionExitNode.analyse_expressions˜#  rî  r3   c                 ód   — |j                  d| j                  › dt        j                  › d�«       y )Nré	  z_End(&ro  )rS   r×	  r	   rë	  r¸   s     r4   r  z/CriticalSectionExitNode.generate_execution_code›#  s-   € Ø�
‰
Ø% d§o¡oÐ%6°f¼f×>^Ñ>^Ð<_Ð_aÐbõ	
r3   N©r,   r-   r.   r‚   r«   r‰   rw   r  r2   r3   r4   rÛ	  rÛ	  ‘#  s!   „ ñð €KØ*Ð+Ðòó
r3   rÛ	  c                   ón   ‡ — e Zd ZdZdgej
                  z   ZdZdZdZe	d„ «       Z
ˆ fd„Zˆ fd„Zd„ Zˆ xZS )	r	  z‡
    Represents
        with l:
            ...
    where l in a cython.pymutex or cython.pythread_type_lock.

    arg    ExprNode
    rÿ  NFc                 ó   — ddl m} t        |j                  t        «      sJ ‚t        |j                  j                  t
        «      sJ ‚ | |j                  |j                  |j                  j                  j                  t        |j                  «      |j                  |j                  t        j                  |j                  j                  «      «      ¬«      }||j                  _        |j                  |_        |S )Nr   rj  )rÿ  r¼   r‚	  Ú	lock_temp)rØ   rœ  rL   r¼   r�	  r%	  r9   r	  ÚCythonLockExitNoder¢  r
   r•	  rl  r‚	  Úlock_stat_noderƒ	  )rl   rW   rœ  r�   s       r4   r	  z CythonLockStatNode.from_withstat±#  s¹   € åä˜$Ÿ)™)Ô%7Ô8Ð8Ð8Ü˜$Ÿ)™)Ÿ.™.Ô*;Ô<Ð<Ð<ÙØ�H‰HØ—‘Ø—‘—‘×$Ñ$Ü/Ø—‘óð "×*Ñ*¨4¯8©8´Z×5HÑ5HÈÏÉ×IZÑIZÓ5[Ó\ô
ˆð 06ˆ×ÑÔ,Ø'-×'<Ñ'<ˆÔ$Øˆr3   c                 óX   •— | j                   j                  |«       t        ‰| �  |«      S r‡   )rÿ  r³   rj   r  s     €r4   r³   z'CythonLockStatNode.analyse_declarationsÄ#  s%   ø€ Ø�‰×%Ñ% cÔ*Ü‰wÑ+¨CÓ0Ð0r3   c                 óè   •— | j                   j                  |«      | _         | j                  }t        |t        «      r't        |j                  «      dk\  r|j                  d   }t        ‰| �  |«      S rµ  )rÿ  rw   r¼   rL   r   rK   r!  rj   )rŽ   r¡   r¼   rN   s      €r4   rw   z&CythonLockStatNode.analyse_expressionsÈ#  sX   ø€ Ø—8‘8×/Ñ/°Ó4ˆŒØ�y‰yˆÜ�dœLÔ)¬c°$·*±*«oÀÒ.BØ—:‘:˜a‘=ˆDÜ‰wÑ*¨3Ó/Ð/r3   c           	      ó¶  — |j                   j                  | j                  j                  j	                  «       «       |j                  | j                  «       |j                  «        | j                  j                  |«       | j                  j                  «       }| j                  j                  |«       |j                  |› d| j                  j                  «       › d�«       | j                  t        j                  k(  rd}n"| j                  t        j                   k(  rd}nd}|j                  d| j                  j                  j"                  › d|› d|› d	�«       t$        j'                  | |«       | j                  j)                  |«       | j                  j+                  |«       | j                  j-                  |«       |j/                  «        y )
Nrê  rG  ÚNogilrØ   ÚGilÚ__Pyx_Locks_Ú_Lockz(*ro  )r  rŒ  rÿ  rl  Úget_usage_utility_coder-  r9   rÈ	  rõ	  r®  r�   r?  rS   rú   r+   r0   r1   Ú
cname_partr�	  r  r�  rL  r°  rË	  )rŽ   rX   rN	  Úgil_strs       r4   r  z*CythonLockStatNode.generate_execution_codeÏ#  sV  € Ø×Ñ×)Ñ)¨$¯(©(¯-©-×*NÑ*NÓ*PÔQà�‰�d—h‘hÔØ×ÑÔà�‰×Ñ Ô%Ø—N‘N×)Ñ)Ó+ˆ	Ø�‰×)Ñ)¨$Ô/Ø�
‰
�i�[  T§X¡X§_¡_Ó%6Ð$7°qÐ9Ô:Ø× Ñ ¤J×$4Ñ$4Ò4Ø‰GØ×"Ñ"¤j×&;Ñ&;Ò;Ø‰GàˆGà�
‰
�\ $§(¡(§-¡-×":Ñ":Ð!;¸5ÀÀ	ÈÈIÈ;ÐVXÐYÔZä×2Ñ2°4¸Ô>à�‰×'Ñ'¨Ô-Ø�‰×Ñ˜DÔ!à�‰×Ñ˜tÔ$à�‰Õr3   )r,   r-   r.   r‚   r�	  r«   rõ	  r“	  rù   r  r	  r³   rw   r  rr   rs   s   @r4   r	  r	   #  sN   ø„ ñð �'Ð.×:Ñ:Ñ:€Kà€IàÐØ€Kàñó ðô$1ô0ör3   r	  c                   ó&   — e Zd ZdZg ZdgZd„ Zd„ Zy)rö	  zI
    lock_stat_node   CythonLockStatNode   the associated with block
    r÷	  c                 ó   — | S r‡   r2   r    s     r4   rw   z&CythonLockExitNode.analyse_expressionsó#  rî  r3   c                 óÌ   — | j                   j                  j                  j                  }|j	                  d|› d| j                   j
                  j                  «       › d�«       y )Nrý	  z	_Unlock(*ro  )r÷	  rÿ  rl  r 
  rS   rõ	  r�   )rŽ   rX   r 
  s      r4   r  z*CythonLockExitNode.generate_execution_codeö#  sQ   € Ø×(Ñ(×,Ñ,×1Ñ1×<Ñ<ˆ
Ø�
‰
�\ * ¨Y°t×7JÑ7J×7TÑ7T×7[Ñ7[Ó7]Ð6^Ð^`ÐaÕbr3   Nrò	  r2   r3   r4   rö	  rö	  ì#  s"   „ ñð €KØ(Ð)Ðòócr3   rö	  c                 óD   — ddl m} |j                  | j                  «      S r~  )rØ   r€  r�  r�  )r²  r€  s     r4   Úcython_view_utility_coder
  û#  s   € ÝØ×+Ñ+¨G×,QÑ,QÓRÐRr3   c                 ó.   — t        j                  dd«      S ©NÚArrayAPIzarrayarray.h©r   r˜  ©r²  s    r4   rº  rº  $  ó   € ¬k×.EÑ.EÀjÐR`Ô.ar3   c                 ó.   — t        j                  dd«      S r
  r

  r
  s    r4   rº  rº  $  r
  r3   )zcpython.arrayzcpython.array.arrayzcython.viewc                 óð  — |j                   j                  j                  j                  D ]É  }|j                  | j
                  k7  rŒ|j                  d«      }|j                  d«      }|xr |j                  xs |xr |j                  }|s|sŒf|rŒi|sŒl|j                  j                  sŒƒt        | j                  dd«       |j                   j                  t        j                  dd«      «        y  y )NÚimport_arrayÚ_import_arrayzx'numpy.import_array()' has been added automatically since 'numpy' was cimported but 'numpy.import_array' was not called.r   ÚNumpyImportArrayzNumpyImportArray.c)r  Úmodule_noder  rÀ  rm   r  r”  r  rl  rš  r   r9   rŒ  r   r˜  )rW   rX   Úmodr
  r
  r  s         r4   Úcimport_numpy_checkr
  $  sÖ   € ð ×Ñ×+Ñ+×1Ñ1×CÔCˆØ�8‰8�t×'Ñ'Ò'Øð —‘ ~Ó6ˆØŸ™¨Ó8ˆàÒ2 ×!2Ñ!2Ò]¸Ò8\È-×J\ÑJ\ˆÙš]Úâ ×!3Ñ!3×!@Ó!@ä˜Ÿ™ð #_Ø`aôcà× Ñ ×1Ñ1Ü×+Ñ+Ð,>Ð@TÓUôñ ñ' Dr3   c                   ó&   — e Zd Zg ZdZd„ Zd„ Zd„ Zy)ÚCImportStatNodeFc                 óè  — |j                   st        | j                  d«       y |j                  | j                  | j                  | j
                  rdnd¬«      }d| j                  v rð| j                  j                  d«      D �cg c]  }t        |«      ‘Œ }}|d   }|j                  j                  |«      }|}|dd  D ]2  }|j                  |«      }|j                  ||| j                  «       |}Œ4 | j                  r(|j                  | j                  || j                  «       nw|j                  |«       |j                  ||| j                  «       nH| j                  xs | j                  }|j                  ||| j                  «      }| j                  |_        | j                  t        v r<|j                  t        | j                     |j                  j                   «      «       y y c c}w )Nú$cimport only allowed at module levelr   rÝ   ©Úrelative_levelrH   r   )rÙ  r   r9   Úfind_moduler  Úis_absoluter£  r   rŽ  Úfind_submoduleÚdeclare_moduleÚas_namerÂ  rm  Úutility_code_for_cimportsrŒ  r²  )	rŽ   r¡   r'  rm   r-  Útop_nameÚtop_module_scopeÚsubmodule_scoper  s	            r4   r³   z$CImportStatNode.analyse_declarations+$  sª  € Ø×"Ò"Ü�$—(‘(ÐBÔCØØ—‘Ø×Ñ˜dŸh™h¸D×<LÒ<L±qÐRTð 'ó Vˆà�$×"Ñ"Ñ"Ø59×5EÑ5E×5KÑ5KÈCÔ5PÓQÑ5P¨T”] 4Õ(Ð5PˆEÐQØ˜Q‘xˆHØ"Ÿ{™{×9Ñ9¸(ÓCÐØ+ˆLØ˜a˜b›	�Ø".×"=Ñ"=¸dÓ"C�Ø×+Ñ+¨D°/À4Ç8Á8ÔLØ.‘ð "ð �|Š|Ø×"Ñ" 4§<¡<°¸t¿x¹xÕHà×'Ñ'¨Ô5Ø×"Ñ" 8Ð-=¸t¿x¹xÕHà—<‘<Ò3 4×#3Ñ#3ˆDØ×&Ñ& t¨\¸4¿8¹8ÓDˆEØ26×2BÑ2BˆEÔ/Ø×ÑÔ8Ñ8Ø× Ñ Ô!:¸4×;KÑ;KÑ!LÈSÏ[É[×M`ÑM`Ó!aÕbð 9ùò# Rs   ÂG/c                 ó   — | S r‡   r2   r    s     r4   rw   z#CImportStatNode.analyse_expressionsF$  rî  r3   c                 ó<   — | j                   dk(  rt        | |«       y y ©NÚnumpy©r  r
  r¸   s     r4   r  z'CImportStatNode.generate_execution_codeI$  ó   € Ø×Ñ˜wÒ&Ü  dÕ+ð 'r3   N)r,   r-   r.   r«   r
  r³   rw   r  r2   r3   r4   r
  r
  !$  s   „ ð €KØ€Kòcò6ó,r3   r
  c                   ó4   — e Zd Zg ZdZdZdZd„ Zd„ Zd„ Z	d„ Z
y)ÚFromCImportStatNodeNc           	      ó˜  — |j                   st        | j                  d«       y |j                  j	                  d«      dz   }| j
                  rX| j
                  |kD  rt        | j                  d«       y | j
                  |k(  r#|j                  st        | j                  d«       y |j                  | j                  | j                  | j
                  ¬«      }|sy |j                  }|j                  |«       | j                  D �]  \  }}}|dk(  r?t        |j                  j                  «       «      D ]  \  }}	|j                  ||	|«       Œ ŒL|j                  |«      }	|	rd|	_        n�| j
                  d uxr | j
                  dkD  }
|j"                  j                  ||| j                  d	|
¬
«      }|sŒ³|j$                  |u r"|j'                  |xs ||| j                  «       nt        |d|›d|›d�«       |	sŒù|xs |}|j                  ||	|«       �Œ |j)                  d«      s|j)                  d«      r�|t*        v r1|j-                  t+        |   |j"                  j.                  «      «       | j                  D ]G  \  }}}|›d|›�}|t*        v sŒ|j-                  t+        |   |j"                  j.                  «      «       ŒI y y )Nr
  rH   r   z3relative cimport beyond main package is not allowedz:relative cimport from non-package directory is not allowedr
  rÊ  r   F)Úfrom_moduler9   Úabsolute_fallbackÚrelative_importzName 'z' not declared in module 'r“  ÚcpythonÚcython)rÙ  r   r9   rß  Úcountr
  Ú
is_packager
  r  rÂ  Úimported_namesr­   r  ri   rÆ  rj  r  rŽ  Úparent_moduler
  Ú
startswithr 
  rŒ  r²  )rŽ   r¡   Úqualified_name_componentsr'  r  r9   rm   r
  Ú
local_namer  Úis_relative_importr#
  r½  Úfqnames                 r4   r³   z(FromCImportStatNode.analyse_declarationsZ$  s†  € Ø×"Ò"Ü�$—(‘(ÐBÔCØØ$'×$6Ñ$6×$<Ñ$<¸SÓ$AÀAÑ$EÐ!Ø×ÒØ×"Ñ"Ð%>Ò>ä�d—h‘hÐ UÔVØØ×$Ñ$Ð(AÒAÈ#Ï.Ê.ä�d—h‘hÐ \Ô]ØØ—‘ t×'7Ñ'7¸¿¹ÐRV×ReÑRe�ÓfˆÙØØ"×1Ñ1ˆØ×Ñ Ô-Ø"&×"5Õ"5ÑˆC��wØ�sŠ{Ü)-¨l×.BÑ.B×.HÑ.HÓ.JÖ)KÑ%�J Ø×*Ñ*¨:°u¸cÕBñ *Lð %×+Ñ+¨DÓ1�ÙØ!"�E•Jà)-×)<Ñ)<ÀDÐ)HÒ)dÈT×M`ÑM`ÐcdÑMdÐ&Ø&)§k¡k×&=Ñ&=Ø¨,¸D¿H¹HÐX]ð  pBð '>ó 'C�Oá*Ø Ø&×4Ñ4¸ÑDØ×*Ñ*¨7ª?°d¸OÈTÏXÉXÕVä™cÊdÒT_Ð#`ÔaâØ!(¢¨D�JØ×*Ñ*¨:°u¸cÖBð+ #6ð. ×!Ñ! )Ô,°×0FÑ0FÀxÔ0PØÔ7Ñ7Ø×$Ñ$Ô%>¸{Ñ%KÈCÏKÉK×L_ÑL_Ó%`ÔaØ"×1Ô1‘
��4˜Ú$/±Ð6�ØÔ6Ò6Ø×(Ñ(Ô)BÀ6Ñ)JÈ3Ï;É;×K^ÑK^Ó)_Õ`ñ 2ð 1Qr3   c                 ó–   — |j                   sy|j                  }|dk(  r|j                  syy|j                  sy||j                  k7  ryy)Nr   Úclassr   )rk  rl  rÞ  Úis_struct_or_unionr  )rŽ   r  r  rl  s       r4   Údeclaration_matchesz'FromCImportStatNode.declaration_matchesŒ$  sM   € Ø�}Š}ØØ�z‰zˆØ�7Š?Ø×)Ò)Øð ð	 ×*Ò*ØØ�t—y‘yÒ ØØr3   c                 ó   — | S r‡   r2   r    s     r4   rw   z'FromCImportStatNode.analyse_expressionsš$  rî  r3   c                 ó<   — | j                   dk(  rt        | |«       y y r&
  r(
  r¸   s     r4   r  z+FromCImportStatNode.generate_execution_code�$  r)
  r3   )r,   r-   r.   r«   r  r
  r4
  r³   r>
  rw   r  r2   r3   r4   r+
  r+
  N$  s.   „ ð €KØ€KØ€NØ€Nò0aòdòó,r3   r+
  c                   ó(   — e Zd ZdgZdZd„ Zd„ Zd„ Zy)ÚFromImportStatNoder¿  r   c                 ó–  — | j                   D ]º  \  }}|dk(  r3|j                  st        | j                  d«        y d|_        d| _        Œ>|j                  |«       |j                  rO|j                  «       �Œlt        | j                  j                  j                  ›d|›�«      |j                  _        Œªd|j                  _        Œ¼ y )NrÊ  z%import * only allowed at module levelr   rH   rØ   )ri   rÙ  r   r9   Úhas_import_starÚimport_starr‚  r  rb  r   r¿  r  r¯   rm  )rŽ   r¡   rm   rO  s       r4   r³   z'FromImportStatNode.analyse_declarations®$  s¥   € Ø ŸJœJ‰LˆD�&Ø�sŠ{Ø×*Ò*Ü˜$Ÿ(™(Ð$KÔLÙØ&'�Ô#Ø#$�Õ à×1Ñ1°#Ô6Ø—<’<Ø×?Ñ?ÓAÑIÜERØ'+§{¡{×'>Ñ'>×'DÓ'DÁdÐKóFM˜Ÿ™ÕBð BD�F—L‘LÕ>ñ 'r3   c                 óº  — ddl m} | j                  j                  |«      | _        |j	                  | j
                  t        «      | _        g | _        | j                  D �]é  \  }}|dk(  rm|j                  j                  «       D ]O  \  }}|j                  rŒ|j                  j                  sŒ*|j                  t        j                   dd«      «        Œw Œy|j#                  |j$                  «      }|j                  rß|j                  j$                  |k(  rÆt'        |j                  d«      r°|j                  j(                  | j                  j(                  j*                  k(  r�Œ	 |j-                  | j                  j(                  j*                  | j
                  | j                  j.                  ¬«      }|j                  j(                  |j0                  k(  r�Œ~	 |j5                  |d «      }|j                  t        u rd }n&| j                  j7                  |j                  |«      }| j                  j9                  |||f«       �Œì | S # t2        $ r Y Œ{w xY w)Nr   rj  rÊ  ÚExtTypeTestrM  r  )r9   r
  )rØ   rœ  r¿  rw   rE  r9   r   rÍ   Úinterned_itemsri   r  rk  rl  rÞ  rŒ  r   r˜  rj  rm   rL  r  r¯   r
  rÌ   rß  rÀ   rŒ  rç  rµ  )	rŽ   r¡   rœ  rm   rO  r½  r  r¿  Úcoerced_items	            r4   rw   z&FromImportStatNode.analyse_expressionsÁ$  sÕ  € ÝØ—k‘k×5Ñ5°cÓ:ˆŒØ×.Ñ.¨t¯x©x¼ÓHˆŒ	Ø ˆÔØ ŸJ�J‰LˆD�&Ø�sŠ{Ø #§¡× 1Ñ 1Ö 3‘H�A�uØ Ÿ=›=¨U¯Z©Z×-IÓ-IØ×,Ñ,¬[×-DÑ-DÀ]ÐTfÓ-gÔhÙñ !4ð
 Ÿ
™
 6§;¡;Ó/�à—M’M e§j¡j§o¡o¸Ò&=Ü# E§J¡J°Ô>Ø—z‘z×-Ñ-°·±×1HÑ1H×1NÑ1NÒNá ðà!$§¡°·±×1HÑ1H×1NÑ1NÐTX×T\ÑT\Ø@DÇÁ×@QÑ@Qð "1ó "S˜à Ÿ:™:×1Ñ1°V×5JÑ5JÒJÙ$ð Kð  ×9Ñ9¸#¸tÓD�Ø—;‘;¤.Ñ0Ø#'‘Là#'§9¡9×#6Ñ#6°v·{±{ÀCÓ#H�LØ×#Ñ#×*Ñ*¨D°&¸,Ð+GÖHð7 'ð8 ˆøô *ò Ùðús   Å(A3IÉ	IÉIc                 óâ	  — |j                  | j                  «       | j                  j                  |«       | j                  rZ|j                  dt        j                  ›d| j                  j                  «       ›d|j                  | j                  «      ›d�«       | j                  �r
|j                  d«       |j                  j                  t        j                  dd«      «       |j                  j                  t         j"                  d¬	«      }|j                  j                  t$        d
¬	«      }| j&                  j)                  |«       | j                  D ��cg c]  \  }}}|j+                  |«      ‘Œ }}}|j                  ddj-                  |«      › d�«       g }g }g }	t/        | j                  «      D ]¤  \  }
\  }}}|�|	j1                  |
|||f«       Œ"|j2                  rc|j4                  |k(  rT|j6                  rH|j6                  j8                  r2|j6                  j:                  j<                  r|j1                  |
«       Œ‘|j1                  |
||f«       Œ¦ t?        |xs |	«      }tA        |«      dkD  r(|j                  d|› d|› dtA        |«      › d|› d�	«       n|j                  |› d�«       |j                  |› d| j                  j                  «       › d|› d|jC                  || j                  «      › �«       |jE                  |t$        «       |rÈ|j                  d|› d�«       |D ]H  \  }
}}|j                  d|
› d�«       |jG                  | j&                  |«       |j                  d«       ŒJ |	D ]P  \  }
}}}|j                  d|
› d�«       |j                  |«       |jG                  ||«       |j                  d«       ŒR |j                  d«       |rE|jI                  t        jJ                  «      }|jM                  | j                  d|› d|› d|› d �«       |r|j                  d!«       |jO                  |t$        «       |j                  d!«       |j                  jQ                  |«       |j                  jQ                  |«       |j                  d!«       | j                  jS                  |«       | j                  jU                  |«       y c c}}w )"Nr�  ri  r#  rG  r¡  Ú
ImportFromrø  Fr   Tz*PyObject* const __pyx_imported_names[] = {r¢  r¤  r   r’  r“  r”  r•  r–  z = 0; {z = __Pyx_ImportFrom(z, __pyx_imported_names[z]); r«  rž  r®  rà   r±  z	default:;zPyDict_SetItem(z], rh  rn  )+r-  r9   r¿  r?  rE
  rS   r	   r°  r+  rH
  r  rŒ  r   r˜  r$  r%  r
   rš  r   rÍ   rT  r¸  rÊ   rØ  rµ  rí   rm   r  rú  r  rÙ  rµ  rK   r'  r(  rP  r)  r*  rì  r,  r-  r�  rL  )rŽ   rX   Úcounter_varÚ	item_temprm   r½  r4
  Úsimple_pyglobalsÚdirect_assignmentsÚcoerced_assignmentsrõ  rO  rI
  Úneeds_specific_assignmentsÚmodule_dicts                  r4   r  z*FromImportStatNode.generate_execution_codeä$  sW  € Ø�‰�d—h‘hÔØ�‰×,Ñ,¨TÔ2Ø×ÒØ�JŠJä×&Ó&Ø—K‘K×)Ñ)Õ+Ø—O‘O D§H¡HÕ-ð/ô0ð ×ÓØ�J‰J�sŒOØ×Ñ×-Ñ-Ü×'Ñ'¨Ð6FÓGôIð Ÿ.™.×6Ñ6´z×7SÑ7SÐ`eÐ6ÓfˆKØŸ™×4Ñ4´^ÐPTÐ4ÓUˆIØ�I‰I×Ñ 	Ô*ð #'×"5Ò"5ôá"5‘J�D˜!˜Qð ×&Ñ& tÕ,Ø"5ð ñ ð �J‰JÐDÀSÇXÁXÈnÓE]ÐD^Ð^aÐbÔcð  "ÐØ!#ÐØ"$Ðä3<¸T×=PÑ=PÖ3QÑ/�Ñ/�D˜& ,ØÐ+Ø'×.Ñ.°°4¸ÀÐ/NÔOØØ—>’> f§k¡k°TÒ&9Ø—|’|¨¯©×(@Ò(@ÀVÇ\Á\×EWÑEW×EgÒEgØ(×/Ñ/°Ô2Ø Ø"×)Ñ)¨1¨d°FÐ*;Õ<ð 4Rô *.Ð.@Ò.WÐDWÓ)XÐ&ä�>Ó" QÒ&Ø—
‘
˜U ; -¨t°K°=ÀÄCÈÓDWÐCXÐXZÐ[fÐZgÐgmÐnÕoð —
‘
˜k˜]¨(Ð3Ô4à�J‰JØ�+Ð1°$·+±+×2GÑ2GÓ2IÐ1JÐJaÐbmÐanÐnrØ×*Ñ*¨9°d·h±hÓ?Ð@ðBôð �O‰O˜I¤~Ô6ñ *Ø—
‘
˜X k ]°$Ð7Ô8ã'9‘O�A�t˜VØ—J‘J  q c¨˜|Ô,Ø×3Ñ3°D·I±I¸tÔDØ—J‘J˜xÕ(ð (:ó
 6IÑ1�A�t˜V \Ø—J‘J  q c¨˜|Ô,Ø ×9Ñ9¸$Ô?Ø×3Ñ3°LÀ$ÔGØ—J‘J˜xÕ(ð	 6Ið —
‘
˜;Ô'áØ"×7Ñ7¼×8LÑ8LÓM�Ø×%Ñ%Ø—H‘HØ% k ]Ð2IÈ+ÈÐVYÐZcÐYdÐdeÐfôhñ *Ø—
‘
˜3”à×!Ñ! )¬^Ô<Ø�J‰J�sŒOà�N‰N×'Ñ'¨	Ô2Ø�N‰N×'Ñ'¨Ô4Ø�J‰J�sŒOà�‰×*Ñ*¨4Ô0Ø�‰×Ñ˜tÕ$ùóKs   Å S+N)r,   r-   r.   r«   rE
  r³   rw   r  r2   r3   r4   rB
  rB
  ¢$  s"   „ ð �*€KØ€KòDò&!óFX%r3   rB
  c                   ó   — e Zd ZdZdZy)ÚParallelNodez4
    Base class for cython.parallel constructs.
    N)r,   r-   r.   r‚   rù   r2   r3   r4   rT
  rT
  ?%  s   „ ñð �Kr3   rT
  c                   óÂ  ‡ — e Zd ZdZg d¢ZdZdZdZdZdZ	dZ
dZej                  ej                  ej                  fZej"                  ej$                  ej&                  fZej*                  ej,                  ej.                  fZdZˆ fd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d"d„Z$d„ Z%d„ Z&d„ Z'd„ Z(d#d„Z)d„ Z*d„ Z+d„ Z,	 d$d„Z-dZ.dZ/de.›de/›d�Z0d„ Z1d „ Z2d!„ Z3ˆ xZ4S )%ÚParallelStatNodea  
    Base class for 'with cython.parallel.parallel():' and 'for i in prange():'.

    assignments     { Entry(var) : (var.pos, inplace_operator_or_None) }
                    assignments to variables in this parallel section

    parent          parent ParallelStatNode or None
    is_parallel     indicates whether this node is OpenMP parallel
                    (true for #pragma omp parallel for and
                              #pragma omp parallel)

    is_parallel is true for:

        #pragma omp parallel
        #pragma omp parallel for

    sections, but NOT for

        #pragma omp for

    We need this to determine the sharing attributes.

    privatization_insertion_point   a code insertion point used to make temps
                                    private (esp. the "nsteps" temp)

    args         tuple          the arguments passed to the parallel construct
    kwargs       DictNode       the keyword arguments passed to the parallel
                                construct (replaced by its compile time value)
    )r¼   Únum_threadsÚthreading_conditionNFr   c                 ó”   •— t        ‰| �  |fi |¤Ž |j                  d«      xs i | _        t	        «       | _        i | _        g | _        y )Nr�  )rj   rœ   rŠ   r�  rÓ   Úseen_closure_varsÚprivatesÚassigned_nodesr  s      €r4   rœ   zParallelStatNode.__init__‰%  sL   ø€ Ü‰Ñ˜Ñ' Ò'ð "Ÿ:™: mÓ4Ò:¸ˆÔô "%£ˆÔð
 ˆŒð !ˆÕr3   c                 óî  — | j                   j                  |«       d | _        d | _        | j                  �r«g }t        «       }| j                  j                  D �]R  }|j                  j                  |v r-t        | j                  d|j                  j                  z  «       |j                  |j                  j                  «       |j                  j                  dk(  r)|j                  j                  rŒž|j                  | _        Œ°|j                  j                  dk(  r)|j                  j                  rŒà|j                  | _        Œò| j                  rD|j                  j                  dk(  r+|j                  j                  r�Œ/|j                  | _        �ŒB|j                  |«       �ŒU || j                  _        	 | j                  j!                  |«      | _        ni | _        | j                  j%                  «       D ]:  \  }}|| j&                  vrt        | j                  d|z  «       Œ.t)        | ||«       Œ< y # t"        $ r*}t        | j                  j                  d«       Y d }~Œ†d }~ww xY w)Nz$Duplicate keyword argument found: %srW
  Úuse_threads_ifÚ	chunksizez=Only compile-time values may be supplied as keyword argumentszInvalid keyword argument: %s)r¼   r³   rW
  rX
  r}   rÓ   r¬  rÕ   r¯   r   r9   rÔ   rî   Ú	is_pranger_
  rµ  r^  Ú	Exceptionri   Úvalid_keyword_argumentsr�   )rŽ   r¡   ÚpairsÚseenÚdictitemrŠ  r›   r  s           r4   r³   z%ParallelStatNode.analyse_declarationsš%  sÓ  € Ø�	‰	×&Ñ& sÔ+àˆÔØ#'ˆÔ à�;‹;àˆEÜ“5ˆDØ ŸK™K×7Õ7�Ø—<‘<×%Ñ%¨Ñ-Ü˜$Ÿ(™(Ð$JÈXÏ\É\×M_ÑM_Ñ$_Ô`Ø—‘˜Ÿ™×+Ñ+Ô,Ø—<‘<×%Ñ%¨Ò6Ø#Ÿ>™>×1Ó1Ø+3¯>©>˜Õ(Ø—\‘\×'Ñ'Ð+;Ò;Ø#Ÿ>™>×1Ó1Ø3;·>±>˜Õ0Ø—^’^¨¯©×(:Ñ(:¸kÒ(IØ#Ÿ>™>×1Ô1Ø)1¯©˜žà—L‘L Ö*ð 8ð  +0ˆD�K‰KÔ'ðHØ"Ÿk™k×<Ñ<¸SÓA�•ð
 ˆDŒKà—{‘{×(Ñ(Ö*‰GˆB�Ø˜×5Ñ5Ñ5Ü�d—h‘hÐ >ÀÑ CÕDä˜˜b #Õ&ñ	 +øô ò HÜ�d—k‘k—o‘oð (G÷ Hñ HûðHús   Ç I É	I4É
 I/É/I4c                 ó¤  — | j                   r | j                   j                  |«      | _         | j                  rC| j                  r!| j                  j                  |«      | _        nt	        | j
                  d«       | j                  r | j                  j                  |«      | _        | j                  j                  |«      | _        | j                  |«       | j                   ��j| j                  rC| j                  j                   �-| j                  j                  st	        | j
                  d«       n£| j                  r-| j                  j                  st	        | j
                  d«       nj| j                   j                  j                  rJ| j                   j                  r4| j                   j                  |«      dk  rt	        | j
                  d«       | j                   j                  «       r | j                   j                  j                   r>| j                   j#                  t$        j&                  |«      j)                  |«      | _         | S )Nz@'use_threads_if' must de declared in the parent parallel sectionz-num_threads already declared in outer sectionz;num_threads must be declared in the parent parallel sectionr   z.argument to num_threads must be greater than 0)rW
  rw   rX
  Úis_parallelr   r9   r_
  r¼   Úanalyse_sharing_attributesÚparentr`
  rl  r¡  rð   r^  rd	  r~  rç  r
   r	  rw  r    s     r4   rw   z$ParallelStatNode.analyse_expressionsÄ%  s§  € Ø×ÒØ#×/Ñ/×CÑCÀCÓHˆDÔà×#Ò#Ø×ÒØ+/×+CÑ+C×+WÑ+WÐX[Ó+\�Õ(ä�d—h‘hÐ bÔcà�>Š>Ø!Ÿ^™^×?Ñ?ÀÓDˆDŒNà—I‘I×1Ñ1°#Ó6ˆŒ	Ø×'Ñ'¨Ô,à×ÑÑ'Ø�{Š{˜tŸ{™{×6Ñ6ÐBÈ4Ï;É;×K`ÒK`Ü�d—h‘hÐ OÕPØ—’ T§[¡[×%:Ò%:Ü�d—h‘hÐ ]Õ^Ø×"Ñ"×'Ñ'×.Ò.Ø×$Ñ$×/Ò/Ø×$Ñ$×7Ñ7¸Ó<ÀÒAÜ�d—h‘hÐ PÔQà×#Ñ#×-Ñ-Ô/°4×3CÑ3C×3HÑ3H×3TÒ3TØ#'×#3Ñ#3×#=Ñ#=Ü×)Ñ)¨3ó$0ß0>±¸sÓ0Cð Ô àˆr3   c                 ó$  — | j                   j                  «       D ]s  \  }\  }}| j                  r1| j                  s%|| j                  j                   v rt        |d«       ŒF| j                  s|rt        |d«       Œa| j                  |||«       Œu y)z·
        Analyse the privates for this block and set them in self.privates.
        This should be called in a post-order fashion during the
        analyse_expressions phase
        z0Cannot assign to private of outer parallel blockz*Reductions not allowed for parallel blocksN)r�  ri   r`
  rg
  ri
  r   Úpropagate_var_privatization)rŽ   r¡   r  r9   r|  s        r4   rh
  z+ParallelStatNode.analyse_sharing_attributesã%  s‚   € ð !%× 0Ñ 0× 6Ñ 6Ö 8ÑˆE‘9�C˜à�~Š~ d×&6Ò&6ð ˜DŸK™K×3Ñ3Ñ3Ü˜#ÐQÔRØà—>’>¡bä�cÐGÔHØð ×,Ñ,¨U°C¸Õ<ñ# !9r3   c                 ó<  — || j                   |<   |j                  j                  rt        |d«       y| j                  r^| j
                  s/|| j                  j                  vr| j                  j                  }n| j                  }|r|j                  |||«       yyy)a
  
        Propagate the sharing attributes of a variable. If the privatization is
        determined by a parent scope, done propagate further.

        If we are a prange, we propagate our sharing attributes outwards to
        other pranges. If we are a prange in parallel block and the parallel
        block does not determine the variable private, we propagate to the
        parent of the parent. Recursion stops at parallel blocks, as they have
        no concept of lastprivate or reduction.

        So the following cases propagate:

            sum is a reduction for all loops:

                for i in prange(n):
                    for j in prange(n):
                        for k in prange(n):
                            sum += i * j * k

            sum is a reduction for both loops, local_var is private to the
            parallel with block:

                for i in prange(n):
                    with parallel:
                        local_var = ... # private to the parallel
                        for j in prange(n):
                            sum += i * j

        Nested with parallel blocks are disallowed, because they wouldn't
        allow you to propagate lastprivates or reductions:

            #pragma omp parallel for lastprivate(i)
            for i in prange(n):

                sum = 0

                #pragma omp parallel private(j, sum)
                with parallel:

                    #pragma omp parallel
                    with parallel:

                        #pragma omp for lastprivate(j) reduction(+:sum)
                        for j in prange(n):
                            sum += i

                    # sum and j are well-defined here

                # sum and j are undefined here

            # sum and j are undefined here
        z9Memoryview slices can only be shared in parallel sectionsN)	r[
  rl  rÚ  r   r`
  rg
  ri
  r�  rk
  )rŽ   r  r9   r|  ri
  s        r4   rk
  z,ParallelStatNode.propagate_var_privatizationü%  s†   € ðj  "ˆ�‰�eÑà�:‰:×(Ò(Ü�#ÐRÔSØà�>Š>Ø×#Ò#¨°T·[±[×5LÑ5LÑ(LàŸ™×+Ñ+‘àŸ™�áØ×2Ñ2°5¸#¸rÕBð ð r3   c                 ó  — | j                   r| j                   j                  ||«      S |j                  | j                  v r|j                  S |j                  j                  |j                  d«      }| j                  j                  |j                  «       | j                  j                  |«       | j                  j                  ||j                  f«       |j                  |›d|j                  ›d�«       ||_        y)zo
        Helper function that allocate a temporary for a closure variable that
        is assigned to.
        TrF  rG  N)ri
  Ú_allocate_closure_temprÛ  rZ
  r$  r%  rl  rÔ   Úmodified_entriesrµ  rS   )rŽ   rX   r  rÛ  s       r4   rn
  z'ParallelStatNode._allocate_closure_tempA&  s¿   € ð
 �;Š;Ø—;‘;×5Ñ5°d¸EÓBÐBà�;‰;˜$×0Ñ0Ñ0Ø—;‘;Ðà—‘×,Ñ,¨U¯Z©Z¸Ó>ˆð 	×Ñ×"Ñ" 5§;¡;Ô/Ø×Ñ×"Ñ" 5Ô)à×Ñ×$Ñ$ e¨U¯[©[Ð%9Ô:Ø�
‰
¢¨¯«Ð4Ô5Øˆ�r3   c                 óÌ   — | j                   }|j                  j                  }||j                  _        |j                  |«       ||j                  _        |j	                  «       S r‡   )Ú1begin_of_parallel_control_block_point_after_declsr$  Úownerr?  r�   )rŽ   rX   rC  rÅ   rr
  s        r4   Úevaluate_before_blockz&ParallelStatNode.evaluate_before_blockW&  sP   € Ø×BÑBˆð —‘×!Ñ!ˆØˆ�‰ÔØ×%Ñ% aÔ(Ø!ˆ�‰Ôà�{‰{‹}Ðr3   c                 óz   — | j                   �/|j                  d| j                  || j                   «      z  «       yy)zS
        Write self.num_threads if set as the num_threads OpenMP directive
        Nz num_threads(%s))rW
  r¡  rs
  r¸   s     r4   Úput_num_threadsz ParallelStatNode.put_num_threadsc&  s:   € ð ×ÑÐ'Ø�H‰HÐ'¨$×*DÑ*DÀTÈ4×K[ÑK[Ó*\Ñ\Õ]ð (r3   c                 óœ   — g | _         t        | j                  «      D ]-  }|j                  s|j                  sŒ| j                  ||«       Œ/ y)a  
        If a variable is in a scope object, we need to allocate a temp and
        assign the value from the temp to the variable in the scope object
        after the parallel section. This kind of copying should be done only
        in the outermost parallel section.
        N)ro
  Úsortedr�  Úfrom_closurer¥  rn
  )rŽ   rX   r  s      r4   Údeclare_closure_privatesz)ParallelStatNode.declare_closure_privatesk&  sB   € ð !#ˆÔä˜D×,Ñ,Ö-ˆEØ×!Ò! U×%5Ó%5Ø×+Ñ+¨D°%Õ8ñ .r3   c                 óÆ   — | j                   D ]R  \  }}|j                  |›d|j                  ›d�«       |j                  j	                  |j                  «       ||_        ŒT y)zÁ
        Release any temps used for variables in scope objects. As this is the
        outermost parallel block, we don't need to delete the cnames from
        self.seen_closure_vars.
        rF  rG  N)ro
  rS   rÛ  r$  r-  )rŽ   rX   r  r   s       r4   Úrelease_closure_privatesz)ParallelStatNode.release_closure_privatesx&  sK   € ð &*×%:Ô%:Ñ!ˆE�>Ø�J‰J¢^°U·[³[ÐAÔBØ�N‰N×'Ñ'¨¯©Ô4Ø(ˆE�Kñ &;r3   c                 óp  — | j                   }d| _         | j                  �r–|j                  j                  «       x| _        }g g }}t        |«      D ]@  \  }}|j                  s|j                  r|j                  |«       Œ0|j                  |«       ŒB |r#|j                  ddj                  |«      z  «       |r#|j                  ddj                  |«      z  «       | j                  rÌt        j                  g}	| j                  r‹|	j                  | j                   «       |j"                  j%                  t'        j(                  dd«      «       |j                  dt        j*                  › d�«       |j                  d	| j,                  z  «       |j                  d
dj                  |	«      z  «       yyy)z’
        Make any used temporaries private. Before the relevant code block
        code.start_collecting_temps() should have been called.
        Nz private(%s)rÈ   ú firstprivate(%s)ÚSharedInFreeThreadingræ	  z' __Pyx_shared_in_cpython_freethreading(rh  z private(%s, %s, %s)z shared(%s))Úprivatization_insertion_pointrg
  r$  Ústop_collecting_tempsrõ   rw
  r~  rÚ  rµ  r¡  rÊ   Úbreaking_label_usedr	   Úparallel_whyÚerror_label_usedro	  Úparallel_excr  rŒ  r   r˜  Úparallel_freethreading_mutexÚpos_info)
rŽ   rX   Úexclude_tempsrÅ   rõ   r[
  Úfirstprivatesr.  rl  Úshared_varss
             r4   Úprivatize_tempsz ParallelStatNode.privatize_tempsƒ&  sp  € ð
 ×.Ñ.ˆØ-1ˆÔ*à×ÓØ!%§¡×!EÑ!EÓ!GÐGˆDŒJ˜Ø&(¨"�mˆHÜ$ Užm‘
��dØ×#Ò# t×'>Ò'>Ø!×(Ñ(¨Õ.à—O‘O DÕ)ð	 ,ñ Ø—‘�n t§y¡y°Ó':Ñ:Ô;ÙØ—‘Ð)¨D¯I©I°mÓ,DÑDÔEà×'Ò'Ü%×2Ñ2Ð3�Ø×(Ò(Ø×&Ñ& t×'8Ñ'8Ô9Ø—M‘M×2Ñ2Ü#×/Ñ/Ø3Ø/ó1ô2ð —E‘EÐCÄF×DgÑDgÐChÐhiÐjÔkØ—E‘EÐ0°4·=±=Ñ@ÔAà—‘�m d§i¡i°Ó&<Ñ<Õ=ð (ð r3   c                 ó¼   — | j                   rP| j                  sC|j                  d«       t        | j                  «      D ]  \  }}|j                  ||d¬«       Œ y y y )Nz/* Clean up any temporaries */Trq  )rg
  Úis_nested_prangerS   rw
  rõ   r5  )rŽ   rX   r.  rl  s       r4   Úcleanup_tempszParallelStatNode.cleanup_temps¦&  sT   € à×Ò D×$9Ò$9Ø�J‰JÐ7Ô8Ü$ T§Z¡ZÖ0‘
��dØ×&Ñ& t¨T¸DÐ&ÕAñ 1ð %:Ðr3   c                 ó>  — |j                  «       | _        |j                  «       | _        |j                  | _        |j                  d¬«      |_        |j                  «        |j                  «       | _	        |j                  «       | _
        | j                  |«       y)a¥  
        Sets up a block that surrounds the parallel block to determine
        how the parallel section was exited. Any kind of return is
        trapped (break, continue, return, exceptions). This is the idea:

        {
            int why = 0;

            #pragma omp parallel
            {
                return # -> goto new_return_label;
                goto end_parallel;

            new_return_label:
                why = 3;
                goto end_parallel;

            end_parallel:;
                #pragma omp flush(why) # we need to flush for every iteration
            }

            if (why == 3)
                goto old_return_label;
        }
        Úreturnr\  N)r‹  r�  rv  r  rÑ  r?	  r›  rÈ	  rO   Ú%begin_of_parallel_control_block_pointrq
  Ú"undef_builtin_expect_apple_gcc_bugr¸   s     r4   Ú!setup_parallel_control_flow_blockz2ParallelStatNode.setup_parallel_control_flow_block­&  sƒ   € ð4  $×3Ñ3Ó5ˆÔØ#×3Ñ3Ó5ˆÔØ $× 1Ñ 1ˆÔØ ŸN™N°˜NÓ9ˆÔà×ÑÔØ59×5IÑ5IÓ5KˆÔ2ØAE×AUÑAUÓAWˆÔ>à×/Ñ/°Õ5r3   c                 ó.   — |j                  «       | _        y)aœ  
        Each OpenMP thread in a parallel section that contains a with gil block
        must have the thread-state initialized. The call to
        PyGILState_Release() then deallocates our threadstate. If we wouldn't
        do this, each with gil block would allocate and deallocate one, thereby
        losing exception information before it can be saved before leaving the
        parallel section.
        N)rO   Úbegin_of_parallel_blockr¸   s     r4   Úbegin_parallel_blockz%ParallelStatNode.begin_parallel_blockÒ&  s   € ð (,×';Ñ';Ó'=ˆÕ$r3   c                 óF  — | j                   }d| _         | j                  �r|}|j                  d«       |j                  d¬«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j	                  d	«       |j                  «        |j                  d«       | j                  |«       |j                  «        |j                  d
«       |j	                  d«       |j                  d«       yy)a–  
        To ensure all OpenMP threads have thread states, we ensure the GIL
        in each thread (which creates a thread state if it doesn't exist),
        after which we release the GIL.
        On exit, reacquire the GIL and release the thread state.

        If compiled without OpenMP support (at the C level), then we still have
        to acquire the GIL to decref any object temporaries.
        Nú#ifdef _OPENMPTry  ÚPy_BEGIN_ALLOW_THREADSú#endif /* _OPENMP */ÚPy_END_ALLOW_THREADSrƒ  z{
z#ifndef _OPENMPz}
)r”
  rƒ
  rS   r{  Úput_safer�
  rˆ  )rŽ   rX   Ú
begin_codeÚend_codes       r4   Úend_parallel_blockz#ParallelStatNode.end_parallel_blockÝ&  s÷   € ð ×1Ñ1ˆ
Ø'+ˆÔ$à× Ó ØˆHà×ÑÐ-Ô.Ø×%Ñ%°tÐ%Ô<Ø×ÑÐ5Ô6Ø×ÑÐ3Ô4à�N‰NÐ+Ô,Ø�N‰NÐ1Ô2Ø�N‰N˜7Ô#Ø×Ñ˜eÔ$Ø×#Ñ#Ô%Ø�N‰NÐ1Ô2Ø×Ñ˜xÔ(Ø×,Ñ,Ô.Ø�N‰NÐ,Ô-Ø×Ñ˜eÔ$Ø�N‰NÐ1Õ2ð% !r3   c                 óJ  — |j                  «       }|j                  «       }d| _        d| _        d| _        g | _        |j                  «       }|D ]=  }|j                  |«      sŒ| j                  xs ||j                  k7  | _        d| _        Œ? | j                  r|j                  |«       t        |«      D ]š  \  }}|j                  |«      sŒ||j                  k(  }|j                  |«       |r|sN||j                  k(  rd| _        | j                  |«       |j                  dt        j                  |dz   fz  «       |j                  |«       Œœ | j                  rD|j                  |«       |r0| j                  r#|j!                  dt        j                  z  «       yyyy)að  
        Trap any kind of return inside a parallel construct. 'should_flush'
        indicates whether the variable should be flushed, which is needed by
        prange to skip the loop. It also indicates whether we need to register
        a continue (we need this for parallel blocks, but not for prange
        loops, as it is a direct jump there).

        It uses the same mechanism as try/finally:
            1 continue
            2 break
            3 return
            4 error
        FTz%s = %d;r   ú#pragma omp flush(%s)N)r›  Úany_label_usedr�
  rƒ
  Úparallel_private_tempsr�	  rÎ  r  rÐ  rØ  rÒ  rÏ  Úfetch_parallel_exceptionrS   r	   r‚
  r!  )	rŽ   rX   Úshould_flushÚsave_lastprivates_labelÚdont_return_labelÚ
all_labelsr?  rõ  Úis_continue_labels	            r4   Útrap_parallel_exitz#ParallelStatNode.trap_parallel_exitþ&  sˆ  € ð #'§.¡.Ó"2ÐØ ŸN™NÓ,Ðà#ˆÔØ#(ˆÔ Ø %ˆÔà&(ˆÔ#à×(Ñ(Ó*ˆ
ó  ˆEØ�‰˜uÕ%Ø,0×,DÑ,Dò -IØ,1°T×5HÑ5HÑ,Hð Ô(à&*�Õ#ð	  ð ×ÒØ�M‰MÐ+Ô,ä! *Ö-‰HˆAˆuØ—?‘? 5Ô)Øà %¨×)<Ñ)<Ñ <Ðà�N‰N˜5Ô!á Ñ%6Ø˜D×,Ñ,Ò,Ø,0�DÔ)Ø×1Ñ1°$Ô7à—
‘
˜:¬×)<Ñ)<¸aÀ!¹eÐ(DÑDÔEØ�M‰MÐ+Õ,ð .ð  ×ÒØ�N‰NÐ,Ô-á × 8Ò 8Ø×!Ñ!Ð"9¼F×<OÑ<OÑ"OÕPð !9ˆ|ð r3   c                 óž  — |j                  «        |j                  d¬«       |j                  «        |j                  dt        j
                  z  «       |j                  dt        j
                  z  «       |j                  d| j                  z  «       t        t        | j                  | j                  «      Ž }d|j                  _        |j                  dt        |«      z  «       |j                  t        j
                  t         «       |j                  d«       |j#                  «        |j%                  «        |j'                  «        y)	a^  
        As each OpenMP thread may raise an exception, we need to fetch that
        exception from the threadstate and save it for after the parallel
        section where it can be re-raised in the master thread.

        Although it would seem that __pyx_filename, __pyx_lineno and
        __pyx_clineno are only assigned to under exception conditions (i.e.,
        when we have the GIL), and thus should be allowed to be shared without
        any race condition, they are in fact subject to the same race
        conditions that they were previously when they were global variables
        and functions were allowed to release the GIL:

            thread A                thread B
                acquire
                set lineno
                release
                                        acquire
                                        set lineno
                                        release
                acquire
                fetch exception
                release
                                        skip the fetch

                deallocate threadstate  deallocate threadstate
        Try  r 
  r†  z'__Pyx_ErrFetchWithState(&%s, &%s, &%s);ú%s = %s; %s = %s; %s = %s;rn  N)rÈ	  r{  Úput_acquire_freethreading_lockr!  r	   Úparallel_exc_typerS   r„
  r   rN  Úparallel_pos_infor†
  r$  Úuses_error_indicatorr·  r(  r   Úput_release_freethreading_lockrˆ  rË	  ©rŽ   rX   r†
  s      r4   r£
  z)ParallelStatNode.fetch_parallel_exception7'  sÿ   € ð6 	×ÑÔØ×Ñ¨TÐÔ2Ø×+Ñ+Ô-à×ÑÐ1´F×4LÑ4LÑLÔMØ�
‰
Øœ6×3Ñ3Ñ3ô	5ð 	�
‰
Ð<¸t×?PÑ?PÑPÔQÜœ#˜d×4Ñ4°d·m±mÓDÐEˆØ.2ˆ�‰Ô+Ø�
‰
Ð/´%¸³/ÑAÔBØ�‰œ×0Ñ0´.ÔAà�
‰
Øô	ð 	×+Ñ+Ô-Ø×$Ñ$Ô&Ø�‰Õr3   c                 óÒ  — |j                  «        |j                  d¬«       |j                  «        |j                  t        j
                  t        «       |j                  d| j                  z  «       t        t        | j                  | j                  «      Ž }|j                  dt        |«      z  «       |j                  «        |j                  «        |j!                  «        y)zRe-raise a parallel exceptionTry  rF  r«
  N)rÈ	  r{  r¬
  rJ  r	   r­
  r   rS   r„
  r   rN  r†
  r®
  r·  r°
  rˆ  rË	  r±
  s      r4   Úrestore_parallel_exceptionz+ParallelStatNode.restore_parallel_exceptiong'  s¬   € à×ÑÔØ×Ñ¨TÐÔ2Ø×+Ñ+Ô-à×Ñœ×1Ñ1´>ÔBØ�
‰
Ð;¸d×>OÑ>OÑOÔPÜœ#˜dŸm™m¨T×-CÑ-CÓDÐEˆØ�
‰
Ð/´%¸³/ÑAÔBà×+Ñ+Ô-Ø×$Ñ$Ô&Ø�‰Õr3   c                 ól   — |j                  | j                  | j                  | j                  fz   «       y)z›
        Restore all old labels. Call this before the 'else' clause to for
        loops and always before ending the parallel control flow block.
        N)r’	  r�  r?	  r  r¸   s     r4   Úrestore_labelszParallelStatNode.restore_labelsv'  s8   € ð
 	×Ñ˜D×0Ñ0°D×4IÑ4IØ48×4HÑ4Hð4Jñ Jõ 	Kr3   c                 ó  — | j                   }d| _         d| _        | j                  �6| j                  j                  |«       | j                  j	                  |«       |j                  «       r|j                  d«       | j                  rç|j                  d| j                  z  «       |j                  d| j                  z  «       |j                  d«       |j                  dt        j                  › d�«       |j                  d«       |j                  d	t        j                  z  «       |j                  d
«       |j                  dt        j                  z  «       |j                  d«       |r| j                  }n| j                  }|�rÙ|j                  dt        j                  z  «       |j                  dt        j                  z  «       |j                  d	t        j                  z  «       | j                   D ].  \  }}}	|	j"                  rd|z  }|j                  |›d|›d�«       Œ0 |j                  dt        j                  z  «       |r,|j%                  d«       |j'                  |j(                  «       |r,|j%                  d«       |j'                  |j*                  «       |r,|j%                  d«       |j'                  |j,                  «       | j                  r\|j.                  j1                  t2        «       |j                  d«       | j5                  |«       |j'                  |j6                  «       |j                  d«       |j                  d«       |j9                  «        | j;                  |«       y)aÕ  
        This ends the parallel control flow block and based on how the parallel
        section was exited, takes the corresponding action. The break_ and
        continue_ parameters indicate whether these should be propagated
        outwards:

            for i in prange(...):
                with cython.parallel.parallel():
                    continue

        Here break should be trapped in the parallel block, and propagated to
        the for loop.
        NÚ$__Pyx_TurnOffSysMonitoringInParallelz*const char *%s = NULL; int %s = 0, %s = 0;z,PyObject *%s = NULL, *%s = NULL, *%s = NULL;z-#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADINGzPyMutex z = {0};r…  r‹  zg/* This may have been overridden by a continue, break or return in another thread. Prefer the error. */z%s = 4;rn  zint %s;rm	  rW  rF  rG  ræ  z    case 1: z    case 2: z    case 3: z    case 4:)r�
  rq
  rW
  r�  rL  r—  rS   rƒ
  r®
  r„
  r	   r…
  r­
  r‚
  r¡
  r�
  r¢
  r˜  r¡  rÐ  r  r  rÑ  r  rŒ  rÕ  r³
  rÏ  rË	  Ú"redef_builtin_expect_apple_gcc_bug)
rŽ   rX   Úbreak_Ú	continue_Úreturn_rÅ   r¡
  Ú
temp_cnameÚprivate_cnamerO	  s
             r4   Úend_parallel_control_flow_blockz0ParallelStatNode.end_parallel_control_flow_block~'  sÌ  € ð ×6Ñ6ˆØ59ˆÔ2ØAEˆÔ>à×ÑÐ'à×Ñ×3Ñ3°DÔ9Ø×Ñ×'Ñ'¨Ô-à�<‰<Œ>ð �G‰GÐ:Ô;ð × Ò Ø�G‰GÐ@À4×CYÑCYÑYÔZØ�G‰GÐBÀT×EVÑEVÑVÔWØ�G‰GÐCÔDØ�G‰G�hœv×BÑBÐCÀ9ÐMÔNØ�G‰G�HÔà�J‰JØœf×6Ñ6Ñ6ô8à�J‰Jð Qô Rà�J‰J�y¤6×#6Ñ#6Ñ6Ô7Ø�J‰JØôñ Ø!×0Ñ0‰Nà!×5Ñ5ˆNâà�G‰G�I¤× 3Ñ 3Ñ3Ô4Ø�G‰G�I¤× 3Ñ 3Ñ3Ô4à�J‰JØœf×1Ñ1Ñ1ô3ð 9=×8SÔ8SÑ4�
˜M¨9Ø×)Ò)à!BÀZÑ!O�JØ—
‘
ªº
ÐCÕDð	 9Tð �J‰J�¬×)<Ñ)<Ñ<Ô=ÙØ—‘˜Ô(Ø—‘˜d×1Ñ1Ô2áØ—‘˜Ô(Ø—‘˜d×.Ñ.Ô/áØ—‘˜Ô(Ø—‘˜d×/Ñ/Ô0à×$Ò$Ø× Ñ ×1Ñ1Ô2PÔQØ—
‘
˜=Ô)Ø×/Ñ/°Ô5Ø—‘˜d×.Ñ.Ô/à�J‰J�sŒOØ�J‰JØôð 	�‰ÔØ×/Ñ/°Õ5r3   z((defined(__APPLE__) || defined(__OSX__))zQ(defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))ri  rï  rh  c                 óT   — | j                   s|j                  | j                  «       yy)z]
        A bug on OS X Lion disallows __builtin_expect macros. This code avoids them
        N)ri
  Úundef_builtin_expectÚredef_conditionr¸   s     r4   r‘
  z3ParallelStatNode.undef_builtin_expect_apple_gcc_bugÞ'  s$   € ð �{Š{Ø×%Ñ% d×&:Ñ&:Õ;ð r3   c                 óT   — | j                   s|j                  | j                  «       y y r‡   )ri
  Úredef_builtin_expectrÁ
  r¸   s     r4   r¸
  z3ParallelStatNode.redef_builtin_expect_apple_gcc_bugå'  s"   € Ø�{Š{Ø×%Ñ% d×&:Ñ&:Õ;ð r3   c                 ó’   — t        ||«      D ]8  \  }}|€Œ	|j                  j                  sŒ t        |j                  d|z  «       Œ: y )Nz6%s may not be a Python object as we don't have the GIL)rN  rl  r~  r   r9   )rŽ   r¡   r-  Únodesrm   rW   s         r4   Ú_parameters_nogil_checkz(ParallelStatNode._parameters_nogil_checké'  sF   € Ü˜e UÖ+‰JˆD�$ØÑ D§I¡I×$9Ó$9Ü�d—h‘hð !;Ø=Añ!Bõ Cñ ,r3   )r2   r`  )FFF)5r,   r-   r.   r‚   r«   r¼   r`
  rŒ
  rƒ
  rW
  r_
  rX
  r	   r­
  Úparallel_exc_valueÚparallel_exc_tbr„
  Úparallel_filenameÚparallel_linenoÚparallel_clinenor®
  r©	  r§	  r¨	  r†
  Úcritical_section_counterrœ   r³   rw   rh
  rk
  rn
  rs
  ru
  ry
  r{
  rŠ
  r�
  r’
  r•
  rž
  r©
  r£
  r³
  rµ
  r¾
  Úbuggy_platform_macro_conditionÚhave_expect_conditionrÁ
  r‘
  r¸
  rÆ
  rr   rs   s   @r4   rV
  rV
  G%  sR  ø„ ñò< A€Kà€Dà€IØÐàÐà€KØ€IØÐð 	× Ñ Ø×!Ñ!Ø×Ñð€Lð 	× Ñ Ø×ÑØ×ÑðÐð 	×ÑØ×ÑØ×Ñð€Hð  !Ðô!ò"('òTò>=ò2CCòJò,
ò^ò9ò	)ó!>òFBò#6òJ	>ò3óB7Qòr.ò`òKð @EóX6ðv &PÐ"ð[Ñâ&DÒF[Ð\€Oò<ò<öCr3   rV
  c                   ó>   ‡ — e Zd ZdZddgZdZdZˆ fd„Zd„ Zd„ Z	ˆ xZ
S )ÚParallelWithBlockNodezI
    This node represents a 'with cython.parallel.parallel():' block
    rW
  r^
  Nc                 ój   •— t         ‰| �  |«       | j                  rt        | j                  d«       y y )Nz=cython.parallel.parallel() does not take positional arguments)rj   r³   rU   r   r9   r  s     €r4   r³   z*ParallelWithBlockNode.analyse_declarationsû'  s/   ø€ Ü‰Ñ$ SÔ)Ø�9Š9Ü�$—(‘(ð 3õ 4ð r3   c                 ó–  — | j                   �| j                   j                  |«       | j                  |«       | j                  |«       |j	                  d«       |j                  d«       | j                   �,|j                  d| j                   j                  «       z  «       | j                  rj| j                  D �cg c]$  }|j                  j                  s|j                  ‘Œ& }}|r/dj                  t        |«      «      }|j                  d|› d�«       |j                  «       | _        | j                  |«       |j	                  d«       |j	                  d«       |j!                  «        | j#                  |«       |j$                  j'                  «        | j(                  j+                  |«       | j-                  |«       | j/                  |«       | j1                  |«       |j3                  «        |j5                  |j6                  «      }|j5                  |j8                  «      }|j5                  |j:                  «      }| j=                  |«       | j?                  ||||¬	«       | j                   �6| j                   jA                  |«       | j                   jC                  |«       | jE                  |«       y c c}w )
Nr—
  z#pragma omp parallel zif(%s) rÈ   zfirstprivate(rh  rØ   r™
  )r¹
  rº
  r»
  )#rX
  r?  ry
  r’
  rS   r¡  r�   r[
  rl  r~  rÛ  rÊ   rw
  rO   r
  ru
  rÈ	  r•
  r$  Ústart_collecting_tempsr¼   r  r©
  rŠ
  rž
  rË	  rÎ  r  r  rÑ  rµ
  r¾
  r�  rL  r{
  )rŽ   rX   rŠ  r[
  Újoined_privatesrº
  r¹
  r»
  s           r4   r  z-ParallelWithBlockNode.generate_execution_code(  sC  € à×#Ñ#Ð/Ø×$Ñ$×=Ñ=¸dÔCà×%Ñ% dÔ+Ø×.Ñ.¨tÔ4à�
‰
Ð#Ô$Ø�‰Ð(Ô)à×#Ñ#Ð/Ø�H‰H�Y ×!9Ñ!9×!@Ñ!@Ó!BÑBÔCð �=Š=Ø)-¯ªó 3© AØ Ÿv™v×1Ò1ð Ÿ›¨ˆHð 3áØ"&§)¡)¬F°8Ó,<Ó"=�Ø—‘˜=¨Ð(9¸Ð;Ô<à-1×-AÑ-AÓ-CˆÔ*Ø×Ñ˜TÔ"Ø�
‰
�2Œà�
‰
Ð)Ô*à×ÑÔØ×!Ñ! $Ô'Ø�‰×-Ñ-Ô/Ø�	‰	×)Ñ)¨$Ô/Ø×Ñ Ô%Ø×Ñ˜TÔ"Ø×Ñ Ô%Ø�‰Ôà—O‘O D×$7Ñ$7Ó8ˆ	Ø—‘ ×!1Ñ!1Ó2ˆØ—/‘/ $×"3Ñ"3Ó4ˆà×Ñ˜DÔ!ð 	×,Ñ,¨T¸&Ø7@Ø5<ð 	-ô 	>ð ×#Ñ#Ð/Ø×$Ñ$×;Ñ;¸DÔAØ×$Ñ$×/Ñ/°Ô5à×%Ñ% dÕ+ùòI3s   Â>)Kc                 óB   — | j                  |dg| j                  g«       y )Nr^
  )rÆ
  rX
  r    s     r4   rù   z!ParallelWithBlockNode.nogil_check7(  s!   € Ø×$Ñ$ SÐ+;Ð*<¸t×?WÑ?WÐ>XÕYr3   )r,   r-   r.   r‚   rb
  rW
  rX
  r³   r  rù   rr   rs   s   @r4   rÐ
  rÐ
  ñ'  s2   ø„ ñð  -Ð.>Ð?Ðà€KØÐô4ò4,ölZr3   rÐ
  c                   ó–   ‡ — e Zd ZdZg d¢ZdxZxZxZZdxZ	xZ
ZdZdZdZg d¢Z G d„ de«      Zˆ fd„Zˆ fd	„Zˆ fd
„Zd„ Zd„ Zd„ Zˆ xZS )ÚParallelRangeNodezÌ
    This node represents a 'for i in cython.parallel.prange():' construct.

    target       NameNode       the target iteration variable
    else_clause  Node or None   the else clause of this loop
    )r¼   rO  r\  rU   rW
  r_
  rX
  NT)ÚschedulerÍ  rW
  r_
  r^
  c                   ó   — e Zd ZdgZy)ú#ParallelRangeNode.DummyIteratorNoderU   Nrº  r2   r3   r4   ÚDummyIteratorNoderÚ
  Q(  s	   „ Ø�h‰r3   rÛ
  c                 ój   •— t        ‰| �  |fi |¤Ž | j                  || j                  ¬«      | _        y )Nrz  )rj   rœ   rÛ
  rU   r¾  )rŽ   r9   rV   rN   s      €r4   rœ   zParallelRangeNode.__init__T(  s2   ø€ Ü‰Ñ˜Ñ% Ò%ð ×.Ñ.¨s¸¿¹Ð.ÓCˆ�r3   c                 ó|  •— t         ‰| �  |«       | j                  j                  |«       | j                  �| j                  j                  |«       | j
                  rt        | j
                  «      dkD  rt        | j                  d«       y t        | j
                  «      dk(  r| j
                  \  | _	        nQt        | j
                  «      dk(  r| j
                  \  | _
        | _	        n| j
                  \  | _
        | _	        | _        | j                  dvr$t        | j                  d| j                  ›�«       y y )NrÜ   z0Invalid number of positional arguments to pranger   r%   )NÚstaticÚdynamicÚguidedÚruntimez%Invalid schedule argument to prange: )rj   r³   rO  r‚  r\  rU   rK   r   r9   rk  rZ   rá  rØ
  r  s     €r4   r³   z&ParallelRangeNode.analyse_declarationsZ(  sç   ø€ Ü‰Ñ$ SÔ)Ø�‰×.Ñ.¨sÔ3Ø×ÑÐ'Ø×Ñ×1Ñ1°#Ô6à�yŠyœC §	¡	›N¨QÒ.Ü�$—(‘(ÐNÔOØäˆt�y‰y‹>˜QÒØŸ™‰JˆD�IÜ�—‘‹^˜qÒ Ø$(§I¡IÑ!ˆDŒJ˜�	à/3¯y©yÑ,ˆDŒJ˜œ	 4¤9à�=‰=Ð PÑPÜ�$—(’(ÈÏÊÐXÕYð Qr3   c                 óN	  •— |j                   }| j                   rd|_         | j                  €t        | j                  d«       | S | j                  j	                  |«      | _        | j                  j
                  j                  sm| j                  j
                  j                  s7t        | j                  j                  d| j                  j
                  z  «       t        j                  | _
        n| j                  j
                  | _
        d| _        | j                  | j                  | j                  f}t        || j                  «      D ]¢  \  }}|€Œ	|j!                  |«       |j
                  j                  st        |j                  d|z  «       ŒJ|j"                  s|j%                  |«      }t'        | ||«       t        j(                  | j                  |j
                  «      | _
        Œ¤ | j*                  � | j*                  j-                  |«      | _        t/        | j                  dd «      }|r9| j                  j                  d f| j0                  | j                  j2                  <   t4        ‰| �Y  |«      }|j6                  �r|j8                  s!t        |j6                  j                  d«       n¤|j8                  dk(  r!t        |j6                  j                  d	«       nt|j6                  j
                  j:                  rT|j6                  j"                  r>|j6                  j=                  |«      d
k  r t        |j6                  j                  d«       |j6                  j?                  t        j@                  |«      j%                  |«      |_        |j                   r||_         |jB                  xr |jB                  jD                  |_#        |jF                  rÂ|}|jB                  rE|jB                  jD                  r/|jB                  }|jB                  r|jB                  jD                  rŒ/|j0                  jI                  |j0                  «       |jJ                  jI                  |jJ                  «       |jL                  jO                  |jL                  «       |S )NTz/prange() can only be used as part of a for loopzMust be of numeric type, not %s)rZ   rk  rá  z%s argument must be numericr  z$Must provide schedule with chunksizerá
  z,Chunksize not valid for the schedule runtimer   zChunksize must not be negative)(rÍ  rO  r   r9   rx   rl  rq  r~  r
   rš  Ú
index_typer-  rZ   rk  rá  rN  rv   rð   rw  r�   rê  r\  rw   r¬   r�  r  rj   r_
  rØ
  r¡  r^  rç  r	  ri
  r`
  rŒ
  rš   r[
  r\
  ro	  )	rŽ   r¡   rÄ	  Ústart_stop_steprW   rm   rI  ri
  rN   s	           €r4   rw   z%ParallelRangeNode.analyse_expressionsn(  sc  ø€ Ø—I‘Iˆ	Ø�:Š:ØˆCŒIà�;‰;ÐÜ�$—(‘(ÐMÔNØˆKà—k‘k×6Ñ6°sÓ;ˆŒà�{‰{×Ñ×*Ò*ð —;‘;×#Ñ#×/Ò/ä�d—k‘k—o‘oØ7¸$¿+¹+×:JÑ:JÑJôLô )×:Ñ:ˆD�Oà"Ÿk™k×.Ñ.ˆDŒOð -ˆŒ
ØŸ*™* d§i¡i°·±Ð:ˆä˜o¨t¯z©zÖ:‰JˆD�$ØÑØ×"Ñ" 3Ô'Ø—y‘y×+Ò+Ü˜$Ÿ(™(Ð$AÀDÑ$HÔIØà—’Ø×.Ñ.¨sÓ3�DÜ˜D $¨Ô-ô #-×"@Ñ"@Ø—O‘O T§Y¡Yó#0�•ð ;ð  ×ÑÐ'Ø#×/Ñ/×CÑCÀCÓHˆDÔô ˜tŸ{™{¨G°TÓ:ˆÙØ26·+±+·/±/À4Ð2GˆD×Ñ˜TŸ[™[×.Ñ.Ñ/ä‰wÑ*¨3Ó/ˆà�>‹>Ø—=’=Ü�d—n‘n×(Ñ(Ø<õ>à—‘ )Ò+Ü�d—n‘n×(Ñ(ØDõFà—.‘.×%Ñ%×,Ò,Ø—.‘.×+Ò+Ø—.‘.×3Ñ3°CÓ8¸AÒ=Ü�d—n‘n×(Ñ(Ð*JÔKà!Ÿ^™^×5Ñ5Ü×%Ñ% só,ß,:©N¸3Ó,?ð ŒNð �:Š:Ø!ˆCŒIà $§¡Ò E°·±×0EÑ0EˆÔØ× Ò ØˆFØ—-’- F§M¡M×$;Ò$;ØŸ™�ð —-’- F§M¡M×$;Ó$;ð ×Ñ×%Ñ% d×&6Ñ&6Ô7Ø�O‰O×"Ñ" 4§=¡=Ô1Ø×!Ñ!×(Ñ(¨×)<Ñ)<Ô=Øˆr3   c                 ó    — d}| j                   | j                  | j                  | j                  | j                  f}| j                  |||«       y )N)rZ   rk  rá  rO  r^
  )rZ   rk  rá  rO  rX
  rÆ
  )rŽ   r¡   r-  rÅ
  s       r4   rù   zParallelRangeNode.nogil_checkÄ(  s?   € ØCˆØ—
‘
˜DŸI™I t§y¡y°$·+±+¸t×?WÑ?WÐWˆØ×$Ñ$ S¨%°Õ7r3   c                 ó„  — | j                  |«       | j                  j                  j                  }|| j                  j                  j                  «       dœ}| j                  | j                  | j                  f}d}t        || j                  |«      D ]N  \  }}}|€|}	n>|j                  r|j                  «       }	n!|j                  |«       |j                  «       }	|	||<   ŒP | j                  �| j                  j                  |«       |j                   j#                  | j$                  d«      |d<   |j                   j#                  | j$                  d«      |d<   | j                  �J| j                  j'                  «       r0| j                  j(                  dk(  rt+        j,                  d«       n8|d	   j/                  «       rt1        |d	   «      dk(  r|j3                  d
|z  «       | j5                  |«       |j6                  j9                  t;        j<                  dd«      «       |j3                  d|z  «       |j3                  d|z  «       |j?                  «        | jA                  ||«       |jC                  «        | jE                  |«       | jF                  rz| jH                  r"|jK                  dtL        jN                  z  «       |j?                  «        |j3                  d«       | jF                  jQ                  |«       |jC                  «        | jS                  |«       || jT                  | j                  fz   D ]'  }
|
€Œ|
jW                  |«       |
jY                  |«       Œ) |j                   j[                  |d   «       |j                   j[                  |d   «       | j]                  |«       y)a,  
        Generate code in the following steps

            1)  copy any closure variables determined thread-private
                into temporaries

            2)  allocate temps for start, stop and step

            3)  generate a loop that calculates the total number of steps,
                which then computes the target iteration variable for every step:

                    for i in prange(start, stop, step):
                        ...

                becomes

                    nsteps = (stop - start) / step;
                    i = start;

                    #pragma omp parallel for lastprivate(i)
                    for (temp = 0; temp < nsteps; temp++) {
                        i = start + step * temp;
                        ...
                    }

                Note that accumulation of 'i' would have a data dependency
                between iterations.

                Also, you can't do this

                    for (i = start; i < stop; i += step)
                        ...

                as the '<' operator should become '>' for descending loops.
                'for i from x < i < y:' does not suffer from this problem
                as the relational operator is known at compile time!

            4) release our temps and write back any private closure variables
        )rO  r=  )r¬  r¬  rò  NFrõ  Únstepsr   z!Iteration with step 0 is invalid.rá  zif (((%(step)s) == 0)) abort();ÚIncludeStdlibHrh	  zS%(nsteps)s = (%(stop)s - %(start)s + %(step)s - %(step)s/abs(%(step)s)) / %(step)s;zif (%(nsteps)s > 0)úif (%s < 2)z
/* else */)/ry
  rO  r  rÛ  rl  r.  rZ   rk  rá  rN  r-  rð   r¥  r?  r�   rX
  r$  r%  rã
  rë  r£  r   r9   Úisdigitr¤  rS   r’
  r  rŒ  r   r˜  rÈ	  Úgenerate_looprË	  rµ
  r\  r�
  r¡  r	   r‚
  r  r¾
  r_
  r�  rL  r-  r{
  )rŽ   rX   Útarget_index_cnameÚfmt_dicträ
  ÚdefaultsrW   rm   rZ  r�   r.  s              r4   r  z)ParallelRangeNode.generate_execution_codeÉ(  s  € ðP 	×%Ñ% dÔ+ð "Ÿ[™[×.Ñ.×4Ñ4Ðð
 )ØŸ;™;×+Ñ+×BÑBÓDñ
ˆð Ÿ*™* d§i¡i°·±Ð:ˆØ ˆÜ#& ¸¿
¹
ÀHÖ#MÑˆD�$˜Øˆ|Ø ‘Ø—’Ø×8Ñ8Ó:‘à×-Ñ-¨dÔ3ØŸ™›�à#ˆH�TŠNð $Nð ×#Ñ#Ð/Ø×$Ñ$×=Ñ=¸dÔCàŸ™×4Ñ4°T·_±_ÀeÓLˆ�‰Ø!Ÿ^™^×9Ñ9¸$¿/¹/È5ÓQˆ�Ñð �9‰9Ð  T§Y¡Y×%BÑ%BÔ%DÈÏÉ×IbÑIbÐfgÒIgÜ�$—(‘(Ð?Õ@Ø˜&Ñ!×)Ñ)Ô+¬s°8¸FÑ3CÓ/DÈÒ/IØ�J‰JÐ8¸8ÑCÔDà×.Ñ.¨tÔ4ð 	×Ñ×)Ñ)¬+×*AÑ*AÐBRÐTgÓ*hÔiØ�
‰
ÐhÐksÑsÔtð 	�
‰
Ð(¨8Ñ3Ô4Ø×ÑÔØ×Ñ˜4 Ô*Ø�‰Ôà×Ñ˜DÔ!à×ÒØ×'Ò'Ø—‘˜¬×)<Ñ)<Ñ<Ô=à×ÑÔØ�J‰J�|Ô$Ø×Ñ×4Ñ4°TÔ:Ø�N‰NÔð 	×,Ñ,¨TÔ2ð $ t§~¡~°t×7OÑ7OÐ&PÔPˆDØÑØ×+Ñ+¨DÔ1Ø—‘ Õ%ð Qð
 	�‰×#Ñ# H¨S¡MÔ2Ø�‰×#Ñ# H¨XÑ$6Ô7à×%Ñ% dÕ+r3   c                 ó~  — | j                   r|j                  d«       n|j                  d«       | j                  s=|j                  d«       |j	                  «       | _        | j                  j
                  }ní|j                  d«       | j                  �,|j                  d| j                  j                  «       z  «       |j	                  «       | _        | j
                  }|j                  d«       |j                  d«       |j                  «        | j                  |«       | j                   r|j                  d«       n|j                  d«       |j                  d«       t        | j                  j                  «       «      D ]Ç  \  }}|rm|dv ri|| j                  j                  k7  rP|j                   j"                  rt%        | j&                  d	«       ŒR|j                  d
|›d|j(                  ›d�«       Œu|j                   j"                  rŒŒ|j                  d|j(                  z  «       |j                  d|j(                  z  «       ŒÉ | j*                  rO| j,                  r d| j/                  || j,                  «      z  }nd}|j                  d| j*                  ›|›d�«       | j1                  |«       |j                  d«       |j                  d«       |j                  d|z  «       |j                  «        |j	                  «       }|j                  «        |j                  d|z  «       | j                  r&| j                   s|j2                  j5                  «        | j6                  j9                  |«       | j;                  |d¬«       | j                  r| j                   s| j=                  |«       | j>                  r"|j                  dt@        jB                  z  «       |jE                  «        |jE                  «        | j                  r"| jG                  |«       |jE                  «        y y )Nz#if 0r—
  z#pragma omp forz#pragma omp parallelz if(%s)rØ   r™
  z+*-&^|z#Python objects cannot be reductionsz reduction(rà   rh  r}
  z lastprivate(%s)z, %sz
 schedule(z,for (%(i)s = 0; %(i)s < %(nsteps)s; %(i)s++)z=%(target)s = (%(target_type)s)(%(start)s + %(step)s * %(i)s);T)r¤
  ré
  )$rŒ
  rS   rg
  r¡  rO   r
  ri
  rX
  r�   rÈ	  r•
  rw
  r[
  ri   rO  r  rl  r~  r   r9   rÛ  rØ
  r_
  rs
  ru
  r$  rÓ
  r¼   r  r©
  rŠ
  r�
  r	   r‚
  rË	  rž
  )rŽ   rX   rí
  Úreduction_codepointr  r|  r_
  Úguard_around_body_codepoints           r4   rë
  zParallelRangeNode.generate_loopC)  s?  € Ø× Ò Ø�J‰J�wÕà�J‰JÐ'Ô(à×ÒØ�H‰HÐ&Ô'Ø15×1EÑ1EÓ1GˆDÔ.Ø"&§+¡+×"KÑ"KÑà�H‰HÐ+Ô,à×'Ñ'Ð3Ø—‘˜ T×%=Ñ%=×%DÑ%DÓ%FÑFÔGà15×1EÑ1EÓ1GˆDÔ.Ø"&×"DÑ"DÐØ�J‰J�rŒNØ�J‰JÐ-Ô.à×ÑÔð ×%Ñ% dÔ+à×$Ò$Ø—
‘
˜7Õ#à—
‘
Ð+Ô,Ø�H‰HÐ&Ô'ä §¡× 3Ñ 3Ó 5Ö6‰IˆE�2á�b˜H‘n¨°$·+±+×2CÑ2CÒ)CØ—:‘:×)Ò)Ü˜$Ÿ(™(Ð$IÕJð (×+Ò+Ú79¸5¿;»;Ð GõIð —z‘z×-Ó-Ø—H‘HÐ0°5·;±;Ñ>Ô?Ø—H‘HÐ/°%·+±+Ñ=Õ>ð 7ð �=Š=Ø�~Š~Ø" T×%?Ñ%?ÀÀdÇnÁnÓ%UÑU‘	à�	à�HŠH¨$¯-ª-ºÐCÔDà×ÑÐ0Ô1à�
‰
�2ŒØ�
‰
Ð)Ô*à�‰Ð?À(ÑJÔKØ×ÑÔà&*×&:Ñ&:Ó&<Ð#ð 	×ÑÔà�
‰
ÐRÐU]Ñ]Ô^à×Ò D×$9Ò$9à�N‰N×1Ñ1Ô3à�	‰	×)Ñ)¨$Ô/Ø×Ñ °4ÐÔ8Ø×Ò D×$9Ò$9à× Ñ  Ô&à×#Ò#ð (×-Ñ-¨m¼f×>QÑ>QÑ.QÔRà�‰ÔØ�‰Ôà×Òà×#Ñ# DÔ)Ø�N‰NÕð r3   )r,   r-   r.   r‚   r«   r¼   rO  r\  rU   rZ   rk  rá  r`
  rÍ  rØ
  rb
  r˜   rÛ
  rœ   r³   rw   rù   r  rë
  rr   rs   s   @r4   r×
  r×
  ;(  sz   ø„ ñò7€Kð *.Ð-€DÐ-ˆ6Ð-�K $àÐ€EÐˆD�4à€Ià€EØ€HâaÐô˜Dô ôDôZô(Tòl8ò
x,öt\r3   r×
  c                   ó4   — e Zd ZdZdgZd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚCnameDecoratorNodea?  
    This node is for the cname decorator in CythonUtilityCode:

        @cname('the_cname')
        cdef func(...):
            ...

    In case of a cdef class the cname specifies the objstruct_cname.

    node        the node to which the cname decorator is applied
    cname       the cname the node should get
    rW   c                 ó  — | j                   j                  |«       | j                   }t        |t        «      r|j                  j
                  d   }t        |t        t        f«      | _        t        |t        t        f«      }|j                  }| j                  rf| j                  |_        | j                  |_        d|_        |j                  r0d|j                  v r!| j!                  |j                  «      |_        y y y |r#| j                  x|_        |j"                  _        y |j$                  }| j                  |_        | j                  dz   |j"                  _        t(        j*                  | j                  z   |j"                  _        | j                  dz   |j"                  _        |j"                  j.                  |j"                  j$                  _        |j"                  j.                  |j2                  _        | j                  dz   |_        |j6                  j9                  «       D ]^  \  }}|j                  r | j!                  |j                  «      |_        |j                  sŒ?| j!                  |j                  «      |_        Œ` y )Nr   TrH   Ú_objÚ_typer½  )rW   r³   rL   rü   r¼   r!  r@  r=  Úis_functionrå  r  r  rÛ  r‹  r  r  r
  rl  r  rŸ  r	   Útypeobj_prefixr   r¶  r‘  r`  r  r  ri   )rŽ   r¡   rW   Úis_struct_or_enumrŠ  r  rm   r  s           r4   r³   z'CnameDecoratorNode.analyse_declarations²)  sÉ  € Ø�	‰	×&Ñ& sÔ+à�y‰yˆÜ�dÔ2Ô3Ø—9‘9—?‘? 1Ñ%ˆDä% d¬[¼+Ð,FÓGˆÔÜ& tÔ.CÄ\Ð-RÓSÐØ�J‰Jˆà×ÒØ—j‘jˆAŒGØŸ:™:ˆAŒLØˆAŒFØ�~Š~ #¨¯©Ñ"7Ø!%§¡¨Q¯^©^Ó!<�•ð #8ˆ~áØ%)§Z¡ZÐ/ˆAŒG�a—f‘f•là—J‘JˆEà—j‘jˆAŒGØ%)§Z¡Z°&Ñ%8ˆA�F‰FÔ"Ü#)×#8Ñ#8¸4¿:¹:Ñ#EˆA�F‰FÔ Ø#'§:¡:°Ñ#7ˆA�F‰FÔ Ø+,¯6©6×+?Ñ+?ˆA�F‰F�L‰LÔ(à"#§&¡&×"6Ñ"6ˆA�M‰MÔà!%§¡¨cÑ!1ˆEÔà$Ÿ}™}×2Ñ2Ö4‘��eØ×#Ò#Ø'+§{¡{°5·;±;Ó'?�EÔ$Ø×%Ó%Ø)-¯©°U×5GÑ5GÓ)H�EÕ&ñ	  5r3   c                 óT   — d|v r|j                  d«      d   }| j                  ›d|›�S )NrH   rÝ   r½  )r£  rÛ  )rŽ   rÛ  s     r4   r
  zCnameDecoratorNode.mangleØ)  s+   € Ø�%‰<à—K‘K Ó$ RÑ(ˆEØŸ*›*¡eÐ,Ð,r3   c                 óF   — | j                   j                  |«      | _         | S r‡   )rW   rw   r    s     r4   rw   z&CnameDecoratorNode.analyse_expressionsÞ)  r  r3   c                 óÂ  — | j                   r·|j                  r«|j                  d   }t        | j                  t
        «      r| j                  j                  |dd¬«       ncddlm} | j                  j                  }|j                  }|j                  |_
        |j                  ||j                  «       |d¬«       ||_
        | j                  j                  ||«       y)	z=Ensure a prototype for every @cname method in the right placeÚutility_code_protoFTrd  r   )Ú
ModuleNode)Ú
definitionN)r÷
  rÙ  r  rL   rW   r_  r   rØ   rþ
  r  rÛ  r‹  Úgenerate_cfunction_declarationr  r  )rŽ   r¡   rX   Úh_coderþ
  r  rÛ  s          r4   r  z0CnameDecoratorNode.generate_function_definitionsâ)  s¾   € à×Ò × 4Ò 4à×%Ñ%Ð&:Ñ;ˆFä˜$Ÿ)™)¤WÔ-Ø—	‘	×2Ñ2Ø¨5¸Tð 3õ Cõ )ØŸ	™	Ÿ™�ØŸ™�Ø#×.Ñ.�”à×9Ñ9ØØ×$Ñ$Ó&ØØ#ð	 :ô %ð $�”à�	‰	×/Ñ/°°TÕ:r3   c                 ó:   — | j                   j                  |«       y r‡   )rW   r  r¸   s     r4   r  z*CnameDecoratorNode.generate_execution_codeû)  r  r3   N)
r,   r-   r.   r‚   r«   r³   r
  rw   r  r  r2   r3   r4   ró
  ró
  ¢)  s+   „ ñð �(€Kò$IòL-òò;ó20r3   ró
  c                   ó   — e Zd ZdZg Zy)Ú	ErrorNodezÜ
    Node type for things that we want to get through the parser
    (especially for things that are being scanned in "tentative_scan"
    blocks), but should immediately raise and error afterwards.

    what    str
    N)r,   r-   r.   r‚   r«   r2   r3   r4   r  r  ÿ)  s   „ ñð �Kr3   r  aC  
/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
z1
#define likely(x)   (x)
#define unlikely(x) (x)
ÚPrintz
Printing.cÚPrintOnerf	  rH  ÚRaiseExceptionÚGetExceptionÚSwapExceptionÚSaveResetExceptionÚAddTracebackr2   )®r1
  rê  rd  r   Ú	itertoolsr   ÚenumrØ   r   ÚErrorsr   r   r   r   r   r	   r
   r   r   r   r.  r   r   r   r   r   r   r   r   r   r   r   rg   r   ÚStringEncodingr   r   r    r!   ÚPythranr"   r#   r$   ÚUtilsr&   r'   rÐ  ÚIntEnumr+   r:   rD   r_   rl  ra   ru   r…   r–   r˜   rü   r»   r   r4  r9  rR  rY  rt  r‚  r†  rŽ  r’  r¯  r  r  r[  r8  rb  ry  r‘  r0  r»  r¿  rÅ  rË  r=  rå  rñ  r  r0  r:  r@  r  r·  r^  r_  r×  r   r  r  r  r  re  rY  r]  r|  r  r   r+  r3  rH  rJ  rY  r±  rS  rË  râ  rî  rø  r=  r  r	  r  rp  r&  rC  rO  rZ  ri  rq  r|  r…  r‡  r‘  rµ  rÃ  rÅ  rÁ  rÀ  rÂ  r	  r	  r%	  rU	  r�	  r¯	  r±	  r™	  rÒ	  rÕ	  rÛ	  r	  rö	  r
  r 
  r
  r
  r+
  rB
  rT
  rV
  rÐ
  r×
  ró
  r  Úgcc_branch_hintsÚbranch_prediction_macrosr˜  ræ  rè  rÕ  r;  rr	  r¦	  r;	  Útraceback_utility_coder2   r3   r4   Ú<module>r     sÙ  ðó à €‡�ó "‘&ð "™vð "©Vð "Ùð"Ù%+ð"Ù5;ð"ÙDJð"ÙW]ð"á$ð"á28ð"áEKð"áZ`ð"ñ #)ð"ñ 8>ð"ñ $ð	"ñ 28ð	"ñ HNð	"ñ
 !ñ"ó Ý Û å ß QÕ QÝ Ý Ý ß 2÷:÷ :÷ :ñ :õ Ý )Ý Ý Ý ß DÑ Dß 0ð -Ð.AÐBÐ ô�—‘ô ò6òò4ô4
8˜ô 
8ô8�Tô 8÷4ñ ò(ð ÷lWð lWó ðlWô^2*˜Tô 2*÷j:ñ :ô" �4ô " ôJ%ˆtô %ô*%!�Xô %!ôP�dô ô2 ˜/ô  ôFi˜ô iô$- Oô -ôiÐ<ô iôiÐ'Dô iô0k˜?ô 0kôfqM˜/ô qMôh
f˜?ô 
fôm!�4ô m!ô`	!�Dô 	!ô˜Dô ôe˜-ô eôN"
˜mô "
ôJ˜-ô ô,B˜ô BôJ	˜=ô 	ô˜ô ô$$;�Mô $;ôNZ˜}ô ZôpH�(ô pHôf*˜Hô *ôZZ!Ð(¨)ô Z!ôzX*�8ô X*ôv(6�xô (6ôV�8ô ôBk.�(˜Iô k.ô\A�;ô AôH<�Dô <ô �Dô  ôK	ˆkô K	ô\Q*�[ô Q*ôh8<�wô 8<ôvÐ#ô ô
!˜<ô !ô
�<ô ô
M ˜7ô M ô`{˜ô {ô|	�8˜Yô 	ôr!�\ô r!ôje	%�Lô e	%ôP!�8ô !ô8#!�Hô #!ôL�ô ô$�8ô ô$=!�8ô =!ô@",�Xô ",ôJH ˜>ô H ôV
h ˜^ô h ôV/ ˜^ô / ôdDQ˜Nô DQôN@&�Hô @&ôF&�8ô &ôR5�(ô 5ôp
$�8ô 
$ô4�lô 4ô,�Hô ,ô +�xô +ô l&�Xô l&ô^@&�Hô @&ôF.�hô .ô>/&�Xô /&ôd-,�ô -,ô`&!�4ô &!ôR!!�Xô !!ôH,,�Xô ,,÷^	ñ 	ô9,�H˜hô 9,ôxY˜Dô Yôx9 ˜4ô 9 òx*ô`!�X˜xô `!ôF,�Nô ,ô?�~ô ?ô(m,�h ô m,ô`f�8ô fôR  >ô  ôBh,˜ô h,ôVU!�tô U!ôpQ+˜ô Q+ôhÐ0ô ôUÐ)ô Uôp]�(ô ]ô84�Kô 4ôn=Ð0ô n=ôb
˜hô 
ôIÐ+ô IôXc˜Ð#:ô còSñ bÙaØ6ñÐ òô2*,�hô *,ôZQ,˜(ô Q,ôhZ%˜ô Z%ôz�4ô ôf
C�x ô f
CôTGZÐ,ô GZõTdÐ(ô döNZ0˜ô Z0öz�ô ð" ×Óñ
 Ññ Ðð 0˜×/Ò/±¹ÓFÐ Ø3˜K×3Ò3±JÁÓMÐ ð "9 ×!8Ò!8Ñ9LÉnÓ!]Ð Ø,�[×,Ò,Ñ-=¹~ÓNÐ Ø4˜[×4Ò4±^Á^ÓTÐ Ø5˜k×5Ò5±oÁ~ÓVÐ Ø6˜{×6Ò6Ñ7KÉ^Ó\Ð Ø0˜×0Ò0±ÁÓPÑ r3   