
    ei1                     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    o/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/executing/_position_node_finder.pyparentsr!      s9      4"" 	;DJJJJE    c              #   <   K   | V  t          |           E d {V  d S N)r!   r   s    r    node_and_parentsr%      s3      
JJJ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Mrbi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-=el-K-KMMM
04 kk%  G++QJE kk%  G++	..//DKK 	 	 	 {{5!! &   }&U##':::
 xk.. @ )  DKKK1	< &&u--&&&oodk;??$+{333U333 >!KK[11111DNdk&@@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8C<LPW<W<WE**f44E
kk%((,EEEQJE kk%((,EEE KK&&11(;;u--::"+DK%)DNF#g--QJEM&,	 ,	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{CL#:JK  ?
 4;s'899 ? (((
 ;%%y(([-?6-I-I,,[99F"M\11$(===t{CL99 >DK4444 {)) 	))"m334;55 4000 ;%%w&&;+=+G+G,,[99F"M^33N&@@@$(===t{CL99 >DK444{))w&&:dCK+H+H&ZX\X_`c`gMhMh&mxm  CN  nN  nN< r"   c                    |j         dv rt          |t                    rt          |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}rtM          | 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:!%jj1nn 6Dnnr"   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!Jq#*--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Jaz!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!Jq#*--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GJ/M
 M
G $ 344 Y  Xdi00   %GHHH{##q(()-k;q>)J)JJD4;;$NRVW   !!NRV!WXXX RaR J..4-- /"f,,NN7G7M7MNNNNN - T   dCJ'' 	' X&&&JJ3CD3I3IJJJJJ 	JHIII ''4** (49ch// ( 	''
 ;D$)) #*s+S_=3 3 # {	 $)) #*s+S_=3 3 # ItV$$ ,@.@@ , $QI"K$67+i(#Y/y)	<   !!5666!!+t44 	dbccc--+2D2W2W 2333 &((tCH-- )EEwt}}EEEEE )  J..EFFFw&&! &  
 !!U0B!U!U!UVVV!%EEE+J\`kJkJk !u  
 "l22tS[11 3t|CK88 3 tw00 3 #lv%% !% ; ; = ==} e !2!2!4!455b9&q;+=LLLL{1}LLLL %%hiii:$,n<<ASUcAcAc$%IJJJ:$,n<<DQTQ^A_A_<$%cddd$// \TZ5F5NPTPYP\5\5\ !Z[[[!\11k6I^6[6[ !ABBB!W,,D1J1J, !VWWW3 &%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VDDK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VI,<T\=P=P=R=RST,U,UVVVF6{{A~~!9 >>>q	 !KK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ZLOOt{<Z
 
 
 
 
 
r"   )rR   ri   rU   r   ctxStorerm   r   r   Delr   r!   )r   r   s   ` r    r   z$PositionNodeFinder.is_except_cleanup  s$   ; 	
 	
 	
 5, tSX&&	48CI..	 &&x00	 T""dk11 5 tSX&&	48CG,,	 &&y11	 T""dk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 |d5d67          rdS  |t          j3                  r |d8          rdS  |t          j$                  r |d5d97          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! |d5dB7          s |dAj=        7          rdS  |t          j>                  r! |d5dC7          s |dAj=        7          rdS  |t          j?                  r1 |d5dD7          s" |d"j=        j@        7          s |d          rdS  |t          j                  rCjA        r< |dEdF7          rdS  |dGdH7          rdS  |d5dI7          rdS  |d;d<          rdS  |t          j'        t          j(        f          r`jA        rY |d          rdS  |d>dJ7          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 Aq a&&+
74++Q///T1%%*7 7 7 7 7 7r"   )ri   allitems)r   r   r   s     r    
node_matchz-PositionNodeFinder.verify.<locals>.node_match1  sX     dI.. 3 7 7 7 7 #LLNN	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>      {{UZLk5!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SY0B0B0Ew%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[!0D0D0G%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ck1)=)=)A%B%Ba%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   
 $6DnJJ	c8C=&8 9 	S 	T 	 	 	 	 	 	&	%eD#I.>(>"? 	3 	SW 	 	 	 	 	 	  gF:f 	**ch-F"G"G 	F:>?? 	JJ\3+S[#,GE
 E
 	 F ''
@AA (
CL#+s|DEE ( F:233 	

\38$9
 9
 	 F:<== 	**KC
 C
 	 F:k*;<<< 	MB
 B
 	 F 
=888
	 :k&999
	 :677	
	 
393<CGDDD
	 4d39d.C.C.HIIOQTUU
	 F:n%% 	**S]*C*C 	F :455 	**H+;
 ;
 ;
 	 F:n%% 	Js}%%	)3CI#')J)J)J	 F:9:: 	zz#(?S?S 	F:4YGGG 	JJLM
 M
 	 F JRSS	
3,--	 "l4&8&888 F JRSS	
CJ788	 {{{{^bcfcmos^t^t^z{{{{{	 F JRSS	 
COS\3;OPQQ	 :H	  		 "l4&8&888F	 :k"" 	#0055CDyyZZ;s;KLLLy:cm111 	jj,t"4"47
 7
 7
 	 F:
 
 		 j$$		 F:o&& 	::cm+Q+Q+Q 	F JsxSX...	 
38333	 t{CM::		 j	
 
	$ 9C;CUV[8\8\%	$ +"4444#|D'9'999F:chCG,,, 	<\RVEWEW2
 2
 2
 	 F:cl## 	

+Dt4L4L4R)
 )
 )
 	 F:\3;c6FP
 
 	j122	 Fw&&z#+#(333 

",F9 9 9  z#-(( ZZ-G-G z#.)) jj",C/ / /   
39%%)3DKAQ)R)R*/9STTT z#(## 

<(W(W(W z#+&& 

-7JKKK
:&0N  

 :&0T  
 :;\RVEWEWXXX
 z#*++ 
-7OPPP:;TYOOO z#-(( 
-7LMMM :;TY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z3?3+?@AA dFV :f%% F:&0T    F:k=== F:k??? F#w..!z"EMhiii z,/BCCC 
 z#-(( 
;v666:566 z#,-- **^2L2L w&&z%   z)$$ CJ)?)? z)$$ SXs|4L)M)M z+n=== z+o>>> z:;; 

OLMKJ(	A 	A   
;''Js}-- ILK$666z,.EFFF z:;; 
4;WZWb@c@c z,5VWWW \f\fhkhstw  uB  CF  CS  hT  ]U  ]U w&&z+d333 

3=8Q8Q z,_EEE z4=Z[[[ z=>> ::chCWCW \`\cgrgy\y\y
 JJT

9:: '	K-C(CC	** $	K)C!+"56GOOOOLL))  	K+C"x"x' Z	  
 G RQQQLLWWW-C(CJJJJLL 
 
 
 (C(COOOOLL>>>+CGGLL ?@@ 	K)C-CC-- 	K)C-CJJJJL4-- tDzz! )4''')(C(( 	 dC   	Y 	<<3E3E 	F
 JJ

 eT;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$     | 2Q 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         $''74+>+>>     r"   N)ri   rU   ExprrR  r   r   r   )r@   r   rM   rv  rN   s    @r    r   z/PositionNodeFinder.find_node.<locals>.<genexpr>
  s       
 
$$$
 dCH--	
 dCN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 
 
 
 
 
 
28?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K0@ 9B
 9B[^ 9Bhn 9B 9B 9B 9Bv-{ -3 -4 - - - -^ee.1o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8S_ J8 J8 J8 J8 J8X, ,#/)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    ; 8K+@    
 3,8 ,S_(= , , , ,
 IFJI	  &LKL	)  '		
,				
*
*			 "S
 S
 S
 S
 S
 S
 S
 S
 S
 S
r"   