Ë
    Ç[;j¾Î  ã                   ó®  — d dl Z  e j                  eeeeeeeeeeee¬«       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 dd
lmZmZmZ  G d„ dej                   «      Z eej$                  «      Z G d„ d«      Z G d„ de«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ d e«      Z G d!„ d"«      Z G d#„ d$«      Z G d%„ d&«      Z  G d'„ d(e!«      Z" G d)„ d*«      Z# G d+„ d,«      Z$ G d-„ d.«      Z%e jL                  d/ed0e'fd1„«       Z( G d2„ d3e
«      Z) G d4„ d5e«      Z*y)6é    N)Ú
PyrexTypesÚ	ExprNodesÚNodesÚBuiltinÚOptionsÚTreeVisitorÚCythonTransformÚInternalErrorÚerrorÚwarningÚfake_rhs_exprÚTypedExprNodeé   )r   )r   )r   )r   )r   )r   r	   )r   r   r
   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )r   c                 ó@   •— t         ‰| �  |«       || _        || _        y ©N)ÚsuperÚ__init__ÚtypeÚ_may_be_none)Úselfr   Úmay_be_noneÚposÚ	__class__s       €údG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Compiler/FlowControl.pyr   zTypedExprNode.__init__   s   ø€ Ü‰Ñ˜ÔØˆŒ	Ø'ˆÕó    c                 ó    — | j                   dk7  S ©NF)r   ©r   s    r   r   zTypedExprNode.may_be_none   s   € Ø× Ñ  EÑ)Ð)r   ©NN)Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__©r   s   @r   r   r      s   ø„ õ(ö
*r   r   c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdd„Zy)	ÚControlBlocka¢  Control flow graph node. Sequence of assignments and name references.

       children  set of children nodes
       parents   set of parent nodes
       positions set of position markers

       stats     list of block statements
       gen       dict of assignments generated by this block
       bounded   set  of entries that are definitely bounded in this block

       Example:

        a = 1
        b = a + c # 'c' is already bounded or exception here

        stats = [Assignment(a), NameReference(a), NameReference(c),
                     Assignment(b)]
        gen = {Entry(a): Assignment(a), Entry(b): Assignment(b)}
        bounded = {Entry(a), Entry(c)}

    c                 óÞ   — t        «       | _        t        «       | _        t        «       | _        g | _        i | _        t        «       | _        d| _        d| _        d| _	        d| _
        d| _        y ©Nr   )ÚsetÚchildrenÚparentsÚ	positionsÚstatsÚgenÚboundedÚi_inputÚi_outputÚi_genÚi_killÚi_stater   s    r   r   zControlBlock.__init__9   sW   € Ü›ˆŒÜ“uˆŒÜ›ˆŒàˆŒ
ØˆŒÜ“uˆŒàˆŒØˆŒØˆŒ
ØˆŒØˆ�r   c                 ó:   — | j                    xr | j                   S r   )r.   r-   r   s    r   ÚemptyzControlBlock.emptyH   s   € Ø—J‘J�Ò5 t§~¡~Ð#5Ð6r   c                 ó  — | j                   D ]  }|j                  j                  | «       Œ | j                  D ]  }|j                   j                  | «       Œ | j                  j                  «        | j                   j                  «        y)z'Detach block from parents and children.N)r+   r,   ÚremoveÚclear)r   ÚchildÚparents      r   ÚdetachzControlBlock.detachK   sb   € à—]”]ˆEØ�M‰M× Ñ  Õ&ð #à—l”lˆFØ�O‰O×"Ñ" 4Õ(ð #à�‰×ÑÔØ�‰×ÑÕr   c                 óp   — | j                   j                  |«       |j                  j                  | «       y r   )r+   Úaddr,   ©r   Úblocks     r   Ú	add_childzControlBlock.add_childT   s&   € Ø�‰×Ñ˜%Ô Ø�‰×Ñ˜$Õr   Nc                 ó  — |€
t        «       }t        d|z  › | › d| |v rdnd› �«       | |v ry | j                  D ]  }t        d|dz   z  › d|› �«       Œ |j                  | «       | j                  D ]  }|j                  |dz   |«       Œ y )NÚ Ú*Ú r   Ú-)r*   Úprintr.   r?   r+   )r   ÚlevelÚseenÚstatr;   s        r   rH   zControlBlock.printX   s�   € Øˆ<Ü“5ˆDÜ��U‘�˜D˜6 ¨$°$©,¡3¸BÐ"?Ð@ÔAØ�4‰<ØØ—J”JˆDÜ�S˜% ™'‘]�O 1 T FÐ+Õ,ð à�‰�ŒØ—]”]ˆEØ�K‰K˜˜a™ Õ&ñ #r   )r   N)	r!   r"   r#   Ú__doc__r   r7   r=   rB   rH   © r   r   r'   r'   "   s    „ ñò,ò7òò ô
'r   r'   c                   ó   — e Zd ZdZd„ Zy)Ú	ExitBlockzNon-empty exit point block.c                  ó   — yr   rM   r   s    r   r7   zExitBlock.emptyh   s   € Ør   N)r!   r"   r#   rL   r7   rM   r   r   rO   rO   e   s
   „ Ù%ór   rO   c                   ó   — e Zd Zd„ Zy)ÚAssignmentListc                 ó   — g | _         y r   )r.   r   s    r   r   zAssignmentList.__init__m   s	   € Øˆ�
r   N©r!   r"   r#   r   rM   r   r   rR   rR   l   s   „ ór   rR   c                   ój   — e Zd ZdZd„ Zdd„Zd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y)ÚControlFlowaÈ  Control-flow graph.

       entry_point ControlBlock entry point for this graph
       exit_point  ControlBlock normal exit point
       block       ControlBlock current block
       blocks      set    children nodes
       entries     set    tracked entries
       loops       list   stack for loop descriptors
       exceptions  list   stack for exception descriptors
       in_try_block  int  track if we're in a try...except or try...finally block
    c                 ó  — t        «       | _        t        «       | _        g | _        g | _        t        «       | _        t        «       | _        | j                  j                  | j                  «       | j                  | _
        d| _        y r)   )r*   ÚblocksÚentriesÚloopsÚ
exceptionsr'   Úentry_pointrO   Ú
exit_pointr?   rA   Úin_try_blockr   s    r   r   zControlFlow.__init__~   s^   € Ü“eˆŒÜ“uˆŒØˆŒ
ØˆŒä'›>ˆÔÜ#›+ˆŒØ�‰�‰˜Ÿ™Ô(Ø×%Ñ%ˆŒ
ØˆÕr   Nc                 óv   — t        «       }| j                  j                  |«       |r|j                  |«       |S )zoCreate floating block linked to `parent` if given.

           NOTE: Block is NOT added to self.blocks
        )r'   rX   r?   rB   ©r   r<   rA   s      r   ÚnewblockzControlFlow.newblockŠ   s1   € ô
 “ˆØ�‰�‰˜ÔÙØ×Ñ˜UÔ#Øˆr   c                 óè   — t        «       }| j                  j                  |«       |r|j                  |«       n'| j                  r| j                  j                  |«       || _        | j                  S )z|Create block children block linked to current or `parent` if given.

           NOTE: Block is added to self.blocks
        )r'   rX   r?   rB   rA   r`   s      r   Ú	nextblockzControlFlow.nextblock•   sV   € ô
 “ˆØ�‰�‰˜ÔÙØ×Ñ˜UÕ#Ø�ZŠZØ�J‰J× Ñ  Ô'ØˆŒ
Ø�z‰zÐr   c                 óÀ   — |j                   ry|j                  xsD |j                  xs6 |j                  xs( |j                  xs |j
                  xs |j                  S r   )Úis_anonymousÚis_localÚis_pyclass_attrÚis_argÚfrom_closureÚ
in_closureÚerror_on_uninitialized©r   Úentrys     r   Ú
is_trackedzControlFlow.is_tracked£   s\   € Ø×ÒØØ—‘ò - %×"7Ñ"7ò -¸5¿<¹<ò -Ø×"Ñ"ò-Ø&+×&6Ñ&6ò-à×,Ñ,ð	.r   c                 ó*  — |j                   r‡|j                  r{|j                  j                  sd|j                  j                  sN|j                  j
                  s8|j                  j                  s"|j                  j                  r|j                  syy©NTF)	rf   Úis_variabler   Úis_struct_or_unionÚ
is_complexÚis_arrayÚis_cython_lock_typeÚis_cpp_classÚis_cpp_optionalrl   s     r   Úis_statically_assignedz"ControlFlow.is_statically_assignedª   s`   € Ø�NŠN˜u×0Ò0Ø—‘×.Ò.Ø—‘×&Ò&Ø—‘×$Ò$Ø—‘×/Ò/Ø—*‘*×)Ò)°%×2GÒ2GàØr   c                 ó‚   — | j                   r3| j                   j                  j                  |j                  dd «       yy)z0Mark position, will be used to draw graph nodes.Né   )rA   r-   r?   r   ©r   Únodes     r   Úmark_positionzControlFlow.mark_positionµ   s0   € à�:Š:Ø�J‰J× Ñ ×$Ñ$ T§X¡X¨b¨q \Õ2ð r   c                 ó  — | j                   r{| j                  |«      rit        ||||¬«      }| j                   j                  j	                  |«       || j                   j
                  |<   | j                  j                  |«       y y y )N©Ú	rhs_scope)rA   rn   ÚNameAssignmentr.   Úappendr/   rY   r?   )r   ÚlhsÚrhsrm   r€   Ú
assignments         r   Úmark_assignmentzControlFlow.mark_assignmentº   sg   € Ø�:Š:˜$Ÿ/™/¨%Ô0Ü'¨¨S°%À9ÔMˆJØ�J‰J×Ñ×#Ñ# JÔ/Ø$.ˆD�J‰J�N‰N˜5Ñ!Ø�L‰L×Ñ˜UÕ#ð	 1ˆ:r   c                 ó  — | j                   ry| j                  |«      rgt        |||«      }| j                   j                  j	                  |«       || j                   j
                  |<   | j                  j                  |«       y y y r   )rA   rn   ÚArgumentr.   r‚   r/   rY   r?   )r   rƒ   r„   rm   r…   s        r   Úmark_argumentzControlFlow.mark_argumentÁ   se   € Ø�:Š:˜$Ÿ/™/¨%Ô0Ü! # s¨EÓ2ˆJØ�J‰J×Ñ×#Ñ# JÔ/Ø$.ˆD�J‰J�N‰N˜5Ñ!Ø�L‰L×Ñ˜UÕ#ð	 1ˆ:r   c                 ó  — | j                   r|| j                  |«      rjt        ||«      }| j                   j                  j	                  |«       t
        | j                   j                  |<   | j                  j                  |«       y y y r   )	rA   rn   ÚNameDeletionr.   r‚   ÚUninitializedr/   rY   r?   )r   r|   rm   r…   s       r   Úmark_deletionzControlFlow.mark_deletionÈ   sc   € Ø�:Š:˜$Ÿ/™/¨%Ô0Ü% d¨EÓ2ˆJØ�J‰J×Ñ×#Ñ# JÔ/Ü$1ˆD�J‰J�N‰N˜5Ñ!Ø�L‰L×Ñ˜UÕ#ð	 1ˆ:r   c                 óÖ   — | j                   r]| j                  |«      rK| j                   j                  j                  t	        ||«      «       | j
                  j                  |«       y y y r   )rA   rn   r.   r‚   ÚNameReferencerY   r?   ©r   r|   rm   s      r   Úmark_referencezControlFlow.mark_referenceÏ   sN   € Ø�:Š:˜$Ÿ/™/¨%Ô0Ø�J‰J×Ñ×#Ñ#¤M°$¸Ó$>Ô?ð �L‰L×Ñ˜UÕ#ð 1ˆ:r   c                 óP  — | j                   h}t        «       }|rK|j                  «       }|j                  |«       |j                  D ]  }||vsŒ|j                  |«       Œ |rŒK| j
                  |z
  }|D ]  }|j                  «        Œ |j                  | j                   «       |D ]g  }|j                  «       sŒ|j                  D ]$  }|j                  D ]  }|j                  |«       Œ Œ& |j                  «        |j                  |«       Œi | xj
                  |z  c_        y)z%Delete unreachable and orphan blocks.N)r\   r*   Úpopr?   r+   rX   r=   r9   r7   r,   rB   )r   ÚqueueÚvisitedÚrootr;   ÚunreachablerA   r<   s           r   Ú	normalizezControlFlow.normalizeÙ   sõ   € à×!Ñ!Ð"ˆÜ“%ˆÙØ—9‘9“;ˆDØ�K‰K˜ÔØŸœ�Ø Ò'Ø—I‘I˜eÕ$ð 'ò ð  Ÿ;™;¨Ñ0ˆã ˆEØ�L‰L�Nð !ð 	�‰�t×'Ñ'Ô(ó ˆEØ�{‰{�}Ø#Ÿmœm�FØ!&§¤˜Ø×(Ñ(¨Õ/ñ "0ð ,ð —‘”Ø—‘ Õ&ð ð 	�Š�{Ñ"Žr   c                 óf  — i | _         d}| j                  D ].  }t        «       }|x|_        |_        || j                   |<   |dz  }Œ0 | j
                  D ]y  }|j                  D ]h  }t        |t        «      sŒ||_        | j                   |j                     }|j                  j                  |«       |xj                  |z  c_        |dz  }Œj Œ{ | j
                  D ]ç  }|j                  j                  «       D ]z  \  }}| j                   |   }|t        u r |xj                  |j                  z  c_        n|xj                  |j                  z  c_        |xj                  |j                  z  c_        Œ| |j                  |_        |j"                  D ].  }|xj                  | j                   |   j                  z  c_        Œ0 Œé | j                   j%                  «       D ]+  }| j&                  xj                  |j                  z  c_        Œ- | j&                  j                  | j&                  _        y)z+Set initial state, map assignments to bits.r   N)ÚassmtsrY   rR   ÚmaskÚbitrX   r.   Ú
isinstancer�   rm   r‚   r/   ÚitemsrŒ   r3   r4   r2   r0   Úvaluesr\   )r   rœ   rm   rš   rA   rK   s         r   Ú
initializezControlFlow.initializeõ   s°  € àˆŒð ˆØ—\”\ˆEÜ#Ó%ˆFØ'*Ð*ˆFŒK˜&œ*Ø!'ˆD�K‰K˜ÑØ�A‰I‰Cð	 "ð —[”[ˆEØŸœ�Ü˜d¤NÕ3Ø"�D”HØ!Ÿ[™[¨¯©Ñ4�FØ—L‘L×'Ñ'¨Ô-Ø—K’K 3Ñ&•KØ˜A‘I‘Cñ $ð !ð —[”[ˆEØ$Ÿy™yŸ™Ö0‘��tØŸ™ UÑ+�Øœ=Ñ(Ø—K’K 6§:¡:Ñ-–Kà—K’K 4§8¡8Ñ+•KØ—’ §¡Ñ+–ð  1ð #Ÿ[™[ˆEŒNØŸœ�Ø—’ §¡¨EÑ 2× 6Ñ 6Ñ6–ñ 'ð !ð —k‘k×(Ñ(Ö*ˆFØ×Ñ×"Ò" f§j¡jÑ0Ö"ð +à$(×$4Ñ$4×$:Ñ$:ˆ×ÑÕ!r   c                 ó€  — t        «       }| j                  |   }||j                  z  rc| j                  |«      r|j	                  t        |«      «       n7|j                  r|j	                  t        «       n|j	                  t        «       |j                  D ]#  }||j                  z  sŒ|j	                  |«       Œ% |S r   )
r*   rš   rœ   rx   r?   ÚStaticAssignmentri   ÚUnknownrŒ   r.   )r   Úistaterm   Úretrš   Úassmts         r   Úmap_onezControlFlow.map_one  s’   € Ü‹eˆØ!%§¡¨UÑ!3ˆØ�F—J‘JÒØ×*Ñ*¨5Ô1Ø—‘Ô(¨Ó/Õ0Ø×#Ò#Ø—‘œÕ à—‘œÔ&ð —\”\ˆEØ˜Ÿ	™	Ó!Ø—‘˜•ð "ð ˆ
r   c                 óö   — d}|rud}| j                   D ]`  }d}|j                  D ]  }||j                  z  }Œ ||j                   z  |j                  z  }||j                  k7  rd}||_        ||_        Œb |rŒtyy)z(Per-block reaching definitions analysis.TFr   N)rX   r,   r2   r4   r3   r1   )r   ÚdirtyrA   r1   r<   r2   s         r   Úreaching_definitionsz ControlFlow.reaching_definitions,  s}   € ð
 ˆÙØˆEØŸœ�Ø�Ø#Ÿmœm�FØ˜vŸ™Ñ.‘Gð ,à# u§|¡| mÑ3°u·{±{ÑB�Ø˜uŸ~™~Ò-Ø �EØ '�”Ø!)�•ð %ô r   r   )r!   r"   r#   rL   r   ra   rc   rn   rx   r}   r†   r‰   r�   r‘   r˜   r    r§   rª   rM   r   r   rV   rV   q   sN   „ ñ
ò
ó	óò.ò	ò3ó
$ò$ò$ò$ò#ò8$;òLó"*r   rV   c                   ó   — e Zd Zd„ Zy)Ú	LoopDescrc                 ó.   — || _         || _        g | _        y r   )Ú
next_blockÚ
loop_blockr[   )r   r®   r¯   s      r   r   zLoopDescr.__init__@  s   € Ø$ˆŒØ$ˆŒØˆ�r   NrT   rM   r   r   r¬   r¬   ?  s   „ ór   r¬   c                   ó   — e Zd ZdZdd„Zy)ÚExceptionDescrzßException handling helper.

    entry_point   ControlBlock Exception handling entry point
    finally_enter ControlBlock Normal finally clause entry point
    finally_exit  ControlBlock Normal finally clause exit point
    Nc                 ó.   — || _         || _        || _        y r   )r\   Úfinally_enterÚfinally_exit)r   r\   r³   r´   s       r   r   zExceptionDescr.__init__N  s   € Ø&ˆÔØ*ˆÔØ(ˆÕr   r    )r!   r"   r#   rL   r   rM   r   r   r±   r±   F  s   „ ñô)r   r±   c                   ó6   — e Zd Zdd„Zd„ Zd„ Zd„ Zed„ «       Zy)r�   Nc                 óÜ   — |j                   €t        «       |_         || _        || _        || _        |j
                  | _        t        «       | _        d| _        d| _        d | _	        || _
        y r   )Úcf_stater*   rƒ   r„   rm   r   Úrefsrh   Úis_deletionÚinferred_typer€   )r   rƒ   r„   rm   r€   s        r   r   zNameAssignment.__init__U  s^   € Ø�<‰<ÐÜ›5ˆCŒLØˆŒØˆŒØˆŒ
Ø—7‘7ˆŒÜ“EˆŒ	ØˆŒØ ˆÔØ!ˆÔð #ˆ�r   c                 óN   — | j                   j                  ›d| j                  ›d�S ©Nz(entry=Ú)©r   r!   rm   r   s    r   Ú__repr__zNameAssignment.__repr__d  ó   € Ø!%§¡×!8Ó!8¸$¿*»*ÐEÐEr   c                 óž   — | j                   j                  | j                  xs | j                  j                  «      | _        | j
                  S r   )r„   Ú
infer_typer€   rm   Úscoperº   r   s    r   rÂ   zNameAssignment.infer_typeg  s8   € Ø!ŸX™X×0Ñ0°·±Ò1SÀ4Ç:Á:×CSÑCSÓTˆÔØ×!Ñ!Ð!r   c                 ó|   — | j                   j                  | j                  xs | j                  j                  «      S r   )r„   Útype_dependenciesr€   rm   rÃ   r   s    r   rÅ   z NameAssignment.type_dependenciesk  s*   € Ø�x‰x×)Ñ)¨$¯.©.Ò*L¸D¿J¹J×<LÑ<LÓMÐMr   c                 ó†   — | j                   j                  j                  s| j                   j                  S | j                  S r   )rm   r   Úis_unspecifiedrº   r   s    r   r   zNameAssignment.typen  s-   € à�z‰z�‰×-Ò-Ø—:‘:—?‘?Ð"Ø×!Ñ!Ð!r   r   )	r!   r"   r#   r   r¿   rÂ   rÅ   Úpropertyr   rM   r   r   r�   r�   T  s,   „ ó#òFò"òNð ñ"ó ñ"r   r�   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )r¢   z7Initialised at declaration time, e.g. stack allocation.c                 ó¢   •— |j                   j                  sd}nd }t        |j                   ||j                  ¬«      }t        ‰| �  |||«       y )NF©r   r   )r   Úis_pyobjectr   r   r   r   )r   rm   r   rƒ   r   s       €r   r   zStaticAssignment.__init__w  sE   ø€ Ø�z‰z×%Ò%Ø‰KàˆKÜØ�J‰J K°U·Y±Yô@ˆä‰Ñ˜˜c 5Õ)r   c                 ó.   — | j                   j                  S r   )rm   r   r   s    r   rÂ   zStaticAssignment.infer_type€  s   € Ø�z‰z�‰Ðr   c                  ó   — y)NrM   rM   r   s    r   rÅ   z"StaticAssignment.type_dependenciesƒ  s   € Ør   )r!   r"   r#   rL   r   rÂ   rÅ   r$   r%   s   @r   r¢   r¢   u  s   ø„ ÙAô*òör   r¢   c                   ó   — e Zd Zd„ Zy)rˆ   c                 óB   — t         j                  | |||«       d| _        y ©NT)r�   r   rh   )r   rƒ   r„   rm   s       r   r   zArgument.__init__ˆ  s   € Ü×Ñ  c¨3°Ô6Øˆ�r   NrT   rM   r   r   rˆ   rˆ   ‡  s   „ ór   rˆ   c                   ó   — e Zd Zd„ Zd„ Zy)r‹   c                 óB   — t         j                  | |||«       d| _        y rÑ   )r�   r   r¹   )r   rƒ   rm   s      r   r   zNameDeletion.__init__Ž  s   € Ü×Ñ  c¨3°Ô6ØˆÕr   c                 óô   — | j                   j                  | j                  j                  «      }|j                  s5|j                  | j                  j                  «      rt        j                  S || _        |S r   )	r„   rÂ   rm   rÃ   rÌ   Úcan_coerce_to_pyobjectr   Úpy_object_typerº   )r   rº   s     r   rÂ   zNameDeletion.infer_type’  s[   € ØŸ™×+Ñ+¨D¯J©J×,<Ñ,<Ó=ˆØ×)Ò)Ø!×8Ñ8¸¿¹×9IÑ9IÔJÜ×,Ñ,Ð,Ø*ˆÔØÐr   N)r!   r"   r#   r   rÂ   rM   r   r   r‹   r‹   �  s   „ ò ór   r‹   c                   ó   — e Zd ZdZy)rŒ   zDefinitely not initialised yet.N©r!   r"   r#   rL   rM   r   r   rŒ   rŒ   ›  s   „ Ú)r   rŒ   c                   ó   — e Zd ZdZy)r£   z7Coming from outer closure, might be initialised or not.NrØ   rM   r   r   r£   r£   Ÿ  s   „ ÚAr   r£   c                   ó   — e Zd Zd„ Zd„ Zy)r�   c                 óx   — |j                   €t        «       |_         || _        || _        |j                  | _        y r   )r·   r*   r|   rm   r   r�   s      r   r   zNameReference.__init__¤  s.   € Ø�=‰=Ð Ü›EˆDŒMØˆŒ	ØˆŒ
Ø—8‘8ˆ�r   c                 óN   — | j                   j                  ›d| j                  ›d�S r¼   r¾   r   s    r   r¿   zNameReference.__repr__«  rÀ   r   N)r!   r"   r#   r   r¿   rM   r   r   r�   r�   £  s   „ òóFr   r�   c                   ó0   ‡ — e Zd ZdZdZdZˆ fd„Zd„ Zˆ xZS )ÚControlFlowStateFc                 ó@  •— t         |v r&|j                  t         «       d| _        |sBd| _        n:t        |v r|j                  t        «       d| _        nt        |«      dk(  rd| _        t        ‰| �!  |D �cg c]  }|j                  t        usŒ|‘Œ c}«       y c c}w )NTr   )rŒ   ÚdiscardÚcf_maybe_nullÚ
cf_is_nullr£   ÚlenÚ	is_singler   r   r„   r   )r   ÚstateÚir   s      €r   r   zControlFlowState.__init__º  s„   ø€ Ü˜EÑ!Ø�M‰Mœ-Ô(Ø!%ˆDÔÙØ"&�•Ü˜ÑØ�M‰Mœ'Ô"Ø!%ˆDÕä�5‹z˜QŠØ!%�”ä‰ÑÙÓ<™�1 §¡¬mÒ!;ŠQ˜Ñ<õ	>ùÚ<s   Á7BÂBc                 ó   — | d   S r)   rM   r   s    r   ÚonezControlFlowState.oneÊ  s   € Ø�A‰wˆr   )	r!   r"   r#   rá   râ   rä   r   rè   r$   r%   s   @r   rÞ   rÞ   ¯  s   ø„ ð €MØ€JØ€Iô>ö r   rÞ   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd	d„Zd„ Z	y)
Ú	GVContextzGraphviz subgraph object.c                 ó<   — i | _         d| _        g | _        i | _        y r)   )ÚblockidsÚnextidr+   Úsourcesr   s    r   r   zGVContext.__init__Ñ  s   € ØˆŒØˆŒØˆŒØˆ�r   c                 ó:   — | j                   j                  |«       y r   )r+   r‚   )r   r;   s     r   r?   zGVContext.add×  s   € Ø�‰×Ñ˜UÕ#r   c                 óž   — || j                   vr1d| j                  z  | j                   |<   | xj                  dz  c_        | j                   |   S )Nzblock%dr   )rì   rí   r@   s     r   ÚnodeidzGVContext.nodeidÚ  sB   € Ø˜Ÿ™Ñ%Ø#,¨t¯{©{Ñ#:ˆD�M‰M˜%Ñ Ø�KŠK˜1Ñ�KØ�}‰}˜UÑ#Ð#r   c                 ó|  — |j                   syt        |j                   «      }t        |j                   «      }|d   }|| j                  vr&t	        |j                  «       «      | j                  |<   | j                  |   }dj                  ||d   dz
  |d    D �cg c]  }|j                  «       ‘Œ c}«      S c c}w )NrF   r   ú\nr   )r-   ÚminÚmaxrî   ÚlistÚ	get_linesÚjoinÚstrip)r   rA   ÚstartÚstopÚsrcdescrÚlinesÚls          r   Úextract_sourceszGVContext.extract_sourcesà  s£   € Ø�ŠØÜ�E—O‘OÓ$ˆÜ�5—?‘?Ó#ˆØ˜‘8ˆØ˜4Ÿ<™<Ñ'Ü%)¨(×*<Ñ*<Ó*>Ó%?ˆD�L‰L˜Ñ"Ø—‘˜XÑ&ˆØ�z‰z¨e°E¸!±H¸q±LÀÀaÁÑ.IÓJÑ.I¨˜1Ÿ7™7�9Ð.IÑJÓKÐKùÒJs   ÂB9c                 ó¸   — |j                  d|z  «       |j                  d«       | j                  D ]  }|j                  || |«       Œ |j                  d«       y)zRender graphviz dot graphzdigraph %s {
z node [shape=box];
z}
N)Úwriter+   Úrender)r   ÚfpÚnameÚannotate_defsr;   s        r   r  zGVContext.renderë  sJ   € à
�‰Ð! DÑ(Ô)Ø
�‰Ð'Ô(Ø—]”]ˆEØ�L‰L˜˜T =Õ1ð #à
�‰��r   c                 óF   — |j                  dd«      j                  dd«      S )NÚ"z\"Ú
ró   )Úreplace)r   Útexts     r   ÚescapezGVContext.escapeó  s    € Ø�|‰|˜C Ó'×/Ñ/°°eÓ<Ð<r   N©F)
r!   r"   r#   rL   r   r?   rñ   rÿ   r  r  rM   r   r   rê   rê   Î  s$   „ Ù#òò$ò$ò	Lóó=r   rê   c                   ó   — e Zd ZdZd„ Zdd„Zy)ÚGVzGraphviz DOT renderer.c                 ó    — || _         || _        y r   )r  Úflow)r   r  r  s      r   r   zGV.__init__ú  s   € ØˆŒ	Øˆ�	r   c           
      óT  — |j                  d| j                  z  «       | j                  j                  D ]ü  }|j	                  |«      }|r«|j
                  D ]œ  }t        |t        «      r?|d|j                  j                  ›d|j                  rdnd›d|j                  d   ›d�z  }ŒRt        |t        «      sŒc|j                  sŒp|d|j                  j                  ›d	|j                  d   ›d�z  }Œž |sd
}|j                  |«      }|j                  d|›d|j                  |«      ›d�«       Œþ | j                  j                  D ]K  }|j                  |«      }|j                  D ])  }|j                  d|›d|j                  |«      ›d�«       Œ+ ŒM |j                  d«       y )Nz subgraph %s {
z
 z [ÚdeletionÚ
definitionrD   r   Ú]z [reference r7   z  z	 [label="z"];
z -> z;
z }
)r  r  r  rX   rÿ   r.   r�   r�   rm   r¹   r   r�   rñ   r  r+   )	r   r  Úctxr  rA   ÚlabelrK   Úpidr;   s	            r   r  z	GV.renderþ  sS  € Ø
�‰Ð# d§i¡iÑ/Ô0Ø—Y‘Y×%Ô%ˆEØ×'Ñ'¨Ó.ˆEÙØ!ŸKœK�DÜ! $¬Ô7ÙØ ŸJ™JŸO›O¸4×;KÒ;K©ZÐQ]Ñ-]Ð_c×_gÑ_gÐhiÓ_jð"lñ l™ä# D¬-Õ8ØŸ:›:Ù!¸t¿z¹z¿»ÐPT×PXÑPXÐYZÓP[Ð%\Ñ\™Eð (ñ Ø�Ø—*‘*˜UÓ#ˆCØ�HŠHªs°C·J±J¸uÕ4EÐFÕGð &ð —Y‘Y×%Ô%ˆEØ—*‘*˜UÓ#ˆCØŸœ�Ø—’ªC°·±¸EÕ1BÐCÕDñ (ð &ð 	�‰�Õr   Nr  )r!   r"   r#   rL   r   r  rM   r   r   r  r  ÷  s   „ Ù òôr   r  c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚMessageCollectionz/Collect error/warnings messages first then sortc                 ó"   — t        «       | _        y r   )r*   Úmessagesr   s    r   r   zMessageCollection.__init__  s   € Ü›ˆ�r   c                 ó@   — | j                   j                  |d|f«       y rÑ   ©r  r?   ©r   r   Úmessages      r   r   zMessageCollection.error  s   € Ø�‰×Ñ˜3  gÐ.Õ/r   c                 ó@   — | j                   j                  |d|f«       y r   r  r  s      r   r   zMessageCollection.warning  s   € Ø�‰×Ñ˜3  wÐ/Õ0r   c                 óx   — t        | j                  «      D ]"  \  }}}|rt        ||«       Œt        ||d«       Œ$ y ©Nrz   )Úsortedr  r   r   )r   r   Úis_errorr  s       r   ÚreportzMessageCollection.report   s5   € Ü&,¨T¯]©]Ö&;Ñ"ˆC�˜7ÙÜ�c˜7Õ#ä˜˜W aÕ(ñ	 '<r   N)r!   r"   r#   rL   r   r   r   r%  rM   r   r   r  r    s   „ Ù9òò0ò1ó)r   r  r  Úcompiler_directivesc                 ó   — | j                  «        | j                  «        t        «       }i }t        «       }| j                  D �]î  }|j                  }|j
                  D �]Ï  }| j                  |j                     }| j                  ||j                  «      }	t        |t        «      rÆ|j                  j                  j                  |	«       |j                  |j                  «       ||j                   z  }|j                   r||j"                  z  }n||j"                  z  }|j                  |«       |j$                  t&        usŒè|j                  j(                  j+                  |«       �Œt        |t,        «      s�Œ!|j                  ||j.                  <   |j                  j0                  j+                  |«       |j.                  j                  j                  |	«       |	j3                  t4        «       |	j3                  t6        «       |	D ]  }
|
j8                  j                  |«       Œ �ŒÒ �Œñ |d   }|d   }|d   }|d   }t;        «       }|D ]k  }t4        |j                  v r/d|_        t?        |j                  «      dk(  rd|_         Œ<d|_         ŒDt6        |j                  v rd|_        Œ^d|_         d|_        Œm |jC                  «       D �]É  \  }}t4        |j                  v �r‡d|_        |jD                  sAt?        |j                  «      dk(  r)|jF                  |jH                  jJ                  vrd|_         |jL                  s.|jD                  s"|jN                  s|jP                  jR                  rŒ©|j@                  rª|jT                  sž|jV                  s<tX        jV                  rW|jP                  jZ                  s|jP                  j\                  r+|j_                  |j`                  d|jF                  z  «       �Œ4|jc                  |j`                  d|jF                  z  «       �Œ_|s�Œcd	|jF                  z  }|jT                  r|d
z  }|jc                  |j`                  |«       �Œ¡t6        |j                  v r	d|_        �Œ¼d|_         d|_        �ŒÌ |D ]Ù  }
|
j8                  rŒ|
j                  jN                  rŒ'|
j                  jT                  rŒ>|
j                  j0                  ru|rs|
jd                  r4|jc                  |
j`                  d|
j                  jF                  z  «       n3|jc                  |
j`                  d|
j                  jF                  z  «       d|
j                  _3        ŒÛ | jh                  D ]°  }|j0                  rŒ|jN                  rŒ|jF                  dk7  r~|jF                  jk                  d«      sc|jd                  r,|rU|jc                  |j`                  d|jF                  z  «       n+|r)|jc                  |j`                  d|jF                  z  «       d|_3        Œ² |jm                  «        |D ]  }to        |j                  «      |_        Œ |D ]  }to        |j                  «      |_        Œ y )Nzwarn.maybe_uninitializedzwarn.unused_resultzwarn.unusedzwarn.unused_argTr   Fz0local variable '%s' referenced before assignmentz9local variable '%s' might be referenced before assignmentz% (maybe initialized inside a closure)zUnused argument value '%s'zUnused result in '%s'Ú_ÚunusedzUnused argument '%s'zUnused entry '%s')8r    rª   r*   rX   r1   r.   rš   rm   r§   r�   r�   rƒ   r·   Úupdater?   r›   r¹   rœ   r„   r   Úcf_assignmentsr‚   r�   r|   Úcf_referencesrà   rŒ   r£   r¸   r  rá   rã   râ   rž   ri   r  rÃ   Úscope_predefined_namesÚ
allow_nullrg   r   r$  rj   rk   r   rÌ   rÇ   r   r   r   rh   Úcf_usedrY   Ú
startswithr%  rÞ   )r  r&  ÚassignmentsÚ
referencesÚassmt_nodesrA   r5   rK   Úi_assmtsrå   r¦   Úwarn_maybe_uninitializedÚwarn_unused_resultÚwarn_unusedÚwarn_unused_argr  r|   rm   Úmsgs                      r   Úcheck_definitionsr:  (  s  € à‡O�OÔØ×ÑÔô “%€Kà€JÜ“%€Kð —•ˆØ—-‘-ˆØ—K•KˆDØ—{‘{ 4§:¡:Ñ.ˆHØ—L‘L ¨$¯*©*Ó5ˆEÜ˜$¤Ô/Ø—‘×!Ñ!×(Ñ(¨Ô/Ø—‘ §¡Ô)Ø! X§]¡] NÑ2�Ø×#Ò#Ø˜xŸ|™|Ñ+‘Gà˜tŸx™xÑ'�GØ—‘ Ô%Ø—8‘8¤=Ò0Ø—J‘J×-Ñ-×4Ñ4°TÖ:Ü˜D¤-Ö0Ø(,¯
©
�
˜4Ÿ9™9Ñ%Ø—
‘
×(Ñ(×/Ñ/°Ô5Ø—	‘	×"Ñ"×)Ñ)¨%Ô0ð —‘œmÔ,Ø—‘œgÔ&Û"�EØ—J‘J—N‘N 4Õ(ò #ò/  ð ð:  3Ð3MÑNÐØ,Ð-AÑBÐØ% mÑ4€KØ)Ð*;Ñ<€Oä Ó"€Hó ˆÜ˜DŸM™MÑ)Ø!%ˆDÔÜ�4—=‘=Ó! QÒ&Ø"&�•à"'�•Ü˜Ÿ™Ñ%Ø!%ˆDÕà#ˆDŒOØ!&ˆDÕð ð "×'Ñ'×)‰ˆˆeÜ˜DŸM™MÒ)Ø!%ˆDÔØ×&Ò&¬3¨t¯}©}Ó+=ÀÒ+BØŸ
™
¨%¯+©+×*LÑ*LÑLØ"&�”Ø—’ 5×#5Ò#5Ø×,Ò,°·
±
×0CÒ0CØØ—’¨×)9Ò)9Ø×/Ò/Ü×6Ò6ØŸ
™
×.Ò.°%·*±*×2KÒ2KØ—N‘NØŸ™ØJØŸ*™*ñ%ö&ð
 ×$Ñ$ØŸ™ØJØŸ*™*ñ%ö&ó *ØQÐTY×T^ÑT^Ñ^�Ø×#Ò#ØÐBÑB�CØ× Ñ Ø—H‘HØöô ˜Ÿ™Ñ%ð
 "&ˆDÖà#ˆDŒOØ!&ˆDÖðK *óP ˆØ—
“
 5§;¡;×#>Ó#>ØŸ™×.Ó.Ø�{‰{×(Ò(Ñ-?Ø—<’<Ø×$Ñ$ U§Y¡YÐ0LØ%*§[¡[×%5Ñ%5ñ16õ 7ð ×$Ñ$ U§Y¡YÐ0GØ%*§[¡[×%5Ñ%5ñ16ô 7à %ˆE�I‰IÕð ð —”ˆØ×#Ó#Ø×-Ó-Ø�z‰z˜SÒ ¨¯©×)>Ñ)>¸xÔ)Hà—<’<Ù&Ø ×(Ñ(¨¯©Ð4JØ).¯©ñ54õ 5ñ #Ø ×(Ñ(¨¯©Ð4GØ).¯©ñ54ô 5à!ˆE�Mð ð ‡O�OÔãˆÜ(¨¯©Ó7ˆ�ð ãˆÜ(¨¯©Ó7ˆ�ñ r   c                   ó0   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚAssignmentCollectorc                 ó0   •— t         ‰| �  «        g | _        y r   )r   r   r1  )r   r   s    €r   r   zAssignmentCollector.__init__µ  s   ø€ Ü‰ÑÔØˆÕr   c                 ó*   — | j                  | d d «       y r   )Ú_visitchildrenr   s    r   Ú
visit_NodezAssignmentCollector.visit_Node¹  s   € Ø×Ñ˜D $¨Õ-r   c                 óf   — | j                   j                  |j                  |j                  f«       y r   )r1  r‚   rƒ   r„   r{   s     r   Úvisit_SingleAssignmentNodez.AssignmentCollector.visit_SingleAssignmentNode¼  s#   € Ø×Ñ×Ñ §¡¨4¯8©8Ð 4Õ5r   c                 ót   — |j                   D ])  }| j                  j                  ||j                  f«       Œ+ y r   )Úlhs_listr1  r‚   r„   ©r   r|   rƒ   s      r   Úvisit_CascadedAssignmentNodez0AssignmentCollector.visit_CascadedAssignmentNode¿  s,   € Ø—=”=ˆCØ×Ñ×#Ñ# S¨$¯(©( OÕ4ñ !r   )r!   r"   r#   r   r@  rB  rF  r$   r%   s   @r   r<  r<  ´  s   ø„ ôò.ò6ö5r   r<  c                   ó6  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd3d„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d4d„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/„ Z0d0„ Z1d1„ Z2d2„ Z3y)5ÚControlFlowAnalysisc                 ó†   — || j                   k(  r| j                  S t        | j                  «      D ]  \  }}||u sŒ|c S  J ‚r   )Úenvr  ÚreversedÚstack)r   rJ  Úer  s       r   Úfind_in_stackz!ControlFlowAnalysis.find_in_stackÆ  sA   € Ø�$—(‘(Š?Ø—9‘9ÐÜ §
¡
Ö+‰GˆAˆtØ�CŠxØ’ð ,ð 	ˆur   c                 ó0  — | j                   d   }|r
t        «       nd | _        ddlm}  |«       | _        t        «       | _        d| _        |j                  | _
        t        «       | _        g | _        t        t        j                   d¬«      | _        | j%                  |«       t'        | j                  | j                   «       |rD| j                   d   }t)        |d«      5 }| j                  j+                  |d	|¬
«       d d d «       |S |S # 1 sw Y   |S xY w)Núcontrol_flow.dot_outputr   )ÚConstantFoldingFT©r   zcontrol_flow.dot_annotate_defsÚwÚmodule)r  )Úcurrent_directivesrê   Úgv_ctxÚOptimizerQ  Úconstant_folderr*   Ú
reductionsÚin_inplace_assignmentrÃ   rJ  rV   r  rL  r   r   rÖ   Úobject_exprÚvisitchildrenr:  Úopenr  )r   r|   Ú
dot_outputrQ  r  r  s         r   Úvisit_ModuleNodez$ControlFlowAnalysis.visit_ModuleNodeÎ  sæ   € Ø×,Ñ,Ð-FÑGˆ
Ù%/”i”k°TˆŒå-Ù.Ó0ˆÔô ›%ˆŒà%*ˆÔ"Ø—:‘:ˆŒÜ“MˆŒ	ØˆŒ
Ü(¬×)BÑ)BÐPTÔUˆÔØ×Ñ˜4Ô ä˜$Ÿ)™) T×%<Ñ%<Ô=áØ ×3Ñ3Ð4TÑUˆMÜ�j #Ô&¨"Ø—‘×"Ñ" 2 x¸}Ð"ÔM÷ 'àˆˆtˆ÷ 'àˆús   Ã DÄDc                 ó   — |j                   D ]   }|j                  sŒ| j                  |«       Œ" | j                  |d«       | j                  j	                  | j
                  | j                  f«       |j                  | _        t        «       | _        |j                  j                  j                  «       D ]C  }| j                  j                  |«      sŒ| j                  j                  j                  |«       ŒE | j                  |«       | j                  j                  «        |j                   D ]  }| j                  |«       Œ |j                   rT| j                  j#                  |j                   t%        t&        j(                  d¬«      |j                   j*                  «       |j,                  rT| j                  j#                  |j,                  t%        t&        j.                  d¬«      |j,                  j*                  «       | j                  |j0                  «       |j2                  r%| j                  |j4                  j0                  «       | j                  j6                  r9| j                  j6                  j9                  | j                  j:                  «       | j                  j=                  «        t?        | j                  | j@                  «       | j                  jB                  j                  | j                  jD                  «       | jF                  �C| jF                  j                  tI        |j                  jJ                  | j                  «      «       | j                  jM                  «       \  | _        | _        |S )N)Ú
decoratorsFrR  )'ÚargsÚdefaultr\  rL  r‚   rJ  r  Úlocal_scoperV   rY   rŸ   rn   r?   r}   rc   Ú_visitÚstar_argr‰   r   r   Ú
tuple_typerm   Ústarstar_argÚ	dict_typeÚbodyÚis_generatorÚgbodyrA   rB   r]   r˜   r:  rU  rX   r\   rV  r  r  r“   ©r   r|   Úargrm   s       r   Úvisit_FuncDefNodez%ControlFlowAnalysis.visit_FuncDefNodeç  sl  € Ø—9”9ˆCØ�{‹{Ø×"Ñ" 3Õ'ð ð 	×Ñ˜4 Ô1Ø�
‰
×Ñ˜4Ÿ8™8 T§Y¡YÐ/Ô0Ø×#Ñ#ˆŒÜ“MˆŒ	ð ×%Ñ%×-Ñ-×4Ñ4Ö6ˆEØ�y‰y×#Ñ# EÕ*Ø—	‘	×!Ñ!×%Ñ% eÕ,ð 7ð 	×Ñ˜4Ô à�	‰	×ÑÔà—9”9ˆCØ�K‰K˜Õð à�=Š=Ø�I‰I×#Ñ# D§M¡MÜ$1´'×2DÑ2DØ>Cô%Eà$(§M¡M×$7Ñ$7ô9ð ×ÒØ�I‰I×#Ñ# D×$5Ñ$5Ü$1´'×2CÑ2CØ>Cô%Eà$(×$5Ñ$5×$;Ñ$;ô=ð 	�‰�D—I‘IÔà×ÒØ�K‰K˜Ÿ
™
Ÿ™Ô(ð �9‰9�?Š?Ø�I‰I�O‰O×%Ñ% d§i¡i×&:Ñ&:Ô;ð 	�	‰	×ÑÔÜ˜$Ÿ)™) T×%<Ñ%<Ô=Ø�	‰	×Ñ×Ñ˜TŸY™Y×2Ñ2Ô3à�;‰;Ð"Ø�K‰K�O‰OœB˜t×/Ñ/×4Ñ4°d·i±iÓ@ÔAà"Ÿj™jŸn™nÓ.ÑˆŒ�$”)Øˆr   c                 ó2   — d|_         | j                  |«      S rÑ   )Úusedro  r{   s     r   Úvisit_DefNodez!ControlFlowAnalysis.visit_DefNode  s   € ØˆŒ	Ø×%Ñ% dÓ+Ð+r   c                 ó   — |S r   rM   r{   s     r   Úvisit_GeneratorBodyDefNodez.ControlFlowAnalysis.visit_GeneratorBodyDefNode  ó   € Øˆr   c                 ó   — |S r   rM   r{   s     r   Úvisit_CTypeDefNodez&ControlFlowAnalysis.visit_CTypeDefNode   ru  r   Nc                 ón  — | j                   j                  sy | j                   j                  rb| j                   j                  d   }| j                   j                  j                  |j                  «       | j                   j                  «        |s| j                  }|j                  ro|j                  �|j                  }n%| j                  j                  |j                  «      }|€y | j                   j                  ||||xs | j                  ¬«       n¤|j                  r‡t        |j                  «      D ]n  \  }}|j                   r't#        t$        j&                  d|j(                  ¬«      }n"|| j                  u r|}n|j+                  |«      }| j                  |||¬«       Œp n| j-                  |«       | j                   j                  rc| j                   j                  d   }| j                   j                  j                  |j                  «       | j                   j                  «        y y )Néÿÿÿÿr   FrË   )r  rA   r[   rB   r\   rc   r[  Úis_namerm   rJ  Úlookupr  r†   Úis_sequence_constructorÚ	enumeraterb  Ú
is_starredr   r   Ú	list_typer   Úinferable_item_nodere  )	r   rƒ   r„   r€   Ú	exc_descrrm   ræ   rn  Ú	item_nodes	            r   r†   z#ControlFlowAnalysis.mark_assignment#  s¡  € Ø�y‰y�ŠØØ�9‰9×ÒØŸ	™	×,Ñ,¨RÑ0ˆIØ�I‰I�O‰O×%Ñ% i×&;Ñ&;Ô<Ø�I‰I×ÑÔ!áØ×"Ñ"ˆCØ�;Š;Ø�y‰yÐ$ØŸ	™	‘àŸ™Ÿ™¨¯©Ó1�Øˆ}ØØ�I‰I×%Ñ% c¨3°À)ÒBWÈtÏxÉxÐ%ÕYØ×(Ò(Ü# C§H¡HÖ-‘��3Ø—>’>ä -¬g×.?Ñ.?ÈUÐX[×X_ÑX_Ô `‘IØ˜D×,Ñ,Ñ,Ø #‘Ià #× 7Ñ 7¸Ó :�IØ×$Ñ$ S¨)¸yÐ$ÕIñ .ð �K‰K˜Ôà�9‰9×ÒØŸ	™	×,Ñ,¨RÑ0ˆIØ�I‰I�O‰O×%Ñ% i×&;Ñ&;Ô<Ø�I‰I×ÑÕ!ð  r   c                 óZ   — | j                   d   r| j                  j                  |«       yy)z'Mark position if DOT output is enabled.rP  N)rU  r  r}   r{   s     r   r}   z!ControlFlowAnalysis.mark_positionG  s(   € à×"Ñ"Ð#<Ò=Ø�I‰I×#Ñ# DÕ)ð >r   c                 ó~   — |j                   D ]  \  }}|dk7  sŒ| j                  |«       Œ | j                  |«       |S )NrE   )rž   r†   r\  )r   r|   r  Útargets       r   Úvisit_FromImportStatNodez,ControlFlowAnalysis.visit_FromImportStatNodeL  s>   € Ø ŸJœJ‰LˆD�&Ø�s‹{Ø×$Ñ$ VÕ,ð 'ð 	×Ñ˜4Ô Øˆr   c                 ó0   — t        dt        |«      z  «      ‚)NzUnhandled assignment node %s)r
   r   r{   s     r   Úvisit_AssignmentNodez(ControlFlowAnalysis.visit_AssignmentNodeS  s   € ÜÐ:¼TÀ$»ZÑGÓHÐHr   c                 óˆ   — | j                  |j                  «       | j                  |j                  |j                  «       |S r   )re  r„   r†   rƒ   r{   s     r   rB  z.ControlFlowAnalysis.visit_SingleAssignmentNodeV  s/   € Ø�‰�D—H‘HÔØ×Ñ˜TŸX™X t§x¡xÔ0Øˆr   c                 ó–   — | j                  |j                  «       |j                  D ]  }| j                  ||j                  «       Œ  |S r   )re  r„   rD  r†   rE  s      r   rF  z0ControlFlowAnalysis.visit_CascadedAssignmentNode[  s9   € Ø�‰�D—H‘HÔØ—=”=ˆCØ× Ñ   d§h¡hÕ/ð !àˆr   c                 óÒ   — t        «       }|j                  |«       |j                  D ]  \  }}| j                  |«       Œ |j                  D ]  \  }}| j	                  ||«       Œ |S r   )r<  r\  r1  re  r†   )r   r|   Ú	collectorrƒ   r„   s        r   Úvisit_ParallelAssignmentNodez0ControlFlowAnalysis.visit_ParallelAssignmentNodea  sa   € Ü'Ó)ˆ	Ø×Ñ Ô%Ø!×-Ô-‰HˆC�Ø�K‰K˜Õð .à!×-Ô-‰HˆC�Ø× Ñ   cÕ*ð .àˆr   c                 ó¶   — d| _         | j                  |«       d| _         | j                  |j                  | j	                  |j                  «       «      «       |S rp   )rZ  r\  r†   rƒ   rX  Úcreate_binop_noder{   s     r   Úvisit_InPlaceAssignmentNodez/ControlFlowAnalysis.visit_InPlaceAssignmentNodej  sM   € Ø%)ˆÔ"Ø×Ñ˜4Ô Ø%*ˆÔ"Ø×Ñ˜TŸX™X t×';Ñ';¸D×<RÑ<RÓ<TÓ'UÔVØˆr   c                 ó²  — |j                   D ]Ç  }|j                  r¨|j                  xs% | j                  j	                  |j
                  «      }|j                  s|j                  r#t        |j                  d|j
                  z  «       |j                  s| j                  |«       | j                  j                  ||«       Œ·| j                  |«       ŒÉ |S )Nz7can not delete variable '%s' referenced in nested scope)rb  rz  rm   rJ  r{  r  rj   ri   r   r   Úignore_nonexistingre  r  r�   rm  s       r   Úvisit_DelStatNodez%ControlFlowAnalysis.visit_DelStatNodeq  s¦   € Ø—9”9ˆCØ�{Š{ØŸ	™	Ò> T§X¡X§_¡_°S·X±XÓ%>�Ø×#Ò# u×'9Ò'9Ü˜#Ÿ'™'ð7Ø9>¿¹ñDôEð ×.Ò.Ø—K‘K Ô$Ø—	‘	×'Ñ'¨¨UÕ3à—‘˜CÕ ð ð ˆr   c                 óÐ   — | j                   j                  |j                  «      }|r>|j                   }| j                  j                  |t        |j                  |«      |«       |S r   )rJ  r{  r  Únot_noner  r‰   r   r   )r   r|   rm   r   s       r   Úvisit_CArgDeclNodez&ControlFlowAnalysis.visit_CArgDeclNode€  sQ   € Ø—‘—‘ §	¡	Ó*ˆÙØ"Ÿm™mÐ+ˆKØ�I‰I×#Ñ#Ø”m E§J¡J°Ó<¸eôEàˆr   c                 ó4  — | j                   j                  r�|j                  xs% | j                  j	                  |j
                  «      }|rL| j                   j                  ||«       || j                  v r"| j                  st        |j                  d«       |S )Nz+Cannot read reduction variable in loop body)r  rA   rm   rJ  r{  r  r‘   rY  rZ  r   r   r�   s      r   Úvisit_NameNodez"ControlFlowAnalysis.visit_NameNodeˆ  sp   € Ø�9‰9�?Š?Ø—J‘JÒ< $§(¡(§/¡/°$·)±)Ó"<ˆEÙØ—	‘	×(Ñ(¨¨uÔ5à˜DŸO™OÑ+°D×4NÒ4NÜ˜$Ÿ(™(ØGôIð ˆr   c                 ó¶   — | j                   j                  rB|j                  D ]3  }| j                  |«       | j                   j                  rŒ+d|_         |S  |S rÑ   )r  rA   r.   re  Úis_terminator)r   r|   rK   s      r   Úvisit_StatListNodez&ControlFlowAnalysis.visit_StatListNode”  sI   € Ø�9‰9�?Š?ØŸ
œ
�Ø—‘˜DÔ!Ø—y‘y—“Ø)-�DÔ&ØØˆð #ð
 ˆr   c                 óJ   — | j                  |«       | j                  |«       |S r   )r\  r}   r{   s     r   r@  zControlFlowAnalysis.visit_Node�  s#   € Ø×Ñ˜4Ô Ø×Ñ˜4Ô Øˆr   c                 ó   — |S r   rM   r{   s     r   Úvisit_SizeofVarNodez'ControlFlowAnalysis.visit_SizeofVarNode¢  ru  r   c                 ó   — |S r   rM   r{   s     r   Úvisit_TypeidNodez$ControlFlowAnalysis.visit_TypeidNode¥  ru  r   c                 ó‚  — | j                   j                  «       }| j                   j                  }|j                  D ]¿  }| j                   j	                  |«       | j                  |j                  «       | j                   j                  }| j                   j	                  «        | j                  |j                  «       | j                   j                  sŒ›| j                   j                  j                  |«       ŒÁ |j                  rs| j                   j	                  |¬«       | j                  |j                  «       | j                   j                  r7| j                   j                  j                  |«       n|j                  |«       |j                  r|| j                   _        |S d | j                   _        |S ©N©r<   )r  ra   rA   Ú
if_clausesrc   re  Ú	conditionrj  rB   Úelse_clauser,   )r   r|   r®   r<   Úclauses        r   Úvisit_IfStatNodez$ControlFlowAnalysis.visit_IfStatNode¨  s/  € Ø—Y‘Y×'Ñ'Ó)ˆ
Ø—‘—‘ˆà—o”oˆFØ�I‰I×Ñ Ô'Ø�K‰K˜×(Ñ(Ô)Ø—Y‘Y—_‘_ˆFØ�I‰I×ÑÔ!Ø�K‰K˜Ÿ™Ô$Ø�y‰y�‹Ø—	‘	—‘×)Ñ)¨*Õ5ð &ð ×ÒØ�I‰I×Ñ vÐÔ.Ø�K‰K˜×(Ñ(Ô)Ø�y‰y�ŠØ—	‘	—‘×)Ñ)¨*Õ5à×Ñ˜ZÔ(à×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 óV  — | j                  |«       | j                  j                  «       }| j                  j                  }| j                  j	                  |«      }| j                  |j                  «       | j                  j	                  «        | j                  |j                  «       | j                  j                  r%| j                  j                  j                  |«       |j                  |«       |j                  r|| j                  _        |S d| j                  _        |S )z@Essentially an if-condition that wraps a RaiseStatNode.
        N)
r}   r  ra   rA   rc   re  r¥  Ú	exceptionrB   r,   ©r   r|   r®   r<   s       r   Úvisit_AssertStatNodez(ControlFlowAnalysis.visit_AssertStatNodeÃ  sÑ   € ð 	×Ñ˜4Ô Ø—Y‘Y×'Ñ'Ó)ˆ
Ø—‘—‘ˆà—‘×$Ñ$ VÓ,ˆØ�‰�D—N‘NÔ#Ø�	‰	×ÑÔØ�‰�D—N‘NÔ#Ø�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% jÔ1Ø×Ñ˜Ô$Ø×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 ó8  — | j                   j                  «       }| j                   j                  «       }| j                   j                  j	                  t        ||«      «       |j                  r| j                  |j                  «       | j                   j                  }| j                   j                  «        | j                  |j                  «       | j                   j                  j                  «        | j                   j                  rJ| j                   j                  j                  |«       | j                   j                  j                  |«       |j                  rs| j                   j                  |¬«       | j                  |j                  «       | j                   j                  r7| j                   j                  j                  |«       n|j                  |«       |j                  r|| j                   _        |S d | j                   _        |S r¢  )r  rc   ra   rZ   r‚   r¬   r¥  re  rA   rj  r“   rB   r¦  r,   ©r   r|   Úcondition_blockr®   Úcondition_block_ends        r   Úvisit_WhileStatNodez'ControlFlowAnalysis.visit_WhileStatNode×  s`  € ØŸ)™)×-Ñ-Ó/ˆØ—Y‘Y×'Ñ'Ó)ˆ
à�	‰	�‰×Ñœy¨°_ÓEÔFØ�>Š>Ø�K‰K˜Ÿ™Ô'Ø"Ÿi™iŸo™oÐà�	‰	×ÑÔØ�‰�D—I‘IÔØ�	‰	�‰×ÑÔà�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% oÔ6Ø�I‰I�O‰O×%Ñ% jÔ1à×ÒØ�I‰I×ÑÐ':ÐÔ;Ø�K‰K˜×(Ñ(Ô)Ø�y‰y�ŠØ—	‘	—‘×)Ñ)¨*Õ5à×)Ñ)¨*Ô5à×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 ó  — d}|j                   j                  }|j                  }|j                   j                  xs | j                  }t        |t        j                  «      �rŒ|j                  }|j                  �€s|j                  �rf|j                  |j                  «      }|r|j                  �r<|j                  dk(  r)t        |j                  «      dk(  r|j                  d   }�n|j                  dk(  rõt        |j                  «      dk(  rÝ|j                   rÑt        |j                  «      dk(  r¹|j                  d   }|j                  rž|j#                  |«      }	|	j$                  r�| j'                  |j                  d   t        j(                  |j*                  dt,        j.                  ¬«      |j                   j                  ¬	«       |j                  d   }|j                  d   }t        |t        j                  «      �rA|j                  }|j                  �€(|j                  �r|j                  d
v �r|j                  |j                  «      }|rï|j0                  rã|j2                  t4        j6                  u rÇd}|j                  d d D ]*  }
| j'                  ||
|j                   j                  ¬	«       Œ, t        |j                  «      dkD  rq| j'                  || j9                  t        j:                  |j*                  d|j                  d   |j                  d   «      «      |j                   j                  ¬	«       |s3| j'                  ||j<                  |j                   j                  ¬	«       y y )NFrK  r   r   r}  rz   ÚPY_SSIZE_T_MAX)Úvaluer   r   )ÚrangeÚxrangeTÚ+)ÚiteratorÚsequencer…  Ú
expr_scoperJ  r�   r   ÚSimpleCallNodeÚfunctionr   rz  r{  r  Ú
is_builtinrã   rb  r|  rÂ   Úis_builtin_typer†   ÚIntNoder   r   Úc_py_ssize_t_typeÚis_typer   r   Ú
range_typerX  Ú
binop_nodeÚitem)r   r|   Ú
is_specialr¹  r…  rJ  r¼  rm   r¸  Úiterator_typern  s              r   Úmark_forloop_targetz'ControlFlowAnalysis.mark_forloop_targetö  s½  € àˆ
Ø—=‘=×)Ñ)ˆØ—‘ˆØ�m‰m×&Ñ&Ò2¨$¯(©(ˆÜ�h¤	× 8Ñ 8Õ9Ø×(Ñ(ˆHØ�}‰}Ñ$¨×)9Ó)9ØŸ
™
 8§=¡=Ó1�Ù × 0Ó 0Ø—}‘}¨
Ò2´s¸8¿=¹=Ó7IÈQÒ7NØ#+§=¡=°Ñ#3šØ!Ÿ™¨+Ò5¼#¸h¿m¹mÓ:LÐPQÒ:QØ!×9Ò9¼cÀ&Ç+Á+Ó>NÐRSÒ>SØ'/§}¡}°QÑ'7˜HØ'×/Ò/Ø08×0CÑ0CÀCÓ0H Ø#0×#@Ò#@à$(×$8Ñ$8Ø(.¯©°A©Ü(1×(9Ñ(9¸&¿*¹*ÐL\Ü?I×?[Ñ?[ô)]à26·-±-×2JÑ2Jð	 %9ô %Lð
 .4¯[©[¸©^ FØ/7¯}©}¸QÑ/? HÜ�h¤	× 8Ñ 8Õ9Ø×(Ñ(ˆHØ�}‰}Ñ$¨×)9Ó)9¸h¿m¹mÐObÒ>bØŸ
™
 8§=¡=Ó1�Ù˜UŸ]š]¨u¯z©z¼W×=OÑ=OÑ/OØ!%�JØ'Ÿ}™}¨R¨aÓ0˜Ø×,Ñ,¨V°SÀDÇMÁM×D\ÑD\Ð,Õ]ð  1ä˜8Ÿ=™=Ó)¨AÒ-Ø×,Ñ,¨V°T×5IÑ5IÜ%×0Ñ0°·±Ø47Ø4<·M±MÀ!Ñ4DØ4<·M±MÀ!Ñ4DóFó6Gð
 7;·m±m×6NÑ6Nð -ô Pñ ð × Ñ  ¨¯©¸d¿m¹m×>VÑ>VÐ ÕWð r   c                 óŠ  — |j                   }|j                  d d D ]  }| j                  ||«       Œ t        |j                  «      dkD  r[| j                  || j	                  t        j                  |j                  d|j                  d   |j                  d   «      «      «       |j                  s| j                  |«       y y )Nrz   r·  r   )r…  rb  r†   rã   rX  r   rÃ  r   )r   r|   r…  rn  s       r   Ú mark_parallel_forloop_assignmentz4ControlFlowAnalysis.mark_parallel_forloop_assignment*  s¥   € Ø—‘ˆØ—9‘9˜R˜a“=ˆCØ× Ñ  ¨Õ-ð !äˆt�y‰y‹>˜AÒØ× Ñ  ¨×)=Ñ)=Ü×$Ñ$ T§X¡XØ(+Ø(,¯	©	°!©Ø(,¯	©	°!©ó6ó*7ô 8ð
 �yŠyà× Ñ  Õ(ð r   c                 ó$   — | j                  |«      S r   )Úvisit_ForInStatNoder{   s     r   Úvisit_AsyncForStatNodez*ControlFlowAnalysis.visit_AsyncForStatNode8  s   € Ø×'Ñ'¨Ó-Ð-r   c                 ó\  — | j                   j                  «       }| j                   j                  «       }| j                   j                  j	                  t        ||«      «       | j                  |j                  «       | j                   j                  }| j                   j                  «        t        |t        j                  «      r| j                  |«       n}t        |t        j                  «      r'| j                  |j                  |j                   «       n<t        |t        j"                  «      r| j%                  |«       nJ t'        |«      «       ‚| j                   j                  «        | j                  |j(                  «       | j                   j                  j+                  «        | j                   j                  r%| j                   j                  j-                  |«       |j.                  rs| j                   j                  |¬«       | j                  |j.                  «       | j                   j                  r7| j                   j                  j-                  |«       n|j-                  |«       |j0                  r|| j                   _        |S d | j                   _        |S r¢  )r  rc   ra   rZ   r‚   r¬   re  r¸  rA   r�   r   ÚForInStatNoderÇ  ÚAsyncForStatNoder†   r…  rÄ  ÚParallelRangeNoderÉ  r   rj  r“   rB   r¦  r,   r®  s        r   rË  z'ControlFlowAnalysis.visit_ForInStatNode;  sÉ  € ØŸ)™)×-Ñ-Ó/ˆØ—Y‘Y×'Ñ'Ó)ˆ
à�	‰	�‰×Ñœy¨°_ÓEÔFØ�‰�D—M‘MÔ"Ø"Ÿi™iŸo™oÐà�	‰	×ÑÔä�dœE×/Ñ/Ô0Ø×$Ñ$ TÕ*Ü˜œe×4Ñ4Ô5à× Ñ  §¡¨d¯i©iÕ8Ü˜œe×5Ñ5Ô6Ø×1Ñ1°$Õ7à$œ$˜t›*Ó$�5ð 	�	‰	×ÑÔØ�‰�D—I‘IÔØ�	‰	�‰×ÑÔð �9‰9�?Š?Ø�I‰I�O‰O×%Ñ% oÔ6à×ÒØ�I‰I×ÑÐ':ÐÔ;Ø�K‰K˜×(Ñ(Ô)Ø�y‰y�ŠØ—	‘	—‘×)Ñ)¨*Õ5à×)Ñ)¨*Ô5à×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 ó”   — |j                   D ]9  }|r|j                  |usŒ| j                  j                  ||j                  «       Œ; y r   )Úassigned_nodesrm   r  r�   )r   r|   ÚexcludeÚprivate_nodes       r   Ú_delete_privatesz$ControlFlowAnalysis._delete_privatesg  s<   € Ø ×/Ô/ˆLÙ˜l×0Ñ0¸Ò?Ø—	‘	×'Ñ'¨°l×6HÑ6HÕIñ 0r   c                 óf  — | j                   }t        |j                  d«      r‡t        |«      | _         |j                  D ]W  }d|j
                  _        |j                  |j
                     \  }}|sŒ3| j                   j                  |j
                  «       ŒY | j                  |«      }|| _         |S )Nrm   T)
rY  Úhasattrr…  r*   rÒ  rm   rk   r1  r?   rË  )r   r|   rY  rÔ  r   Ú	reductions         r   Úvisit_ParallelRangeNodez+ControlFlowAnalysis.visit_ParallelRangeNodel  s—   € Ø—_‘_ˆ
ô �4—;‘; Ô(Ü! *›oˆDŒOà $× 3Ô 3�Ø<@�×"Ñ"Ô9Ø!%×!1Ñ!1°,×2DÑ2DÑ!E‘��YÚØ—O‘O×'Ñ'¨×(:Ñ(:Õ;ð	 !4ð ×+Ñ+¨DÓ1ˆDà$ˆŒØˆr   c                 óŽ   — |j                   D ]  }d|j                  _        Œ | j                  |«       | j	                  |«       |S rÑ   )rÒ  rm   rk   r\  rÕ  )r   r|   rÔ  s      r   Úvisit_ParallelWithBlockNodez/ControlFlowAnalysis.visit_ParallelWithBlockNode  sC   € Ø ×/Ô/ˆLØ8<ˆL×ÑÕ5ð 0ð 	×Ñ˜4Ô à×Ñ˜dÔ#àˆr   c                 ó°  — | j                   j                  «       }| j                   j                  «       }| j                   j                  j	                  t        ||«      «       | j                  |j                  «       | j                  |j                  «       |j                  �| j                  |j                  «       | j                   j                  }| j                   j                  «        | j                  |j                  |j                  «       |j                  �_| j                  |j                  | j                  t        j                  |j                   d|j                  |j                  «      «      «       | j                   j                  «        | j                  |j"                  «       | j                   j                  j%                  «        | j                   j                  r%| j                   j                  j'                  |«       |j(                  rs| j                   j                  |¬«       | j                  |j(                  «       | j                   j                  r7| j                   j                  j'                  |«       n|j'                  |«       |j*                  r|| j                   _
        |S d | j                   _
        |S )Nr·  r£  )r  rc   ra   rZ   r‚   r¬   re  Úbound1Úbound2ÚsteprA   r†   r…  rX  r   rÃ  r   rj  r“   rB   r¦  r,   r®  s        r   Úvisit_ForFromStatNodez)ControlFlowAnalysis.visit_ForFromStatNode‰  sä  € ØŸ)™)×-Ñ-Ó/ˆØ—Y‘Y×'Ñ'Ó)ˆ
à�	‰	�‰×Ñœy¨°_ÓEÔFØ�‰�D—K‘KÔ Ø�‰�D—K‘KÔ Ø�9‰9Ð Ø�K‰K˜Ÿ	™	Ô"Ø"Ÿi™iŸo™oÐà�	‰	×ÑÔØ×Ñ˜TŸ[™[¨$¯+©+Ô6Ø�9‰9Ð Ø× Ñ  §¡¨d×.BÑ.BÜ×$Ñ$ T§X¡X¨s°D·K±KÀÇÁÓKó/Mô Nð 	�	‰	×ÑÔØ�‰�D—I‘IÔØ�	‰	�‰×ÑÔà�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% oÔ6à×ÒØ�I‰I×ÑÐ':ÐÔ;Ø�K‰K˜×(Ñ(Ô)Ø�y‰y�ŠØ—	‘	—‘×)Ñ)¨*Õ5à×)Ñ)¨*Ô5à×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 ó   — t        d«      ‚)NzGeneric loops are not supported)r
   r{   s     r   Úvisit_LoopNodez"ControlFlowAnalysis.visit_LoopNode¯  s   € ÜÐ=Ó>Ð>r   c                 óf   — | j                  |j                  |j                  j                  «       |S r   )r†   rƒ   Ú	with_nodeÚ
enter_callr{   s     r   Ú"visit_WithTargetAssignmentStatNodez6ControlFlowAnalysis.visit_WithTargetAssignmentStatNode²  s%   € Ø×Ñ˜TŸX™X t§~¡~×'@Ñ'@ÔAØˆr   c                 ó¨   — | j                  |j                  «       | j                  |j                  «       | j                  |j                  «       |S r   )re  Úmanagerrå  rj  r{   s     r   Úvisit_WithStatNodez&ControlFlowAnalysis.visit_WithStatNode¶  s7   € Ø�‰�D—L‘LÔ!Ø�‰�D—O‘OÔ$Ø�‰�D—I‘IÔØˆr   c                 ó  — | j                   j                  «       }| j                   j                  «        | j                   j                  «       }| j                   j                  j                  t	        |«      «       | j                   j                  «        | j                   j                  j                  |«       | j                   j                  «        | j                   xj                  dz  c_        | j                  |j                  «       | j                   xj                  dz  c_        | j                   j                  j                  «        | j                   j                  r||j                  r5| j                   j                  «        | j                  |j                  «       | j                   j                  r%| j                   j                  j                  |«       |j                  D �]  }|| j                   _        |j                  r#|j                  D ]  }| j                  |«       Œ n	 | j                   j                  | j                   j                  ¬«      }| j                   j                  «        |j                  r&| j!                  |j                  |j"                  «       | j                  |j                  «       | j                   j                  sŒó| j                   j                  j                  |«       �Œ | j                   j                  r2|j                  | j                   j                  d   j$                  «       |j&                  r|| j                   _        |S d | j                   _        |S )Nr   r£  ry  )r  ra   r[   r‚   r±   rc   rA   rB   r^   re  rj  r“   r¦  Úexcept_clausesÚpatternr…  r†   Ú	exc_valuer\   r,   )r   r|   r®   r\   r§  rì  s         r   Úvisit_TryExceptStatNodez+ControlFlowAnalysis.visit_TryExceptStatNode¼  sU  € à—Y‘Y×'Ñ'Ó)ˆ
à�	‰	×ÑÔà—i‘i×(Ñ(Ó*ˆØ�	‰	×Ñ×#Ñ#¤N°;Ó$?Ô@Ø�	‰	×ÑÔð 	�	‰	�‰×!Ñ! +Ô.Ø�	‰	×ÑÔØ�	‰	×Ò !Ñ#ÕØ�‰�D—I‘IÔØ�	‰	×Ò !Ñ#ÕØ�	‰	×Ñ× Ñ Ô"ð �9‰9�?Š?Ø×ÒØ—	‘	×#Ñ#Ô%Ø—‘˜D×,Ñ,Ô-Ø�y‰y�ŠØ—	‘	—‘×)Ñ)¨*Ô5à×)Õ)ˆFØ)ˆD�I‰IŒOØ�~Š~Ø%Ÿ~œ~�GØ—K‘K Õ(ñ  .ð ØŸ)™)×,Ñ,°D·I±I·O±OÐ,ÓDˆKØ�I‰I×ÑÔ!Ø�}Š}Ø×$Ñ$ V§]¡]°F×4DÑ4DÔEØ�K‰K˜Ÿ™Ô$Ø�y‰y�‹Ø—	‘	—‘×)Ñ)¨*Ö5ð *ð  �9‰9×ÒØ×!Ñ! $§)¡)×"6Ñ"6°rÑ":×"FÑ"FÔGà×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 óL  — | j                   j                  «       }| j                   j                  «       }|| j                   _        | j	                  |j
                  «       | j                   j                  r\| j                   j                  rF| j                   j                  j                  | j                   j                  d   j                  «       | j                   j                  «       }|| j                   _        | j	                  |j                  «       | j                   j                  }t        |||«      }| j                   j                  j                  |«       | j                   j                  r2| j                   j                  d   j                  j                  |«       || j                   _        |j                  |«       | j                   j                  «        | j                   xj                  dz  c_        | j	                  |j                  «       | j                   xj                  dz  c_        | j                   j                  j                  «        | j                   j                  r1| j                   j                  d   j                  j                  «        | j                   j                  re| j                   j                  j                  |«       |r-| j                   j                  |¬«      | j                   _        |S d | j                   _        |S )Nry  r   r£  )r  rc   ra   rA   re  Úfinally_except_clauser[   rB   r\   Úfinally_clauser±   r‚   rZ   r^   rj  r“   )r   r|   Ú
body_blockr\   r³   r´   Údescrs          r   Úvisit_TryFinallyStatNodez,ControlFlowAnalysis.visit_TryFinallyStatNodeï  s  € Ø—Y‘Y×(Ñ(Ó*ˆ
ð —i‘i×(Ñ(Ó*ˆØ%ˆ�	‰	ŒØ�‰�D×.Ñ.Ô/à�9‰9�?Š?˜tŸy™y×3Ò3Ø�I‰I�O‰O×%Ñ% d§i¡i×&:Ñ&:¸2Ñ&>×&JÑ&JÔKð Ÿ	™	×*Ñ*Ó,ˆØ'ˆ�	‰	ŒØ�‰�D×'Ñ'Ô(Ø—y‘y—‘ˆä˜{¨M¸<ÓHˆØ�	‰	×Ñ×#Ñ# EÔ*Ø�9‰9�?Š?Ø�I‰I�O‰O˜BÑ×*Ñ*×1Ñ1°%Ô8Ø$ˆ�	‰	ŒØ×Ñ˜[Ô)Ø�	‰	×ÑÔØ�	‰	×Ò !Ñ#ÕØ�‰�D—I‘IÔØ�	‰	×Ò !Ñ#ÕØ�	‰	×Ñ× Ñ Ô"Ø�9‰9�?Š?Ø�I‰I�O‰O˜BÑ×*Ñ*×.Ñ.Ô0à�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% mÔ4ÙØ"&§)¡)×"5Ñ"5¸\Ð"5Ó"J�—	‘	”ð ˆð #'�—	‘	”Øˆr   c                 ó^  — | j                  |«       | j                  |«       | j                  j                  rF| j                  j                  j                  | j                  j                  d   j                  «       d | j                  _        | j                  j                  rd|_        |S )Nry  T)r}   r\  r  r[   rA   rB   r\   r^   r{   s     r   Úvisit_RaiseStatNodez'ControlFlowAnalysis.visit_RaiseStatNode  s{   € Ø×Ñ˜4Ô Ø×Ñ˜4Ô Ø�9‰9×ÒØ�I‰I�O‰O×%Ñ% d§i¡i×&:Ñ&:¸2Ñ&>×&JÑ&JÔKØˆ�	‰	ŒØ�9‰9×!Ò!Ø $ˆDÔØˆr   c                 ó  — | j                  |«       | j                  j                  rF| j                  j                  j	                  | j                  j                  d   j
                  «       d | j                  _        |S ©Nry  )r}   r  r[   rA   rB   r\   r{   s     r   Úvisit_ReraiseStatNodez)ControlFlowAnalysis.visit_ReraiseStatNode   sX   € Ø×Ñ˜4Ô Ø�9‰9×ÒØ�I‰I�O‰O×%Ñ% d§i¡i×&:Ñ&:¸2Ñ&>×&JÑ&JÔKØˆ�	‰	ŒØˆr   c                 ó˜  — | j                  |«       | j                  |«       t        | j                  j                  d d d…   «      }|D ]�  }|j
                  sŒ| j                  j                  j                  |j
                  «       |j                  rR| j                  j                  }|D ]  }|j
                  sŒ|j
                  } n |j                  j                  |«        nP | j                  j                  r9| j                  j                  j                  | j                  j                  «       d | j                  _        |S rø  )
r}   r\  Úiterr  r[   r³   rA   rB   r´   r]   )r   r|   Úouter_exception_handlersÚhandlerr]   Únext_handlers         r   Úvisit_ReturnStatNodez(ControlFlowAnalysis.visit_ReturnStatNode'  sû   € Ø×Ñ˜4Ô Ø×Ñ˜4Ô ä#'¨¯	©	×(<Ñ(<¹T¸r¸TÑ(BÓ#CÐ Û/ˆGØ×$Ó$Ø—	‘	—‘×)Ñ)¨'×*?Ñ*?Ô@Ø×'Ò'à!%§¡×!5Ñ!5�JÛ(@˜Ø'×5Ó5Ø)5×)CÑ)C˜JÙ!ð )Að ×(Ñ(×2Ñ2°:Ô>Ùð 0ð �y‰y�ŠØ—	‘	—‘×)Ñ)¨$¯)©)×*>Ñ*>Ô?Øˆ�	‰	ŒØˆr   c                 ó  — | j                   j                  s|S | j                   j                  d   }| j                  |«       |j                  d d d…   D ]p  }|j                  sŒ| j                   j
                  j                  |j                  «       |j                  r%|j                  j                  |j                  «        n0 | j                   j
                  j                  |j                  «       d | j                   _        |S rø  )	r  rZ   r}   r[   r³   rA   rB   r´   r®   ©r   r|   Úlooprª  s       r   Úvisit_BreakStatNodez'ControlFlowAnalysis.visit_BreakStatNode>  ó¾   € Ø�y‰y�ŠàˆKØ�y‰y�‰˜rÑ"ˆØ×Ñ˜4Ô ØŸ™©¨2¨Ô.ˆIØ×&Ó&Ø—	‘	—‘×)Ñ)¨)×*AÑ*AÔBØ×)Ò)Ø×*Ñ*×4Ñ4°T·_±_ÔEÙð /ð �I‰I�O‰O×%Ñ% d§o¡oÔ6Øˆ�	‰	ŒØˆr   c                 ó  — | j                   j                  s|S | j                   j                  d   }| j                  |«       |j                  d d d…   D ]p  }|j                  sŒ| j                   j
                  j                  |j                  «       |j                  r%|j                  j                  |j                  «        n0 | j                   j
                  j                  |j                  «       d | j                   _        |S rø  )	r  rZ   r}   r[   r³   rA   rB   r´   r¯   r  s       r   Úvisit_ContinueStatNodez*ControlFlowAnalysis.visit_ContinueStatNodeO  r  r   c                 ó4  — |j                   rB| j                  j                  | j                  | j                  f«       |j                   | _        | j                  |j                  «       |j                   r"| j                  j                  «       \  | _        }|S r   )rº  rL  r‚   rJ  r  re  r  r“   ©r   r|   r(  s      r   Úvisit_ComprehensionNodez+ControlFlowAnalysis.visit_ComprehensionNode`  se   € Ø�?Š?Ø�J‰J×Ñ˜tŸx™x¨¯©Ð3Ô4Ø—‘ˆDŒHà�‰�D—I‘IÔØ�?Š?ØŸ*™*Ÿ.™.Ó*‰KˆDŒH�aØˆr   c                 óÌ  — t        |t        j                  t        j                  f«      sJ |«       ‚|j                  rb| j
                  j                  | j                  | j                  f«       | j                  |j                  «      | _        |j                  | _        | j                  |«       |j                  r'| j
                  j                  «       \  | _        | _        |S r   )r�   r   ÚIteratorNodeÚAsyncIteratorNoderº  rL  r‚   rJ  r  rN  r\  r“   r{   s     r   Úvisit_ScopedExprNodez(ControlFlowAnalysis.visit_ScopedExprNodej  s¥   € ô ˜$¤×!7Ñ!7¼×9TÑ9TÐ UÔVÐ\ÐX\Ó\ÐVØ�?Š?Ø�J‰J×Ñ˜tŸx™x¨¯©Ð3Ô4Ø×*Ñ*¨4¯?©?Ó;ˆDŒIØ—‘ˆDŒHØ×Ñ˜4Ô Ø�?Š?Ø"&§*¡*§.¡.Ó"2ÑˆDŒH�d”iØˆr   c                 óÐ  — | j                  |d«       | j                  j                  |j                  |j                  | j
                  j                  |j                  j                  «      «       | j                  j                  | j
                  | j                  f«       |j                  | _        | j                  j                  «        |j                  r?| j                  j                  |j                  t        |j                  j                  «       | j                  |d«       | j                  j                  «        | j                  j                  «       \  | _        }|S )N)ÚdictÚ	metaclassÚmkwÚbasesÚclass_result)rj  )r\  r  r†   r…  ÚclassobjrJ  r{  r  rL  r‚   rÃ   rc   Údoc_noder   rm   r“   r  s      r   Úvisit_PyClassDefNodez(ControlFlowAnalysis.visit_PyClassDefNodew  sò   € Ø×Ñ˜4ð "Bô 	Cà�	‰	×!Ñ! $§+¡+¨t¯}©}Ø"&§(¡(§/¡/°$·+±+×2BÑ2BÓ"Cô	Eà�
‰
×Ñ˜4Ÿ8™8 T§Y¡YÐ/Ô0Ø—:‘:ˆŒØ�	‰	×ÑÔØ�=Š=Ø�I‰I×%Ñ% d§m¡m´]ÀDÇMÁM×DWÑDWÔXØ×Ñ˜4 Ô+Ø�	‰	×ÑÔØ—j‘j—n‘nÓ&‰ˆŒ�!Øˆr   c                 ó¾   — | j                   j                  |j                  | j                  f«       | j	                  |«       | j                   j                  «        |S r   )rL  r‚   rÃ   r  r\  r“   r{   s     r   Úvisit_CClassDefNodez'ControlFlowAnalysis.visit_CClassDefNode†  sB   € à�
‰
×Ñ˜4Ÿ:™: t§y¡yÐ1Ô2Ø×Ñ˜4Ô Ø�
‰
�‰ÔØˆr   c                 ó”   — |j                   j                  r | j                  |j                   t        «       | j	                  |«       |S r   )Úoperandrz  r†   r   r\  r{   s     r   Úvisit_AmpersandNodez'ControlFlowAnalysis.visit_AmpersandNode�  s6   € Ø�<‰<×Òà× Ñ  §¡¬}Ô=Ø×Ñ˜4Ô Øˆr   c                 ó2  — t        |j                  «      dk(  sJ ‚| j                  j                  «       }| j                  j                  }| j                  |j                  «       | j                  j                  «        | j                  |j                  «       | j                  j                  r%| j                  j                  j                  |«       |j                  |«       |j                  r|| j                  _        |S d | j                  _        |S r"  )rã   Úsubexprsr  ra   rA   re  Úoperand1rc   Úoperand2rB   r,   r«  s       r   Úvisit_BoolBinopNodez'ControlFlowAnalysis.visit_BoolBinopNode”  sÄ   € ä�4—=‘=Ó! QÒ&Ð&Ð&à—Y‘Y×'Ñ'Ó)ˆ
Ø—‘—‘ˆà�‰�D—M‘MÔ"à�	‰	×ÑÔØ�‰�D—M‘MÔ"Ø�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% jÔ1à×Ñ˜Ô$à×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   c                 óô  — t        |j                  «      dk(  sJ ‚| j                  |j                  «       | j                  j
                  }| j                  j                  «       }| j                  j                  «        | j                  |j                  «       | j                  j
                  r%| j                  j
                  j                  |«       | j                  j                  |¬«       | j                  |j                  «       | j                  j
                  r%| j                  j
                  j                  |«       |j                  r|| j                  _        |S d | j                  _        |S )Né   r£  )rã   r  re  Útestr  rA   ra   rc   Útrue_valrB   Ú	false_valr,   )r   r|   r<   r®   s       r   Úvisit_CondExprNodez&ControlFlowAnalysis.visit_CondExprNodeª  sü   € Ü�4—=‘=Ó! QÒ&Ð&Ð&Ø�‰�D—I‘IÔØ—‘—‘ˆØ—Y‘Y×'Ñ'Ó)ˆ
Ø�	‰	×ÑÔØ�‰�D—M‘MÔ"Ø�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% jÔ1Ø�	‰	×Ñ 6ÐÔ*Ø�‰�D—N‘NÔ#Ø�9‰9�?Š?Ø�I‰I�O‰O×%Ñ% jÔ1à×ÒØ(ˆD�I‰IŒOð ˆð #ˆD�I‰IŒOØˆr   r    r   )4r!   r"   r#   rN  r_  ro  rr  rt  rw  r†   r}   r†  rˆ  rB  rF  r�  r�  r“  r–  r˜  r›  r@  rž  r   r¨  r¬  r±  rÇ  rÉ  rÌ  rË  rÕ  rÙ  rÛ  rà  râ  ræ  ré  rî  rô  rö  rù  rÿ  r  r  r	  r  r  r  r  r   r&  rM   r   r   rH  rH  Ä  s  „ òòò20òd,òòó""òH*ò
òIòò
òòòòò
òòò
òòò6ò(ò>2Xòh)ò.ò*óXJò
ò&ò$òL?òòò1òf%òNòòò.ò"ò"òòòòòó,r   rH  )+ÚcythonÚdeclareÚobjectrF   r   r   r   r   r   ÚVisitorr   r	   ÚErrorsr   r   r
   ÚExprNoder   Úunspecified_typer   r'   rO   rR   rV   r¬   r±   r�   r¢   rˆ   r‹   rŒ   r£   r�   rö   rÞ   rê   r  r  Úcfuncr  r:  r<  rH  rM   r   r   Ú<module>r/     sv  ðó Ø €‡�˜&¨F¸&È&Ø¨6À6Ø#¨6¸6Ø#°6õ;õ
 Ý Ý Ý Ý ç 1ß 1Ñ 1ô*�I×&Ñ&ô *ñ ˜j×9Ñ9Ó:€÷@'ñ @'ôF�ô ÷ñ ÷
K*ñ K*÷\ñ ÷)ñ )÷"ñ "ôB�~ô ô$ˆ~ô ô�>ô ÷*ñ *÷Bñ B÷	Fñ 	Fô�tô ÷>&=ñ &=÷Rñ ÷<)ñ )ð& ‡�ðH8˜Kð H8¸dò H8ó ðH8ôV5˜+ô 5ô x˜/õ xr   