Ë
    ÃÓ^jVþ ã            	       ó”  — 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 ddlmZ ddlmZ ddlmZmZmZmZ ddlZddlmZ ddlZddlZddlmZmZ dd	lmZ dd
lm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZPmQZQmRZR ddlSmTZT ddlUmVZVmWZW ddlXmYZY ddlZm[Z[ 	 ddl\Z]erddl_m`Z` ddlambZb ddlcmdZd dd lemfZf dd!lgmhZh  ejÒ                  ej«      ZkejØ                  ejÚ                  ejÜ                  ejÞ                  ejà                  ejâ                  ejä                  ejæ                  d"œZtejä                  ejæ                  ejà                  ejâ                  d#œZui et¥eu¥Zvewjñ                  etjó                  «       «      Zzewjñ                  eujó                  «       «      Z{d$e|d%e}fd&„Z~ejþ                  �j                   �j                  e�j                  �j                  z  Zƒd'eRd%e}fd(„Z„d;d$e�j                  d)e…d%e…fd*„Z† G d+„ d,eR«      Z‡ G d-„ d.eR«      Zˆ G d/„ d0e‡«      Z‰ G d1„ d2e‡«      ZŠ G d3„ d4e‡«      Z‹ G d5„ d6e[«      ZŒ G d7„ d8eR«      Z� G d9„ d:eR«      ZŽy# e^$ r dZ]Y �ŒÄw xY w)<aÀ  
This module contains variable tracker classes for handling tensors and tensor-related operations in Dynamo.

The main class is TensorVariable which represents torch.Tensor inputs and intermediate values in the FX graph.
It handles tensor operations, method calls, and maintains metadata about tensor properties like dtype, device, etc.

Other key classes include:
- SymNodeVariable: Represents symbolic scalars (int/float/bool) used for size computation and unspecialized values
- NumpyNdarrayVariable: Handles numpy array interop through torch._numpy
- UnspecializedPythonVariable: Represents unspecialized Python numeric values as 1-element tensors
- TensorSubclassVariable: Handles tensor subclasses with __torch_function__ overrides
- UntypedStorageVariable: Represents tensor storage objects
- DataPtrVariable: Handles tensor data pointer operations

These classes work together to track tensor operations and properties during Dynamo's tracing process.
é    N)ÚIterableÚSequence)Únullcontext)Úchain)ÚNoneType)ÚAnyÚNoReturnÚOptionalÚTYPE_CHECKING)Ú	sym_floatÚsym_int)Úcompiled_autograd)Úis_opaque_reference_type)Ú
OpaqueBase)Úis_sparse_any)Úguard_scalarÚGuardOnDataDependentSymNodeÚhas_free_symbolsÚis_symbolicÚSymTypes)Úis_traceable_wrapper_subclassé   )ÚconfigÚgraph_break_hintsÚ	variables)Útrace_wrapped)ÚObservedAttributeErrorÚraise_observed_exceptionÚTorchRuntimeErrorÚunimplementedÚ$UnknownPropertiesDuringBackwardTraceÚ	UserErrorÚUserErrorType)Úcall_hook_from_backward_state)ÚGuardBuilderÚinstall_guard)Ú
AttrSource)Úcmp_name_to_op_mappingÚfqnÚget_custom_getattrÚget_fake_valueÚget_real_valueÚguard_if_dynÚobject_has_getattributeÚproductÚproxy_args_kwargsÚraise_args_mismatchÚset_example_valueÚtensortype_to_dtypeé   )ÚAttributeMutationNewÚValueMutationNewÚVariableTracker©ÚConstantVariable)ÚListIteratorVariableÚSizeVariable)ÚTorchScriptObjectVariable)ÚUserDefinedClassVariable)Ú	PyCodegen)ÚOutputGraph)ÚInstructionTranslatorBase)ÚUserFunctionVariable©ÚTensorWithTFOverrideVariable)ú>ú<z>=z<=ú==ú!=Úisúis not)rH   rI   rF   rG   ÚvalueÚreturnc                 ó0  — t        t        | «      xr� t        j                  j                  j                  | «       xrU t        | d«      xrG t        | j                  t        j                  «      xr! t        | j                  | j                  d «      «      S )NÚ__self__)ÚboolÚcallableÚtorchÚ_dynamoÚutilsr.   ÚhasattrÚ
isinstancerM   ÚTensorÚgetattrÚ__name__©rJ   s    úi/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/tensor.pyÚis_bound_tensor_methodrZ   ƒ   sy   € ÜÜ�‹ò 	:Ü—‘×#Ñ#×;Ñ;¸EÓBÐBò	:ä�E˜:Ó&ò	:ô �u—~‘~¤u§|¡|Ó4ò	:ô �E—N‘N E§N¡N°DÓ9óð ó    Úvtc                 ó’   — | j                  «       ryt        | t        «      xr% t        | j                  t        t
        t        f«      S )uÍ   True if vt can be the other operand of a SymNode arithmetic op
    (add/sub). Accepts SymNode-like values plus float ConstantVariable â€”
    arithmetic with float promotes to SymFloat, unlike bitwise ops.T)Úis_symnode_likerT   r9   rJ   ÚfloatÚintrN   )r\   s    rY   Ú_is_sym_arith_operandra   ”   s;   € ð 
×ÑÔØô �bÔ*Ó+ÒX´
¸2¿8¹8ÄeÌSÔRVÐEWÓ0XÐXr[   Ú	type_namec                 óø  — t         j                  j                  j                  | «      r�t         j                  j                  j	                  | «      }t         j                  j                  j                  | «      }t         j                  j                  j                  | «      }d|› d|› dt        |«      › d�S t         j                  j                  j                  | «      rdt         j                  j                  j	                  | «      }t         j                  j                  j                  | «      }d|› dt        |«      › d�S t         j                  j                  j                  | «      rdt         j                  j                  j	                  | «      }t         j                  j                  j                  | «      }d|› dt        |«      › d�S |› dt        | j                  «      › d| j                  › d�S )	NzBatchedTensor(lvl=z, bdim=z, value=ú)zGradTrackingTensor(lvl=zFunctionalTensor(lvl=z(shape=z, dtype=)rP   Ú_CÚ
_functorchÚis_batchedtensorÚmaybe_get_levelÚmaybe_get_bdimÚget_unwrappedÚ_tensor_debug_reprÚis_gradtrackingtensorÚis_functionaltensorÚtupleÚshapeÚdtype)rJ   rb   ÚlevelÚbdimÚ	unwrappeds        rY   rk   rk   Ÿ   s�  € Ü‡x�x×Ñ×+Ñ+¨EÔ2Ü—‘×#Ñ#×3Ñ3°EÓ:ˆÜ�x‰x×"Ñ"×1Ñ1°%Ó8ˆÜ—H‘H×'Ñ'×5Ñ5°eÓ<ˆ	ðØ�'˜   hÔ/AÀ)Ó/LÐ.MØðð	
ô
 ‡x�x×Ñ×0Ñ0°Ô7Ü—‘×#Ñ#×3Ñ3°EÓ:ˆÜ—H‘H×'Ñ'×5Ñ5°eÓ<ˆ	Ø(¨¨¨xÔ8JÈ9Ó8UÐ7VÐVWÐXÐXÜ‡x�x×Ñ×.Ñ.¨uÔ5Ü—‘×#Ñ#×3Ñ3°EÓ:ˆÜ—H‘H×'Ñ'×5Ñ5°eÓ<ˆ	Ø& u g¨XÔ6HÈÓ6SÐ5TÐTUÐVÐVØˆ[˜¤ e§k¡kÓ 2Ð3°8¸E¿K¹K¸=ÈÐJÐJr[   c            #       óÖ  ‡ — e Zd ZdZdddddddd	d
ddddddhej
                  £Zdefd„Zdej                  fd„Z
dddddœdej                  j                  dej                  dej                  dej                  ded	eded
ededededeedf   dz  deedf   dz  dedz  dedz  deddf"ˆ fd„Z	 dµdddedz  ddfd„Zdedz  fd„Zddd edz  d!eddfd"„Zdefd#„Zdddefd$„Zdej                  j                  fd%„Zdefd&„Zdefd'„Zdddefd(„Zddd)ed*edefd+„Ze d,ej                  de!eef   fd-„«       Z"ddd.edefd/„Z#dddefd0„Z$dddedz  fd1„Z%dddedz  fd2„Z&dddedz  fd3„Z'ddde(dz  fd4„Z)dddefd5„Z*ddde(dz  fd6„Z+ddde(dz  fd7„Z,ddde(dz  fd8„Z-ddde(dz  fd9„Z.ddde/fd:„Z0dddedz  fd;„Z1dddefd<„Z2ddde(dz  fd=„Z3dddefd>„Z4ddd.ede(fd?„Z5ddd.edefd@„Z6	 dµdddAe7e   dz  de8e   fdB„Z9dddCdDdEedFe8e   dGe!eef   defdH„Z:defdI„Z;e<deedf   fdJ„«       Z=de8e   fdK„Z>de8e   fdL„Z?dddMedefdN„Z@ddd.edOe8e   ddPdef
dQ„ZAdddOedededz  fdR„ZBdddOedededz  fdS„ZC	 dµd.edTedz  dedz  fdU„ZDdddedz  fdV„ZEeEZFdddedz  fdW„ZGeGZHddde(dz  fdX„ZIddde(dz  fdY„ZJddde(dz  fdZ„ZK	 dµddd[edz  de(dz  fd\„ZL	 	 d¶dddedz  d^edededz  f
d_„ZMddd`eddafdb„ZNdddedz  fdc„ZOdddefdd„ZPd]deœdddfeez  ddgfdh„ZQdddefdi„ZR	 d·djeSe   dkede8e   dz  fdl„ZT	 	 	 	 d¸dddmedz  dnedz  doedz  dpedz  dedz  fdq„ZUdddOededdrfds„ZVdddOededdrfdt„ZWddduedefdv„ZXdddOededdfdw„ZYdddefdx„ZZdddefdy„Z[dddefdz„Z\dddefd{„Z]dddefd|„Z^dddefd}„Z_dddefd~„Z`dddefd„Zadddefd€„Zbdddefd�„Zcdddefd‚„ZddddOededefdƒ„Zee efjÎ                  d¹d„„«       «       Zhdddefd…„Zidddefd†„Zjdddefd‡„Zkdddefdˆ„Zldd‰œdddŠed‹ed,edz  dedz  f
dŒ„ZmdddMed,edefd�„ZndddOedede/fdŽ„ZodddOedede/fd�„ZpdddOedede/fd�„ZqdddOedede/fd‘„ZrdddOededdfd’„Zsdd“œddd)ed”edz  dedz  fd•„Ztdd‰œdddŠd d‹d d,edz  dedz  f
d–„Zuddd—edefd˜„Zvddd™edefdš„ZwdddOededefd›„ZxdddOededefdœ„Zyddd.ed�edefdž„Zz	 dºddd	eez  defdŸ„Z{d»d „Z|de/fd¡„Z}dddOedededz  fd¢„Z~d£d dddOedededz  f
d¤„Z	 	 	 	 d¼d¥„Z€d.eddfd¦„Z�	 d·ddd)ed§edefd¨„Z‚	 d·ddd)ed§edefd©„Zƒ	 d·ddd)ed§edefdª„Z„	 d·ddd)ed§edefd«„Z…	 d·ddd)ed§edefd¬„Z†	 d·ddd)ed§edefd­„Z‡	 d·ddd)ed§edefd®„Zˆ	 d·ddd)ed§edefd¯„Z‰	 d·ddd)ed§edefd°„ZŠ	 d·ddd)ed§edefd±„Z‹dddeeef   fd²„ZŒ	 d·ddd)ed§edefd³„Z�d)eŽdefd´„Z�ˆ xZ�S )½ÚTensorVariablez=A torch.Tensor input or an intermediate value in the FX graphÚproxyrp   ÚdeviceÚlayoutÚndimÚsizeÚstrideÚrequires_gradÚis_quantizedÚis_contiguousÚ	is_nestedÚ	is_sparseÚ
class_typeÚspecialized_valueÚ_is_name_setrK   c                 ó  — t        | j                  «      |j                  v r0d|j                  t        | j                  «         j                  › d�S | j                  r| j                  j                  |«      S t        d| › d�«      ‚)Nz__graph_out[ú]zPython codegen for z failed with unknown source.)Úidrv   Úgraph_outputsÚindexÚsourceÚreconstruct_pycodeÚRuntimeError©ÚselfÚcodegens     rY   rŠ   z!TensorVariable.reconstruct_pycodeÊ   ss   € Üˆd�j‰j‹>˜W×2Ñ2Ñ2Ø! '×"7Ñ"7¼¸4¿:¹:»Ñ"G×"MÑ"MÐ!NÈaÐPÐPØ�[Š[Ø—;‘;×1Ñ1°'Ó:Ð:äÐ!4°T°FÐ:VÐWÓXÐXr[   c                 ój   — t        | j                  j                  | j                  j                  «      S )zá
        Get the actual value represented by this variable if computation is run
        using the user-provided inputs.
        NOTE: this runs actual tensor computation and may be
        slow and memory-intensive.
        )r,   rv   ÚnodeÚtracer©r�   s    rY   r,   zTensorVariable.get_real_valueÒ   s#   € ô ˜dŸj™jŸo™o¨t¯z©z×/@Ñ/@ÓAÐAr[   N)Ú_sizer{   r~   rƒ   Úhas_grad_fnr“   .Úkwargsc                ó@  •— t        ‰| �  di |¤Ž || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        |	| _        |
| _        || _        |€#| j                  j                   j"                  dk(  }|| _        y )NÚplaceholder© )ÚsuperÚ__init__rv   rp   rw   rx   ry   r“   r{   r|   r}   r~   r   r€   r�   r”   r�   Úoprƒ   )r�   rv   rp   rw   rx   ry   r|   r   r}   r€   r�   r”   r“   r{   r~   rƒ   r•   Ú	__class__s                    €rY   rš   zTensorVariable.__init__Û   s¡   ø€ ô( 	‰ÑÑ"˜6Ò"ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒ	ØˆŒ
ØˆŒØ*ˆÔØ(ˆÔØ*ˆÔØ"ˆŒØ"ˆŒØ$ˆŒØ&ˆÔØÐàŸ:™:Ÿ?™?×-Ñ-°Ñ>ˆLØ".ˆÕr[   Útxr@   Ú
target_clsc                 óø   — ddl m}m} |€t        | «      }| j                  j
                  j                  j                  d«      } |||| ||«      «      }|j                  «       D ]  \  }}t        | ||«       Œ y )Nr4   )Úget_specialized_propsÚinfer_subclass_typeÚexample_value)
Úbuilderr    r¡   Útyperv   r�   ÚmetaÚgetÚitemsÚsetattr)	r�   r�   rž   r    r¡   r¢   Úspecialized_propsÚkÚvs	            rY   Úsynchronize_attributesz%TensorVariable.synchronize_attributes  sy   € ÷ 	HàÐÜ˜d›ˆJàŸ
™
Ÿ™×,Ñ,×0Ñ0°ÓAˆÙ1Ø˜˜MÑ+>¸}Ó+Mó
Ðð &×+Ñ+Ó-ò 	 ‰DˆAˆqÜ�D˜!˜QÕñ	 r[   c                 ó€   — | j                   j                  j                  j                  d«      }|�|j                  S dS )zFGet the current version of self's fake tensor, or None if unavailable.r¢   N)rv   r�   r¥   r¦   Ú_version)r�   Ú	self_fakes     rY   Ú_get_fake_versionz TensorVariable._get_fake_version  s6   € à—J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=ˆ	Ø%.Ð%:ˆy×!Ñ!ÐDÀÐDr[   Úversion_beforeÚhas_tensor_argc                 ó˜   — | j                  «       }|�8|�5||kD  r/|r| j                  |«       |j                  j                  |«       yyyy)z‹
        Sync attributes if self was mutated by an inplace operation.

        See Note [Inplace ops and VariableTracker metadata]
        N)r°   r¬   ÚoutputÚ&check_input_mutation_on_current_stream)r�   r�   r±   r²   Úversion_afters        rY   Ú_sync_if_inplace_mutationz(TensorVariable._sync_if_inplace_mutation  sX   € ð ×.Ñ.Ó0ˆàÐ&ØÐ)Ø Ò.áØ×+Ñ+¨BÔ/Ø�I‰I×<Ñ<¸RÕ@ð	 /ð *ð 'r[   c                 óx   — t        | j                  j                  j                  d   | j	                  «       «      S ©Nr¢   )rk   rv   r�   r¥   Úpython_type_namer’   s    rY   Ú
debug_reprzTensorVariable.debug_repr,  s0   € Ü!Ø�J‰J�O‰O× Ñ  Ñ1°4×3HÑ3HÓ3Jó
ð 	
r[   c                 ód   — t        dd| j                  «       › �dg t        j                  ¢¬«       y )Nzrepr() on tensorz
repr() on zRTensor repr requires actual runtime values which are not available during tracing.©Úgb_typeÚcontextÚexplanationÚhints)r    rº   r   ÚSUPPORTABLE©r�   r�   s     rY   Ú	repr_implzTensorVariable.repr_impl1  s5   € ÜØ&Ø  ×!6Ñ!6Ó!8Ð 9Ð:ð,à2Ô%×1Ñ1Ð2ö	
r[   c                 ó   — | j                   S ©N©rv   r’   s    rY   Úas_proxyzTensorVariable.as_proxy:  ó   € Ø�z‰zÐr[   c                 ó   — | j                   S rÆ   )r�   r’   s    rY   Úpython_typezTensorVariable.python_type=  s   € Ø�‰Ðr[   c                  ó   — y©NTr˜   r’   s    rY   Ú	is_tensorzTensorVariable.is_tensor@  ó   € Ør[   c                 óZ  — ddl m} | j                  |dg i «      }t        |t        «      r&t        |j
                  t        j                  «      r|S t        ||«      r)t        j                  |t        |j                  «      «      S t        j                  ||j                  «       dk7  «      S )Nr4   r8   Úitemr   )Úconstantr9   Úcall_methodrT   ÚSymNodeVariableÚsym_numrP   ÚSymBoolr7   ÚbuildrN   rJ   ÚcreaterÈ   )r�   r�   r9   rÑ   s       rY   Ú	bool_implzTensorVariable.bool_implC  s…   € å.à×Ñ  F¨B°Ó3ˆÜ�dœOÔ,´Ø�L‰Lœ%Ÿ-™-ô2
ð ˆKÜ�dÐ,Ô-Ü"×(Ñ(¨¬T°$·*±*Ó-=Ó>Ð>Ü×%Ñ% b¨$¯-©-«/¸QÑ*>Ó?Ð?r[   Úotherr›   c                 ó&  — ddl m} t        |t        t        t
        f«      st	        j                  t        «      S t        |   }|j                  j                  d|| j                  «       |j                  «       fi «      } |t        | «      ||«      S )zETensor tp_richcompare: element-wise comparison producing an FX proxy.r4   ©Úwrap_fx_proxy_clsÚcall_function)r£   rÝ   rT   rÔ   r9   ru   rØ   ÚNotImplementedr(   r´   Úcreate_proxyrÈ   r¤   )r�   r�   rÚ   r›   rÝ   Úop_fnrv   s          rY   Úrichcompare_implzTensorVariable.richcompare_implP  sx   € õ 	/ä˜%¤/Ô3CÄ^Ð!TÔUÜ#×*Ñ*¬>Ó:Ð:Ü& rÑ*ˆØ—	‘	×&Ñ&Ø˜U T§]¡]£_°e·n±nÓ6FÐ$GÈó
ˆñ !¤ d£¨R°Ó7Ð7r[   rJ   c                 óø  ‡ — ‰ j                   ‰ j                  ‰ j                  t        ‰ j                  «      ‰ j
                  ‰ j                  ‰ j                  ‰ j                  t        ‰ «      dœ	}	 ‰ j                  d u|d<   t        ‰ «      r0t        ‰ «      s%t        d„ ‰ j                  «       D «       «      |d<   |S t        ‰ «      sžt        d„ ‰ j                  «       D «       «      |d<   t        ‰ j!                  «       «      |d<   t"        j$                  j&                  j)                  ‰ «      rd |d<   |S t        ˆ fd	„t"        j*                  j,                  D «       «      |d<   |S # t        $ r d|d<   Y Œöw xY w)
N)	rp   rw   rx   ry   r|   r   r}   r€   r�   r”   Fc              3   óL   K  — | ]  }t        |«      rt        |«      n|–— Œ y ­wrÆ   ©r   r`   ©Ú.0Úss     rY   ú	<genexpr>z,TensorVariable.specialize.<locals>.<genexpr>v  s$   è ø€ ò #Ø45œ+ aœ.”�A”¨aÓ/ñ#ùó   ‚"$r“   c              3   óL   K  — | ]  }t        |«      rt        |«      n|–— Œ y ­wrÆ   rå   ræ   s     rY   ré   z,TensorVariable.specialize.<locals>.<genexpr>€  s)   è ø€ ò #ð ô & aœ.”�A”¨aÓ/ñ#ùrê   r{   r~   c              3   óF   •K  — | ]  }‰j                  |¬ «      r|–— Œ y­w)©Úmemory_formatN)r~   )rç   ÚxrJ   s     €rY   ré   z,TensorVariable.specialize.<locals>.<genexpr>Œ  s*   øè ø€ ò /àØ×*Ñ*¸Ð*Ô;ô ñ/ùs   ƒ!)rp   rw   rx   r`   ry   r|   r   r}   r€   r¤   Úgrad_fnÚ	Exceptionr   r   rn   rz   r{   rP   re   rf   rg   Ú_prims_commonÚ_memory_formats)rJ   Úpropss   ` rY   Ú
specializezTensorVariable.specializea  sd  ø€ ð —[‘[Ø—l‘lØ—l‘lÜ˜Ÿ
™
“OØ"×0Ñ0ØŸ™Ø!×.Ñ.ØŸ™Ü˜u›+ñ
!
ˆð	)Ø#(§=¡=¸Ð#<ˆE�-Ñ ô ˜ÔÔ(8¸Ô(?Ü"ñ #Ø9>¿¹»ô#ó ˆE�'‰Nð6 ˆô1 " %Ô(ô #ñ #ð Ÿ™›ô	#ó ˆE�'‰Nô $ E§L¡L£NÓ3ˆE�(‰OÜ�x‰x×"Ñ"×3Ñ3°EÔ:ð *.��oÑ&ð ˆô */ó /ä"×0Ñ0×@Ñ@ô/ó *��oÑ&ð
 ˆøôC ò 	)ð $)ˆE�-Ó ð	)ús   Á1E( Å(E9Å8E9Únamec           
      ód  — | j                   j                  j                  d   }| j                  �sbt	        |«      �rV|j                  «       \  }}t        | j                  «       |«      }t        ||«      }||v rHt        |t        j                  t        f«      st        dt        |«      › �«      ‚ddlm}  ||||¬«      S t!        t        |«      «      rVt        j"                  j$                  j'                  |j(                  j*                  |«      }	t-        j.                  ||	|¬«      S t        |t        j"                  j$                  j0                  «      rt-        j.                  |||¬«      S t3        |«      st5        j6                  ||«      S | j                  r| j                  j9                  «       st:        ‚|j(                  j<                  |j(                  j>                  dœ}
	 tA        | j                  jB                  |
«      }|€t:        ‚tG        |«      rt:        ‚tI        |«      rt:        ‚	 t        ||«      }tQ        | j                  |«      }tS        «      rddl*m+}  || ||t        |«      ¬«      S tY        | j                  j[                  t]        j^                  t`        jb                  |¬«      «      «       t5        j6                  |||«      S # tD        $ r}t:        |‚d }~ww xY w# tJ        $ r0 tM        tJ        |dt        |«      jN                  › d	|› d�g¬
«       Y Œêw xY w)Nr¢   z#Expected Tensor or OpaqueBase, got r4   ©Úwrap_fx_proxy)r�   rv   r¢   )r�   )ÚLÚGú'z' object has no attribute '©Úargs©ÚGetAttrVariable)r‰   Úpy_type©Úattr)2rv   r�   r¥   r‰   r   Ú__tensor_flatten__rV   rÈ   rT   rP   rU   r   ÚAssertionErrorr¤   r£   rù   r   Ú_libraryÚfake_class_registryÚmaybe_to_fake_objr´   Ú	fake_moder<   rØ   ÚFakeScriptObjectrO   r7   r×   Úsubguards_allowedÚNotImplementedErrorÚlocal_scopeÚglobal_scopeÚevalrö   rñ   r.   r*   ÚAttributeErrorr   rW   r'   rZ   Úmiscr   r&   Ú
make_guardÚ	functoolsÚpartialr%   ÚHASATTR)r�   r�   rö   Úfake_valÚattrsÚ_ctxrv   r¢   rù   Úfake_script_objÚscopeÚ_input_associated_real_valueÚexcÚ
real_valueÚattr_sourcer   s                   rY   Údynamic_getattrzTensorVariable.dynamic_getattr“  sÃ  € ð —:‘:—?‘?×'Ñ'¨Ñ8ˆð �{‹{Ô<¸XÕFØ"×5Ñ5Ó7‰KˆE�4Ü˜DŸM™M›O¨TÓ2ˆEÜ# H¨dÓ3ˆMØ�u‰}ä! -´%·,±,Ä
Ð1KÔLÜ(Ø=¼dÀ=Ó>QÐ=RÐSóð õ 3á$¨°%À}ÔUÐUÜ)¬$¨}Ó*=Ô>Ü"'§.¡.×"DÑ"D×"VÑ"VØ—I‘I×'Ñ'¨ó#�ô 1×7Ñ7¸¸ÐSUÔVÐVÜØÜ—‘×2Ñ2×CÑCôô 1×7Ñ7¸¸}ÐQSÔTÐTô ˜mÔ,Ü&×,Ñ,¨R°Ó?Ð?à—’ §¡× =Ñ =Ô ?Ü%Ð%ð —i‘i×+Ñ+°"·)±)×2HÑ2HÑIˆð	/ô ,0°·±×0@Ñ0@À%Ó+HÐ(ð (Ð/Ü%Ð%ä"Ð#?Ô@Ü%Ð%äÐ:Ô;Ü%Ð%ð		Ü Ð!=¸tÓDˆJô ! §¡¨dÓ3ˆô " *Ô-å-á"Ø�d ;¼¸ZÓ8Hôð ô 	Ø�K‰K×"Ñ"¤9×#4Ñ#4´\×5IÑ5IÐPTÔ#UÓVô	
ô ×$Ñ$ R¨°[ÓAÐAøôM ò 	/Ü%¨3Ð.ûð	/ûô ò 	Ü$ÜØàœÐ9Ó:×CÑCÐDÐD_Ð`dÐ_eÐefÐgð÷ð	ús*   Ç- K È8K6 Ë	K3Ë'K.Ë.K3Ë66L/Ì.L/c                 ó‚   — | j                   � t        j                  || j                   «      S | j                  |dg i «      S )NÚdim)ry   r7   r×   rÓ   rÃ   s     rY   Úmethod_attr_ndimzTensorVariable.method_attr_ndimð  s:   € Ø�9‰9Ð Ü"×(Ñ(¨¨T¯Y©YÓ7Ð7à×#Ñ# B¨¨r°2Ó6Ð6r[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )rp   r7   r×   rÃ   s     rY   Úmethod_attr_dtypez TensorVariable.method_attr_dtypeö  s(   € ð �:‰:Ð!Ü"×(Ñ(¨¨T¯Z©ZÓ8Ð8Ør[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )rw   r7   r×   rÃ   s     rY   Úmethod_attr_devicez!TensorVariable.method_attr_deviceý  ó(   € ð �;‰;Ð"Ü"×(Ñ(¨¨T¯[©[Ó9Ð9Ør[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )rx   r7   r×   rÃ   s     rY   Úmethod_attr_layoutz!TensorVariable.method_attr_layout  r'  r[   c                 óv   — | j                   �-t        j                  || j                   j                  dk(  «      S y )NÚcuda)rw   r7   r×   r¤   rÃ   s     rY   Úmethod_attr_is_cudaz"TensorVariable.method_attr_is_cuda  s3   € ð �;‰;Ð"Ü"×(Ñ(¨¨T¯[©[×-=Ñ-=ÀÑ-GÓHÐHØr[   c                 óÄ   — | j                  «       r8| j                  D �cg c]  }t        j                  ||«      ‘Œ }}t	        |«      S | j                  |dg i «      S c c}w ©Nrz   )Ú
valid_sizerz   r7   r×   r;   rÓ   )r�   r�   rï   Úsizess       rY   Úmethod_attr_shapez TensorVariable.method_attr_shape  s`   € Ø�?‰?Ôà6:·i±iö,Ø12”×%Ñ% b¨!Õ,ð,ˆEð ,ô   Ó&Ð&à×#Ñ# B¨°°BÓ7Ð7ùò,s   ŸAc                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )r|   r7   r×   rÃ   s     rY   Úmethod_attr_requires_gradz(TensorVariable.method_attr_requires_grad  s,   € ð ×ÑÐ)Ü"×(Ñ(¨¨T×-?Ñ-?Ó@Ð@Ør[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )r}   r7   r×   rÃ   s     rY   Úmethod_attr_is_quantizedz'TensorVariable.method_attr_is_quantized"  s,   € ð ×ÑÐ(Ü"×(Ñ(¨¨T×->Ñ->Ó?Ð?Ør[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )r€   r7   r×   rÃ   s     rY   Úmethod_attr_is_sparsez$TensorVariable.method_attr_is_sparse)  ó(   € ð �>‰>Ð%Ü"×(Ñ(¨¨T¯^©^Ó<Ð<Ør[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )r   r7   r×   rÃ   s     rY   Úmethod_attr_is_nestedz$TensorVariable.method_attr_is_nested0  r8  r[   c                 ó*   — t        dd| › d�dg ¬«       y )Nz'Tensor.retain_grad() with AOTDispatcherúvar_getattr z retain_gradz8`Tensor.retain_grad()` does not work with AOTDispatcher.r½   ©r    rÃ   s     rY   Úmethod_attr_retain_gradz&TensorVariable.method_attr_retain_grad7  s   € ÜØ=Ø" 4 &¨Ð5ØRØö		
r[   c                 ó  — |j                   j                  j                  | d«      r&|j                   j                  j                  | d«      S t	        | j
                  t        «      r!| j                  st        j                  d «      S y )NÚgrad)
r´   Úside_effectsÚhas_pending_mutation_of_attrÚ	load_attrrT   Úmutation_typer5   r”   r9   rØ   rÃ   s     rY   Úmethod_attr_gradzTensorVariable.method_attr_grad?  si   € ð �9‰9×!Ñ!×>Ñ>¸tÀVÔLØ—9‘9×)Ñ)×3Ñ3°D¸&ÓAÐAä�t×)Ñ)Ô+?Ô@Ø×$Ò$ä#×*Ñ*¨4Ó0Ð0àr[   c                 ó”   — t        j                  t        j                  j                  j
                  «      j                  || gi «      S rÆ   )r   ÚTorchInGraphFunctionVariablerP   re   Ú	_autogradÚ_get_data_attrrÞ   rÃ   s     rY   Úmethod_attr_datazTensorVariable.method_attr_dataL  s8   € Ü×5Ñ5Ü�H‰H×Ñ×-Ñ-ó
ç
‰-˜˜T˜F BÓ
'ð	(r[   c                 ó€   — | j                   rt        dd| › d�dg ¬«       y t        j                  j	                  d «      S )NzTensor with grad_fn()r<  z grad_fnz@Dynamo does not support tracing tensors with a grad_fn directly.r½   )r”   r    r   r9   rØ   rÃ   s     rY   Úmethod_attr_grad_fnz"TensorVariable.method_attr_grad_fnQ  sC   € ð ×ÒÜØ/Ø& t f¨HÐ5Ø^Øö	ô ×-Ñ-×4Ñ4°TÓ:Ð:r[   c                 ó\   — ddl m} t        j                  |«      j	                  || gi «      S )Nr   )Ú_tensor_version)Útensor_version_oprN  r   rG  rÞ   )r�   r�   rN  s      rY   Úmethod_attr__versionz#TensorVariable.method_attr__version^  s,   € Ý7ä×5Ñ5°oÓF×TÑTØ��˜ó
ð 	
r[   c                 óæ  — ddl m} |t        v rt        j                  d«      S 	 t        j                  |t        «      j                  || t        j                  ||«      gi «      }t        ||«       }| j                  rGt        | j                  j                  t        j                   t"        j$                  |¬«      «      «       t        j                  ||«      S # t        t        f$ r d}Y Œ|w xY w)Nr4   rÿ   TFr  )Ú r   Úall_tensor_attrsr9   rØ   r7   r×   rV   rÞ   rT   r  r   r‰   r&   r  r  r  r%   r  )r�   r�   rö   r   ÚvarÚret_vals         rY   Úcall_obj_hasattrzTensorVariable.call_obj_hasattre  sÙ   € õ 	&ð Ô#Ñ#Ü#×*Ñ*¨4Ó0Ð0ð	Ü!×'Ñ'¨¬GÓ4×BÑBØ�Tœ?×0Ñ0°°TÓ:Ð;¸RóˆCô
 % S¨/Ó:Ð:ˆGð �;Š;ÜØ—‘×&Ñ&Ü×%Ñ%¤l×&:Ñ&:ÀÔFóôô ×$Ñ$ R¨Ó1Ð1øô Ô 6Ð7ò 	ØŠGð	ús   ¥AC ÃC0Ã/C0c                 ó¶  ‡ ‡‡— ‰ j                  ‰«      rR‰‰ j                  «       v rt        dd‰ › d‰› �d‰› d�d‰› d�g¬«       n!‰‰ j                  «       v rt	        d	‰› d
�«      ‚‰dk(  r$t        j                  ‰‰ j                  «       «      S t        ‰ d‰› �d «      }|� |‰«      nd }|�}‰ j                  rq‰ j                  j                  «       rW‰dvr|j                  «       sCt        ‰ j                  t        j                  «      «       t!        ‰ j                  ‰«      |_	        ‰ j                  �çt#        t$        j&                  j(                  ‰«      rÃt        t$        j&                  j(                  ‰«      }t#        |d«      r“t#        ||j+                  «       d   «      rvt$        j,                  j.                  t        ||j+                  «       d   «      j0                  v r5t2        j4                  j7                  t!        ‰ j                  ‰«      d¬«      S |€‰dk7  rdt
        d z  fˆˆ ˆfd„} |«       }|€‰ j9                  ‰‰«      }|€t:        ‚|S )NzStrict mode banned opr<  ú zGetattr invocation 'z"' in strict mode is not supported.zRemove `zj` from the list of banned ops by setting `torch._dynamo.config._autograd_backward_strict_mode_banned_ops`.r½   zUnknown property z] during speculating backward, dynamo will insert contiguous call ahead and speculate it againrœ   Úmethod_attr_)r@  r|   Ú	overloadsr   z9Getting an inplace view on a graph input is not supported)r‰   Úmsgr@  rK   c                  ó0  •— ddl m}  ddlm} t        j                  ‰d «      }|€y t        |«      t        j                  ury |j                  ‰j                  «       ‰«      }‰j                  � | ‰|t        ‰j                  ‰«      ¬«      S  | ‰|¬«      S )Nr4   rø   rÿ   )r�   rv   r‰   ©r�   rv   )r£   rù   r  r   rS  r¦   r¤   ÚtypesÚGetSetDescriptorTypeÚcreate_getattr_proxyrÈ   r‰   r'   )rù   r   Ústatic_attrrv   rö   r�   r�   s       €€€rY   Útry_generic_attr_handlingz=TensorVariable.var_getattr.<locals>.try_generic_attr_handling¿  sŒ   ø€ Ý2Ý1ä.×2Ñ2°4¸Ó>�ØÐ&Øô ˜Ó$¬E×,FÑ,FÑFØà'×<Ñ<¸T¿]¹]»_ÈdÓS�Ø—;‘;Ð*Ù(Ø U´:¸d¿k¹kÈ4Ó3Pôð ñ )¨B°eÔ<Ð<r[   )Úis_strict_modeÚ_strict_mode_banned_opsr    Ú#_strict_mode_conditional_banned_opsr!   r7   r×   rË   rV   r‰   r  Úis_python_constantr&   r  r%   Ú
TYPE_MATCHr'   rS   rP   ÚopsÚatenrZ  ÚTagÚinplace_viewÚtagsr   r  ÚDelayGraphBreakVariabler  r  )r�   r�   rö   ÚhandlerÚresultÚfnrb  s   ```    rY   Úvar_getattrzTensorVariable.var_getattr„  s8  ú€ ð ×Ñ˜rÔ"Ø�t×3Ñ3Ó5Ñ5ÜØ3Ø*¨4¨&°°$°Ð8Ø"6°t°fÐ<^Ð _à" 4 &ð )dð dðö	ð ˜×AÑAÓCÑCÜ:Ø'¨ vð  .Kð  Lóð ð �;ÒÜ"×(Ñ(¨¨T×-=Ñ-=Ó-?Ó@Ð@ä˜$ ,¨t¨fÐ 5°tÓ<ˆØ 'Ð 3‘˜”¸ˆð ÐØ—’Ø—‘×-Ñ-Ô/àÐ5Ñ5¸&×:SÑ:SÔ:Uô ˜$Ÿ/™/¬,×*AÑ*AÓBÔCÜ& t§{¡{°DÓ9ˆFŒMð �;‰;Ð"¤w¬u¯y©y¯~©~¸tÔ'DÜœŸ™Ÿ™¨Ó.ˆBä˜˜KÔ(Ü˜B §¡£¨qÑ 1Ô2Ü—I‘I×*Ñ*¬g°b¸"¿,¹,».ÈÑ:KÓ.L×.QÑ.QÑQô !—~‘~×=Ñ=Ü% d§k¡k°4Ó8ØSð >ó ð ð ˆ>˜d fšnð=¬ÀÑ/E÷ =ñ2 /Ó0ˆFàˆ>Ø×)Ñ)¨"¨dÓ3ˆFàˆ>Ü%Ð%Øˆr[   Úidxesc           	      óp  — ddl m} ddlm} | j	                  «       rt        | j                  «      }nP| j                  |dg i «      }t        |t        «      st        dt        |«      › �«      ‚t        |j                  «      }|dk(  rt        d«      ‚| j	                  «       r| j                  d   }nœ| j                  |dt        j                  |d«      gi «      }t        |t        «      s'|j!                  «       st        dt        |«      › �«      ‚t        |t        «      r|j#                  |j$                  «      }n|j'                  «       }|€t)        |«      }n)t        |«      |k7  rt        d	|› d
t        |«      › d�«      ‚t        | |«      rd|D �	cg c]"  }	 |t*        || j-                  «       |	   ¬«      ‘Œ$ }
}	|
D �cg c]+  } |j.                  ||| j0                  | j2                  «      ‘Œ- c}S |D �	cg c]'  }	 |t        | «      || j-                  «       |	   ¬«      ‘Œ) c}	S c c}	w c c}w c c}	w )Nr4   rÜ   rB   rz   zExpected SizeVariable, got r   zCan't unpack scalar tensors.z1Expected SymNodeVariable or python constant, got zCan't unpack a tensor of z rows into a tuple of z
 elements.©rž   r�   rv   )r£   rÝ   Útorch_functionrC   r/  Úlenrz   rÓ   rT   r;   r  r¤   r§   r7   r×   rÔ   rf  Úevaluate_exprr´   Úas_python_constantÚrangeru   rÈ   Úfrom_tensor_varr�   r‰   )r�   r�   rr  rÝ   rC   Úsize_lenÚsize_varÚlengthÚ
dyn_lengthÚiÚ	base_varsr«   s               rY   Úunpack_var_sequencez"TensorVariable.unpack_var_sequenceá  s%  € õ 	/Ý@à�?‰?ÔÜ˜4Ÿ9™9“~‰Hà×'Ñ'¨¨F°B¸Ó;ˆHÜ˜h¬Ô5Ü$Ð'BÄ4ÈÃ>ÐBRÐ%SÓTÐTÜ˜8Ÿ>™>Ó*ˆHà�qŠ=Ü Ð!?Ó@Ð@à�?‰?ÔØ—Y‘Y˜q‘\‰Fà×)Ñ)Ø�Fœ_×2Ñ2°2°qÓ9Ð:¸BóˆJô ˜:¤Ô7Ø×0Ñ0Ô2ä$ØGÌÈZÓHXÐGYÐZóð ô ˜*¤oÔ6Ø#×1Ñ1°"·)±)Ó<‘à#×6Ñ6Ó8�àˆ=Ü˜&“M‰Eä�5‹z˜VÒ#Ü$Ø/°¨xÐ7MÌcÐRWËjÈ\ÐYcÐdóð ô
 �dÐ8Ô9ð
 ö	ð ñ "Ü-°"¸D¿M¹M»OÈAÑ<NöðˆIð ð #ö	ð ð =Ð,×<Ñ<Ø˜˜4Ÿ?™?¨D¯K©Kõòð ð ö
àñ ¬¨d«¸À$Ç-Á-Ã/ÐRSÑBTÖUò
ð 	
ùòùòùò
s   Æ'H)Ç0H.Ç:,H3Útree_map_fnrA   Úmap_fnÚrestÚtree_map_kwargsc                 ó.   — |j                  || g|¢i «      S rÆ   )rÞ   )r�   r�   r‚  rƒ  r„  r…  s         rY   Úcall_tree_mapzTensorVariable.call_tree_map"  s   € ð ×#Ñ# B¨¨°¨°rÓ:Ð:r[   c                 ó   — | j                   d uS rÆ   )r“   r’   s    rY   r/  zTensorVariable.valid_size,  s   € Ø�z‰z Ð%Ð%r[   c                 óH   — | j                   €t        d«      ‚| j                   S )Nz%accessing None size in TensorVariable)r“   r  r’   s    rY   rz   zTensorVariable.size/  s"   € à�:‰:ÐÜ Ð!HÓIÐIØ�z‰zÐr[   c                 óJ   — t         j                  j                  j                  S rÆ   )rP   rQ   r   Ú)_autograd_backward_strict_mode_banned_opsr’   s    rY   rd  z&TensorVariable._strict_mode_banned_ops5  s   € Ü�}‰}×#Ñ#×MÑMÐMr[   c                 óJ   — t         j                  j                  j                  S rÆ   )rP   rQ   r   Ú5_autograd_backward_strict_mode_conditional_banned_opsr’   s    rY   re  z2TensorVariable._strict_mode_conditional_banned_ops8  s   € ä�M‰M× Ñ ×VÑVð	
r[   Úkeyc           
      óä  — ddl m}m} ddlm}m} | j                  |«      r'd| j                  «       v rt        dd| › d|› �dg ¬	«       i }t        j                  dd «      }|�} ||| |f|«      rq| j                  r.  ||t        t        | j                  d
«      d«      «      |«      }	n*|j                  |t        j                  j                   «      }	 |||	| |f|«      S | j#                  ||«      S )Nr4   ©ÚSourcelessBuilderÚVariableBuilder©Úcan_dispatch_torch_functionÚdispatch_torch_functionÚ__getitem__z-Illegal __getitem__ invocation in strict modezmp_subscript_impl rX  zHDynamo currently does not support __getitem__ invocation in strict mode.r½   rœ   )r£   r‘  r’  ru  r”  r•  rc  rd  r    rS  r¦   r‰   r'   rØ   rP   rU   r–  Úmethod___getitem__)
r�   r�   rŽ  r‘  r’  r”  r•  Úempty_kwargsra  Úfunc_vars
             rY   Úmp_subscript_implz TensorVariable.mp_subscript_impl=  sý   € ÷ 	@ßXà×Ñ˜rÔ" }¸×8TÑ8TÓ8VÑ'VÜØGØ,¨T¨F°!°C°5Ð9ð-àõð 46ˆÜ&×*Ñ*¨=¸$Ó?ˆØÐ"Ñ'BØ��s�˜\ô(
ð �{Š{ð™?ØÜœz¨$¯+©+°{ÓCÀ]ÓSóð ó‘ð
 -×3Ñ3°B¼¿¹×8PÑ8PÓQ�Ù*¨2¨x¸$À¸ÀlÓSÐSà×&Ñ& r¨3Ó/Ð/r[   rþ   zdict[str, VariableTracker]c                 ó	  — ddl m}m} ddlm}m} | j                  |«      r1|| j                  «       v rt        dd| › d|› d|› d|› �d|› d�g ¬	«       |d
k(  rt        dd| › d�ddg¬	«       t        j                  |d «      }	|	d u}
 ||t        | gt        |«      z   «      |«      r‡|
r…| j                  r.  ||t        t        | j                  d«      |«      «      |	«      }n*|j                  |t!        t"        j$                  |«      «      } |||t        | gt        |«      z   «      |«      S 	 |dk(  rm|s|r)t"        j&                  j(                  j+                  d«      ‚ddlm} ddl m}  |||j2                  j5                  d|| j7                  «       fi «      «      S |dk(  r+t        dd|› d|›d|›d�ddgt8        j:                  ¢¬	«       n3|dk(  r.d|v r*t        d d|› d|›d|›d�dd!gt8        j:                  ¢¬	«       	 t!        | d"|› �«      }	 |j=                  «       D ��ci c]  \  }}||j?                  «       “Œ }}} ||g|¢­i |¤Ž}|r|S 	 | jD                  jF                  jH                  j                  d'«      }|�tK        |«      n| jL                  }tO        ||«      s<t        d(d| › d|› d|› d|› �d)|› d*|jP                  › d+�g t8        j:                  ¢¬	«       ddl m} 	  |j2                  j4                  d,|gtS        | g|¢|«      ¢­Ž }dd0lm+} |jX                  rd|jX                  jZ                  rN||v rJt]        d1„ t_        ||ja                  «       «      D «       «      r |jX                  jZ                  jb                  ntd        }| jg                  «       } |«       5   ||«      }d d d «       | ji                  ||t]        d2„ |D «       «      «       S c c}}w # t@        $ r+}t        d#d| › d|› d|› d|› �d$|› d%�g |¬&«       Y d }~�ŒÁd }~ww xY w# tB        $ r Y �ŒÕw xY w# tT        $ r;}t        d-d| › d|› d|› d|› �d.|› d/�g t8        j:                  ¢|¬&«       Y d }~�ŒVd }~ww xY w# 1 sw Y   ŒÂxY w)3Nr4   r�  r“  z(Illegal method invocation in strict modeúcall_method rX  z/Dynamo currently does not support this method (z) invocation in strict mode.r½   Ú__deepcopy__z#Attempted to copy.deepcopy a tensorzcopy.deepcopy(rd   z3Dynamo does not support copy.deepcopy() on tensors.zAAvoid calling copy.deepcopy() on tensors inside compiled regions.rœ   Úwaitz2`wait` and `wait_tensor` do not take any argumentsr   )Úwait_tensorrø   rÞ   Úrandom_zTensor.random_ opzTensor.ú(args=ú	, kwargs=z This is currently not supported.z'Use the out-of-place version of this opÚuniform_Úfromz-Tensor.uniform_ op called with `from` keywordzAvoid using the `from` keyword.Úmethod_zUnhandled args for methodz6Dynamo encountered an error while calling the method `ú`.)r¾   r¿   rÀ   rÁ   Úfrom_excr¢   zUnhandled tensor methodzTensor method `z` is not defined on z9 and does not have an explicit handler in TensorVariable.rÓ   z/Unsupported argument type in tensor method callzFDynamo could not create a proxy for an argument in the call to Tensor.zX(). This usually means an unsupported type was passed as an argument to a tensor method.)Ú"methods_consuming_unbacked_scalarsc              3   ó^   K  — | ]%  }t        |t        «      xr |j                  d k(  –— Œ' y­w)r   N)rT   ru   ry   )rç   r«   s     rY   ré   z-TensorVariable.call_method.<locals>.<genexpr>  s/   è ø€ ò àô ˜1œnÓ-Ò=°!·&±&¸A±+Ó=ñùs   ‚+-c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrÆ   ©rÎ   )rç   Úargs     rY   ré   z-TensorVariable.call_method.<locals>.<genexpr>  s   è ø€ Ò#D¸ C§M¡M§OÑ#Dùs   ‚)5r£   r‘  r’  ru  r”  r•  rc  rd  r    rS  r¦   rn   Úlistr‰   r'   rØ   rV   rP   rU   rQ   r  ÚInternalTorchDynamoErrorÚ)torch.distributed._functional_collectivesrŸ  rù   r´   rà   rÈ   r   rÂ   r§   ÚrealizeÚ	TypeErrorr  rv   r�   r¥   r¤   r�   rS   rW   r0   r  r¨  r	  Ú	shape_envÚanyr   ÚvaluesÚignore_fresh_unbacked_symbolsr   r°   r·   )r�   r�   rö   rþ   r•   r‘  r’  r”  r•  ra  Úis_base_tensor_methodr™  rŸ  rù   Úhandler_methodrª   r«   Úrealized_kwargsro  Úer¢   Ú
check_typerv   r¨  Úctxr±   s                             rY   rÓ   zTensorVariable.call_method_  s#  € ÷ 	@ßXà×Ñ˜rÔ" t¨t×/KÑ/KÓ/MÑ'MÜØBØ& t f¨A¨d¨V°1°T°F¸!¸F¸8ÐDðØ�6Ð5ð7àõð �>Ò!ÜØ=Ø(¨¨¨aÐ0ØQàWðõ	ô '×*Ñ*¨4°Ó6ˆØ +°4Ð 7Ðñ (¨¬E°4°&¼4À»:Ñ2EÓ,FÈÔOÙ%à�{Š{ð™?Øœ
¤:¨d¯k©k¸;Ó#GÈÓNóàó‘ð -×3Ñ3°B¼ÄÇÁÈdÓ8SÓT�á*Ø�Hœe T F¬T°$«ZÑ$7Ó8¸&óð ð	ð �6Š>Ù‘vÜ—m‘m×'Ñ'×@Ñ@ØHóð õ Nå.á ØØ—	‘	×&Ñ&Ø# [°4·=±=³?Ð2DÀbóóð ð �9ÒÜØ+Ø! $  w¨¨¨z°&°¸!Ð<Ø>à=ðä&×2Ñ2ðö	ð �ZÒ F¨fÑ$4ÜØGØ! $  w¨¨¨z°&°¸!Ð<Ø>à5ðä&×2Ñ2ðõ	ð	Ü$ T¨W°T°FÐ+;Ó<ˆNðà>D¿l¹l»n×"M±d°a¸ 1 a§i¡i£k¡>Ð"M�Ñ"MÙ'¨ÐE¨TÒE°_ÑE�ÙØ!�Mð ð Ÿ
™
Ÿ™×,Ñ,×0Ñ0°ÓAˆà#0Ð#<ŒD�ÔÀ$Ç/Á/ð 	ô �z 4Ô(ÜØ1Ø& t f¨A¨d¨V°1°T°F¸!¸F¸8ÐDØ-¨d¨VÐ3GØ×&Ñ&Ð'ð (-ð-ð 7Ô)×5Ñ5Ð6õõ 	+ð	Ø*�B—I‘I×*Ñ*ØØðô # D =¨4 =°&Ó9òˆEõ6 	>ð �|Š|Ø—‘×&Ò&ØÐ:Ñ:Üñ ä˜t V§]¡]£_Ó5ôô ð	 �L‰L×"Ñ"×@Ò@ô ð 	ð ×/Ñ/Ó1ˆÙ‹Uñ 	.Ù" 2 uÓ-ˆF÷	.à×&Ñ&Ø�¤Ñ#D¸tÔ#DÓ Dô	
ð ˆùóe #Nøô ò ÜØ7Ø*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð!#Ø#' &¨ð!,àØ÷ó ûðûô ò 	Úð	ûôX #ò 		ÜØIØ& t f¨A¨d¨V°1°T°F¸!¸F¸8ÐDðØ!˜Fð #5ð6ð 7Ô)×5Ñ5Ð6Ø÷ó ûð		ú÷J	.ð 	.ús`   ÈP ÈO( È'O"ÉO( Ë-+P/ Î+
Q6Ï"O( Ï(	PÏ1 PÐPÐ	P,Ð+P,Ð/	Q3Ð80Q.Ñ.Q3Ñ6Q?c                 ó.   —  | j                   dg|¢­i |¤ŽS r.  ©Ú_method_size_stride©r�   r�   rþ   r•   s       rY   Úmethod_sizezTensorVariable.method_size  s!   € ð (ˆt×'Ñ'¨Ð@°Ò@¸Ñ@Ð@r[   c                 ó.   —  | j                   dg|¢­i |¤ŽS )Nr{   r½  r¿  s       rY   Úmethod_stridezTensorVariable.method_stride   s!   € ð (ˆt×'Ñ'¨ÐB°4ÒB¸6ÑBÐBr[   r!  c                 ó|  — t        |«      }dt        t           dt        dt        fd„}|dk(  r|nt        j
                  }|dk7  rt        | |«      }n$|dk(  r| j                  «       r| j                  }nd }|�"|€ ||«      S t	        j
                  ||   «      S | j                  j                  j                  j                  d«      x}�r|€5 t        ||«      «       }t        |«      s |t        d„ |D «       «      «      S y  t        ||«      |«      }t        |«      st	        j
                  t        |«      «      S y )Nrï   ÚoptionsrK   c           
      óh   — t        | D �cg c]  }t        j                  |fi |¤Ž‘Œ c}fi |¤ŽS c c}w rÆ   )r;   r9   rØ   )rï   rÄ  Úys      rY   Úmake_const_size_variablezDTensorVariable._method_size_stride.<locals>.make_const_size_variable*  s9   € ÜØ@AÖB¸1Ô!×(Ñ(¨Ñ6¨gÓ6ÒBñØFMñð ùÚBs   Š/rz   r¢   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrÆ   ©r`   ©rç   Úrs     rY   ré   z5TensorVariable._method_size_stride.<locals>.<genexpr>J  s   è ø€ Ò,D¸¬S°¯VÑ,Dùó   ‚)r-   r   r   r;   r9   rØ   rV   r/  rz   rv   r�   r¥   r¦   r   rn   r`   )r�   rö   r!  rÇ  ÚRetVariablerË  ÚfakeÚfake_rs           rY   r¾  z"TensorVariable._method_size_stride%  s8  € ô ˜3Óˆð	¬´©ð 	Ä#ð 	Ì,ó 	ð )-°ªÑ$Ô<L×<SÑ<Sð 	ð �6Š>Ü˜˜dÓ#‰AØ�VŠ^ §¡Ô 1Ø—	‘	‰AàˆAàˆ=Øˆ{Ù" 1“~Ð%ä'×.Ñ.¨q°©vÓ6Ð6ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJØˆ{Ø,œ  tÓ,Ó.�Ü'¨Ô/ñ '¤uÑ,D¸VÔ,DÓ'DÓEÐEð
 ð -œ  tÓ,¨SÓ1�Ü'¨Ô/Ü+×2Ñ2´3°v³;Ó?Ð?Ør[   c                 óL  — | j                  «       r)t        j                  |t        | j                  «      «      S | j
                  j                  j                  j                  d«      x}�:|j                  «       }t        |«      st        j                  |t        |«      «      S y r¹   )r/  r7   r×   r/   rz   rv   r�   r¥   r¦   Únumelr   r`   )r�   r�   rÎ  rÏ  s       rY   Úmethod_numelzTensorVariable.method_numelQ  s{   € Ø�?‰?ÔÜ"×(Ñ(¨¬W°T·Y±YÓ-?Ó@Ð@ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJØ—Z‘Z“\ˆFÜ# FÔ+Ü&×,Ñ,¨R´°V³Ó=Ð=Ør[   c                 ó\   — | j                   � t        j                  || j                   «      S y rÆ   )ry   r7   r×   rÃ   s     rY   Ú
method_dimzTensorVariable.method_dim^  s&   € Ø�9‰9Ð Ü"×(Ñ(¨¨T¯Y©YÓ7Ð7Ør[   c                 óp   — | j                   �*t        j                  || j                   j                  «      S y rÆ   )rp   r7   r×   Úis_floating_pointrÃ   s     rY   Úmethod_is_floating_pointz'TensorVariable.method_is_floating_pointe  s.   € ð �:‰:Ð!Ü"×(Ñ(¨¨T¯Z©Z×-IÑ-IÓJÐJØr[   c                 ó,  — t         j                  r/t        dddg t        j                  ¢t        j
                  ¢¬«       | j                  j                  j                  j                  d«      x}�$t        j                  ||j                  «       «      S y )Nz0Encountered tensor.is_inference() during tracingrR  z&tensor.is_inference() is not supportedr½   r¢   )r   Ú"fake_tensor_disable_inference_moder    r   ÚFUNDAMENTALÚINFERENCE_MODErv   r�   r¥   r¦   r7   r×   Úis_inference©r�   r�   rÎ  s      rY   Úmethod_is_inferencez"TensorVariable.method_is_inferencel  s„   € ô ×4Ò4ÜØJØØDðÜ&×2Ñ2ðä&×5Ñ5ðõ	ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÐJÜ"×(Ñ(¨¨T×->Ñ->Ó-@ÓAÐAØr[   c                 óp   — | j                   �*t        j                  || j                   j                  «      S y rÆ   )rp   r7   r×   Ú
is_complexrÃ   s     rY   Úmethod_is_complexz TensorVariable.method_is_complex}  s.   € ð �:‰:Ð!Ü"×(Ñ(¨¨T¯Z©Z×-BÑ-BÓCÐCØr[   rî   c                 óR  — |�|j                  «       nt        j                  }| j                  �"t	        j
                  ||| j                  v «      S | j                  j                  j                  j                  d«      x}�&t	        j
                  ||j                  |¬«      «      S y )Nr¢   rí   )
rx  rP   Úcontiguous_formatr~   r7   r×   rv   r�   r¥   r¦   )r�   r�   rî   Úmemory_format_constrÎ  s        rY   Úmethod_is_contiguousz#TensorVariable.method_is_contiguous„  s£   € ð Ð(ð ×,Ñ,Ô.ä×(Ñ(ð 	ð
 ×ÑÐ)ä"×(Ñ(¨Ð-@ÀD×DVÑDVÐ-VÓWÐWØ—j‘j—o‘o×*Ñ*×.Ñ.¨Ó?Ð?ˆdÐLÜ"×(Ñ(Ø�D×&Ñ&Ð5HÐ&ÓIóð ð r[   FÚnon_blockingc           
      óÌ  ‡ — |€Ì‰ j                   �Àt        ‰ j                  t        j                  «      rœt	        ˆ fd„t        j                  «       D «       «      }‰ j                  j                  dk(  r#t        j                  |d|j                  › �«      S t        j                  |d‰ j                  j                  › d|j                  › �«      S |�“t        t        |j                  «       «      «      dk(  rn|j                  «       }t        j                  |t        |«      «      }ddlm} |rd|i|¥} || |j                  j                   d	d
gt#        ‰ |g|«      ¢­Ž «      S y )Nc              3   óF   •K  — | ]  \  }}‰j                   |v sŒ|–— Œ y ­wrÆ   )rp   )rç   rª   r«   r�   s      €rY   ré   z-TensorVariable.method_type.<locals>.<genexpr>£  s$   øè ø€ ò Ù�a˜¸T¿Z¹ZÈ1º_”ñùs   ƒ!š!Úcpuztorch.ú.ztorch.tensortyper4   rø   ræ  rÓ   r¤   )rp   rT   rw   rP   Únextr3   r§   r¤   r7   r×   rW   r)   rx  r£   rù   r´   rà   r0   )	r�   r�   rp   ræ  r•   Ú
tensortypeÚtensor_typeÚtensor_type_constrù   s	   `        rY   Úmethod_typezTensorVariable.method_type—  sY  ø€ ð ˆMØ—
‘
Ð&Ü˜4Ÿ;™;¬¯©Ô5äó Ü1×7Ñ7Ó9ôó ˆJð �{‰{×Ñ 5Ò(Ü&×,Ñ,¨R°6¸*×:MÑ:MÐ9NÐ1OÓPÐPä&×,Ñ,Ø˜& §¡×!1Ñ!1Ð 2°!°J×4GÑ4GÐ3HÐIóð ð ÐÜ”D˜×1Ñ1Ó3Ó4Ó5Ð9KÒKð
  ×2Ñ2Ó4ˆKÜ /× 5Ñ 5°b¼#¸kÓ:JÓ KÐå.áØ(¨,ÐA¸&ÐA�á ØØ&�—	‘	×&Ñ&Ø!Øðô '¨Ð.?Ð'@À&ÓIòóð ð r[   ÚclsrC   c                 ó^  — t        |t        «      rw|j                  rkddlm} |j                  «       } |j                  || ||j                  «      }|j                  j                  j                  t        «       |t        ¬«       |S t        d| › d|› d�ddgt        j                  ¢¬	«       y )
Nr4   rB   ©Úmutation_type_clszHArgument of `as_subclass` must be a non-dispatcher-style tensor subclassz.as_subclass(rd   úCurrently not supportedz:Avoid this call or move it outside `torch.compile` regioner½   )rT   ÚTensorSubclassVariabler‰   ru  rC   rx  rz  r´   rA  Ú
_track_objÚobjectr5   r    r   rÂ   )r�   r�   rð  rC   Úpy_clsrT  s         rY   Úmethod_as_subclassz!TensorVariable.method_as_subclassÅ  sª   € ô �cÔ1Ô2°s·z²zÝDà×+Ñ+Ó-ˆFØ>Ð.×>Ñ>Ø�D˜& #§*¡*óˆCð �I‰I×"Ñ"×-Ñ-Ü“˜#Ô1Eð .ô ð ˆJÜØ^Ø�f˜M¨#¨¨aÐ0Ø1àLðä"×.Ñ.ðö		
r[   c                 óÚ   — t        | j                  t        j                  «      rG| j                  j                  dk7  r| j                  j                  nd}t        j                  ||«      S y )Nré  éÿÿÿÿ)rT   rw   rP   r¤   rˆ   r7   r×   )r�   r�   rˆ   s      rY   Úmethod_get_devicez TensorVariable.method_get_deviceÞ  sN   € ô �d—k‘k¤5§<¡<Ô0Ø)-¯©×)9Ñ)9¸UÒ)B�D—K‘K×%Ò%ÈˆEÜ"×(Ñ(¨¨UÓ3Ð3Ør[   c                 óV   — t        j                  || j                  j                  «      S rÆ   )r7   r×   rp   ÚitemsizerÃ   s     rY   Úmethod_element_sizez"TensorVariable.method_element_sizeæ  s   € Ü×$Ñ$ R¨¯©×)<Ñ)<Ó=Ð=r[   )Úforcer   ÚNumpyNdarrayVariablec                ó  — t         j                  st        dd| › d�ddg¬«       t        st        dd| › d�dd	g¬«       | j                  t
        j                  k7  rt        d
| j                  › d�«      ‚|rR|j                  «       rB| j                  |dg i «      }|j                  j                  dd|j                  «       fi «      }n* |j                  j                  ddgt        | | gi «      ¢­Ž }t        j                  ||«      S )Nz%Tensor.numpy() with trace_numpy=Falserœ  z numpyzW`Tensor.numpy()` was called, but the `trace_numpy` configuration was manually disabled.zUSet `torch._dynamo.config.trace_numpy = True` to allow Dynamo to trace through NumPy.r½   z&Tensor.numpy() without NumPy installedz_`Tensor.numpy()` was called, but the NumPy library is not available in the current environment.z5Ensure NumPy is installed in your Python environment.zcan't convert z4 layout tensor to numpy. Use Tensor.to_dense() firstÚdetachrÓ   ré  Úview_as)r   Útrace_numpyr    Únprx   rP   Ústridedr±  rx  rÓ   r´   rà   rÈ   r0   r  rØ   )r�   r�   r   Útrv   s        rY   Úmethod_numpyzTensorVariable.method_numpyé  s  € ô ×!Ò!ÜØ?Ø& t f¨FÐ3ð7ð5ðõ	õ ÜØ@Ø& t f¨FÐ3ð?ð Lðõð �;‰;œ%Ÿ-™-Ò'ÜØ  §¡ Ð-aÐbóð ñ �U×-Ñ-Ô/à× Ñ   X¨r°2Ó6ˆAØ—I‘I×*Ñ*¨=¸%À!Ç*Á*Ã,ÀÐRTÓU‰Eð +�B—I‘I×*Ñ*Ø˜yðÜ+<¸dÀD¸\È2Ó+NòˆEô $×*Ñ*¨2¨uÓ5Ð5r[   c                 óL  ‡ ‡‡‡— ddl mŠ dt        j                  dt        j                  j
                  dt        t        t           z  fˆ ˆˆˆfd„Š‰ j                  «       j                  j                  d   } ‰|‰ j                  «       «      }t        j                  ‰|«      S )Nr4   rø   ÚtensorÚ	sub_proxyrK   c           	      ó2  •— dt         dt        j                  j                  dt        fˆˆ	fd„}| j
                  t        j                  t        j                  t        j                  t        j                  fvrt        dd‰› d�dd	g¬
«       | j                  «       dk(  r	 || |«      S | j                  «       dk(  r(t        | «      D ��cg c]  \  }} ||||   «      ‘Œ c}}S t        | «      D ��cg c]  \  }} ‰|||   ¬«      ‘Œ c}}S c c}}w c c}}w )Nr  r  rK   c                 ó2   •—  ‰‰|j                  «       «      S rÆ   )rÑ   )r  r  r�   rù   s     €€rY   Úwrapz:TensorVariable.method_tolist.<locals>.tolist.<locals>.wrap  s   ø€ Ù$ØØ—N‘NÓ$óð r[   z'Tensor.tolist() with non-integer tensorrœ  z to_listzLDynamo currently does not support tracing `tolist()` on non-integer tensors.z[Ensure the input tensor to `tolist()` is an integer type (e.g., int8, int16, int32, int64).r½   r   r4   )r  )r   rP   ÚfxÚProxyr7   rp   Úint8Úint16Úint32Úint64r    r!  Ú	enumerate)
r  r  r  r  ÚvalÚ
sub_tensorr�   Útolistr�   rù   s
         €€€€rY   r  z,TensorVariable.method_tolist.<locals>.tolist  s	  ø€ ðœð ¬¯©¯©ð ¼?ö ð �|‰|Ü—
‘
Ü—‘Ü—‘Ü—‘ð	$ñ ô ØEØ*¨4¨&°Ð9ð!9ðBðõ	ð �z‰z‹|˜qÒ Ù˜F IÓ.Ð.à�z‰z‹|˜qÒ Ü>GÈÓ>O×P±F°A°s™˜S )¨A¡,Õ/ÓPÐPô &/¨vÓ%6÷á!�A�zñ �z¨Y°q©\Ö:óð ùó Qùós   Ã
DÃ2Dr¢   )r£   rù   rP   rU   r  r  r   r­  rÈ   r�   r¥   r7   r×   )r�   r�   r  Úoutr  rù   s   ``  @@rY   Úmethod_tolistzTensorVariable.method_tolist  s~   û€ Ý*ð!	œ5Ÿ<™<ð !	´E·H±H·N±Nð !	ÄsÌTÔRUÉYÁ÷ !	ð !	ðF —‘“×%Ñ%×*Ñ*¨?Ñ;ˆÙ�V˜TŸ]™]›_Ó-ˆÜ×$Ñ$ R¨Ó-Ð-r[   Ú	vars_iterÚerror_on_non_leafc                 ó¤  — ddl m} g }t        «       }|D ]¸  }t        |t        «      sŒ|j
                  sŒ!|j                  r|sŒ0t        dd|› �ddg¬«       ŒD|r6|j                   rt        |j                   |«      rt        dd	|› �d
dg¬«       Œ||j                  j                  }||vsŒ—|j                  |«       |j                  |«       Œº |S )aá  
        Collect unique leaf tensors from vars_iter for backward.

        Only collects leaf tensors (no grad_fn). Non-leaf tensors are skipped
        (or error if error_on_non_leaf=True) because when auto-detecting inputs,
        we must not stop gradients at non-leafs - they are intermediates, and the
        real leaf tensors (parameters) are further up the autograd graph.

        Deduplicates by proxy.node.
        Returns list of unique leaf tensor variables.
        r   )ÚSyntheticLocalSourcezbackward() with non-leaf tensorz-backward(inputs=[...]) with non-leaf tensor: zBbackward(inputs=[...]) with non-leaf tensors is not yet supported.zIOnly pass leaf tensors (parameters, graph inputs) to backward(inputs=...)r½   z'backward() with in-graph created tensorz5backward(inputs=[...]) with in-graph created tensor: z^backward(inputs=[...]) with tensors created inside the compiled function is not yet supported.zSOnly pass tensors that are inputs to the compiled function or captured from outside)r‰   r  ÚsetrT   ru   r|   r”   r    rv   r�   ÚaddÚappend)r�   r  r  r  ro  Ú
seen_nodesrT  r�   s           rY   Ú_collect_backward_inputsz'TensorVariable._collect_backward_inputs=  sÜ   € õ 	2àˆÜ),«ˆ
Øò '	+ˆCÜ˜#œ~Õ.°3×3DÓ3Dð —?’?Ú(Ü%Ø$EØ&SÐTWÐSXÐ$YØ(là kð#ö	ñ 'ØŸ
š
¤j°·±Ð=QÔ&Rä!Ø IØ"WÐX[ÐW\Ð ]ð%Bð rðöð Ÿ9™9Ÿ>™>�DØ :Ò-Ø"Ÿ™ tÔ,ØŸ™ cÕ*ðO'	+ðR ˆr[   ÚgradientÚretain_graphÚcreate_graphÚinputsc                 óª  — t         j                  st        dd| › d|› d|› d|› d|› �
ddg¬«       | j                  s| j                  st        d«      ‚|d	u }|rjt        |j                  j                  |j                  j                  j                  «       «      }| j                  |«      }|s¢t        j                  d	«      S t        |t        j                   «      r|j"                  }	nAt        |t        j$                  «      r$t'        |j"                  j                  «       «      }	n|g}	| j                  |	d
¬«      }|st        ddddg¬«       dt)        j*                  ||«      i}
|�||
d<   |�||
d<   t)        j*                  ||«      }| |g}|�|j-                  |«       t)        j*                  |t.        j0                  j2                  «      }|j5                  |||
«      }ddlm} |j                  |dd
¬«      }|j;                  |«       t)        j*                  |t.        j<                  j>                  j@                  jB                  «      }|€tE        d«      ‚tG        |«      D ]C  \  }}|jI                  |dt)        j*                  ||«      gi «      }|j5                  |||gi «       ŒE |jK                  |«       t        j                  d	«      S )a´  
        Trace tensor.backward() by rewriting as autograd.grad() + accumulate_grad.

        Implementation:
        1. Collect leaf tensors to compute gradients for
        2. Call autograd.grad(loss, inputs) to compute gradients
        3. For each leaf tensor, call accumulate_grad to update .grad

        Non-leaf tensor handling:
        - Auto-detect (inputs=None): Non-leaf tensors are silently skipped.
          This matches eager where only leaves get .grad.
        - User-provided (inputs=[...]): Errors if any non-leaf tensor is found.
          While eager backward(inputs=[non_leaf]) works, Dynamo cannot trace it
          because the backward rewrite accesses .grad, and Dynamo creates
          a generic GetAttrVariable for .grad on non-leaf tensors (instead of a
          TensorVariable), which cannot be used in tensor operations.

        TODO: Support non-leaf tensors by fixing .grad access on non-leaf in Dynamo.
        z"Unsupported Tensor.backward() callrœ  z
 backward rX  z]Dynamo currently does not support tracing `Tensor.backward()` when trace_autograd_ops is off.z)Set torch._dynamo.trace_autograd_ops=Truer½   z8tensor does not require grad and does not have a grad_fnNT)r  zbackward() with empty inputsz8backward(inputs=[...]) resulted in no valid leaf tensorsz?backward(inputs=[...]) requires at least one valid leaf tensor.zOEnsure at least one tensor in inputs is a leaf (requires_grad=True, no grad_fn)Úallow_unusedr&  r'  r4   )ÚGradModeVariableF)Úinitializedzinput_vars must not be Noner–  )&r   Útrace_autograd_opsr    r|   r”   r   r   r´   Úleaf_var_creation_orderÚinput_source_to_varr´  r$  r9   rØ   rT   r   ÚBaseListVariabler§   ÚConstDictVariabler­  r7   r×   r"  rP   Úautogradr@  rÞ   Úctx_managerr+  Úenterrh  ÚinductorÚaccumulate_grad_Údefaultr  r  rÓ   Úexit)r�   r�   r%  r&  r'  r(  Úauto_detectÚall_varsÚ
input_varsÚprovided_varsÚgrad_kwargsÚ
inputs_varÚ	grad_argsÚautograd_grad_fnÚ	grads_varr+  Úgrad_mode_varÚaccumulate_grad_fnÚidxÚ	input_varÚgrad_is                        rY   Úmethod_backwardzTensorVariable.method_backwardz  sÒ  € ô6 ×(Ò(ÜØ<Ø& t f¨J°x°jÀÀ,ÀÈqÐQ]ÐP^Ð^_Ð`fÐ_gÐhØ{ØBÐCõ	ð ×!Ò!¨$×*:Ò*:Ü#ØJóð ð  �nˆÙô Ø—	‘	×1Ñ1Ø—	‘	×-Ñ-×4Ñ4Ó6óˆHð ×6Ñ6°xÓ@ˆJÙô (×.Ñ.¨tÓ4Ð4ä˜&¤)×"<Ñ"<Ô=Ø &§¡‘Ü˜F¤I×$?Ñ$?Ô@Ü $ V§\¡\×%8Ñ%8Ó%:Ó ;‘à!' �Ø×6Ñ6Ø°ð 7ó ˆJñ ô Ø:ØVØ aàiðõ	ð &¤×'<Ñ'<¸RÀÓ'MÐNˆØÐ#Ø*6ˆK˜Ñ'ØÐ#Ø*6ˆK˜Ñ'ä$×*Ñ*¨2¨zÓ:ˆ
Ø˜:Ð&ˆ	ØÐØ×Ñ˜XÔ&ä*×0Ñ0°´U·^±^×5HÑ5HÓIÐØ$×2Ñ2°2°yÀ+ÓNˆ	õ 	2à(×/Ñ/°°EÀtÐ/ÓLˆØ×Ñ˜BÔä,×2Ñ2Ø”—	‘	×"Ñ"×3Ñ3×;Ñ;ó
Ðð ÐÜ Ð!>Ó?Ð?Ü'¨
Ó3ò 	J‰NˆC�Ø×*Ñ*Ø�M¤O×$9Ñ$9¸"¸cÓ$BÐ#CÀRóˆFð ×,Ñ,¨R°)¸VÐ1DÀbÕIð		Jð 	×Ñ˜2Ôä×&Ñ& tÓ,Ð,r[   ÚDataPtrVariablec                 ó   — t        | «      S rÆ   ©rH  r¿  s       rY   Úmethod_data_ptrzTensorVariable.method_data_ptrñ  s   € ô ˜tÓ$Ð$r[   c                 ó   — t        | d¬«      S )NÚconst_data_ptr)Úmethod_namerJ  r¿  s       rY   Úmethod_const_data_ptrz$TensorVariable.method_const_data_ptrù  s   € ô ˜tÐ1AÔBÐBr[   Ústreamc                 óP  — ddl m} t        ||«      s&t        d|j	                  «       j
                  › �«      ‚|j                  j                  dt        j                  j                   j                  | j                  «       |j                  fi «       t        j                  d «      S )Nr4   )ÚStreamVariablez/record_stream() expects a Stream argument, got rÞ   )ÚstreamsrR  rT   r‹   rË   rW   r´   rà   rP   rh  Úrecord_streamrÈ   Úuser_object_indexr9   rØ   )r�   r�   rP  rR  s       rY   Úmethod_record_streamz#TensorVariable.method_record_stream  sŒ   € õ
 	,ä˜& .Ô1ÜØAÀ&×BTÑBTÓBV×B_ÑB_ÐA`Ðaóð ð 	�	‰	×ÑØÜ�I‰I×Ñ×+Ñ+Ø�]‰]‹_˜f×6Ñ6Ð7Øô		
ô  ×&Ñ& tÓ,Ð,r[   c           	      óŽ   — |j                   s9t        j                  s)| j                  «        t	        dd| › d|› d|› �ddg¬«       y )Nz@Unsupported Tensor.item() call with capture_scalar_outputs=Falserœ  z item rX  zYDynamo does not support tracing `Tensor.item()` with config.capture_scalar_outputs=False.zœSet `torch._dynamo.config.capture_scalar_outputs = True` or `export TORCHDYNAMO_CAPTURE_SCALAR_OUTPUTS=1` to include these operations in the captured graph.r½   )Ú	one_graphr   Úcapture_scalar_outputsÚ_warn_capture_scalar_outputsr    r¿  s       rY   Úmethod_itemzTensorVariable.method_item  sU   € ð �|Š|¤F×$AÒ$AØ×-Ñ-Ô/ÜØZØ& t f¨F°4°&¸¸&¸ÐBð<ðIðõ
ð r[   c           	      ó@  — | j                   �| j                   j                  si| j                   j                  sS| j                  |dg i «      }ddlm}  |||j                  j                  dt        |j                  «       fi «      ¬«      S t        t        |dg¬«       y )NrÑ   r4   rø   rÞ   r]  zEonly integer tensors of a single element can be converted to an indexrý   )rp   rÖ  rà  rÓ   r£   rù   r´   rà   r   rÈ   r   r±  ©r�   r�   rÑ   rù   s       rY   Únb_index_implzTensorVariable.nb_index_impl*  s�   € ð �:‰:Ð!Ø—
‘
×,Ò,°T·Z±Z×5JÒ5Jà×#Ñ# B¨°°BÓ7ˆDÝ.á ØØ—i‘i×,Ñ,Ø#ÜØ—]‘]“_Ð&Øó	ôð ô 	!ÜØàWðö	
r[   c           	      ó  — | j                   �)| j                   j                  rt        t        |dg¬«       | j	                  |dg i «      }ddlm}  |||j                  j                  dt        |j                  «       fi «      ¬«      S )Nz:value cannot be converted to type int64_t without overflowrý   rÑ   r4   rø   rÞ   r]  )rp   rà  r   r‹   rÓ   r£   rù   r´   rà   r   rÈ   r]  s       rY   Únb_int_implzTensorVariable.nb_int_implH  s€   € ð �:‰:Ð! d§j¡j×&;Ò&;Ü$ÜØØRÐSõð ×Ñ  F¨B°Ó3ˆÝ*áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ô
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   ©r`  rÃ   s     rY   Úmethod___int__zTensorVariable.method___int__d  s   € Ø×Ñ Ó#Ð#r[   c           	      ó  — | j                   �)| j                   j                  rt        t        |dg¬«       | j	                  |dg i «      }ddlm}  |||j                  j                  dt        |j                  «       fi «      ¬«      S )Nz9value cannot be converted to type double without overflowrý   rÑ   r4   rø   rÞ   r]  )rp   rà  r   r‹   rÓ   r£   rù   r´   rà   r   rÈ   r]  s       rY   Únb_float_implzTensorVariable.nb_float_implg  s€   € ð �:‰:Ð! d§j¡j×&;Ò&;Ü$ÜØØQÐRõð
 ×Ñ  F¨B°Ó3ˆÝ*áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ô
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   ©re  rÃ   s     rY   Úmethod___float__zTensorVariable.method___float__€  s   € Ø×!Ñ! "Ó%Ð%r[   c           	      ó’   — ddl m}  |||j                  j                  dt        j
                  | j                  «       fi «      «      S ©Nr4   rø   rÞ   )r£   rù   r´   rà   ÚoperatorÚnegrÈ   ©r�   r�   rù   s      rY   Únb_negative_implzTensorVariable.nb_negative_implƒ  óB   € õ 	+áØØ�I‰I×"Ñ"ØÜ—‘Ø—‘“Ð"Øó	ó
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   ©rn  rÃ   s     rY   Úmethod___neg__zTensorVariable.method___neg__“  ó   € Ø×$Ñ$ RÓ(Ð(r[   c           	      ó’   — ddl m}  |||j                  j                  dt        j
                  | j                  «       fi «      «      S rj  )r£   rù   r´   rà   rk  ÚposrÈ   rm  s      rY   Únb_positive_implzTensorVariable.nb_positive_impl–  ro  r[   c                 ó$   — | j                  |«      S rÆ   ©rv  rÃ   s     rY   Úmethod___pos__zTensorVariable.method___pos__¦  rs  r[   c           	      ó’   — ddl m}  |||j                  j                  dt        j
                  | j                  «       fi «      «      S rj  )r£   rù   r´   rà   rk  ÚabsrÈ   rm  s      rY   Únb_absolute_implzTensorVariable.nb_absolute_impl©  ro  r[   c                 ó$   — | j                  |«      S rÆ   ©r|  rÃ   s     rY   Úmethod___abs__zTensorVariable.method___abs__¹  rs  r[   c           	      ó(  — ddl m} t        |d   t        «      r,t        j
                  t        j                  |d«      |d   g}}nt        j                  } |j                  j                  d|gt        | gt        |«      z   |«      ¢­Ž } |||«      S )Nr4   rø   r   rÞ   )r£   rù   rT   rÔ   rP   Úselectr7   r×   rk  Úgetitemr´   rà   r0   r­  )r�   r�   rþ   r•   rù   rp  rv   s          rY   r—  z!TensorVariable.method___getitem__¼  s•   € õ 	+ä�d˜1‘gœÔ/ô
 —‘ä#×)Ñ)¨"¨aÓ0Ø˜‘Gðð ‰Bô ×!Ñ!ˆBà&�—	‘	×&Ñ&ØØð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆñ ˜R Ó'Ð'r[   c                  óî   — t         j                  j                  j                  «       } dj	                  t        j                  | «      «      }t        j                  t        j                  d«      |«       y )NrR  a�                      Graph break from `Tensor.item()`, consider setting:
                        torch._dynamo.config.capture_scalar_outputs = True
                    or:
                        env TORCHDYNAMO_CAPTURE_SCALAR_OUTPUTS=1
                    to include these operations in the captured graph.

                    Graph break: from user code at:
                    %s
                )rP   Ú_guardsÚTracingContextÚextract_stackÚjoinÚ	tracebackÚformat_listÚlogÚwarningÚtextwrapÚdedent)Ú
user_stackÚuser_stack_formatteds     rY   rZ  z+TensorVariable._warn_capture_scalar_outputsÚ  sX   € ô —]‘]×1Ñ1×?Ñ?ÓAˆ
Ø!Ÿw™w¤y×'<Ñ'<¸ZÓ'HÓIÐÜ�‰Ü�O‰Oð	óð !õ	
r[   c                 ó$   — | j                  |«      S rÆ   )Ú	sq_lengthrÃ   s     rY   Úmethod___len__zTensorVariable.method___len__ï  s   € Ø�~‰~˜bÓ!Ð!r[   c                 óT   — | j                  |dt        j                  |d«      gi «      S )z9Sequence length for tensors (size along first dimension).rz   r   )rÓ   r7   r×   rÃ   s     rY   r‘  zTensorVariable.sq_lengthò  s)   € à×Ñ  F¬_×-BÑ-BÀ2ÀqÓ-IÐ,JÈBÓOÐOr[   c                 óJ   — t        | j                  |«      t        «       ¬«      S )N©rD  )r:   r�  r6   rÃ   s     rY   Útp_iter_implzTensorVariable.tp_iter_implö  s#   € Ü#Ø×$Ñ$ RÓ(Ô8HÓ8Jô
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   )r–  rÃ   s     rY   Úmethod___iter__zTensorVariable.method___iter__û  s   € Ø× Ñ  Ó$Ð$r[   rX   Útensor1Útensor2c                ó8  — |�˜t         j                  rˆddlm} t	        j
                  t        j                  «      }t	        j
                  |j                  «      }|j                  |||gi «      }|j                  |||| gi «      }	| j                  |d|	gi «      S y ©Nr   )Úinductor_primsÚcopy_)r   Úenable_dynamo_decompositionsÚtorch._inductorr�  r   rG  rP   ÚmulÚfmarÞ   rÓ   )
r�   r�   r™  rš  rJ   r�  Úmul_varÚfma_varr/   ro  s
             rY   Úmethod_addcmul_zTensorVariable.method_addcmul_þ  s�   € ð Ð¤×!DÒ!DÝ6ä×<Ñ<¼U¿Y¹YÓGˆGÜ×<Ñ<¸^×=OÑ=OÓPˆGØ×+Ñ+¨B°¸'Ð0BÀBÓGˆGØ×*Ñ*¨2°¸ÀÐ/EÀrÓJˆFØ×#Ñ# B¨°&°¸2Ó>Ð>Ør[   c                 ó  —  |j                   j                  dt        j                  gt	        | ||gi «      ¢­Ž }| j                  «       }t        j                  j                  j                  «       5  |j                  r:|j                  j                  r$|j                  j                  j                  «       n	t        «       5  t        |j                  |d¬«       d d d «       d d d «       | j!                  |||j#                  «       «       t$        j&                  st$        j(                  r0|j                   j*                  j-                  |j                  d«       t/        j0                  d «      S # 1 sw Y   Œ—xY w# 1 sw Y   Œ›xY w)NrÞ   F)Úallow_non_graph_faker   )r´   rà   rk  Úsetitemr0   r°   rP   rQ   rR   Ú+_disable_saved_tensors_hooks_during_tracingr	  r²  rµ  r   r+   r�   r·   rÎ   r   Úuse_graph_deduplicationÚtrack_nodes_for_deduplicationÚregion_trackerÚadd_node_mutationr9   rØ   )r�   r�   rŽ  rJ   rv   r±   s         rY   Úmethod___setitem__z!TensorVariable.method___setitem__  s7  € ð '�—	‘	×&Ñ&ØÜ×Ñð
ô   c¨5Ð1°2Ó6ò
ˆð ×/Ñ/Ó1ˆô �M‰M×Ñ×KÑKÓMñ	Gð �|Š| §¡× 6Ò 6ð �L‰L×"Ñ"×@Ñ@ÔBä“ñ		Gô ˜5Ÿ:™: rÀÕF÷	G÷ 	Gð 	×&Ñ& r¨>¸5¿?¹?Ó;LÔMä×)Ò)¬V×-QÒ-QØ�I‰I×$Ñ$×6Ñ6°u·z±zÀ1ÔEä×&Ñ& tÓ,Ð,÷	Gð 	Gú÷ 	Gð 	Gús%   Á2AE>ÃE2ÃE>Å2E;	Å7E>Å>Fc           	      ó4   — t        dd| › d|› d|› �dg ¬«       y )Nz!Unsupported Tensor.resize_() callrœ  z	 resize_ rX  z=Dynamo currently does not support tracing `Tensor.resize_()`.r½   r=  r¿  s       rY   Úmethod_resize_zTensorVariable.method_resize_1  s+   € ô 	Ø7Ø" 4 &¨	°$°°q¸¸ÐAØWØö		
r[   c           	      ó4   — t        dd| › d|› d|› �dg ¬«       y )Nz$Unsupported Tensor.resize_as_() callrœ  z resize_as_ rX  z@Dynamo currently does not support tracing `Tensor.resize_as_()`.r½   r=  r¿  s       rY   Úmethod_resize_as_z TensorVariable.method_resize_as_>  s+   € ô 	Ø:Ø" 4 &¨°T°F¸!¸F¸8ÐDØZØö		
r[   c           	      ó4   — t        dd| › d|› d|› �dg ¬«       y )Nz(Unsupported Tensor.sparse_resize_() callrœ  z sparse_resize_ rX  zDDynamo currently does not support tracing `Tensor.sparse_resize_()`.r½   r=  r¿  s       rY   Úmethod_sparse_resize_z$TensorVariable.method_sparse_resize_K  s,   € ô 	Ø>Ø" 4 &Ð(8¸¸¸aÀ¸xÐHØ^Øö		
r[   c           	      ó4   — t        dd| › d|› d|› �dg ¬«       y )Nz2Unsupported Tensor.sparse_resize_and_clear_() callrœ  z sparse_resize_and_clear_ rX  zNDynamo currently does not support tracing `Tensor.sparse_resize_and_clear_()`.r½   r=  r¿  s       rY   Úmethod_sparse_resize_and_clear_z.TensorVariable.method_sparse_resize_and_clear_X  s,   € ô 	ØHØ" 4 &Ð(BÀ4À&ÈÈ&ÈÐRØhØö		
r[   c           	      óp   — t        |«      dkD  r(t        dd| › d|› d|› �dg t        j                  ¢¬«       y )Nr4   zUnsupported Tensor.set_() callrœ  z set_ rX  zhDynamo currently does not support tracing `Tensor.set_()` overloads that include more than one argument.r½   )rv  r    r   rÂ   r¿  s       rY   Úmethod_set_zTensorVariable.method_set_e  sL   € ô ˆt‹9�qŠ=ô Ø8Ø& t f¨F°4°&¸¸&¸ÐBðAà6Ô)×5Ñ5Ð6õð r[   )Úalphar¹  c                óè   — |�pt        |t        «      r`t        j                  rPddlm} t        j                  |j                  «      }|j                  |||| gi «      }| j                  |d|gi «      S y rœ  )rT   ru   r   rŸ  r   r�  r   rG  r¢  rÞ   rÓ   )r�   r�   rÚ   r¹  r�  r¤  ro  s          rY   Úmethod_add_zTensorVariable.method_add_{  sm   € ð ÐÜ˜5¤.Ô1Ü×3Ò3å6ä×<Ñ<¸^×=OÑ=OÓPˆGØ×*Ñ*¨2°°u¸dÐ/CÀRÓHˆFØ×#Ñ# B¨°&°¸2Ó>Ð>Ør[   c                ó4  — |�–t         j                  r†t        j                  t        j
                  «      j                  |||gi «      }ddlm} t        j                  |j                  «      }|j                  |||| gi «      }| j                  |d|gi «      S y rœ  )r   rŸ  r   rG  rP   ÚdivrÞ   r   r�  r¢  rÓ   )	r�   r�   r™  rš  rJ   ro  r�  r¤  Ú
fma_results	            rY   Úmethod_addcdiv_zTensorVariable.method_addcdiv_�  s�   € ð Ð¤×!DÒ!DÜ×;Ñ;¼E¿I¹IÓF×TÑTØ�W˜gÐ&¨óˆFõ 7ä×<Ñ<¸^×=OÑ=OÓPˆGØ ×.Ñ.¨r°F¸EÀ4Ð3HÈ"ÓMˆJØ×#Ñ# B¨°*°¸rÓBÐBØr[   rÑ   c                 ó   — t        j                  t        j                  «      j	                  || |gi «      }t        j                  t        j
                  «      j	                  ||gi «      }|j                  |dg i «      S )NrÑ   )r   rG  rP   ÚeqrÞ   r³  rÓ   )r�   r�   rÑ   ro  s       rY   Úsq_containszTensorVariable.sq_contains£  sq   € ô ×7Ñ7¼¿¹ÓA×OÑOØ��t�˜bó
ˆô ×7Ñ7¼¿	¹	ÓB×PÑPØ��˜"ó
ˆð ×!Ñ! " f¨b°"Ó5Ð5r[   r¬  c                 ó&   — | j                  ||«      S rÆ   )rÂ  )r�   r�   r¬  s      rY   Úmethod___contains__z"TensorVariable.method___contains__²  s   € ð ×Ñ  CÓ(Ð(r[   c                 ó0   —  | j                   |dg|¢­i |¤ŽS )NÚregister_hook©Ú_method_register_hookr¿  s       rY   Úmethod_register_hookz#TensorVariable.method_register_hook·  s#   € ð *ˆt×)Ñ)¨"¨oÐOÀÒOÈÑOÐOr[   c                 ó0   —  | j                   |dg|¢­i |¤ŽS )NÚ"register_post_accumulate_grad_hookrÇ  r¿  s       rY   Ú)method_register_post_accumulate_grad_hookz8TensorVariable.method_register_post_accumulate_grad_hook¿  s/   € ð *ˆt×)Ñ)ØÐ4ð
Ø7;ò
Ø?Eñ
ð 	
r[   Úhookc                 óö  ‡‡— | j                   �sEt        j                  r�|j                  j	                  |«      \  Š}dt
        j                  dt        j                  dd fˆˆfd„}ddlm	} | j                  «       }d|j                  j                  d<    |||j                  j                  d	|||fi «      «      S dd
lm} | j                  «       }	|	j                   }
	 |j#                  d„ «      5   |||| gi dd d dd¬«	      \  \  }}}}d d d «       |j                  j,                  j.                  j1                  «       }|j                  j3                  dt
        j4                  j7                  |j8                  «      «      Š|
j                  d‰di «      }ddlm} |	|gt?        jA                  «       «      ¢­}|
j                  d	|tC        |«      i «      }|	j                  j                  d   |j                  j                  d<   || _"        | jG                  |«       tI        jJ                  tH        jL                  jO                  «       ¬«      S tI        jJ                  tH        jL                  jO                  «       ¬«      }|j                  jP                  jS                  | ||‰«       |S # 1 sw Y   �Œ§xY w# t
        j$                  j&                  j(                  $ r t+        dddg ¬«       Y �Œãw xY w)Nr  Úbw_staterK   c                 ól   •— t        | ‰«      } |t        j                  t        t        |‰¬«      «       y )N)rp  rÏ  Ú	hook_name)rV   r  r  r   r$   )r  rÏ  rÆ  rÑ  rö   s      €€rY   Ú_register_hook_trampolinezGTensorVariable._method_register_hook.<locals>._register_hook_trampoline×  s8   ø€ ô %,¨F°DÓ$9�MÙ!Ü!×)Ñ)Ü)Ü<Ø%-Ø&/ô	ôð  r[   r4   rø   TÚhas_backward_hookrÞ   )Úspeculate_subgraphc                 ó"   — | j                  «       S rÆ   r«  )r«   s    rY   ú<lambda>z6TensorVariable._method_register_hook.<locals>.<lambda>  s   € ¸!¿+¹+»-€ r[   rÆ  Úautomatic_with_forced_inputs)Úsource_targetÚenable_gradÚset_subgraph_inputsÚrestore_side_effectsz(register_hook with stride-dependent codez0Hook accesses grad metadata (e.g. is_contiguous)z}register_hook callbacks that branch on gradient metadata are not supported because grad properties are unknown at trace time.r½   Ú	hook_bodyÚget_attrr˜   r   )Úregister_hook_opr¢   r•  )*r‰   r   Úcompiled_autograd_enabledr´   Úadd_backward_state_hookrP   rU   ÚBackwardStater£   rù   rÈ   r�   r¥   rà   Úhigher_order_opsrÔ  r‘   Ústrict_translation_moderQ   r  r!   r    Útracing_contextÚmodule_contextÚcopy_graphstateÚinstall_subgraphr  ÚGraphModuleÚ
nn_modulesÚ%torch._higher_order_ops.register_hookrÞ  r­  Úkeysrn   rv   r¬   r   ÚRemovableHandleVariableÚbaser6   rA  rÆ  )r�   r�   rö   rÍ  Úbw_state_proxyrÒ  rù   Ú
self_proxyrÔ  Útensor_proxyÚtarget_tracerÚbody_rÚ_Ú
hook_graphÚhook_freevarsÚhook_nn_modulesÚ	hook_noderÞ  Úp_argsÚhooked_proxyÚhandle_variablerÑ  s     `                  @rY   rÈ  z$TensorVariable._method_register_hookÉ  s»  ù€ ð �{‹{ô !×:Ò:à,.¯I©I×,MÑ,MÈdÓ,SÑ)�	˜>ð Ü!ŸL™Lð Ü4E×4SÑ4Sð àö õ" 3à!Ÿ]™]›_�
Ø<@�
—‘×$Ñ$Ð%8Ñ9á$ØØ—I‘I×*Ñ*Ø'Ø1Ø# ^Ð4Øó	óð õ  =àŸ=™=›?ˆLØ(×/Ñ/ˆMð
Ø×/Ñ/Ñ0GÓHñ Ù=OØØØ˜ØØ'Ø&*Ø$(Ø,JØ-1ô
>Ñ:‘K�V˜Q ¨]÷ð, !Ÿi™i×7Ñ7×FÑF×VÑVÓXˆOØŸ	™	×2Ñ2ØÜ—‘×$Ñ$ _×%?Ñ%?ÀÓLóˆIð &×2Ñ2°:¸yÈ"ÈbÓQˆIåNà" IÐK´°]×5GÑ5GÓ5IÓ0JÑKˆFØ(×5Ñ5ØØ Ü�f“Øó	ˆLð 7C×6GÑ6G×6LÑ6LØñ7ˆL×Ñ×"Ñ" ?Ñ3ð &ˆDŒJØ×'Ñ'¨Ô+Ü×4Ñ4Ü'Ÿn™n×=Ñ=Ó?ôð ô $×;Ñ;Ü#Ÿ.™.×9Ñ9Ó;ô
ˆð 	�	‰	×Ñ×,Ñ,¨T°4¸È$ÔOØÐ÷gñ ûô —=‘=×$Ñ$×IÑIò ÜØFØNð!<ð ÷ð ðús*   Ã J> Ã2J1ÄJ> Ê1J;Ê6J> Ê>6K8Ë7K8c                 óJ  — |dur|j                  «       }| j                  «       j                  }|j                  d   }|j                  |k7  �r'| j
                  rt        dd| › d�dg ¬«       |j                  j                  rt        dd| › d�d	d
dg¬«       t        j                  j                  j                  «       }t        j                  j                  j                  d«       	 |j                  j                  dt        j                  j                  j                  di «       |j                  j!                  dd| j                  «       fi «       |j                  j                  dt        j                  j                  j                  |fi «       t        j                  j                  j                  |«       |j#                  |«       || _        |rš|j                  j$                  j'                  | «       | j
                  si|j                  j(                  j+                  | «      rD|j                  j(                  j-                  | dt.        j0                  j3                  d «      «       | S # t        j                  j                  j                  |«       w xY w)NTr¢   z(Unsupported Tensor.requires_grad_() callrœ  z requires_grad_zaDynamo does not support changes to a Tensor's `requires_grad` through calling `requires_grad_()`.r½   z.requires_grad_() intermediate leaked as outputz³An intermediate tensor with requires_grad_() called on it (or a tensor derived from it) is returned from the compiled region. Graph breaking here to preserve partial acceleration.z8Call .detach() before returning if you only need values.z‚Consume the gradient inside the compiled function (call backward() and use .grad), or move requires_grad_() outside torch.compile.rÞ   ©TrÓ   Úrequires_grad_r@  )rx  rÈ   r�   r¥   r|   r‰   r    Úspeculation_logÚgraph_break_on_requires_grad_rP   re   rf   Ú!get_inplace_requires_grad_allowedÚ!set_inplace_requires_grad_allowedr´   Úcreate_noderà   rý  r.  r"  rA  Úis_attribute_mutationÚ
store_attrr   r9   rØ   )r�   r�   r|   r�   r¢   Ú
prev_states         rY   Úmethod_requires_grad_z$TensorVariable.method_requires_grad_;  s2  € ð
  Ñ$Ø)×<Ñ<Ó>ˆMà�}‰}‹×#Ñ#ˆØŸ	™	 /Ñ2ˆØ×&Ñ&¨-Ó7ð �{Š{ÜØFØ*¨4¨&°Ð@ð!Jàõð ×!Ñ!×?Ò?ÜØLØ*¨4¨&°Ð@ð!$ð
 SðJðõô0 Ÿ™×,Ñ,×NÑNÓPˆJÜ�H‰H×Ñ×AÑAÀ$ÔGðRØ—	‘	×%Ñ%Ø#Ü—H‘H×'Ñ'×IÑIØØô	ð —	‘	×&Ñ&Ø!Ø$Ø—]‘]“_Ð&Øô	ð —	‘	×%Ñ%Ø#Ü—H‘H×'Ñ'×IÑIØ�MØô	ô —‘×#Ñ#×EÑEÀjÔQØ×(Ñ(¨Ô7Ø!.ˆDÔÙØ—	‘	×1Ñ1×8Ñ8¸Ô>ð
 —{’{ r§y¡y×'=Ñ'=×'SÑ'SØô(ð —I‘I×*Ñ*×5Ñ5Ø˜f¤i×&@Ñ&@×&GÑ&GÈÓ&Môð ˆøô —‘×#Ñ#×EÑEÀjÕQús   Ã*B.I7 É7+J"c                 ó    — ddl m} |j                  j                  dd| j	                  «       fi «      } |||«       | j                  |«       | S )Nr4   rø   rÓ   Údetach_)r£   rù   r´   rà   rÈ   r¬   )r�   r�   rù   rv   s       rY   Úmethod_detach_zTensorVariable.method_detach_”  sM   € Ý*à—	‘	×&Ñ&ØØØ�]‰]‹_ÐØó	
ˆñ 	�b˜%Ô Ø×#Ñ# BÔ'Øˆr[   c                 óL   — t        dd| › d�ddgt        j                  ¢¬«       y )Nz'Unsupported Tensor.share_memory_() callrœ  z share_memory_zTDynamo does not support Tensor.share_memory_() which modifies tensor storage for IPCz7Move share_memory_() call outside the compiled region. r½   )r    r   rÂ   r’   s    rY   Úmethod_share_memory_z#TensorVariable.method_share_memory_¢  s2   € ÜØ=Ø" 4 &¨Ð7ØnàIðä"×.Ñ.ðö		
r[   c                 óÀ   — t        |«      dk(  rt        |d   t        «      s t        |«      dk\  r/t        d„ |D «       «      r| j	                  |dt        |«      |«      S y )Nr4   r   c              3   ó|   K  — | ]4  }|j                  «       xr t        |j                  «       t        «      –— Œ6 y ­wrÆ   )rf  rT   rx  r`   )rç   Úas     rY   ré   z,TensorVariable.method_new.<locals>.<genexpr>·  s9   è ø€ ò àð ×$Ñ$Ó&ÒR¬:°a×6JÑ6JÓ6LÌcÓ+RÓRñùs   ‚:<Ú	new_empty)rv  rT   r;   ÚallrÓ   r­  r¿  s       rY   Ú
method_newzTensorVariable.method_new­  s\   € ô �‹I˜ŠNœz¨$¨q©'´<Ô@Ü�‹I˜ŠNÜñ àôô ð
 ×#Ñ# B¨´T¸$³ZÀÓHÐHØr[   r�   c                 óâ  — t        |«      dk7  ry |d   }|j                  d«      }|�3|j                  «       sy |j                  «       t        j
                  k7  ry t        |«      }|j                  dd «       |j                  d| j                  |d«      «       |j                  d| j                  |d«      «       t        j                  t        j                  «      j                  ||g|«      S )Nr4   r   rx   rp   rw   )rv  r¦   rf  rx  rP   r  ÚdictÚpopÚ
setdefaultrq  r   rG  r  rÞ   )r�   r�   rþ   r•   Údata_argrx   Ú
fwd_kwargss          rY   Úmethod_new_tensorz TensorVariable.method_new_tensor¿  sÔ   € ô ˆt‹9˜Š>ØØ˜‘7ˆØ—‘˜HÓ%ˆØÐØ×,Ñ,Ô.ØØ×(Ñ(Ó*¬e¯m©mÒ;ØÜ˜&“\ˆ
Ø�‰�x Ô&Ø×Ñ˜g t×'7Ñ'7¸¸GÓ'DÔEØ×Ñ˜h¨×(8Ñ(8¸¸XÓ(FÔGÜ×5Ñ5´e·l±lÓC×QÑQØØˆJØó
ð 	
r[   c                 ó€   — t        | | j                  «       j                  j                  d   j	                  «       «      S r¹   )ÚUntypedStorageVariablerÈ   r�   r¥   Úuntyped_storagerÃ   s     rY   Úmethod_untyped_storagez%TensorVariable.method_untyped_storageØ  s6   € ô &Ø�$—-‘-“/×&Ñ&×+Ñ+¨OÑ<×LÑLÓNó
ð 	
r[   c                 ót   — | j                   s,| j                  j                  j                  |«       d| _         y rÍ   )rƒ   rv   r�   Ú_rename)r�   rö   s     rY   Úset_name_hintzTensorVariable.set_name_hintß  s,   € Ø× Ò Ø�J‰J�O‰O×#Ñ# DÔ)Ø $ˆDÔØr[   Úreversec                 ó  — ddl m} t        |t        «      s%t	        |«      st        j                  |t        «      S |r|| gn| |g} |j                  j                  dt        j                  gt        |i «      ¢­Ž } |||¬«      S ©Nr4   rø   rÞ   r]  )r£   rù   rT   ru   ra   r7   r×   rß   r´   rà   rk  r!  r0   )r�   r�   rÚ   r   rù   rþ   rv   s          rY   Únb_add_implzTensorVariable.nb_add_implå  sz   € õ 	+ä˜5¤.Ô1Ô5JÈ5Ô5QÜ"×(Ñ(¨¬^Ó<Ð<Ù '��t‰}¨d°E¨]ˆØ&�—	‘	×&Ñ&ØœXŸ\™\ð
Ü,=¸dÀBÓ,Gò
ˆñ
  ¨%Ô0Ð0r[   c           
      óú   — ddl m} |j                  «       st        j                  |t
        «      S |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )r£   rù   r^   r7   r×   rß   r´   rà   rk  Úlshiftr0   ©r�   r�   rÚ   r   rù   ÚlhsÚrhss          rY   Únb_lshift_implzTensorVariable.nb_lshift_implø  ó|   € õ 	+à×$Ñ$Ô&Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ3DÀcÈ3ÀZÐQSÓ3Tòó
ð 	
r[   c           
      óú   — ddl m} |j                  «       st        j                  |t
        «      S |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )r£   rù   r^   r7   r×   rß   r´   rà   rk  Úrshiftr0   r&  s          rY   Únb_rshift_implzTensorVariable.nb_rshift_impl
	  r*  r[   c           
      óú   — ddl m} |j                  «       st        j                  |t
        «      S |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )r£   rù   r^   r7   r×   rß   r´   rà   rk  Úor_r0   r&  s          rY   Ú
nb_or_implzTensorVariable.nb_or_impl	  ó{   € õ 	+à×$Ñ$Ô&Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ3ÈÀ*ÈbÓ0Qòó
ð 	
r[   c           
      óú   — ddl m} |j                  «       st        j                  |t
        «      S |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )r£   rù   r^   r7   r×   rß   r´   rà   rk  Úand_r0   r&  s          rY   Únb_and_implzTensorVariable.nb_and_impl.	  s{   € õ 	+à×$Ñ$Ô&Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ1BÀCÈÀ:ÈrÓ1Ròó
ð 	
r[   c           
      óú   — ddl m} |j                  «       st        j                  |t
        «      S |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )r£   rù   r^   r7   r×   rß   r´   rà   rk  Úxorr0   r&  s          rY   Únb_xor_implzTensorVariable.nb_xor_impl@	  r1  r[   c           
      ó¦   — ddl m} |r|| fn| |f\  }} || |j                  j                  dt        j
                  gt        ||gi «      ¢­Ž «      S rj  )r£   rù   r´   rà   rk  r¡  r0   r&  s          rY   Únb_multiply_implzTensorVariable.nb_multiply_implR	  s\   € õ 	+á$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ3ÈÀ*ÈbÓ0Qòó
ð 	
r[   c           
      ó  — t        |t        «      s%t        |«      st        j                  |t
        «      S ddlm} |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )rT   ru   ra   r7   r×   rß   r£   rù   r´   rà   rk  Úfloordivr0   r&  s          rY   Únb_floor_divide_implz#TensorVariable.nb_floor_divide_imple	  s„   € ô ˜5¤.Ô1Ô5JÈ5Ô5QÜ"×(Ñ(¨¬^Ó<Ð<Ý*á$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤×!2Ñ!2ðÜ5FÈÈSÀzÐSUÓ5Vòó
ð 	
r[   c           
      ó  — t        |t        «      s%t        |«      st        j                  |t
        «      S ddlm} |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )rT   ru   ra   r7   r×   rß   r£   rù   r´   rà   rk  Útruedivr0   r&  s          rY   Únb_true_divide_implz"TensorVariable.nb_true_divide_implz	  s„   € ô ˜5¤.Ô1Ô5JÈ5Ô5QÜ"×(Ñ(¨¬^Ó<Ð<Ý*á$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤×!1Ñ!1ðÜ4EÀsÈCÀjÐRTÓ4Uòó
ð 	
r[   c           
      ó  — t        |t        «      s%t        |«      st        j                  |t
        «      S ddlm} |r|| fn| |f\  }} || |j                  j                  dt        j                  gt        ||gi «      ¢­Ž «      S rj  )rT   ru   ra   r7   r×   rß   r£   rù   r´   rà   rk  Úmodr0   r&  s          rY   Únb_remainder_implz TensorVariable.nb_remainder_impl�	  s�   € ô ˜5¤.Ô1Ô5JÈ5Ô5QÜ"×(Ñ(¨¬^Ó<Ð<Ý*á$+�E˜4‘=°$¸°‰ˆˆSÙØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ3ÈÀ*ÈbÓ0Qòó
ð 	
r[   c                 ój   — | j                  «       j                  j                  d   }t        |«      dfS )Nr¢   T)rÈ   r�   r¥   r†   rÝ  s      rY   Ú	hash_implzTensorVariable.hash_impl¤	  s.   € ð �}‰}‹×#Ñ#×(Ñ(¨Ñ9ˆÜ�$‹x˜ˆ~Ðr[   c           
      óø   — t        |«      st        j                  |t        «      S |r|| gn| |g}t        j                  | |j                  j                  dt        j                  gt        |i «      ¢­Ž d ¬«      S ©NrÞ   ©rÕ   ©ra   r7   r×   rß   rÔ   rØ   r´   rà   rk  Úsubr0   ©r�   r�   rÚ   r   rþ   s        rY   Únb_subtract_implzTensorVariable.nb_subtract_impl«	  ó|   € ô % UÔ+Ü"×(Ñ(¨¬^Ó<Ð<Ù '��t‰}¨d°E¨]ˆÜ×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ$ÈÓ0Kòð ð &ó 
ð 	
r[   c                 óÈ   — t        |t        «      sy| j                  «       j                  j                  d   }|j                  «       j                  j                  d   }||u S )NFr¢   )rT   r7   rÈ   r�   r¥   )r�   rÚ   r  Úbs       rY   Úis_python_equalzTensorVariable.is_python_equal½	  sQ   € Ü˜%¤Ô1ØØ�M‰M‹O× Ñ ×%Ñ% oÑ6ˆØ�N‰NÓ×!Ñ!×&Ñ& Ñ7ˆØ�Aˆvˆr[   rÆ   ©NF©F)NNNN)rK   Nrü  )r�   r@   rK   ru   )r�   r@   rK   r  )‘rW   Ú
__module__Ú__qualname__Ú__doc__r7   Ú_nonvar_fieldsÚstrrŠ   rP   rU   r,   r  r  rp   rw   rx   r`   rN   r¤   rn   r   rš   r¬   r°   r·   r»   rÄ   rÈ   rË   rÎ   rÙ   râ   Ústaticmethodr  rõ   r  r"  r$  r&  r)  r9   r,  r1  r3  r5  r7  r:  r	   r>  rE  rJ  rL  rP  rV  rq  r   r­  r�  r‡  r/  Úpropertyrz   rd  re  rš  rÓ   rÀ  rÂ  r¾  rÒ  Úmethod_nelementrÔ  Úmethod_ndimensionr×  rÞ  rá  rå  rï  rù  rü  rÿ  r	  r  r   r$  rG  rK  rO  rV  r[  r^  r`  rc  re  rh  rn  rr  rv  ry  r|  r  r—  r  ÚcacherZ  r’  r‘  r–  r˜  r¥  r®  r°  r²  r´  r¶  r¸  r»  r¿  rÂ  rÄ  rÉ  rÌ  rÈ  r  r	  r  r  r  r  r  r#  r)  r-  r0  r4  r7  r9  r<  r?  rB  rD  rK  r÷  rO  Ú__classcell__©rœ   s   @rY   ru   ru   ´   s  ø„ ÙGð 	ØØØØØØØØØØØØØØðð  
×	'Ñ	'ð!€Nð&Y¨Só YðB §¡ó Bð. )-Ø)-Ø%)Ø$(ò#&/à�x‰x�~‰~ð&/ð �{‰{ð	&/ð
 —‘ð&/ð —‘ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð �S˜#�X‰ Ñ%ð&/ð �c˜3�h‘ $Ñ&ð&/ð  ˜d‘{ð!&/ð" ˜T‘kð#&/ð$ ð%&/ð& 
õ'&/ðR JNñ Ø-ð Ø;?À$¹;ð à	ó ðE 3¨¡:ó Eð
Aà'ðAð ˜d™
ðAð ð	Að
 
óAð*
˜Có 
ð

Ð7ð 
¸Oó 
ð˜%Ÿ(™(Ÿ.™.ó ð˜Tó ð˜4ó ð@Ð7ð @¸Oó @ð8à'ð8ð ð8ð ð	8ð
 
ó8ð" ð/˜%Ÿ,™,ð /¨4°°S°©>ò /ó ð/ðb[BØ-ð[BØ58ð[Bà	ó[Bðz7Ð#>ð 7À?ó 7ðØ-ðà	˜4Ñ	óðØ-ðà	˜4Ñ	óðØ-ðà	˜4Ñ	óðØ-ðà	˜DÑ	 óð8Ð$?ð 8ÀOó 8ðØ-ðà	˜DÑ	 óðØ-ðà	˜DÑ	 óðØ-ðà	˜DÑ	 óðØ-ðà	˜DÑ	 óð
Ð*Eð 
È(ó 
ðØ-ðà	˜4Ñ	óð(Ð#>ð (À?ó (ð
;Ø-ð;à	˜DÑ	 ó;ð
Ð'Bð 
Àó 
ð2Ø-ð2Ø58ð2à	ó2ð>[Ø-ð[Ø58ð[à	ó[ð| NRñ?
Ø-ð?
Ø6>¸s±mÀdÑ6Jð?
à	ˆoÑ	ó?
ðB;à'ð;ð ,ð;ð  ð	;ð
 �?Ñ#ð;ð ˜c ?Ð2Ñ3ð;ð 
ó;ð&˜Dó &ð ð�e˜C ˜H‘oò ó ðð
N¨¨c©ó Nð
°T¸#±Yó 
ð
 0à'ð 0ð ð 0ð 
ó	 0ðDzà'ðzð ðzð �?Ñ#ð	zð
 -ðzð 
ózðxAØ-ðAØ69ðAØEHðAà	˜4Ñ	óAð
CØ-ðCØ69ðCØEHðCà	˜4Ñ	óCð ,0ñ*Øð*Ø! D™jð*à	˜4Ñ	ó*ðX	Ð:ð 	¸ÐQUÑ?Uó 	ð #€OðÐ8ð ¸_ÈtÑ=Só ð
 #ÐðØ-ðà	˜DÑ	 óðØ-ðà	˜DÑ	 óð"Ø-ðà	˜DÑ	 óð 15ñà'ðð '¨Ñ-ðð 
˜DÑ	 ó	ð, !Ø"ñ	,à'ð,ð �T‰zð,ð ð	,ð
 ð,ð 
˜4Ñ	ó,ð\
Ø-ð
Ø4Cð
à	'ó
ð2Ø-ðà	˜4Ñ	óð>Ð&Að >Àoó >ð SXò(6Ø-ð(6Ø9HÈ4Ñ9Oð(6à	ó(6ðT(.Ð ;ð (.Àó (.ðV OTñ;Ø! /Ñ2ð;ØGKð;à	ˆoÑ	 Ñ	%ó;ð@ ,0Ø/3Ø/3Ø)-ñu-à'ðu-ð " DÑ(ðu-ð &¨Ñ,ð	u-ð
 &¨Ñ,ðu-ð   $Ñ&ðu-ð 
˜4Ñ	óu-ðn%à'ð%ð ð%ð "ð	%ð
 
ó%ðCà'ðCð ðCð "ð	Cð
 
óCð-à'ð-ð  ð-ð 
ó	-ð&à'ðð ðð "ð	ð
 
óð,
à'ð
ð 
ó
ð<
à'ð
ð 
ó
ð8$Ð!<ð $Àó $ð
à'ð
ð 
ó
ð2&Ð#>ð &À?ó &ð
à'ð
ð 
ó
ð )Ð!<ð )Àó )ð
à'ð
ð 
ó
ð )Ð!<ð )Àó )ð
à'ð
ð 
ó
ð )Ð!<ð )Àó )ð(à'ð(ð ð(ð "ð	(ð
 
ó(ð< Ø‡_�_ò
ó ó ð
ð&"Ð!<ð "Àó "ðPÐ7ð P¸Oó Pð
Ð:ð 
¸ó 
ð
%Ð"=ð %À/ó %ð !òà'ðð ðð ð	ð �T‰zðð 
ˆt‰óð$-à'ð-ð ð-ð ð	-ð
 
ó-ðB
à'ð
ð ð
ð "ð	
ð
 
ó
ð
à'ð
ð ð
ð "ð	
ð
 
ó
ð
à'ð
ð ð
ð "ð	
ð
 
ó
ð
à'ð
ð ð
ð "ð	
ð
 
ó
ðà'ðð ðð "ð	ð
 
óð6 )-òà'ðð ðð
  Ñ%ðð 
˜4Ñ	óð6 )-òà'ðð "ðð "ð	ð  Ñ%ðð 
˜4Ñ	óð&6Ø-ð6Ø5Dð6à	ó6ð)Ø-ð)Ø4Cð)à	ó)ð
Pà'ðPð ðPð "ð	Pð
 
óPð
à'ð
ð ð
ð "ð	
ð
 
ó
ðpØ-ðpØ58ðpØ@Oðpà	ópðj 15ñWà'ðWð ˜oÑ-ðWð 
ó	Wórð	
 hó 	
ðà'ðð ðð "ð	ð
 
˜4Ñ	óð$
Øð
à'ð
ð ð
ð "ð	
ð
 
˜4Ñ	ó
ð2
Ø-ð
à	!ó
ð #ð ¨$ó ð ñ	1à'ð1ð ð1ð ð	1ð
 
ó1ð. ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð. ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð2 ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð2 ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð*Ð7ð ¸EÀ#ÀtÀ)Ñ<Ló ð ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð$ Vð °÷ r[   ru   c                   ó”  ‡ — e Zd ZdZddhej
                  £Zdefd„Ze	 d8ddde	de	dz  d	e	dd
f
d„«       Z
de	de	de	ddfˆ fd„Zdefd„Zdefd„Zde	fd„Zdd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	 d8ded   deez  ez  fd„Zdddedee   deeef   def
d„Zdddefˆ fd„Zdddefd„Zddde	de	defd„Z	 d9ddded edefd!„Z	 d9ddded edefd"„Z 	 d9ddded edefd#„Z!	 d9ddded edefd$„Z"	 d9ddded edefd%„Z#	 d9ddded edefd&„Z$	 d9ddded edefd'„Z%	 d9ddded edefd(„Z&	 d9ddded edefd)„Z'	 d9ddded edefd*„Z(	 d9ddded edefd+„Z)dddefd,„Z*ddde	de	defd-„Z+dddefd.„Z,ddde	de	defd/„Z-ddde.eef   fd0„Z/dddefd1„Z0ddde	de	defd2„Z1dddefd3„Z2ddde	de	defd4„Z3defd5„Z4defd6„Z5de6defd7„Z7ˆ xZ8S ):rÔ   zý
    Represents a symbolic scalar, either int, float or bool.  This is most commonly used to
    handle symbolic size computation, e.g., tensor.size(0), but it is also used to
    handle logic like float_tensor.item() or unspecialized float inputs.
    rv   rÕ   rK   c                 ó,   — t        | j                  «      S rÆ   )ÚreprrÕ   r’   s    rY   r»   zSymNodeVariable.debug_reprÒ	  s   € Ü�D—L‘LÓ!Ð!r[   Nr�   r@   rÄ  r7   c                 ót  — |€t        |j                  |«      }d|j                  j                  v rD|j                  j                  d   |k7  r(t        d|j                  j                  d   › d|› �«      ‚t	        |j                  |«       t        |t        j                  t        t        f«      r=t        |t        j                  «      rt        |«      n|}t        j                  ||«      S t        ||fi |¤Ž}|j                  j                  dk7  r%|j                  j                  j!                  |«       |S )Nr¢   zproxy example_value z != r—   )r+   r�   r¥   r  r2   rT   ÚsympyÚIntegerr`   rN   r7   r×   rÔ   r›   r´   Úcurrent_tracerÚrecord_proxyable_vt)rð  r�   rv   rÕ   rÄ  r  s         rY   rØ   zSymNodeVariable.createÕ	  sù   € ð ˆ?Ü$ U§Z¡Z°Ó4ˆGØ˜eŸj™jŸo™oÑ-Ø�z‰z�‰˜Ñ/°7Ò:Ü$Ø*¨5¯:©:¯?©?¸?Ñ+KÐ*LÈDÐQXÐPYÐZóð ô 	˜%Ÿ*™* gÔ.ä�g¤§¡¬s´DÐ9Ô:Ü&0°¼%¿-¹-Ô&H”c˜'”lÈgˆGÜ"×(Ñ(¨¨WÓ5Ð5ä˜e WÑ8°Ñ8ˆØ�:‰:�=‰=˜MÒ)Ø�I‰I×$Ñ$×8Ñ8¸Ô=Øˆ
r[   r•   c                 óN   •— t        ‰| �  di |¤Ž || _        || _        d | _        y ©Nr˜   )r™   rš   rv   rÕ   Ú_tensor_var)r�   rv   rÕ   r•   rœ   s       €rY   rš   zSymNodeVariable.__init__ï	  s)   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
àˆŒØ26ˆÕr[   c                 ó    — t        | j                  t        «      r | j                  j                  j                  S t        | j                  «      S rÆ   )rT   rÕ   r   r�   Úpytyper¤   r’   s    rY   rË   zSymNodeVariable.python_typeö	  s5   € Ü�d—l‘l¤HÔ-Ø—<‘<×$Ñ$×+Ñ+Ð+ä˜Ÿ™Ó%Ð%r[   c                  ó   — yrÍ   r˜   r’   s    rY   r^   zSymNodeVariable.is_symnode_likeü	  rÏ   r[   c                 ó   — | j                   S rÆ   rÇ   r’   s    rY   rÈ   zSymNodeVariable.as_proxyÿ	  rÉ   r[   c                 óF  — t        | j                  t        j                  «      r| S t        | j                  t        j                  t        j
                  f«      s!t        dt        | j                  «      › �«      ‚t        j                  || j                  «       dk7  «      S )Nz!Expected SymInt or SymFloat, got r   )rT   rÕ   rP   rÖ   ÚSymIntÚSymFloatr  r¤   rÔ   rØ   rÈ   rÃ   s     rY   rÙ   zSymNodeVariable.bool_impl
  sw   € ô �d—l‘l¤E§M¡MÔ2ØˆKÜ˜$Ÿ,™,¬¯©´u·~±~Ð(FÔGÜ Ø3´D¸¿¹Ó4FÐ3GÐHóð ô ×%Ñ% b¨$¯-©-«/¸QÑ*>Ó?Ð?r[   rÚ   r›   c                 óˆ  — t        |t        t        t        f«      sK|dv r.t        |   }t        j                  | |t        «       d«      «      S t        j                  t        «      S t        |   }|j                  j                  d|| j                  «       |j                  «       fi «      }t        j                  ||d¬«      S )z4SymNode tp_richcompare: symbolic numeric comparison.©Ú__eq__Ú__ne__NrÞ   rG  )rT   rÔ   r9   ru   r(   r7   r×   r÷  rØ   rß   r´   rà   rÈ   )r�   r�   rÚ   r›   rá   rv   s         rY   râ   z SymNodeVariable.richcompare_impl
  s©   € ô ˜%¤/Ô3CÄ^Ð!TÔUØÐ)Ñ)Ü.¨rÑ2�Ü&×,Ñ,¨R±´v³xÀÓ1FÓGÐGÜ#×*Ñ*¬>Ó:Ð:Ü& rÑ*ˆØ—	‘	×&Ñ&Ø˜U T§]¡]£_°e·n±nÓ6FÐ$GÈó
ˆô ×%Ñ% b¨%¸Ð%Ó>Ð>r[   rp   c           	      óÔ   — | j                   €Qt        j                  |t        j                  «      j                  || gdt        j                  ||«      i«      | _         | j                   S )Nrp   )rh  r7   r×   rP   Úscalar_tensorrÞ   )r�   r�   rp   s      rY   Ú	as_tensorzSymNodeVariable.as_tensor#
  s_   € Ø×ÑÐ#Ü.×4Ñ4Ø”E×'Ñ'ó ç‰m˜B  ¨´/×2GÑ2GÈÈEÓ2RÐ(SÓTð Ôð ×ÑÐr[   Úoutput_graphr?   c                 óþ   — 	 t        | j                  «      S # t        $ r\}t        j                  j
                  j                  j                  r‚ t        t        j                  dt        |«      › �d¬«      ‚d }~ww xY w)Nz5Consider annotating your code using torch._check*(). Úconstrain_as_size_example)Ú	case_name)r   rÕ   r   rP   r  ÚexperimentalÚ_configÚno_data_dependent_graph_breakr"   r#   ÚANTI_PATTERNrV  )r�   rw  r¹  s      rY   rw  zSymNodeVariable.evaluate_expr*
  si   € ð
	Ü §¡Ó-Ð-øÜ*ò 	Ü�x‰x×$Ñ$×,Ñ,×JÒJØäÜ×*Ñ*ØGÌÈAËÀxÐPØ5ôð ûð		ús   ‚ —	A< AA7Á7A<rö   rþ   c           
      ór   — ddl m}  || |j                  j                  d|gt	        | g|¢|«      ¢­Ž «      S )Nr4   rø   rÓ   )r£   rù   r´   rà   r0   )r�   r�   rö   rþ   r•   rù   s         rY   rÓ   zSymNodeVariable.call_method9
  sH   € õ 	+áØØ"ˆB�I‰I×"Ñ"ØØðô # D =¨4 =°&Ó9òó
ð 	
r[   c                 ó¸   •— | j                  «       }|t        t        fv r-t        j                  j                  | j                  «       «      S t        ‰| �!  |«      S rÆ   )	rË   r`   rN   r   r9   rØ   rw  r™   r^  )r�   r�   rj  rœ   s      €rY   r^  zSymNodeVariable.nb_index_implK
  sO   ø€ ð ×!Ñ!Ó#ˆØ”cœ4�[Ñ Ü×-Ñ-×4Ñ4°T×5GÑ5GÓ5IÓJÐJÜ‰wÑ$ RÓ(Ð(r[   c           	      ó€   — ddl m}  |||j                  j                  dt        | j                  «       fi «      ¬«      S r"  )r£   rù   r´   rà   r   rÈ   rm  s      rY   r`  zSymNodeVariable.nb_int_implY
  s>   € õ 	+áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ô
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   rb  r¿  s       rY   rc  zSymNodeVariable.method___int__l
  s   € ð ×Ñ Ó#Ð#r[   r   c           
      óø   — t        |«      st        j                  |t        «      S |r|| gn| |g}t        j                  | |j                  j                  dt        j                  gt        |i «      ¢­Ž d ¬«      S rF  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rk  r!  r0   rJ  s        rY   r#  zSymNodeVariable.nb_add_implq
  rL  r[   c           
      óò   — |j                  «       st        j                  |t        «      S t        j                  | |j                  j                  dt        j                  gt        | |gi «      ¢­Ž d ¬«      S rF  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rk  r/  r0   ©r�   r�   rÚ   r   s       rY   r0  zSymNodeVariable.nb_or_implƒ
  ót   € ð ×$Ñ$Ô&Ü"×(Ñ(¨¬^Ó<Ð<Ü×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ4ÈÀ-ÐQSÓ0Tòð ð &ó 
ð 	
r[   c           
      óò   — |j                  «       st        j                  |t        «      S t        j                  | |j                  j                  dt        j                  gt        | |gi «      ¢­Ž d ¬«      S rF  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rk  r3  r0   r…  s       rY   r4  zSymNodeVariable.nb_and_impl“
  st   € ð ×$Ñ$Ô&Ü"×(Ñ(¨¬^Ó<Ð<Ü×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ1BÀDÈ%À=ÐRTÓ1Uòð ð &ó 
ð 	
r[   c           
      óò   — |j                  «       st        j                  |t        «      S t        j                  | |j                  j                  dt        j                  gt        | |gi «      ¢­Ž d ¬«      S rF  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rk  r6  r0   r…  s       rY   r7  zSymNodeVariable.nb_xor_impl£
  r†  r[   c           
      ó  — |j                  «       st        j                  |t        «      S |r|| gn| |g}t        j                  | |j                  j                  dt        j                  gt        |i «      ¢­Ž d ¬«      S rF  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rk  r%  r0   rJ  s        rY   r)  zSymNodeVariable.nb_lshift_impl³
  ó€   € ð ×$Ñ$Ô&Ü"×(Ñ(¨¬^Ó<Ð<Ù '��t‰}¨d°E¨]ˆÜ×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ3DÀTÈ2Ó3Nòð ð &ó 
ð 	
r[   c           
      ó  — |j                  «       st        j                  |t        «      S |r|| gn| |g}t        j                  | |j                  j                  dt        j                  gt        |i «      ¢­Ž d ¬«      S rF  )r^   r7   r×   rß   rÔ   rØ   r´   rà   rk  r,  r0   rJ  s        rY   r-  zSymNodeVariable.nb_rshift_implÄ
  rŠ  r[   c           
      óø   — t        |«      st        j                  |t        «      S |r|| gn| |g}t        j                  | |j                  j                  dt        j                  gt        |i «      ¢­Ž d ¬«      S rF  rH  rJ  s        rY   rK  z SymNodeVariable.nb_subtract_implÕ
  rL  r[   c           
      ó  — t        |«      st        j                  |t        «      S |r|| fn| |f\  }}t        j                  | |j                  j                  dt        j                  gt        ||gi «      ¢­Ž d ¬«      S rF  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rk  r¡  r0   ©r�   r�   rÚ   r   r'  r(  s         rY   r9  z SymNodeVariable.nb_multiply_implç
  s„   € ô % UÔ+Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÜ×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ3ÈÀ*ÈbÓ0Qòð ð &ó 
ð 	
r[   c           
      ó  — t        |«      st        j                  |t        «      S |r|| fn| |f\  }}t        j                  | |j                  j                  dt        j                  gt        ||gi «      ¢­Ž d ¬«      S rF  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rk  r;  r0   rŽ  s         rY   r<  z$SymNodeVariable.nb_floor_divide_implù
  s‡   € ô % UÔ+Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÜ×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤×!2Ñ!2ðÜ5FÈÈSÀzÐSUÓ5Vòð ð &ó 
ð 	
r[   c           
      ó  — t        |«      st        j                  |t        «      S |r|| fn| |f\  }}t        j                  | |j                  j                  dt        j                  gt        ||gi «      ¢­Ž d ¬«      S rF  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rk  r>  r0   rŽ  s         rY   r?  z#SymNodeVariable.nb_true_divide_impl
  s‡   € ô % UÔ+Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÜ×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤×!1Ñ!1ðÜ4EÀsÈCÀjÐRTÓ4Uòð ð &ó 
ð 	
r[   c           
      ó  — t        |«      st        j                  |t        «      S |r|| fn| |f\  }}t        j                  | |j                  j                  dt        j                  gt        ||gi «      ¢­Ž d ¬«      S rF  )ra   r7   r×   rß   rÔ   rØ   r´   rà   rk  rA  r0   rŽ  s         rY   rB  z!SymNodeVariable.nb_remainder_impl  s„   € ô % UÔ+Ü"×(Ñ(¨¬^Ó<Ð<Ù$+�E˜4‘=°$¸°‰ˆˆSÜ×%Ñ%ØØ"ˆB�I‰I×"Ñ"Ø¤§¡ðÜ0AÀ3ÈÀ*ÈbÓ0Qòð ð &ó 
ð 	
r[   c           	      ó€   — ddl m}  |||j                  j                  dt        | j                  «       fi «      ¬«      S r"  )r£   rù   r´   rà   r   rÈ   rm  s      rY   re  zSymNodeVariable.nb_float_impl,  s>   € õ
 	+áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ô
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   rg  r¿  s       rY   rh  z SymNodeVariable.method___float__=  s   € ð ×!Ñ! "Ó%Ð%r[   c                 ót   — t         j                  |t        j                  | j	                  «       «      d ¬«      S ©NrG  )rÔ   rØ   rk  rl  rÈ   rÃ   s     rY   rn  z SymNodeVariable.nb_negative_implB  ó4   € ô ×%Ñ%ØÜ�L‰L˜Ÿ™›Ó)Øð &ó 
ð 	
r[   c                 ó$   — | j                  |«      S rÆ   rq  r¿  s       rY   rr  zSymNodeVariable.method___neg__L  ó   € ð ×$Ñ$ RÓ(Ð(r[   c                 ó8   — t        | j                  «       «      dfS rP  ©Úhashrw  rÃ   s     rY   rD  zSymNodeVariable.hash_implQ  s   € Ü�D×&Ñ&Ó(Ó)¨5Ð0Ð0r[   c                 ót   — t         j                  |t        j                  | j	                  «       «      d ¬«      S r•  )rÔ   rØ   rk  ru  rÈ   rÃ   s     rY   rv  z SymNodeVariable.nb_positive_implT  r–  r[   c                 ó$   — | j                  |«      S rÆ   rx  r¿  s       rY   ry  zSymNodeVariable.method___pos__^  r˜  r[   c                 ót   — t         j                  |t        j                  | j	                  «       «      d ¬«      S r•  )rÔ   rØ   rk  r{  rÈ   rÃ   s     rY   r|  z SymNodeVariable.nb_absolute_implc  r–  r[   c                 ó$   — | j                  |«      S rÆ   r~  r¿  s       rY   r  zSymNodeVariable.method___abs__m  r˜  r[   c                  ó   — yrÍ   r˜   r’   s    rY   Úis_python_hashablez"SymNodeVariable.is_python_hashabler  rÏ   r[   c                 ó4   — t        | j                  «       «      S rÆ   rš  r’   s    rY   Úget_python_hashzSymNodeVariable.get_python_hashu  s   € ô �D×&Ñ&Ó(Ó)Ð)r[   c                 óÊ   — t        |t        «      r!| j                  «       |j                  «       k(  S t        |t        «      xr! | j                  «       |j	                  «       k(  S rÆ   )rT   rÔ   rw  r7   rx  )r�   rÚ   s     rY   rO  zSymNodeVariable.is_python_equalz  sZ   € Ü�eœ_Ô-Ø×%Ñ%Ó'¨5×+>Ñ+>Ó+@Ñ@Ð@ô �uœoÓ.ò CØ×"Ñ"Ó$¨×(@Ñ(@Ó(BÑBð	
r[   rÆ   rQ  )9rW   rR  rS  rT  r7   rU  rV  r»   Úclassmethodr   rØ   rš   r¤   rË   rN   r^   rÈ   rÙ   râ   ru   rv  r
   r`   r_   rw  r­  r  rÓ   r^  r`  rc  r#  r0  r4  r7  r)  r-  rK  r9  r<  r?  rB  re  rh  rn  rr  rn   rD  rv  ry  r|  r  r¡  r£  r÷  rO  r\  r]  s   @rY   rÔ   rÔ   Å	  s,  ø„ ñð 	Øðð 
×	'Ñ	'ð€Nð"˜Có "ð ð
 #ñ	à'ðð ðð �t‘ð	ð
 ðð 
òó ðð27˜cð 7¨Cð 7¸3ð 7À4õ 7ð&˜Tó &ð ó ð˜#ó ð@à'ð@ð 
ó@ð?à'ð?ð ð?ð ð	?ð
 
ó?ð$ Ð7ð  Àð  Èó  ð 7;ñØ$ ]Ñ3ðà	�‰�eÑ	óð
à'ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ó
ð$)à'ð)ð 
õ)ð
à'ð
ð 
ó
ð&$Ø-ð$Ø69ð$ØEHð$à	ó$ð ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð( ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð( ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð( ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð* ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð* ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð* ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð* ñ	
à'ð
ð ð
ð ð	
ð
 
ó
ð"
à'ð
ð 
ó
ð"&Ø-ð&Ø69ð&ØEHð&à	ó&ð

à'ð
ð 
ó
ð)Ø-ð)Ø69ð)ØEHð)à	ó)ð
1Ð7ð 1¸EÀ#ÀtÀ)Ñ<Ló 1ð
à'ð
ð 
ó
ð)Ø-ð)Ø69ð)ØEHð)à	ó)ð

à'ð
ð 
ó
ð)Ø-ð)Ø69ð)ØEHð)à	ó)ð
 Dó ð* ó *ð

 Vð 
°÷ 
r[   rÔ   c                   ó<  ‡ — e Zd ZdZedddej                  j                  dedd fd„«       Z	de
fd„Zdddeee
f   fd	„Zddd
ededefd„Zdddedefd„Zededee   deeef   deee   eeef   f   fd„«       Zdddedee   deeef   def
ˆ fd„Zdefd„Zˆ xZS )r  z}
    Represents a np.ndarray, but backed by torch Tensor via torch._numpy.ndarray.
    Use this for Tensor.numpy() call.
    r�   r@   rv   rÄ  rK   c                 ó.   — ddl m}  |dt        | |dœ|¤ŽS )Nr4   rÜ   rt  r˜   )r£   rÝ   r  )r�   rv   rÄ  rÝ   s       rY   rØ   zNumpyNdarrayVariable.createŠ  s,   € õ 	/á ð 
Ü+ØØñ
ð ñ	
ð 	
r[   c                  ó   — yrP  r˜   r’   s    rY   Úis_hashablez NumpyNdarrayVariable.is_hashable—  s   € Ør[   c                 ó"   — ddl m}  ||d«       y )Nr   )Úraise_type_errorz unhashable type: 'numpy.ndarray')r  r«  )r�   r�   r«  s      rY   rD  zNumpyNdarrayVariable.hash_implš  s   € Ý*á˜Ð?Õ@r[   rÚ   r›   c                 ó8  — ddl m} t        |t        t        t
        f«      st	        j                  t        «      S t        |   }|j                  j                  d ||«      | j                  «       |j                  «       fi «      }t        j                  ||«      S )zKndarray tp_richcompare: element-wise comparison via numpy_operator_wrapper.r   )Únumpy_operator_wrapperrÞ   )rR   r­  rT   rÔ   r9   ru   rØ   rß   r(   r´   rà   rÈ   r  )r�   r�   rÚ   r›   r­  rá   rv   s          rY   râ   z%NumpyNdarrayVariable.richcompare_implŸ  s€   € õ 	3ä˜%¤/Ô3CÄ^Ð!TÔUÜ#×*Ñ*¬>Ó:Ð:Ü& rÑ*ˆØ—	‘	×&Ñ&ØÙ" 5Ó)Ø�]‰]‹_˜eŸn™nÓ.Ð/Øó	
ˆô $×*Ñ*¨2¨uÓ5Ð5r[   rö   c                 ó:  ‡ ‡‡‡	‡
— ddl mŠ	 ddlmŠ
 d }‰ j	                  «       j
                  j                  d   }t        j                  |«      }dt        fˆˆ	ˆ ˆˆ
fd„}‰dv rE‰j                  j                  d	‰	‰ j	                  «       ‰fi «      }t        j                  ‰|«      }nê‰d
v r t        j                  ‰t        |‰«      «      S ‰dv rDt!        t        |‰«      x}«      s&t        j                  ‰t#        d„ |D «       «      «      S  |«       S ‰dk(  r=t!        |j$                  x}«      st        j                  ‰t'        |«      «      S  |«       S ‰dv rt)        dd‰ › d‰› �d‰› d�g ¬«       n‰dk(  rt)        dd‰ › d‰› �d‰› d�g ¬«       |€t*        ‚|S )Nr   )Únumpy_attr_wrapperr4   rø   r¢   rK   c            	      ón   •—  ‰‰‰j                   j                  d‰‰j                  «       ‰ fi «      «      S )NrÞ   )r´   rà   rÈ   )rö   r¯  r�   r�   rù   s   €€€€€rY   Úinsert_into_graphz;NumpyNdarrayVariable.var_getattr.<locals>.insert_into_graphÂ  s;   ø€ Ù ØØ—	‘	×&Ñ&Ø#Ð%7¸$¿-¹-»/È4Ð9PÐRTóóð r[   )ÚTÚrealÚimagÚflatrÞ   )ry   rþ  )ro   r{   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrÆ   rÉ  rÊ  s     rY   ré   z3NumpyNdarrayVariable.var_getattr.<locals>.<genexpr>ä  s   è ø€ Ò6IÀ!´s¸1·vÑ6IùrÌ  rz   )rí  Úflagsrp   z$Unsupported ndarray attribute accessr<  rX  z3Dynamo currently does not support tracing `ndarray.r¦  r½   Ú__version__z&Unsupported ndarray.__version__ access)rR   r¯  r£   rù   rÈ   r�   r¥   ÚtnpÚndarrayr7   r´   rà   r  rØ   r×   rV   r   rn   rz   r`   r    r  )r�   r�   rö   ro  r¢   Úexample_ndarrayr±  rv   rË  r¯  rù   s   ```      @@rY   rq  z NumpyNdarrayVariable.var_getattr³  s·  ü€ õ 	/Ý*àˆàŸ™›×,Ñ,×1Ñ1°/ÑBˆÜŸ+™+ mÓ4ˆð	¤?÷ 	ñ 	ð Ð0Ñ0Ø—I‘I×*Ñ*ØØ"Ø—‘“ $Ð'Øó	ˆEô *×0Ñ0°°UÓ;‰Fð Ð)Ñ)Ü"×(Ñ(¨¬W°_ÀdÓ-KÓLÐLØÐ(Ñ(Ü#¬°À$Ó)GÐ$G AÔHÜ&×,Ñ,¨R´Ñ6IÀqÔ6IÓ1IÓJÐJÙ$Ó&Ð&Ø�VŠ^Ü#¨×)=Ñ)=Ð$= AÔ>Ü&×,Ñ,¨R´°Q³Ó8Ð8Ù$Ó&Ð&ØÐ/Ñ/ÜØ>Ø& t f¨A¨d¨VÐ4ØQÐRVÐQWÐWYÐZØö	ð �]Ò"ÜØ@Ø& t f¨A¨d¨VÐ4ØQÐRVÐQWÐWYÐZØõ	ð ˆ>Ü%Ð%Øˆr[   rþ   r•   c                 ó�   — | dk(  r8dddœ}|j                  «       D ��ci c]  \  }}|j                  ||«      |“Œ }}}||fS c c}}w )NÚclipÚminÚmax)Úa_minÚa_max)r§   r¦   )rö   rþ   r•   Úkwargs_renamerª   r«   s         rY   Ú
patch_argszNumpyNdarrayVariable.patch_argsü  sT   € ð �6Š>Ø&+°eÑ<ˆMØ=C¿\¹\»^×L±T°Q¸�m×'Ñ'¨¨1Ó-¨qÑ0ÐLˆFÑLØ�Vˆ|Ðùó Ms   žAc                 óp  •— ddl m} ddlm} | j	                  |||«      \  }}|dk(  rˆddlm} d }d|v r|d   }nt        |«      dkD  r|d   }|d uxr |j                  d	«      }	t        ||«      xr |j                  t        u }
|	s|
r( |d
d| › d|› d|› d|› �dg t        j                  ¢¬«       |dv rt        ‰| �=  ||||«      S |dv r |dd| › d|› d|› d|› �d|› d�g ¬«        |j                   j"                  d ||«      gt%        | gt'        |«      z   |«      ¢­Ž }t(        j+                  ||«      S )Nr   r=  )Únumpy_method_wrapperÚastyper4   )ÚBuiltinVariablerp   r   ÚOzndarray.astype(object)rœ  rX  z­`ndarray.astype('O')` or `ndarray.astype(object)` is not supported by torch.compile, as there is no equivalent to object type in torch.Tensor. This will be executed eagerly.r½   )Ú__len__rz   r  Ú__iter__)ÚtostringÚtobytesÚ__delattr__zUnsupported ndarray method callz	`ndarray.z&()` is not modelled in `torch._numpy`.rÞ   )r  r    rR   rÅ  rÃ  ÚbuiltinrÇ  rv  Úis_constant_matchrT   rp  r÷  r   rÚ  r™   rÓ   r´   rà   r0   r­  r  rØ   )r�   r�   rö   rþ   r•   r    rÅ  rÇ  Ú	dtype_argÚis_object_strÚis_object_typerv   rœ   s               €rY   rÓ   z NumpyNdarrayVariable.call_method  s‡  ø€ õ 	(Ý0à—‘ t¨T°6Ó:‰ˆˆfà�8ÒÝ0àˆIØ˜&Ñ Ø" 7™O‘	Ü�T“˜Q’Ø  ™G�	Ø%¨TÐ1ÒV°i×6QÑ6QÐRUÓ6VˆMä˜9 oÓ6ÒQ¸9¿<¹<Ì6Ð;Qð ñ ¡ÙØ4Ø*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð9ð ;Ô-×9Ñ9Ð:õ	ð Ð<Ñ<ä‘7Ñ& r¨4°°vÓ>Ð>ØÐ9Ñ9ÙØ9Ø& t f¨A¨d¨V°1°T°F¸!¸F¸8ÐDØ'¨ vÐ-SÐTØõ	ð '�—	‘	×&Ñ&ØÙ  Ó&ð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆô
 $×*Ñ*¨2¨uÓ5Ð5r[   c                 ó:   — t         �t         j                  S t        S rÆ   )r  rº  r   r’   s    rY   rË   z NumpyNdarrayVariable.python_type9  s   € Üˆ>Ü—:‘:ÐäˆOr[   )rW   rR  rS  rT  rW  rP   r  r  r   rØ   rN   r©  rn   r`   rD  r7   rV  râ   rq  r­  r  rÃ  rÓ   r¤   rË   r\  r]  s   @rY   r  r  „  sj  ø„ ñð
 ð

Ø'ð

Ø05·±·±ð

ØKNð

à	ò

ó ð

ð˜Tó ðAÐ7ð A¸EÀ#ÀtÀ)Ñ<Ló Að
6à'ð6ð ð6ð ð	6ð
 
ó6ð(GØ-ðGØ58ðGà	óGðR ðØðØ˜oÑ.ðØ8<¸SÀ/Ð=QÑ8Rðà	ˆt�OÑ$ d¨3°Ð+?Ñ&@Ð@Ñ	Aòó ðð26à'ð26ð ð26ð �?Ñ#ð	26ð
 �S˜/Ð)Ñ*ð26ð 
õ26ðh˜T÷ r[   r  c                   óÆ   ‡ — e Zd ZdZddhej
                  £Zdddœdej                  j                  de	e
z  dz  deded	df
ˆ fd
„Ze	 ddede	e
z  dz  ded	d fd„«       Zˆ xZS )ÚUnspecializedPythonVariablezO
    This is a 1-element tensor represents unspecialized python float/int.
    Ú	raw_valueÚneed_unwrapNT©rÖ  r×  rv   r•   rK   c                óB   •— t        ‰| �  |fi |¤Ž || _        || _        y rÆ   )r™   rš   rÖ  r×  )r�   rv   rÖ  r×  r•   rœ   s        €rY   rš   z$UnspecializedPythonVariable.__init__K  s&   ø€ ô 	‰Ñ˜Ñ) &Ò)Ø"ˆŒØ&ˆÕr[   Útensor_variablec                 óH   — t        di t        |j                  «      ¤||dœ¤ŽS )NrØ  r˜   )rÕ  r  Ú__dict__)rð  rÚ  rÖ  r×  s       rY   Úfrom_tensor_variablez0UnspecializedPythonVariable.from_tensor_variableW  s/   € ô +ñ 
Ü�?×+Ñ+Ó,ð
àØ#ó
ð 	
r[   rü  )rW   rR  rS  rT  ru   rU  rP   r  r  r_   r`   rN   r   rš   r¥  rÝ  r\  r]  s   @rY   rÕ  rÕ  @  s½   ø„ ñð
 	Øðð 
×	&Ñ	&ð€Nð )-Ø ò
'à�x‰x�~‰~ð
'ð ˜3‘; Ñ%ð	
'ð
 ð
'ð ð
'ð 
õ
'ð ð
 !ñ	
à'ð
ð ˜3‘; Ñ%ð
ð ð	
ð
 
'ò
ó ô
r[   rÕ  c                   ó�   ‡ — e Zd ZdZdhej
                  £Zdej                  j                  de	ddfˆ fd„Z
ededd fd	„«       Zˆ xZS )
ÚFakeItemVariablez‰An unspecialized python variable which prevents access to the underlying raw value.
    This is needed if item is called on a FakeTensor.r×  rv   r•   rK   Nc                 óX   •— |j                  dd«      }t        ‰| �  |fi |¤Ž || _        y )Nr×  F)r  r™   rš   r×  )r�   rv   r•   r×  rœ   s       €rY   rš   zFakeItemVariable.__init__o  s-   ø€ Ø—j‘j °Ó6ˆÜ‰Ñ˜Ñ) &Ò)Ø&ˆÕr[   rÚ  c                 ó>   — t        di t        |j                  «      ¤ŽS rg  )rß  r  rÜ  )rð  rÚ  s     rY   rÝ  z%FakeItemVariable.from_tensor_variablet  s   € ô  ÑA¤$ ×'?Ñ'?Ó"@ÑAÐAr[   )rW   rR  rS  rT  ru   rU  rP   r  r  r   rš   r¥  rÝ  r\  r]  s   @rY   rß  rß  f  sl   ø„ ñ9ð 	ðà	×	&Ñ	&ð€Nð
'˜eŸh™hŸn™nð '¸ð 'Àõ 'ð
 ðBØ,ðBà	òBó ôBr[   rß  c                   ó@   — e Zd Zdddee   deeef   defd„Zdefd„Z	y)	rõ  r�   r@   rþ   r•   rK   c           	      ó<  — ddl m} | j                  j                  }|t        j
                  j                  u r”d }t        |«      dk(  rP|d   j                  «       r=t        |«      dk(  r/|d   } |j                  ||| j                  | j                  «      }nht        d| j                  › d|› d|› d�dd	gt        j                  ¢¬
«       n4t        j                  ||«      j                  || gt!        |«      z   |«      }|€t#        d«      ‚| j                  j$                  }|t        j
                  j$                  ur(t        j                  ||«      j                  ||g|«       |j&                  j(                  j+                  t-        «       |t.        ¬«       |S )Nr4   rB   r   zCCalling subclass default constructor with more than tensor argumentr¡  r¢  rd   rô  zFAvoid this constructor call or move it outside `torch.compile` regioner½   z'__new__ must return a non-None variablerò  )ru  rC   rJ   Ú__new__rP   rU   rv  rÎ   rz  r‰   r    r   rÂ   r7   r×   rÞ   r­  r  rš   r´   rA  rö  r÷  r5   )	r�   r�   rþ   r•   rC   Únew_funcrT  ÚdataÚ	init_funcs	            rY   rÞ   z$TensorSubclassVariable.call_function|  s  € õ 	Aà—:‘:×%Ñ%ˆØ”u—|‘|×+Ñ+Ñ+ØˆCÜ�4‹y˜AŠ~ $ q¡'×"3Ñ"3Ô"5¼#¸f»+ÈÒ:JØ˜A‘w�ð CÐ2×BÑBØ˜˜dŸj™j¨$¯+©+ó‘ô ØaØ#Ÿz™z˜l¨&°°°iÀ¸xÀqÐIØ 9ð2ðô +×6Ñ6ðö		ô "×'Ñ'¨¨HÓ5×CÑCØ�T�FœT $›ZÑ'¨óˆCð ˆ;Ü Ð!JÓKÐKà—J‘J×'Ñ'ˆ	ð œEŸL™L×1Ñ1Ñ1Ü×!Ñ! " iÓ0×>Ñ>¸rÀCÀ5È&ÔQð 	�	‰	×Ñ×)Ñ)Ü‹H�cÔ-Að 	*ô 	
ð ˆ
r[   c                 ó   — | j                   S rÆ   rX   r’   s    rY   rx  z)TensorSubclassVariable.as_python_constant®  rÉ   r[   N)
rW   rR  rS  r­  r7   r  rV  rÞ   r¤   rx  r˜   r[   rY   rõ  rõ  {  sI   „ ð0à'ð0ð �?Ñ#ð0ð �S˜/Ð)Ñ*ð	0ð
 
ó0ðd Dô r[   rõ  c            
       ó¦   ‡ — e Zd Zdhej                  £Zdedej                  deddfˆ fd„Z	de
fd„Zdd	d
edee   deeef   def
ˆ fd„Zdd„Zˆ xZS )r  r¢   Úfrom_tensorr•   rK   Nc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y rg  )r™   rš   rê  r¢   )r�   rê  r¢   r•   rœ   s       €rY   rš   zUntypedStorageVariable.__init__¸  s%   ø€ ô 	‰ÑÑ"˜6Ò"Ø&ˆÔà*ˆÕr[   c                 ó"   — t         j                  S rÆ   )rP   ÚUntypedStorager’   s    rY   rË   z"UntypedStorageVariable.python_typeÃ  s   € Ü×#Ñ#Ð#r[   r�   r@   rö   rþ   c           
      óÚ  •— |dk(  r¸|s|r&t        ||dt        |«      › dt        |«      › d�«       | j                  j                  «       }t	        |«      st        j                  |t        |«      «      S ddlm	} ddl
m}  |||j                  j                  d	|| j                  j                  «       fi «      «      S |d
k(  r—t        |«      dk(  r‰|rt        ||dt        |«      › d�«       |j                  j                  d	t         j"                  j$                  j&                  | j                  j                  «       |d   j                  «       fi «       | S t(        ‰| �U  ||||«      S )Nrz   z0 args and 0 kwargsz
 args and z kwargsr   )Úuntyped_storage_sizer4   rø   rÞ   Úresize_z0 kwargsr   )r1   rv  r¢   rz   r   r7   r×   r`   Úexternal_utilsrï  r£   rù   r´   rà   rê  rÈ   rP   rh  r5  Úresize_storage_bytes_r™   rÓ   )	r�   r�   rö   rþ   r•   ro  rï  rù   rœ   s	           €rY   rÓ   z"UntypedStorageVariable.call_methodÆ  sQ  ø€ ð �6Š>Ù‘vÜ#ØØØ)Ü˜4“y�k ¬C°«K¨=¸Ð@ô	ð ×'Ñ'×,Ñ,Ó.ˆFÜ# FÔ+ä&×,Ñ,¨R´°V³Ó=Ð=åAÝ2á$ØØ—I‘I×*Ñ*Ø'Ø,Ø×)Ñ)×2Ñ2Ó4Ð6Øó	óð ð �9Ò¤ T£¨a¢ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRØ�I‰I×"Ñ"ØÜ—	‘	×"Ñ"×8Ñ8Ø×!Ñ!×*Ñ*Ó,¨d°1©g×.>Ñ.>Ó.@ÐAØô	ð ˆKä‰wÑ" 2 t¨T°6Ó:Ð:r[   c                 ól   —  || j                   «       |j                  d«       |j                  d«       y )Nr  r   )rê  Úload_methodrÓ   rŒ   s     rY   Úreconstructz"UntypedStorageVariable.reconstructó  s-   € Ù�× Ñ Ô!Ø×ÑÐ-Ô.Ø×Ñ˜AÕr[   ©rŽ   r>   rK   N)rW   rR  rS  r7   rU  ru   rP   rí  r   rš   r¤   rË   rV  r­  r  rÓ   rõ  r\  r]  s   @rY   r  r  ²  s¢   ø„ àðà	×	'Ñ	'ð€Nð
	+à#ð	+ð ×+Ñ+ð	+ð ð		+ð
 
õ	+ð$˜Tó $ð+;à'ð+;ð ð+;ð �?Ñ#ð	+;ð
 �S˜/Ð)Ñ*ð+;ð 
õ+;÷Zr[   r  c            	       ó6  ‡ — e Zd Zddej                  j
                  j                  j                  fhZ	 dde	de
deddfˆ fd„Zdefd	„Zed
ej                   j"                  dej                   j"                  fd„«       Zdddefd„Zdddede
defd„Zdd„Zˆ xZS )rH  )rÓ   r  rÞ   rê  rN  r•   rK   Nc                 ój   •— t        ‰| �  di |¤Ž || _        || _        |j	                  «       | _        y rg  )r™   rš   rê  rN  r°   Útensor_version)r�   rê  rN  r•   rœ   s       €rY   rš   zDataPtrVariable.__init__ÿ  s6   ø€ ô 	‰ÑÑ"˜6Ò"Ø&ˆÔØ&ˆÔØ)×;Ñ;Ó=ˆÕr[   c                 ó   — t         S rÆ   rÉ  r’   s    rY   rË   zDataPtrVariable.python_type
  s   € Üˆ
r[   r�   c                 ól  — t        |t        j                  j                  «      �r|j                  |j
                  f| j                  v rêt        |j                  «      dk(  rÒt        |j                  d   t        j                  j                  «      r¡|j                  d   }t        |t        j                  j                  «      rn|j                  |j
                  f| j                  v rJt        |j                  «      dk(  r2t        |j                  d   t        j                  j                  «      rŒ¡|S )Nr4   r   )	rT   rP   r  ÚNoder›   ÚtargetÚ_DATA_PTR_PRESERVING_TARGETSrv  rþ   )rð  r�   s     rY   Ú"_strip_data_ptr_preserving_aliasesz2DataPtrVariable._strip_data_ptr_preserving_aliases  sÈ   € ô �tœUŸX™XŸ]™]Õ+Ø—‘˜$Ÿ+™+Ð&¨#×*JÑ*JÑJÜ�D—I‘I“ !Ò#Ü˜4Ÿ9™9 Q™<¬¯©¯©Ô7à—9‘9˜Q‘<ˆDô �tœUŸX™XŸ]™]Ô+Ø—‘˜$Ÿ+™+Ð&¨#×*JÑ*JÑJÜ�D—I‘I“ !Ò#Ü˜4Ÿ9™9 Q™<¬¯©¯©Õ7ð ˆr[   rÚ   r7   c                 óD  — t        |t        «      sy| j                  �| j                  |j                  k7  ry| j                  | j                  j                  «       j                  «      }| j                  |j                  j                  «       j                  «      }||u S rP  )rT   rH  rù  rÿ  rê  rÈ   r�   )r�   rÚ   Ú	self_rootÚ
other_roots       rY   Ú_is_same_data_ptrz!DataPtrVariable._is_same_data_ptr  s�   € Ü˜%¤Ô1Øà×ÑÐ&¨$×*=Ñ*=À×AUÑAUÒ*UØà×;Ñ;Ø×Ñ×%Ñ%Ó'×,Ñ,ó
ˆ	ð ×<Ñ<Ø×Ñ×&Ñ&Ó(×-Ñ-ó
ˆ
ð ˜JÐ&Ð&r[   r�   r@   r›   c           	      óÄ   — |dvrt        j                  t        «      S | j                  |«      }|rt        j                  |dk(  «      S t	        dd| › d|› d|› �dg ¬«       y)	z-DataPtr tp_richcompare: identity-based eq/ne.rq  rr  zData pointer comparisonzrichcompare_impl rX  zjDynamo can only trace data pointer comparisons when it can prove both operands have the same data pointer.r½   N)r9   rØ   rß   r  r    )r�   r�   rÚ   r›   Úsame_data_ptrs        rY   râ   z DataPtrVariable.richcompare_impl'  sp   € ð Ð)Ñ)Ü#×*Ñ*¬>Ó:Ð:Ø×.Ñ.¨uÓ5ˆÙÜ#×*Ñ*¨2°©>Ó:Ð:ÜØ-Ø'¨ v¨Q¨r¨d°!°E°7Ð;ðJàö	
r[   c                 ó€   —  || j                   «       |j                  | j                  «       |j                  d«       y )Nr   )rê  rô  rN  rÓ   rŒ   s     rY   rõ  zDataPtrVariable.reconstruct;  s2   € Ù�× Ñ Ô!Ø×Ñ˜D×,Ñ,Ô-Ø×Ñ˜AÕr[   )Údata_ptrrö  )rW   rR  rS  rP   rh  ri  r  r7  rþ  ru   rV  r   rš   r¤   rË   r¥  r  rü  rÿ  rN   r  r7   râ   rõ  r\  r]  s   @rY   rH  rH  ù  sÜ   ø„ à!Ø	˜%Ÿ)™)Ÿ.™.×/Ñ/×7Ñ7Ð8ð$Ð ð &ñ	>à#ð	>ð ð	>ð ð		>ð
 
õ	>ð˜Tó ð ð°e·h±h·m±mð ÈÏÉÏÉò ó ðð'Ð'8ð '¸Tó 'ð
à'ð
ð ð
ð ð	
ð
 
ó
÷(r[   rH  )rU   )�rT  r  Úloggingrk  rŒ  rˆ  r^  Úcollections.abcr   r   Ú
contextlibr   Ú	itertoolsr   r   Útypingr   r	   r
   r   rb  Útorch._numpyÚ_numpyr¹  Útorch.fxrP   Útorch.randomr   r   Útorch._dynamor   Útorch._library.opaque_objectr   Útorch._opaque_baser   Útorch._subclasses.meta_utilsr   Ú%torch.fx.experimental.symbolic_shapesr   r   r   r   r   Útorch.utils._python_dispatchr   rR  r   r   r   Ú_trace_wrapped_higher_order_opr   r  r   r   r   r    r!   r"   r#   rñ  r$   Úguardsr%   r&   r‰   r'   rR   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   rí  r5   r6   r7   rÒ   r9   Úlistsr:   r;   Úscript_objectr<   Úuser_definedr=   Únumpyr  ÚModuleNotFoundErrorÚtorch._dynamo.codegenr>   Útorch._dynamo.output_graphr?   Útorch._dynamo.symbolic_convertr@   Ú	functionsrA   ru  rC   Ú	getLoggerrW   rŠ  ÚgtÚltÚgeÚlerÁ  ÚneÚis_Úis_notÚsupported_tensor_comparison_opsÚsupported_const_comparison_opsÚsupported_comparison_opsr  Úfromkeysr´  Ú%supported_tensor_comparison_op_valuesÚ$supported_const_comparison_op_valuesr÷  rN   rZ   re   Ú
TensorBaserÜ  rU   rS  ra   rV  rk   ru   rÔ   r  rÕ  rß  rõ  r  rH  r˜   r[   rY   ú<module>r1     s�  ðñó" Û Û Û Û Û ß .Ý "Ý Ý ß 9Ó 9ã å Û Û ß $Ý +Ý AÝ )Ý 6÷õ õ Gç 3Ñ 3Ý :÷÷ ñ õ ;ß 0Ý ÷÷ ÷ ó ÷ JÑ IÝ &ß 5Ý 4Ý 2ðÛñ
 Ý/Ý6ÝHå/Ý<ð €g×Ñ˜Ó!€ð 
�‰Ø	�‰Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�,‰,Ø�o‰oñ	#Ð ð �,‰,Ø�o‰oØ
�+‰+Ø
�+‰+ñ	"Ð ðØ%ðà$ðÐ ð )-¯©Ø#×*Ñ*Ó,ó)Ð %ð (,§}¡}Ø"×)Ñ)Ó+ó(Ð $ð
 &ð ¨Tó ð —8‘8×&Ò&×/Ò/°%·,²,×2GÒ2GÑGÐ ðY˜oð Y°$ó YñK˜eŸlšlð K°sð KÈ#ó Kô*N$�_ô N$ôbH|
�oô |
ô~y˜>ô yôx#
 .ô #
ôLB�~ô Bô*4Ð5ô 4ônD˜_ô DôNE�oõ EøðGe ò Ø	ƒBðús   Ã>J< Ê<KËK