§
    ŒŸj1“  ã                   óZ  — d dl Z d dlZd dl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 ddlmZmZmZmZmZmZ ddlmZmZ ddlmZ d dlmZ d dlZd	ed
e	e         fd„Z d	ed
e	e         fd„Z! ed¦  «        ded
e"ej#                 fd„¦   «         Z$e j%        e j&        e j'        e j(        fZ)e)e j*        e j+        e j,        e j-        fz   Z.e j/        e j0        e j1        e j2        e j3        e j4        e j5        e j6        e j7        e j8        e j9        e j:        e j;        dœZ< G d„ de=¦  «        Z>dS )é    N)ÚCodeTypeÚ	FrameType)
ÚAnyÚCallableÚIteratorÚOptionalÚSequenceÚSetÚTupleÚTypeÚUnionÚcasté   )ÚEnhancedASTÚNotOneValueFoundÚSourceÚonlyÚfunction_node_typesÚassert_)Ú
KnownIssueÚVerifierFailure)Úmangled_name)Ú	lru_cacheÚnodeÚreturnc              #   óF   K  — 	 t          | d¦  «        r| j        } | V — nd S Œ)NTÚparent)Úhasattrr   ©r   s    úl/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/executing/_position_node_finder.pyÚparentsr!      s9   è è € ðÝ�4˜Ñ"Ô"ð 	Ø”;ˆDØˆJˆJˆJˆJàˆEðó    c              #   ó<   K  — | V — t          | ¦  «        E d {V —† d S ©N)r!   r   s    r    Únode_and_parentsr%      s3   è è € Ø
€J€J€JÝ�t‰}Œ}ÐÐÐÐÐÐÐÐÐr"   é€   Úcodec                 óD   — t          t          j        | ¦  «        ¦  «        S r$   )ÚlistÚdisÚget_instructions)r'   s    r    r+   r+      s   € å•Ô$ TÑ*Ô*Ñ+Ô+Ð+r"   )z**Ú*ú@z//ú/ú%ú+ú-z<<z>>ú&ú^ú|c            
       óì  — e Zd ZdZdedee         dej        de	de
f
d„Zded	e	d
dfd„Zdedej        d
efd„Zdedej        d
dfd„Zd
e	fd„Zedej        ded
efd„¦   «         Zdedej        d
dfd„Zd	e	d
eej                 fd„Zdej        d
eej                 fd„Zd	e	d
efd„ZdZej        dk    rej        fZdej        ej         ej!        ej"        ge¢R fd	e	de#e         de$e%df         d
efd„Z&dS )ÚPositionNodeFindera%  
    Mapping bytecode to ast-node based on the source positions, which where introduced in pyhon 3.11.
    In general every ast-node can be exactly referenced by its begin/end line/col_offset, which is stored in the bytecode.
    There are only some exceptions for methods and attributes.
    ÚframeÚstmtsÚtreeÚlastiÚsourcec                 ór  — d„ t          |j        ¦  «        D ¦   «         | _        || _        || _        d | _        |                      |¦  «        dk    r|dz  }|                      |¦  «        dk    °	 |                      |¦  «        | _        nx# t          $ rk |                      |¦  «        dv rt          j        f}n&|                      |¦  «        dv rt          j        f}n‚ |                      |d|¬¦  «        | _        Y nw xY w|                      |¦  «        }|€J ‚|                      | j        |¦  «        | _        |                      | j        |¦  «         |                      | j        |¦  «         | j        €|                      | j        |¦  «         d S t%          | j        | j        j        v ¦  «         d S )Nc                 ó   — i | ]
}|j         |“ŒS © )Úoffset)Ú.0Úbcs     r    ú
<dictcomp>z/PositionNodeFinder.__init__.<locals>.<dictcomp>J   s   € ÐMÐMÐM r�b”i ÐMÐMÐMr"   ÚCACHEé   )ÚLOAD_METHODÚ	LOAD_ATTRÚ
STORE_ATTRÚDELETE_ATTR)ÚCALLÚCALL_KW)Úend_col_offsetÚ
end_lineno)Úmatch_positionsÚtyp)r+   Úf_codeÚbc_dictr7   r;   Ú	decoratorÚopnameÚ	find_nodeÚresultr   ÚastÚ	AttributeÚCallÚinstructionÚ
fix_resultÚknown_issuesÚtest_for_decoratorÚverifyr   Údecorator_list)Úselfr7   r8   r9   r:   r;   rN   rX   s           r    Ú__init__zPositionNodeFinder.__init__I   sÒ  € ØMÐMÕ-=¸e¼lÑ-KÔ-KÐMÑMÔMˆŒØˆŒ
àˆŒØ04ˆŒð �kŠk˜%Ñ Ô  GÒ+Ð+Ø�Q‰JˆEð �kŠk˜%Ñ Ô  GÒ+Ð+ð	àŸ.š.¨Ñ/Ô/ˆDŒKˆKøÝð 	ð 	ð 	ð �{Š{˜5Ñ!Ô!ð &ð ð õ ”}Ð&��Ø—’˜UÑ#Ô#Ð':Ð:Ð:õ
 ”x�k��ààŸ.š.ØØ @Øð )ñ ô ˆDŒKˆKˆKð1	øøøð< ×&Ò& uÑ-Ô-ˆØÐ&Ð&Ð&à—o’o d¤k°;Ñ?Ô?ˆŒà×Ò˜$œ+ {Ñ3Ô3Ð3à×Ò ¤¨UÑ3Ô3Ð3ð Œ>Ð!Ø�KŠK˜œ [Ñ1Ô1Ð1Ð1Ð1å�D”N d¤kÔ&@Ð@ÑAÔAÐAÐAÐAs   Á1B ÂA2DÄ Dr   Úindexr   Nc                 óN  — t          |j        t          j        t          f¦  «        rü||j        j        v rð|j        }	 |                      |dz
  ¦  «        dk    st          j        dk    r|                      |¦  «        dk    sd S |dz  }|                      |¦  «        dv r|dz  }|                      |¦  «        dv °|                      |¦  «         	                    d¦  «        r)|  
                    |¦  «        |k    r|| _        || _        d S t          j        dk     r|dz  }Œæd S d S )	NTé   ÚPRECALL©é   é   rI   rD   )rC   ÚEXTENDED_ARGÚSTORE_)Ú
isinstancer   rU   ÚClassDefr   r]   rR   ÚsysÚversion_infoÚ
startswithrS   rT   rQ   )r^   r   r`   Ú	node_funcs       r    r[   z%PositionNodeFinder.test_for_decorator„   s@  € å�t”{¥S¤\Õ3FÐ$GÑHÔHð,	à˜œÔ2Ð2Ð2àœˆIð&ð& —[’[ ¨¡Ñ+Ô+¨yÒ8Ð8½CÔ<LÐPWÒ<WÐ<WØŸš EÑ*Ô*¨fÒ4Ð4à�Eà˜‘
�à—k’k %Ñ(Ô(Ð,EÐEÐEØ˜Q‘J�Eð —k’k %Ñ(Ô(Ð,EÐEÐEð —K’K Ñ&Ô&×1Ò1°(Ñ;Ô;ðàŸš uÑ-Ô-°Ò:Ð:à"+�D”KØ%)�D”NØ�FåÔ# gÒ-Ð-Ø˜Q‘J�EðM&ð,	ð ,	à2Ð2r"   rX   c                 óX  — t           j        dk    r=|j        dv r4t          |j        t
          j        ¦  «        r||j        j        u r|j        S t           j        dk    rˆ|j        dv rt          |j        j        t
          j        t
          j	        t
          j
        t
          j        f¦  «        r9t          |j        t
          j        ¦  «        r||j        j        u r|j        j        S t           j        dk    rv|j        dk    rk|                      |¦  «        }|�T|j        dk    rI|j        |j        k    r9t          |j        t
          j        ¦  «        r||j        j        u r|j        j        S t           j        dk    rD|j        dk    r9t          |j        t
          j        ¦  «        r||j        j        u r|j        j        S t           j        dk    r|j        dk    rt|                      |¦  «        }|�]|j        dk    rR|j        d	v rI|j        |j        k    r9t          |j        t
          j        ¦  «        r||j        j        u r|j        j        S t           j        dk    rKt          |t
          j        ¦  «        r1t          |j        t
          j        ¦  «        r|j        d
k    r|j        S |S )N)re   rf   é   ©ÚGET_ITERÚFOR_ITER)re   rf   é   rI   Ú
LOAD_CONSTÚBEFORE_WITH©re   é   ÚLOAD_SPECIAL)Ú	__enter__Ú
__aenter__Ú	UNARY_NOT)rk   rl   rR   ri   r   rU   ÚForÚiterÚListCompÚSetCompÚDictCompÚGeneratorExpÚcomprehensionÚinstruction_beforeÚ	positionsÚwithitemÚcontext_exprÚargreprÚUnaryOpÚopÚNotÚoperand)r^   r   rX   Úbefores       r    rY   zPositionNodeFinder.fix_result³   sž  € õ Ô 
Ò*Ð*ØÔ"Ð&>Ð>Ð>Ý˜4œ;­¬Ñ0Ô0ð ?à˜œÔ(Ð(Ð(ð  ”;Ðõ Ô 
Ò*Ð*ØÔ"Ð&>Ð>Ð>ÝØ”Ô"Ý”�sœ{­C¬L½#Ô:JÐKñô ð ?õ
 ˜4œ;¥sÔ'8Ñ9Ô9ð ?ð ˜œÔ(Ð(Ð(ð
 ”;Ô%Ð%åÔ˜yÒ(Ð(¨[Ô-?À6Ò-IÐ-IØ×,Ò,¨[Ñ9Ô9ˆFàÐ"Ø”M \Ò1Ð1ØÔ$¨Ô(=Ò=Ð=Ý˜tœ{­C¬LÑ9Ô9ð >à˜DœKÔ4Ð4Ð4ð4 ”{Ô)Ð)õ Ô 	Ò)Ð)ØÔ" mÒ3Ð3Ý˜4œ;­¬Ñ5Ô5ð 4à˜œÔ0Ð0Ð0ð ”;Ô%Ð%åÔ˜wÒ&Ð&¨;Ô+=ÀÒ+GÐ+GØ×,Ò,¨[Ñ9Ô9ˆFàÐ"Ø”M ^Ò3Ð3Ø”NÐ&@Ð@Ð@ØÔ$¨Ô(=Ò=Ð=Ý˜tœ{­C¬LÑ9Ô9ð >à˜DœKÔ4Ð4Ð4à”{Ô)Ð)åÔ˜wÒ&Ð&­:°d½C¼KÑ+HÔ+HÐ&ÍZÐX\ÔX_Õ`cÔ`gÑMhÔMhÐ&ÐmxÔmð  CNò  nNð  nNà”<Ðð ˆr"   c                 ó¢  — |j         dv r·t          |t          ¦  «        r¢t          |t          ¦  «        r{d„ t	          j        |j        ¦  «        D ¦   «         }t          |d¦  «         t          |¦  «        dk    r#t          t          |d         ¦  «        x}| _        n$t          d|z  ¦  «        ‚t          d|z  ¦  «        ‚t          j        d d…         d	k    rZt          |t          j        ¦  «        r@|j         d
k    r5t!          d„ t#          |¦  «        D ¦   «         ¦  «        rt          d¦  «        ‚t          |t          j        ¦  «        rt          d¦  «        ‚t!          d„ t#          |¦  «        D ¦   «         ¦  «        rt          d¦  «        ‚t          j        dk    �r(t          |t          j        ¦  «        �rt          |j        t          j        ¦  «        rî|j        j        dk    rÞ|j        }t1          |d¦  «        rct          |t          j        t          j        f¦  «        s=|j        }t1          |d¦  «        r&t          |t          j        t          j        f¦  «        ¯=d }t1          |d¦  «        r)g |j        j        ¢|j        j        ¢}|r|d         j        }|j         |j        fdd|fd|fd|ffv rt          d¦  «        ‚|                      ||¦  «        rt          d¦  «        ‚|j         dk    r|j        dk    rt          d¦  «        ‚|j         d
k    r_t          |t          j        ¦  «        sEt!          d„ tA          |¦  «        D ¦   «         ¦  «        rt          j        dk    rt          d¦  «        ‚t          j        d k    r³|j         d!v rt          d"|j         › d#�¦  «        ‚|j         d$v r|j        d%k    rt          d&¦  «        ‚|j         d'k    rdt          |t          j!        ¦  «        rJt          |j"        t          j        ¦  «        r+t          |j#        t          j$        ¦  «        r|j"        | _        t          j        d(k    �ry|  %                    ¦   «         x}rÂtM          | j'         (                    ¦   «         ¦  «        d)         }|d*z  |j)        cxk     r	|d+z
  k     sn t          d,¦  «        ‚| j*        j+        j,        d-k    r|j         d.k    rt          d/¦  «        ‚| j*        j+        j,        d-k    r)t          |t          j-        ¦  «        rt          d0¦  «        ‚t          |t          j.        ¦  «        r.| j*        j+        j,        |j/        j        k    rt          d1¦  «        ‚|j         dk    r|j0        d-k    rt          d2¦  «        ‚|j         d3k    r+t          |t          j        ¦  «        rt          d4¦  «        ‚d S d S d S )5N©Ú
COMPARE_OPÚIS_OPÚCONTAINS_OPc                 óv   — g | ]6}t          |t          j        ¦  «        rt          |j        ¦  «        d k    ¯4|‘Œ7S )r   )ri   rU   ÚCompareÚlenÚops©r@   Úns     r    ú
<listcomp>z3PositionNodeFinder.known_issues.<locals>.<listcomp>'  sG   € ð ð ð àÝ! !¥S¤[Ñ1Ô1ðõ 7:¸!¼%±j´jÀ1²n°nð à6D°n°nr"   z expected at least one comparisonr   r   z4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixedre   )re   é   r   rI   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   ©ri   rU   ÚAssertr—   s     r    ú	<genexpr>z2PositionNodeFinder.known_issues.<locals>.<genexpr>>  s.   è è € ÐNÐN°!•J˜q¥#¤*Ñ-Ô-ÐNÐNÐNÐNÐNÐNr"   zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921Úassertc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   )ri   rU   Úpatternr—   s     r    rž   z2PositionNodeFinder.known_issues.<locals>.<genexpr>J  s.   è è € ÐJÐJ¨a�z˜!�Sœ[Ñ)Ô)ÐJÐJÐJÐJÐJÐJr"   z)pattern matching ranges seems to be wrongrd   Úsuperr   Úargs)Ú
LOAD_DEREFÚ	__class__Ú	LOAD_FASTÚLOAD_FAST_BORROWr¤   zsuper optimizationzCexeption cleanup does not belong to the last node in a except blockÚ
STORE_NAMEÚ__classcell__zstore __classcell__c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r$   rœ   )r@   Úps     r    rž   z2PositionNodeFinder.known_issues.<locals>.<genexpr>…  s.   è è € ÐEÐE°!•J˜q¥#¤*Ñ-Ô-ÐEÐEÐEÐEÐEÐEr"   )re   rš   rD   z&exception generation maps to condition©re   é   )ÚSTORE_FAST_STORE_FASTÚSTORE_FAST_LOAD_FASTÚLOAD_FAST_LOAD_FASTzcan not map z to two ast nodes©r¦   r§   r¥   z^loading of __class__ is accociated with a random node at the end of a class if you use super()r�   rw   éÿÿÿÿrD   rb   zAsynthetic opcodes in annotations are just bound to the first nodeÚ__annotate__ÚSTORE_SUBSCRz"synthetic code to store annotationz<some opcodes in the annotation are just bound specific nodesz7some opcodes in the annotation are just bound TypeAliaszjust a store of the annotationr‘   z3part of a check that a name like `all` is a builtin)1rR   ri   Útypes_cmp_issueÚtypes_cmp_issue_fixrU   ÚwalkÚtestr   r•   r   r   rT   r   rk   rl   r”   Úanyr%   r�   rW   ÚfuncÚNameÚidr   r   ÚAsyncFunctionDefÚFunctionDefr£   ÚposonlyargsÚargÚargvalÚis_except_cleanupr!   r‰   rŒ   rŠ   r‹   Úannotation_header_sizer)   rP   Úkeysr?   r7   rO   Úco_nameÚ	AnnAssignÚ	TypeAliasÚnamerˆ   )	r^   r   rX   Úcomparisonsrº   Ú	first_argr£   Úheader_lengthÚlast_offsets	            r    rZ   zPositionNodeFinder.known_issues  s'  € ØÔÐ!GÐGÐGÍJØ•/ñM
ô M
ÐGõ ˜$Õ 3Ñ4Ô4ð Yðð å œX d¤iÑ0Ô0ðñ ô �õ ˜Ð%GÑHÔHÐHå�{Ñ#Ô# qÒ(Ð(Ý)-­k¸;Àq¼>Ñ)JÔ)JÐJ�D˜4œ;˜;å$ØNÐRVÑWñô ð õ !Ð!NÐRVÑ!WÑXÔXÐXõ Ô˜R˜a˜RÔ  JÒ.Ð.Ý˜4¥¤Ñ-Ô-ð /àÔ" fÒ,Ð,ÝÐNÐNÕ7GÈÑ7MÔ7MÐNÑNÔNÑNÔNð -õ ØTñô ð õ �d�CœJÑ'Ô'ð 	'õ ˜XÑ&Ô&Ð&åÐJÐJÕ3CÀDÑ3IÔ3IÐJÑJÔJÑJÔJð 	JåÐHÑIÔIÐIõ Ô Ò'Ñ'Ý˜4¥¤Ñ*Ô*ñ (å˜4œ9¥c¤hÑ/Ô/ð (ð ”	” Ò'Ð'ð
 ”;ˆDÝ˜$ Ñ)Ô)ð #µ*Ø•sÔ+­S¬_Ð=ñ3ô 3ð #ð ”{�õ	 ˜$ Ñ)Ô)ð #µ*Ø•sÔ+­S¬_Ð=ñ3ô 3ð #ð ˆIå�t˜VÑ$Ô$ð ,Ø@˜œÔ.Ð@°´´Ð@�Øð ,Ø $ Q¤¤�IàÔ" KÔ$6Ð7Ø+Ø˜iÐ(Ø# YÐ/Ø˜yÐ)ð	<ð ð õ !Ð!5Ñ6Ô6Ð6à×!Ò! +¨tÑ4Ô4ð 	dÝÐbÑcÔcÐcàÔ Ò-Ð-°+Ô2DÈÒ2WÐ2Wõ Ð2Ñ3Ô3Ð3ð Ô &Ò(Ð(Ý˜t¥C¤HÑ-Ô-ð )åÐEÐEµw¸t±}´}ÐEÑEÔEÑEÔEð )õ Ô  JÒ.Ð.åÐEÑFÔFÐFåÔ˜wÒ&Ð&ØÔ!ð &ð ð õ
 !Ð!U°Ô0BÐ!UÐ!UÐ!UÑVÔVÐVàÔ!Ð%EÐEÐEÈ+ÔJ\Ð`kÒJkÐJkõ !Øuñô ð ð
 Ô" lÒ2Ð2Ý˜t¥S¤[Ñ1Ô1ð 3å˜tœ|­C¬KÑ8Ô8ð 3õ ˜tœw­¬Ñ0Ô0ð 3ð #œl�”åÔ˜vÒ%Ñ%ð !%× ;Ò ;Ñ =Ô =Ð=ˆ}ð eå  ¤×!2Ò!2Ñ!4Ô!4Ñ5Ô5°bÔ9�à& q™¨;Ô+=ÐLÐLÒLÐL¸{È1¹}ÒLÐLÐLÐLõ %Ð%hÑiÔiÐià”:Ô$Ô,¨nÒ<Ð<ÀÔASÐUcÒAcÐAcÝ$Ð%IÑJÔJÐJà”:Ô$Ô,¨nÒ<Ð<ÅÈDÕQTÔQ^ÑA_ÔA_Ð<Ý$Ð%cÑdÔdÐdå˜$¥¤Ñ/Ô/ð \°T´ZÔ5FÔ5NÐPTÔPYÔP\Ò5\Ð5\Ý Ð!ZÑ[Ô[Ð[àÔ! \Ò1Ð1°kÔ6IÈ^Ò6[Ð6[Ý Ð!AÑBÔBÐBàÔ! WÒ,Ð,µ¸DÅÄÑ1JÔ1JÐ,Ý Ð!VÑWÔWÐWð3 &Ð%ð0 -Ð,Ð,Ð,r"   c                 óö   — t           j        dk    rhd„ t          j        | j                             ¦   «         d¦  «        D ¦   «         }t          |¦  «        dk    r|d         dv r|d= d}n|d= d}|g d¢k    r|S dS )Nrw   c                 ó   — g | ]	}|j         ‘Œ
S r>   )rR   )r@   Úinsts     r    r™   z=PositionNodeFinder.annotation_header_size.<locals>.<listcomp>Æ  s   € ÐVÐVÐV D�D”KÐVÐVÐVr"   é   r   )ÚCOPY_FREE_VARSÚ	MAKE_CELLé   )ÚRESUMEr§   ÚLOAD_SMALL_INTr�   ÚPOP_JUMP_IF_FALSEÚ	NOT_TAKENÚLOAD_COMMON_CONSTANT)rk   rl   Ú	itertoolsÚislicerP   Úvaluesr•   )r^   ÚheaderÚheader_sizes      r    rÃ   z)PositionNodeFinder.annotation_header_sizeÄ  s¡   € ÝÔ˜fÒ$Ð$ØVÐV­IÔ,<¸T¼\×=PÒ=PÑ=RÔ=RÐSTÑ,UÔ,UÐVÑVÔVˆFå�6‰{Œ{˜AŠ~ˆ~Ø˜!”9Ð >Ð>Ð>Ø˜q˜	Ø !�K�Kà˜q˜	Ø !�Kàð ð ð ò ð ð 'Ð&àˆqr"   rÏ   c                 ó  ‡ — ‰ j         dvrdS t          |t          j        ¦  «        rSt          |j        t          j        ¦  «        r4‰ j                              d¦  «        rt          |¦  «        ‰ j        k    rdS t          |t          j        ¦  «        rSt          |j        t          j	        ¦  «        r4‰ j                              d¦  «        rt          |¦  «        ‰ j        k    rdS t          ˆ fd„t          |¦  «        D ¦   «         ¦  «        S )N)r¨   Ú
STORE_FASTÚSTORE_DEREFÚSTORE_GLOBALÚDELETE_NAMEÚDELETE_FASTÚDELETE_DEREFÚDELETE_GLOBALFrh   ÚDELETE_c              3   óŠ   •K  — | ]=}t          |t          j        ¦  «        o|j        ot	          |¦  «        ‰j        k    V — Œ>d S r$   )ri   rU   ÚExceptHandlerrÈ   r   rÁ   )r@   r˜   rÏ   s     €r    rž   z7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  s]   øè è € ð 
ð 
àõ �q�#Ô+Ñ,Ô,ÐZ°´ÐZ½LÈ¹O¼OÈtÌ{Ò<Zð
ð 
ð 
ð 
ð 
ð 
r"   )rR   ri   rU   r»   ÚctxÚStorerm   r   rÁ   ÚDelr¹   r!   )rÏ   r   s   ` r    rÂ   z$PositionNodeFinder.is_except_cleanupÝ  s$  ø€ àŒ;ð 	
ð 	
ð 	
ð �5õ, �t�SœXÑ&Ô&ð	å˜4œ8¥C¤IÑ.Ô.ð	ð ”×&Ò& xÑ0Ô0ð	õ ˜TÑ"Ô" d¤kÒ1Ð1ð �5õ �t�SœXÑ&Ô&ð	å˜4œ8¥C¤GÑ,Ô,ð	ð ”×&Ò& yÑ1Ô1ð	õ ˜TÑ"Ô" d¤kÒ1Ð1ð �5åð 
ð 
ð 
ð 
å˜T‘]”]ð
ñ 
ô 
ñ 
ô 
ð 	
r"   c           	      ór  ‡‡‡— ‰j         }d„ }t          d¦  «        }dt          t          t          t                   f         dt
          dt          fˆfd„}dt          t          t          t          df         f         dt
          dt          fˆfd	„}|d
k    rdS  |d¦  «        r# |t          j
        t          j        f¦  «        rdS  |d¦  «        r9 |t          j        t          j        t          j        t          j        f¦  «        rdS t           j        dk    r9 |d¦  «        r. |t          j        t          j        t          j        f¦  «        rdS  |d¦  «        r# |t          j        t          j        f¦  «        rdS  |d¦  «        r |t          j        ¦  «        rdS  |dd¬¦  «        r |t          j        ¦  «        rdS  |dd¬¦  «        s |dd¬¦  «        s |d¦  «        r} |t          j        t          j        t          j        ¬¦  «        rQt3          t5          t          j        t5          t          j        ‰¦  «        j        ¦  «        j        t          ¦  «        rdS  |d¦  «        r |t          j        ¦  «        rdS  |d¦  «        r) |t          j        ‰j        t          j        ¬¦  «        rdS  |d¦  «        r8 |t          j         ¦  «        s! |t          j        t          j        ¬¦  «        rdS  |d¦  «        r |t          j
        ¦  «        rdS  |dd ¬¦  «        r |t          j        ¦  «        rdS  |d!¦  «        r/ |t          j!        ¦  «        r‰j        tE          ‰¦  «        k    rdS  |d"¦  «        r[ |t          j#        t          j$        f¦  «        r:tK          ˆfd#„t5          t          j#        ‰¦  «        j&        D ¦   «         ¦  «        rdS  |d$¦  «        rg |t          j'        t          j        t          j(        f¦  «        s! |t          j        t          j)        ¬%¦  «        r‰j        tE          ‰¦  «        k    rdS 	  |d+¦  «        rD‰j-         .                    d,¦  «        }|d-k    r$ |t          j/        t`          |         ¬¦  «        rdS  |t          j1        t          j        ¬%¦  «        r |d.tE          ‰¦  «        ¬¦  «        rdS  |d/¦  «        r |t          j2        ¦  «        rdS  |d0¦  «        r# |t          j3        t          j        ¬%¦  «        rdS  |t          j        t          j4        ¬%¦  «        s@ |t          j        t          j)        ¬%¦  «        rut3          ‰j5        t          j/        ¦  «        rV |d1¦  «        rKt3          ‰j        tl          ¦  «        rtE          ‰¦  «        ‰j        v rn‰j        tE          ‰¦  «        k    rdS  |t          j        t          j        ¬%¦  «        r |d2tE          ‰¦  «        ¬¦  «        rdS  |t          j        ¦  «        r, |d3t5          t          j        ‰¦  «        j        ¬¦  «        rdS  |t          j        t          j        t          j        t          j        t          j7        f¦  «        r |d4¦  «        rdS t           j        dk    �r  |t          j8        t          j9        ¬¦  «        r |d5d6¬7¦  «        rdS  |t          j3        ¦  «        r |d8¦  «        rdS  |t          j$        ¦  «        r |d5d9¬7¦  «        rdS  |t          j:        ¦  «        st3          ‰j5        t          j        ¦  «        r |d5d:¬7¦  «        rdS  |t          j        ¦  «        r |d;d<¬¦  «        rdS  |t          j;        ¦  «        rC |d5d=¬7¦  «        s4 |d>d?¬7¦  «        s' |d>d@¬7¦  «        s |dAtE          ‰¦  «        ¬7¦  «        rdS  |t          j<        ¦  «        r! |d5dB¬7¦  «        s |dA‰j=        ¬7¦  «        rdS  |t          j>        ¦  «        r! |d5dC¬7¦  «        s |dA‰j=        ¬7¦  «        rdS  |t          j?        ¦  «        r1 |d5dD¬7¦  «        s" |d"‰j=        j@        ¬7¦  «        s |d¦  «        rdS  |t          j        ¦  «        rC‰jA        r< |dEdF¬7¦  «        rdS  |dGdH¬7¦  «        rdS  |d5dI¬7¦  «        rdS  |d;d<¬¦  «        rdS  |t          j'        t          j(        f¦  «        r`‰jA        rY |d¦  «        rdS  |d>dJ¬7¦  «        rdS  |dKdL¬¦  «        rdS  |dKdM¬¦  «        rdS t           j        dNk    r |dOdP¬¦  «        rdS  |dQdR¬¦  «        rdS  |t          j         ¦  «        r |dd¬¦  «        s |dS¦  «        rdS  |t          jB        ¦  «        r |dT¦  «        rdS t           j        dUk    �r‚ |dV¦  «        rdS  |dW¦  «        r |t          j2        ¦  «        rdS  |dX¦  «        r# |t          j        t          j        f¦  «        rdS  |dKdF¬¦  «        rdS  |dKd<¬¦  «        rdS  |dY¦  «        rO |t          j'        t          j        t          j?        t          j;        t          jC        t          j(        f¦  «        rdS  |dK¦  «        r, |t          j?        ¦  «        r‰j=        j@        ‰j        k    rdS  |dQdZ¬¦  «        rdS  |dY¦  «        r!t3          ‰j5        t          j;        ¦  «        rdS  |d>d[¬7¦  «        r. |t          j;        t          j>        t          j<        f¦  «        rdS t           j        dNk    rr |d+d-¬7¦  «        r |t          j3        ¦  «        rdS  |d\d<¬¦  «        rdS  |d]d^¬¦  «        rdS  |dO¦  «        r% |t          j        ¦  «        r‰j@        ‰j        v rdS t          d¦  «        }	t          d¦  «        Š| D                    d_¦  «        rt          j3        }	t          j4        }�nZ| D                    d`¦  «        r%t          j        }	t`          ‰j-                 Šˆfda„}�n | D                    db¦  «        rSt          j8        }	t‹          t          j9        t          jF        t          jG        t          jH        ¬c¦  «        |         Šˆfdd„}n¸|dev rt          j1        }	t          j4        }ˆfdf„}n–|dgv rt          j        }	t          j4        }ˆfdh„}nt|dv rt          j        }	di„ }n`| D                    dj¦  «        rt          j)        }t          j3        }	n2| D                    dk¦  «        rt          j)        }t          j1        }	ˆfdl„}t“          ‰dmd¦  «        }
|t          d¦  «        up t•          ‰dm¦  «         pt3          |
|¦  «        }t3          ‰|	¦  «        r|r |‰¦  «        rdS dnt          ‰¦  «        jK        ›do‰j         ›�}t™          |‰‰¦  «        ‚)pzE
        checks if this node could gererate this instruction
        c                 ó   — dS )NTr>   ©Úes    r    ú<lambda>z+PositionNodeFinder.verify.<locals>.<lambda>  s   € À€ r"   NÚopnamesÚkwargsr   c                 ój   •— t          | t          ¦  «        r| g} ‰j        | v o|ˆfd„|D ¦   «         k    S )a)  
            match instruction

            Parameters:
                opnames: (str|Seq[str]): inst.opname has to be equal to or in `opname`
                **kwargs: every arg has to match inst.arg

            Returns:
                True if all conditions match the instruction

            c                 ó2   •— i | ]}|t          ‰|¦  «        “ŒS r>   ©Úgetattr)r@   ÚkrX   s     €r    rB   zAPositionNodeFinder.verify.<locals>.inst_match.<locals>.<dictcomp>-  s8   ø€ ð @ð @ð @Ø/0�•7˜;¨Ñ*Ô*ð@ð @ð @r"   )ri   ÚstrrR   )rñ   rò   rX   s     €r    Ú
inst_matchz-PositionNodeFinder.verify.<locals>.inst_match  sg   ø€ õ ˜'¥3Ñ'Ô'ð $Ø"˜)�ØÔ%¨Ð0ð °Vð @ð @ð @ð @Ø4:ð@ñ @ô @ò 6ð r"   Ú	node_type.c                 ó~   •— t          ‰| ¦  «        o,t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        S )a  
            match the ast-node

            Parameters:
                node_type: type of the node
                **kwargs: every `arg` has to be equal `node.arg`
                        or `node.arg` has to be an instance of `arg` if it is a type.
            c              3   ó¬   •K  — | ]N\  }}t          |t          ¦  «        rt          t          ‰|¦  «        |¦  «        nt          ‰|¦  «        |k    V — ŒOd S r$   )ri   Útyperö   )r@   r÷   Úvr   s      €r    rž   z@PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>:  sw   øè è € ð 7ð 7ñ �A�qõ ˜a¥Ñ&Ô&ð+•
�7 4¨Ñ+Ô+¨QÑ/Ô/Ð/å˜T 1Ñ%Ô%¨Ò*ð7ð 7ð 7ð 7ð 7ð 7r"   )ri   ÚallÚitems)rú   rò   r   s     €r    Ú
node_matchz-PositionNodeFinder.verify.<locals>.node_match1  sX   ø€ õ ˜d IÑ.Ô.ð µ3ð 7ð 7ð 7ð 7ð #ŸLšL™NœNð	7ñ 7ô 7ñ 4ô 4ð r"   rC   rI   )rI   r¦   r§   rd   )ÚLOAD_FAST_AND_CLEARrß   )rI   ÚCALL_FUNCTION_EXr�   Ú	LOAD_NAMEÚ__annotations__)rÁ   rE   ÚjoinrF   )rI   ÚBUILD_STRING)ÚleftrŠ   r´   )râ   rã   )r¼   ré   r  )rŠ   )rv   ÚWITH_EXCEPT_START)r¨   rá   Ú__doc__)r¨   rß   rá   rà   )r¨   rß   rà   rá   c              3   ón   •K  — | ]/}t          t          t          |¦  «        ¦  «        ‰j        k    V — Œ0d S r$   )r   r   r   rÁ   )r@   ÚaliasrX   s     €r    rž   z,PositionNodeFinder.verify.<locals>.<genexpr>“  s>   øè è € Ð{Ð{ÐUZ•L¥¥k°5Ñ!9Ô!9Ñ:Ô:¸kÔ>PÒPÐ{Ð{Ð{Ð{Ð{Ð{r"   )rß   rà   r¨   rá   )ré   F)rß   r¨   )rÈ   r�   z==Ú	BINARY_OPú=z[]rH   )ÚJUMP_IF_TRUE_OR_POPÚJUMP_IF_FALSE_OR_POPÚPOP_JUMP_IF_TRUErÖ   ÚDELETE_SUBSCR)r  r¦   ÚLOAD_FAST_CHECKr§   ÚLOAD_GLOBALr¤   ÚLOAD_FROM_DICT_OR_DEREFÚ!LOAD_FAST_BORROW_LOAD_FAST_BORROW)râ   rå   rä   )ru   rÕ   rq   ÚCALL_INTRINSIC_1ÚINTRINSIC_UNARY_POSITIVE)rˆ   ÚBINARY_SLICEÚINTRINSIC_IMPORT_STARÚINTRINSIC_ASYNC_GEN_WRAPr¤   Ú__classdict__ÚINTRINSIC_TYPEVARÚCALL_INTRINSIC_2ÚINTRINSIC_TYPEVAR_WITH_BOUNDÚ"INTRINSIC_TYPEVAR_WITH_CONSTRAINTS)rß   rà   ÚINTRINSIC_TYPEVARTUPLEÚINTRINSIC_PARAMSPECÚINTRINSIC_TYPEALIAS)rà   r¤   r  z.type_params)rß   r¦   z.generic_baseÚINTRINSIC_SUBSCRIPT_GENERICÚ"INTRINSIC_SET_FUNCTION_TYPE_PARAMSr¦   ú	.defaultsú.kwdefaultsrw   r  )r&  r'  r¨   Ú__classdictcell__)ÚLIST_APPENDrI   ÚFORMAT_VALUEr¬   ÚNOPÚTO_BOOLrJ   r±   Ú__static_attributes__ÚINTRINSIC_SET_TYPEPARAM_DEFAULTr§   )r¨   r  Ú__conditional_annotations__)ÚBINARY_SUBSCRzSLICE+ÚBINARY_c                 ó^   •— t          t          t          j        | ¦  «        j        ‰¦  «        S r$   )ri   r   rU   ÚBinOprŠ   ©rï   Úop_types    €r    rð   z+PositionNodeFinder.verify.<locals>.<lambda>©  s    ø€ ¥ZµµS´YÀÑ0BÔ0BÔ0EÀwÑ%OÔ%O€ r"   ÚUNARY_)ÚUNARY_POSITIVEÚUNARY_NEGATIVEr|   ÚUNARY_INVERTc                 ó^   •— t          t          t          j        | ¦  «        j        ‰¦  «        S r$   )ri   r   rU   r‰   rŠ   r4  s    €r    rð   z+PositionNodeFinder.verify.<locals>.<lambda>²  s    ø€ ¥ZµµS´[À!Ñ0DÔ0DÔ0GÈÑ%QÔ%Q€ r"   )rF   rE   ÚLOOKUP_METHODÚLOAD_SUPER_ATTRc                 ó4   •— t          | ¦  «        ‰j        k    S r$   ©r   rÁ   ©rï   rX   s    €r    rð   z+PositionNodeFinder.verify.<locals>.<lambda>¶  ó   ø€ ¥\°!¡_¤_¸Ô8JÒ%J€ r"   )r  r  r¦   r¤   ÚLOAD_CLASSDEREFc                 óT   •— t          t          j        | ¦  «        j        ‰j        k    S r$   )r   rU   r»   r¼   rÁ   r?  s    €r    rð   z+PositionNodeFinder.verify.<locals>.<lambda>À  s   ø€ ¥T­#¬(°AÑ%6Ô%6Ô%9¸[Ô=OÒ%O€ r"   c                 ób   — t          t          t          j        | ¦  «        j        ¦  «        dk    S )Nr   )r•   r   rU   r”   r–   rî   s    r    rð   z+PositionNodeFinder.verify.<locals>.<lambda>Ã  s"   € ¥S­­c¬k¸1Ñ)=Ô)=Ô)AÑ%BÔ%BÀaÒ%G€ r"   )ÚSTORE_SLICEr´   rG   c                 ó4   •— t          | ¦  «        ‰j        k    S r$   r>  r?  s    €r    rð   z+PositionNodeFinder.verify.<locals>.<lambda>Ê  r@  r"   ré   zast.z is not created from )MrR   rý   r   rø   r	   r   Úboolr   r   rU   ÚWithÚ	AsyncWithr   r‚   r€   r�   rk   rl   rj   rW   r”   rÆ   r3  ÚConstantÚModri   r   r  Úvaluer»   rÁ   rë   Ú	JoinedStrrè   r   ÚImportÚ
ImportFromr¹   Únamesr¾   r½   rê   ÚMatchAsÚMatchSequenceÚ
MatchValuerˆ   ÚremovesuffixÚ	AugAssignÚop_type_maprV   ÚBoolOpÚ	SubscriptÚLoadr   Útupler}   r‰   ÚUAddÚYieldÚTypeVarÚTypeVarTuplerÈ   Ú	ParamSpecrÇ   r¼   Útype_paramsÚFormattedValueÚLambdarm   ÚdictÚUSubr‹   ÚInvertrö   r   Ú__name__r   )r^   r   rX   Úop_nameÚextra_filterré   rù   r  rÀ   rN   Únode_ctxÚ	ctx_matchÚtitler5  s    ``          @r    r\   zPositionNodeFinder.verify  s‚  øøø€ ð
 Ô$ˆØ6D°nˆÝ˜‘J”Jˆð	¥¥c­8µC¬=Ð&8Ô 9ð 	ÅSð 	ÍTð 	ð 	ð 	ð 	ð 	ð 	ð&	¥%­­eµD¸#°IÔ.>Ð(>Ô"?ð 	Í3ð 	ÕSWð 	ð 	ð 	ð 	ð 	ð 	ð  �gÒÐØˆFàˆ:�fÑÔð 	 * *­c¬h½¼Ð-FÑ"GÔ"Gð 	àˆFàˆ:Ð>Ñ?Ô?ð 	ÀJÀJÝŒ\�3Ô+­S¬[½#¼,ÐGñE
ô E
ð 	ð ˆFõ Ô Ò'Ð'Ø�
Ð@ÑAÔAð (à�
�CœL­#¬+µs´|ÐDÑEÔEð (ð ˆFàˆ:Ð2Ñ3Ô3ð 	¸
¸
ÝŒ\�3œ8Ð$ñ9
ô 9
ð 	ð ˆFàˆ:Ð<Ñ=Ô=ð 	À*À*ÝŒKñC
ô C
ð 	ð ˆFàˆ:�kÐ*;Ð<Ñ<Ô<ð 	ÀÀÝŒMñB
ô B
ð 	ð ˆFð �
˜=°Ð8Ñ8Ô8ð
	ð �:˜k°&Ð9Ñ9Ô9ð
	ð �:Ð6Ñ7Ô7ð	
	ð �
�3œ9­3¬<½C¼GÐDÑDÔDð
	õ �4¥¤­dµ3´9¸dÑ.CÔ.CÔ.HÑIÔIÔOÕQTÑUÔUð
	ð ˆFàˆ:�nÑ%Ô%ð 	¨*¨*µS´]Ñ*CÔ*Cð 	àˆFð ˆ:Ð4Ñ5Ô5ð 	¸*¸*ÝŒH˜Ô+µ´ð;
ñ ;
ô ;
ð 	ð ˆFàˆ:�nÑ%Ô%ð 	ØˆJ•s”}Ñ%Ô%ð	Ø)3¨µC´IÅ#Ä'Ð)JÑ)JÔ)Jð	ð ˆFàˆ:Ð9Ñ:Ô:ð 	¸z¸zÍ#Ì(Ñ?SÔ?Sð 	ØˆFàˆ:Ð4¸YÐGÑGÔGð 	ÈJÈJÝŒLñM
ô M
ð 	ð ˆFð ˆJÐRÑSÔSð	à�
�3Ô,Ñ-Ô-ð	ð Ô"¥l°4Ñ&8Ô&8Ò8Ð8ð ˆFð ˆJÐRÑSÔSð	à�
�CœJ­¬Ð7Ñ8Ô8ð	õ Ð{Ð{Ð{Ð{Õ^bÕcfÔcmÐosÑ^tÔ^tÔ^zÐ{Ñ{Ô{Ñ{Ô{ð	ð ˆFð ˆJÐRÑSÔSð	ð �
�CœO­S¬\½3Ô;OÐPÑQÔQð	ð �:Ý”HÝœ	ðñ ô ð		ð Ô"¥l°4Ñ&8Ô&8Ò8Ð8àˆFð	ð ˆ:�kÑ"Ô"ð 	ØÔ#×0Ò0°Ñ5Ô5ˆCà�DŠyˆy˜Z˜Z­¬½;ÀsÔ;KÐLÑLÔLˆyà�àˆ:•c”m­¬Ð1Ñ1Ô1ð 	°j°jØ¥,¨tÑ"4Ô"4ð7
ñ 7
ô 7
ð 	ð ˆFàˆ:ðñ
ô 
ð 		ð ˆj�œÑ$Ô$ð		ð ˆFàˆ:�oÑ&Ô&ð 	¨:¨:µc´mÍÌÐ+QÑ+QÔ+Qð 	ØˆFð ˆJ•s”x¥S¤XÐ.Ñ.Ô.ð	ð �
�3œ8­¬Ð3Ñ3Ô3ð	õ ˜tœ{­C¬MÑ:Ô:ð		ð ˆjð	ñ
ô 
ð	õ$ 9CÀ;ÔCUÕV[Ñ8\Ô8\ð%	õ$ ˜ÑÔ +Ô"4Ð4Ð4Ð4ØÔ#¥|°DÑ'9Ô'9Ò9Ð9àˆFàˆ:•c”h¥C¤GÐ,Ñ,Ô,ð 	°°Ø<Å\ÐRVÑEWÔEWð2
ñ 2
ô 2
ð 	ð ˆFàˆ:•c”lÑ#Ô#ð 	¨
¨
Ø+µD½¼ÀtÑ4LÔ4LÔ4Rð)
ñ )
ô )
ð 	ð ˆFàˆ:ÝŒ\�3œ;­¬µcÔ6FÍÌÐPñ
ô 
ð 	àˆjÐ1Ñ2Ô2ð	ð ˆFåÔ˜wÒ&Ñ&Øˆz�#œ+­#¬(Ð3Ñ3Ô3ð ¸
¸
Ø"Ð,Fð9ñ 9ô 9ð ð �àˆz�#œ-Ñ(Ô(ð ¨Z¨Z¸Ñ-GÔ-Gð Ø�àˆz�#œ.Ñ)Ô)ð ¨j¨jØ"Ð,Cð/ñ /ô /ð ð �ð �
�3œ9Ñ%Ô%ðÝ)3°D´KÅÔAQÑ)RÔ)Rðà�*Ð/Ð9SÐTÑTÔTðð �àˆz�#œ(Ñ#Ô#ð ¨
¨
°<ÀÐ(WÑ(WÔ(Wð Ø�àˆz�#œ+Ñ&Ô&ð 
Ø�
Ð-Ð7JÐKÑKÔKð
à�:Ø&Ð0Nðñ ô ð
ð
 �:Ø&Ð0Tðñ ô ð
ð �:Ð;Å\ÐRVÑEWÔEWÐXÑXÔXð
ð �àˆz�#Ô*Ñ+Ô+ð Ø�
Ð-Ð7OÐPÑPÔPðà�:Ð;ÀTÄYÐOÑOÔOðð �àˆz�#œ-Ñ(Ô(ð Ø�
Ð-Ð7LÐMÑMÔMðð �:Ð;ÀTÄYÐOÑOÔOðð �ð ˆz�#œ-Ñ(Ô(ð à�JÐ1Ð;PÐQÑQÔQðà!�zØRÐ\`Ô\eÔ\hðñ ô ðð
 "�z &Ñ)Ô)ðð �Fð ˆz�#œ,Ñ'Ô'ð ¨DÔ,<ð Ø�:ØLØ*ðñ ô ð ð �Fà�:Ð9À?ÐSÑSÔSð Ø�Fà�:Ø&Ð0Mðñ ô ð ð �Fà�:˜l°/ÐBÑBÔBð Ø�Fàˆz�3œ?­3Ô+?Ð@ÑAÔAð ÀdÔFVð Ø�:˜fÑ%Ô%ð Ø�Fà�:Ø&Ð0Tðñ ô ð ð �Fà�:˜k°Ð=Ñ=Ô=ð Ø�Fà�:˜k°Ð?Ñ?Ô?ð Ø�FåÔ# wÒ.Ð.Ø!�zÐ"EÐMhÐiÑiÔið Ø˜àˆz˜,Ð/BÐCÑCÔCð à�ð
 ˆz�#œ-Ñ(Ô(ð Ø�
˜;¨vÐ6Ñ6Ô6ðà�:Ð5Ñ6Ô6ðð �àˆz�#Ô,Ñ-Ô-ð °*°*¸^Ñ2LÔ2Lð Ø�åÔ˜wÒ&Ñ&àˆz˜%Ñ Ô ð Ø�àˆz˜)Ñ$Ô$ð ¨¨µC´JÑ)?Ô)?ð Ø�àˆz˜)Ñ$Ô$ð ¨¨µS´X½s¼|Ð4LÑ)MÔ)Mð Ø�àˆz˜+¨nÐ=Ñ=Ô=ð Ø�àˆz˜+¨oÐ>Ñ>Ô>ð Ø�àˆzÐ:Ñ;Ô;ð À
À
å”OÝ”LÝ”MÝ”KÝ”JÝÔ(ðñ	Aô 	Að ð �ð �
˜;Ñ'Ô'ðà�J�sœ}Ñ-Ô-ðð ”I”L KÔ$6Ò6Ð6à�àˆz˜,Ð.EÐFÑFÔFð à�àˆzÐ:Ñ;Ô;ð Å
È4Ì;ÕWZÔWbÑ@cÔ@cð Ø�àˆzÐ,Ð5VÐWÑWÔWð Ð\fÐ\fÕhkÔhsÕtwô  uBõ  CFô  CSð  hTñ  ]Uô  ]Uð Ø�åÔ˜wÒ&Ð&Øˆz˜+¨dÐ3Ñ3Ô3ð ¸
¸
Å3Ä=Ñ8QÔ8Qð Ø�ØˆzÐ,°_ÐEÑEÔEð Ø�ØˆzÐ4Ð=ZÐ[Ñ[Ô[ð Ø�àˆzÐ=Ñ>Ô>ð À:À:ÍcÌhÑCWÔCWð Ð\`Ô\cÐgrÔgyÐ\yÐ\yØ�õ
 ˜‘J”JˆÝ˜T™
œ
ˆà×ÒÐ9Ñ:Ô:ð '	KÝ”-ˆCÝ”(ˆC‰CØ×Ò 	Ñ*Ô*ð $	KÝ”)ˆCÝ! +Ô"5Ô6ˆGØOÐOÐOÐOˆL‰LØ×Ò Ñ)Ô)ð  	KÝ”+ˆCÝÝ"œxÝ"œxÝœ'Ý œZð	ñ ô ð
 ôˆGð RÐQÐQÐQˆLˆLØÐWÐWÐWÝ”-ˆCÝ”(ˆCØJÐJÐJÐJˆLˆLØð 
ð 
ð 
õ ”(ˆCÝ”(ˆCØOÐOÐOÐOˆLˆLØÐ>Ð>Ð>Ý”+ˆCØGÐGˆLˆLØ×ÒÐ ?Ñ@Ô@ð 	KÝ”)ˆCÝ”-ˆCˆCØ×Ò Ñ-Ô-ð 	KÝ”)ˆCÝ”-ˆCØJÐJÐJÐJˆLå˜4 ¨Ñ-Ô-ˆð •t˜D‘z”zÐ!ð )Ý˜4 Ñ'Ô'Ð'ð)å˜( CÑ(Ô(ð 	õ �d˜CÑ Ô ð 	 Yð 	°<°<ÀÑ3EÔ3Eð 	ØˆFøõ
 �‰JŒJÔÐÐØÔÐð
ˆõ
 ˜e T¨;Ñ7Ô7Ð7r"   c                 ó8   — | j                              |d ¦  «        S r$   )rP   Úget)r^   r`   s     r    rX   zPositionNodeFinder.instructioná  s   € ØŒ|×Ò  dÑ+Ô+Ð+r"   c                 óH   — | j                              |j        dz
  d ¦  «        S )NrD   )rP   rl  r?   )r^   rX   s     r    r„   z%PositionNodeFinder.instruction_beforeä  s$   € ð Œ|×Ò Ô 2°QÑ 6¸Ñ=Ô=Ð=r"   c                 óB   — |                       |¦  «        }|€dS |j        S )NrC   )rX   rR   )r^   r`   Úis      r    rR   zPositionNodeFinder.opnameé  s&   € Ø
×
Ò
˜5Ñ
!Ô
!ˆØˆ9Ø�7ØŒxˆr"   r>   rd   )ÚlinenorL   Ú
col_offsetrK   rM   rN   .c                 óÂ   ‡‡‡— |                       |¦  «        }|€J ‚|j        Š‰�‰j        €J ‚t          ˆˆˆfd„| j        j        ‰j                 D ¦   «         ¦  «        S )Nc              3   ó  •‡K  — | ]yŠt          ‰‰¦  «        ¯t          ‰t          j        ¦  «        °,t          ‰t          j        ¦  «        °Ft	          ˆˆfd „‰D ¦   «         ¦  «        ¯bt          t          ‰¦  «        V — ŒzdS )c              3   ó\   •K  — | ]&}t          ‰|¦  «        t          ‰|¦  «        k    V — Œ'd S r$   rõ   )r@   Úattrr   Úpositions     €€r    rž   z9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  sP   øè è € ð ð àõ ˜ $Ñ'Ô'­7°4¸Ñ+>Ô+>Ò>ðð ð ð ð ð r"   N)ri   rU   ÚExprrR  rÿ   r   r   )r@   r   rM   rv  rN   s    @€€€r    rž   z/PositionNodeFinder.find_node.<locals>.<genexpr>
  s½   øøè è € ð 
ð 
àÝ˜$ Ñ$Ô$ð
õ ˜d¥C¤HÑ-Ô-ð	
õ ˜d¥C¤NÑ3Ô3ð
õ ð ð ð ð ð à+ðñ ô ñ ô ð
Ý•˜dÑ#Ô#ð
ð 
ð 
ð 
ð 
ð 
r"   )rX   r…   rp  r   r;   Ú_nodes_by_line)r^   r`   rM   rN   rX   rv  s     `` @r    rS   zPositionNodeFinder.find_nodeó  s�   øøø€ ð" ×&Ò& uÑ-Ô-ˆØÐ&Ð&Ð&àÔ(ˆØÐ#¨¬Ð(CÐ(CÐ(Cåð 
ð 
ð 
ð 
ð 
ð 
àœÔ2°8´?ÔCð
ñ 
ô 
ñ 
ô 
ð 	
r"   )'re  Ú
__module__Ú__qualname__r
  r   r
   r   rU   ÚModuleÚintr   r_   r[   r*   ÚInstructionrY   rZ   rÃ   ÚstaticmethodrF  rÂ   r\   r   rX   r„   rø   rR   Úextra_node_typesrk   rl   Ú
type_paramÚexprÚstmtÚexcepthandlerr¡   r	   rY  r   rS   r>   r"   r    r6   r6   B   s�  € € € € € ðð ð9B˜ið 9B°°KÔ0@ð 9BÈÌ
ð 9BÐ[^ð 9BÐhnð 9Bð 9Bð 9Bð 9Bðv- {ð -¸3ð -À4ð -ð -ð -ð -ð^eØðeØ.1¬oðeà	ðeð eð eð eðNfX ð fX¸3¼?ð fXÈtð fXð fXð fXð fXðT cð ð ð ð ð2 ð5
 ¤ð 5
°{ð 5
Àtð 5
ð 5
ð 5
ñ „\ð5
ðnJ8˜;ð J8°S´_ð J8Èð J8ð J8ð J8ð J8ðX, ð ,¨°#´/Ô)Bð ,ð ,ð ,ð ,ð>Øœ?ð>à	�#”/Ô	"ð>ð >ð >ð >ð
˜Cð  Cð ð ð ð ð ÐØ
Ô˜6Ò!Ð!ØœNÐ,Ðð
*
ð ŒHØŒHØÔØŒKð	!
ð
 ð!
ð !
ð"
ð "
àð"
ð " #œð"
ð �4˜�9Ôð"
ð  
ð!"
ð "
ð "
ð "
ð "
ð "
r"   r6   )?rU   rk   r*   Útypesr   r   Útypingr   r   r   r   r	   r
   r   r   r   r   Ú	executingr   r   r   r   r   r   Ú_exceptionsr   r   Ú_utilsr   Ú	functoolsr   rÙ   r!   r%   r)   r}  r+   ÚIfExpÚIfr�   ÚWhiler¶   r   r€   r�   r‚   rµ   ÚPowÚMultÚMatMultÚFloorDivÚDivrJ  ÚAddÚSubÚLShiftÚRShiftÚBitAndÚBitXorÚBitOrrU  Úobjectr6   r>   r"   r    ú<module>rš     sT  ðØ 
€
€
€
Ø 
€
€
€
Ø 
€
€
€
Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ø `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø Ð Ð Ð ð
�+ð  (¨;Ô"7ð ð ð ð ð˜;ð ¨8°KÔ+@ð ð ð ð ð
 €ˆ3�„ð,˜8ð ,¨¨S¬_Ô(=ð ,ð ,ð ,ñ „ð,ð
 „IØ„FØ„JØ„Ið	Ð ð &Ø„LØ„KØ„LØÔð	)ñ €ð Œ'Ø	ŒØ	ŒØ
Œ,Ø	ŒØ	ŒØ	ŒØ	ŒØ
Œ*Ø
Œ*Ø	ŒØ	ŒØ	Œðð €ð"S
ð S
ð S
ð S
ð S
˜ñ S
ô S
ð S
ð S
ð S
r"   