§
    C�’j©ú  ã                   óø  — U d Z ddlZddlZddl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 ddl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mZmZmZmZ dd	lmZ d
dlm Z m!Z! d
dl"m#Z# erddl$m%Z% de!de!ddfd„Z&ddde!de!de'de
f
d„Z( ed¬¦  «        de)de*e+e+e+e+f         fd„¦   «         Z,de)de+de-fd„Z.de)de+de-fd„Z/ e	e.ej0        ¬ ¦  «        Z1 e	e.ej2        ¬ ¦  «        Z3 e	e.ej4        ¬ ¦  «        Z5 e	e.ej6        ¬ ¦  «        Z7 e	e.ej8        ¬ ¦  «        Z9 e	e.ej:        ¬ ¦  «        Z; e	e.ej<        ¬ ¦  «        Z= e	e.ej>        ¬ ¦  «        Z? e	e/ej@        ¬ ¦  «        ZA e	e/ejB        ¬ ¦  «        ZC e	e/ejD        ¬ ¦  «        ZE e	e/ej@        ¬ ¦  «        ZAde)de+de-fd!„ZF e	eFejG        ¬ ¦  «        ZH e	eFejI        ¬ ¦  «        ZJ e	eFejK        ¬ ¦  «        ZL e	eFejM        ¬ ¦  «        ZN e	eFejO        ¬ ¦  «        ZP e	eFejQ        ¬ ¦  «        ZR e	eFejS        ¬ ¦  «        ZT e	eFejU        ¬ ¦  «        ZV e	eFejW        ¬ ¦  «        ZX e	eFejY        ¬ ¦  «        ZZ e	eFej[        ¬ ¦  «        Z\ e	eFej]        ¬ ¦  «        Z^ e	eFej_        ¬ ¦  «        Z` e	eFeja        ¬ ¦  «        Zb e	eFejc        ¬ ¦  «        Zd e	eFeje        ¬ ¦  «        Zf e	eFejg        ¬ ¦  «        Zh e	eFeji        ¬ ¦  «        Zj e	eFejk        ¬ ¦  «        Zl e	eFejm        ¬ ¦  «        Zn e	eFejo        ¬ ¦  «        Zp e	eFejq        ¬ ¦  «        Zr e	eFejs        ¬ ¦  «        Zt e	eFeju        ¬ ¦  «        Zv e	eFejw        ¬ ¦  «        Zx e	eFejy        ¬ ¦  «        Zz e	eFej{        ¬ ¦  «        Z| e	eFej}        ¬ ¦  «        Z~ e	eFej        ¬ ¦  «        Z€ e	eFej�        ¬ ¦  «        Z‚ e	eFejƒ        ¬ ¦  «        Z„ e	eFej…        ¬ ¦  «        Z† e	eFej‡        ¬ ¦  «        Zˆ e	eFej‰        ¬ ¦  «        ZŠde)de-fd"„Z‹de)de-fd#„ZŒde)de-fd$„Z�de)de-fd%„ZŽde)de-fd&„Z�de)de-fd'„Z�de)de-fd(„Z‘d)e!de)fd*„Z’ddd+e!d,e'de!fd-„Z“	 	 	 	 	 	 d”d/„Z”	 	 	 	 	 	 d”d0„Z•ddd)e!de!fd1„Z– e—¦   «         Z˜e—e+         e™d2<   ddd)e!de!fd3„Zš	 	 	 	 	 	 d”d4„Z›ddd)e!d+e!de!fd5„Zœddd)e!d6e!de!fd7„Z�ddd8e!d9e!d:e!de!f
d;„Zžddd:e!d+e!d<e!de!f
d=„ZŸddd8e!d9e!de!fd>„Z ddd:e!d+e!de!fd?„Z¡ddd)e!de!fd@„Z¢ddd)e!de!fdA„Z£ddd)e!dd.fdB„Z¤ddd)e!de!fdC„Z¥ddd)e!de!fdD„Z¦ddd)e!de!fdE„Z§d)e!de-fdF„Z¨ddd)e!dd.fdG„Z©i dHej[        “dIejs        “dJeju        “dKej]        “dLejc        “dMej{        “dNejI        “dOejk        “dPejG        “dQeji        “dRejK        “dSejm        “dTej_        “dUejw        “dVeja        “dWejy        “dXej}        “ej�        ej        ejƒ        ejM        ejo        ejª        dYœ¥Z«dZe!de-fd[„Z¬de!de!de-fd\„Z­ddde!de!d]e'de!f
d^„Z®ddde!de!d]e'de'de!fd_„Z¯ddde!de!d`e'd]e'de!fda„Z°ddde!de!d`e'd]e'de'de!fdb„Z±ddde!de!de!fdc„Z²ddde!de!de!fdd„Z³dddee!dfe!de!fdg„Z´dddee!dfe!de!fdh„Zµdddie!ddfdj„Z¶ddde!de!de!fdk„Z·ddde!de!de!fdl„Z¸	 d•dddne!doe!dpe-de!f
dq„Z¹dddne!doe!de!fdr„Zºe¬Z»dne!dddoe!dse'de!f
dt„Z¼dne!dddoe!dse'de!f
du„Z½dvdwdxdydzd{d|œZ¾e¿e'e'f         e™d}<   d~dd€d�d‚dƒd„œZÀe¿e'e'f         e™d…<   ddde!de!dse'de!f
d†„ZÁddde!de!dse'de!f
d‡„ZÂddd)e!de*e+e-f         fdˆ„ZÃddd)e!de!fd‰„ZÄ	 	 	 	 	 	 	 	 d–d‹„ZÅejÆ        ejÇ        jÈ        ejÉ        fZÊe*e)dŒf         e™d�<   dddŽe!d�e!de!fd�„ZËddd‘e!d’e!de*e!e!f         fd“„ZÌdS )—a3  
Dynamo implementations of CPython's PyObject_* default slot algorithms.

Analogous to CPython's Objects/object.c, this module holds the general
dispatch machinery that is independent of any specific type.
Per-type hook implementations (bool_impl, richcompare_impl, etc.)
live in their respective VT files.
é    N)Ú	lru_cacheÚpartial)ÚNoReturnÚTYPE_CHECKING)Úget_type_slotsÚhas_slotÚPyMappingSlotsÚPyNumberSlotsÚPySequenceSlotsÚPyTypeSlotsé   )Úgraph_break_hintsÚ	polyfills)Úhandle_observed_exceptionÚObservedTypeErrorÚraise_observed_exceptionÚraise_type_errorÚunimplemented)Úistypeé   )ÚNO_SUCH_SUBOBJÚVariableTracker©ÚConstantVariable)ÚInstructionTranslatorBaseÚleftÚrightÚreturnzVariableTracker | Nonec                 óþ  — | |u rt          j        d¦  «        S |                      ¦   «         }|                     ¦   «         }|t          u}|t          u}|r.|r,||u rt          j        d¦  «        nt          j        d¦  «        S ||k    rt          j        d¦  «        S ddlm} ddlm} ddlm	} ddl
m}	 t          | |||	|f¦  «        rt          j        d¦  «        S 	 |                      ¦   «         |                     ¦   «         urt          j        d¦  «        S n# t          $ r Y nw xY wdd	lm}
 t#          | |
j        ¦  «        r7t#          ||
j        ¦  «        r"| j        |j        urt          j        d¦  «        S d
S )zÈTry to determine Python identity (left is right) at trace time.

    Returns ConstantVariable(True/False) if determinable, else None.
    Mirrors the logic in BuiltinVariable's handle_is handler.
    TFr   )ÚConstDictVariable)ÚListVariable)ÚTracebackVariable)ÚSetVariabler   )Ú	variablesN)r   ÚcreateÚget_real_python_backed_valuer   Údictsr    Úlistsr!   Úmiscr"   Úsetsr#   Ú
isinstanceÚpython_typeÚNotImplementedErrorÚ r$   r   ÚExceptionVariableÚexc_type)r   r   Úleft_valÚ	right_valÚ
left_knownÚright_knownr    r!   r"   r#   r$   s              úUC:\Projects\DSCons\.venv\Lib\site-packages\torch\_dynamo\variables\object_protocol.pyÚvt_identity_comparer6   .   sø  € ð ˆu€}€}ÝÔ& tÑ,Ô,Ð,à×0Ò0Ñ2Ô2€HØ×2Ò2Ñ4Ô4€IØ¥Ð/€JØ¥>Ð1€Kàð 
�kð 
ð ˜9Ð$Ð$õ Ô# DÑ)Ô)Ð)å!Ô(¨Ñ/Ô/ð	
ð �[Ò Ð ÝÔ& uÑ-Ô-Ð-ð )Ð(Ð(Ð(Ð(Ð(Ø#Ð#Ð#Ð#Ð#Ð#Ø'Ð'Ð'Ð'Ð'Ð'Ø!Ð!Ð!Ð!Ð!Ð!åØÐ  ,°Ð=NÐOñô ð .õ  Ô& uÑ-Ô-Ð-ðØ×ÒÑÔ U×%6Ò%6Ñ%8Ô%8Ð8Ð8Ý#Ô*¨5Ñ1Ô1Ð1ð 9øåð ð ð Øˆðøøøð ÐÐÐÐÐõ 	ˆt�YÔ0Ñ1Ô1ð.å�5˜)Ô5Ñ6Ô6ð.ð ŒM ¤Ð/Ð/åÔ& uÑ-Ô-Ð-àˆ4s   Ã;D Ä
D(Ä'D(Útxr   ÚvÚwÚ	op_symbolc           
      ó‚   — t          | d|› d|                     ¦   «         › d|                     ¦   «         › d�¦  «         d S )Nz unsupported operand type(s) for z: 'ú' and 'ú')r   Úpython_type_name)r7   r8   r9   r:   s       r5   Úbinop_type_errorr?   j   sZ   € õ Ø
Øm¨9ÐmÐm¸×9KÒ9KÑ9MÔ9MÐmÐmÐVW×VhÒVhÑVjÔVjÐmÐmÐmñô ð ð ð ó    é   )ÚmaxsizeÚobj_typec                 ó    — t          | ¦  «        S )z'Get all type slots for a type (cached).)r   ©rC   s    r5   Ú_get_cached_slotsrF   v   s   € õ ˜(Ñ#Ô#Ð#r@   Úslotc                 óJ   — t          | ¦  «        \  }}}}t          ||¦  «        S )z4Check whether obj_type implements the given sq slot.©rF   r   )rC   rG   Ú	seq_slotsÚ_s       r5   Útype_implements_sq_slotrL   |   s(   € å*¨8Ñ4Ô4Ñ€Iˆq�!�QÝ�I˜tÑ$Ô$Ð$r@   c                 óJ   — t          | ¦  «        \  }}}}t          ||¦  «        S )z4Check whether obj_type implements the given mp slot.rI   )rC   rG   rK   Ú	map_slotss       r5   Útype_implements_mp_slotrO   ‚   s(   € å*¨8Ñ4Ô4Ñ€A€y�!�QÝ�I˜tÑ$Ô$Ð$r@   )rG   c                 óJ   — t          | ¦  «        \  }}}}t          ||¦  «        S )z.Check whether obj_type implements the nb slot.rI   )rC   rG   rK   Únumber_slotss       r5   Útype_implements_nb_slotrR   °   s(   € å-¨hÑ7Ô7Ñ€A€qˆ,˜Ý�L $Ñ'Ô'Ð'r@   c                 ó^   — t          | ¦  «        \  }}}}t          |t          j        ¦  «        S ©N)rF   r   r   ÚTP_ITER©rC   rK   Ú	type_slots      r5   Útype_implements_tp_iterrX     s+   € Ý*¨8Ñ4Ô4Ñ€A€qˆ!ˆYÝ�I�{Ô2Ñ3Ô3Ð3r@   c                 ó^   — t          | ¦  «        \  }}}}t          |t          j        ¦  «        S rT   )rF   r   r   ÚTP_ITERNEXTrV   s      r5   Útype_implements_tp_iternextr[     s+   € Ý*¨8Ñ4Ô4Ñ€A€qˆ!ˆYÝ�I�{Ô6Ñ7Ô7Ð7r@   c                 ó^   — t          | ¦  «        \  }}}}t          |t          j        ¦  «        S )z3Check whether obj_type implements the tp_repr slot.)rF   r   r   ÚTP_REPRrV   s      r5   Útype_implements_tp_reprr^     s+   € å*¨8Ñ4Ô4Ñ€A€qˆ!ˆYÝ�I�{Ô2Ñ3Ô3Ð3r@   c                 ó^   — t          | ¦  «        \  }}}}t          |t          j        ¦  «        S )z2Check whether obj_type implements the tp_str slot.)rF   r   r   ÚTP_STRrV   s      r5   Útype_implements_tp_strra     s+   € å*¨8Ñ4Ô4Ñ€A€qˆ!ˆYÝ�I�{Ô1Ñ2Ô2Ð2r@   c                 ó    — t          | ¦  «        S rT   )r[   rE   s    r5   Úpyiter_checkrc   "  s   € õ ' xÑ0Ô0Ð0r@   c                 óN   — t          | t          ¦  «        rdS t          | ¦  «        S )zBImplements PySequence_Check semantics for VariableTracker objects.F)Ú
issubclassÚdictÚtype_implements_sq_itemrE   s    r5   Úpysequence_checkrh   )  s)   € õ �(�DÑ!Ô!ð ØˆuÝ" 8Ñ,Ô,Ð,r@   c                 ó    — t          | ¦  «        S )z@Implements _PyIndex_Check semantics for VariableTracker objects.)Útype_implements_nb_indexrE   s    r5   Úpyindex_checkrk   1  s   € õ $ HÑ-Ô-Ð-r@   Úobjc                 ó’   — 	 |                       ¦   «         S # t          $ r& t          d| › d�dg t          j        ¢¬¦  «         Y d S w xY w)NzUnsupported python_type() callz! does not implement python_type()zhThis VariableTracker does not implement python_type(), which is required for object protocol operations.©Úgb_typeÚcontextÚexplanationÚhints)r,   r-   r   r   Ú
DYNAMO_BUG)rl   s    r5   Úmaybe_get_python_typert   7  s}   € ð
Ø�ŠÑ Ô Ð øÝð 	
ð 	
ð 	
ÝØ4ØÐ=Ð=Ð=ð@ðÝ"Ô-ðð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð	
øøøs   ‚ –,AÁAÚkeyÚcontainer_namec                 óö   — t          |¦  «        }|t          t          t          fvrSt	          |¦  «        s/t          t          | |› d|                     ¦   «         › �g¬¦  «         |                     | ¦  «        }|S )uÀ   _PyIndex_Check â†’ nb_index path used by list/tuple/range/str/bytes subscript.

    ref: https://github.com/python/cpython/blob/v3.13.3/Include/internal/pycore_abstract.h (_PyIndex_Check)
    z) indices must be integers or slices, not ©Úargs)	rt   ÚintÚboolÚslicerj   r   Ú	TypeErrorr>   Únb_index_impl)r7   ru   rv   Úkey_types       r5   Úvalidate_sequence_indexr€   F  s�   € õ % SÑ)Ô)€HØ��T¥5Ð)Ð)Ð)Ý'¨Ñ1Ô1ð 	Ý$ÝØà%ÐhÐhÐPS×PdÒPdÑPfÔPfÐhÐhððñ ô ð ð ×Ò Ñ#Ô#ˆØ€Jr@   r   c                 ó   — t          |¦  «        }t          |¦  «        r|                     | ¦  «        S t          |¦  «        r%t	          | |                     ¦   «         › d�¦  «         t	          | d|                     ¦   «         › d�¦  «         d S )Nz is not a mappingzobject of type z has no len())rt   Útype_implements_mp_lengthÚ	mp_lengthÚtype_implements_sq_lengthr   r>   ©r7   rl   ÚTs      r5   Úvt_mapping_sizer‡   ]  s—   € õ 	˜cÑ"Ô"€AÝ  Ñ#Ô#ð !Ø�}Š}˜RÑ Ô Ð å  Ñ#Ô#ð KÝ˜ × 4Ò 4Ñ 6Ô 6ÐIÐIÐIÑJÔJÐJå�RÐP¨3×+?Ò+?Ñ+AÔ+AÐPÐPÐPÑQÔQÐQÐQÐQr@   c                 óˆ   — t          |¦  «        }t          |¦  «        r|                     | ¦  «        S t          | |¦  «        S )z³
    Implements PyObject_Size/PyObject_Length semantics for VariableTracker objects.
    Dispatches to sq_length (sequences) or mp_length (mappings) depending on the VT type.
    )rt   r„   Ú	sq_lengthr‡   r…   s      r5   Úgeneric_lenrŠ   k  sC   € õ 	˜cÑ"Ô"€AÝ  Ñ#Ô#ð !Ø�}Š}˜RÑ Ô Ð Ý˜2˜sÑ#Ô#Ð#r@   c                 ó  — ddl m} |                     ¦   «         rt	  |j        t	          |                     ¦   «         ¦  «        ¦  «        S # t          $ r7}t          t          |¦  «        | t          |¦  «        g¬¦  «         Y d}~nd}~ww xY wt          |¦  «        }t          |¦  «        r|                     | ¦  «        }|�|S 	 t          | |¦  «        }ddlm} t!          ||¦  «        r,|                     | |                     ¦   «         dk    ¦  «        S |                     ¦   «         }|dk     rt          t$          | dg¬¦  «          |j        |dk    ¦  «        S # t&          $ r t)          | ¦  «         Y nw xY w |j        d¦  «        S )	uÃ   Mirrors PyObject_IsTrue.

    https://github.com/python/cpython/blob/c09ccd9c429/Objects/object.c#L2135-L2158

    Resolution order: constants â†’ nb_bool â†’ mp_length/sq_length â†’ truthy.
    r   r   rx   N)ÚSymNodeVariabler   z__len__() should return >= 0T)Úconstantr   Úis_python_constantr%   r{   Úas_python_constantÚ	Exceptionr   ÚtypeÚstrrt   Útype_implements_nb_boolÚ	bool_implrŠ   ÚtensorrŒ   r+   Úas_proxyÚ
ValueErrorr   r   )	r7   rl   r   ÚerC   ÚresultÚlengthrŒ   Ú
length_vals	            r5   Úgeneric_boolrœ   z  sâ  € ð +Ð*Ð*Ð*Ð*Ð*à
×ÒÑÔð Að	AØ*Ð#Ô*­4°×0FÒ0FÑ0HÔ0HÑ+IÔ+IÑJÔJÐJøÝð 	Að 	Að 	AÝ$¥T¨!¡W¤W¨b½¸A¹¼°xÐ@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøð	Aøøøõ % SÑ)Ô)€Hå˜xÑ(Ô(ð Ø—’˜rÑ"Ô"ˆØÐØˆMð&Ý˜R Ñ%Ô%ˆØ+Ð+Ð+Ð+Ð+Ð+å�f˜oÑ.Ô.ð 	EØ"×)Ò)¨"¨f¯oªoÑ.?Ô.?À!Ò.CÑDÔDÐDØ×.Ò.Ñ0Ô0ˆ
Ø˜Š>ˆ>Ý$Ý˜BÐ&DÐ%Eðñ ô ð ð 'ÐÔ& z°A¢~Ñ6Ô6Ð6øÝð &ð &ð &Ý! "Ñ%Ô%Ð%Ð%Ð%ð&øøøð #ÐÔ" 4Ñ(Ô(Ð(s1   œ.A Á
BÁ-BÂBÃAE ÄAE ÅE;Å:E;Ú_repr_runningc                 óš  — t          |¦  «        }t          |¦  «        �rt          |¦  «        }|t          v rDt          dt
          dt          j        di}t          j	        | 
                    |d¦  «        ¦  «        S t                               |¦  «         	 |                     | ¦  «        }t                               |¦  «         n# t                               |¦  «         w xY wt          |¦  «        }t          |t          ¦  «        st!          | d|j        › d�¦  «         |S t!          | d|                     ¦   «         › d�¦  «         dS )	zßMirrors PyObject_Repr with Py_ReprEnter/Py_ReprLeave cycle detection.

    https://github.com/python/cpython/blob/v3.13.3/Objects/object.c#L745-L778

    Resolution order: tp_repr -> TypeError if the result is not str.
    z[...]z{...}z...z#__repr__ returned non-string (type ú)zobject of type 'z' has no reprN)rt   r^   Úidr�   Úlistrf   ÚcollectionsÚdequer   r%   ÚgetÚaddÚ	repr_implÚdiscardre   r’   r   Ú__name__r>   )r7   rl   rC   Úobj_idÚsentinelr™   Úresult_types          r5   Úgeneric_reprr¬   §  s@  € õ % SÑ)Ô)€Hå˜xÑ(Ô(ñ Ý�C‘”ˆØ•]Ð"Ð"Ý˜g¥t¨WµkÔ6GÈÐQˆHÝ#Ô*¨8¯<ª<¸À%Ñ+HÔ+HÑIÔIÐIÝ×Ò˜&Ñ!Ô!Ð!ð	*Ø—]’] 2Ñ&Ô&ˆFå×!Ò! &Ñ)Ô)Ð)Ð)ø�M×!Ò! &Ñ)Ô)Ð)Ð)øøøÝ+¨FÑ3Ô3ˆÝ˜+¥sÑ+Ô+ð 	ÝØØM°kÔ6JÐMÐMÐMñô ð ð ˆå�RÐQ¨C×,@Ò,@Ñ,BÔ,BÐQÐQÐQÑRÔRÐRÐRÐRs   ÂC ÃC#c                 óx  — t          |¦  «        t          u r|S t          |¦  «        }t          |¦  «        r6t          |¦  «        j        t
          j        ur|                     | ¦  «        }nt          | |¦  «        }t          |¦  «        }t          |t          ¦  «        st          | d|j	        › d�¦  «         |S )zÑMirrors PyObject_Str semantics in Dynamo.

    https://github.com/python/cpython/blob/v3.13.3/Objects/object.c#L781-L829

    Resolution order: str identity check -> tp_str (str_impl) -> tp_repr fallback.
    z"__str__ returned non-string (type rŸ   )
rt   r’   ra   r‘   Ústr_implr   r¬   re   r   r¨   )r7   rl   rC   r™   r«   s        r5   Úgeneric_strr¯   Ç  s¾   € õ ˜SÑ!Ô!¥SÐ(Ð(Øˆ
å$ SÑ)Ô)€Hå˜xÑ(Ô(ð'å�‰IŒIÔ¥oÔ&>Ð>Ð>à—’˜bÑ!Ô!ˆˆå˜b #Ñ&Ô&ˆå'¨Ñ/Ô/€KÝ�k¥3Ñ'Ô'ð 
ÝØØH°Ô1EÐHÐHÐHñ	
ô 	
ð 	
ð €Mr@   c                 óÚ  — t          |¦  «        }t          |¦  «        r|                     | |¦  «        S t          |¦  «        rct          |¦  «        }t	          |¦  «        r&|                     | ¦  «        }t          | ||¦  «        S t          | |j        › d|j        › �¦  «         t          |t          ¦  «        r|                     | |¦  «        S t          | d|j        › d�¦  «         dS )u°  CPython's PyObject_GetItem â€” dispatch to the type's mp_subscript/sq_item.

    PyObject_GetItem: https://github.com/python/cpython/blob/62a6e898e01/Objects/abstract.c#L155-L206

    CPython checks three branches in order:
      1. tp_as_mapping->mp_subscript  (L161-166)
      2. tp_as_sequence->sq_item      (L168-181) â€” only if key passes _PyIndex_Check
      3. PyType_Check(o)              (L183-203) â€” type[int] â†’ GenericAlias/__class_getitem__

    Branch 1 is the common path (list, tuple, dict, range all have mp_subscript).
    Branch 2 fires for types with only sq_item (e.g. deque).
    Branch 3 delegates to mp_subscript_impl for type objects (__class_getitem__).
    z indices must be integers, not r=   z' object is not subscriptableN)rt   Útype_implements_mp_subscriptÚmp_subscript_implrg   rj   r~   Úvt_sequence_getitemr   r¨   re   r‘   )r7   rl   ru   rC   r   s        r5   Ú
vt_getitemr´   å  s  € õ$ % SÑ)Ô)€Hå# HÑ-Ô-ð .Ø×$Ò$ R¨Ñ-Ô-Ð-õ ˜xÑ(Ô(ð 
Ý(¨Ñ-Ô-ˆÝ# HÑ-Ô-ð 	5Ø×#Ò# BÑ'Ô'ˆCÝ& r¨3°Ñ4Ô4Ð4ÝØØÔ ÐTÐTÀÔARÐTÐTñ	
ô 	
ð 	
õ �(�DÑ!Ô!ð .Ø×$Ò$ R¨Ñ-Ô-Ð-å�RÐM˜XÔ.ÐMÐMÐMÑNÔNÐNÐNÐNr@   Úindexc                 óF  — t          |¦  «        }t          |¦  «        r§t          |t          ¦  «        r||                     ¦   «         }t          |t
          ¦  «        rS|dk     rMt          |¦  «        r>|                     | ¦  «        }t          j        ||                     ¦   «         z   ¦  «        }| 	                    | |¦  «        S t          |¦  «        r&t          | d|                     ¦   «         › d�¦  «         t          | d|                     ¦   «         › d�¦  «         dS )uM  CPython's PySequence_GetItem â€” always sq_item, never mp_subscript.

    ref: https://github.com/python/cpython/blob/v3.13.3/Objects/abstract.c#L1874-L1902

    Called by PyObject_GetItem branch 2, reversed() fallback, and the old
    iteration protocol.  Wraps negative indices via sq_length before
    dispatching to sq_item.
    r   r=   ú' is not a sequencez"' object does not support indexingN)rt   rg   r+   r   r�   rz   r„   r‰   r%   Úsq_item_implr±   r   r>   )r7   rl   rµ   rC   Ú	index_valrš   s         r5   r³   r³     s%  € õ % SÑ)Ô)€Hå˜xÑ(Ô(ð 
+å�eÕ-Ñ.Ô.ð 	Ø×0Ò0Ñ2Ô2ˆIÝ˜)¥SÑ)Ô)ð ¨i¸!ªm¨mÝ,¨XÑ6Ô6ð Ø Ÿ]š]¨2Ñ.Ô.�FÝ,Ô3Ø! F×$=Ò$=Ñ$?Ô$?Ñ?ñô �Eð ×Ò  EÑ*Ô*Ð*å# HÑ-Ô-ð NÝ˜ÐL ×!5Ò!5Ñ!7Ô!7ÐLÐLÐLÑMÔMÐMå�RÐW˜S×1Ò1Ñ3Ô3ÐWÐWÐWÑXÔXÐXÐXÐXr@   ÚsÚiÚoc                 óH  — t          |¦  «        }t          |¦  «        r¨t          |t          ¦  «        r||                     ¦   «         }t          |t
          ¦  «        rS|dk     rMt          |¦  «        r>|                     | ¦  «        }t          j        ||                     ¦   «         z   ¦  «        }| 	                    | ||¦  «        S t          |¦  «        r&t          | d|                     ¦   «         › d�¦  «         t          | d|                     ¦   «         › d�¦  «         d S )Nr   r=   r·   ú)' object does not support item assignment)rt   Útype_implements_sq_ass_itemr+   r   r�   rz   r„   r‰   r%   Úsq_ass_item_implÚ type_implements_mp_ass_subscriptr   r>   )r7   rº   r»   r¼   Ús_typer¹   rš   s          r5   Úvt_sequence_setitemrÃ   1  s,  € õ # 1Ñ%Ô%€FÝ" 6Ñ*Ô*ð ,å�aÕ)Ñ*Ô*ð 	YØ×,Ò,Ñ.Ô.ˆIÝ˜)¥SÑ)Ô)ð Y¨i¸!ªm¨mÝ,¨VÑ4Ô4ð YØŸ[š[¨™_œ_�FÝ(Ô/°	¸F×<UÒ<UÑ<WÔ<WÑ0WÑXÔX�AØ×!Ò! " a¨Ñ+Ô+Ð+å'¨Ñ/Ô/ð LÝ˜ÐJ ×!3Ò!3Ñ!5Ô!5ÐJÐJÐJÑKÔKÐKåØ
ÐO�×"Ò"Ñ$Ô$ÐOÐOÐOñô ð ð ð r@   Úvaluec                 ó°  — t          |¦  «        }t          |¦  «        r|                     | ||¦  «        S t          |¦  «        rkt          |¦  «        }t	          |¦  «        r'|                     | ¦  «        }t          | |||¦  «        S t          | d|                     ¦   «         › d�¦  «         t          | d|                     ¦   «         › d�¦  «         d S )Nz%sequence index must be integer, not 'r=   r¾   )	rt   rÁ   Úmp_ass_subscript_implr¿   rk   r~   rÃ   r   r>   )r7   r¼   ru   rÄ   Úo_typer   s         r5   Úgeneric_setitemrÈ   K  s÷   € õ # 1Ñ%Ô%€FÝ'¨Ñ/Ô/ð 7Ø×&Ò& r¨3°Ñ6Ô6Ð6å" 6Ñ*Ô*ð 
Ý(¨Ñ-Ô-ˆÝ˜Ñ"Ô"ð 	:Ø×#Ò# BÑ'Ô'ˆCÝ& r¨1¨c°5Ñ9Ô9Ð9ÝØÐQ¸×8LÒ8LÑ8NÔ8NÐQÐQÐQñ	
ô 	
ð 	
õ Ø
ÐO�×"Ò"Ñ$Ô$ÐOÐOÐOñô ð ð ð r@   c                 óî  — t          |¦  «        }t          |¦  «        r{t          |t          ¦  «        rO|                     ¦   «         }|dk     r5t          |¦  «        r&|                     | ¦  «        }t          | ||¦  «        }|                     | |d ¦  «        S t          |¦  «        r&t          | d|                     ¦   «         › d�¦  «         t          | d|                     ¦   «         › d�¦  «         d S )Nr   r=   r·   z'' object does not support item deletion)rt   r¿   r+   r   r�   r„   r‰   Úvt_addrÀ   rÁ   r   r>   )r7   rº   r»   rÂ   Úidxrš   s         r5   Úsequence_delitemrÌ   c  s  € õ # 1Ñ%Ô%€FÝ" 6Ñ*Ô*ð /Ý�aÕ)Ñ*Ô*ð 	.Ø×&Ò&Ñ(Ô(ˆCØ�QŠwˆwÝ,¨VÑ4Ô4ð .ØŸ[š[¨™_œ_�FÝ˜r 1 fÑ-Ô-�AØ×!Ò! " a¨Ñ.Ô.Ð.å'¨Ñ/Ô/ð LÝ˜ÐJ ×!3Ò!3Ñ!5Ô!5ÐJÐJÐJÑKÔKÐKåØ
ÐM�×"Ò"Ñ$Ô$ÐMÐMÐMñô ð ð ð r@   c                 ó¬  — t          |¦  «        }t          |¦  «        r|                     | |d ¦  «        S t          |¦  «        }t          |¦  «        r&|                     | ¦  «        }t          | ||¦  «        S t          |¦  «        r%t          | d|                     ¦   «         › �¦  «         t          | d|                     ¦   «         › d�¦  «         d S )Nz$sequence index must be integer, not r=   z ' does not support item deletion)	rt   rÁ   rÆ   rk   r~   rÌ   r¿   r   r>   )r7   r¼   ru   rÇ   r   Ú	key_values         r5   Úgeneric_delitemrÏ   |  sç   € õ # 1Ñ%Ô%€FÝ'¨Ñ/Ô/ð 6Ø×&Ò& r¨3°Ñ5Ô5Ð5å$ SÑ)Ô)€HÝ�XÑÔð 
Ø×%Ò% bÑ)Ô)ˆ	Ý  A yÑ1Ô1Ð1Ý	$ VÑ	,Ô	,ð 
ÝØÐO°s×7KÒ7KÑ7MÔ7MÐOÐOñ	
ô 	
ð 	
õ �RÐS˜Q×/Ò/Ñ1Ô1ÐSÐSÐSÑTÔTÐTÐTÐTr@   c                 óH  — ddl m} |                     ¦   «         rVt          |                     ¦   «         t
          ¦  «        r/ |j        t          |                     ¦   «         ¦  «        ¦  «        S t          |¦  «        }t          |¦  «        r| 	                    | ¦  «        S t          |¦  «        r|                     | ¦  «        S |                     ¦   «         r t          |                     ¦   «         t          t          t          f¦  «        rl	  |j        t          |                     ¦   «         ¦  «        ¦  «        S # t          $ r/}t!          t          | t          |¦  «        g¬¦  «         Y d}~nd}~ww xY wt#          | d|                     ¦   «         › d�¦  «         dS )uÔ   Mirrors PyNumber_Long (int(x) dispatch).

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1520-L1632

    Resolution: nb_int â†’ nb_index â†’ str/bytes/bytearray parsing â†’ TypeError.
    r   r   rx   NzLint() argument must be a string, a bytes-like object or a real number, not 'r=   )r�   r   rŽ   r+   r�   rz   r%   rt   Útype_implements_nb_intÚnb_int_implrj   r~   r’   ÚbytesÚ	bytearrayr—   r   r   r>   ©r7   rl   r   rC   r˜   s        r5   Úgeneric_intrÖ   “  sÈ  € ð +Ð*Ð*Ð*Ð*Ð*ð
 ×ÒÑÔð F¥J¨s×/EÒ/EÑ/GÔ/GÍÑ$MÔ$Mð FØ&ÐÔ&¥s¨3×+AÒ+AÑ+CÔ+CÑ'DÔ'DÑEÔEÐEå$ SÑ)Ô)€Hå˜hÑ'Ô'ð #Ø�Š˜rÑ"Ô"Ð"å Ñ)Ô)ð %Ø× Ò  Ñ$Ô$Ð$ð ×ÒÑÔð D¥JØ×ÒÑ Ô ¥3­­yÐ"9ñ%ô %ð Dð	DØ*Ð#Ô*­3¨s×/EÒ/EÑ/GÔ/GÑ+HÔ+HÑIÔIÐIøÝð 	Dð 	Dð 	DÝ$¥Z°½3¸q¹6¼6¸(ÐCÑCÔCÐCÐCÐCÐCÐCÐCøøøøð	Døøøõ Ø
ð	<Ø"%×"6Ò"6Ñ"8Ô"8ð	<ð 	<ð 	<ñô ð ð ð s   Ä.E  Å 
E9Å
%E4Å4E9c                 ó<  — ddl m} |                     ¦   «         rVt          |                     ¦   «         t
          ¦  «        r/ |j        t          |                     ¦   «         ¦  «        ¦  «        S t          |¦  «        }t          |¦  «        r| 	                    | ¦  «        S t          |¦  «        r|                     | ¦  «        S |                     ¦   «         ršt          |                     ¦   «         t          t          f¦  «        rl	  |j        t          |                     ¦   «         ¦  «        ¦  «        S # t          $ r/}t          t          | t          |¦  «        g¬¦  «         Y d}~nd}~ww xY wt!          | d|                     ¦   «         › d�¦  «         dS )uÉ   Mirrors PyNumber_Float (float(x) dispatch).

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1635-L1692

    Resolution: nb_float â†’ nb_index â†’ str parsing â†’ TypeError.
    r   r   rx   Nz9float() argument must be a string or a real number, not 'r=   )r�   r   rŽ   r+   r�   Úfloatr%   rt   Útype_implements_nb_floatÚnb_float_implrj   r~   r’   rÓ   r—   r   r   r>   rÕ   s        r5   Úgeneric_floatrÛ   ½  sÄ  € ð +Ð*Ð*Ð*Ð*Ð*ð
 ×ÒÑÔð H¥J¨s×/EÒ/EÑ/GÔ/GÍÑ$OÔ$Oð HØ&ÐÔ&¥u¨S×-CÒ-CÑ-EÔ-EÑ'FÔ'FÑGÔGÐGå$ SÑ)Ô)€Hå Ñ)Ô)ð %Ø× Ò  Ñ$Ô$Ð$õ   Ñ)Ô)ð %Ø× Ò  Ñ$Ô$Ð$ð ×ÒÑÔð D¥J¨s×/EÒ/EÑ/GÔ/GÍ#ÍuÈÑ$VÔ$Vð Dð	DØ*Ð#Ô*­5°×1GÒ1GÑ1IÔ1IÑ+JÔ+JÑKÔKÐKøÝð 	Dð 	Dð 	DÝ$¥Z°½3¸q¹6¼6¸(ÐCÑCÔCÐCÐCÐCÐCÐCÐCøøøøð	Døøøõ Ø
ð	*Ø×$Ò$Ñ&Ô&ð	*ð 	*ð 	*ñô ð ð ð s   Ä.D: Ä:
E3Å%E.Å.E3c                 ó´   — t          |¦  «        }t          |¦  «        s&t          | d|                     ¦   «         › d�¦  «         |                     | ¦  «        S )a7  
    Implements PyIter_Next / tp_iternext semantics for VariableTracker objects.

    Calls obj.tp_iternext_impl(tx) if the object is an iterator, otherwise raises
    TypeError. StopIteration propagation is left to the caller (mirrors
    CPython's iternext contract where NULL return signals exhaustion).
    zexpected an iterator, got 'r=   )rt   r[   r   r>   Útp_iternext_implr…   s      r5   Úgeneric_iternextrÞ   æ  s^   € õ 	˜cÑ"Ô"€AÝ& qÑ)Ô)ð VÝ˜ÐT¸3×;OÒ;OÑ;QÔ;QÐTÐTÐTÑUÔUÐUà×Ò Ñ#Ô#Ð#r@   c                 ó¸   — t          |¦  «        }t          |¦  «        r|                     | ¦  «        S t          | d|                     ¦   «         › d�¦  «         dS )zçMirrors PyNumber_Negative.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1392

    Algorithm:
    1. If type has nb_negative slot, call obj.nb_negative_impl(tx)
    2. Otherwise, raise TypeError
    zbad operand type for unary -: 'r=   N)rt   Útype_implements_nb_negativeÚnb_negative_implr   r>   ©r7   rl   rC   s      r5   Úgeneric_negrã   ù  ón   € õ % SÑ)Ô)€Hå" 8Ñ,Ô,ð (Ø×#Ò# BÑ'Ô'Ð'åØ
ØC¨#×*>Ò*>Ñ*@Ô*@ÐCÐCÐCñô ð ð ð r@   c                 ó¸   — t          |¦  «        }t          |¦  «        r|                     | ¦  «        S t          | d|                     ¦   «         › d�¦  «         dS )zçMirrors PyNumber_Positive.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1393

    Algorithm:
    1. If type has nb_positive slot, call obj.nb_positive_impl(tx)
    2. Otherwise, raise TypeError
    zbad operand type for unary +: 'r=   N)rt   Útype_implements_nb_positiveÚnb_positive_implr   r>   râ   s      r5   Úgeneric_posrè     rä   r@   c                 ó¸   — t          |¦  «        }t          |¦  «        r|                     | ¦  «        S t          | d|                     ¦   «         › d�¦  «         dS )zçMirrors PyNumber_Absolute.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1375-L1395

    Algorithm:
    1. If type has nb_absolute slot, call obj.nb_absolute_impl(tx)
    2. Otherwise, raise TypeError
    zbad operand type for abs(): 'r=   N)rt   Útype_implements_nb_absoluteÚnb_absolute_implr   r>   râ   s      r5   Úgeneric_absrì   %  sn   € õ % SÑ)Ô)€Hå" 8Ñ,Ô,ð (Ø×#Ò# BÑ'Ô'Ð'åØ
ØA¨×(<Ò(<Ñ(>Ô(>ÐAÐAÐAñô ð ð ð r@   c                 ó\   — t          | ¦  «        }t          |¦  «        pt          |¦  «        S )zOCheck if the object supports iteration (i.e. has tp_iter or sequence protocol).)rt   rX   rh   )rl   r†   s     r5   Úvt_is_iterablerî   ;  s+   € å˜cÑ"Ô"€AÝ" 1Ñ%Ô%Ð<Õ)9¸!Ñ)<Ô)<Ð<r@   c                 óÎ  — t          |¦  «        }t          |¦  «        r[|                     | ¦  «        }t          |¦  «        }t          |¦  «        s&t	          | d|                     ¦   «         › d�¦  «         |S t          |¦  «        r6ddlm}  |t          j
        j        ¦  «                             | |gi ¦  «        S t	          | d|                     ¦   «         › d�¦  «         dS )z—
    Implements PyObject_GetIter semantics for VariableTracker objects.
    Routes to obj.tp_iter_impl(tx), the tp_iter slot on the object's type.
    z&iter() returned non-iterator of type 'r=   r   )ÚUserFunctionVariablez' object is not iterableN)rt   rX   Útp_iter_implrc   r   r>   rh   Ú	functionsrð   r   ÚbuiltinsÚsequence_iteratorÚcall_function)r7   rl   r†   ÚresÚres_Trð   s         r5   Úgeneric_getiterrø   A  s  € õ  	˜cÑ"Ô"€AÝ˜qÑ!Ô!ð SØ×Ò˜rÑ"Ô"ˆÝ% cÑ*Ô*ˆÝ˜EÑ"Ô"ð 	ÝØØR¸×9MÒ9MÑ9OÔ9OÐRÐRÐRñô ð ð ˆ
Ý	˜!Ñ	Ô	ð SØ3Ð3Ð3Ð3Ð3Ð3à#Ð#¥IÔ$6Ô$HÑIÔI×WÒWØ���rñ
ô 
ð 	
õ 	˜ÐQ ×!5Ò!5Ñ!7Ô!7ÐQÐQÐQÑRÔRÐRÐRÐRr@   Ú	nb_lshiftÚnb_inplace_lshiftÚnb_inplace_rshiftÚ	nb_rshiftÚnb_orÚnb_inplace_orÚnb_subtractÚnb_inplace_subtractÚnb_addÚnb_inplace_addÚnb_multiplyÚnb_inplace_multiplyÚnb_andÚnb_inplace_andÚnb_xorÚnb_inplace_xorÚnb_floor_divide)Únb_inplace_floor_divideÚnb_true_divideÚnb_inplace_true_divideÚnb_remainderÚnb_inplace_remainderÚ	nb_divmodr™   c                 ó6   — |                       t          ¦  «        S rT   )Úis_constant_matchÚNotImplemented)r™   s    r5   Úis_nb_not_implementedr  …  s   € Ø×#Ò#¥NÑ3Ô3Ð3r@   c                 óŽ   — 	 t          |                      ¦   «         |                     ¦   «         ¦  «        S # t          $ r Y dS w xY w)z?Check if w's underlying Python type is a proper subtype of v's.F)re   r,   r-   )r9   r8   s     r5   Úis_python_subtyper  ‰  sI   € ðÝ˜!Ÿ-š-™/œ/¨1¯=ª=©?¬?Ñ;Ô;Ð;øÝð ð ð Øˆuˆuðøøøs   ‚36 ¶
AÁAÚop_slotc                 óJ  — |› d�}t           |         }t          |¦  «        }t          |¦  «        }t          ||¦  «        rt          t	          |¦  «        |d¦  «        nd}t          ||¦  «        rt          t	          |¦  «        |d¦  «        nd}	||	u rd}	|�R|	�1t          ||¦  «        r! |	|| |d¦  «        }
t          |
¦  «        s|
S d}	 ||| |d¦  «        }
t          |
¦  «        s|
S |	� |	|| |d¦  «        }
t          |
¦  «        s|
S t          j        t          ¦  «        S )u/  CPython's binary_op1: try v's slot, then w's slot with subclass priority.

    Each VT that participates provides a ``<op_slot>_impl(self, tx, other,
    reverse)`` method. ``reverse=False`` means "self is left operand" (forward,
    e.g. ``__or__``), ``reverse=True`` means "self is right operand" (reverse,
    e.g. ``__ror__``). For built-in types the flag is ignored because their
    slots check both operands symmetrically.

    CPython splits the check into two steps: ``Py_TYPE(v)->tp_as_number !=
    NULL`` (does the type have a number-protocol struct), then read the
    slot pointer (which may itself be NULL).  We collapse both into a
    single :func:`type_implements_nb_slot` query â€” its bit is set only
    when the specific slot is non-NULL, which already implies
    ``tp_as_number`` is non-NULL.  Treating a missing slot as "no impl"
    is what keeps the base ``VariableTracker.nb_*_impl`` graph-break
    out of the path for types that genuinely lack the slot in C.

    https://github.com/python/cpython/blob/3.13/Objects/abstract.c#L926-L977
    Ú_implNTF)
ÚNB_SLOT_MAPPINGrt   rR   Úgetattrr‘   r  r  r   r%   r  )r7   r8   r9   r  Ú	impl_attrÚnb_slot_bitÚv_typeÚw_typeÚv_slotÚw_slotr™   s              r5   Ú
binary_op1r!  š  sh  € ð2 Ð!Ð!Ð!€IÝ! 'Ô*€Kå" 1Ñ%Ô%€FÝ" 1Ñ%Ô%€Fõ # 6¨;Ñ7Ô7ð	�•�Q‘”˜ DÑ)Ô)Ð)àð õ # 6¨;Ñ7Ô7ð	�•�Q‘”˜ DÑ)Ô)Ð)àð ð �ÐÐØˆàÐð ÐÕ"3°A°qÑ"9Ô"9Ðð �V˜A˜r 1 dÑ+Ô+ˆFÝ(¨Ñ0Ô0ð Ø�ØˆFØ�˜˜2˜q %Ñ(Ô(ˆÝ$ VÑ,Ô,ð 	ØˆMØÐØ�˜˜2˜q $Ñ'Ô'ˆÝ$ VÑ,Ô,ð 	ØˆMÝÔ"¥>Ñ2Ô2Ð2r@   c                 ól   — t          | |||¦  «        }t          |¦  «        rt          | |||¦  «         |S )zˆCPython's binary_op: binary_op1 + TypeError fallback.
    https://github.com/python/cpython/blob/3.13/Objects/abstract.c#L997-L1020
    )r!  r  r?   )r7   r8   r9   r  r:   r™   s         r5   Ú	binary_opr#  ã  s@   € õ ˜˜A˜q 'Ñ*Ô*€FÝ˜VÑ$Ô$ð .Ý˜˜Q  9Ñ-Ô-Ð-Ø€Mr@   Úiop_slotc                 óú   — t          |¦  «        }t          |t          |         ¦  «        r@|› d�}t          t	          |¦  «        |¦  «        } ||| |¦  «        }t          |¦  «        s|S t          | |||¦  «        S )Nr  )rt   rR   r  r  r‘   r  r!  )	r7   r8   r9   r$  r  r  r  rG   r™   s	            r5   Úbinary_iop1r&    s…   € õ # 1Ñ%Ô%€Få˜v¥°xÔ'@ÑAÔAð ØÐ&Ð&Ð&ˆ	Ý•t˜A‘w”w 	Ñ*Ô*ˆØ��a˜˜Q‘”ˆÝ$ VÑ,Ô,ð 	ØˆMå�b˜!˜Q Ñ(Ô(Ð(r@   c                 ón   — t          | ||||¦  «        }t          |¦  «        rt          | |||¦  «         |S )zíCPython's binary_iop: try inplace slot, fallback to binary_op1.

    Combines binary_iop1 + TypeError fallback from binary_iop.
    https://github.com/python/cpython/blob/3.13/Objects/abstract.c#L1229-L1270 (binary_iop1, binary_iop)
    )r&  r  r?   )r7   r8   r9   r$  r  r:   r™   s          r5   Ú
binary_iopr(    sB   € õ ˜˜Q  8¨WÑ5Ô5€FÝ˜VÑ$Ô$ð .Ý˜˜Q  9Ñ-Ô-Ð-Ø€Mr@   c                 óØ   — t          | ||d¦  «        }t          |¦  «        s|S t          |¦  «        }t          |¦  «        r|                     | |¦  «        S t          | ||d¦  «         dS )zHImplements addition via nb_add / nb_inplace_add with binary_op dispatch.r  ú+N)r!  r  rt   Útype_implements_sq_concatÚsq_concat_implr?   )r7   r8   r9   r™   r†   s        r5   rÊ   rÊ   *  sy   € õ ˜˜A˜q (Ñ+Ô+€FÝ  Ñ(Ô(ð Øˆå˜aÑ Ô €AÝ  Ñ#Ô#ð 'Ø×Ò  AÑ&Ô&Ð&Ý�R˜˜A˜sÑ#Ô#Ð#Ð#Ð#r@   c                 ó   — t          | ||dd¦  «        }t          |¦  «        rkt          |¦  «        }t          |¦  «        r|                     | |¦  «        S t          |¦  «        r|                     | |¦  «        S t          | ||d¦  «         |S )zIImplements in-place addition via nb_inplace_add with binary_iop dispatch.r  r  z+=)r&  r  rt   Ú!type_implements_sq_inplace_concatÚsq_inplace_concat_implr+  r,  r?   )r7   r8   r9   r™   rC   s        r5   Úvt_inplace_addr0  ;  sœ   € õ ˜˜Q Ð#3°XÑ>Ô>€FÝ˜VÑ$Ô$ð -Ý(¨Ñ+Ô+ˆÝ,¨XÑ6Ô6ð 	-Ø×+Ò+¨B°Ñ2Ô2Ð2Ý& xÑ0Ô0ð 	-Ø×#Ò# B¨Ñ*Ô*Ð*å˜R  A tÑ,Ô,Ð,Ø€Mr@   ÚseqÚnc                 ó   — t          |¦  «        }t          |¦  «        s&t          | d|                     ¦   «         › d�¦  «         |                     | ¦  «        }t          | |¦  «         |                     | |¦  «        S )zúMirrors CPython's sequence_repeat helper.

    Validates that ``n`` is index-like, converts it to an int, and dispatches
    to ``seq.sq_repeat_impl(tx, count)``.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1156-L1174
    ú,can't multiply sequence by non-int of type 'r=   )rt   rj   r   r>   r~   Úvalidate_sequence_repeat_countÚsq_repeat_impl©r7   r1  r2  Ún_typeÚcounts        r5   Úsequence_repeatr:  Z  s‰   € õ # 1Ñ%Ô%€FÝ# FÑ+Ô+ð 
ÝØØR¸1×;MÒ;MÑ;OÔ;OÐRÐRÐRñ	
ô 	
ð 	
ð �OŠO˜BÑÔ€EÝ" 2 uÑ-Ô-Ð-Ø×Ò˜b %Ñ(Ô(Ð(r@   c                 ó   — t          |¦  «        }t          |¦  «        s&t          | d|                     ¦   «         › d�¦  «         |                     | ¦  «        }t          | |¦  «         |                     | |¦  «        S )z�sequence_repeat using sq_inplace_repeat.

    The validation step is identical to ``sequence_repeat``; only the
    target slot differs.
    r4  r=   )rt   rj   r   r>   r~   r5  Úsq_inplace_repeat_implr7  s        r5   Úsequence_inplace_repeatr=  q  s‰   € õ # 1Ñ%Ô%€FÝ# FÑ+Ô+ð 
ÝØØR¸1×;MÒ;MÑ;OÔ;OÐRÐRÐRñ	
ô 	
ð 	
ð �OŠO˜BÑÔ€EÝ" 2 uÑ-Ô-Ð-Ø×%Ò% b¨%Ñ0Ô0Ð0r@   r9  c                 óª   — |                      ¦   «         }|t          j         dz
  k     s|t          j        k    rt          t          | dg¬¦  «         d S d S )Nr   z,cannot fit 'int' into an index-sized integerrx   )r�   ÚsysrB   r   ÚOverflowError)r7   r9  r2  s      r5   r5  r5  †  sg   € ð 	× Ò Ñ"Ô"€AØ�CŒKˆ<˜!ÑÒÐ˜q¥3¤;š˜Ý ÝØØ@ÐAð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð  /˜r@   c                 ó~  — t          | ||d¦  «        }t          |¦  «        s|S t          |¦  «        }t          |¦  «        }t          |¦  «        rt	          | ||¦  «        S t          |¦  «        rt	          | ||¦  «        S t          | d|                     ¦   «         › d|                     ¦   «         › d�¦  «         dS )zþMirrors CPython's PyNumber_Multiply.

    Try nb_multiply via binary_op1; on NotImplemented fall back to sq_repeat
    on either operand.  TypeError if no path works.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1176-L1193
    r  ú$unsupported operand type(s) for *: 'r<   r=   N)r!  r  rt   Útype_implements_sq_repeatr:  r   r>   ©r7   r8   r9   r™   r  r  s         r5   Úgeneric_multiplyrE  “  së   € õ ˜˜A˜q -Ñ0Ô0€FÝ  Ñ(Ô(ð Øˆå" 1Ñ%Ô%€FÝ" 1Ñ%Ô%€FÝ  Ñ(Ô(ð )Ý˜r 1 aÑ(Ô(Ð(Ý  Ñ(Ô(ð )Ý˜r 1 aÑ(Ô(Ð(åØ
ð	AØ×ÒÑ Ô ð	Að 	AØ)*×);Ò);Ñ)=Ô)=ð	Að 	Að 	Añô ð ð ð r@   c                 óÀ  — t          | ||dd¦  «        }t          |¦  «        s|S t          |¦  «        }t          |¦  «        }t          |¦  «        rt	          | ||¦  «        S t          |¦  «        rt          | ||¦  «        S t          |¦  «        rt          | ||¦  «        S t          | d|                     ¦   «         › d|                     ¦   «         › d�¦  «         dS )a  Mirrors CPython's PyNumber_InPlaceMultiply.

    Try nb_inplace_multiply / nb_multiply via binary_iop1; on NotImplemented
    fall back to sq_inplace_repeat (preferred), then sq_repeat.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L1330-L1357
    r  r  z%unsupported operand type(s) for *=: 'r<   r=   N)	r&  r  rt   Ú!type_implements_sq_inplace_repeatr=  rC  r:  r   r>   rD  s         r5   Úgeneric_inplace_multiplyrH  ±  s  € õ ˜˜Q Ð#8¸-ÑHÔH€FÝ  Ñ(Ô(ð Øˆå" 1Ñ%Ô%€FÝ" 1Ñ%Ô%€FÝ(¨Ñ0Ô0ð 1Ý& r¨1¨aÑ0Ô0Ð0Ý  Ñ(Ô(ð )Ý˜r 1 aÑ(Ô(Ð(õ ! Ñ(Ô(ð )Ý˜r 1 aÑ(Ô(Ð(åØ
ð	AØ×ÒÑ Ô ð	Að 	AØ)*×);Ò);Ñ)=Ô)=ð	Að 	Að 	Añô ð ð ð r@   FÚselfÚotherÚreversec                 ó>  — t          |¦  «        }t          |t          j        ¦  «        r|                     | ||¬¦  «        S t          |¦  «        rt          | ||¦  «        S t          | d|                     ¦   «         › d|                     ¦   «         › d�¦  «         dS )z@``self.__mul__(other)`` / ``self.__rmul__(other)`` slot wrapper.)rK  rB  r<   r=   N)	rt   rR   r
   ÚNB_MULTIPLYÚnb_multiply_implrC  r:  r   r>   )r7   rI  rJ  rK  Ú	self_types        r5   Úslot_wrapper_mulrP  ö  sÇ   € õ & dÑ+Ô+€IÝ˜y­-Ô*CÑDÔDð AØ×$Ò$ R¨¸Ð$Ñ@Ô@Ð@Ý  Ñ+Ô+ð 0õ ˜r 4¨Ñ/Ô/Ð/ÝØ
ð	HØ×!Ò!Ñ#Ô#ð	Hð 	HØ,1×,BÒ,BÑ,DÔ,Dð	Hð 	Hð 	Hñô ð ð ð r@   c                 óâ   — t          |¦  «        }t          |t          j        ¦  «        r|                     | |¦  «        S t          |¦  «        rt          | ||¦  «        S t          | ||¦  «        S )uÍ  ``self.__imul__(other)`` slot wrapper.

    When neither ``nb_inplace_multiply`` nor ``sq_inplace_repeat`` is
    installed, the slotdef machinery doesn't generate ``__imul__`` at all
    â€” but the operator-level fallback in ``slot_nb_inplace_multiply``
    (typeobject.c) does try the non-inplace slot.  We mirror that here so
    method lookups don't graph-break on (e.g.) tuple, even though tuple
    has no ``__imul__`` attribute in standard CPython.
    )rt   rR   r
   ÚNB_INPLACE_MULTIPLYÚnb_inplace_multiply_implrG  r=  rP  )r7   rI  rJ  rO  s       r5   Úslot_wrapper_imulrT    sp   € õ & dÑ+Ô+€IÝ˜y­-Ô*KÑLÔLð 8Ø×,Ò,¨R°Ñ7Ô7Ð7Ý(¨Ñ3Ô3ð 8Ý& r¨4°Ñ7Ô7Ð7Ý˜B  eÑ,Ô,Ð,r@   Úopc                 ó�  — |dk    rSt          | |¦  «        }|�(|                     ¦   «         rt          j        d¦  «        S t          j        t          ¦  «        S |dk    rO|                      ||d¦  «        }t          |¦  «        r|S t          j        |                     ¦   «          ¦  «        S t          j        t          ¦  «        S )a   object's tp_richcompare.

    https://github.com/python/cpython/blob/e76aa128fe/Objects/typeobject.c#L6263-L6305
    - __eq__: identity check, else NotImplemented
    - __ne__: delegates to tp_richcompare(self, other, Py_EQ) and inverts
    - ordering
    Ú__eq__NTÚ__ne__)r6   r�   r   r%   r  Úrichcompare_implÚis_richcompare_not_implemented)rI  r7   rJ  rU  ÚidentityÚ	eq_results         r5   Úobject_richcomparer]  Z  s¾   € ð 
ˆX‚~€~Ý& t¨UÑ3Ô3ˆØÐ H×$?Ò$?Ñ$AÔ$AÐÝ#Ô*¨4Ñ0Ô0Ð0ÝÔ&¥~Ñ6Ô6Ð6Ø	ˆxŠˆð ×)Ò)¨"¨e°XÑ>Ô>ˆ	Ý)¨)Ñ4Ô4ð 	ØÐÝÔ&¨9×+GÒ+GÑ+IÔ+IÐ'IÑJÔJÐJåÔ&¥~Ñ6Ô6Ð6r@   c                 óÎ  — |                       ¦   «         r|                      ¦   «         st          j        t          ¦  «        S |                      ¦   «         }|                     ¦   «         }	  t          t          |¦  «        |¦  «        ||¦  «        }n@# t          $ r3}t          t          |t          |j
        ¦  «        ¬¦  «         Y d}~nd}~ww xY wt          j        |¦  «        S )z=Constant-fold comparison for types with as_python_constant().rx   N)rŽ   r   r%   r  r�   r  r‘   r}   r   r¡   ry   )rI  r7   rJ  rU  Úself_valÚ	other_valr™   r˜   s           r5   Ú python_constant_richcompare_implra  x  sç   € ð ×"Ò"Ñ$Ô$ð 7¨E×,DÒ,DÑ,FÔ,Fð 7ÝÔ&¥~Ñ6Ô6Ð6Ø×&Ò&Ñ(Ô(€HØ×(Ò(Ñ*Ô*€IðCØ,•�˜h™œ¨Ñ,Ô,¨X°yÑAÔAˆˆøÝð Cð Cð CÝ ¥¨BµT¸!¼&±\´\ÐBÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøåÔ" 6Ñ*Ô*Ð*s   Á+'B Â
CÂ)CÃCÚ__gt__Ú__lt__Ú__ge__Ú__le__rW  rX  )rc  rb  re  rd  rW  rX  Ú_REFLECTED_OPú<z<=z==z!=ú>z>=)rc  re  rW  rX  rb  rd  Ú_OP_STRc           
      ó^  — t           |         }	 |                     ¦   «         }n# t          $ r d}Y nw xY w	 |                     ¦   «         }n# t          $ r d}Y nw xY wd}|�@|�>||ur:t          ||¦  «        r*d}|                     | ||¦  «        }t          |¦  «        s|S |                     | ||¦  «        }t          |¦  «        s|S |s(|                     | ||¦  «        }t          |¦  «        s|S |dv rlt          ||¦  «        }	|	�/|dk    r't          j        |	 	                    ¦   «          ¦  «        S |	S t          dd|› d|› d|› d	�d
g t          j        ¢¬¦  «         dS t          | dt          |         › d|                     ¦   «         › d|                     ¦   «         › d�¦  «         dS )au  Dynamo's do_richcompare.

    https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L994-L1039

    Implements the 4-step algorithm directly using richcompare_impl slots.
    Graph breaks inside user comparison methods propagate to COMPARE_OP
    (which runs eagerly) because UDOV.richcompare_impl disables nested
    graph breaks on the resolved funcvar.
    NFT©rW  rX  rX  z*richcompare identity fallback undeterminedzgeneric_richcompare(ú, rŸ   z9Cannot determine object identity for comparison fallback.rn   r=   z&' not supported between instances of 'r<   )rf  r,   r-   re   rY  rZ  r6   r   r%   r�   r   r   ÚSUPPORTABLEr   ri  r>   )
r7   r8   r9   rU  Ú	reflectedr  r  Úchecked_reverser™   r[  s
             r5   Úgeneric_richcomparerp  ž  s^  € õ ˜bÔ!€IðØ—’‘”ˆˆøÝð ð ð ØˆˆˆðøøøðØ—’‘”ˆˆøÝð ð ð Øˆˆˆðøøøð €Oð 	ÐØÐØ˜&Ð Ð Ý�v˜vÑ&Ô&ð !ð ˆØ×#Ò# B¨¨9Ñ5Ô5ˆÝ-¨fÑ5Ô5ð 	ØˆMð ×Ò  A rÑ*Ô*€FÝ)¨&Ñ1Ô1ð Øˆð ð Ø×#Ò# B¨¨9Ñ5Ô5ˆÝ-¨fÑ5Ô5ð 	ØˆMð 
Ð!Ð!Ð!Ý& q¨!Ñ,Ô,ˆØÐØ�XŠ~ˆ~Ý'Ô.°8×3NÒ3NÑ3PÔ3PÐ/PÑQÔQÐQØˆOÝØ@Ø:¨1Ð:Ð:°Ð:Ð:°RÐ:Ð:Ð:ØSØ2Õ%Ô1Ð2ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
õ 	ØðE•˜”ð Eð EØ×"Ò"Ñ$Ô$ðEð EØ-.×-?Ò-?Ñ-AÔ-AðEð Eð Eñ	
ô 	
ð 	
ð 	
ð 	
s   �$ ¤3²3·A ÁAÁAc                 óÎ   — |dvrt          d|› �¦  «        ‚t          ||¦  «        }|�,|                     ¦   «         rt          j        |dk    ¦  «        S t          | |||¦  «        S )aß  Dynamo's PyObject_RichCompareBool for eq/ne.

    https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L1046-L1080

    Like generic_richcompare, but with an identity shortcut first: if v
    and w are the same Python object, eq is True and ne is False. This
    matters for NaN (nan is nan -> True, but nan == nan -> False). Used by
    container comparisons (list_richcompare, tuplerichcompare) which call
    PyObject_RichCompareBool per element in CPython.
    rk  z2generic_richcompare_bool only supports eq/ne, got NrW  )ÚAssertionErrorr6   r�   r   r%   rp  )r7   r8   r9   rU  r[  s        r5   Úgeneric_richcompare_boolrs  æ  sw   € ð  
Ð%Ð%Ð%ÝÐVÐRTÐVÐVÑWÔWÐWÝ" 1 aÑ(Ô(€HØÐ × ;Ò ;Ñ =Ô =ÐÝÔ& r¨X¢~Ñ6Ô6Ð6Ý˜r 1 a¨Ñ,Ô,Ð,r@   c                 ó,   — |                      | ¦  «        S )zýInternal API: compute hash as (value, is_fake).

    Dispatches to the VT's hash_impl.  Called by generic_hash (which wraps
    the result in a VT), container hash_impls (which propagate is_fake),
    and HashableTracker (which just needs the int).
    )Ú	hash_impl)r7   rl   s     r5   Úgeneric_hash_implrv  þ  s   € ð �=Š=˜ÑÔÐr@   c                 ó„   — ddl m}m}m} t	          | |¦  «        \  }}|r |||j        ¬¦  «        S  |j        |¦  «        S )a$  User-facing API: mirrors PyObject_Hash, returns a VariableTracker.

    https://github.com/python/cpython/blob/e76aa128fe/Objects/object.c#L1101-L1115

    Wraps the result in ConstantVariable or FakeIdVariable depending on
    whether the hash depends on a sourceless object's identity.
    r   )r   ÚFakeIdVariableÚFakeValueKind)Úkind)r�   r   rx  ry  rv  ÚHASHr%   )r7   rl   r   rx  ry  ÚhÚis_fakes          r5   Úgeneric_hashr~  
  sj   € ð JÐIÐIÐIÐIÐIÐIÐIÐIÐIå" 2 sÑ+Ô+�J€A€wØð :Øˆ~˜a mÔ&8Ð9Ñ9Ô9Ð9Ø"ÐÔ" 1Ñ%Ô%Ð%r@   Úitemc                 óö   — t          |¦  «        }t          |¦  «        r|                     | |¦  «        S t          | |¦  «        }t	          j        | t          j        ¦  «                             | ||gi ¦  «        S )zô
    Implements PySequence_Contains semantics for VariableTracker objects.

    If the object has sq_contains (i.e., __contains__), calls obj.sq_contains(tx, item).
    Otherwise falls back to iterating over obj and comparing each element.
    )	rt   Útype_implements_sq_containsÚsq_containsrø   r   Úbuildr   Úimpl_CONTAINS_OP_fallbackrõ   )r7   rl   r  r†   Úits        r5   Úgeneric_containsr†    sx   € õ 	˜cÑ"Ô"€AÝ" 1Ñ%Ô%ð ,Ø�Š˜r 4Ñ(Ô(Ð(õ ˜R Ñ%Ô%ˆÝÔ$Ø•	Ô3ñ
ô 
ç
Š-˜˜T 2˜J¨Ñ
+Ô
+ð	,r@   .Ú(_CONSTANT_FOLD_SUBCLASSCHECK_METACLASSESÚderivedÚclsc                 ób  — |                      ¦   «         }|                      ¦   «         }|t          u s	|t          u r3t          dd|› d|› d�ddgt          j        ¢t          j        ¢¬¦  «         t          |¦  «        }|t          u rc	 t          j	        t          ||¦  «        ¦  «        S # t          $ r3}t          t          | t          |j        ¦  «        ¬¦  «         Y d	}~nd	}~ww xY wt          j        h}t"          j        d
k     r|                     t(          j        ¦  «         ||v r)t)          j        |¦  «        }t/          j        | |¦  «        }ddlm}	 t7          ||	¦  «        ra|j        D ]E}
t;          | ||
¦  «        }t7          |t          ¦  «        r|j        rt          j	        d¦  «        c S ŒFt          j	        d¦  «        S t7          |t          ¦  «        r…t          t          |¦  «        t>          ¦  «        rc	 t          j	        t          ||¦  «        ¦  «        S # t          $ r3}t          t          | t          |j        ¦  «        ¬¦  «         Y d	}~nd	}~ww xY wt7          |t          ¦  «        stA          | d¦  «         | !                    | d|gi ¦  «        }tE          | |¦  «        S )zëMirrors CPython's PyObject_IsSubclass / object_issubclass.

    https://github.com/python/cpython/blob/v3.13.0/Objects/abstract.c#L2766-L2823

    This only attempts to replicate object_issubclass, otherwise we delegate to cpython
    z'issubclass() with unsupported argumentszissubclass(rl  rŸ   z:Arguments to issubclass() must be backed by python values.z#Make sure your arguments are types.rn   rx   N)é   é   r   )ÚTupleVariableTFzBissubclass() arg 2 must be a class, a tuple of classes, or a unionÚ__subclasscheck__)#r&   r   r   r   Ú
USER_ERRORrm  rt   r‘   r   r%   re   r}   r   r¡   ry   ÚtypesÚ	UnionTyper?  Úversion_infor¥   ÚtypingÚ_UnionGenericAliasÚget_argsr   rƒ  r(   r�  r+   ÚitemsÚgeneric_issubclassrÄ   r‡  r   Úcall_methodrœ   )r7   rˆ  r‰  Ú
derived_pyÚcls_pyÚcls_typer˜   Úunion_typesry   r�  r  Úrr™   s                r5   r—  r—  <  s&  € ð ×5Ò5Ñ7Ô7€JØ×-Ò-Ñ/Ô/€FØ•^Ð#Ð# vµÐ'?Ð'?ÝØ=Ø3 'Ð3Ð3¨SÐ3Ð3Ð3ØTà5ðå"Ô-ðõ #Ô.ðð			
ñ 		
ô 		
ð 		
õ % SÑ)Ô)€Hð •4ÐÐð	GÝ#Ô*ÝØØñô ñô ð øõ ð 	Gð 	Gð 	GÝ$¥Y°½¸a¼f¹¼ÐFÑFÔFÐFÐFÐFÐFÐFÐFøøøøð	Gøøøõ ”?Ð#€KÝ
Ô˜'Ò!Ð!Ø�ŠÝÔ%ñ	
ô 	
ð 	
ð �;ÐÐåŒ˜vÑ&Ô&ˆÝÔ# B¨Ñ-Ô-ˆð %Ð$Ð$Ð$Ð$Ð$å�#�}Ñ%Ô%ð .Ø”Ið 	5ð 	5ˆDÝ" 2 w°Ñ5Ô5ˆAÝ˜!Õ-Ñ.Ô.ð 5°1´7ð 5Ý'Ô.¨tÑ4Ô4Ð4Ð4Ð4øÝÔ& uÑ-Ô-Ð-õ �&�$ÑÔð G¥JÝˆV‰ŒÕ>ñ%ô %ð Gð	GÝ#Ô*ÝØØñô ñô ð øõ ð 	Gð 	Gð 	GÝ$¥Y°½¸a¼f¹¼ÐFÑFÔFÐFÐFÐFÐFÐFÐFøøøøð	Gøøøõ �f�dÑ#Ô#ð 
ÝØØPñ	
ô 	
ð 	
ð �_Š_˜RÐ!4°w°iÀÑDÔD€Fõ ˜˜FÑ#Ô#Ð#s0   Â!B) Â)
C&Â3)C!Ã!C&È!H# È#
I È-)IÉI Úiter_Únull_or_idxc                 ó¾   — ddl m} t          ||¦  «        s,t          |¦  «        t          u r|                     | |¦  «        S t          | |¦  «        }| |¦   «         fS )ab  
    Mirrors _PyForIter_VirtualIteratorNext.

    When ``null_or_idx`` is a tagged int (3.15+ virtual-iter path), dispatch
    to the iterable's ``_tp_iteritem`` slot via ``tp_iteritem_impl`` and
    return ``(value, next_index)``.  Otherwise fall back to the standard
    iterator protocol (``tp_iternext``) and return ``(value, NULL)``.

    Iterator exhaustion is signaled by ``ObservedUserStopIteration``
    propagating out of the slot impl, matching the rest of Dynamo's
    iterator protocol.

    https://github.com/python/cpython/blob/f31a89bb901067dd105b00cfa90523cf7ffdbbdd/Python/ceval.c#L3733
    r   )ÚNullVariable)r)   r¡  r+   rt   rz   Útp_iteritem_implrÞ   )r7   rž  rŸ  r¡  Únext_s        r5   Úvirtual_iterator_nextr¤  ž  ss   € ð& #Ð"Ð"Ð"Ð"Ð"õ �{ LÑ1Ô1ð7å! +Ñ.Ô.µ#Ð5Ð5à×%Ò% b¨+Ñ6Ô6Ð6Ý˜R Ñ'Ô'€EØ�,�,‘.”.Ð Ð r@   )r7   r   rl   r   r   r   )F)r7   r   rl   r   r  r   r   r   )ÍÚ__doc__Úabcr¢   Úenumr?  r�  r“  Ú	functoolsr   r   r   r   ÚtorchÚtorch._C._dynamor   r   r	   r
   r   r   r.   r   r   Úexcr   r   r   r   r   Úutilsr   Úbaser   r   r�   r   Úsymbolic_convertr   r6   r’   r?   r‘   Útuplerz   rF   r{   rL   rO   ÚSQ_ITEMrg   Ú	SQ_LENGTHr„   Ú	SQ_CONCATr+  ÚSQ_INPLACE_CONCATr.  ÚSQ_CONTAINSr�  ÚSQ_ASS_ITEMr¿   Ú	SQ_REPEATrC  ÚSQ_INPLACE_REPEATrG  Ú	MP_LENGTHr‚   ÚMP_SUBSCRIPTr±   ÚMP_ASS_SUBSCRIPTrÁ   rR   ÚNB_ADDÚtype_implements_nb_addÚNB_SUBTRACTÚtype_implements_nb_subtractrM  Útype_implements_nb_multiplyÚNB_REMAINDERÚtype_implements_nb_remainderÚNB_POWERÚtype_implements_nb_powerÚNB_NEGATIVErà   ÚNB_POSITIVEræ   ÚNB_ABSOLUTErê   ÚNB_BOOLr“   Ú	NB_INVERTÚtype_implements_nb_invertÚ	NB_LSHIFTÚtype_implements_nb_lshiftÚ	NB_RSHIFTÚtype_implements_nb_rshiftÚNB_ANDÚtype_implements_nb_andÚNB_XORÚtype_implements_nb_xorÚNB_ORÚtype_implements_nb_orÚNB_INTrÑ   ÚNB_FLOATrÙ   ÚNB_INPLACE_ADDÚtype_implements_nb_inplace_addÚNB_INPLACE_SUBTRACTÚ#type_implements_nb_inplace_subtractrR  Ú#type_implements_nb_inplace_multiplyÚNB_INPLACE_REMAINDERÚ$type_implements_nb_inplace_remainderÚNB_INPLACE_POWERÚ type_implements_nb_inplace_powerÚNB_INPLACE_LSHIFTÚ!type_implements_nb_inplace_lshiftÚNB_INPLACE_RSHIFTÚ!type_implements_nb_inplace_rshiftÚNB_INPLACE_ANDÚtype_implements_nb_inplace_andÚNB_INPLACE_XORÚtype_implements_nb_inplace_xorÚNB_INPLACE_ORÚtype_implements_nb_inplace_orÚNB_FLOOR_DIVIDEÚtype_implements_nb_floor_divideÚNB_TRUE_DIVIDEÚtype_implements_nb_true_divideÚNB_INPLACE_FLOOR_DIVIDEÚ'type_implements_nb_inplace_floor_divideÚNB_INPLACE_TRUE_DIVIDEÚ&type_implements_nb_inplace_true_divideÚNB_INDEXrj   ÚNB_MATRIX_MULTIPLYÚ"type_implements_nb_matrix_multiplyÚNB_INPLACE_MATRIX_MULTIPLYÚ*type_implements_nb_inplace_matrix_multiplyrX   r[   r^   ra   rc   rh   rk   rt   r€   r‡   rŠ   rœ   Úsetr�   Ú__annotations__r¬   r¯   r´   r³   rÃ   rÈ   rÌ   rÏ   rÖ   rÛ   rÞ   rã   rè   rì   rî   rø   Ú	NB_DIVMODr  r  r  r!  r#  r&  r(  rÊ   r0  r:  r=  r5  rE  rH  rP  rT  rZ  r]  ra  rf  rf   ri  rp  rs  rv  r~  r†  ÚABCMetaÚ_CÚ_TensorMetaÚEnumMetar‡  r—  r¤  © r@   r5   ú<module>rþ     s9  ððð ð ð €
€
€
Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø &Ð &Ð &Ð &Ð &Ð &ð ð =Ø<Ð<Ð<Ð<Ð<Ð<ð9Ø
ð9àð9ð ð9ð 9ð 9ð 9ðx	Ø#ð	àð	ð ð	ð ð		ð
 ð	ð 	ð 	ð 	ð €�3ÐÑÔð$ ð $¨¨s°C¸¸cÐ/AÔ)Bð $ð $ð $ñ Ôð$ð
% dð %°#ð %¸$ð %ð %ð %ð %ð% dð %°#ð %¸$ð %ð %ð %ð %ð "˜'Ð"9ÀÔ@WÐXÑXÔXÐ Ø#˜GØ /Ô";ðñ ô Ð ð $˜GØ /Ô";ðñ ô Ð ð %, GØ /Ô"Cð%ñ %ô %Ð !ð &˜gØ /Ô"=ðñ ô Ð ð &˜gØ /Ô"=ðñ ô Ð ð $˜GØ /Ô";ðñ ô Ð ð %, GØ /Ô"Cð%ñ %ô %Ð !ð
 $˜GØ .Ô":ðñ ô Ð ð  '˜wØ .Ô"=ð ñ  ô  Ð ð $+ 7Ø .Ô"Að$ñ $ô $Ð  ð $˜GØ .Ô":ðñ ô Ð ð
( dð (°#ð (¸$ð (ð (ð (ð (ð !˜Ð!8¸}Ô?SÐTÑTÔTÐ Ø%˜gØ -Ô";ðñ ô Ð ð &˜gØ -Ô";ðñ ô Ð ð  '˜wØ -Ô"<ð ñ  ô  Ð ð #˜7Ð#:ÀÔAWÐXÑXÔXÐ Ø%˜gØ -Ô";ðñ ô Ð ð &˜gØ -Ô";ðñ ô Ð ð &˜gØ -Ô";ðñ ô Ð ð "˜'Ð"9ÀÔ@UÐVÑVÔVÐ Ø#˜GØ -Ô"9ðñ ô Ð ð $˜GØ -Ô"9ðñ ô Ð ð $˜GØ -Ô"9ðñ ô Ð ð !˜Ð!8¸}Ô?SÐTÑTÔTÐ Ø ˜Ð!8¸}Ô?SÐTÑTÔTÐ Ø˜Ð 7¸mÔ>QÐRÑRÔRÐ Ø ˜Ð!8¸}Ô?SÐTÑTÔTÐ Ø"˜7Ð#:ÀÔAWÐXÑXÔXÐ Ø!( Ø -Ô">ð"ñ "ô "Ð ð '. gØ -Ô"Cð'ñ 'ô 'Ð #ð '. gØ -Ô"Cð'ñ 'ô 'Ð #ð (/ wØ -Ô"Dð(ñ (ô (Ð $ð $+ 7Ø -Ô"@ð$ñ $ô $Ð  ð %, GØ -Ô"Að%ñ %ô %Ð !ð %, GØ -Ô"Að%ñ %ô %Ð !ð ") Ø -Ô">ð"ñ "ô "Ð ð ") Ø -Ô">ð"ñ "ô "Ð ð !( Ø -Ô"=ð!ñ !ô !Ð ð #* 'Ø -Ô"?ð#ñ #ô #Ð ð ") Ø -Ô">ð"ñ "ô "Ð ð +2¨'Ø -Ô"Gð+ñ +ô +Ð 'ð *1¨Ø -Ô"Fð*ñ *ô *Ð &ð #˜7Ð#:ÀÔAWÐXÑXÔXÐ Ø%, WØ -Ô"Bð&ñ &ô &Ð "ð .5¨WØ -Ô"Jð.ñ .ô .Ð *ð
4 dð 4¨tð 4ð 4ð 4ð 4ð
8¨$ð 8°4ð 8ð 8ð 8ð 8ð
4 dð 4¨tð 4ð 4ð 4ð 4ð3 Tð 3¨dð 3ð 3ð 3ð 3ð1˜4ð 1 Dð 1ð 1ð 1ð 1ð-˜tð -¨ð -ð -ð -ð -ð.˜Dð . Tð .ð .ð .ð .ð
˜ð 
°4ð 
ð 
ð 
ð 
ðØ#ðà	ðð ðð ð	ð ð ð ð.RØ#ðRØ*;ðRàðRð Rð Rð Rð$Ø#ð$Ø*;ð$àð$ð $ð $ð $ð')Ø#ð')Ø*9ð')àð')ð ')ð ')ð ')ðT ˜#™%œ%€ˆs�3ŒxÐ Ð Ñ ðSØ#ðSØ*9ðSàðSð Sð Sð Sð@Ø#ðØ*;ðàðð ð ð ð<(OØ#ð(Oà	ð(Oð 
ð(Oð ð	(Oð (Oð (Oð (OðVYØ#ðYà	ðYð ðYð ð	Yð Yð Yð YðBØ#ðàðð ðð ð	ð
 ðð ð ð ð4Ø#ðàðð 
ðð ð	ð
 ðð ð ð ð0Ø#ðàðð ðð ð	ð ð ð ð2UØ#ðUàðUð 
ðUð ð	Uð Uð Uð Uð.'Ø#ð'Ø*9ð'àð'ð 'ð 'ð 'ðT&Ø#ð&Ø*9ð&àð&ð &ð &ð &ðR$Ø#ð$Ø*9ð$àð$ð $ð $ð $ð&Ø#ðØ*9ðàðð ð ð ð,Ø#ðØ*9ðàðð ð ð ð,Ø#ðØ*9ðàðð ð ð ð,=˜ð =¨Dð =ð =ð =ð =ð!SØ#ð!SØ*9ð!Sàð!Sð !Sð !Sð !SðRØ�Ô(ðà˜Ô8ðð ˜Ô8ðð �Ô(ð	ð
 ˆ]Ô ðð �]Ô0ðð �=Ô,ðð ˜=Ô<ðð ˆmÔ"ðð �mÔ2ðð �=Ô,ðð ˜=Ô<ðð ˆmÔ"ðð �mÔ2ðð ˆmÔ"ðð  �mÔ2ð!ð" �}Ô4ð#ð$  -ÔDØ#Ô2Ø+ÔBØ!Ô.Ø)Ô>ØÔ(ð/ð ð €ð64 /ð 4°dð 4ð 4ð 4ð 4ð˜ð ¨_ð Àð ð ð ð ð"F3Ø#ðF3àðF3ð ðF3ð ð	F3ð
 ðF3ð F3ð F3ð F3ðRØ#ðàðð ðð ð	ð
 ðð ðð ð ð ð@)Ø#ð)àð)ð ð)ð ð	)ð
 ð)ð ð)ð )ð )ð )ð&Ø#ðàðð ðð ð	ð
 ðð ðð ðð ð ð ð($Ø#ð$àð$ð ð$ð ð	$ð $ð $ð $ð"Ø#ðàðð ðð ð	ð ð ð ð>)Ø#ð)à	ð)ð ð)ð ð	)ð )ð )ð )ð.1Ø#ð1à	ð1ð ð1ð ð	1ð 1ð 1ð 1ð*

Ø#ð

àð

ð 
ð

ð 

ð 

ð 

ðØ#ðàðð ðð ð	ð ð ð ð<Ø#ðàðð ðð ð	ð ð ð ðR ð	ð Ø#ðà
ðð ðð ð	ð
 ðð ð ð ð,-Ø#ð-à
ð-ð ð-ð ð	-ð -ð -ð -ðV "7Ð ð7Ø
ð7à#ð7ð ð7ð 	ð	7ð
 ð7ð 7ð 7ð 7ð<+Ø
ð+à#ð+ð ð+ð 	ð	+ð
 ð+ð +ð +ð +ð( ØØØØØð!ð !€ˆt�C˜�HŒ~ð ð ñ ð ØØØØØðð €ˆˆc�3ˆhŒð ð ñ ðE
Ø#ðE
àðE
ð ðE
ð 	ð	E
ð
 ðE
ð E
ð E
ð E
ðP-Ø#ð-àð-ð ð-ð 	ð	-ð
 ð-ð -ð -ð -ð0	Ø#ð	Ø*9ð	à
ˆ3�ˆ9Ôð	ð 	ð 	ð 	ð&Ø#ð&Ø*9ð&àð&ð &ð &ð &ð$,Ø#ð,Ø*;ð,ØCTð,àð,ð ,ð ,ð ,ð4 „KØ	„HÔØ„Mð>Ð (¨%°°c°	Ô*:ð ð ñ ð_$Ø#ð_$àð_$ð 
ð_$ð ð	_$ð _$ð _$ð _$ðD!Ø#ð!àð!ð !ð!ð ˆ?˜OÐ+Ô,ð	!ð !ð !ð !ð !ð !r@   