ó
    CC˜jÇ9 ã            	       ó  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJrJrJrJr  SSKJrJr  SSKrSSKJr  SSKrSSKrSS	KJrJr  SS
K J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-  SSK.J/r/  SSK0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?  SSK@JArA  SSKBJCrCJDrD  SSKEJFrFJGrG  SSKHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrS  SSKTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[  SSK\J]r]  SSK^J_r_J`r`  SSKaJbrb  SSKcJdrd   SSKerf\(       a  SSKhJiri  SSKjJkrk  SS KlJmrm  SS!KnJoro  SS"KpJqrq  \Rä                  " \s5      rt\Rê                  \Rì                  \Rî                  \Rð                  \Rò                  \Rô                  \Rö                  \Rø                  S#.r}\Rö                  \Rø                  \Rò                  \Rô                  S$.r~0 \}E\~Er\€GR                  \}GR                  5       5      rƒ\€GR                  \~GR                  5       5      r„S%\…S&\†4S' jr‡\GR                  GR                  GR                  \GR                  GR                  -  rŒ\GR                  GR                  GR                  \GR                  GR                  GR                   \GR                  GR                  GR"                  \GR                  GR                  GR$                  S(.r“S)\[S&\†4S* jr”S?S%\GR                  S+\•S&\•4S, jjr– " S- S.\5      r— " S/ S0\[5      r˜ " S1 S2\[5      r™ " S3 S4\˜5      rš " S5 S6\˜5      r› " S7 S8\˜5      rœ " S9 S:\d5      r� " S; S<\[5      rž " S= S>\[5      rŸg! \g a    Srf GNif = f)@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)ÚNotRequiredÚ	TypedDict)Ú	sym_floatÚsym_int)ÚCustomClassBase)Úcompiled_autograd)Úis_opaque_symbolic_type)Ú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Úraise_type_errorÚraise_value_errorÚTorchRuntimeErrorÚunimplementedÚ$UnknownPropertiesDuringBackwardTraceÚ	UserErrorÚUserErrorType)Úcall_hook_from_backward_state)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚ
TypeSource)Ú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Úset_example_valueÚtensortype_to_dtypeé   )Ú_check_method_arityÚ_derive_method_flagsÚAttributeMutationNewÚGetSetÚMethodÚValueMutationNewÚVariableTracker©ÚConstantVariable)ÚListIteratorVariableÚSizeVariable)ÚCustomClassObjectVariable)ÚUserDefinedClassVariable)Ú	PyCodegen)ÚOutputGraph)ÚInstructionTranslatorBase)ÚUserFunctionVariable©ÚTensorWithTFOverrideVariable)Ú>Ú<z>=z<=ú==ú!=Úisúis not)rP   rQ   rN   rO   ÚvalueÚreturnc                 ó`  • [        [        U 5      =(       a”    [        R                  R                  R                  U 5      (       + =(       a_    [        U S5      =(       aL    [        U R                  [        R                  5      =(       a!    [        U R                  U R                  S 5      5      $ )NÚ__self__)ÚboolÚcallableÚtorchÚ_dynamoÚutilsr3   ÚhasattrÚ
isinstancerU   ÚTensorÚgetattrÚ__name__©rR   s    Ú¬C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/variables/tensor.pyÚis_bound_tensor_methodrb   �   sy   € ÜÜ�‹÷ 	:Ü—‘×#Ñ#×;Ñ;¸EÓBÔB÷	:ä�E˜:Ó&÷	:ô �u—~‘~¤u§|¡|Ó4÷	:ô �E—N‘N E§N¡N°DÓ9óð ó    )ÚTÚmTÚHÚmHÚvtc                 ó¦   • U R                  5       (       a  g[        U [        5      =(       a%    [        U R                  [        [
        [        45      $ )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_liker\   rA   rR   ÚfloatÚintrV   )rh   s    ra   Ú_is_sym_arith_operandrm   §   s>   € ð 
×Ñ×ÑØô �bÔ*Ó+×X´
¸2¿8¹8ÄeÌSÔRVÐEWÓ0XÐXrc   Ú	type_namec                 ó  • [         R                  R                  R                  U 5      (       a�  [         R                  R                  R	                  U 5      n[         R                  R                  R                  U 5      n[         R                  R                  R                  U 5      nSU SU S[        U5       S3$ [         R                  R                  R                  U 5      (       ad  [         R                  R                  R	                  U 5      n[         R                  R                  R                  U 5      nSU S[        U5       S3$ [         R                  R                  R                  U 5      (       ad  [         R                  R                  R	                  U 5      n[         R                  R                  R                  U 5      nSU S[        U5       S3$ U S[        U R                  5       SU R                   S3$ )	NzBatchedTensor(lvl=z, bdim=z, value=Ú)zGradTrackingTensor(lvl=zFunctionalTensor(lvl=z(shape=z, dtype=)rX   Ú_CÚ
_functorchÚis_batchedtensorÚmaybe_get_levelÚmaybe_get_bdimÚget_unwrappedÚ_tensor_debug_reprÚis_gradtrackingtensorÚis_functionaltensorÚtupleÚshapeÚdtype)rR   rn   ÚlevelÚbdimÚ	unwrappeds        ra   rw   rw   ²   s–  € Ü‡x�x×Ñ×+Ñ+¨E×2Ñ2Ü—‘×#Ñ#×3Ñ3°EÓ:ˆÜ�x‰x×"Ñ"×1Ñ1°%Ó8ˆÜ—H‘H×'Ñ'×5Ñ5°eÓ<ˆ	ðØ�'˜   hÔ/AÀ)Ó/LÐ.MØðð	
ô
 ‡x�x×Ñ×0Ñ0°×7Ñ7Ü—‘×#Ñ#×3Ñ3°EÓ:ˆÜ—H‘H×'Ñ'×5Ñ5°eÓ<ˆ	Ø(¨¨¨xÔ8JÈ9Ó8UÐ7VÐVWÐXÐXÜ‡x�x×Ñ×.Ñ.¨u×5Ñ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ÐJrc   c                   ó"  • \ rS rSr% Sr\R                  \S'   \R                  \S'   \R                  \S'   \
\S'   \\S'   \\S'   \\S	'   \\S
'   \\S'   \\S'   \\\S4      \S'   \\\S4      \S'   \\\R                   S4   S-     \S'   Srg)ÚTensorSpecializedPropséÇ   zÔStatic tensor metadata produced by TensorVariable.specialize; the keys
map 1:1 to the corresponding TensorVariable.__init__ kwargs. The size,
stride and contiguity keys are only populated for fully static shapes.r|   ÚdeviceÚlayoutÚndimÚrequires_gradÚ	is_nestedÚis_quantizedÚ	is_sparseÚ
class_typeÚhas_grad_fn.Ú_sizeÚstrideNÚis_contiguous© )r_   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rX   r|   Ú__annotations__rƒ   r„   rl   rV   Útyper   rz   r   Úmemory_formatÚ__static_attributes__r�   rc   ra   r�   r�   Ç   s•   ‡ ñNð �;‰;ÓØ�L‰LÓØ�L‰LÓØ
ƒIØÓØƒOØÓØƒOØÓØÓØ�u˜S #˜X‘Ñ'Ó'Ø˜˜c 3˜h™Ñ(Ó(Ø˜u U×%8Ñ%8¸#Ð%=Ñ>ÀÑEÑFÖFrc   r�   c            #       óÔ  ^ • \ rS rSrSrSSSSSSS	S
SSSSSSS1\R                  krS\4S jrS\	R                  4S jrSSSSS.S\	R                  R                  S\	R                  S\	R                  S\	R                   S\S
\S\S\S\S\S\S\\S4   S-  S	\\S4   S-  S\\	R,                  S4   S-  S\S-  S\SS4"U 4S jjjr SñSSS\S-  SS4S jjrS\S-  4S  jrSSS!\S-  SS4S" jrS\4S# jrSSS\4S$ jrS\	R                  R                  4S% jrS\4S& jrS\4S' jrSSS\4S( jr SSS)\S*\S\4S+ jr!\"S,\	R                  S\#4S- j5       r$SSS.\S\4S/ jr%SSS.\S\4S0 jr&SSS\4S1 jr'SSS\4S2 jr(SSS\4S3 jr)SSS\4S4 jr*SSS\4S5 jr+SSS\S-  4S6 jr,SSS\S-  4S7 jr-SSS\S-  4S8 jr.SSS\/S-  4S9 jr0SSS\4S: jr1SSS\/S-  4S; jr2SSS\/S-  4S< jr3SSS\/S-  4S= jr4SSS\/S-  4S> jr5SSS\64S? jr7SSS\S-  4S@ jr8SSS\4SA jr9SSS\/S-  4SB jr:SSS\4SC jr;SSS.\S\/4SD jr<SSS.\S\4SE jr= SñSSSF\>\   S-  S\?\   4SG jjr@SSSHSISJ\SK\?\   SL\A\\4   S\4SM jrBS\4SN jrC\DS\\S4   4SO j5       rES\?\   4SP jrFS\?\   4SQ jrGSSSR\S\4SS jrHSSS.\ST\?\   SSUS\4
SV jrISSST\S\S\S-  4SW jrJSSST\S\S\S-  4SX jrK SñS.\SY\S-  S\S-  4SZ jjrLSSS\S-  4S[ jrM\MrNSSS\S-  4S\ jrO\OrPSSS\/S-  4S] jrQSSS\/S-  4S^ jrRSSS\/S-  4S_ jrS SñSSS`\S-  S\/S-  4Sa jjrT  SòSSS\S-  Sc\S\S\S-  4
Sd jjrUSSSe\SSf4Sg jrVSSS\S-  4Sh jrWSSS\4Si jrXSbSj.SSSk\\-  SSl4Sm jjrYSSS\4Sn jrZ SóSo\[\   Sp\S\?\   S-  4Sq jjr\    SôSSSr\S-  Ss\S-  St\S-  Su\S-  S\S-  4Sv jjr]SSST\S\SSw4Sx jr^SSST\S\SSw4Sy jr_SSSz\S\4S{ jr`SSST\S\SS4S| jraSSS\4S} jrbSSS\4S~ jrcSSS\4S jrdSSS\4S€ jreSSS\4S� jrfSSS\4S‚ jrgSSS\4Sƒ jrhSSS\4S„ jriSSS\4S… jrjSSS\4S† jrkSSS\4S‡ jrlSSS\4Sˆ jrmSSS\4S‰ jrnSSST\S\S\4SŠ jro\"\pRâ                  SõS‹ j5       5       rrSSS\4SŒ jrsSSS\4S� jrtSSS\4SŽ jruSSS\4S� jrvSS�.SSS‘\S’\S,\S-  S\S-  4
S“ jjrwSSSR\S,\S-  S\4S” jrxSSSR\S,\S\4S• jrySSST\S\S\64S– jrzSSST\S\S\64S— jr{SSST\S\S\64S˜ jr|SSST\S\S\64S™ jr}SSST\S\SS4Sš jr~SS›.SSS)\Sœ\S-  S\S-  4S� jjrSS�.SSS‘S S’S S,\S-  S\S-  4
Sž jjr€SSSŸ\S\4S  jr�SSS¡\S\4S¢ jr‚SSST\S\S\4S£ jrƒSSST\S\S\4S¤ jr„SSS.\S¥\S\4S¦ jr… SöSSS
\\-  S\4S§ jjr†S÷S¨ jr‡SSS\64S© jrˆSSST\S\S\S-  4Sª jr‰S«S SSST\S\S\S-  4
S¬ jrŠ    SøS­ jr‹SSST\S\S\4S® jrŒSSST\S\S\64S¯ jr�SSST\S\S\S-  4S° jrŽ0 S\�" \J5      _S	\�" \K5      _S±\�" \M5      _S²\�" \N5      _SY\�" \O5      _S³\�" \P5      _S´\�" \Q5      _Sµ\�" \R5      _S¶\�" \S5      _S\�" \T5      _S·\�" \U5      _S¸\�" \V5      _S¹\�" \W5      _Sº\�" \X5      _S»\�" \Y5      _S¼\�" \Z5      _S½\�" \]5      _0 S¾\�" \^5      _S¿\�" \_5      _SÀ\�" \`5      _SŸ\�" \a5      _SÁ\�" \d5      _SÂ\�" \f5      _SÃ\�" \h5      _SÄ\�" \j5      _SÅ\�" \l5      _SÆ\�" \n5      _SÇ\�" \o5      _SÈ\�" \s5      _SÉ\�" \v5      _SÊ\�" \y5      _SË\�" \‚5      _SÌ\�" \w5      _SÍ\�" \€5      _E0 SÎ\�" \5      _SÏ\�" \z5      _SÐ\�" \{5      _SÑ\�" \|5      _SÒ\�" \}5      _SÓ\�" \~5      _SÔ\�" \ƒ5      _SÕ\�" \„5      _SÖ\�" \†5      _S×\�" \‡5      _SØ\�" \ˆ5      _SÙ\�" \‰5      _SÚ\�" \Š5      _SÛ\�" \‹5      _SÜ\�" \Œ5      _SÝ\�" \�5      _SÞ\�" \Ž5      _Er�S.\SS4Sß jr‘ SóSSS)\Sà\S\4Sá jjr’ SóSSS)\Sà\S\4Sâ jjr“ SóSSS)\Sà\S\4Sã jjr” SóSSS)\Sà\S\4Sä jjr• SóSSS)\Sà\S\4Så jjr– SóSSS)\Sà\S\4Sæ jjr— SóSSS)\Sà\S\4Sç jjr˜ SóSSS)\Sà\S\4Sè jjr™ SóSSS)\Sà\S\4Sé jjrš SóSSS)\Sà\S\4Sê jjr› SóSSS)\Sà\S\4Së jjrœSSS\\\4   4Sì jr� SóSSS)\Sà\S\4Sí jjrž SóSSS)\Sî\S-  Sà\S\4
Sï jjrŸSðr U =r¡$ )ùÚTensorVariableéÛ   z=A torch.Tensor input or an intermediate value in the FX graphÚproxyr|   rƒ   r„   r…   Úsizer�   r†   rˆ   rŽ   r‡   r‰   rŠ   Úspecialized_valueÚ_is_name_setrS   c                 ó  • [        U R                  5      UR                  ;   a0  SUR                  [        U R                  5         R                   S3$ U R                  (       a  U R                  R                  U5      $ [        SU  S35      e)Nz__graph_out[Ú]zPython codegen for z failed with unknown source.)Úidr›   Úgraph_outputsÚindexÚsourceÚreconstruct_pycodeÚRuntimeError©ÚselfÚcodegens     ra   r¥   Ú!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ÐXrc   c                 ój   • [        U R                  R                  U R                  R                  5      $ )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.
)r1   r›   ÚnodeÚtracer©r¨   s    ra   r1   ÚTensorVariable.get_real_valueù   s#   € ô ˜dŸj™jŸo™o¨t¯z©z×/@Ñ/@ÓAÐArc   N)rŒ   r�   rŽ   rž   r‹   rŒ   .Úkwargsc                ó&  >• [         TU ]  " S0 UD6  Xl        X l        X0l        X@l        XPl        XÀl        XÐl        X`l	        X€l
        Xàl        Xpl        X�l        X l        X°l        Uc#  U R                  R                   R"                  S:H  nXðl        g )NÚplaceholderr�   )ÚsuperÚ__init__r›   r|   rƒ   r„   r…   rŒ   r�   r†   rˆ   rŽ   r‡   r‰   rŠ   r‹   r¬   Úoprž   )r¨   r›   r|   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   rž   r°   Ú	__class__s                    €ra   r´   ÚTensorVariable.__init__  sƒ   ø€ ô( 	‰ÒÑ"˜6Ò"ØŒ
ØŒ
ØŒØŒØŒ	ØŒ
ØŒØ*ÔØ(ÔØ*ÔØ"ŒØ"ŒØ$ŒØ&ÔØÑàŸ:™:Ÿ?™?×-Ñ-°Ñ>ˆLØ".Õrc   ÚtxrH   Ú
target_clsc                 ó.  • SSK JnJn  Uc  [        U 5      nU R                  R
                  R                  R                  S5      nU" X!XT" U5      5      nS H  nXv;  d  M
  [        XS 5        M     UR                  5        H  u  px[        XU5        M     g )Nr8   )Úget_specialized_propsÚinfer_subclass_typeÚexample_value)rŒ   r�   rŽ   )
Úbuilderr»   r¼   r•   r›   r¬   ÚmetaÚgetÚsetattrÚitems)	r¨   r¸   r¹   r»   r¼   r½   Úspecialized_propsÚkÚvs	            ra   Úsynchronize_attributesÚ%TensorVariable.synchronize_attributes*  sŠ   € ÷ 	HàÑÜ˜d›ˆJàŸ
™
Ÿ™×,Ñ,×0Ñ0°ÓAˆÙ1Ø˜MÐ+>¸}Ó+Mó
Ðó 6ˆAØÕ)Ü˜ Ö&ñ 6ð &×+Ñ+Ö-‰DˆAÜ�D˜QÖò .rc   c                 ó‚   • U R                   R                  R                  R                  S5      nUb  UR                  $ S$ )zFGet the current version of self's fake tensor, or None if unavailable.r½   N)r›   r¬   r¿   rÀ   Ú_version)r¨   Ú	self_fakes     ra   Ú_get_fake_versionÚ TensorVariable._get_fake_version?  s6   € à—J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=ˆ	Ø%.Ñ%:ˆy×!Ñ!ÐDÀÐDrc   Úversion_beforec                 ó˜   • U R                  5       nUb7  Ub3  X2:”  a-  U R                  U5        UR                  R                  U5        gggg)zs
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Í   Úversion_afters       ra   Ú_sync_if_inplace_mutationÚ(TensorVariable._sync_if_inplace_mutationD  sS   € ð ×.Ñ.Ó0ˆàÑ&ØÑ)ØÓ.à×'Ñ'¨Ô+Ø�I‰I×<Ñ<¸RÕ@ð /ð *ð 'rc   c                 óx   • [        U R                  R                  R                  S   U R	                  5       5      $ ©Nr½   )rw   r›   r¬   r¿   Úpython_type_namer®   s    ra   Ú
debug_reprÚTensorVariable.debug_reprW  s0   € Ü!Ø�J‰J�O‰O× Ñ  Ñ1°4×3HÑ3HÓ3Jó
ð 	
rc   c                 ó^   • [        SSU R                  5        3S/ [        R                  QS9  g )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     ra   Útp_repr_implÚTensorVariable.tp_repr_impl\  s5   € ÜØ&Ø  ×!6Ñ!6Ó!8Ð 9Ð:ð,à2Ô%×1Ñ1Ð2ó	
rc   c                 ó   • U R                   $ ©N©r›   r®   s    ra   Úas_proxyÚTensorVariable.as_proxye  ó   € Ø�z‰zÐrc   c                 ó   • U R                   $ rä   )rŠ   r®   s    ra   Úpython_typeÚTensorVariable.python_typeh  s   € Ø�‰Ðrc   c                 ó   • g©NTr�   r®   s    ra   Ú	is_tensorÚTensorVariable.is_tensork  ó   € Ørc   c                 óv  • SSK Jn  U R                  US/ 0 5      n[        U[        5      (       a+  [        UR
                  [        R                  5      (       a  U$ [        X25      (       a*  [        R                  " U[        UR                  5      5      $ [        R                  XR                  5       S:g  5      $ )Nr8   r@   Úitemr   )ÚconstantrA   Úcall_methodr\   ÚSymNodeVariableÚsym_numrX   ÚSymBoolr?   ÚbuildrV   rR   Úcreateræ   )r¨   r¸   rA   rò   s       ra   Únb_bool_implÚTensorVariable.nb_bool_impln  s‹   € å.à×Ñ  F¨B°Ó3ˆÜ�dœO×,Ñ,´Ø�L‰Lœ%Ÿ-™-÷2
ñ 2
ð ˆKÜ�d×-Ñ-Ü"×(Ò(¨¬T°$·*±*Ó-=Ó>Ð>Ü×%Ñ% b¯-©-«/¸QÑ*>Ó?Ð?rc   Úotherrµ   c                 ó.  • SSK Jn  [        U[        [        [
        45      (       d  [        R                  " [        5      $ [        U   nUR                  R                  SXPR                  5       UR                  5       40 5      nU" [        U 5      X5      $ )zETensor tp_richcompare: element-wise comparison producing an FX proxy.r8   ©Úwrap_fx_proxy_clsÚcall_function)r¾   rÿ   r\   rõ   rA   r™   rù   ÚNotImplementedr-   rÏ   Úcreate_proxyræ   r•   )r¨   r¸   rü   rµ   rÿ   Úop_fnr›   s          ra   Útp_richcompare_implÚ"TensorVariable.tp_richcompare_impl{  sw   € õ 	/ä˜%¤/Ô3CÄ^Ð!T×UÑUÜ#×*Ò*¬>Ó:Ð:Ü& rÑ*ˆØ—	‘	×&Ñ&Ø˜U§]¡]£_°e·n±nÓ6FÐ$GÈó
ˆñ !¤ d£¨RÓ7Ð7rc   rR   c                 ó  ^ •  T R                   S LnT R                  T R                  T R                  [        T R                  5      T R                  T R                  T R                  T R                  [        T 5      US.
n[        T 5      (       a5  [        T 5      (       d%  [        S T R                  5        5       5      US'   U$ [        T 5      (       d¤  [        S T R                  5        5       5      US'   [        T R!                  5       5      US'   ["        R$                  R&                  R)                  T 5      (       a  S US'   U$ [        U 4S j["        R*                  R,                   5       5      US'   U$ ! [         a    Sn GNyf = f)	NF)
r|   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   c              3   ó\   #   • U  H"  n[        U5      (       a  [        U5      OUv •  M$     g 7frä   ©r   rl   ©Ú.0Úss     ra   Ú	<genexpr>Ú,TensorVariable.specialize.<locals>.<genexpr>£  s$   é € ð #Ú9E°Aœ+ aŸ.™.”�A”¨aÔ/ºùó   ‚*,rŒ   c              3   ó\   #   • U  H"  n[        U5      (       a  [        U5      OUv •  M$     g 7frä   r  r	  s     ra   r  r  ­  s*   é € ð #ò &�Aô & aŸ.™.”�A”¨aÔ/Ú%ùr  r�   rŽ   c              3   óT   >#   • U  H  nTR                  US 9(       d  M  Uv •  M     g7f)©r–   N)rŽ   )r
  ÚxrR   s     €ra   r  r  ¹  s+   øé € ð /â@˜Ø×*Ñ*¸Ð*Ô;÷ ‘AÚ@ùs   ƒ(Ÿ	()Úgrad_fnÚ	Exceptionr|   rƒ   r„   rl   r…   r†   r‡   rˆ   r‰   r•   r   r   rz   rœ   r�   rX   rq   rr   rs   Ú_prims_commonÚ_memory_formats)rR   r‹   Úpropss   `  ra   Ú
specializeÚTensorVariable.specializeŒ  si  ø€ ð	 ØŸ-™-¨tÐ3ˆKð —[‘[Ø—l‘lØ—l‘lÜ˜Ÿ
™
“OØ"×0Ñ0ØŸ™Ø!×.Ñ.ØŸ™Ü˜u›+Ø&ñ)
ˆô ˜×ÑÔ(8¸×(?Ñ(?Ü"ñ #Ø9>¿¹¼ó#ó ˆE�'‰Nð6 ˆô1 " %×(Ñ(ô #ñ #ð Ÿ™œó	#ó ˆE�'‰Nô $ E§L¡L£NÓ3ˆE�(‰OÜ�x‰x×"Ñ"×3Ñ3°E×:Ñ:ð *.��oÑ&ð ˆô */ô /ä"×0Ñ0×@Ò@ó/ó *��oÑ&ð
 ˆøô] ó 	 ð  ‹Kð	 ús   ƒE; Å;FÆ
FÚnamec           
      ó®  • U R                   R                  R                  S   nU R                  (       Gdp  [	        U5      (       Ga_  UR                  5       u  pE[        U R                  5       U5      n[        X25      nX$;   aI  [        U[        R                  [        45      (       d  [        S[        U5       35      eSSKJn  U" XUS9$ [!        [        U5      5      (       aS  [        R"                  R$                  R'                  UR(                  R*                  U5      n	[,        R.                  " XiUS9$ [        U[        R"                  R$                  R0                  5      (       a  [,        R.                  " XgUS9$ [3        U5      (       d  [4        R6                  " X5      $ U R                  (       a  U R                  R9                  5       (       d  [:        eUR(                  R<                  UR(                  R>                  S.n
 [A        U R                  RB                  U
5      nUc  [:        e[G        U5      (       a  [:        e[I        U5      (       a  [:        e [        X²5      n[Q        U R                  U5      n[S        W5      (       a  SSK*J+n  U" XU[        U5      S9$ [Y        U R                  R[                  [\        R^                  " [`        Rb                  US95      5        [4        R6                  " XU5      $ ! [D         a  n[:        UeS nAff = f! [J         a-    [M        [J        US[        U5      RN                   S	U S3/S
9   Nèf = f)Nr½   z(Expected Tensor or CustomClassBase, got r8   ©Úwrap_fx_proxy)r¸   r›   r½   )r¸   )ÚLÚGÚ'z' object has no attribute '©Úargs©ÚGetAttrVariable)r¤   Úpy_type©Úattr)2r›   r¬   r¿   r¤   r   Ú__tensor_flatten__r^   ræ   r\   rX   r]   r   ÚAssertionErrorr•   r¾   r  r   Ú_libraryÚfake_class_registryÚmaybe_to_fake_objrÏ   Ú	fake_moderD   rù   ÚFakeScriptObjectrW   r?   rø   Úsubguards_allowedÚNotImplementedErrorÚlocal_scopeÚglobal_scopeÚevalr  r  r3   r/   ÚAttributeErrorr    r_   r+   rb   Úmiscr$  r*   Ú
make_guardÚ	functoolsÚpartialr)   ÚHASATTR)r¨   r¸   r  Úfake_valÚattrsÚ_ctxr›   r½   r  Úfake_script_objÚscopeÚ_input_associated_real_valueÚexcÚ
real_valueÚattr_sourcer$  s                   ra   Údynamic_getattrÚTensorVariable.dynamic_getattrÀ  sÎ  € ð —:‘:—?‘?×'Ñ'¨Ñ8ˆð �{�{ˆ{Ô<¸X×FÒFØ"×5Ñ5Ó7‰KˆEÜ˜DŸM™M›O¨TÓ2ˆEÜ# HÓ3ˆMØ‹}ä! -´%·,±,ÄÐ1P×QÑQÜ(ØBÄ4ÈÓCVÐBWÐXóð õ 3á$¨À}ÑUÐUÜ(¬¨mÓ)<×=Ñ=Ü"'§.¡.×"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Ð(ð (Ñ/Ü%Ð%ä"Ð#?×@Ñ@Ü%Ð%äÐ:×;Ñ;Ü%Ð%ð		Ü Ð!=ÓDˆJô ! §¡¨dÓ3ˆô " *×-Ñ-å-á"Ø ;¼¸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*   È
 L É L Ì
LÌLÌLÌ4MÍMc                 óN   • SSK Jn  U" [        U   5      R                  X/0 5      $ )aT  Trace a view attribute as a call to the aten op behind the C++ getter.

Going through the op keeps the node on the current tracer. Reading the
attribute off the base proxy instead puts the node in whichever graph
owns the base, so inside a higher order op it lands in the parent graph
and then has to be lifted back in as a subgraph input.
r8   )ÚTorchInGraphFunctionVariable)rX   rF  Ú_VIEW_ATTR_TO_ATEN_OPr   )r¨   r¸   r  rF  s       ra   Ú
_view_attrÚTensorVariable._view_attr  s,   € õ 	8á+Ô,AÀ$Ñ,GÓH×VÑVØ�˜ó
ð 	
rc   c                 ó&   • U R                  US5      $ ©Nrd   ©rH  rà   s     ra   Úmethod_attr_TÚTensorVariable.method_attr_T+  ó   € Ø�‰˜r 3Ó'Ð'rc   c                 ó&   • U R                  US5      $ )Nre   rL  rà   s     ra   Úmethod_attr_mTÚTensorVariable.method_attr_mT.  ó   € Ø�‰˜r 4Ó(Ð(rc   c                 ó&   • U R                  US5      $ )Nrf   rL  rà   s     ra   Úmethod_attr_HÚTensorVariable.method_attr_H1  rO  rc   c                 ó&   • U R                  US5      $ )Nrg   rL  rà   s     ra   Úmethod_attr_mHÚTensorVariable.method_attr_mH4  rS  rc   c                 ó„   • U R                   b   [        R                  " XR                   5      $ U R                  US/ 0 5      $ )NÚdim)r…   r?   rø   rô   rà   s     ra   Úmethod_attr_ndimÚTensorVariable.method_attr_ndim7  s8   € Ø�9‰9Ñ Ü"×(Ò(¨¯Y©YÓ7Ð7à×#Ñ# B¨¨r°2Ó6Ð6rc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )r|   r?   rø   rà   s     ra   Úmethod_attr_dtypeÚ TensorVariable.method_attr_dtype=  s&   € ð �:‰:Ñ!Ü"×(Ò(¨¯Z©ZÓ8Ð8Ørc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )rƒ   r?   rø   rà   s     ra   Úmethod_attr_deviceÚ!TensorVariable.method_attr_deviceD  ó&   € ð �;‰;Ñ"Ü"×(Ò(¨¯[©[Ó9Ð9Ørc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )r„   r?   rø   rà   s     ra   Úmethod_attr_layoutÚ!TensorVariable.method_attr_layoutK  rd  rc   c                 óx   • U R                   b-  [        R                  " XR                   R                  S:H  5      $ g )NÚcuda)rƒ   r?   rø   r•   rà   s     ra   Úmethod_attr_is_cudaÚ"TensorVariable.method_attr_is_cudaR  s1   € ð �;‰;Ñ"Ü"×(Ò(¨¯[©[×-=Ñ-=ÀÑ-GÓHÐHØrc   c                 óÔ   • U R                  5       (       a;  U R                   Vs/ s H  n[        R                  " X5      PM     nn[	        U5      $ U R                  US/ 0 5      $ s  snf ©Nrœ   )Ú
valid_sizerœ   r?   rø   rC   rô   )r¨   r¸   r  Úsizess       ra   Úmethod_attr_shapeÚ TensorVariable.method_attr_shapeY  sc   € Ø�?‰?×Ñà6:·i²ió,Ú6?°”×%Ò% bÖ,±ið ð ,ô   Ó&Ð&à×#Ñ# B¨°°BÓ7Ð7ùò,s   ¤ A%c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )r†   r?   rø   rà   s     ra   Úmethod_attr_requires_gradÚ(TensorVariable.method_attr_requires_gradb  s*   € ð ×ÑÑ)Ü"×(Ò(¨×-?Ñ-?Ó@Ð@Ørc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )rˆ   r?   rø   rà   s     ra   Úmethod_attr_is_quantizedÚ'TensorVariable.method_attr_is_quantizedi  s*   € ð ×ÑÑ(Ü"×(Ò(¨×->Ñ->Ó?Ð?Ørc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )r‰   r?   rø   rà   s     ra   Úmethod_attr_is_sparseÚ$TensorVariable.method_attr_is_sparsep  ó&   € ð �>‰>Ñ%Ü"×(Ò(¨¯^©^Ó<Ð<Ørc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )r‡   r?   rø   rà   s     ra   Úmethod_attr_is_nestedÚ$TensorVariable.method_attr_is_nestedw  r{  rc   c                 ó$   • [        SSU  S3S/ S9  g )Nz'Tensor.retain_grad() with AOTDispatcherútp_getattro_impl z retain_gradz8`Tensor.retain_grad()` does not work with AOTDispatcher.rÚ   ©r$   rà   s     ra   Úmethod_attr_retain_gradÚ&TensorVariable.method_attr_retain_grad~  s   € ÜØ=Ø'¨ v¨\Ð:ØRØó		
rc   c                 ó2  • UR                   R                  R                  U S5      (       a&  UR                   R                  R                  U S5      $ [	        U R
                  [        5      (       a'  U R                  (       d  [        R                  " S 5      $ g )NÚgrad)
rÏ   Úside_effectsÚhas_pending_mutation_of_attrÚ	load_attrr\   Úmutation_typer;   r‹   rA   rù   rà   s     ra   Úmethod_attr_gradÚTensorVariable.method_attr_grad†  so   € ð �9‰9×!Ñ!×>Ñ>¸tÀV×LÑLØ—9‘9×)Ñ)×3Ñ3°D¸&ÓAÐAä�t×)Ñ)Ô+?×@Ñ@Ø×$×$ä#×*Ò*¨4Ó0Ð0àrc   c                 ó”   • [         R                  " [        R                  R                  R
                  5      R                  X/0 5      $ rä   )r   rF  rX   rq   Ú	_autogradÚ_get_data_attrr   rà   s     ra   Úmethod_attr_dataÚTensorVariable.method_attr_data“  s6   € Ü×5Ò5Ü�H‰H×Ñ×-Ñ-ó
ç
‰-˜˜F BÓ
'ð	(rc   c                 ó„   • U R                   (       a  [        SSU  S3S/ S9  g [        R                  R	                  S 5      $ )NzTensor with grad_fn()r€  z grad_fnz@Dynamo does not support tracing tensors with a grad_fn directly.rÚ   )r‹   r$   r   rA   rù   rà   s     ra   Úmethod_attr_grad_fnÚ"TensorVariable.method_attr_grad_fn˜  sC   € ð ××ÜØ/Ø+¨D¨6°Ð:Ø^Øó	ô ×-Ñ-×4Ñ4°TÓ:Ð:rc   c                 ó\   • SSK Jn  [        R                  " U5      R	                  X/0 5      $ )Nr   )Ú_tensor_version)Útensor_version_opr•  r   rF  r   )r¨   r¸   r•  s      ra   Úmethod_attr__versionÚ#TensorVariable.method_attr__version¥  s*   € Ý7ä×5Ò5°oÓF×TÑTØ�˜ó
ð 	
rc   c           	      óú  • SSK Jn  U[        ;   a  [        R                  " S5      $  [
        R                  " U[        5      R                  X[
        R                  " X5      /0 5      n[        XC5      (       + nU R                  (       aE  [        U R                  R                  [        R                   " ["        R$                  US95      5        [
        R                  " X5      $ ! [        [        4 a    Sn N€f = f)Nr8   r#  TFr&  )Ú r$  Úall_tensor_attrsrA   rù   r?   rø   r^   r   r\   r4  r   r¤   r*   r6  r7  r8  r)   r9  )r¨   r¸   r  r$  ÚvarÚret_vals         ra   Úcall_obj_hasattrÚTensorVariable.call_obj_hasattr¬  sÑ   € õ 	&ð Ô#Ó#Ü#×*Ò*¨4Ó0Ð0ð	Ü!×'Ò'¨¬GÓ4×BÑBØœ?×0Ò0°Ó:Ð;¸RóˆCô
 % SÓ:Ô:ˆGð �;�;ÜØ—‘×&Ñ&Ü×%Ò%¤l×&:Ñ&:ÀÑFóôô ×$Ò$ RÓ1Ð1øô Ô 6Ð7ó 	ØŠGð	ús   ¨AC% Ã%C:Ã9C:c                 ó®  ^ ^^• T R                  5       R                  R                  S   n[        U[        R
                  5      (       aR  [        U5      (       aB  TR                  (       a  [        R                  (       d  [        SSS/ [        R                  QS9  T R                  T5      (       aS  TT R                  5       ;   a  [        SST  ST 3S	T S
3ST S3/S9  O#TT R                  5       ;   a  [!        ST S35      eTS:X  aN  T R"                  =(       a    [%        T R"                  5      n[&        R(                  " TT R+                  5       U5      $ [-        T ST 3S 5      nUb  U" T5      OS nUb˜  T R"                  (       a‡  T R"                  R/                  5       (       ah  T[0        ;  a^  TS;  a  UR3                  5       (       dC  [5        T R7                  [8        R:                  5      5        [=        T R"                  T5      Ul        T R"                  bö  [?        [        R@                  RB                  T5      (       aÍ  [-        [        R@                  RB                  T5      n[?        US5      (       a˜  [?        XwRE                  5       S   5      (       aw  [        RF                  RH                  [-        XwRE                  5       S   5      RJ                  ;   a5  [L        RN                  RQ                  [=        T R"                  T5      SSS/S9$ Uc   TS:w  a  S[&        S -  4UU U4S jjnU" 5       nUc  T RS                  TT5      nUc  [T        eU$ )Nr½   zAttempted to wrap sparse Tensorrš  z-torch.compile does not support sparse TensorsrÚ   z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`.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 supportedzûAvoid mutating a graph input's tensor metadata with in-place view ops. If the mutation is only needed inside the compiled region, replace the in-place call with an out-of-place view, for example `x = x.transpose(1, 2)` instead of `x.transpose_(1, 2)`.zgIf you need to mutate the input tensor's metadata, move the in-place view call outside `torch.compile`.)r¤   ÚmsgrÞ   r…  rS   c                  óV  >• SSK Jn   [        R                  TS 5      nUc  g [	        U5      [
        R                  La  g TR                  R                  R                  S[        TR                  5       T40 5      nTR                  b  U " TU[        TR                  T5      S9$ U " TUS9$ )Nr8   r  r   )r¸   r›   r¤   ©r¸   r›   )r¾   r  r›  rÀ   r•   ÚtypesÚGetSetDescriptorTyperÏ   Úcurrent_tracerr  r^   ræ   r¤   r+   )r  Ústatic_attrr›   r  r¨   r¸   s      €€€ra   Útry_generic_attr_handlingÚBTensorVariable.tp_getattro_impl.<locals>.try_generic_attr_handling%  s£   ø€ Ý2ä.×2Ñ2°4¸Ó>�ØÑ&Øô ˜Ó$¬E×,FÑ,FÒFØð Ÿ	™	×0Ñ0×=Ñ=Ø#¤W¨t¯}©}«ÀÐ.EÀró�ð —;‘;Ñ*Ù(Ø U´:¸d¿k¹kÈ4Ó3Pñð ñ )¨B°eÑ<Ð<rc   )+ræ   r¬   r¿   r\   rX   r]   r   Úexportr   Úcapture_sparse_computer$   r   ÚSPARSE_TENSORÚis_strict_modeÚ_strict_mode_banned_opsÚ#_strict_mode_conditional_banned_opsr%   r¤   r,   r?   rø   rê   r^   r/  rG  Úis_python_constantr*   r6  r)   Ú
TYPE_MATCHr+   r[   ÚopsÚatenr£  ÚTagÚinplace_viewÚtagsr   r5  ÚDelayGraphBreakVariablerC  r0  )	r¨   r¸   r  r:  r¤   ÚhandlerÚresultÚfnr«  s	   ```      ra   Útp_getattro_implÚTensorVariable.tp_getattro_implË  sé  ú€ ð —=‘=“?×'Ñ'×,Ñ,¨_Ñ=ˆä�x¤§¡×.Ñ.Ü˜h×'Ñ'Ø—Y—Y¤f×&C×&CäØ9ØØKØ8Ô)×7Ñ7Ð8ò	ð ×Ñ˜r×"Ñ"Ø�t×3Ñ3Ó5Ó5ÜØ3Ø/°¨v°Q°t°fÐ=Ø"6°t°fÐ<^Ð _à" 4 &ð )dð dðó	ð ˜×AÑAÓCÓCÜ:Ø'¨ vð  .Kð  Lóð ð �;Óð —[‘[×<¤Z°·±Ó%<ˆFÜ"×(Ò(¨¨T×-=Ñ-=Ó-?ÀÓHÐHä˜$ ,¨t¨fÐ 5°tÓ<ˆØ 'Ñ 3‘˜”¸ˆð ÑØ——Ø—‘×-Ñ-×/Ñ/ð Ô1Ó1àÐ5Ó5¸&×:SÑ:S×:UÑ:Uô ˜$Ÿ/™/¬,×*AÑ*AÓBÔCÜ& t§{¡{°DÓ9ˆFŒMð �;‰;Ñ"¤w¬u¯y©y¯~©~¸t×'DÑ'DÜœŸ™Ÿ™¨Ó.ˆBä˜˜K×(Ñ(Ü˜B§¡£¨qÑ 1×2Ñ2Ü—I‘I×*Ñ*¬g°b¿,¹,».ÈÑ:KÓ.L×.QÑ.QÓQô !—~‘~×=Ñ=Ü% d§k¡k°4Ó8ØSð0ð+ðð >ð ð ð  ‰>˜d f›nð=¬ÀÑ/E÷ =ñ =ñ< /Ó0ˆFà‰>Ø×)Ñ)¨"¨dÓ3ˆFà‰>Ü%Ð%Øˆrc   Úidxesc           	      ó¼  • SSK Jn  SSKJn  U R	                  5       (       a  [        U R                  5      nOUU R                  US/ 0 5      n[        U[        5      (       d  [        S[        U5       35      e[        UR                  5      nUS:X  a  [        S5      eU R	                  5       (       a  U R                  S   nO¬U R                  US[        R                  " US5      /0 5      n[        U[        5      (       d,  UR!                  5       (       d  [        S[        U5       35      e[        U[        5      (       a  UR#                  UR$                  5      nOUR'                  5       nUc  [)        U5      nO*[        U5      U:w  a  [        S	U S
[        U5       S35      e[        X5      (       ae  U V	s/ s H  n	U" [*        XR-                  5       U	   S9PM!     n
n	U
 Vs/ s H+  nUR.                  " XU R0                  U R2                  5      PM-     sn$ U V	s/ s H$  n	U" [        U 5      XR-                  5       U	   S9PM&     sn	$ s  sn	f s  snf s  sn	f )Nr8   rþ   rJ   rœ   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¸   r›   )r¾   rÿ   Útorch_functionrK   rn  Úlenrœ   rô   r\   rC   r)  r•   rÂ   r?   rø   rõ   r³  Úevaluate_exprrÏ   Úas_python_constantÚranger™   ræ   Úfrom_tensor_varrŠ   r¤   )r¨   r¸   rÀ  rÿ   rK   Úsize_lenÚsize_varÚlengthÚ
dyn_lengthÚiÚ	base_varsrÅ   s               ra   Úunpack_var_sequenceÚ"TensorVariable.unpack_var_sequenceL  s?  € õ 	/Ý@à�?‰?×ÑÜ˜4Ÿ9™9“~‰Hà×'Ñ'¨¨F°B¸Ó;ˆHÜ˜h¬×5Ñ5Ü$Ð'BÄ4ÈÃ>ÐBRÐ%SÓTÐTÜ˜8Ÿ>™>Ó*ˆHà�q‹=Ü Ð!?Ó@Ð@à�?‰?×ÑØ—Y‘Y˜q‘\‰Fà×)Ñ)Ø�Fœ_×2Ò2°2°qÓ9Ð:¸BóˆJô ˜:¤×7Ñ7Ø×0Ñ0×2Ñ2ä$ØGÌÈZÓHXÐGYÐZóð ô ˜*¤o×6Ñ6Ø#×1Ñ1°"·)±)Ó<‘à#×6Ñ6Ó8�à‰=Ü˜&“M‰Eä�5‹z˜VÓ#Ü$Ø/°¨xÐ7MÌcÐRWËjÈ\ÐYcÐdóð ô
 �d×9Ñ9ñ
 ó	ò �Añ "Ü-°"¿M¹M»OÈAÑ<Nôñ ð	 ð ñ #ó	ò #�Að -×<Ò<Ø˜4Ÿ?™?¨D¯K©Köñ #ñ	ð ñ ó
â�ñ ¬¨d«¸Ç-Á-Ã/ÐRSÑBTÔUÙñ
ð 	
ùòùòùò
s   Æ<&IÇ(2IÈ!+IÚtree_map_fnrI   Úmap_fnÚrestÚtree_map_kwargsc                 ó,   • UR                  X/UQ0 5      $ rä   )r   )r¨   r¸   rÑ  rÒ  rÓ  rÔ  s         ra   Úcall_tree_mapÚTensorVariable.call_tree_map�  s   € ð ×#Ñ# B¨°¨°rÓ:Ð:rc   c                 ó   • U R                   S L$ rä   )rŒ   r®   s    ra   rn  ÚTensorVariable.valid_size—  s   € Ø�z‰z Ð%Ð%rc   c                 óJ   • U R                   c  [        S5      eU R                   $ )Nz%accessing None size in TensorVariable)rŒ   r)  r®   s    ra   rœ   ÚTensorVariable.sizeš  s"   € à�:‰:ÑÜ Ð!HÓIÐIØ�z‰zÐrc   c                 óJ   • [         R                  R                  R                  $ rä   )rX   rY   r   Ú)_autograd_backward_strict_mode_banned_opsr®   s    ra   r±  Ú&TensorVariable._strict_mode_banned_ops   s   € Ü�}‰}×#Ñ#×MÑMÐMrc   c                 óJ   • [         R                  R                  R                  $ rä   )rX   rY   r   Ú5_autograd_backward_strict_mode_conditional_banned_opsr®   s    ra   r²  Ú2TensorVariable._strict_mode_conditional_banned_ops£  s   € ä�M‰M× Ñ ×VÑVð	
rc   Úkeyc           	      óú  • SSK JnJn  SSKJnJn  U R                  U5      (       a&  SU R                  5       ;   a  [        SSU  SU 3S/ S	9  0 n[        R                  SS 5      nUb„  U" XU4U5      (       at  U R                  (       a.  U" U[        [        U R                  S
5      S5      5      " U5      n	O*UR                  U[        R                  R                   5      n	U" XX4U5      $ U R#                  X5      $ )Nr8   ©ÚSourcelessBuilderÚVariableBuilder©Úcan_dispatch_torch_functionÚdispatch_torch_functionÚ__getitem__z-Illegal __getitem__ invocation in strict modezmp_subscript_impl r¡  zHDynamo currently does not support __getitem__ invocation in strict mode.rÚ   r¶   )r¾   rå  ræ  rÃ  rè  ré  r°  r±  r$   r›  rÀ   r¤   r+   rù   rX   r]   rê  Úmethod___getitem__)
r¨   r¸   râ  rå  ræ  rè  ré  Úempty_kwargsrª  Úfunc_vars
             ra   Úmp_subscript_implÚ 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¸$¸ÀlÓSÐSà×&Ñ& rÓ/Ð/rc   r"  zdict[str, VariableTracker]c                 ó¾  • SSK JnJn  SSKJnJn  U R                  U5      (       a/  X R                  5       ;   a  [        SSU  SU SU SU 3SU S3/ S	9  US
:X  a  [        SSU  S3SS/S	9  [        R                  US 5      n	U	S Ln
U" U[        U /[        U5      -   5      U5      (       a�  U
(       a‰  U R                  (       a.  U" U[        [        U R                  S5      U5      5      " U	5      nO*UR                  U[!        ["        R$                  U5      5      nU" X[        U /[        U5      -   5      U5      $ U R&                  R                  U5      nUbf  [)        X5      n[+        XX-X45        UR-                  5        VVs0 s H  u  pïXïR/                  5       _M     nnn UR0                  " X/UQ70 UD6nWb  U$ U R4                  R6                  R8                  R                  S5      nUb  [;        U5      OU R<                  n[?        UU5      (       d9  [        SSU  SU SU SU 3SU SUR@                   S3/ [B        RD                  QS	9  SSK J#n   URH                  RJ                  " SU/[M        U /UQU5      Q76 nSSKJ(n  URR                  (       ao  URR                  RT                  (       aT  UU;   aN  [W        S  [Y        X4R[                  5       5       5       5      (       a   URR                  RT                  R\                  O[^        nU Ra                  5       nU" 5          U" UW5      nS S S 5        U Rc                  UU5        W$ s  snnf ! [2         a(  n[        SSU  SU SU SU 3SU S3/ US9   S nAGNÆS nAff = f! [N         a8  n[        SSU  SU SU SU 3SU S3/ [B        RD                  QUS9   S nAGNAS nAff = f! , (       d  f       N¢= f)!Nr8   rä  rç  z(Illegal method invocation in strict modeúcall_method r¡  z/Dynamo currently does not support this method (z) invocation in strict mode.rÚ   Ú__deepcopy__z#Attempted to copy.deepcopy a tensorzcopy.deepcopy(rp   z3Dynamo does not support copy.deepcopy() on tensors.zAAvoid calling copy.deepcopy() on tensors inside compiled regions.r¶   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  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   ón   #   • U  H+  n[        U[        5      =(       a    UR                  S :H  v •  M-     g7f)r   N)r\   r™   r…   )r
  rÅ   s     ra   r  Ú-TensorVariable.call_method.<locals>.<genexpr>L  s.   é € ð â5�Aô ˜1œnÓ-×=°!·&±&¸A±+Ô=Ú5ùs   ‚35)2r¾   rå  ræ  rÃ  rè  ré  r°  r±  r$   r›  rÀ   rz   Úlistr¤   r+   rù   r^   rX   r]   Ú
tp_methodsr:   r9   rÂ   Úrealizer»  Ú	TypeErrorr›   r¬   r¿   r•   rŠ   r[   r_   r   rß   r  rÏ   r  r5   r0  rõ  r-  Ú	shape_envÚanyr   ÚvaluesÚignore_fresh_unbacked_symbolsr   rË   rÒ   )r¨   r¸   r  r"  r°   rå  ræ  rè  ré  rª  Úis_base_tensor_methodrí  ÚmethodÚflagsrÄ   rÅ   Úrealized_kwargsr¼  Úer½   Ú
check_typer  r›   rõ  ÚctxrÍ   s                             ra   rô   ÚTensorVariable.call_methodÊ  s  € ÷ 	@ßXà×Ñ˜r×"Ñ" 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ÑOÞ%à�{�{Ù*Øœ
¤:¨d¯k©k¸;Ó#GÈÓNôàó‘ð -×3Ñ3°B¼ÄÇÁÈdÓ8SÓT�á*Øœe T F¬T°$«ZÑ$7Ó8¸&óð ð —‘×$Ñ$ TÓ*ˆØÑÜ(¨Ó4ˆEÜ ¨$°tÔDà:@¿,¹,¼.ÔIº.±$°!˜q§)¡)£+š~¹.ˆOÑIð
ØŸš¨ÐK°4ÒK¸?ÑK�ð Ñ!Ø�ð
 Ÿ
™
Ÿ™×,Ñ,×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òõ 	+ð	Ø—I‘I×*Ò*ØØðô # D =¨4 =°&Ó9òˆEõ6 	>ð �|�|Ø—‘×&×&ØÐ:Ó:Üñ ä˜t§]¡]£_Ô5ó÷ ñ ð	 �L‰L×"Ñ"×@Ò@ô ð 	ð ×/Ñ/Ó1ˆÙ�UÙ" 2 uÓ-ˆF÷ à×&Ñ& r¨>Ô:àˆùóc Jøô ó ÜØ7Ø*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð!#Ø#' &¨ð!,àØ÷ð ûðûôJ #ó 		ÜØIØ& t f¨A¨d¨V°1°T°F¸!¸F¸8ÐDðØ!˜Fð #5ð6ð 7Ô)×5Ñ5Ð6Ø÷ð ûð		ú÷J �UúsB   ÆMÆ%M É+N	 Ì(
OÍ
NÍNÎNÎ	
OÎ-OÏOÏ
Oc                 ó.   • U R                   " S/UQ70 UD6$ rm  ©Ú_method_size_stride©r¨   r¸   r"  r°   s       ra   Úmethod_sizeÚTensorVariable.method_sizeZ  s   € ð ×'Ò'¨Ð@°Ò@¸Ñ@Ð@rc   c                 ó.   • U R                   " S/UQ70 UD6$ )Nr�   r	  r  s       ra   Úmethod_strideÚTensorVariable.method_stride_  s   € ð ×'Ò'¨ÐB°4ÒB¸6ÑBÐBrc   r[  c                 ó¨  • [        U5      nS[        [           S[        S[        4S jnUS:X  a  UO[        R
                  nUS:w  a  [        X5      nO*US:X  a"  U R                  5       (       a  U R                  nOS nUb#  Uc  U" U5      $ [        R
                  " XR   5      $ U R                  R                  R                  R                  S5      =nb}  Uc:  [        Xa5      " 5       n[        U5      (       d  U" [        S U 5       5      5      $  g [        Xa5      " U5      n[        U5      (       d  [        R
                  " [        U5      5      $ g )Nr  ÚoptionsrS   c           
      óp   • [        U  Vs/ s H  n[        R                  " U40 UD6PM     sn40 UD6$ s  snf rä   )rC   rA   rù   )r  r  Úys      ra   Úmake_const_size_variableÚDTensorVariable._method_size_stride.<locals>.make_const_size_variablei  s=   € ÜÙ@AÓBÂ¸1Ô!×(Ò(¨Ñ6¨gÔ6ÁÑBñØFMñð ùÚBs   Š!3rœ   r½   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frä   ©rl   ©r
  Úrs     ra   r  Ú5TensorVariable._method_size_stride.<locals>.<genexpr>‰  s   é € Ð,DºV¸¬S°¯V¨VºVùó   ‚)r2   r   r   rC   rA   rù   r^   rn  rœ   r›   r¬   r¿   rÀ   r   rz   rl   )r¨   r  r[  r  ÚRetVariabler  ÚfakeÚfake_rs           ra   r
  Ú"TensorVariable._method_size_strided  s:  € ô ˜3Óˆð	¬´©ð 	Ä#ð 	Ì,ô 	ð )-°«Ñ$Ô<L×<SÑ<Sð 	ð �6‹>Ü˜Ó#‰AØ�V‹^ §¡× 1Ñ 1Ø—	‘	‰AàˆAà‰=Ø‰{Ù" 1“~Ð%ä'×.Ò.¨q©vÓ6Ð6ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÑJØ‰{Ü  Ô,Ó.�Ü'¨×/Ñ/ñ '¤uÑ,D¹VÓ,DÓ'DÓEÐEð 0ð ô ! Ô,¨SÓ1�Ü'¨×/Ñ/Ü+×2Ò2´3°v³;Ó?Ð?Ørc   c                 óf  • U R                  5       (       a*  [        R                  " U[        U R                  5      5      $ U R
                  R                  R                  R                  S5      =nb@  UR                  5       n[        U5      (       d   [        R                  " U[        U5      5      $ g rÕ   )rn  r?   rø   r4   rœ   r›   r¬   r¿   rÀ   Únumelr   rl   )r¨   r¸   r  r  s       ra   Úmethod_numelÚTensorVariable.method_numel�  s�   € Ø�?‰?×ÑÜ"×(Ò(¨¬W°T·Y±YÓ-?Ó@Ð@ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÑJØ—Z‘Z“\ˆFÜ# F×+Ñ+Ü&×,Ò,¨R´°V³Ó=Ð=Ørc   c                 ó^   • U R                   b   [        R                  " XR                   5      $ g rä   )r…   r?   rø   rà   s     ra   Ú
method_dimÚTensorVariable.method_dim�  s$   € Ø�9‰9Ñ Ü"×(Ò(¨¯Y©YÓ7Ð7Ørc   c                 ór   • U R                   b*  [        R                  " XR                   R                  5      $ g rä   )r|   r?   rø   Úis_floating_pointrà   s     ra   Úmethod_is_floating_pointÚ'TensorVariable.method_is_floating_point¤  s,   € ð �:‰:Ñ!Ü"×(Ò(¨¯Z©Z×-IÑ-IÓJÐJØrc   c                 ó2  • [         R                  (       a,  [        SSS/ [        R                  Q[        R
                  QS9  U R                  R                  R                  R                  S5      =nb$  [        R                  " XR                  5       5      $ g )Nz0Encountered tensor.is_inference() during tracingrš  z&tensor.is_inference() is not supportedrÚ   r½   )r   Ú"fake_tensor_disable_inference_moder$   r   ÚFUNDAMENTALÚINFERENCE_MODEr›   r¬   r¿   rÀ   r?   rø   Úis_inference©r¨   r¸   r  s      ra   Úmethod_is_inferenceÚ"TensorVariable.method_is_inference«  s‚   € ô ×4×4ÜØJØØDðÜ&×2Ñ2ðä&×5Ñ5ðò	ð —J‘J—O‘O×(Ñ(×,Ñ,¨_Ó=Ð=ˆDÑJÜ"×(Ò(¨×->Ñ->Ó-@ÓAÐAØrc   c                 ór   • U R                   b*  [        R                  " XR                   R                  5      $ g rä   )r|   r?   rø   Ú
is_complexrà   s     ra   Úmethod_is_complexÚ TensorVariable.method_is_complex¼  s,   € ð �:‰:Ñ!Ü"×(Ò(¨¯Z©Z×-BÑ-BÓCÐCØrc   r–   c                 óT  • Ub  UR                  5       O[        R                  nU R                  b#  [        R
                  " XU R                  ;   5      $ U R                  R                  R                  R                  S5      =nb#  [        R
                  " XR                  US95      $ g )Nr½   r  )
rÆ  rX   Úcontiguous_formatrŽ   r?   rø   r›   r¬   r¿   rÀ   )r¨   r¸   r–   Úmemory_format_constr  s        ra   Úmethod_is_contiguousÚ#TensorVariable.method_is_contiguousÃ  sž   € ð Ñ(ð ×,Ñ,Ô.ä×(Ñ(ð 	ð
 ×ÑÑ)ä"×(Ò(¨ÀD×DVÑDVÑ-VÓWÐWØ—j‘j—o‘o×*Ñ*×.Ñ.¨Ó?Ð?ˆdÑLÜ"×(Ò(Ø×&Ñ&Ð5HÐ&ÐIóð ð rc   FÚnon_blockingc           
      óô  ^ • Uc×  T R                   bÊ  [        T R                  [        R                  5      (       a¡  [	        U 4S j[
        R                  " 5        5       5      nT R                  R                  S:X  a$  [        R                  " USUR                   35      $ [        R                  " UST R                  R                   SUR                   35      $ Ubš  [        [        UR                  5       5      5      S:X  at  UR                  5       n[        R                  " U[        U5      5      nSSKJn  U(       a  SU0UEnU" UUR                  R                   " S	S
/[#        T U/U5      Q76 5      $ g )Nc              3   óP   >#   • U  H  u  pTR                   U;   d  M  Uv •  M     g 7frä   )r|   )r
  rÄ   rÅ   r¨   s      €ra   r  Ú-TensorVariable.method_type.<locals>.<genexpr>â  s#   øé € ð Ú9‘d�a¸T¿Z¹ZÈ1¹_—‘Ò9ùs   ƒ&�	&Úcpuztorch.Ú.ztorch.tensortyper8   r  r=  rô   r•   )r|   r\   rƒ   rX   Únextr7   rÂ   r•   r?   rø   r_   r.   rÆ  r¾   r  rÏ   r  r5   )	r¨   r¸   r|   r=  r°   Ú
tensortypeÚtensor_typeÚtensor_type_constr  s	   `        ra   Úmethod_typeÚTensorVariable.method_typeÖ  sZ  ø€ ð ‰MØ—
‘
Ñ&Ü˜4Ÿ;™;¬¯©×5Ñ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òóð ð rc   ÚclsrK   c                 ób  • [        U[        5      (       aw  UR                  (       af  SSKJn  UR                  5       nUR                  " XXBR                  5      nUR                  R                  R                  [        5       U[        S9  U$ [        SU  SU S3SS/[        R                  QS	9  g )
Nr8   rJ   ©Úmutation_type_clszHArgument of `as_subclass` must be a non-dispatcher-style tensor subclassz.as_subclass(rp   úCurrently not supportedz9Avoid this call or move it outside `torch.compile` regionrÚ   )r\   ÚTensorSubclassVariabler¤   rÃ  rK   rÆ  rÈ  rÏ   r†  Ú
_track_objÚobjectr;   r$   r   rß   )r¨   r¸   rI  rK   Úpy_clsrœ  s         ra   Úmethod_as_subclassÚ!TensorVariable.method_as_subclass  s¦   € ô �cÔ1×2Ñ2°s·z·zÝDà×+Ñ+Ó-ˆFØ.×>Ò>Ø˜&§*¡*óˆCð �I‰I×"Ñ"×-Ñ-Ü“˜#Ô1Eð .ñ ð ˆJÜØ^Ø�f˜M¨#¨¨aÐ0Ø1àKðä"×.Ñ.ðó		
rc   c                 óæ   • [        U R                  [        R                  5      (       aH  U R                  R                  S:w  a  U R                  R                  OSn[
        R                  " X5      $ g )NrA  éÿÿÿÿ)r\   rƒ   rX   r•   r£   r?   rø   )r¨   r¸   r£   s      ra   Úmethod_get_deviceÚ TensorVariable.method_get_device  sO   € ô �d—k‘k¤5§<¡<×0Ñ0Ø)-¯©×)9Ñ)9¸UÓ)B�D—K‘K×%Ò%ÈˆEÜ"×(Ò(¨Ó3Ð3Ørc   c                 óV   • [         R                  " XR                  R                  5      $ rä   )r?   rø   r|   Úitemsizerà   s     ra   Úmethod_element_sizeÚ"TensorVariable.method_element_size%  s   € Ü×$Ò$ R¯©×)<Ñ)<Ó=Ð=rc   )Úforcer\  ÚNumpyNdarrayVariablec                ó,  • [         R                  (       d  [        SSU  S3SS/S9  [        (       d  [        SSU  S3SS	/S9  U R                  [
        R                  :w  a  [        S
U R                   S35      eU(       aW  UR                  5       (       aB  U R                  US/ 0 5      nUR                  R                  SSUR                  5       40 5      nO)UR                  R                  " SS/[        X /0 5      Q76 n[        R                  X5      $ )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ô   rA  Úview_as)r   Útrace_numpyr$   Únpr„   rX   Ústridedrû  rÆ  rô   rÏ   r  ræ   r5   r]  rù   )r¨   r¸   r\  Útr›   s        ra   Úmethod_numpyÚTensorVariable.method_numpy(  s  € ô ×!×!ÜØ?Ø& t f¨FÐ3ð7ð5ðò	÷ ŠrÜØ@Ø& t f¨FÐ3ð?ð Lðòð �;‰;œ%Ÿ-™-Ó'ÜØ  §¡ Ð-aÐbóð ö �U×-Ñ-×/Ñ/à× Ñ   X¨r°2Ó6ˆAØ—I‘I×*Ñ*¨=¸%À!Ç*Á*Ã,ÀÐRTÓU‰Eð —I‘I×*Ò*Ø˜yðÜ+<¸d¸\È2Ó+NòˆEô $×*Ñ*¨2Ó5Ð5rc   c                 óR  ^ ^^^• SSK Jm  S[        R                  S[        R                  R
                  S[        [        [           -  4U UUU4S jjmT R                  5       R                  R                  S   nT" UT R                  5       5      n[        R                  " TU5      $ )Nr8   r  ÚtensorÚ	sub_proxyrS   c           	      ó4  >• S[         S[        R                  R                  S[        4UU	4S jjnU R
                  [        R                  [        R                  [        R                  [        R                  4;  a  [        SST S3SS	/S
9  U R                  5       S:X  a  U" X5      $ U R                  5       S:X  a)  [        U 5       VVs/ s H  u  p4U" XAU   5      PM     snn$ [        U 5       VVs/ s H  u  p5T" XQU   S9PM     snn$ s  snnf s  snnf )NrÍ  ri  rS   c                 ó2   >• T" TUR                  5       5      $ rä   )rò   )rÍ  ri  r¸   r  s     €€ra   ÚwrapÚ:TensorVariable.method_tolist.<locals>.tolist.<locals>.wrapV  s   ø€ Ù$ØØ—N‘NÓ$óð rc   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   r8   )ri  )r   rX   ÚfxÚProxyr?   r|   Úint8Úint16Úint32Úint64r$   r[  Ú	enumerate)
rh  ri  rl  rÍ  ÚvalÚ
sub_tensorr¨   Útolistr¸   r  s
         €€€€ra   rw  Ú,TensorVariable.method_tolist.<locals>.tolistU  s  ø€ ðœð ¬¯©¯©ð ¼?÷ ð ð �|‰|Ü—
‘
Ü—‘Ü—‘Ü—‘ð	$ó ô ØEØ*¨4¨&°Ð9ð!9ðBðò	ð �z‰z‹|˜qÓ Ù˜FÓ.Ð.à�z‰z‹|˜qÓ Ü>GÈÔ>OÔPÒ>O±F°A™˜S¨A¡,Ö/Ñ>OÒPÐPô &/¨vÔ%6ôâ%6‘M�Añ �z°q©\Ô:Ù%6òð ùó Qùós   ÃDÃ5Dr½   )r¾   r  rX   r]   rn  ro  r   rø  ræ   r¬   r¿   r?   rø   )r¨   r¸   rh  Úoutrw  r  s   ``  @@ra   Úmethod_tolistÚTensorVariable.method_tolistR  s~   û€ Ý*ð!	œ5Ÿ<™<ð !	´E·H±H·N±Nð !	ÄsÌTÔRUÉYÁ÷ !	ò !	ðF —‘“×%Ñ%×*Ñ*¨?Ñ;ˆÙ�V˜TŸ]™]›_Ó-ˆÜ×$Ò$ R¨Ó-Ð-rc   Ú	vars_iterÚerror_on_non_leafc                 óð  • SSK Jn  / n[        5       nU HÝ  n[        U[        5      (       d  M  UR
                  (       d  M-  UR                  (       a  U(       a  [        SSU 3SS/S9  MW  MY  U(       a>  UR                   (       a  [        UR                   U5      (       a  [        SS	U 3S
S/S9  Mž  UR                  R                  nXu;  d  M»  UR                  U5        UR                  U5        Mß     U$ )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  Úsetr\   r™   r†   r‹   r$   r›   r¬   ÚaddÚappend)r¨   r|  r}  r  r¼  Ú
seen_nodesrœ  r¬   s           ra   Ú_collect_backward_inputsÚ'TensorVariable._collect_backward_inputs|  sã   € õ 	2àˆÜ),«ˆ
ÛˆCÜ˜#œ~×.Ó.°3×3D×3DÑ3Dð —?—?Þ(Ü%Ø$EØ&SÐTWÐSXÐ$YØ(là kð#ô	ñ )ö 'ØŸ
Ÿ
¤j°·±Ð=Q×&RÑ&Rä!Ø IØ"WÐX[ÐW\Ð ]ð%Bð rðôð Ÿ9™9Ÿ>™>�DØÕ-Ø"Ÿ™ tÔ,ØŸ™ cÖ*ñO ðR ˆrc   ÚgradientÚretain_graphÚcreate_graphÚinputsc                 óò  • [         R                  (       d  [        SSU  SU SU SU SU 3
SS/S9  U R                  (       d  U R                  (       d  [        S5      eUS	L nU(       aq  [        UR                  R                  UR                  R                  R                  5       5      nU R                  U5      nU(       d  [        R                  " S	5      $ O–[        U[        R                   5      (       a  UR"                  n	OF[        U[        R$                  5      (       a$  ['        UR"                  R                  5       5      n	OU/n	U R                  U	S
S9nU(       d  [        SSSS/S9  S[(        R*                  " X5      0n
Ub  X:S'   Ub  XJS'   [(        R*                  " X5      nX/nUb  UR-                  U5        [(        R*                  " U[.        R0                  R2                  5      nUR5                  XU
5      nSSKJn  UR                  USS
S9nUR;                  U5        [(        R*                  " U[.        R<                  R>                  R@                  RB                  5      nUc  [E        S5      e[G        U5       HE  u  nnURI                  US[(        R*                  " UU5      /0 5      nUR5                  UUU/0 5        MG     URK                  U5        [        R                  " S	5      $ )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 r¡  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ˆ  r8   )Ú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„  rA   rù   r\   r   ÚBaseListVariablerÂ   ÚConstDictVariablerø  r?   rø   r‚  rX   Úautogradr…  r   Úctx_managerrŒ  Úenterrµ  ÚinductorÚaccumulate_grad_Údefaultr)  rt  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                        ra   Úmethod_backwardÚTensorVariable.method_backward¹  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˜Ñ'ØÑ#Ø*6˜Ñ'ä$×*Ò*¨2Ó:ˆ
ØÐ&ˆ	ØÑØ×Ñ˜XÔ&ä*×0Ò0°´U·^±^×5HÑ5HÓIÐØ$×2Ñ2°2À+ÓNˆ	õ 	2à(×/Ñ/°°EÀtÐ/ÐLˆØ×Ñ˜BÔä,×2Ò2Ø”—	‘	×"Ñ"×3Ñ3×;Ñ;ó
Ðð ÑÜ Ð!>Ó?Ð?Ü'¨
Ö3‰NˆC�Ø×*Ñ*Ø�M¤O×$9Ò$9¸"¸cÓ$BÐ#CÀRóˆFð ×,Ñ,¨R°)¸VÐ1DÀbÖIñ	 4ð 	×Ñ˜2Ôä×&Ò& tÓ,Ð,rc   ÚDataPtrVariablec                 ó   • [        U 5      $ rä   ©rª  r  s       ra   Úmethod_data_ptrÚTensorVariable.method_data_ptr0  s   € ô ˜tÓ$Ð$rc   c                 ó   • [        U SS9$ )NÚconst_data_ptr)Úmethod_namer¬  r  s       ra   Úmethod_const_data_ptrÚ$TensorVariable.method_const_data_ptr8  s   € ô ˜tÐ1AÑBÐBrc   Ústreamc                 óZ  • SSK Jn  [        X#5      (       d&  [        SUR	                  5       R
                   35      eUR                  R                  S[        R                  R                   R                  U R                  5       UR                  40 5        [        R                  " S 5      $ )Nr8   )ÚStreamVariablez/record_stream() expects a Stream argument, got r   )Ústreamsr¶  r\   r¦   rê   r_   rÏ   r  rX   rµ  Úrecord_streamræ   Úuser_object_indexrA   rù   )r¨   r¸   r´  r¶  s       ra   Úmethod_record_streamÚ#TensorVariable.method_record_stream@  s�   € õ
 	,ä˜&×1Ñ1ÜØAÀ&×BTÑBTÓBV×B_ÑB_ÐA`Ðaóð ð 	�	‰	×ÑØÜ�I‰I×Ñ×+Ñ+Ø�]‰]‹_˜f×6Ñ6Ð7Øô		
ô  ×&Ò& tÓ,Ð,rc   c           	      óœ   • UR                   (       d;  [        R                  (       d&  U R                  5         [	        SSU  SU SU 3SS/S9  g )Nz@Unsupported Tensor.item() call with capture_scalar_outputs=Falserñ  z item r¡  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       ra   Úmethod_itemÚTensorVariable.method_itemS  sU   € ð �|�|¤F×$A×$AØ×-Ñ-Ô/ÜØZØ& t f¨F°4°&¸¸&¸ÐBð<ðIðò
ð rc   c           	      óJ  • U R                   b†  U R                   R                  (       dk  U R                   R                  (       dP  U R                  US/ 0 5      nSSKJn  U" UUR                  R                  S[        UR                  5       40 5      S9$ [        [        US/S9  g )Nrò   r8   r  r   r¦  zEonly integer tensors of a single element can be converted to an indexr!  )r|   r)  r5  rô   r¾   r  rÏ   r  r   ræ   r    rû  ©r¨   r¸   rò   r  s       ra   Únb_index_implÚTensorVariable.nb_index_impli  s�   € ð �:‰:Ñ!Ø—
‘
×,×,°T·Z±Z×5J×5Jà×#Ñ# B¨°°BÓ7ˆDÝ.á ØØ—i‘i×,Ñ,Ø#ÜØ—]‘]“_Ð&Øó	ñð ô 	!ÜØàWðó	
rc   c           	      ó  • U R                   b+  U R                   R                  (       a  [        [        US/S9  U R	                  US/ 0 5      nSSKJn  U" UUR                  R                  S[        UR                  5       40 5      S9$ )Nz:value cannot be converted to type int64_t without overflowr!  rò   r8   r  r   r¦  )r|   r5  r    r¦   rô   r¾   r  rÏ   r  r   ræ   rÃ  s       ra   Únb_int_implÚTensorVariable.nb_int_impl‡  s€   € ð �:‰:Ñ! d§j¡j×&;×&;Ü$ÜØØRÐSòð ×Ñ  F¨B°Ó3ˆÝ*áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ñ
ð 	
rc   c                 ó$   • U R                  U5      $ rä   ©rÇ  rà   s     ra   Úmethod___int__ÚTensorVariable.method___int__£  s   € Ø×Ñ Ó#Ð#rc   c           	      ó  • U R                   b+  U R                   R                  (       a  [        [        US/S9  U R	                  US/ 0 5      nSSKJn  U" UUR                  R                  S[        UR                  5       40 5      S9$ )Nz9value cannot be converted to type double without overflowr!  rò   r8   r  r   r¦  )r|   r5  r    r¦   rô   r¾   r  rÏ   r  r   ræ   rÃ  s       ra   Únb_float_implÚTensorVariable.nb_float_impl¦  s€   € ð �:‰:Ñ! d§j¡j×&;×&;Ü$ÜØØQÐRòð
 ×Ñ  F¨B°Ó3ˆÝ*áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ñ
ð 	
rc   c                 ó$   • U R                  U5      $ rä   ©rÎ  rà   s     ra   Úmethod___float__ÚTensorVariable.method___float__¿  s   € Ø×!Ñ! "Ó%Ð%rc   c           	      ó’   • SSK Jn  U" UUR                  R                  S[        R
                  U R                  5       40 5      5      $ ©Nr8   r  r   )r¾   r  rÏ   r  ÚoperatorÚnegræ   ©r¨   r¸   r  s      ra   Únb_negative_implÚTensorVariable.nb_negative_implÂ  óB   € õ 	+áØØ�I‰I×"Ñ"ØÜ—‘Ø—‘“Ð"Øó	ó
ð 	
rc   c                 ó$   • U R                  U5      $ rä   ©rÙ  rà   s     ra   Úmethod___neg__ÚTensorVariable.method___neg__Ò  ó   € Ø×$Ñ$ RÓ(Ð(rc   c           	      ó’   • SSK Jn  U" UUR                  R                  S[        R
                  U R                  5       40 5      5      $ rÕ  )r¾   r  rÏ   r  rÖ  Úposræ   rØ  s      ra   Únb_positive_implÚTensorVariable.nb_positive_implÕ  rÛ  rc   c                 ó$   • U R                  U5      $ rä   ©rã  rà   s     ra   Úmethod___pos__ÚTensorVariable.method___pos__å  rà  rc   c           	      ó’   • SSK Jn  U" UUR                  R                  S[        R
                  U R                  5       40 5      5      $ rÕ  )r¾   r  rÏ   r  rÖ  Úabsræ   rØ  s      ra   Únb_absolute_implÚTensorVariable.nb_absolute_implè  rÛ  rc   c                 ó$   • U R                  U5      $ rä   ©rë  rà   s     ra   Úmethod___abs__ÚTensorVariable.method___abs__ø  rà  rc   c           	      ó’   • SSK Jn  U" UUR                  R                  S[        R
                  U R                  5       40 5      5      $ rÕ  )r¾   r  rÏ   r  rÖ  Úinvertræ   rØ  s      ra   Únb_invert_implÚTensorVariable.nb_invert_implû  sB   € õ 	+áØØ�I‰I×"Ñ"ØÜ—‘Ø—‘“Ð"Øó	ó
ð 	
rc   c                 ó$   • U R                  U5      $ rä   )ró  rà   s     ra   Úmethod___invert__Ú TensorVariable.method___invert__  ó   € Ø×"Ñ" 2Ó&Ð&rc   c           	      ó0  • SSK Jn  [        US   [        5      (       a,  [        R
                  [        R                  " US5      US   /p%O[        R                  nUR                  R                  " SU/[        U /[        U5      -   U5      Q76 nU" X5      $ )Nr8   r  r   r   )r¾   r  r\   rõ   rX   Úselectr?   rø   rÖ  ÚgetitemrÏ   r  r5   rø  )r¨   r¸   r"  r°   r  r½  r›   s          ra   rë  Ú!TensorVariable.method___getitem__  s’   € õ 	+ä�d˜1‘gœ×/Ñ/ô
 —‘ä#×)Ò)¨"¨aÓ0Ø˜‘Gðñ ô ×!Ñ!ˆBà—	‘	×&Ò&ØØð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆñ ˜RÓ'Ð'rc   c                  óò   • [         R                  R                  R                  5       n SR	                  [
        R                  " U 5      5      n[        R                  [        R                  " S5      U5        g )Nrš  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
                )rX   Ú_guardsÚTracingContextÚextract_stackÚjoinÚ	tracebackÚformat_listÚlogÚwarningÚtextwrapÚdedent)Ú
user_stackÚuser_stack_formatteds     ra   r¿  Ú+TensorVariable._warn_capture_scalar_outputs,  sX   € ô —]‘]×1Ñ1×?Ñ?ÓAˆ
Ø!Ÿw™w¤y×'<Ò'<¸ZÓ'HÓIÐÜ�‰Ü�OŠOð	óð !õ	
rc   c                 ó$   • U R                  U5      $ rä   )Úsq_length_implrà   s     ra   Úmethod___len__ÚTensorVariable.method___len__A  rø  rc   c                 óV   • U R                  US[        R                  " US5      /0 5      $ )z9Sequence length for tensors (size along first dimension).rœ   r   )rô   r?   rø   rà   s     ra   r  ÚTensorVariable.sq_length_implD  s)   € à×Ñ  F¬_×-BÒ-BÀ2ÀqÓ-IÐ,JÈBÓOÐOrc   c                 óD   • [        U R                  U5      [        5       S9$ )N©r‰  )rB   rÏ  r>   rà   s     ra   Útp_iter_implÚTensorVariable.tp_iter_implH  s#   € Ü#Ø×$Ñ$ RÓ(Ô8HÓ8Jñ
ð 	
rc   c                 ó$   • U R                  U5      $ rä   )r  rà   s     ra   Úmethod___iter__ÚTensorVariable.method___iter__M  s   € Ø× Ñ  Ó$Ð$rc   r`   Útensor1Útensor2c                óB  • Ubœ  [         R                  (       a‡  SSKJn  [        R
                  " [        R                  5      n[        R
                  " UR                  5      nUR                  XU/0 5      nUR                  XX@/0 5      n	U R                  USU	/0 5      $ g ©Nr   )Úinductor_primsÚcopy_)r   Úenable_dynamo_decompositionsÚtorch._inductorr  r   rF  rX   ÚmulÚfmar   rô   )
r¨   r¸   r  r  rR   r  Úmul_varÚfma_varr4   r¼  s
             ra   Úmethod_addcmul_ÚTensorVariable.method_addcmul_P  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Ó>Ð>Ørc   c                 óD   • Uc  [        US5        U R                  XU5      $ )Nz&Tensor does not support deleting items)r!   Úmethod___setitem__©r¨   r¸   râ  rR   s       ra   Úmp_ass_subscript_implÚ$TensorVariable.mp_ass_subscript_implb  s'   € ð ‰=Ü˜RÐ!IÔJØ×&Ñ& r°Ó6Ð6rc   c                 ó*  • UR                   R                  " S[        R                  /[	        XU/0 5      Q76 nU R                  5       n[        R                  R                  R                  5          UR                  (       a?  UR                  R                  (       a$  UR                  R                  R                  5       O	[        5          [        UR                  USS9  S S S 5        S S S 5        U R!                  X5        ["        R$                  (       d  ["        R&                  (       a0  UR                   R(                  R+                  UR                  S5        [,        R.                  " S 5      $ ! , (       d  f       N—= f! , (       d  f       N = f)Nr   F)Úallow_non_graph_faker   )rÏ   r  rÖ  Úsetitemr5   rË   rX   rY   rZ   Ú+_disable_saved_tensors_hooks_during_tracingr-  rü  rÿ  r   r0   r¬   rÒ   r   Úuse_graph_deduplicationÚtrack_nodes_for_deduplicationÚregion_trackerÚadd_node_mutationrA   rù   )r¨   r¸   râ  rR   r›   rÍ   s         ra   r'  Ú!TensorVariable.method___setitem__l  s  € ð —	‘	×&Ò&ØÜ×Ñð
ô  ¨5Ð1°2Ó6ò
ˆð ×/Ñ/Ó1ˆô �M‰M×Ñ×KÑKÕMà�|�| §¡× 6× 6ð �L‰L×"Ñ"×@Ñ@ÔBä“ñô ˜5Ÿ:™: rÀÒF÷	÷ Nð 	×&Ñ& rÔ:ä×)×)¬V×-Q×-QØ�I‰I×$Ñ$×6Ñ6°u·z±zÀ1ÔEä×&Ò& tÓ,Ð,÷õ ú÷ NÕMús%   Á1AFÃE3Ã"FÅ3
F	Å=FÆ
Fc           	      ó.   • [        SSU  SU SU 3S/ S9  g )Nz!Unsupported Tensor.resize_() callrñ  z	 resize_ r¡  z=Dynamo currently does not support tracing `Tensor.resize_()`.rÚ   r�  r  s       ra   Úmethod_resize_ÚTensorVariable.method_resize_�  s+   € ô 	Ø7Ø" 4 &¨	°$°°q¸¸ÐAØWØó		
rc   c           	      ó.   • [        SSU  SU SU 3S/ S9  g )Nz$Unsupported Tensor.resize_as_() callrñ  z resize_as_ r¡  z@Dynamo currently does not support tracing `Tensor.resize_as_()`.rÚ   r�  r  s       ra   Úmethod_resize_as_Ú TensorVariable.method_resize_as_š  s+   € ô 	Ø:Ø" 4 &¨°T°F¸!¸F¸8ÐDØZØó		
rc   c           	      ó.   • [        SSU  SU SU 3S/ S9  g )Nz(Unsupported Tensor.sparse_resize_() callrñ  z sparse_resize_ r¡  zDDynamo currently does not support tracing `Tensor.sparse_resize_()`.rÚ   r�  r  s       ra   Úmethod_sparse_resize_Ú$TensorVariable.method_sparse_resize_§  s,   € ô 	Ø>Ø" 4 &Ð(8¸¸¸aÀ¸xÐHØ^Øó		
rc   c           	      ó.   • [        SSU  SU SU 3S/ S9  g )Nz2Unsupported Tensor.sparse_resize_and_clear_() callrñ  z sparse_resize_and_clear_ r¡  zNDynamo currently does not support tracing `Tensor.sparse_resize_and_clear_()`.rÚ   r�  r  s       ra   Úmethod_sparse_resize_and_clear_Ú.TensorVariable.method_sparse_resize_and_clear_´  s,   € ô 	ØHØ" 4 &Ð(BÀ4À&ÈÈ&ÈÐRØhØó		
rc   c           	      ól   • [        U5      S:”  a%  [        SSU  SU SU 3S/ [        R                  QS9  g )Nr8   zUnsupported Tensor.set_() callrñ  z set_ r¡  zhDynamo currently does not support tracing `Tensor.set_()` overloads that include more than one argument.rÚ   )rÄ  r$   r   rß   r  s       ra   Úmethod_set_ÚTensorVariable.method_set_Á  sL   € ô ˆt‹9�q‹=ô Ø8Ø& t f¨F°4°&¸¸&¸ÐBðAà6Ô)×5Ñ5Ð6òð rc   )ÚalpharC  c                óü   • Uby  [        U[        5      (       ad  [        R                  (       aO  SSKJn  [        R                  " UR                  5      nUR                  XX0/0 5      nU R                  USU/0 5      $ g r  )r\   r™   r   r  r  r  r   rF  r!  r   rô   )r¨   r¸   rü   rC  r  r#  r¼  s          ra   Úmethod_add_ÚTensorVariable.method_add_×  sl   € ð ÑÜ˜5¤.×1Ñ1Ü×3×3å6ä×<Ò<¸^×=OÑ=OÓPˆGØ×*Ñ*¨2°uÐ/CÀRÓHˆFØ×#Ñ# B¨°&°¸2Ó>Ð>Ørc   c                ó>  • Ubš  [         R                  (       a…  [        R                  " [        R
                  5      R                  XU/0 5      nSSKJn  [        R                  " UR                  5      nUR                  XX@/0 5      nU R                  USU/0 5      $ g r  )r   r  r   rF  rX   Údivr   r  r  r!  rô   )	r¨   r¸   r  r  rR   r¼  r  r#  Ú
fma_results	            ra   Úmethod_addcdiv_ÚTensorVariable.method_addcdiv_ì  s‰   € ð Ñ¤×!D×!DÜ×;Ò;¼E¿I¹IÓF×TÑTØ˜gÐ&¨óˆFõ 7ä×<Ò<¸^×=OÑ=OÓPˆGØ ×.Ñ.¨r¸EÐ3HÈ"ÓMˆJØ×#Ñ# B¨°*°¸rÓBÐBØrc   rò   c                 ó   • [         R                  " [        R                  5      R	                  XU/0 5      n[         R                  " [        R
                  5      R	                  X/0 5      nUR                  US/ 0 5      $ )Nrò   )r   rF  rX   Úeqr   rý  rô   )r¨   r¸   rò   r¼  s       ra   Úsq_contains_implÚTensorVariable.sq_contains_implÿ  sm   € ô ×7Ò7¼¿¹ÓA×OÑOØ�t�˜bó
ˆô ×7Ò7¼¿	¹	ÓB×PÑPØ�˜"ó
ˆð ×!Ñ! " f¨b°"Ó5Ð5rc   Úargc                 ó$   • U R                  X5      $ rä   )rN  )r¨   r¸   rP  s      ra   Úmethod___contains__Ú"TensorVariable.method___contains__  s   € ð ×$Ñ$ RÓ-Ð-rc   c                 ó0   • U R                   " US/UQ70 UD6$ )NÚregister_hook©Ú_method_register_hookr  s       ra   Úmethod_register_hookÚ#TensorVariable.method_register_hook  s!   € ð ×)Ò)¨"¨oÐOÀÒOÈÑOÐOrc   c                 ó0   • U R                   " US/UQ70 UD6$ )NÚ"register_post_accumulate_grad_hookrV  r  s       ra   Ú)method_register_post_accumulate_grad_hookÚ8TensorVariable.method_register_post_accumulate_grad_hook  s-   € ð ×)Ò)ØÐ4ð
Ø7;ò
Ø?Eñ
ð 	
rc   Úhookc                 óþ  ^^• U R                   (       GdD  [        R                  (       až  UR                  R	                  U5      u  mnS[
        R                  S[        R                  SS 4UU4S jjnSSKJ	n  U R                  5       nSUR                  R                  S'   U" UUR                  R                  S	UXt40 5      5      $ SS
KJn  U R                  5       n	U	R                   n
 UR#                  S 5         U" UUU /0 SS S SSS9	u  u  p¼pÞS S S 5        UR                  R,                  R.                  R1                  5       nUR                  R3                  S[
        R4                  R7                  UR8                  W5      5      mU
R                  STS0 5      nSSKJn  U	U/[?        WRA                  5       5      Q7nU
R                  S	U[C        U5      0 5      nU	R                  R                  S   UR                  R                  S'   UU l"        U RG                  U5        [H        RJ                  " [H        RL                  RO                  5       S9$ [H        RJ                  " [H        RL                  RO                  5       S9nUR                  RP                  RS                  XUT5        U$ ! , (       d  f       GN§= f! [
        R$                  R&                  R(                   a    [+        SSS/ S9   GNáf = f)Nrh  Úbw_staterS   c           	      óh   >• [        U T5      nU" [        R                  " [        [        UTS95        g )N)r½  r`  Ú	hook_name)r^   r7  r8  r   r(   )rh  r`  rU  rb  r  s      €€ra   Ú_register_hook_trampolineÚGTensorVariable._method_register_hook.<locals>._register_hook_trampoline3  s8   ø€ ô %,¨F°DÓ$9�MÙ!Ü!×)Ò)Ü)Ü<Ø%-Ø&/ñ	ôð  rc   r8   r  TÚhas_backward_hookr   )Úspeculate_subgraphc                 ó"   • U R                  5       $ rä   )rî   )rÅ   s    ra   Ú<lambda>Ú6TensorVariable._method_register_hook.<locals>.<lambda>b  s
   € ¸!¿+¹+¼-rc   rU  Ú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_hookrX   r]   ÚBackwardStater¾   r  ræ   r¬   r¿   r  Úhigher_order_opsrf  r­   Ústrict_translation_moderY   r@  r%   r$   Útracing_contextÚmodule_contextÚcopy_graphstateÚinstall_subgraphrn  ÚGraphModuleÚ
nn_modulesÚ%torch._higher_order_ops.register_hookrq  rø  Úkeysrz   r›   rÆ   r   ÚRemovableHandleVariableÚbaser>   r†  rU  )r¨   r¸   r  r^  Úbw_state_proxyrc  r  Ú
self_proxyrf  Útensor_proxyÚtarget_tracerÚbody_rÚ_Ú
hook_graphÚhook_freevarsÚhook_nn_modulesÚ	hook_noderq  Úp_argsÚhooked_proxyÚhandle_variablerb  s     `                  @ra   rW  Ú$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 ÷ Ið, !Ÿ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¸È$ÔOØÐ÷g IÖHûô —=‘=×$Ñ$×IÑIó ÜØFØNð!<ð õðús0   Ã+K Ã=J2ÄK Ê2
KÊ<K ËK Ë4K<Ë;K<c                 ór  • USLa  UR                  5       nU R                  5       R                  nUR                  S   nUR                  U:w  Ga9  U R
                  (       a  [        SSU  S3S/ S9  UR                  R                  (       a  [        SSU  S3S	S
S/S9  [        R                  R                  R                  5       n[        R                  R                  R                  S5         UR                  R                  S[        R                  R                  R                  S0 5        UR                  R!                  SSU R                  5       40 5        UR                  R                  S[        R                  R                  R                  U40 5        [        R                  R                  R                  U5        UR#                  U5        X l        U(       a¤  UR                  R$                  R'                  U 5        U R
                  (       dn  UR                  R(                  R+                  U 5      (       aD  UR                  R(                  R-                  U S[.        R0                  R3                  S 5      5        U $ ! [        R                  R                  R                  U5        f = f)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…  )rÆ  ræ   r¬   r¿   r†   r¤   r$   Úspeculation_logÚgraph_break_on_requires_grad_rX   rq   rr   Ú!get_inplace_requires_grad_allowedÚ!set_inplace_requires_grad_allowedrÏ   Úcreate_noder  r‘  r�  r‚  r†  Úis_attribute_mutationÚ
store_attrr   rA   rù   )r¨   r¸   r†   r¬   r½   Ú
prev_states         ra   Úmethod_requires_grad_Ú$TensorVariable.method_requires_grad_—  s5  € ð
  Ò$Ø)×<Ñ<Ó>ˆ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Ø!.ÔÞØ—	‘	×1Ñ1×8Ñ8¸Ô>ð
 —{—{ r§y¡y×'=Ñ'=×'SÑ'SØ÷(ñ (ð —I‘I×*Ñ*×5Ñ5Ø˜f¤i×&@Ñ&@×&GÑ&GÈÓ&Môð ˆøô —‘×#Ñ#×EÑEÀjÕQús   Ã0B.J Ê+J6c                 óž   • SSK Jn  UR                  R                  SSU R	                  5       40 5      nU" X5        U R                  U5        U $ )Nr8   r  rô   Údetach_)r¾   r  rÏ   r  ræ   rÆ   )r¨   r¸   r  r›   s       ra   Úmethod_detach_ÚTensorVariable.method_detach_ð  sK   € Ý*à—	‘	×&Ñ&ØØØ�]‰]‹_ÐØó	
ˆñ 	�bÔ Ø×#Ñ# BÔ'Øˆrc   c                 óF   • [        SSU  S3SS/[        R                  QS9  g )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     ra   Úmethod_share_memory_Ú#TensorVariable.method_share_memory_þ  s2   € ÜØ=Ø" 4 &¨Ð7ØnàIðä"×.Ñ.ðó		
rc   c                 óØ   • [        U5      S:X  a  [        US   [        5      (       d&  [        U5      S:¼  a4  [        S U 5       5      (       a  U R	                  US[        U5      U5      $ g )Nr8   r   c              3   óŒ   #   • U  H:  nUR                  5       =(       a    [        UR                  5       [        5      v •  M<     g 7frä   )r³  r\   rÆ  rl   )r
  Úas     ra   r  Ú,TensorVariable.method_new.<locals>.<genexpr>	  s8   é € ð â�Að ×$Ñ$Ó&×R¬:°a×6JÑ6JÓ6LÌcÓ+RÔRÚùs   ‚AAÚ	new_empty)rÄ  r\   rC   Úallrô   rø  r  s       ra   Ú
method_newÚTensorVariable.method_new		  sd   € ô �‹I˜‹Nœz¨$¨q©'´<×@Ñ@Ü�‹I˜‹NÜñ áó÷ ñ ð
 ×#Ñ# B¨´T¸$³ZÀÓHÐHØrc   r¨   c                 óô  • [        U5      S:w  a  g US   nUR                  S5      nUb9  UR                  5       (       d  g UR                  5       [        R
                  :w  a  g [        U5      nUR                  SS 5        UR                  SU R                  US5      5        UR                  SU R                  US5      5        [        R                  " [        R                  5      R                  UU/U5      $ )Nr8   r   r„   r|   rƒ   )rÄ  rÀ   r³  rÆ  rX   rc  ÚdictÚpopÚ
setdefaultr¾  r   rF  rh  r   )r¨   r¸   r"  r°   Údata_argr„   Ú
fwd_kwargss          ra   Úmethod_new_tensorÚ TensorVariable.method_new_tensor	  s×   € ô ˆt‹9˜‹>ØØ˜‘7ˆØ—‘˜HÓ%ˆØÑØ×,Ñ,×.Ñ.ØØ×(Ñ(Ó*¬e¯m©mÓ;ØÜ˜&“\ˆ
Ø�‰�x Ô&Ø×Ñ˜g t×'<Ñ'<¸RÀÓ'IÔJØ×Ñ˜h¨×(=Ñ(=¸bÀ(Ó(KÔLÜ×5Ò5´e·l±lÓC×QÑQØØˆJØó
ð 	
rc   c                 ó~   • [        X R                  5       R                  R                  S   R	                  5       5      $ rÕ   )ÚUntypedStorageVariableræ   r¬   r¿   Úuntyped_storagerà   s     ra   Úmethod_untyped_storageÚ%TensorVariable.method_untyped_storage4	  s4   € ô &Ø—-‘-“/×&Ñ&×+Ñ+¨OÑ<×LÑLÓNó
ð 	
rc   c           	      óî   • U(       d  U(       a)  [         R                  R                  R                  S5      eSSKJn  SSKJn  U" UUR                  R                  SX@R                  5       40 5      5      $ )Nz2`wait` and `wait_tensor` do not take any argumentsr   )Úwait_tensorr8   r  r   )rX   rY   r@  ÚInternalTorchDynamoErrorÚ)torch.distributed._functional_collectivesrº  r¾   r  rÏ   r  ræ   )r¨   r¸   r"  r°   rº  r  s         ra   Úmethod_waitÚTensorVariable.method_wait;	  sd   € ö –6Ü—-‘-×#Ñ#×<Ñ<ØDóð õ 	Jå*áØØ�I‰I×"Ñ"Ø ¯}©}«Ð.@À"óó
ð 	
rc   c                 óP   • [        SSU< SU< S3SS/[        R                  QS9  g )NzTensor.random_ opzTensor.random_(args=ú	, kwargs=rp   ú This is currently not supported.z'Use the out-of-place version of this oprÚ   r¡  r  s       ra   Úmethod_random_ÚTensorVariable.method_random_P	  s:   € ô 	Ø'Ø+ d¡W¨J¨v©i°qÐ9Ø:à9ðä"×.Ñ.ðó		
rc   c                 ó\   • SU;   a&  [        SSU< SU< S3SS/[        R                  QS9  g )	NÚfromz-Tensor.uniform_ op called with `from` keywordzTensor.uniform_(args=rÀ  rp   rÁ  zAvoid using the `from` keyword.rÚ   r¡  r  s       ra   Úmethod_uniform_ÚTensorVariable.method_uniform_d	  sG   € ð �VÓÜØGØ0¨4©'°°F±9¸AÐ>Ø>à5ðä&×2Ñ2ðò	ð rc   r"  ÚnelementÚ
ndimensionr)  r0  r5  r•   Úas_subclassÚ
get_deviceÚelement_sizeÚnumpyrw  ÚbackwardÚdata_ptrr°  r¸  Ú__int__Ú	__float__Ú__neg__Ú__pos__Ú__abs__Ú
__invert__rê  Ú__len__Ú__iter__Ú__setitem__Ú__contains__Úaddcmul_Úaddcdiv_Úadd_Úresize_Ú
resize_as_Úsparse_resize_Úsparse_resize_and_clear_Úset_rU  r[  r‘  r�  Úshare_memory_ÚnewÚ
new_tensorr¶  ÚwaitÚrandom_Úuniform_c                 ó~   • U R                   (       d,  U R                  R                  R                  U5        SU l         g rí   )rž   r›   r¬   Ú_rename)r¨   r  s     ra   Úset_name_hintÚTensorVariable.set_name_hint²	  s,   € Ø× × Ø�J‰J�O‰O×#Ñ# DÔ)Ø $ˆDÔØrc   Úreversec                 ó   • SSK Jn  [        U[        5      (       d+  [	        U5      (       d  [
        R                  " U[        5      $ U(       a  X /OX/nUR                  R                  " S[        R                  /[        U0 5      Q76 nU" XS9$ ©Nr8   r  r   r¦  )r¾   r  r\   r™   rm   r?   rø   r  rÏ   r  rÖ  r�  r5   )r¨   r¸   rü   rì  r  r"  r›   s          ra   Únb_add_implÚTensorVariable.nb_add_impl¸	  sx   € õ 	+ä˜5¤.×1Ñ1Ô5JÈ5×5QÑ5QÜ"×(Ò(¨¬^Ó<Ð<Þ '�‰}¨d¨]ˆØ—	‘	×&Ò&ØœXŸ\™\ð
Ü,=¸dÀBÓ,Gò
ˆñ
  Ñ0Ð0rc   c           
      ó  • SSK Jn  UR                  5       (       d  [        R                  " U[
        5      $ U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rj   r?   rø   r  rÏ   r  rÖ  Úlshiftr5   ©r¨   r¸   rü   rì  r  ÚlhsÚrhss          ra   Únb_lshift_implÚTensorVariable.nb_lshift_implË	  óu   € õ 	+à×$Ñ$×&Ñ&Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ3DÀcÀZÐQSÓ3Tòó
ð 	
rc   c           
      ó  • SSK Jn  UR                  5       (       d  [        R                  " U[
        5      $ U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rj   r?   rø   r  rÏ   r  rÖ  Úrshiftr5   ró  s          ra   Únb_rshift_implÚTensorVariable.nb_rshift_implÝ	  rø  rc   c           
      ó  • SSK Jn  UR                  5       (       d  [        R                  " U[
        5      $ U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rj   r?   rø   r  rÏ   r  rÖ  Úor_r5   ró  s          ra   Ú
nb_or_implÚTensorVariable.nb_or_implï	  ót   € õ 	+à×$Ñ$×&Ñ&Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòó
ð 	
rc   c           
      ó  • SSK Jn  UR                  5       (       d  [        R                  " U[
        5      $ U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rj   r?   rø   r  rÏ   r  rÖ  Úand_r5   ró  s          ra   Únb_and_implÚTensorVariable.nb_and_impl
  st   € õ 	+à×$Ñ$×&Ñ&Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ1BÀCÀ:ÈrÓ1Ròó
ð 	
rc   c           
      ó  • SSK Jn  UR                  5       (       d  [        R                  " U[
        5      $ U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rj   r?   rø   r  rÏ   r  rÖ  Úxorr5   ró  s          ra   Únb_xor_implÚTensorVariable.nb_xor_impl
  r  rc   c           
      ó¨   • SSK Jn  U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R
                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rÏ   r  rÖ  r   r5   ró  s          ra   Únb_multiply_implÚTensorVariable.nb_multiply_impl%
  sR   € õ 	+æ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòó
ð 	
rc   c           
      ó¨   • SSK Jn  U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R
                  /[        XV/0 5      Q76 5      $ rÕ  )r¾   r  rÏ   r  rÖ  Úmatmulr5   ró  s          ra   Únb_matrix_multiply_implÚ&TensorVariable.nb_matrix_multiply_impl8
  sS   € õ 	+æ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ3DÀcÀZÐQSÓ3Tòó
ð 	
rc   c           
      ó(  • [        U[        5      (       d+  [        U5      (       d  [        R                  " U[
        5      $ SSKJn  U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r\   r™   rm   r?   rø   r  r¾   r  rÏ   r  rÖ  Úfloordivr5   ró  s          ra   Únb_floor_divide_implÚ#TensorVariable.nb_floor_divide_implI
  s€   € ô ˜5¤.×1Ñ1Ô5JÈ5×5QÑ5QÜ"×(Ò(¨¬^Ó<Ð<Ý*æ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤×!2Ñ!2ðÜ5FÈÀzÐSUÓ5Vòó
ð 	
rc   c           
      ó(  • [        U[        5      (       d+  [        U5      (       d  [        R                  " U[
        5      $ SSKJn  U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r\   r™   rm   r?   rø   r  r¾   r  rÏ   r  rÖ  Útruedivr5   ró  s          ra   Únb_true_divide_implÚ"TensorVariable.nb_true_divide_impl^
  s€   € ô ˜5¤.×1Ñ1Ô5JÈ5×5QÑ5QÜ"×(Ò(¨¬^Ó<Ð<Ý*æ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤×!1Ñ!1ðÜ4EÀsÀjÐRTÓ4Uòó
ð 	
rc   c           
      ó(  • [        U[        5      (       d+  [        U5      (       d  [        R                  " U[
        5      $ SSKJn  U(       a  X 4OX4u  pVU" UUR                  R                  " S[        R                  /[        XV/0 5      Q76 5      $ rÕ  )r\   r™   rm   r?   rø   r  r¾   r  rÏ   r  rÖ  Úmodr5   ró  s          ra   Únb_remainder_implÚ TensorVariable.nb_remainder_impls
  s}   € ô ˜5¤.×1Ñ1Ô5JÈ5×5QÑ5QÜ"×(Ò(¨¬^Ó<Ð<Ý*æ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòó
ð 	
rc   c                 ój   • U R                  5       R                  R                  S   n[        U5      S4$ )Nr½   T)ræ   r¬   r¿   r¡   r1  s      ra   Ú	hash_implÚTensorVariable.hash_implˆ
  s.   € ð �}‰}‹×#Ñ#×(Ñ(¨Ñ9ˆÜ�$‹x˜ˆ~Ðrc   c           
      ó  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X /OX/n[        R                  UUR                  R                  " S[        R                  /[        U0 5      Q76 S S9$ ©Nr   ©rö   ©rm   r?   rø   r  rõ   rù   rÏ   r  rÖ  Úsubr5   ©r¨   r¸   rü   rì  r"  s        ra   Únb_subtract_implÚTensorVariable.nb_subtract_impl�
  óy   € ô % U×+Ñ+Ü"×(Ò(¨¬^Ó<Ð<Þ '�‰}¨d¨]ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ$ÈÓ0Kòð ð &ð 
ð 	
rc   Úzc           
      ó6  • [        U[        5      (       d  [        U5      (       a  U(       a  [        R                  " U[
        5      $ SSKJn  U(       a  X 4OX4u  pgU" UUR                  R                  " S[        R                  /[        Xg/0 5      Q76 5      $ rÕ  )r\   r™   rm   r?   rø   r  r¾   r  rÏ   r  rÖ  Úpowr5   )r¨   r¸   rü   r)  rì  r  rô  rõ  s           ra   Únb_power_implÚTensorVariable.nb_power_impl¡
  s€   € ô ˜5¤.×1Ñ1Ô5JÈ5×5QÑ5QÖVWÜ"×(Ò(¨¬^Ó<Ð<Ý*æ$+�E‘=°$°‰ˆÙØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòó
ð 	
rc   )rž   rŒ   rŠ   rƒ   r|   r‹   rŽ   r‡   rˆ   r‰   r„   r…   r›   r†   r�   rä   ©NF©F)NNNN)rS   Nr�  )r¸   rH   rS   r™   )r¸   rH   rS   rµ  )¢r_   r�   r‘   r’   r“   r?   Ú_nonvar_fieldsÚstrr¥   rX   r]   r1   rn  ro  r|   rƒ   r„   rl   rV   r•   rz   r   r–   r´   rÆ   rË   rÒ   r×   rá   ræ   rê   rî   rú   r  Ústaticmethodr�   r  rC  rH  rM  rQ  rU  rX  r\  r_  rb  rf  rA   rj  rp  rs  rv  ry  r}  r	   r‚  rŠ  r�  r’  r—  rž  r¾  r   rø  rÏ  r­  rÖ  rn  Úpropertyrœ   r±  r²  rî  rô   r  r  r
  r#  Úmethod_nelementr&  Úmethod_ndimensionr*  r2  r6  r;  rG  rR  rV  rZ  re  rz  r   r„  r¨  r­  r²  rº  rÀ  rÄ  rÇ  rË  rÎ  rÒ  rÙ  rÞ  rã  rç  rë  rï  ró  rö  rë  r7  Úcacher¿  r  r  r  r  r$  r)  r'  r5  r8  r;  r>  rA  rE  rJ  rN  rR  rX  r\  rW  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—   Ú__classcell__©r¶   s   @ra   r™   r™   Û   sq  ø† ÙGð 	ØØØØØØØØØØØØØØðð  
×	'Ñ	'ð!€Nð&Y¨Sô YðB §¡ô Bð. )-Ø)-Ø@DØ$(ò#&/à�x‰x�~‰~ð&/ð �{‰{ð	&/ð
 —‘ð&/ð —‘ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð ð&/ð �S˜#�X‰ Ñ%ð&/ð �c˜3�h‘ $Ñ&ð&/ð  ˜U×0Ñ0°#Ð5Ñ6¸Ñ=ð!&/ð" ˜T‘kð#&/ð$ ð%&/ð& 
÷'&/ð &/ðR JNñ Ø-ð Ø;?À$¹;ð à	õ ð*E 3¨¡:ô Eð
Aà'ðAð ˜d™
ðAð 
ô	Að&
˜Cô 
ð

Ð:ð 
¸ô 
ð˜%Ÿ(™(Ÿ.™.ô ð˜Tô ð˜4ô ð@Ð:ð @¸ô @ð8à'ð8ð ð8ð ð	8ð
 
ô8ð" ð1˜%Ÿ,™,ð 1Ð+Aó 1ó ð1ðf[BØ-ð[BØ58ð[Bà	ô[Bðz
Ð8ð 
Àð 
Èô 
ð(Ð ;ð (Àô (ð)Ð!<ð )Àô )ð(Ð ;ð (Àô (ð)Ð!<ð )Àô )ð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ðà	ôðD 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Nà'ðNð ðNð �?Ñ#ð	Nð
 -ðNð 
ôNð`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&Ð#>ð &À?ô &ð
à'ð
ð 
ô
ð )Ð!<ð )Àô )ð
à'ð
ð 
ô
ð )Ð!<ð )Àô )ð
à'ð
ð 
ô
ð )Ð!<ð )Àô )ð
à'ð
ð 
ô
ð 'Ð$?ð 'ÀOô 'ð(à'ð(ð ð(ð "ð	(ð
 
ô(ð< Ø‡_�_ó
ó ó ð
ð&'Ð!<ð 'Àô 'ðPÐ!<ð PÀô Pð
Ð:ð 
¸ô 
ð
%Ð"=ð %À/ô %ð !òà'ðð ðð ð	ð �T‰zðð 
ˆt‰õð$7à'ð7ð ð7ð  Ñ%ð	7ð
 
ô7ð-à'ð-ð ð-ð ð	-ð
 
ô-ð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ð	
Ð'Bð 	
Àxô 	
ðà'ðð ðð "ð	ð
 
˜4Ñ	ôð$
Øð
à'ð
ð ð
ð "ð	
ð
 
˜4Ñ	ô
ð2
Ø-ð
à	!ô
ð
à'ð
ð ð
ð "ð	
ð
 
ô
ð*
à'ð
ð ð
ð "ð	
ð
 
ô
ð(à'ðð ðð "ð	ð
 
˜4Ñ	ôð,6Ø‘�{Ó#ð6à‘&˜Ó'ð6ð 	‘˜Ó%ð6ð 	‘F˜?Ó+ð	6ð
 	‰v�jÓ!ð6ð 	‘fÐ.Ó/ð6ð 	™VÐ$<Ó=ð6ð 	™Ð2Ó3ð6ð 	‘fÐ.Ó/ð6ð 	™Ð 4Ó5ð6ð 	‘�{Ó#ð6ð 	‘vÐ0Ó1ð6ð 	‘fÐ.Ó/ð6ð 	™Ð2Ó3ð6ð 	‘˜Ó%ð6ð  	‘&˜Ó'ð!6ð" 	‘F˜?Ó+ñ#6ð$ 	‘F˜?Ó+ð%6ð& 	™&Ð!6Ó7ð'6ð( 	™Ð 4Ó5ð)6ð* 	‘�{Ó#ð+6ð, 	‘6˜.Ó)ð-6ð. 	‘VÐ,Ó-ð/6ð0 	‘6˜.Ó)ð16ð2 	‘6˜.Ó)ð36ð4 	‘6˜.Ó)ð56ð6 	‘fÐ.Ó/ð76ð8 	‘vÐ0Ó1ð96ð: 	‘6˜.Ó)ð;6ð< 	‘F˜?Ó+ð=6ð> 	‘vÐ0Ó1ð?6ð@ 	™Ð2Ó3ðA6ðB 	‘F˜?Ó+ðC6ðD 	‘F˜?Ó+òE6ðF 	‘�{Ó#ðG6ðH 	‘6˜.Ó)ðI6ðJ 	‘fÐ.Ó/ðK6ðL 	™&Ð!6Ó7ðM6ðN 	#¡FÐ+JÓ$KðO6ðP 	‘�{Ó#ðQ6ðR 	™Ð 4Ó5ðS6ðT 	-©fØ5ó/
ðU6ðZ 	™&Ð!6Ó7ð[6ð\ 	‘6˜.Ó)ð]6ð^ 	™Ð 4Ó5ð_6ð` 	‰v�jÓ!ða6ðb 	‘fÐ.Ó/ðc6ðd 	™6Ð"8Ó9ðe6ðf 	‘�{Ó#ðg6ðh 	‘6˜.Ó)ði6ðj 	‘F˜?Ó+ñk6€Jðp #ð ¨$ô ð ñ	1à'ð1ð ð1ð ð	1ð
 
õ1ð. ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð, ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð. ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð* ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð2 ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð2 ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð*Ð7ð ¸EÀ#ÀtÀ)Ñ<Lô ð ñ	
à'ð
ð ð
ð ð	
ð
 
õ
ð. ñ
à'ð
ð ð
ð ˜TÑ!ð	
ð
 ð
ð 
÷
ó 
rc   r™   c                   ó  ^ • \ rS rSrSrSS1\R                  krS\4S jr\	 S;SS	S\
S\
S-  S
\
SS4
S jj5       rS\
S\
S\
SS4U 4S jjrS\4S jrS\4S jrS\
4S jrSS	S\4S jrSS	S\S\S\4S jrSS	S\
S\4S jr S;S\S   S\\-  \-  4S jjrSS	S\S\\   S\\\4   S\4
S jrSS	S\4U 4S jjrSS	S\4S jrSS	S\
S\
S\4S  jr S<SS	S\S!\S\4S" jjr  S<SS	S\S!\S\4S# jjr! S<SS	S\S!\S\4S$ jjr" S<SS	S\S!\S\4S% jjr# S<SS	S\S!\S\4S& jjr$ S<SS	S\S!\S\4S' jjr% S<SS	S\S!\S\4S( jjr& S<SS	S\S!\S\4S) jjr' S<SS	S\S!\S\4S* jjr( S<SS	S\S!\S\4S+ jjr) S<SS	S\S!\S\4S, jjr*SS	S\4S- jr+SS	S\
S\
S\4S. jr,SS	S\4S/ jr-SS	S\
S\
S\4S0 jr.SS	S\/\\4   4S1 jr0SS	S\4S2 jr1SS	S\
S\
S\4S3 jr2SS	S\4S4 jr3 S<SS	S\S5\S-  S!\S\4
S6 jjr4SS	S\
S\
S\4S7 jr5S\4S8 jr6S\4S9 jr7S:r8U =r9$ )=rõ   i¸
  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.
r›   rö   rS   c                 ó,   • [        U R                  5      $ rä   )Úreprrö   r®   s    ra   r×   ÚSymNodeVariable.debug_reprÅ
  s   € Ü�D—L‘LÓ!Ð!rc   Nr¸   rH   r  r?   c                 ó�  • Uc  [        UR                  U5      nSUR                  R                  ;   aE  UR                  R                  S   U:w  a(  [        SUR                  R                  S    SU 35      e[	        UR                  U5        [        U[        R                  [        [        45      (       aB  [        U[        R                  5      (       a  [        U5      OUn[        R                  " X5      $ [        X#40 UD6nUR                  R                  S:w  a%  UR                  R                  R!                  U5        U$ )Nr½   zproxy example_value z != r²   )r0   r¬   r¿   r)  r6   r\   ÚsympyÚIntegerrl   rV   r?   rø   rõ   rµ   rÏ   r©  Úrecord_proxyable_vt)rI  r¸   r›   rö   r  ry  s         ra   rù   Ú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Ñ&H”c˜'”lÈgˆGÜ"×(Ò(¨Ó5Ð5ä˜eÑ8°Ñ8ˆØ�:‰:�=‰=˜MÓ)Ø�I‰I×$Ñ$×8Ñ8¸Ô=Øˆ
rc   r°   c                 óL   >• [         TU ]  " S0 UD6  Xl        X l        S U l        g ©Nr�   )r³   r´   r›   rö   Ú_tensor_var)r¨   r›   rö   r°   r¶   s       €ra   r´   ÚSymNodeVariable.__init__â
  s%   ø€ Ü‰ÒÑ"˜6Ò"ØŒ
àŒØ26ˆÕrc   c                 óª   • [        U R                  [        5      (       a   U R                  R                  R                  $ [        U R                  5      $ rä   )r\   rö   r   r¬   Úpytyper•   r®   s    ra   rê   ÚSymNodeVariable.python_typeé
  s8   € Ü�d—l‘l¤H×-Ñ-Ø—<‘<×$Ñ$×+Ñ+Ð+ä˜Ÿ™Ó%Ð%rc   c                 ó   • grí   r�   r®   s    ra   rj   ÚSymNodeVariable.is_symnode_likeï
  rð   rc   c                 ó   • U R                   $ rä   rå   r®   s    ra   ræ   ÚSymNodeVariable.as_proxyò
  rè   rc   c                 óX  • [        U R                  [        R                  5      (       a  U $ [        U R                  [        R                  [        R
                  45      (       d!  [        S[        U R                  5       35      e[        R                  XR                  5       S:g  5      $ )Nz!Expected SymInt or SymFloat, got r   )r\   rö   rX   r÷   ÚSymIntÚSymFloatr)  r•   rõ   rù   ræ   rà   s     ra   rú   ÚSymNodeVariable.nb_bool_implõ
  s{   € ô �d—l‘l¤E§M¡M×2Ñ2ØˆKÜ˜$Ÿ,™,¬¯©´u·~±~Ð(F×GÑGÜ Ø3´D¸¿¹Ó4FÐ3GÐHóð ô ×%Ñ% b¯-©-«/¸QÑ*>Ó?Ð?rc   rü   rµ   c                 óŽ  • [        U[        [        [        45      (       dN  US;   a.  [        U   n[
        R                  " X" [        5       S5      5      $ [        R                  " [        5      $ [        U   nUR                  R                  SX@R                  5       UR                  5       40 5      n[        R                  XSS9$ )z4SymNode tp_richcompare: symbolic numeric comparison.©Ú__eq__Ú__ne__Nr   r"  )r\   rõ   rA   r™   r-   r?   rø   rP  rù   r  rÏ   r  ræ   )r¨   r¸   rü   rµ   r  r›   s         ra   r  Ú#SymNodeVariable.tp_richcompare_impl  s¨   € ô ˜%¤/Ô3CÄ^Ð!T×UÑUØÐ)Ó)Ü.¨rÑ2�Ü&×,Ò,¨R°´v³xÀÓ1FÓGÐGÜ#×*Ò*¬>Ó:Ð:Ü& rÑ*ˆØ—	‘	×&Ñ&Ø˜U§]¡]£_°e·n±nÓ6FÐ$GÈó
ˆô ×%Ñ% b¸Ð%Ð>Ð>rc   r|   c           	      óÖ   • U R                   cQ  [        R                  " U[        R                  5      R                  X/S[        R                  " X5      05      U l         U R                   $ )Nr|   )rD  r?   rø   rX   Úscalar_tensorr   )r¨   r¸   r|   s      ra   Ú	as_tensorÚSymNodeVariable.as_tensor  s[   € Ø×ÑÑ#Ü.×4Ò4Ø”E×'Ñ'ó ç‰m˜B ¨´/×2GÒ2GÈÓ2RÐ(SÓTð Ôð ×ÑÐrc   Úoutput_graphrG   c                 ó  •  [        U R                  5      $ ! [         a^  n[        R                  R
                  R                  R                  (       a  e [        [        R                  S[        U5       3SS9eS nAff = f)Nz5Consider annotating your code using torch._check*(). Úconstrain_as_size_example)Ú	case_name)r   rö   r   rX   rn  ÚexperimentalÚ_configÚno_data_dependent_graph_breakr&   r'   ÚANTI_PATTERNr1  )r¨   rZ  r  s      ra   rÅ  ÚSymNodeVariable.evaluate_expr  si   € ð
	Ü §¡Ó-Ð-øÜ*ó 	Ü�x‰x×$Ñ$×,Ñ,×J×JØäÜ×*Ñ*ØGÌÈAËÀxÐPØ5ñð ûð		ús   ‚ —
A?¡AA:Á:A?r  r"  c           
      ór   • SSK Jn  U" UUR                  R                  " SU/[	        U /UQU5      Q76 5      $ )Nr8   r  rô   )r¾   r  rÏ   r  r5   )r¨   r¸   r  r"  r°   r  s         ra   rô   ÚSymNodeVariable.call_method,  sF   € õ 	+áØØ�I‰I×"Ò"ØØðô # D =¨4 =°&Ó9òó
ð 	
rc   c                 ó¼   >• U R                  5       nU[        [        4;   a-  [        R                  R                  U R                  5       5      $ [        TU ]!  U5      $ rä   )	rê   rl   rV   r   rA   rù   rÅ  r³   rÄ  )r¨   r¸   rG  r¶   s      €ra   rÄ  ÚSymNodeVariable.nb_index_impl>  sO   ø€ ð ×!Ñ!Ó#ˆØ”cœ4�[Ó Ü×-Ñ-×4Ñ4°T×5GÑ5GÓ5IÓJÐJÜ‰wÑ$ RÓ(Ð(rc   c           	      óz   • SSK Jn  U" UUR                  R                  S[        U R                  5       40 5      S9$ rî  )r¾   r  rÏ   r  r   ræ   rØ  s      ra   rÇ  ÚSymNodeVariable.nb_int_implL  s>   € õ 	+áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ñ
ð 	
rc   c                 ó$   • U R                  U5      $ rä   rÊ  r  s       ra   rË  ÚSymNodeVariable.method___int___  s   € ð ×Ñ Ó#Ð#rc   rì  c           
      ó  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X /OX/n[        R                  UUR                  R                  " S[        R                  /[        U0 5      Q76 S S9$ r!  )rm   r?   rø   r  rõ   rù   rÏ   r  rÖ  r�  r5   r%  s        ra   rï  ÚSymNodeVariable.nb_add_impld  r(  rc   c           
      óö   • UR                  5       (       d  [        R                  " U[        5      $ [        R                  UUR                  R                  " S[        R                  /[        X/0 5      Q76 S S9$ r!  )rj   r?   rø   r  rõ   rù   rÏ   r  rÖ  rþ  r5   ©r¨   r¸   rü   rì  s       ra   rÿ  ÚSymNodeVariable.nb_or_implv  ós   € ð ×$Ñ$×&Ñ&Ü"×(Ò(¨¬^Ó<Ð<Ü×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ4À-ÐQSÓ0Tòð ð &ð 
ð 	
rc   c           
      óö   • UR                  5       (       d  [        R                  " U[        5      $ [        R                  UUR                  R                  " S[        R                  /[        X/0 5      Q76 S S9$ r!  )rj   r?   rø   r  rõ   rù   rÏ   r  rÖ  r  r5   rn  s       ra   r  ÚSymNodeVariable.nb_and_impl†  ss   € ð ×$Ñ$×&Ñ&Ü"×(Ò(¨¬^Ó<Ð<Ü×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ1BÀDÀ=ÐRTÓ1Uòð ð &ð 
ð 	
rc   c           
      óö   • UR                  5       (       d  [        R                  " U[        5      $ [        R                  UUR                  R                  " S[        R                  /[        X/0 5      Q76 S S9$ r!  )rj   r?   rø   r  rõ   rù   rÏ   r  rÖ  r  r5   rn  s       ra   r  ÚSymNodeVariable.nb_xor_impl–  rp  rc   c           
      ó  • UR                  5       (       d  [        R                  " U[        5      $ U(       a  X /OX/n[        R                  UUR                  R                  " S[        R                  /[        U0 5      Q76 S S9$ r!  )rj   r?   rø   r  rõ   rù   rÏ   r  rÖ  rò  r5   r%  s        ra   rö  ÚSymNodeVariable.nb_lshift_impl¦  ó}   € ð ×$Ñ$×&Ñ&Ü"×(Ò(¨¬^Ó<Ð<Þ '�‰}¨d¨]ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ3DÀTÈ2Ó3Nòð ð &ð 
ð 	
rc   c           
      ó  • UR                  5       (       d  [        R                  " U[        5      $ U(       a  X /OX/n[        R                  UUR                  R                  " S[        R                  /[        U0 5      Q76 S S9$ r!  )rj   r?   rø   r  rõ   rù   rÏ   r  rÖ  rú  r5   r%  s        ra   rû  ÚSymNodeVariable.nb_rshift_impl·  rw  rc   c           
      ó  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X /OX/n[        R                  UUR                  R                  " S[        R                  /[        U0 5      Q76 S S9$ r!  r#  r%  s        ra   r&  Ú SymNodeVariable.nb_subtract_implÈ  r(  rc   c           
      ó
  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X 4OX4u  pE[        R                  UUR                  R                  " S[        R                  /[        XE/0 5      Q76 S S9$ r!  )rm   r?   rø   r  rõ   rù   rÏ   r  rÖ  r   r5   ©r¨   r¸   rü   rì  rô  rõ  s         ra   r  Ú SymNodeVariable.nb_multiply_implÚ  s}   € ô % U×+Ñ+Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòð ð &ð 
ð 	
rc   c           
      ó
  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X 4OX4u  pE[        R                  UUR                  R                  " S[        R                  /[        XE/0 5      Q76 S S9$ r!  )rm   r?   rø   r  rõ   rù   rÏ   r  rÖ  r  r5   r}  s         ra   r  Ú$SymNodeVariable.nb_floor_divide_implì  s€   € ô % U×+Ñ+Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤×!2Ñ!2ðÜ5FÈÀzÐSUÓ5Vòð ð &ð 
ð 	
rc   c           
      ó
  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X 4OX4u  pE[        R                  UUR                  R                  " S[        R                  /[        XE/0 5      Q76 S S9$ r!  )rm   r?   rø   r  rõ   rù   rÏ   r  rÖ  r  r5   r}  s         ra   r  Ú#SymNodeVariable.nb_true_divide_implý  s€   € ô % U×+Ñ+Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤×!1Ñ!1ðÜ4EÀsÀjÐRTÓ4Uòð ð &ð 
ð 	
rc   c           
      ó
  • [        U5      (       d  [        R                  " U[        5      $ U(       a  X 4OX4u  pE[        R                  UUR                  R                  " S[        R                  /[        XE/0 5      Q76 S S9$ r!  )rm   r?   rø   r  rõ   rù   rÏ   r  rÖ  r  r5   r}  s         ra   r  Ú!SymNodeVariable.nb_remainder_impl  s}   € ô % U×+Ñ+Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòð ð &ð 
ð 	
rc   c           	      óz   • SSK Jn  U" UUR                  R                  S[        U R                  5       40 5      S9$ rî  )r¾   r  rÏ   r  r   ræ   rØ  s      ra   rÎ  ÚSymNodeVariable.nb_float_impl  s>   € õ
 	+áØØ—)‘)×(Ñ(ØÜØ—‘“Ð"Øó	ñ
ð 	
rc   c                 ó$   • U R                  U5      $ rä   rÑ  r  s       ra   rÒ  Ú SymNodeVariable.method___float__0  s   € ð ×!Ñ! "Ó%Ð%rc   c                 óp   • [         R                  U[        R                  " U R	                  5       5      S S9$ ©Nr"  )rõ   rù   rÖ  r×  ræ   rà   s     ra   rÙ  Ú SymNodeVariable.nb_negative_impl5  ó4   € ô ×%Ñ%ØÜ�LŠL˜Ÿ™›Ó)Øð &ð 
ð 	
rc   c                 ó$   • U R                  U5      $ rä   rÝ  r  s       ra   rÞ  ÚSymNodeVariable.method___neg__?  ó   € ð ×$Ñ$ RÓ(Ð(rc   c                 ó8   • [        U R                  5       5      S4$ r.  ©ÚhashrÅ  rà   s     ra   r  ÚSymNodeVariable.hash_implD  s   € Ü�D×&Ñ&Ó(Ó)¨5Ð0Ð0rc   c                 óp   • [         R                  U[        R                  " U R	                  5       5      S S9$ rŠ  )rõ   rù   rÖ  râ  ræ   rà   s     ra   rã  Ú SymNodeVariable.nb_positive_implG  rŒ  rc   c                 ó$   • U R                  U5      $ rä   ræ  r  s       ra   rç  ÚSymNodeVariable.method___pos__Q  r�  rc   c                 óp   • [         R                  U[        R                  " U R	                  5       5      S S9$ rŠ  )rõ   rù   rÖ  rê  ræ   rà   s     ra   rë  Ú SymNodeVariable.nb_absolute_implV  rŒ  rc   r)  c           
      óF  • Ub  [         R                  " U[        5      $ [        U5      (       d  [         R                  " U[        5      $ U(       a  X 4OX4u  pV[        R                  UUR                  R                  " S[        R                  /[        XV/0 5      Q76 S S9$ r!  )r?   rø   r  rm   rõ   rù   rÏ   r  rÖ  r+  r5   )r¨   r¸   rü   r)  rì  rô  rõ  s          ra   r,  ÚSymNodeVariable.nb_power_impl`  s•   € ð ‰=Ü"×(Ò(¨¬^Ó<Ð<Ü$ U×+Ñ+Ü"×(Ò(¨¬^Ó<Ð<Þ$+�E‘=°$°‰ˆÜ×%Ñ%ØØ�I‰I×"Ò"Ø¤§¡ðÜ0AÀ3À*ÈbÓ0Qòð ð &ð 
ð 	
rc   c                 ó$   • U R                  U5      $ rä   rî  r  s       ra   rï  ÚSymNodeVariable.method___abs__t  r�  rc   c                 ó   • grí   r�   r®   s    ra   Úis_python_hashableÚ"SymNodeVariable.is_python_hashabley  rð   rc   c                 ó4   • [        U R                  5       5      $ rä   r‘  r®   s    ra   Úget_python_hashÚSymNodeVariable.get_python_hash|  s   € ô �D×&Ñ&Ó(Ó)Ð)rc   )rD  r›   rö   rä   r/  ):r_   r�   r‘   r’   r“   r?   r0  r1  r×   Úclassmethodr   rù   r´   r•   rê   rV   rj   ræ   rú   r  r™   rX  r
   rl   rk   rÅ  rø  r­  rô   rÄ  rÇ  rË  rï  rÿ  r  r  rö  rû  r&  r  r  r  r  rÎ  rÒ  rÙ  rÞ  rz   r  rã  rç  rë  r,  rï  rŸ  r¢  r—   r7  r8  s   @ra   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ð)à	ô)ð

à'ð
ð 
ô
ð ñ
à'ð
ð ð
ð ˜TÑ!ð	
ð
 ð
ð 
õ
ð()Ø-ð)Ø69ð)ØEHð)à	ô)ð
 Dô ð* ÷ *ò *rc   rõ   c                   ó  ^ • \ rS rSrSr\SSS\R                  R                  S\	SS 4S j5       r
S\4S	 jrSSS\\\4   4S
 jrSSS\S\S\4S jrSSS\4S jrSSS\4S jrSSS\S\4S jr\" \S5      \" \S5      \" S 5      \" S 5      \" S 5      \" S 5      S.rSSS\S\4S jr\S\S\\   S\\\4   S\\\   \\\4   4   4S j5       rSSS\S\\   S\\\4   S\4
U 4S jjrS\4S jrSSS\S\S-  S\4S  jrS!r U =r!$ )"r]  i‚  zq
Represents a np.ndarray, but backed by torch Tensor via torch._numpy.ndarray.
Use this for Tensor.numpy() call.
r¸   rH   r›   r  rS   c                 ó.   • SSK Jn  U" S[        U US.UD6$ )Nr8   rþ   rÂ  r�   )r¾   rÿ   r]  )r¸   r›   r  rÿ   s       ra   rù   ÚNumpyNdarrayVariable.createˆ  s,   € õ 	/á ð 
Ü+ØØñ
ð ñ	
ð 	
rc   c                 ó   • gr.  r�   r®   s    ra   Úis_hashableÚ NumpyNdarrayVariable.is_hashable•  s   € Ørc   c                 ó"   • SSK Jn  U" US5        g )Nr   )r!   z unhashable type: 'numpy.ndarray')r@  r!   )r¨   r¸   r!   s      ra   r  ÚNumpyNdarrayVariable.hash_impl˜  s   € Ý*á˜Ð?Õ@rc   rü   rµ   c                 óB  • SSK Jn  [        U[        [        [
        45      (       d  [        R                  " [        5      $ [        U   nUR                  R                  SU" U5      U R                  5       UR                  5       40 5      n[        R                  X5      $ )zKndarray tp_richcompare: element-wise comparison via numpy_operator_wrapper.r   )Únumpy_operator_wrapperr   )rZ   r®  r\   rõ   rA   r™   rù   r  r-   rÏ   r  ræ   r]  )r¨   r¸   rü   rµ   r®  r  r›   s          ra   r  Ú(NumpyNdarrayVariable.tp_richcompare_impl�  s�   € õ 	3ä˜%¤/Ô3CÄ^Ð!T×UÑUÜ#×*Ò*¬>Ó:Ð:Ü& rÑ*ˆØ—	‘	×&Ñ&ØÙ" 5Ó)Ø�]‰]‹_˜eŸn™nÓ.Ð/Øó	
ˆô $×*Ñ*¨2Ó5Ð5rc   c                 óº   • U R                  5       R                  R                  S   n[        R                  " U[
        R                  " U5      R                  5      $ rÕ   )ræ   r¬   r¿   r?   rø   ÚtnpÚndarrayr…   ©r¨   r¸   r½   s      ra   Ú	_get_ndimÚNumpyNdarrayVariable._get_ndim³  s@   € ØŸ™›×,Ñ,×1Ñ1°/ÑBˆÜ×$Ò$ R¬¯ª°]Ó)C×)HÑ)HÓIÐIrc   c                 óº   • U R                  5       R                  R                  S   n[        R                  " U[
        R                  " U5      R                  5      $ rÕ   )ræ   r¬   r¿   r?   rø   r±  r²  rY  r³  s      ra   Ú_get_itemsizeÚ"NumpyNdarrayVariable._get_itemsize·  s@   € ØŸ™›×,Ñ,×1Ñ1°/ÑBˆÜ×$Ò$ R¬¯ª°]Ó)C×)LÑ)LÓMÐMrc   r  c                 ó’   • SSK Jn  UR                  R                  SX0R	                  5       U40 5      n[
        R                  X5      $ )Nr   ©Únumpy_attr_wrapperr   )rZ   r»  rÏ   r  ræ   r]  rù   )r¨   r¸   r  r»  r›   s        ra   Ú_get_numpy_attrÚ$NumpyNdarrayVariable._get_numpy_attr»  sA   € õ 	/à—	‘	×&Ñ&ØÐ/·-±-³/À4Ð1HÈ"ó
ˆô $×*Ñ*¨2Ó5Ð5rc   Nc                 ó&   • U R                  US5      $ rK  ©r¼  ©r  r¸   s     ra   rh  ÚNumpyNdarrayVariable.<lambda>È  s   €  !×"3Ñ"3°B¸Ô"<rc   c                 ó&   • U R                  US5      $ )NÚrealr¿  rÀ  s     ra   rh  rÁ  É  ó   €  Q×%6Ñ%6°r¸6Ô%Brc   c                 ó&   • U R                  US5      $ )NÚimagr¿  rÀ  s     ra   rh  rÁ  Ê  rÄ  rc   c                 ó&   • U R                  US5      $ )NÚflatr¿  rÀ  s     ra   rh  rÁ  Ë  rÄ  rc   )r…   rY  rd   rÃ  rÆ  rÈ  c                 ó|  ^ ^^^^• SSK Jm  SSKJm  T R	                  5       R
                  R                  S   n[        R                  " U5      nS[        4UUU UU4S jjnTS;   aJ  [        [        UT5      =n5      (       d'  [        R                  " T[        S	 U 5       5      5      $ U" 5       $ TS
:X  aC  [        UR                  =n5      (       d   [        R                  " T[        U5      5      $ U" 5       $ TS;   a  [!        SST  ST 3ST S3/ S9  ["        eTS:X  a  [!        SST  ST 3ST S3/ S9  ["        e)Nr   rº  r8   r  r½   rS   c            	      ón   >• T" TTR                   R                  STTR                  5       T 40 5      5      $ )Nr   )rÏ   r  ræ   )r  r»  r¨   r¸   r  s   €€€€€ra   Úinsert_into_graphÚ@NumpyNdarrayVariable.tp_getattro_impl.<locals>.insert_into_graphÝ  s;   ø€ Ù ØØ—	‘	×&Ñ&Ø#Ð%7¸$¿-¹-»/È4Ð9PÐRTóóð rc   )r{   r�   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frä   r  r  s     ra   r  Ú8NumpyNdarrayVariable.tp_getattro_impl.<locals>.<genexpr>ô  s   é € Ð6IÂqÀ!´s¸1·v°vÂqùr  rœ   )r€  r  r|   z$Unsupported ndarray attribute accessr€  r¡  z3Dynamo currently does not support tracing `ndarray.ró  rÚ   Ú__version__z&Unsupported ndarray.__version__ access)rZ   r»  r¾   r  ræ   r¬   r¿   r±  r²  r?   r   r^   rø   rz   rœ   rl   r$   r0  )	r¨   r¸   r  r½   Úexample_ndarrayrË  r  r»  r  s	   ```    @@ra   r¾  Ú%NumpyNdarrayVariable.tp_getattro_implÎ  sI  ü€ õ 	/Ý*àŸ™›×,Ñ,×1Ñ1°/ÑBˆÜŸ+š+ mÓ4ˆð	¤?÷ 	ó 	ð* Ð&Ó&Ü#¬°À$Ó)GÐ$G A×HÑHÜ&×,Ò,¨R´Ñ6IÁqÓ6IÓ1IÓJÐJÙ$Ó&Ð&Ø�V‹^Ü#¨×)=Ñ)=Ð$= A×>Ñ>Ü&×,Ò,¨R´°Q³Ó8Ð8Ù$Ó&Ð&ØÐ/Ó/ÜØ>Ø+¨D¨6°°4°&Ð9ØQÐRVÐQWÐWYÐZØò	ô "Ð!ð �]Ó"ÜØ@Ø+¨D¨6°°4°&Ð9ØQÐRVÐQWÐWYÐZØò	ô "Ð!rc   r"  r°   c                 ó’   • U S:X  a9  SSS.nUR                  5        VVs0 s H  u  pEUR                  XD5      U_M     nnnX4$ s  snnf )NÚclipÚminÚmax)Úa_minÚa_max)rÂ   rÀ   )r  r"  r°   Úkwargs_renamerÄ   rÅ   s         ra   Ú
patch_argsÚNumpyNdarrayVariable.patch_args
  sO   € ð �6‹>Ø&+°eÑ<ˆMØ=C¿\¹\¼^ÔLº^±T°Q�m×'Ñ'¨Ó-¨qÒ0¹^ˆFÑLØˆ|Ðùó Ms   ŸAc                 ó�  >• SSK Jn  SSKJn  U R	                  X#U5      u  p4US:X  a›  SSKJn  S nSU;   a  US   nO[        U5      S:”  a  US   nUS L=(       a    UR                  S	5      n	[        X‡5      =(       a    UR                  [        L n
U	(       d  U
(       a%  U" S
SU  SU SU SU 3S/ [        R                  QS9  US;   a  [        TU ]=  XX45      $ US;   a  U" SSU  SU SU SU 3SU S3/ S9  UR                   R"                  " SU" U5      /[%        U /['        U5      -   U5      Q76 n[(        R+                  X5      $ )Nr   r�  )Únumpy_method_wrapperÚastyper8   )ÚBuiltinVariabler|   r   ÚOzndarray.astype(object)rñ  r¡  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Ú   )rÖ  rœ   rw  r×  )ÚtostringÚtobytesÚ__delattr__zUnsupported ndarray method callz	`ndarray.z&()` is not modelled in `torch._numpy`.r   )r@  r$   rZ   rÜ  rÙ  ÚbuiltinrÞ  rÄ  Úis_constant_matchr\   r½  rP  r   r.  r³   rô   rÏ   r  r5   rø  r]  rù   )r¨   r¸   r  r"  r°   r$   rÜ  rÞ  Ú	dtype_argÚis_object_strÚis_object_typer›   r¶   s               €ra   rô   Ú NumpyNdarrayVariable.call_method  sy  ø€ õ 	(Ý0à—‘ t°6Ó:‰ˆà�8ÓÝ0àˆIØ˜&Ó Ø" 7™O‘	Ü�T“˜Q“Ø  ™G�	Ø%¨TÐ1×V°i×6QÑ6QÐRUÓ6VˆMä˜9Ó6×Q¸9¿<¹<Ì6Ð;Qð ö ¦ÙØ4Ø*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð9ð ;Ô-×9Ñ9Ð:ò	ð Ð<Ó<ä‘7Ñ& r°Ó>Ð>ØÐ9Ó9ÙØ9Ø& t f¨A¨d¨V°1°T°F¸!¸F¸8ÐDØ'¨ vÐ-SÐTØò	ð —	‘	×&Ò&ØÙ  Ó&ð
ô  ˜v¬¨T«
Ñ2°FÓ;ò
ˆô
 $×*Ñ*¨2Ó5Ð5rc   c                 ó<   • [         b  [         R                  $ [        $ rä   )rb  r²  r   r®   s    ra   rê   Ú NumpyNdarrayVariable.python_typeG  s   € Ü‰>Ü—:‘:ÐäˆOrc   râ  rR   c                 óJ   • Uc  [        US5        U R                  USX#/0 5      $ )Nzcannot delete array elementsrØ  )r"   rô   r(  s       ra   r)  Ú*NumpyNdarrayVariable.mp_ass_subscript_implM  s-   € ð ‰=Ü˜bÐ"@ÔAØ×Ñ  M°C°<ÀÓDÐDrc   r�   )"r_   r�   r‘   r’   r“   r2  rX   rn  ro  r   rù   rV   r©  rz   rl   r  r?   r1  r  r´  r·  r¼  r<   Ú	tp_getsetr¾  rø  r­  rÙ  rô   r•   rê   r)  r—   r7  r8  s   @ra   r]  r]  ‚  s-  ø† ñð
 ð

Ø'ð

Ø05·±·±ð

ØKNð

à	ó

ó ð

ð˜Tô ðAÐ7ð A¸EÀ#ÀtÀ)Ñ<Lô Að
6à'ð6ð ð6ð ð	6ð
 
ô6ð,JÐ7ð J¸Oô JðNÐ ;ð NÀô Nð6Ø-ð6Ø58ð6à	ô6ñ �y $Ó'Ù˜=¨$Ó/ÙÑ<Ó=ÙÑBÓCÙÑBÓCÙÑBÓCñ€Ið:"Ø-ð:"Ø58ð:"à	ô:"ðx ðØðØ˜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ô ðEà'ðEð ðEð  Ñ%ð	Eð
 
÷Eò Erc   r]  c                   óØ   ^ • \ rS rSrSrSS1\R                  krSSS.S\R                  R                  S\
\-  S-  S\S	\S
S4
U 4S jjjr\ SS\S\
\-  S-  S\S
S 4S jj5       rSrU =r$ )ÚUnspecializedPythonVariableiX  zG
This is a 1-element tensor represents unspecialized python float/int.
Ú	raw_valueÚneed_unwrapNT©rð  rñ  r›   r°   rS   c                ó@   >• [         TU ]  " U40 UD6  X l        X0l        g rä   )r³   r´   rð  rñ  )r¨   r›   rð  rñ  r°   r¶   s        €ra   r´   Ú$UnspecializedPythonVariable.__init__c  s"   ø€ ô 	‰Ò˜Ñ) &Ò)Ø"ŒØ&Õrc   Útensor_variablec                 óH   • [        S0 [        UR                  5      DUUS.D6$ )Nrò  r�   )rï  r­  Ú__dict__)rI  rõ  rð  rñ  s       ra   Úfrom_tensor_variableÚ0UnspecializedPythonVariable.from_tensor_variableo  s/   € ô +ñ 
Ü�?×+Ñ+Ó,ð
àØ#ó
ð 	
rc   )rñ  rð  r�  )r_   r�   r‘   r’   r“   r™   r0  rX   rn  ro  rk   rl   rV   r   r´   r¤  rø  r—   r7  r8  s   @ra   rï  rï  X  sÂ   ø† ñð
 	Øðð 
×	&Ñ	&ð€Nð )-Ø ò
'à�x‰x�~‰~ð
'ð ˜3‘; Ñ%ð	
'ð
 ð
'ð ð
'ð 
÷
'ð 
'ð ð
 !ñ	
à'ð
ð ˜3‘; Ñ%ð
ð ð	
ð
 
'ô
ó ö
rc   rï  c                   óž   ^ • \ rS rSrSrS1\R                  krS\R                  R                  S\
SS4U 4S jjr\S	\SS 4S
 j5       rSrU =r$ )ÚFakeItemVariablei~  z…An unspecialized python variable which prevents access to the underlying raw value.
This is needed if item is called on a FakeTensor.rñ  r›   r°   rS   Nc                 óX   >• UR                  SS5      n[        TU ]  " U40 UD6  X0l        g )Nrñ  F)r®  r³   r´   rñ  )r¨   r›   r°   rñ  r¶   s       €ra   r´   ÚFakeItemVariable.__init__‡  s+   ø€ Ø—j‘j °Ó6ˆÜ‰Ò˜Ñ) &Ò)Ø&Õrc   rõ  c                 ó>   • [        S0 [        UR                  5      D6$ rC  )rû  r­  r÷  )rI  rõ  s     ra   rø  Ú%FakeItemVariable.from_tensor_variableŒ  s   € ô  ÑA¤$ ×'?Ñ'?Ó"@ÑAÐArc   )rñ  )r_   r�   r‘   r’   r“   r™   r0  rX   rn  ro  r   r´   r¤  rø  r—   r7  r8  s   @ra   rû  rû  ~  sl   ø† ñ9ð 	ðà	×	&Ñ	&ð€Nð
'˜eŸh™hŸn™nð '¸ð 'À÷ 'ð
 ðBØ,ðBà	óBó öBrc   rû  c                   óL   • \ rS rSrSSS\\   S\\\4   S\4S jrS\	4S jr
S	rg
)rN  i“  r¸   rH   r"  r°   rS   c           	      ó>  • SSK Jn  U R                  R                  nU[        R
                  R                  L a—  S n[        U5      S:X  aU  US   R                  5       (       a=  [        U5      S:X  a.  US   nUR                  " XU R                  U R                  5      nOd[        SU R                   SU SU S3SS	/[        R                  QS
9  O3[        R                  " X5      R                  X/[!        U5      -   U5      nUc  [#        S5      eU R                  R$                  nU[        R
                  R$                  La'  [        R                  " X5      R                  X/U5        UR&                  R(                  R+                  [-        5       U[.        S9  U$ )Nr8   rJ   r   zCCalling subclass default constructor with more than tensor argumentz(args=rÀ  rp   rM  zEAvoid this constructor call or move it outside `torch.compile` regionrÚ   z'__new__ must return a non-None variablerK  )rÃ  rK   rR   Ú__new__rX   r]   rÄ  rî   rÈ  r¤   r$   r   rß   r?   rø   r   rø  r)  r´   rÏ   r†  rO  rP  r;   )	r¨   r¸   r"  r°   rK   Únew_funcrœ  ÚdataÚ	init_funcs	            ra   r   Ú$TensorSubclassVariable.call_function”  st  € õ 	Aà—:‘:×%Ñ%ˆØ”u—|‘|×+Ñ+Ò+ØˆCÜ�4‹y˜A‹~ $ q¡'×"3Ñ"3×"5Ñ"5¼#¸f»+ÈÓ:JØ˜A‘w�ð 3×BÒBØ˜dŸj™j¨$¯+©+ó‘ô ØaØ#Ÿz™z˜l¨&°°°iÀ¸xÀqÐIØ 9ð1ðô +×6Ñ6ðó		ô "×'Ò'¨Ó5×CÑCØ�FœT $›ZÑ'¨óˆCð ‰;Ü Ð!JÓKÐKà—J‘J×'Ñ'ˆ	ð œEŸL™L×1Ñ1Ò1Ü×!Ò! "Ó0×>Ñ>¸rÀ5È&ÔQð 	�	‰	×Ñ×)Ñ)Ü‹H�cÔ-Að 	*ñ 	
ð ˆ
rc   c                 ó   • U R                   $ rä   r`   r®   s    ra   rÆ  Ú)TensorSubclassVariable.as_python_constantÆ  rè   rc   r�   N)r_   r�   r‘   r’   rø  r?   r­  r1  r   r•   rÆ  r—   r�   rc   ra   rN  rN  “  sI   † ð0à'ð0ð �?Ñ#ð0ð �S˜/Ð)Ñ*ð	0ð
 
ô0ðd D÷ rc   rN  c                   óü   ^ • \ rS rSrS1\R
                  krS\S\R                  S\	SS4U 4S jjr
S\4S jrS	S
S\\   S\\\4   S\4S jrS	S
S\\   S\\\4   S\4S jr\" \5      \" \5      S.rSS jrSrU =r$ )rµ  iÊ  r½   Úfrom_tensorr°   rS   Nc                 ó>   >• [         TU ]  " S0 UD6  Xl        X l        g rC  )r³   r´   r
  r½   )r¨   r
  r½   r°   r¶   s       €ra   r´   ÚUntypedStorageVariable.__init__Ð  s!   ø€ ô 	‰ÒÑ"˜6Ò"Ø&Ôà*Õrc   c                 ó"   • [         R                  $ rä   )rX   ÚUntypedStorager®   s    ra   rê   Ú"UntypedStorageVariable.python_typeÛ  s   € Ü×#Ñ#Ð#rc   r¸   rH   r"  c           	      ó*  • U R                   R                  5       n[        U5      (       d   [        R                  " U[        U5      5      $ SSKJn  SSKJ	n  U" UUR                  R                  SUU R                  R                  5       40 5      5      $ )Nr   )Úuntyped_storage_sizer8   r  r   )r½   rœ   r   r?   rø   rl   Úexternal_utilsr  r¾   r  rÏ   r  r
  ræ   )r¨   r¸   r"  r°   r¼  r  r  s          ra   r  Ú"UntypedStorageVariable.method_sizeÞ  s€   € ð ×#Ñ#×(Ñ(Ó*ˆÜ ×'Ñ'ä"×(Ò(¨¬S°«[Ó9Ð9Ý9Ý*áØØ�I‰I×"Ñ"ØØ$Ø×!Ñ!×*Ñ*Ó,Ð.Øó	ó
ð 	
rc   c                 óÜ   • UR                   R                  S[        R                  R                  R
                  U R                  R                  5       US   R                  5       40 5        U $ )Nr   r   )rÏ   r  rX   rµ  r–  Úresize_storage_bytes_r
  ræ   r  s       ra   r5  Ú%UntypedStorageVariable.method_resize_õ  sZ   € ð 	�	‰	×ÑØÜ�I‰I×Ñ×4Ñ4Ø×Ñ×&Ñ&Ó(¨$¨q©'×*:Ñ*:Ó*<Ð=Øô		
ð ˆrc   )rœ   rÝ  c                 ól   • U" U R                   5        UR                  S5        UR                  S5        g )Nr¶  r   )r
  Úload_methodrô   r§   s     ra   ÚreconstructÚ"UntypedStorageVariable.reconstruct  s-   € Ù�× Ñ Ô!Ø×ÑÐ-Ô.Ø×Ñ˜AÕrc   )r½   r
  ©r©   rF   rS   N)r_   r�   r‘   r’   r?   r0  r™   rX   r  r   r´   r•   rê   rø  r­  r1  r  r5  r=   rù  r  r—   r7  r8  s   @ra   rµ  rµ  Ê  sï   ø† àðà	×	'Ñ	'ð€Nð
	+à#ð	+ð ×+Ñ+ð	+ð ð		+ð
 
÷	+ð$˜Tô $ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
ð.à'ðð �?Ñ#ðð �S˜/Ð)Ñ*ð	ð
 
ôñ �{Ó#Ù˜.Ó)ñ€J÷
ò rc   rµ  c            	       óN  ^ • \ rS rSrSS\R
                  R                  R                  R                  41r	 SS\
S\S\SS4U 4S	 jjjrS\4S
 jr\S\R"                  R$                  S\R"                  R$                  4S j5       rSSS\4S jrSSS\S\S\4S jrSS jrSrU =r$ )rª  i  )rô   r_  r   r
  r±  r°   rS   Nc                 óh   >• [         TU ]  " S0 UD6  Xl        X l        UR	                  5       U l        g rC  )r³   r´   r
  r±  rË   Útensor_version)r¨   r
  r±  r°   r¶   s       €ra   r´   ÚDataPtrVariable.__init__  s2   ø€ ô 	‰ÒÑ"˜6Ò"Ø&ÔØ&ÔØ)×;Ñ;Ó=ˆÕrc   c                 ó   • [         $ rä   r  r®   s    ra   rê   ÚDataPtrVariable.python_type  s   € Üˆ
rc   r¬   c                 ó¢  • [        U[        R                  R                  5      (       Ga$  UR                  UR
                  4U R                  ;   aþ  [        UR                  5      S:X  aå  [        UR                  S   [        R                  R                  5      (       a¯  UR                  S   n[        U[        R                  R                  5      (       aw  UR                  UR
                  4U R                  ;   aQ  [        UR                  5      S:X  a8  [        UR                  S   [        R                  R                  5      (       a  M¯  U$ )Nr8   r   )	r\   rX   rn  ÚNoderµ   ÚtargetÚ_DATA_PTR_PRESERVING_TARGETSrÄ  r"  )rI  r¬   s     ra   Ú"_strip_data_ptr_preserving_aliasesÚ2DataPtrVariable._strip_data_ptr_preserving_aliases"  sÔ   € ô �tœUŸX™XŸ]™]×+Ò+Ø—‘˜$Ÿ+™+Ð&¨#×*JÑ*JÓJÜ�D—I‘I“ !Ó#Ü˜4Ÿ9™9 Q™<¬¯©¯©×7Ñ7à—9‘9˜Q‘<ˆDô �tœUŸX™XŸ]™]×+Ñ+Ø—‘˜$Ÿ+™+Ð&¨#×*JÑ*JÓJÜ�D—I‘I“ !Ó#Ü˜4Ÿ9™9 Q™<¬¯©¯©×7Ó7ð ˆrc   rü   r?   c                 óP  • [        U[        5      (       d  gU R                  b  U R                  UR                  :w  a  gU R                  U R                  R                  5       R                  5      nU R                  UR                  R                  5       R                  5      nX#L $ r.  )r\   rª  r  r&  r
  ræ   r¬   )r¨   rü   Ú	self_rootÚ
other_roots       ra   Ú_is_same_data_ptrÚ!DataPtrVariable._is_same_data_ptr-  s‘   € Ü˜%¤×1Ñ1Øà×ÑÑ&¨$×*=Ñ*=À×AUÑAUÓ*UØà×;Ñ;Ø×Ñ×%Ñ%Ó'×,Ñ,ó
ˆ	ð ×<Ñ<Ø×Ñ×&Ñ&Ó(×-Ñ-ó
ˆ
ð Ð&Ð&rc   r¸   rH   rµ   c           	      óÐ   • US;  a  [         R                  " [        5      $ U R                  U5      nU(       a  [         R                  " US:H  5      $ [	        SSU  SU SU 3S/ S9  g)	z-DataPtr tp_richcompare: identity-based eq/ne.rR  rS  zData pointer comparisonztp_richcompare_impl r¡  zjDynamo can only trace data pointer comparisons when it can prove both operands have the same data pointer.rÚ   N)rA   rù   r  r+  r$   )r¨   r¸   rü   rµ   Úsame_data_ptrs        ra   r  Ú#DataPtrVariable.tp_richcompare_impl<  sp   € ð Ð)Ó)Ü#×*Ò*¬>Ó:Ð:Ø×.Ñ.¨uÓ5ˆÞÜ#×*Ò*¨2°©>Ó:Ð:ÜØ-Ø*¨4¨&°°"°°Q°u°gÐ>ðJàó	
rc   c                 ó€   • U" U R                   5        UR                  U R                  5        UR                  S5        g )Nr   )r
  r  r±  rô   r§   s     ra   r  ÚDataPtrVariable.reconstructP  s2   € Ù�× Ñ Ô!Ø×Ñ˜D×,Ñ,Ô-Ø×Ñ˜AÕrc   )r
  r±  r  )rÏ  r  )r_   r�   r‘   r’   rX   rµ  r¶  r_  r˜  r%  r™   r1  r   r´   r•   rê   r¤  rn  r#  r&  rV   r+  r?   r  r  r—   r7  r8  s   @ra   rª  rª    sæ   ø† à!Ø	˜%Ÿ)™)Ÿ.™.×/Ñ/×7Ñ7Ð8ð$Ð ð &ñ	>à#ð	>ð ð	>ð ð		>ð
 
÷	>ð 	>ð˜Tô ð ð°e·h±h·m±mð ÈÏÉÏÉó ó ðð'Ð'8ð '¸Tô 'ð
à'ð
ð ð
ð ð	
ð
 
ô
÷(ò rc   rª  )r]   ) r“   r7  ÚloggingrÖ  r  r  r§  Úcollections.abcr   r   Ú
contextlibr   Ú	itertoolsr   r   Útypingr   r	   r
   r   Útyping_extensionsr   r   r>  Útorch._numpyÚ_numpyr±  Útorch.fxrX   Útorch.randomr   r   Útorch._custom_class_baser   Útorch._dynamor   Útorch._library.opaque_objectr   Útorch._subclasses.meta_utilsr   Ú%torch.fx.experimental.symbolic_shapesr   r   r   r   r   Útorch.utils._python_dispatchr   rš  r   r   r   Ú_trace_wrapped_higher_order_opr   r@  r   r    r!   r"   r#   r$   r%   r&   r'   r  r(   Úguardsr)   r*   r¤   r+   r,   rZ   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r€  r9   r:   r;   r<   r=   r>   r?   ró   rA   ÚlistsrB   rC   Úscript_objectrD   Úuser_definedrE   rÍ  rb  ÚModuleNotFoundErrorÚtorch._dynamo.codegenrF   Útorch._dynamo.output_graphrG   Útorch._dynamo.symbolic_convertrH   Ú	functionsrI   rÃ  rK   Ú	getLoggerr_   r  ÚgtÚltÚgeÚlerM  Ú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_valuesrP  rV   rb   rq   Ú
TensorBaser÷  r]   r›  rµ  r¶  Únumpy_Tre   Úmatrix_Hrg   rG  rm   r1  rw   r�   r™   rõ   r]  rï  rû  rN  rµ  rª  r�   rc   ra   Ú<module>r]     sö  ðñó" Û Û Û Û Û ß .Ý "Ý Ý ß 9Ó 9ß 4ã å Û Û ß $Ý 4Ý +Ý @Ý 6÷õ õ Gç 3Ñ 3Ý :÷
÷ 
õ 
õ ;ß 0ß +÷÷ ÷ ñ ÷÷ ñ õ 'ß 5Ý 4Ý 2ðÛö
 Ý/Ý6ÝHå/Ý<ð ×Ò˜Ó!€ð 
�‰Ø	�‰Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�+‰+Ø
�,‰,Ø�o‰oñ	#Ð ð �,‰,Ø�o‰oØ
�+‰+Ø
�+‰+ñ	"Ð ðØ%ðà$ðÐ ð )-¯ªØ#×*Ò*Ó,ó)Ð %ð (,§}¢}Ø"×)Ò)Ó+ó(Ð $ð
 &ð ¨Tô ð —8’8×&Ò&×/Ò/°%·,²,×2GÒ2GÑGÐ ð
 
�Š�Š×	Ò	Ø
�)Š)�.Š.×
Ò
Ø	�Š�Š×	 Ò	 Ø
�)Š)�.Š.×
Ò
ñ	Ð ðY˜oð Y°$ô YñK˜eŸlšlð K°sð KÈ#õ Kô*G˜Yô Gô(Z'
�_ô Z'
ôzNG*�oô G*ôTSE˜>ô SEôl#
 .ô #
ôLB�~ô Bô*4Ð5ô 4ônA˜_ô AôHE�oõ Eøð]m ó Ø	ƒBðús   ÄM4 Í4N Í?N 