ó
    CC˜jøT ã                   ó>  • 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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rSSKrSSKrSSKJrJrJr  SSKJrJr  SSKJr  SSKJrJrJrJrJrJrJ r J!r!  SSK"J#r#J$r$J%r%  SSK&r&SSK'r(SSK)r(SSK*J+r,  SSK-r(SSK.J/s  J0r1  SSK(J2r2J3r3  SS	K4J5r5  SS
K6J7r7J8r8  SSK'J9r9J:r:J;r;J<r<J=r=J>r>  SSK?J@r@  SSKAJBrB  SSKCJDrD  SSKEJFrF  SSKGJHrH  SSKIJJrJ  SSKKJLrL  SSKMJNrNJOrOJPrPJQrQJRrRJSrS  SSKTJUrU  SSKVJWrW  SSKXJYrY  SSKZJ[r[  SSK\J]r]J^r^Jr_J`r`  SSKaJbrbJcrc  SSKdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprp  SSKqJqrq  SSKrJsrs  SSKtJuru  SSKvJwrw  SS K^JxrxJyryJzrzJ{r{J|r|  SS!K}J~r~Jr  SS"K€J�r�  SS#K‚JƒrƒJ„r„  SS$K…J†r†  SS%K5J‡r‡Jˆrˆ  SS&K‰JŠrŠ  SS'K‹JŒrŒJ�r�JŽrŽ  SS(K�J�r�J‘r‘J’r’J“r“J”r”J•r•J–r–J—r—J˜r˜J™r™JšršJ›r›JœrœJ�r�JžržJŸrŸ  SS)K/J r J¡r¡J¢r¢J£r£J¤r¤J¥r¥J¦r¦J§r§J¨r¨J©r©JªrªJ«r«J¬r¬J­r­J®r®J¯r¯J°r°J±r±J²r²J³r³J´r´Jµrµ  SS*K¶J·r·J¸r¸J¹r¹Jºrº  SS+K»J¼r¼  SS,K½J¾r¾J¿r¿  SS-KÀJÁrÁ  SS.KÂJÃrÃ  SS/KÄJÅrÅ  SS0KÆJÇrÇJÈrÈJÉrÉ  SS1KÊJËrË  SS2KÌJÍrÍ  \(       a$  SS3KÎJÏrÏ  SS4KÐJÑrÑ  SS5KÒJÓrÓ  SS6KÔJÕrÕ  SS7KÖJ×r×  SS8KØJÙrÙ  \GR´                  " \Û5      rÜ\(GRº                  GR½                  \ÛS95      rß\(GRº                  GR½                  \ÛS:5      rà\(GRº                  GR½                  \ÛS;5      rá\(GRº                  GR½                  \ÛS<5      râ\5GRÆ                  rã\ä\(GRÊ                  -  S-  ræ\\æ   rç\S=   rè " S> S?\ 5      ré " S@ SA\ 5      rê " SB SC\5      rë\(GRØ                  GRÚ                  GRÜ                  rï\(GRØ                  GRÚ                  GRà                  rñSD\SE\ò\ó\4   SF\SG\4   4SH jrô\" SISJ9 " SK SL5      5       rõ\" SISJ9 " SM SN5      5       rö S|SO\÷\ø\(Rf                  \óS-  4      SP\ù\(GRô                  GRö                  GRø                     S-  SF\ù\(GRô                  GRö                  GRø                     4SQ jjrý\GRü                  SF\4SR j5       rÿ\ " SS ST5      5       Gr SU\SF\/ \÷\   4   4SV jGr " SW SX\(GRØ                  GRÚ                  5      Gr " SY SZ5      Gr\ò\óG\4   Gr\ " S[ S\5      5       Gr\ " S] S^5      5       Gr\ " S_ S`5      5       Gr\ " Sa Sb5      5       Gr	Sc\2GRø                  Sd\ò\2GRø                  \ä4   SFG\4Se jGr
S9\2GR                  SFS4Sf jGrSgG\SF\ò\ó\4   4Sh jGr " Si SjG\5      Gr " Sk SlG\5      Gr " Sm Sn5      GrSoGrSpG\Sq\óSr\Ss\St\SFS4Su jGr\GR&                  " 5       Gr\$" Sv5      Gr\%" Sw5      Gr " Sx Sy5      Gr " Sz S{\2GR0                  5      Grg)}a¶  
Core graph building functionality for PyTorch's Dynamo system. This module contains
the essential components for constructing and managing FX graphs during compilation:

- OutputGraph: Manages the overall graph construction and compilation process. It owns
  a SubgraphTracer and handles graph compilation, execution, and state management.
  OutputGraph also manages features like graph deduplication, symbolic shape handling,
  and tracking of side effects.

- SubgraphTracer: Handles the actual FX graph construction by tracing Python code.
  It supports advanced features like higher-order operators through nested tracers,
  lifting of free variables, and handling of symbolic shapes.

The module supports key Dynamo features including:
- Higher-order operators through nested SubgraphTracers
- Graph deduplication for optimization
- Symbolic shape handling and propagation
- Side effect tracking and management
- Guard insertion and management
é    N)ÚCallableÚ	GeneratorÚSequence)Ú	dataclassÚfield)ÚCodeType)ÚAnyÚcastÚLiteralÚ
NamedTupleÚOptionalÚTYPE_CHECKINGÚ	TypedDictÚUnion)ÚNotRequiredÚ	ParamSpecÚTypeVar)ÚfxÚTensor)Úguards)ÚShortenTracebackÚTensorifyScalarRestartAnalysis)ÚCompileContextÚ	CompileIdÚGlobalContextCheckpointStateÚSourceÚtracingÚTracingContext)ÚFakeScriptObject)Úis_custom_class)Ú
FakeTensor)Úsignpost_event)Ú_ConstraintTarget)Ú_make_graph_module)ÚBackwardState)Úfree_symbolsÚguard_scalarÚis_symbolicÚShapeEnvÚSpecializationÚuninteresting_files)ÚTarget)Úinsert_deferred_runtime_asserts)Ú
OrderedSet)Úis_traceable_wrapper_subclassé   )ÚconfigÚexcÚloggingÚ	variables)Ú
CompiledFnÚ
CompilerFn)Úcreate_binary_sliceÚcreate_binary_subscrÚcreate_build_tupleÚcreate_call_functionÚcreate_dup_topÚcreate_instructionÚcreate_load_constÚcreate_rot_nÚcreate_swapÚInstructionÚmake_compiled_fn_nameÚ	unique_id)Úcode_context)Ú	PyCodegen)Úenter_new_scope)Úget_interface_for_device)ÚBackendCompilerFailedÚ!exceptions_allowed_to_be_fallbackÚ	SkipFrameÚunimplementedÚunimplemented_with_warning)Úhas_user_objectsÚindex_to_bytecode_constructor)Úapply_graph_deduplication)Ú#get_backend_override_for_compile_idÚ+get_inductor_config_override_for_compile_id)ÚGraphRegionTracker)ÚGuardBuilderÚinstall_guard)Úis_dynamic_nn_module)ÚAttributeMutationExistingÚSideEffectsÚValueMutationExisting)Ú_get_source_debug_nameÚ
AttrSourceÚBackwardStateSourceÚConstantSourceÚDictGetItemSourceÚGetItemSourceÚGlobalStateSourceÚis_constant_sourceÚis_from_local_sourceÚLocalSourceÚNumpyTensorSourceÚParamBufferSourceÚShapeEnvSourceÚSyntheticLocalSourceÚTensorPropertyÚTensorPropertySource)Ú_extract_tensor_dictÚ_get_cudagraph_overrideÚcheckpoint_paramsÚCleanupHookÚclone_inputsÚcompilation_time_metricsÚcount_callsÚcountersÚdynamo_timedÚget_chromium_event_loggerÚget_instruction_source_311Úget_locals_to_stealÚget_static_address_typeÚget_unique_name_wrtÚgraph_break_reasonsÚincrement_op_countÚistypeÚlazy_format_graph_codeÚ
LazyStringÚnn_module_proxyÚsameÚset_example_value)ÚBackwardStateGraphArgÚGraphArgÚTrackedFakeÚwrap_fx_proxy)ÚContextWrappingVariable)ÚClosureConversionErrorÚVariableTracker)ÚBaseListVariable)ÚNullVariable)ÚNNModuleVariable)ÚNumpyNdarrayVariableÚSymNodeVariableÚUnspecializedPythonVariable)ÚTensorWithTFOverrideVariable)ÚUserDefinedDictVariable©ÚDynamoProfilerState)ÚCompilePackage)ÚInstructionTranslatorBase)ÚLocalGeneratorObjectVariable©Ú_CudagraphAnnotation)ÚStorageWeakRefÚgraphÚ
graph_codeÚgraph_sizesÚ
trace_call)Ú	graph_outÚinputÚconstantc                   óJ   • \ rS rSr% \\S'   \\S'   \\   \S'   \\   \S'   Srg)ÚSizesStridesInfoéÓ   ÚsizeÚstrideÚvalues_sizeÚvalues_stride© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚTensorMetadataSequenceÚ__annotations__r   Ú__static_attributes__r£   ó    Ú¨C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/output_graph.pyr�   r�   Ó   s&   ‡ Ø
 Ó Ø"Ó"ØÐ3Ñ4Ó4ØÐ5Ñ6Ö6r«   r�   c                   ó  • \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S	4   \S
'   \\	S	4   \S'   \\	S	4   \S'   \	\S'   \	\S'   \
\	   \S'   \\S'   \\S'   \
\   \S'   \\	S	4   \S'   \\	S	4   \S'   Srg)ÚCodeOptionséÚ   Úco_argcountÚco_posonlyargcountÚco_kwonlyargcountÚ
co_nlocalsÚco_stacksizeÚco_flagsÚco_code.Ú	co_constsÚco_namesÚco_varnamesÚco_filenameÚco_nameÚco_qualnameÚco_firstlinenoÚco_linetableÚco_exceptiontableÚco_freevarsÚco_cellvarsr£   N)r¤   r¥   r¦   r§   Úintr©   ÚbytesÚtupleÚobjectÚstrr   rª   r£   r«   r¬   r®   r®   Ú   s�   ‡ ØÓØÓØÓØƒOØÓØƒMØƒNØ�V˜S�[Ñ!Ó!Ø�C˜�H‰oÓØ�s˜C�x‘Ó ØÓØƒLØ˜SÑ!Ó!ØÓØÓØ" 5Ñ)Ó)Ø�s˜C�x‘Ó Ø�s˜C�x‘Ö r«   r®   c                   ó*   • \ rS rSr% \\S'   \\S'   Srg)ÚOutputReturnInfoéï   ÚkindÚvaluer£   N)r¤   r¥   r¦   r§   ÚOutputReturnKindr©   rÅ   rª   r£   r«   r¬   rÈ   rÈ   ï   s   ‡ Ø
ÓØ†Mr«   rÈ   Úcompiler_fnÚconfig_patchesÚreturn.c                 ór   ^ ^• S[         S[         S[         4U U4S jjn[        T SS5      Ul        T Ul        U$ )zÚ
Wrap a compiler function to apply inductor config patches during compilation.

Passes config_patches as a keyword argument so that compile_fx can
propagate them to backward compilation via its inner_compile wrapping.
ÚgmÚexample_inputsrÏ   c                 ó   >• T" XTS9$ )N)rÎ   r£   )rÑ   rÒ   rÍ   rÎ   s     €€r¬   ÚwrappedÚ+_wrap_with_inductor_config.<locals>.wrapped  s   ø€ Ù˜2¸nÑMÐMr«   r¤   z	<wrapped>)r	   Úgetattrr¤   Ú__wrapped__)rÍ   rÎ   rÔ   s   `` r¬   Ú_wrap_with_inductor_configrØ   û   sG   ù€ ðN”Cð N¬ð N´÷ Nð Nô ˜{¨J¸ÓD€GÔØ%€GÔØ€Nr«   T)Úfrozenc                   ó*   • \ rS rSr% \\S'   \\S'   Srg)ÚAliasingInfoi  Úhas_aliasingÚmsgr£   N)r¤   r¥   r¦   r§   Úboolr©   rÆ   rª   r£   r«   r¬   rÛ   rÛ     s   ‡ àÓØ	†Hr«   rÛ   c                   óB   • \ rS rSr% \\S'   \\S'   Sr\\	S4   \S'   Sr
g)ÚMutationInfoi  Úhas_mutationrÝ   r£   .Úmutated_input_indicesN)r¤   r¥   r¦   r§   rÞ   r©   rÆ   râ   rÄ   rÂ   rª   r£   r«   r¬   rà   rà     s    ‡ àÓØ	ƒHØ-/Ð˜5  c ™?Ö/r«   rà   Útensors_with_sourcesÚstop_atc                 ó¨  • Uc
  [        5       n[        5       n/ nU  HH  u  pE[        U[        R                  5      (       d  M&  UR                  nUc  M7  UR                  U5        MJ     U(       ac  UR                  5       nXr;   a  M  Xq;   a  M%  UR                  U5        UR                   H  u  p…Uc  M
  UR                  U5        M     U(       a  Mc  U$ )a¸  Collect all grad_fns reachable from tensors' autograd graphs.

Performs a DFS traversal and collects all visited grad_fns.
Optionally stops traversal nodes in stop_at set. This signals the
autograd.grad boundary.

Args:
    tensors_with_sources: List of (tensor, source_name) tuples to start search from.
    stop_at: Optional set of grad_fns where traversal should stop (excluded from result).

Returns:
    Set of all reachable grad_fns.
)	ÚsetÚ
isinstanceÚtorchr   Úgrad_fnÚappendÚpopÚaddÚnext_functions)	rã   rä   ÚvisitedÚstackÚtensorÚ_ré   ÚnodeÚnext_fns	            r¬   Úcollect_reachable_grad_fnsrô     s´   € ð" �Ü“%ˆä.1«e€GØ-/€Eã)‰	ˆÜ�fœeŸl™l×+Ó+Ø—n‘nˆGØÓ"Ø—‘˜WÖ%ñ	 *ö Ø�y‰y‹{ˆØ‹?Ùð ‹?ÙØ�‰�DÔØ×-Ô-‰JˆGØÓ"Ø—‘˜WÖ%ñ .÷ ˆ%ð €Nr«   c                  ó6   • [         R                  " [        5      $ ©N)Útorchdynamo_loggingÚget_step_loggerÚlogr£   r«   r¬   Ú_step_loggerrú   G  s   € ä×.Ò.¬sÓ3Ð3r«   c                   ó`   • \ rS rSr% Sr\\S'   \\R                     \S'   Sr
\\S'   S
S jrS	rg)ÚGraphCompileReasoniL  zOStores why a given output graph was compiled; i.e. what caused the graph break.ÚreasonÚ
user_stackTÚgraph_breakNc                 óT   • U R                   (       a  [        R                  " U 5        g g rö   )rÿ   rv   rê   ©Úselfs    r¬   Ú__post_init__Ú GraphCompileReason.__post_init__V  s   € Ø××Ü×&Ò& tÕ,ð r«   r£   ©rÏ   N)r¤   r¥   r¦   r§   Ú__doc__rÆ   r©   ÚlistÚ	tracebackÚFrameSummaryrÿ   rÞ   r  rª   r£   r«   r¬   rü   rü   L  s,   ‡ áYàƒKØ�Y×+Ñ+Ñ,Ó,ð €K�Ó÷-r«   rü   Úrandom_callsc                 ó2   ^ • S[         [           4U 4S jjnU$ )NrÏ   c            
      óP   >• T V VVs/ s H  u  po " U0 UD6PM     snnn $ s  snnn f rö   r£   )ÚfnÚargsÚkwargsr
  s      €r¬   Ú_gen_rand_valuesÚ1_get_gen_rand_values_fn.<locals>._gen_rand_values\  s*   ø€ Ù<HÕIºLÑ(8¨°&��DÐ#˜FÔ#¹LÓIÐIùÔIs   ˆ!)r  r	   )r
  r  s   ` r¬   Ú_get_gen_rand_values_fnr  [  s   ø€ ðJœd¤3™i÷ Jð Ðr«   c                   ó¼   ^ • \ rS rSrSrS\\\R                  R                  4   SS4U 4S jjr
S\4S jrS\\\R                  R                  4   SS4S jrS	rU =r$ )
ÚFakeRootModuleib  z'Trick the constructor of fx.GraphModuleÚ
nn_modulesrÏ   Nc                 ól   >• [         TU ]  5         UR                  5        H  u  p#[        XU5        M     g rö   )ÚsuperÚ__init__ÚitemsÚsetattr)r  r  ÚkÚvÚ	__class__s       €r¬   r  ÚFakeRootModule.__init__e  s-   ø€ Ü‰ÑÔØ×$Ñ$Ö&‰DˆAÜ�D˜QÖò 'r«   c                 ó   • g)NzFakeRootModule(...)r£   r  s    r¬   Ú__repr__ÚFakeRootModule.__repr__j  s   € Ø$r«   c                 óN   • UR                  5        H  u  p#[        XU5        M     g rö   )r  r  )r  r  r  r  s       r¬   Úadd_nn_modulesÚFakeRootModule.add_nn_modulesm  s!   € Ø×$Ñ$Ö&‰DˆAÜ�D˜QÖò 'r«   r£   )r¤   r¥   r¦   r§   r  ÚdictrÆ   rè   ÚnnÚModuler  r   r#  rª   Ú__classcell__©r  s   @r¬   r  r  b  sa   ø† Ù1ð  4¨¨U¯X©X¯_©_Ð(<Ñ#=ð  À$÷  ð
%˜#ô %ð ¨¨c°5·8±8·?±?Ð.BÑ)Cð  È÷  ò  r«   r  c                   ó~   • \ rS rSrS\SS4S jrS\R                  R                  S\	\R                     S\4S jrS	rg)
ÚWrapperBackendir  ÚbackendrÏ   Nc                 ó   • Xl         g rö   )r,  )r  r,  s     r¬   r  ÚWrapperBackend.__init__s  s   € Ø#*�r«   rÑ   rÒ   c                 óÄ  • [        U5      U l        Xl        [        R                  " U R                  5      nU R                  X25      U l        U R                  b#  U R                  U R                  R                  L a  U R                  R                  $ [        R                  (       d  U R                  $  U R                  R                  " [        U5      6 nU R                  " [        U5      6 n[        XE5      (       a  U R                  U R                  5         $ [        SU  35      e! [         a    [        R                  S5        e f = f! U R                  5         f = f)Nzincorrect results of backend zerror in verify_correctness)rj   ÚrestorerÑ   ÚcopyÚdeepcopyr,  Ú	candidateÚforwardr1   Úverify_correctnessrl   r|   ÚRuntimeErrorÚ	Exceptionrù   Ú	exception)r  rÑ   rÒ   Úcopy_gmÚcorrectÚresults         r¬   Ú__call__ÚWrapperBackend.__call__v  s  € ô )¨Ó,ˆŒØŒÜ—-’- §¡Ó(ˆØŸ™ gÓ>ˆŒà�>‰>Ñ! T§^¡^°t·w±w·±Ò%FØ—7‘7—?‘?Ð"ä×(×(Ø—>‘>Ð!ð	Ø—g‘g—o’o¤|°NÓ'CÐDˆGØ—^’^¤\°.Ó%AÐBˆFô �G×$Ñ$Ø—~‘~ð �L‰L�Nô Ð!>¸t¸fÐEÓFÐFøäó 	Ü�M‰MÐ7Ô8Øð	ûð �L‰L�Nús   Â5AD) ÄD) Ä)!E
Å
E ÅE)r,  r3  rÑ   r0  )r¤   r¥   r¦   r§   r6   r  rè   r   ÚGraphModuler  r   r5   r<  rª   r£   r«   r¬   r+  r+  r  sE   † ð+ 
ð +¨tô +ðØ—(‘(×&Ñ&ðØ8<¸U¿\¹\Ñ8Jðà	÷r«   r+  c                   ó\   • \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\\S'   Sr
\\S'   SS	 jrS
rg)ÚBytecodeTracingTimingsi™  aH  Accumulated wall-clock time (ns) for major components during Dynamo
bytecode tracing that are not related to variable trackers.  Each field
is an int accumulator that gets bumped via ``time.time_ns()`` in the
corresponding hot-path wrapper.  To add a new timer, add a field here
and wire up the wrapper in the relevant function.r   Úget_fake_value_nsÚcreate_proxy_nsÚ!wrap_to_fake_tensor_and_record_nsÚvariable_builder_call_nsNc                 óŒ  • [        5       n0 n[        R                  " U 5       H„  n[        XR                  5      nUS:”  d  M   UR                  R                  S5      nUS-  X% S3'   [        R                  " U/ 5      R                  US-  5        [        XR                  S5        M†     U(       a  UR                  " S0 UD6  gg)zzFlush accumulated timings to the bytecode_tracing chromium event
and to compilation_time_metrics, then reset all counters.r   Ú_nsg    eÍÍAÚ_time_sN)Úbytecode_tracing)rq   ÚdataclassesÚfieldsrÖ   ÚnameÚremovesuffixrm   Ú
setdefaultrê   r  Útry_add_event_data)r  Úchromium_logÚ
event_dataÚfÚns_valÚkeys         r¬   Úreport_and_resetÚ'BytecodeTracingTimings.report_and_reset¦  s©   € ô 1Ó2ˆàˆ
Ü×#Ò# DÖ)ˆAÜ˜T§6¡6Ó*ˆFØ˜�zØ—f‘f×)Ñ)¨%Ó0�Ø.4°s©l�
˜U '˜?Ñ+Ü(×3Ò3°C¸Ó<×CÑCÀFÈSÁLÔQÜ˜Ÿf™f aÖ(ñ *ö Ø×+Ò+ÑMÀ*ÓMð r«   r£   r  )r¤   r¥   r¦   r§   r  rA  rÂ   r©   rB  rC  rD  rT  rª   r£   r«   r¬   r@  r@  ™  s:   ‡ ñ9ð Ð�sÓØ€O�SÓØ-.Ð% sÓ.Ø$%Ð˜cÓ%÷Nr«   r@  c                   ó®  • \ rS rSr% Sr\\S'   \\S'   \\R                  R                     \S'   \\   \S'   \\\4   \S'   \\S'   \\R                   R"                  R$                     \S	'   \R&                  S
-  \S'   \R(                  R*                  R,                  R.                  \S'   \R0                  R2                  \S'   \\R0                  R4                     \S'   Sr\\S'   Sr\\S'   Sr\\S'   S
r\ S
-  \S'   \!S\"4S j5       r#\!S\R0                  R2                  4S j5       r\!S\\R0                  R4                     4S j5       r$SS jr%Sr&g
)ÚOutputGraphGuardsStatei·  aZ  
A base class containing fields that are considered "persistent" when we
want to save all the important state for reconstrucing guards in a different
process. Normally we don't need to add states here, but we may have to when
the information is needed to serialize the guards, so the fields here are
supposed to be serializable as a requirement.
Úlocal_scopeÚglobal_scopeÚtorch_function_mode_stackÚguard_on_key_orderÚinput_source_to_sizes_stridesÚ
dual_levelÚfunctorch_layersNÚcurrent_deviceÚglobal_state_guardÚ_guardsÚ_aotautograd_guardsFÚexportÚskip_guards_checkÚexport_constraintsÚ%name_of_builtins_dict_key_in_fglobalsrÏ   c                 ó0   • [        S[        U 5       35      e)Nz%shape_env shouldn't be accessed from )ÚAssertionErrorÚtyper  s    r¬   Ú	shape_envÚ OutputGraphGuardsState.shape_envÖ  s   € äÐDÄTÈ$ÃZÀLÐQÓRÐRr«   c                 ó   • U R                   $ rö   )ra  r  s    r¬   r   ÚOutputGraphGuardsState.guardsÚ  s   € à�|‰|Ðr«   c                 ó   • U R                   $ rö   )rb  r  s    r¬   Úaotautograd_guardsÚ)OutputGraphGuardsState.aotautograd_guardsÞ  s   € à×'Ñ'Ð'r«   c                 ó\  • [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  S9$ )N)rX  rY  rZ  r[  r\  r]  r^  r_  r`  rf  rc  re  ra  rb  rd  )rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  rf  rc  re  r   ro  rd  r  s    r¬   Údump_guards_stateÚ(OutputGraphGuardsState.dump_guards_stateâ  s�   € ä%Ø×(Ñ(Ø×*Ñ*Ø&*×&DÑ&DØ#×6Ñ6Ø*.×*LÑ*LØ—‘Ø!×2Ñ2Ø×.Ñ.Ø#×6Ñ6Ø26×2\Ñ2\Ø—;‘;Ø#×6Ñ6Ø—K‘KØ $× 7Ñ 7Ø"×4Ñ4ñ
ð 	
r«   r£   )rÏ   rW  )'r¤   r¥   r¦   r§   r  ÚScoper©   r  rè   Ú	overridesÚTorchFunctionModeræ   r   r%  r�   rÂ   Ú
_functorchÚpyfunctorchÚFuncTorchInterpreterÚdeviceÚ_CÚ_dynamor   ÚGlobalStateGuardra  Ú	GuardsSetÚGuardEnvExprrc  rÞ   rd  re  rf  rÆ   Úpropertyr)   rj  ro  rr  rª   r£   r«   r¬   rW  rW  ·  sX  ‡ ñð ÓØÓà# E§O¡O×$EÑ$EÑFÓFØ˜F™Ó#à#'¨Ð0@Ð(@Ñ#AÓAØƒOØ˜5×+Ñ+×7Ñ7×LÑLÑMÓMØ—L‘L 4Ñ'Ó'ØŸ™×(Ñ(×/Ñ/×@Ñ@Ó@Ø�]‰]×$Ñ$Ó$Ø˜eŸm™m×8Ñ8Ñ9Ó9ð €FˆDÓØ#Ð�tÓ#Ø$Ð˜Ó$Ø8<Ð)¨3°©:Ó<àðS˜8ó Só ðSð ð˜Ÿ™×/Ñ/ó ó ðð ð( D¨¯©×)CÑ)CÑ$Dó (ó ð(÷
r«   rW  c                   óü   • \ rS rSr% SrSr\\S'   \" \	S9r
\	\\4   \S'   \" \S9r\\   \S'   \" \S9r\\   \S'   \" \S9r\\\\\S	4   4      \S
'   \" \S9r\\   \S'   \" \S9r\\\\\S	4   4      \S'   Srg)ÚStackLocalsMetadatai÷  z^
Stores metadata for a frame's stack and locals for the purposes of building resume functions
r   Ú	num_stack©Údefault_factoryÚlocals_namesÚstack_null_idxesÚlocals_null_keys.Ústack_ctx_argsÚstack_ctx_idxes_origÚlocals_ctx_argsr£   N)r¤   r¥   r¦   r§   r  rƒ  rÂ   r©   Údc_fieldr%  r†  rÆ   r  r‡  rˆ  r‰  rÄ   rÅ   rŠ  r‹  rª   r£   r«   r¬   r‚  r‚  ÷  sÇ   ‡ ñð €IˆsÓÙ#+Øñ$€L�$�s˜C�x‘.ó ñ #+¸4Ñ"@Ð�d˜3‘iÓ@Ù"*¸4Ñ"@Ð�d˜3‘iÓ@Ù;CØñ<€N�D˜˜s E¨&°#¨+Ñ$6Ð6Ñ7Ñ8ó ñ '/¸tÑ&DÐ˜$˜s™)ÓDÙ<DØñ=€O�T˜%  U¨6°3¨;Ñ%7Ð 7Ñ8Ñ9ö r«   r‚  c                   óÌ  • \ rS rSr% \" \S9r\\\S-  4   \	S'   \" \S9r
\\\4   \	S'   \R                  R                  R                  r\R                  R                  R"                  \R                  R                  R$                  -  \	S'   \" \S9r\\\\\R                  R                  R"                  \R                  R                  R$                  -  4   4   \	S'   Srg)	ÚExportMetaDatai  r„  NÚgraph_input_idx_to_local_sourceÚoutput_return_typeÚout_specÚmodule_call_specr£   )r¤   r¥   r¦   r§   rŒ  r%  r�  rÂ   r   r©   r�  rÈ   rè   ÚutilsÚ_pytreeÚ
_LEAF_SPECr‘  ÚTreeSpecÚLeafSpecr’  rÆ   rª   r£   r«   r¬   rŽ  rŽ    sã   ‡ ñ
 AIØñAÐ# T¨#¨v¸©}Ð*<Ñ%=ó ñ 7?ÈtÑ6TÐ˜˜SÐ"2Ð2Ñ3ÓTð 	�‰×Ñ×&Ñ&ð ˆe�k‰k×!Ñ!×*Ñ*¨U¯[©[×-@Ñ-@×-IÑ-IÑIó ñ 	 Ñ&ð �dØØˆS�%—+‘+×%Ñ%×.Ñ.°·±×1DÑ1D×1MÑ1MÑMÐMÑNð	Pñö 'r«   rŽ  rò   Úcanonical_idxc                 óÔ   • U R                   S:X  aK  U R                  R                  S5      nUb'  UR                  b  UR                  R                  nSU4$ SnSU4$ SSKJn  U" X5      $ )z¢Canonical heap key for Dynamo output graph nodes.

Placeholders are sorted by grapharg source name; all other ops delegate
to the shared ``_canonical_node_key``.
ÚplaceholderÚgraphargÚ r   )Ú_canonical_node_key)ÚopÚmetaÚgetÚsourcerK  Útorch.fx.passes.canonicalizer�  )rò   r˜  r›  Úsource_namer�  s        r¬   Ú_canonical_keyr¤  $  sm   € ð ‡w�w�-ÓØ—9‘9—=‘= Ó,ˆØÑ H§O¡OÑ$?Ø"Ÿ/™/×.Ñ.ˆKð �;ÐÐð ˆKØ�;ÐÐÝ@á˜tÓ3Ð3r«   c                 ó0   • SSK JnJn  U" U [        U5        g)z¸Canonicalize a Dynamo output graph's node order and names.

Delegates to ``torch.fx.passes.canonicalize.canonicalize_graph`` with
Dynamo-specific key generation and barrier detection.
r   )Ú_is_safe_to_reorderÚcanonicalize_graphN)r¢  r¦  r§  r¤  )r•   r¦  r§  s      r¬   Ú_canonicalize_graphr¨  6  s   € ÷ Uá�uœnÐ.AÕBr«   rY  c                 óR   • U S   n[        U[        5      (       d  UR                  nU$ )NÚ__builtins__)rç   r%  Ú__dict__)rY  Ú
f_builtinss     r¬   Úget_builtins_dictr­  A  s,   € ð ˜nÑ-€JÜ�j¤$×'Ñ'Ø×(Ñ(ˆ
ØÐr«   c                   óÖ   ^ • \ rS rSrSr     SS\S\\\4   S-  S\S-  S\	S-  S\\
\\   4   S-  S	\\\   S-     S-  S
S4U 4S jjjr\S
\4S j5       rSS\S\S
S4S jjrSrU =r$ )ÚOutputGraphCommoniU  a¡  
A minimal interface for full graph capture. It is intended to be
the target of any tracer that feeds into backends.

Currently dynamo's OutputGraph is the only known implementation
of this interface, used by (aot) precompile and (strict) export.
Importantly, that implementation also contains many other fields
that are using during tracing but not included in this interface
because they are not used once tracing is complete.

It should be safe to assume that (caching) precompile also uses
this interface.

In the future, we want make_fx, used by (non-strict) export, to
also implement this interface.

The serializable part of this interface is OutputGraphGuardsState.
We do not need to serialize other parts; however it will pay to
be disciplined about what those other parts are, especially since
we want other tracers to be able to meaningfully implement them,
and we should generally try to cut them down when possible.
NÚoutput_graph_guards_stateÚimport_sourcesrj  Úexport_metadataÚtracked_fakes_id_to_sourceÚoutput_pycoderÏ   c                 ó,  >• [         TU ]  UR                  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                   5        U=(       d    0 U l        U=(       d
    [%        5       U l        U=(       d
    [)        5       U l        U=(       d    0 U l        U=(       d    / U l        g rö   )r  r  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  r±  r)   Ú
_shape_envrŽ  r²  r³  r´  )r  r°  r±  rj  r²  r³  r´  r  s          €r¬   r  ÚOutputGraphCommon.__init__m  sç   ø€ ô 	‰ÑØ%×1Ñ1Ø%×2Ñ2Ø%×?Ñ?Ø%×8Ñ8Ø%×CÑCØ%×0Ñ0Ø%×6Ñ6Ø%×4Ñ4Ø%×8Ñ8Ø%×-Ñ-Ø%×9Ñ9Ø%×,Ñ,Ø%×7Ñ7Ø%×8Ñ8Ø%×KÑKô	
ð$ -×2°ˆÔð $×1¤x£zˆŒØ.×B´.Ó2BˆÔà&×,¨"ð 	Ô'ð +×0¨bˆÕr«   c                 ó   • U R                   $ rö   )r¶  r  s    r¬   rj  ÚOutputGraphCommon.shape_env•  s   € à�‰Ðr«   rý   r  c                 ó   • [         erö   )ÚNotImplementedError©r  rý   r  s      r¬   Úbypass_packageÚ OutputGraphCommon.bypass_package™  s
   € ô "Ð!r«   )r¶  r²  r±  r´  r³  )NNNNN©rœ  )r¤   r¥   r¦   r§   r  rW  r%  rÆ   r)   rŽ  rÂ   r  r   r  r€  rj  r	   r½  rª   r(  r)  s   @r¬   r¯  r¯  U  sÞ   ø† ñð4 15Ø%)Ø15ØEIØ7;ñ&1à#9ð&1ð ˜S #˜X™¨Ñ-ð&1ð ˜d‘?ð	&1ð
 (¨$Ñ.ð&1ð %)¨¨d°6©lÐ):Ñ$;¸dÑ$Bð&1ð ˜D ™I¨Ñ,Ñ-°Ñ4ð&1ð 
÷&1ð &1ðP ð˜8ó ó ðñ" Sð "¸ð "À÷ "ó "r«   r¯  c                   óR  • \ rS rSr% Sr\\S'    S™S\S\S-  SS	S
\	S\
\   S\S\S\S\S\\R"                  R$                     S\S   S\	SS4S jjrSšS jrS›S jrSS.S\	S\\   4S jjrS\S\S\4S jrS\S\SS4S  jrSœS! jrSœS" jrS\4S# jr S�S$\ S%\S\!\\RD                  RF                  4   4S& jjr$S\RD                  RF                  4S' jr%SœS( jr&S\\   S-  4S) jr' SžS*\(S+\4   S,\!\S+4   S-\!\S-  S+4   S-  S\ 4S. jjr)S*\(/ \4   SS4S/ jr*SœS0 jr+\,SŸS2 j5       r-\,SŸS3 j5       r.S\	4S4 jr/    S›S5 jr0S6r1S7\2SS4S8 jr3\,S\RD                  Rh                  4S9 j5       r5\5Rl                  S:\RD                  Rh                  SS4S; j5       r5\,S\7\\"RF                  4   4S< j5       r8\,S\7\"Rr                  \Rt                  4   4S= j5       r;\,S\7\<Rz                  \>\RD                  RF                  S>4   4   4S? j5       r?S,\S@\S\RD                  RF                  4SA jr@S,\S@\S\RD                  Rr                  4SB jrAS,\S@\SS4SC jrB\CRˆ                   SžSD\ES-  SE\S1   SF\S-  S\FSG   4SH jj5       rG\,S SI j5       rH\,S\R’                  R”                  4SJ j5       rK\,S\L4SK j5       rM\,S\Rœ                  Rž                  4SL j5       rP\,S\7\\4   4SM j5       rQ\,S\\Rœ                  R¤                     4SN j5       rS SžSO\7\\!\(S+\4   \	4   4   S-  SS4SP jjrTS›SQ jrUS¡SR jrV\,S¡SS j5       rWST\S\4SU jrXS\24SV jrYS\	4SW jrZS\	4SX jr[SY\S\R¸                  Rº                  \-  4SZ jr^S¢S[\S\4S\ jjr_S[\SS4S] jr`\aS^\S\4S_ j5       rbS`\Sa\S\"RF                  4Sb jrcSc\R¸                  Rº                  \Rt                  -  \-  S^\Sd\S\ 4Se jrdSS	S\!\\e   \7\\4   4   4Sf jrfSS	Sg\2S\!\\    \g4   4Sh jrh S£SS	Si\iSg\2S\\g   4Sj jjrjSS	Sk\kSS4Sl jrlSS	Sm\\    Sk\kSn\	SS4
So jrmSœSp jrnS¤Si\S@\SS4Sq jjroS\7\\\2\-     4   4Sr jrpS[\S\4Ss jrq\CRˆ                  S\4St j5       rrSœSu jrsSv\Sw   SS	SS4Sx jrtSv\Sw   SS	SS4Sy jruSS	Sv\\    Sz\vS\!\\e   \\   S-  4   4S{ jrw\,S\\"Rr                     4S| j5       rx\,S\\y   4S} j5       rzS~\"Rö                  S\\:   S\|4S€ jr}S~\"Rö                  S\\:   S\|4S� jr~S\7\\RD                  Rö                  4   4S‚ jrS[\Sƒ\RD                  Rö                  S\4S„ jr€S\\Rt                     4S… jr�SœS† jr‚SœS‡ jrƒSœSˆ jr„ SžS%\\e   S‰\\   S-  SS4SŠ jjr…S[\S‹\†R                  SŒ\7\\4   SS4S� jr‡S[\S:\SS4SŽ jrˆS%\S:\S\4S� jr‰S%\S:\S\4S� jrŠSœS‘ jr‹S’\(\"Rö                  /S4   SS4S“ jrŒS”\RD                  Rr                  S\4S• jr�S–\R¸                  Rº                  ST\SS4S— jrŽS˜r�g)¥ÚOutputGraphi   ac  
Wrapper class to hold outputs of InstructionTranslator.  Mainly the
generated fx.Graph.

OutputGraph is 1:1 with a frame being processed. Each frame is associated
with some root InstructionTranslator. When user code calls a function,
we construct a InliningInstructionTranslator that continues to write into
the root InstructionTranslator's OutputGraph.
Úside_effectsFÚcode_optionsrÍ   NÚroot_txr�   rc  re  Úframe_staterX  rY  Úf_coderZ  Úpackager�   Ú	one_graphrÏ   c                 óF  • [         R                  U UUU
[        5       0 [        R                  R
                  R                  [        R                  R                  R                  5       [        R                  R                  R                  [        R                  R                  R                  =(       d2    [        R                   R                  R"                  R%                  5       [        R&                  R)                  5       / S9  [+        XS9/U l        0 U l        / U l        X@l        XPl        X`l        / U l        [;        [<        5      U l        [        5       U l         U	RB                  U	RD                  U	RF                  S.U l$        S U l%        [M        5       =nb  SSK'J(n  U" US   US   S9U l%        [S        5       U l*        SU l+        0 U l,        / U l-        []        U RZ                  U=(       d    [^        R`                  U=(       d    [^        Rb                  [^        Rd                  U RH                  S	9nSS K3Js  J/n  URi                  SS
9   [        Rj                  Rm                  U[o        U R2                  5      U R2                  S9nS S S 5        [q        W5      U l9        U Rr                  Rt                  Rw                  U	5        U RJ                  U Rr                  l%        U Rr                  Rt                  U l:        [x        Rz                  " 5       U l>        U R                  5         [^        R€                  b'  SSKAJBn  U" U R†                  [^        R€                  5        [ˆ        RŠ                  " [Œ        5      U lG        0 U lH        [“        U 5      U lJ        / U lK        0 U lL        0 U lM        [        5       U lN        0 U lO        [         R¢                  " 5       U lR        [§        [¨        [«        U5      5      U lV        / U lW        / U lX        SU lY        0 U lZ        S U l[        / U l\        X l]        X0l^        S U l_        X°l`        0 U la        / U lb        / U lc        SU ld        0 U le        [        R                   RÍ                  5       U lg        SU lh        SU li        [        5       U lj        [        0 5      U lk        [        0 5      U ll        U RÛ                  5         0 U ln        / U lo        S U lp        / U lq        0 U lr        0 U ls        S U lt        S U lu        U Rí                  5       U lw        [ð        Rò                  " 5       U lz        [÷        5       U l|        U Rû                  5       U l~        0 U l        G[        5       U l�        G[        5       U lƒ        0 U l„        S U l…        g ! , (       d  f       GN= f)N)r[  r\  r]  r^  r_  r`  ra  rb  )Ú	is_export)r»   rº   r½   r   r’   r0   )ÚfwdÚbwdF)Útracked_fakesÚallow_scalar_outputsÚallow_dynamic_output_shape_opsÚ+prefer_deferred_runtime_asserts_over_guardsÚ	co_fields©Ú(fake_tensor_allow_unsafe_data_ptr_access)rj  Úallow_non_fake_inputsrc  )Ú_wire_spec_assumptions)†rW  r  ræ   rè   ÚautogradÚ
forward_adÚ_current_levelrw  rx  Ú#retrieve_all_functorch_interpretersr“  Ú_deviceÚCURRENT_DEVICEr|  Úconvert_frameÚinitial_global_stater{  r   r}  ra  r~  ÚSubgraphTracerÚtracersÚinput_source_to_varÚleaf_var_creation_orderrc  re  rÅ  Úcleanup_hooksÚnextÚ_compile_id_counterÚ
compile_idÚinstalled_globalsr»   rº   r½   rÑ  Úcudagraph_annotationri   Útorch._inductorr“   rQ   Úregion_trackerÚ_emit_debugger_breakpointÚ#_shallow_copy_placeholder_snapshotsrÍ  r)   r1   Úcapture_scalar_outputsÚ capture_dynamic_output_shape_opsrÐ  Útorch._functorch.configÚpatchÚ_subclassesÚFakeTensorModerÞ   r   Útracing_contextÚtraced_coderê   r   Úcurrent_compile_idÚdynamo_compile_idÚinit_ambient_guardsÚ_dynamic_shapes_specÚ%torch.fx.experimental.symbolic_shapesrÕ  rj  ÚcollectionsÚdefaultdictr  r³  Úparam_name_to_sourcerV   rÂ  Úlocal_generatorsÚvariable_tracker_cacheÚmro_source_cacheÚguarded_mro_absent_keysÚsignature_cacheÚ	itertoolsÚcountÚunique_var_idr
   r®   r%  rÃ  Úoutput_instructionsr´  Ú	timestampÚ_input_mutation_streamsÚ_last_checked_input_versionsÚregister_finalizer_fnsrÍ   rÄ  Úprofiler_staterÇ  Úsource_to_user_stacksÚ_current_txÚcleanupsÚshould_exitÚunspec_variable_mapÚ_is_torch_function_mode_enabledÚtorch_function_mode_enabledÚtorch_function_subclass_inlinedÚ!has_user_defined_allowed_in_graphÚautograd_grad_consumed_grad_fnsÚnon_compliant_opsÚcompliant_custom_opsÚsave_global_stateÚ dynamo_flat_name_to_original_fqnr
  Úrandom_values_varÚpregraph_bytecodeÚsynthetic_source_ctor_infoÚbackward_stateÚbackward_state_proxyÚbackward_state_varÚ!install_builtins_dict_in_fglobalsrf  Ú
contextlibÚ	ExitStackÚcompiler_trace_stackr@  Úbytecode_tracing_timingsÚ+maybe_install_saved_tensors_hooks_subgraphsÚ"saved_tensors_hooks_subgraph_namesr±  rŽ  r²  r.   Ú"used_inlined_inbuilt_modules_namesÚattr_source_cacheÚ(_cached_replayed_side_effect_source_refs)r  rÃ  rÍ   rÄ  rc  re  rÅ  rX  rY  rÆ  rZ  rÇ  rÈ  Ú	_overrideÚ_CGArj  Ú_configÚ	fake_moderÕ  s                      r¬   r  ÚOutputGraph.__init__­  s÷  € ô 	×'Ñ'ØØØØ%Ü"›uØ*,Ü—~‘~×0Ñ0×?Ñ?Ü"×-Ñ-×9Ñ9×]Ñ]Ó_Ü Ÿ;™;×.Ñ.×=Ñ=ä$Ÿ}™}×:Ñ:×OÑO÷  :Ü�x‰x×Ñ×&Ñ&×7Ñ7Ó9ä—M‘M×+Ñ+Ó-Ø "ð 	(ñ 	
ô" ' tÑ>Ð?ˆŒð CEˆÔ ð ?AˆÔ$ØŒØ"4ÔØ&ÔØ68ˆÔä#Ô$7Ó8ˆŒä+.«5ˆÔð
 —~‘~Ø!×-Ñ-Ø$×3Ñ3ñ
ˆŒð  BFˆÔ!Ü0Ó2Ð2ˆIÑ?ÝDá(,°¸1±À9ÈQÁ<Ñ(PˆDÔ%ä0Ó2ˆÔØ/4ˆÔ&ØVXˆÔ0ð 13ˆÔäð ×,Ñ,à!*×!K¬f×.KÑ.KØ+4÷ ,7Ü×6Ñ6Ü8>×8jÑ8jØ—n‘nñ
ˆ	÷& 	2Ð1à�]‰]ÀEˆ]ÒJÜ×)Ñ)×8Ñ8Ø#ä&*¨4¯;©;Ó&7Ø—{‘{ð	 9ð ˆI÷ Kô 0>¸iÓ/HˆÔØ×Ñ×(Ñ(×/Ñ/°Ô7Ø48×4MÑ4Mˆ×ÑÔ1Ø×/Ñ/×;Ñ;ˆÔÜ3A×3TÒ3TÓ3VˆÔØ× Ñ Ô"ô ×&Ñ&Ñ2ÝTá" 4§>¡>´6×3NÑ3NÔOô ×#Ò#¤DÓ)ð 	Ô'ð ?AˆÔ!Ü'¨Ó-ˆÔð
 EGˆÔð FHˆÔ#ð KMˆÔô
 >A»UˆÔ$à;=ˆÔÜ&Ÿ_š_Ó.ˆÔÜ)-¬k¼4ÀÓ;MÓ)NˆÔØ68ˆÔ Ø57ˆÔð ˆŒð KMˆÔ$ØCGˆÔ)ð OQˆÔ#ð /:ÔØŒð ;?ˆÔàŒð RTˆÔ"à<>ˆÔØ+-ˆŒØ ˆÔØKMˆÔ ô ,1¯8©8×+SÑ+SÓ+UˆÔ(ð 05ˆÔ,ð 27ˆÔ.ô PSËuˆÔ,ô >AÀ»WˆÔô ADÀBÃˆÔ!ð 	×ÑÔ ð ACˆÔ-ð ð 	Ôð '+ˆÔð 57ˆÔð ð 	Ô'ð ;=ˆÔØ;?ˆÔ!Ø.2ˆÔð ×2Ñ2Ó4ð 	Ô2ô %/×$8Ò$8Ó$:ˆÔ!ä(>Ó(@ˆÔ%ð ×<Ñ<Ó>ð 	Ô/ð
 /1ˆÔå-Ó/ˆÔõ DNÃ<ˆÔ/àGIˆÔØPTˆÕ5÷I KÖJús   É=VÖ
V c                 ó:   • U R                   R                  U5        g rö   )rü  rê   )r  Úgens     r¬   Útrack_generatorÚOutputGraph.track_generatorÜ  s   € Ø×Ñ×$Ñ$ SÕ)r«   Útxc                 ó´   • SSK Jn  U" U5         [        U R                  5       H  nUR	                  US/ 0 5        M     S S S 5        g ! , (       d  f       g = f)Nr0   )Ú(temporarely_allow_writes_to_output_graphÚclose)Úsymbolic_convertr3  r  rü  Úcall_method)r  r1  r3  r.  s       r¬   Úclose_local_generatorsÚ"OutputGraph.close_local_generatorsß  s@   € ÝNá5°bÕ9Ü˜D×1Ñ1Ö2�Ø—‘  G¨R°Ö4ñ 3÷ :×9Ö9ús   �1A	Á	
A©Úpopulate_export_metadatar:  c          	      ó¾  • U(       d=  U R                   R                  (       d"  U R                  b  [        U R                  5      $ SSKJn  / nU R                   R                  5        GHÈ  n[        US5      (       d  M  UR                  n[        U[        [        45      (       d  M@  [        U[        5      (       Ga.  [        UR                  U5      (       Ga  U(       Ga
  UR                  c  [        S5      eUR                  R                   R!                  5        HÊ  u  nn0 nUR                   R!                  5        H/  u  pšU
R#                  5       X‰R$                  R#                  5       '   M1     SS/[        UR'                  5       5      :w  a%  [        S[        UR'                  5       5       35      eUU R(                  R*                  UR$                  R#                  5       '   MÌ     [        U[        5      (       a  [        UR                  U5      (       a  GM·  UR-                  U5        GMË     U Vs/ s H  n[/        UR0                  5      PM     sn$ s  snf )zKReturn Python-side effect sources that Dynamo replays outside the FX graph.r   )Ú_ExportModuleSpecTrackerDictÚmutation_typezvar._base_vt must not be NoneÚin_specr‘  z7Expected specs keys to be ['in_spec', 'out_spec'], got )rÂ  Úid_to_variabler'  r  Útorch.export._tracer<  Ú_get_modified_varsÚhasattrr=  rç   rU   rW   rŒ   rË   Ú_base_vtrh  r  Úas_python_constantÚvtÚkeysr²  r’  rê   rX   r¡  )r  r:  r<  Úpotential_side_effectsÚvarÚmut_typer  r  ÚspecsÚk_specÚvals              r¬   Ú$get_replayed_side_effect_source_refsÚ0OutputGraph.get_replayed_side_effect_source_refsæ  sø  € ö
 )Ø×%Ñ%×4×4Ø×=Ñ=ÑIä˜×EÑEÓFÐFåDà!#ÐØ×$Ñ$×7Ñ7×9ˆCÜ�s˜O×,Ó,Ø×,Ñ,�ô ØÔ8Ô:OÐP÷ó ô " #Ô'>×?Ò?ÄJØŸ	™	Ð#?÷Eò E÷ 4Ø"Ÿ|™|Ñ3Ü&4Ð5TÓ&UÐ Uð
 !$§¡× 2Ñ 2× 8Ñ 8Ö :ñ	!Ø !Ø !ð
 )+ à34·7±7·=±=¶?¡K Fà(+×(>Ñ(>Ó(@ð %*¯)©)×*FÑ*FÓ*HÓ$Iñ 4Cð %.¨zÐ#:¼dÀ5Ç:Á:Ã<Ó>PÓ#PÜ*8Ø*aÔbfÐgl×gqÑgqÓgsÓbtÐauÐ(vó+&ð %&ð %*ð !%× 4Ñ 4× EÑ Eà$%§D¡D×$;Ñ$;Ó$=ó!"ñ !;ô( # 3Ô(?×@Ñ@Ü& s§y¡yÐ2N×OÔOà.×5Ñ5°c×:ñS :ñV ?UÓUÒ>T°sÔ& s§z¡zÖ2Ñ>TÑUÐUùÒUs   È8IÚbaseÚpathc                 ó0  • UR                  S5      nXS   4nX@R                  ;  a  [        XS   5      U R                  U'   U R                  U   nUSS   H<  nXV4nX@R                  ;  a  [        XV5      U R                  U'   U R                  U   nM>     U$ )NÚ.r   r0   )Úsplitr&  rY   )r  rO  rP  ÚpartsrS  r;  Úparts          r¬   Úget_chained_attr_sourceÚ#OutputGraph.get_chained_attr_source!  sŸ   € Ø—
‘
˜3“ˆØ˜1‘XÐˆØ×,Ñ,Ó,Ü*4°TÀ¹8Ó*DˆD×"Ñ" 3Ñ'Ø×'Ñ'¨Ñ,ˆØ˜!˜"“IˆDØ�.ˆCØ×0Ñ0Ó0Ü.8¸Ó.F�×&Ñ& sÑ+Ø×+Ñ+¨CÑ0ŠFñ	 ð
 ˆr«   rc   c                 óž   • UR                  SS5      n[        U5      S:X  a  [        X5      $ U R                  XS   5      n[        XCS   5      $ )NrR  r0   r   )ÚrsplitÚlenrc   rV  )r  rO  rP  rT  Úintermediate_bases        r¬   Úget_chained_param_buffer_sourceÚ+OutputGraph.get_chained_param_buffer_source.  sO   € ð —‘˜C Ó#ˆÜˆu‹:˜‹?Ü$ TÓ0Ð0Ø ×8Ñ8¸ÀQ¹xÓHÐÜ Ð!2¸!±HÓ=Ð=r«   c                 ó~  • U R                   R                  [        SSS95        [        R                  (       a…  SSKJn  U R                  c  U" 5       U l        U R                  R                  nU R                  R                  UR                  UR                  UR                  [        R                  " 5       5        g g )NrH  T©Úlog_pt2_compile_eventr   r�   )r!  Úenter_contextrp   r1   Údynamo_profilerÚtorch._dynamo.dynamo_profilerrŽ   r	  rÄ  rÆ  Úpushr»   rº   r½   ÚtimeÚtime_ns)r  rŽ   Úcodes      r¬   Úmark_bytecode_tracing_startÚ'OutputGraph.mark_bytecode_tracing_start7  s“   € Ø×!Ñ!×/Ñ/ÜØ"Ø&*ñô	
ô ×!×!ÝIà×"Ñ"Ñ*Ù&9Ó&;�Ô#Ø—<‘<×&Ñ&ˆDØ×Ñ×$Ñ$Ø—‘Ø× Ñ Ø×#Ñ#Ü—’“õ	ð "r«   c                 óö  • U R                   R                  5         U R                  R                  5         [        R
                  (       Ga/  U R                  Gb   SSKJn  U R                  R                  5       n[        R                  " 5       nUb—  X2R                  -
  nXBR                  -
  nU" UR                  UR                  UR                   UU[#        U R$                  R&                  R(                  5      SS S S UR*                  SS9nU R                  R-                  U5        S n[/        [        R
                  [0        5      (       a  [        R
                  nU R                  R3                  U5        g g g )Nr   )ÚFunctionTraceTimingr£   )Ú	func_nameÚfilenameÚfirstlinenoÚ
cumtime_nsÚ
tottime_nsÚbytecode_countÚinline_depthÚcaller_func_nameÚcaller_filenameÚcaller_firstlinenoÚis_primitive_callÚ
call_stack)r"  rT  r!  r4  r1   rb  r	  rc  rk  rë   re  rf  Ústart_time_nsÚchild_time_nsrl  rm  rn  rZ  rÄ  rÆ  r¶   rv  Úrecord_timingrç   rÆ   Ú
dump_stats)r  rk  Ústack_entryÚtrace_end_nsro  rp  ÚtimingÚoutput_files           r¬   Úmark_bytecode_tracing_stopÚ&OutputGraph.mark_bytecode_tracing_stopL  s4  € Ø×%Ñ%×6Ñ6Ô8Ø×!Ñ!×'Ñ'Ô)ä×!×!Ð! d×&9Ñ&9Ò&EÝIà×-Ñ-×1Ñ1Ó3ˆKÜŸ<š<›>ˆLØÑ&Ø)×,EÑ,EÑE�
Ø'×*CÑ*CÑC�
Ù,Ø)×3Ñ3Ø(×1Ñ1Ø +× 7Ñ 7Ø)Ø)Ü#& t§|¡|×':Ñ':×'BÑ'BÓ#CØ!"Ø%)Ø$(Ø'+Ø&1×&CÑ&CØ!ñ�ð ×#Ñ#×1Ñ1°&Ô9ð ˆKÜœ&×0Ñ0´#×6Ñ6Ü$×4Ñ4�Ø×Ñ×*Ñ*¨;Õ7ð9 'FÐ!r«   c                 óP   • [        U R                  5      nU R                  SU5      $ )NÚ__builtins_dict__)r­  rY  Úinstall_global)r  r¬  s     r¬   r  Ú-OutputGraph.install_builtins_dict_in_fglobalsn  s&   € Ü& t×'8Ñ'8Ó9ˆ
Ø×"Ñ"Ð#6¸
ÓCÐCr«   ÚhookÚprefixc                 ó®   • U [        U R                  5       3nX0R                  ;   a  [        SU S35      eXR                  U'   X0R                  5       4$ )Nzbackward_state hook name 'z' already registered)rZ  r  rh  Úget_backward_state_proxy)r  r†  r‡  rK  s       r¬   Úadd_backward_state_hookÚ#OutputGraph.add_backward_state_hookr  sf   € ð �œ#˜d×1Ñ1Ó2Ð3Ð4ˆØ×&Ñ&Ó&Ü Ø,¨T¨FÐ2FÐGóð ð %)×Ñ˜DÑ!Ø×2Ñ2Ó4Ð4Ð4r«   c                 óf  • U R                   c™  U R                  (       a  [        SSS/ S9  [        5       nU R                  R                  S[        U5      U[        5       S9U l         [        5       U R                   R                  R                  S'   U R                  5       U l        U R                   $ )Nz&backward_state does not support exportrœ  z3Compiled autograd doesn't work with `torch.export`.©Úgb_typeÚcontextÚexplanationÚhintsÚdynamo_backward_state©r¡  r›  )r  rc  rJ   r%   Úroot_tracerÚcreate_graph_inputri  rZ   r~   rò   rŸ  Únew_varr  )r  Úexample_values     r¬   r‰  Ú$OutputGraph.get_backward_state_proxy}  s¡   € Ø×$Ñ$Ñ,Ø�{�{ÜØDØØ UØò	ô *›OˆMØ(,×(8Ñ(8×(KÑ(KØ'Ü�]Ó#ØÜ*Ó,ð	 )Lð )ˆDÔ%ô ?TÓ>UˆD×%Ñ%×*Ñ*×/Ñ/°
Ñ;Ø&*§l¡l£nˆDÔ#Ø×(Ñ(Ð(r«   c                 ó®  • U R                   R                  [        5       R                  [        R
                  5      5        U R                   R                  [        5       R                  [        R                  5      5        U R                   R                  [        5       R                  [        R                  5      5        U R                   R                  [        5       R                  [        R                  5      5        U R                   R                  [        5       R                  [        R                  5      5        U R                   R                  [        5       R                  [        R                  5      5        [        R                  R                  R                  5       nUb@  U R                   R                  [        5       R                  [        R                   5      5        [        R"                  R$                  R&                  (       dA  U R                   R                  [        5       R                  [        R(                  5      5        g g rö   )r   rì   rd   Ú
make_guardrR   Ú	SHAPE_ENVr^   ÚDETERMINISTIC_ALGORITHMSÚ	GRAD_MODEÚDEFAULT_DEVICEÚGLOBAL_STATEÚTORCH_FUNCTION_STATErè   r{  rw  Úpeek_interpreter_stackÚFUNCTORCH_STACK_MATCHr|  Úcompiled_autogradÚin_compiled_autograd_regionÚAUTOGRAD_SAVED_TENSORS_HOOKS)r  Úcis     r¬   rö  ÚOutputGraph.init_ambient_guards’  sr  € ð 	�‰�‰œÓ(×3Ñ3´L×4JÑ4JÓKÔLà�‰�‰ÜÓ×*Ñ*¬<×+PÑ+PÓQô	
ð 	�‰�‰Ô)Ó+×6Ñ6´|×7MÑ7MÓNÔOà�‰�‰Ô)Ó+×6Ñ6´|×7RÑ7RÓSÔTà�‰�‰Ô)Ó+×6Ñ6´|×7PÑ7PÓQÔRØ�‰�‰ÜÓ×*Ñ*¬<×+LÑ+LÓMô	
ô �X‰X× Ñ ×7Ñ7Ó9ˆØ‰>Ø�K‰K�O‰OÜ!Ó#×.Ñ.¬|×/QÑ/QÓRôô �}‰}×.Ñ.×J×JØ�K‰K�O‰OÜ!Ó#×.Ñ.Ü ×=Ñ=óõð Kr«   c                 óª  • [         R                  R                  R                  (       a  g [         R                  R
                  R                  R                  n[         R                  R
                  R                  R                  nU" 5       nU" U5      (       d  g Uu  pEU R                  S[         R                  R                  U R                  UR                  5      5      nU R                  S[         R                  R                  U R                  UR                  5      5      nUS:w  a  [        SU S35      eUS:w  a  [        SU S35      eXg/$ )NÚsaved_tensors_hooks_packÚsaved_tensors_hooks_unpackÚsaved_tensors_hooks_pack_0zEExpected pack_subgraph_name to be 'saved_tensors_hooks_pack_0', got 'Ú'Úsaved_tensors_hooks_unpack_0zIExpected unpack_subgraph_name to be 'saved_tensors_hooks_unpack_0', got ')rè   r|  r£  r¤  rw  Ú_aot_autogradr“  Útop_saved_tensors_hooksÚ"saved_tensors_hooks_are_inlineableÚinstall_subgraphr   r>  r  r•   rh  )r  Ú	get_hooksÚare_inline_hooksÚhooksÚpack_gmÚ	unpack_gmÚpack_subgraph_nameÚunpack_subgraph_names           r¬   r#  Ú7OutputGraph.maybe_install_saved_tensors_hooks_subgraphs°  s1  € Ü�=‰=×*Ñ*×F×FØä×$Ñ$×2Ñ2×8Ñ8×PÑPˆ	ä×Ñ×*Ñ*×0Ñ0×SÑSð 	ñ “ˆÙ ×&Ñ&Øð #ÑˆØ!×2Ñ2Ø&Ü�H‰H× Ñ  §¡°'·-±-Ó@ó
Ðð  $×4Ñ4Ø(Ü�H‰H× Ñ  §¡°)·/±/ÓBó 
Ðð Ð!=Ó=Ü ØWÐXjÐWkÐklÐmóð ð  Ð#AÓAÜ Ø[Ð\pÐ[qÐqrÐsóð ð #Ð9Ð9r«   r  .r  Úctor_arg_sourcesc                 óö  ^^• T" U6 nU R                  5       n[        U R                  5      mTR                  UU4S j5        U(       a"  TR	                  S [        X#5       5       5        O3TR	                  [        [        R                  R                  U5      5        TR                  [        U5      S5        TR                  U5        U R                  R                  TR                  5       5        [!        U5      nTX#4U R"                  U'   [$        R&                  " U R                  XF5      nUR)                  5       n[*        R,                  " 5       R.                  R0                  R3                  U5        U$ )zM
call fn(*args) before the graph runs and turn the result into a fake input.
c                  óP   >• T R                  TR                  TR                  5      $ rö   )Úload_import_fromr¥   r¤   )Úcgr  s   €€r¬   Ú<lambda>Ú3OutputGraph.synthetic_graph_input.<locals>.<lambda>à  s   ø€ �B×'Ñ'Ø—‘Ø—‘ôr«   c              3   ón   #   • U  H+  u  pUb  UO[         R                  R                  U5      v •  M-     g 7frö   )r4   ÚConstantVariableÚcreate)Ú.0rL  Úsrcs      r¬   Ú	<genexpr>Ú4OutputGraph.synthetic_graph_input.<locals>.<genexpr>æ  s3   é € ð â ;‘H�Cð ‘‘¬I×,FÑ,F×,MÑ,MÈcÓ,RÔRÚ ;ùs   ‚35F)r–  rD   rÄ  Úadd_push_nullÚforeachÚzipÚmapr4   rÂ  rÃ  Úcall_functionrZ  Ústorer  ÚextendÚget_instructionsre   r  r„   ÚbuildÚrealizer   r   Úguards_contextÚdynamo_guardsÚremove_guards_with_source)	r  r  r  rº  r—  Úvarnamer¡  r;  r¾  s	    `      @r¬   Úsynthetic_graph_inputÚ!OutputGraph.synthetic_graph_inputÓ  s)  ù€ ñ ˜D˜	ˆØ—,‘,“.ˆÜ�t—|‘|Ó$ˆØ
×Ñõô	
ö Ø�J‰Jñ ä # DÔ ;óõ ð
 �J‰J”sœ9×5Ñ5×<Ñ<¸dÓCÔDØ
×Ñœ˜T› EÔ*Ø
�‰�ÔØ×Ñ×%Ñ% b×&9Ñ&9Ó&;Ô<Ü% gÓ.ˆØ35°tÐ2Nˆ×'Ñ'¨Ñ/Ü ×&Ò& t§|¡|°]ÓKˆà—‘Ó!ˆÜ×ÒÓ×+Ñ+×9Ñ9×SÑSØô	
ð ˆr«   c                 ó:   • U R                   R                  U5        g rö   )râ  rê   )r  r  s     r¬   Úadd_cleanup_hookÚOutputGraph.add_cleanup_hookù  s   € Ø×Ñ×!Ñ! "Õ%r«   c                 ó~   • [        U R                  5       H
  nU" 5         M     U R                  R                  5         g rö   )Úreversedrâ  Úclear)r  r†  s     r¬   Úcall_cleanup_hooksÚOutputGraph.call_cleanup_hooksü  s.   € Ü˜T×/Ñ/Ö0ˆDÙŽFñ 1à×Ñ× Ñ Õ"r«   rÞ  c                 ó    • U R                   S   $ ©Nr   ©rß  r  s    r¬   r”  ÚOutputGraph.root_tracer  s   € à�|‰|˜A‰Ðr«   c                 ó    • U R                   S   $ ©Néÿÿÿÿrâ  r  s    r¬   Úcurrent_tracerÚOutputGraph.current_tracer  s   € à�|‰|˜BÑÐr«   c                 ó2   • [        U R                  5      S:H  $ )Nr0   )rZ  rß  r  s    r¬   Úis_root_tracerÚOutputGraph.is_root_tracer	  s   € ä�4—<‘<Ó  AÑ%Ð%r«   c                 óÔ  • [        US5      (       d  gUR                  R                  5       (       d  gU R                  nU R                  c#  [        [        UR                  5      5      U l        UR                  R                  5       nSnUR                  R                   HÄ  nUR                  S:w  a    gUR                  R                  S5      n[        U[        R                   5      (       d  MQ  U R                  R                  U5      nUR"                  nUbD  X‡:”  a?  X0R$                  ;  a"  [&        R(                  " 5       U R$                  U'   X€R                  U'   US-  nMÆ     g)z‰Record which stream index has input mutations by comparing current
tensor versions against the versions captured at graph input creation.Úsymbolic_stream_stateNr   rš  r—  r0   )rB  rí  Úin_stream_contextr”  r  r%  Ú	enumerateÚ_input_versions_at_beginningÚcur_stream_idr•   Únodesrž  rŸ  r   rç   rè   r   Ú_versionr  r   Úextract_stack)	r  r1  ÚtracerÚcur_stream_indexÚ	input_idxrò   r—  Úprev_versionÚcur_versions	            r¬   Ú&check_input_mutation_on_current_streamÚ2OutputGraph.check_input_mutation_on_current_stream  s4  € ô
 �rÐ2×3Ñ3ØØ×'Ñ'×9Ñ9×;Ñ;Øà×!Ñ!ˆØ×,Ñ,Ñ4Ü04Ü˜&×=Ñ=Ó>ó1ˆDÔ-ð ×3Ñ3×AÑAÓCÐØˆ	Ø—L‘L×&Ô&ˆDØ�w‰w˜-Ó'ÙØ ŸI™IŸM™M¨/Ó:ˆMÜ˜m¬U¯\©\×:Ñ:ÙØ×<Ñ<×@Ñ@ÀÓKˆLØ'×0Ñ0ˆKØÑ'¨KÓ,FØ#×+GÑ+GÓGä&×4Ò4Ó6ð ×0Ñ0Ð1AÑBð @K×1Ñ1°)Ñ<Ø˜‰NŠIò 'r«   a~  To fix this, either:
  1. Move the input mutation after the event.record() call.
  2. Record the event outside the compiled region:
       compiled_fn(x)
       event.record(stream)  # after torch.compile returns
  3. Insert a graph break before recording:
       torch._dynamo.graph_break()
       event.record(stream)
  4. Record the event on a stream that has no input mutations.Ústream_indexc                 ó   • XR                   ;  a  gU R                   U   n[        R                  " 5       nSSR                  UR	                  5       5       SSR                  UR	                  5       5       S3U R
                  -   n[        U5      e)u½   Error if an event is being recorded on a stream that already has
an input mutation. Called at record time so ordering is naturally
respected â€” records before mutations won't trigger this.Na  An event was recorded on a stream where a graph input was previously mutated. The input mutation is applied via copy_() in the runtime epilogue after the graph executes, so the event would not capture the mutation, leading to incorrect synchronization.

Input mutation occurred here:
rœ  z
Event record occurred here:
Ú
)r  r   rô  ÚjoinÚformatÚ_EVENT_INPUT_MUTATION_FIXr6  )r  rü  Úmutation_stackÚrecord_stackrÝ   s        r¬   Ú'check_event_record_after_input_mutationÚ3OutputGraph.check_event_record_after_input_mutation;  s—   € ð ×;Ñ;Ó;Øà×5Ñ5°lÑCˆÜ%×3Ò3Ó5ˆð.ð �w‰w�~×,Ñ,Ó.Ó/Ð0ð 1,à�w‰w�|×*Ñ*Ó,Ó-Ð.¨bð2ð 59×4RÑ4RñSð 	ô ˜3ÓÐr«   c                 ó.   • U R                   R                  $ rö   ©rç  r•   r  s    r¬   r•   ÚOutputGraph.graphR  s   € à×"Ñ"×(Ñ(Ð(r«   rË   c                 ó$   • XR                   l        g rö   r  )r  rË   s     r¬   r•   r  W  s   € à$)×ÑÕ!r«   c                 ó.   • U R                   R                  $ rö   )rç  Úinput_name_to_proxyr  s    r¬   r  ÚOutputGraph.input_name_to_proxy[  s   € à×"Ñ"×6Ñ6Ð6r«   c                 ó.   • U R                   R                  $ rö   )rç  Úreal_value_cacher  s    r¬   r  ÚOutputGraph.real_value_cache_  s   € à×"Ñ"×3Ñ3Ð3r«   Ú	LazyProxyc                 ó.   • U R                   R                  $ rö   )rç  Úbound_symbolsr  s    r¬   r  ÚOutputGraph.bound_symbolsc  s   € à×"Ñ"×0Ñ0Ð0r«   r  c                 ó:   • U R                   R                  " U0 UD6$ rö   )rç  Úcreate_proxy©r  r  r  s      r¬   r  ÚOutputGraph.create_proxym  s   € Ø×"Ñ"×/Ò/°Ð@¸Ñ@Ð@r«   c                 ó:   • U R                   R                  " U0 UD6$ rö   )rç  Úcreate_noder  s      r¬   r  ÚOutputGraph.create_nodep  ó   € Ø×"Ñ"×.Ò.°Ð?¸Ñ?Ð?r«   c                 ó:   • U R                   R                  " U0 UD6$ rö   )rç  Úremove_noder  s      r¬   r  ÚOutputGraph.remove_nodes  r  r«   Úsource_targetÚprior_tracerÚdescription)rÞ  NNc              #   óü  #   • [        5       n U(       a$  UR                  U R                  La  [        S5      eUR	                  5         U(       a  UO*[        U U R                  UU R                  R                  US9nU R                  R                  U5        Uv •  UR                  S S S 5        U R                  R                  5         g ! UR                  S S S 5        U R                  R                  5         f = f7f)NzBprior_tracer.parent must be the current tracer to preserve lineage)Úparentr  rÊ  r!  )rE   r#  rç  rh  Ú	__enter__rÞ  rÊ  rß  rê   Ú__exit__rë   )r  r  r   r!  Únew_scope_ctxrõ  s         r¬   Ú	subtracerÚOutputGraph.subtracerv  sá   é € ô (Ó)ˆð	Þà×&Ñ&¨d×.AÑ.AÒAÜ(Ø\óð ð ×#Ñ#Ô%ö  ñ ä#ØØ×.Ñ.Ø"/Ø"×1Ñ1×;Ñ;Ø +ñð ð �L‰L×Ñ Ô'ØŠLà×"Ñ" 4¨¨tÔ4Ø�L‰L×ÑÕøð ×"Ñ" 4¨¨tÔ4Ø�L‰L×ÑÕüs   ‚C<ŽBC
 Â.C<Ã
/C9Ã9C<c                 ó   • U $ rö   r£   r  s    r¬   ÚoutputÚOutputGraph.output—  s   € àˆr«   c                 ór   • U R                   R                  c  [        S5      eU R                   R                  $ )Nú*tracing_context.fake_mode must not be None)rò  r+  rh  r  s    r¬   r+  ÚOutputGraph.fake_mode›  s2   € à×Ñ×)Ñ)Ñ1Ü Ð!MÓNÐNØ×#Ñ#×-Ñ-Ð-r«   c                 óÞ   • U R                   R                  c  [        S5      eU R                   R                  R                  c  [        S5      eU R                   R                  R                  $ )Nr-  z4tracing_context.fake_mode.shape_env must not be None)rò  r+  rh  rj  r  s    r¬   rj  ÚOutputGraph.shape_env¡  s\   € à×Ñ×)Ñ)Ñ1Ü Ð!MÓNÐNØ×Ñ×)Ñ)×3Ñ3Ñ;Ü Ð!WÓXÐXØ×#Ñ#×-Ñ-×7Ñ7Ð7r«   c                 óB   • U R                   R                  R                  $ rö   )rò  rÒ  rÓ  r  s    r¬   r   ÚOutputGraph.guards©  s   € à×#Ñ#×2Ñ2×@Ñ@Ð@r«   c                 óB   • U R                   R                  R                  $ rö   )rò  Úmodule_contextr  r  s    r¬   r  ÚOutputGraph.nn_modules­  s   € à×#Ñ#×2Ñ2×=Ñ=Ð=r«   c                 óB   • U R                   R                  R                  $ rö   )rò  rÒ  ro  r  s    r¬   ro  ÚOutputGraph.aotautograd_guards±  s   € à×#Ñ#×2Ñ2×EÑEÐEr«   Úoutc                 ó¦  • [        [        [        [        [        S[
        4   [        4   4   Ub  UOU R                  R                  R                  5      n[        R                  [        R                  " 5       4US'   [        R                  R                  5       =n(       a  UR                  OSn[         R"                  " [        R$                  U5      [        R&                  " U5      4US'   [         R"                  " [        R$                  S5      [        R&                  " S5      4US'   [         R"                  " [        R(                  U5      [        R*                  " U5      4US'   [         R"                  " [        R(                  S5      [        R*                  " S5      4US	'   [        R,                  [        R.                  " 5       4US
'   g)zS
Saves to out if it is provided. Else saves to the tracing context's global_state.
.NÚgrad_enabledÚcudaÚautocast_enabledÚcpuÚautocast_cpu_enabledÚautocast_gpu_dtypeÚautocast_cpu_dtypeÚautocast_cache_enabled)r
   r%  rÆ   rÄ   r   r	   rÞ   rò  Úglobal_contextÚglobal_staterè   Úset_grad_enabledÚis_grad_enabledÚacceleratorÚcurrent_acceleratorri  Ú	functoolsÚpartialÚset_autocast_enabledÚis_autocast_enabledÚset_autocast_dtypeÚget_autocast_dtypeÚset_autocast_cache_enabledÚis_autocast_cache_enabled)r  r8  rC  ÚaccÚgpu_types        r¬   r  ÚOutputGraph.save_global_stateµ  sˆ  € ô Ü””eœH S¬# XÑ.´Ð4Ñ5Ð5Ñ6ð ‘?ñ à×)Ñ)×8Ñ8×EÑEó
ˆô ).×(>Ñ(>Ä×@UÒ@UÓ@WÐ'Xˆ�^Ñ$ô !&× 1Ñ 1× EÑ EÓ GÐG˜ÕGˆC�HŠHÈfð 	ô ×Òœe×8Ñ8¸(ÓCÜ×%Ò% hÓ/ð,
ˆÐ'Ñ(ô
 ×Òœe×8Ñ8¸%Ó@Ü×%Ò% eÓ,ð0
ˆÐ+Ñ,ô
 ×Òœe×6Ñ6¸ÓAÜ×$Ò$ XÓ.ð.
ˆÐ)Ñ*ô
 ×Òœe×6Ñ6¸Ó>Ü×$Ò$ UÓ+ð.
ˆÐ)Ñ*ô
 ×,Ñ,Ü×+Ò+Ó-ð2
ˆÐ-Ò.r«   c                 ó:   • U R                   R                  U5        g rö   )r  rê   )r  r1  s     r¬   Úpush_txÚOutputGraph.push_txÞ  s   € Ø×Ñ×Ñ Õ#r«   c                 ó6   • U R                   R                  5       $ rö   )r  rë   r  s    r¬   Úpop_txÚOutputGraph.pop_txá  s   € Ø×Ñ×#Ñ#Ó%Ð%r«   c                 óZ   • U R                   (       d  U R                  $ U R                   S   $ rå  )r  rÄ  r  s    r¬   Ú
current_txÚOutputGraph.current_txä  s$   € à#'×#3×#3ˆt�|‰|ÐM¸×9IÑ9IÈ"Ñ9MÐMr«   r¡  c                 ó~   • UR                  U R                  R                  U R                  R                  S.0 0 5      $ )zÎ
Resolve the runtime value a Source points to using root_tx's frame.

Useful to inspect the python object associated with the source during
debugging. Will also be used by invoke subgraph caching later on.
)ÚGÚL)Ú	get_valuerÄ  Ú	f_globalsÚf_locals)r  r¡  s     r¬   Úresolve_source_valueÚ OutputGraph.resolve_source_valueè  s9   € ð ×ÑØ—,‘,×(Ñ(¨t¯|©|×/DÑ/DÑEØØó
ð 	
r«   c                 ó,   • [        U R                  5      $ rö   )rn   r•   r  s    r¬   rn   ÚOutputGraph.count_callsõ  s   € Ü˜4Ÿ:™:Ó&Ð&r«   c                 óX   • [        [        U R                  R                  5      5      S:H  $ rá  )rZ  r  r•   rò  r  s    r¬   Úis_empty_graphÚOutputGraph.is_empty_graphø  s!   € Ü”4˜Ÿ
™
×(Ñ(Ó)Ó*¨aÑ/Ð/r«   c                 ó”   • [        U R                  R                   Vs/ s H  oR                  S:X  d  M  UPM     sn5      S:„  $ s  snf )Nr*  r   )rZ  r•   rò  rž  )r  Úxs     r¬   Úhas_outputsÚOutputGraph.has_outputsû  s9   € Ü˜tŸz™z×/Ò/ÓDÒ/˜!·4±4¸8Ñ3C—AÑ/ÑDÓEÈÑIÐIùÒDs
   žAµArF  c                 ó¾   • U(       d  [        S5      eU R                  nUR                  S5       H)  n[        U[        5      (       a  X#   nM  [        X#5      nM+     U$ )Nzkeys must be a non-empty stringrR  )rh  r  rS  rç   r%  rÖ   )r  rF  Úobjr  s       r¬   Úget_submoduleÚOutputGraph.get_submoduleþ  sP   € ÞÜ Ð!BÓCÐCØ<@¿O¹OˆØ—‘˜C–ˆAÜ˜#œt×$Ñ$Ø‘f’ä˜c“o’ñ	 !ð
 ˆ
r«   rK  c                 óª   • [        U R                  S   5      n U S[        U R                  5       3nX2;  a  U R                  S==   U4-  ss'   U$ M;  )Nr¹   rñ   )ræ   rÃ  rã  r  )r  rK  ÚexistingrH  s       r¬   r–  ÚOutputGraph.new_var	  s^   € Ü�t×(Ñ(¨Ñ7Ó8ˆàØ�F˜!œD ×!3Ñ!3Ó4Ð5Ð6ˆCØÓ"Ø×!Ñ! -Ó0°S°FÑ:Ó0Ø�
ñ	 r«   c                 óZ   • XR                   S   ;  a  U R                   S==   U4-  ss'   gg)z/Ensure self.code_options.co_names contains namer¸   N)rÃ  )r  rK  s     r¬   Úupdate_co_namesÚOutputGraph.update_co_names  s0   € à×(Ñ(¨Ñ4Ó4Ø×Ñ˜jÓ)¨d¨WÑ4Ô)ð 5r«   Únamesc                  ó|  • SR                  [        [        U 5      5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SS	U5      n[        R                  " S
SU5      nU(       a  US   R                  5       (       d  SU-   nU$ )Nrñ   z9\._(?:modules|parameters|buffers)\[(['\"])([^'\"\]]+)\1\]z.\2z2getattr\(\s*([^,]+?)\s*,\s*(['\"])([^'\"]+)\2\s*\)z\1.\3z^[GL]\['?(.*?)'?\]$z\1z	\[(\d+)\]z_\g<1>z[^a-zA-Z0-9]r   Úsub)rÿ  rË  rÆ   Úrery  Úisalpha)rw  rK  s     r¬   Úmodule_key_nameÚOutputGraph.module_key_name  sŸ   € ð �x‰xœœC ›Ó(ˆä�vŠvØHÈ&ÐRVó
ˆô �vŠvØAÀ8ÈTó
ˆô �vŠvÐ,¨e°TÓ:ˆä�vŠv�l I¨tÓ4ˆä�vŠv�o s¨DÓ1ˆæ˜4 ™7Ÿ?™?×,Ñ,Ø˜4‘<ˆDàˆr«   Úattr_prefixÚ
attr_valuec                 óp  • [        U[        R                  R                  5      (       a?  U R                  R                  5        H!  u  p4XBL d  M  U R                  SUS0 5      nUs  $    [        XR                  5      nX R                  U'   U R                  SUS0 5      n[        UR                  U5        U$ )NÚget_attrr£   )
rç   rè   r&  r'  r  r  r  ru   r}   rò   )r  r~  r  rK  ÚmodÚproxyÚ	attr_names          r¬   Ú%register_static_attr_and_return_proxyÚ1OutputGraph.register_static_attr_and_return_proxy/  sš   € ô
 �j¤%§(¡(§/¡/×2Ñ2Ø!Ÿ_™_×2Ñ2Ö4‘	�ØÔ$Ø ×-Ñ-¨j¸$ÀÀBÓG�EØ ’Lñ 5ô
 (¨·_±_ÓEˆ	ð &0�‰˜	Ñ"Ø×!Ñ! *¨i¸¸RÓ@ˆÜ˜%Ÿ*™* jÔ1Øˆr«   ÚtargetÚoptionsc                 ó  ^ ^^^
^^• [        TT R                  5      (       a"  [        R                  " T R                  T40 TD6$ [        T5      mST;  a  [        S5      eTS   m[        T[        5      (       a  [        ST 35      e[        T[        R                  5      (       aG  T R                  mT R                  5       (       d  T R                  mS[        S[        4UU UUU4S jjnGO}[        T[        R                  R                   5      (       a›  [        T[        R                  R                   5      (       d  [        S[#        T5       35      eT(       a>  [%        TR'                  [(        R*                  5      5        S[        S[        4UU4S jjnOÏS[        S[        4UU4S	 jjnO¹[        T[        R,                  [        R.                  45      (       a  S[        S[        4UU U4S
 jjnOs[1        [#        T5      5      (       aE  T R                  mT R                  5       (       d  T R                  mS[        S[        4UU UU4S jjnOS[        S[        4U U4S jjnT R2                  R5                  5        H  u  pVUTL d  M  U" U5      s  $    [6        R8                  " U6 m
[;        T
T R2                  T R<                  5      m
TT R2                  T
'   [        T[        R                  R                   5      (       av  S[        SS 4U
U U4S jjn[?        TS5      (       a!  TRA                  5        H  u  p‰U" U5        M     [?        TS5      (       a!  TRC                  5        H  u  p‰U" U5        M     U" T
5      $ )Nr¡  z$'source' must be provided in optionsz,source must not be a ParamBufferSource, got Ú
module_keyrÏ   c           	      óš  >• TR                   c  [        S5      eTTR                   U '   TR                  c  [        S5      eTTR                  R                  R                  ;   a#  TR                  R                  R                  T   $ [        T5      S:X  a>  [        T[        5      (       d)  [        TR                  [        R                  5      5        O8[        T5      (       d(  [        TR                  [        R                  5      5        [        TR                  TR                  SU S0 5      4ST0TD6nTR                  R                  R                  R!                  TU5      nSUR#                  5       R$                  R&                  ;   a  [        S5      e[)        T5      UR#                  5       R$                  R&                  S'   U$ )	Nú%param_name_to_source must not be Noneúroot_tx must not be NoneÚguardedr�  r£   r—  Útensor_dictz/'tensor_dict' already exists in proxy node meta)rû  rh  rÄ  r*  rÂ  rt   rç   rb   rS   rš  rR   ÚID_MATCHr_   ÚTENSOR_MATCHr�   r  Útrack_object_existingÚas_proxyrò   rŸ  rh   )rŠ  rE  rˆ  r  r¡  r‡  rõ  s     €€€€€r¬   Ú	wrap_nameÚ6OutputGraph.register_attr_or_module.<locals>.wrap_namef  s‡  ø€ Ø×,Ñ,Ñ4Ü(Ð)PÓQÐQØ8>�×)Ñ)¨*Ñ5ð —<‘<Ñ'Ü(Ð)CÓDÐDØ˜TŸ\™\×0Ñ0×=Ñ=Ó=ØŸ<™<×.Ñ.×;Ñ;¸FÑCÐCä*¨6Ó2°iÓ?Ì
ØÔ-÷Iñ Iô " &×"3Ñ"3´L×4IÑ4IÓ"JÕKÜ+¨F×3Ñ3Ü! &×"3Ñ"3´L×4MÑ4MÓ"NÔOä"Ø—L‘LØ×'Ñ'¨
°JÀÀBÓGñð #)ðð ñ	�ð —\‘\×(Ñ(×5Ñ5×KÑKÈFÐTVÓW�à  B§K¡K£M×$6Ñ$6×$;Ñ$;Ó;Ü(ØIóð ô :NÈfÓ9U�—‘“×"Ñ"×'Ñ'¨Ñ6à�	r«   z&target must be a torch.nn.Module, got c                 ó2   >• [        [        T5      U T40 TD6$ rö   )r‡   ri  ©rŠ  rˆ  r‡  s    €€r¬   r”  r•  –  s   ø€ ä+¬D°«L¸*ÀfÑXÐPWÑXÐXr«   c                 ó2   >• [         R                  " T40 TD6$ rö   )r4   ÚUnspecializedNNModuleVariabler—  s    €€r¬   r”  r•  Ÿ  s   ø€ ä$×BÒBÀ6ÑUÈWÑUÐUr«   c           	      óp   >• [         R                  " TR                  TR                  SU S0 5      4ST0TD6$ )Nr�  r£   Úsym_num)r‰   rÃ  rÄ  r  )rŠ  rˆ  r  r‡  s    €€€r¬   r”  r•  «  sE   ø€ Ü&×-Ò-Ø—L‘LØ×%Ñ% j°*¸bÀ"ÓEñð #ðð ñ	ð r«   c                 óV  >• [         R                  R                  R                  TR                  T5      nTR                  SU S0 5      n[        UR                  U5        [         R                  R                  R                  R                  R                  " X!4STR                  0TD6$ )Nr�  r£   r1  )rè   Ú_libraryÚfake_class_registryÚmaybe_to_fake_objr+  r  r}   rò   r|  r4   Úscript_objectÚCustomClassObjectVariablerÃ  rÄ  )rŠ  Úfake_script_objrƒ  rˆ  r  r‡  rõ  s      €€€€r¬   r”  r•  ½  sŒ   ø€ Ü"'§.¡.×"DÑ"D×"VÑ"VØ—N‘N Fó#�ð ×+Ñ+¨J¸
ÀBÈÓK�Ü! %§*¡*¨oÔ>Ü—}‘}×.Ñ.×<Ñ<×VÑV×]Ò]ØñØ/3¯|©|ðØ?Fñð r«   c                 ó–   >• TR                   R                  U 5        TTR                  U '   [        R                  " TT[        U S95      $ )N)r£  )r*  ru  rY  r„   rÐ  r[   )rŠ  r  r‡  s    €€r¬   r”  r•  Ë  sF   ø€ Ø—‘×+Ñ+¨JÔ7Ø06�×!Ñ! *Ñ-Ü&×,Ò,ØØÜ"¨zÑ:óð r«   Ú	leaf_namec                 ó
  >• TR                   c  [        S5      eTR                  TU 5      nT SU  3nUTR                   U'   [        T[        5      (       a-  U TR
                  [        R                  UR                  5      '   g g ©NrŒ  rR  ©	rû  rh  r\  rç   ra   r  rÁ  r|  rK  ©r¤  Ú
new_sourceÚnew_namerK  r  r¡  s      €€€r¬   Úregister_leaf_nameÚ?OutputGraph.register_attr_or_module.<locals>.register_leaf_nameÞ  s†   ø€ Ø×,Ñ,Ñ4Ü(Ð)PÓQÐQØ!×AÑAÀ&È)ÓT�
Ø"˜V 1 Y KÐ0�Ø6@�×)Ñ)¨(Ñ3Ü˜f¤k×2Ñ2ð "ð ×9Ñ9Ü#×3Ñ3°J·O±OÓDòð 3r«   Ú_parametersÚ_buffers)"rT   rc  r„   rÐ  rZ  r%  rh  rç   rc   rè   r   rç  rê  r”  rÆ   r&  r'  ri  rS   rš  rR   Ú	NN_MODULEÚSymIntÚSymFloatr    r  r  rÁ  r|  ru   rY  rB  Únamed_parametersÚnamed_buffers)r  r‡  rw  rˆ  r”  r  r  r«  r¤  rñ   rK  r¡  rõ  s   `` `      @@@r¬   Úregister_attr_or_moduleÚ#OutputGraph.register_attr_or_moduleB  sÿ  ý€ ô   ¨¯©×4Ñ4ô #×(Ò(¨¯©¸&ÑLÀGÑLÐLä�w“-ˆØ˜7Ó"Ü Ð!GÓHÐHØ˜Ñ"ˆÜ�fÔ/×0Ñ0Ü Ø>¸v¸hÐGóð ô �fœeŸl™l×+Ñ+Ø×(Ñ(ˆFØ×&Ñ&×(Ñ(ð ×)Ñ)�ð%¤cð %¬o÷ %õ %ôN ˜¤§¡§¡×0Ñ0Ü˜f¤e§h¡h§o¡o×6Ñ6Ü$Ø<¼TÀ&»\¸NÐKóð ö Ü˜f×/Ñ/´×0FÑ0FÓGÔHðY¬#ð Y´/÷ Yñ YðV¬#ð V´/÷ Vñ Vô ˜¤§¡¬u¯~©~Ð >×?Ñ?ð¤cð ¬o÷ ò ô œT &›\×*Ñ*ð
 ×(Ñ(ˆFØ×&Ñ&×(Ñ(Ø×)Ñ)�ð¤cð ¬o÷ ó ð¤cð ¬o÷ ð ð —O‘O×)Ñ)Ö+‰DˆAØ�FŒ{á  “|Ò#ñ ,ô
 ×*Ò*¨EÐ2ˆÜ" 4¨¯©¸$×:KÑ:KÓLˆØ &ˆ�‰˜ÑÜ�fœeŸh™hŸo™o×.Ñ.ð	"¬cð 	"°d÷ 	"ñ 	"ô �v˜}×-Ñ-Ø$*×$;Ñ$;Ö$=‘L�IÙ& yÖ1ñ %>ä�v˜z×*Ñ*Ø$*×$8Ñ$8Ö$:‘L�IÙ& yÖ1ñ %;ñ ˜‹Ðr«   c                 óÔ  • U R                   R                  S5      n[        U5      nU(       d  / 0 4$ / n0 n/ UR                  QUR                  R                  5       QU R                  R                  R                  5       QnU(       Gab  UR                  5       n[        U[        5      (       aP  [        UR                  [        5      (       d!  [        S[        UR                  5       35      eXgR                  -  nM}  XpR                  R                  ;  d  [        UR                   ["        5      (       al  [        UR$                  [&        5      (       aM  [        UR$                  R(                  [*        5      (       a$  UR$                  R(                  R,                  U;   d  GM$  UR$                  R(                  R,                  nX…;  a  / XX'   XX   R/                  U5        U(       a  GMb  0 n	0 n
U R0                   GHf  n[        UR2                  [        5      (       a9  [        UR$                  [*        5      (       a  UR$                  R,                  U;   d  M^  UR$                  R,                  nXÀR4                  S   ;  a  [        SU S35      eX\    HÉ  nUR$                  U
;   a  M  UR$                  c  [        S5      eUR$                  R6                  nXÙ;  aN  U R9                  U S35      nXéU'   UR;                  [=        SUS	9[?        U5      [A        5       [=        S
US	9/5        UR$                  c  [        S5      eUR$                  n[+        X�   5      X¯'   MË     GMi     XJ4$ )Nr  zx.items must be a list, got r¹   r¬  z' not found in co_varnameszx.source must not be NoneÚ_refÚ	LOAD_FAST©ÚargvalÚ
STORE_FAST)!rX  r   rs   rï   Úsymbolic_localsÚvaluesrÂ  Ústore_attr_mutationsrF  rë   rç   r…   r  r  rh  ri  r=  rU   r¡  r]   rO  ra   Ú
local_namerê   Ú	graphargsÚ_examplerÃ  Úindexr–  rÎ  r<   r=   r8   )r  r1  Úmaybe_gmÚstolen_list_namesÚalias_instsÚneeds_aliasÚqueuerj  Ústolen_namerî   Úoverridden_sourcesÚargÚ	list_nameÚlist_idxÚ
alias_nameÚ
old_sources                   r¬   Úhandle_aliases_for_stolen_listsÚ+OutputGraph.handle_aliases_for_stolen_listsô  sâ  € ð ×#Ñ#×'Ñ'¨Ó/ˆÜ/°Ó9ÐÞ Ø�r�6ˆMàˆØ8:ˆð
Ø�X‰Xð
à×Ñ×&Ñ&Ó(ð
ð ×Ñ×3Ñ3×8Ñ8Ó:ð
ˆ÷ Ø—	‘	“ˆAÜ˜!Ô-×.Ñ.Ü! !§'¡'¬4×0Ñ0Ü(Ð+GÌÈQÏWÉWËÀÐ)WÓXÐXØŸ™Ñ �Ùð ×.Ñ.×CÑCÓCÜ! !§/¡/Ô3L×MÑMä˜qŸx™x¬×7Ñ7Ü˜qŸx™xŸ}™}¬k×:Ñ:Ø—H‘H—M‘M×,Ñ,Ð0AÓAâàŸ(™(Ÿ-™-×2Ñ2ˆKØÓ-Ø+-�Ñ(ØÑ$×+Ñ+¨AÔ.÷- ‰eð2 ˆØ35ÐØ—>•>ˆCä˜3Ÿ<™<¬×.Ñ.Ü˜sŸz™z¬;×7Ñ7Ø—J‘J×)Ñ)¨[Ó8áð Ÿ
™
×-Ñ-ˆIØ× 1Ñ 1°-Ñ @Ó@Ü$ q¨¨Ð3MÐ%NÓOÐOØ Ô+�à—8‘8Ð1Ó1Ùð —8‘8Ñ#Ü(Ð)DÓEÐEØŸ8™8Ÿ>™>�ØÓ*Ø!%§¡Ø$˜+ TÐ*ó"�Jð )3˜HÑ%à×&Ñ&ä.¨{À9ÑMÜ-¨hÓ7Ü0Ó2Ü.¨|ÀJÑOð	ôð —8‘8Ñ#Ü(Ð)DÓEÐEØŸX™X�
Ü1<¸WÑ=NÓ1OÐ"Ó.ô= ,ñ "ð` Ð.Ð.r«   Ú
stack_popsc                 óº  • UR                  5         / n[        5       nS[        SS4S jn[        UR                  5       GHN  u  pg[        UR                  5      U-
  U:*  n[        R                  R                  XxS9  [        U[        R                  5      (       d  [        R                  " XW5        U(       a  UR                  U5        M�  [        U[        5      (       a  UR                  R                  U5        OUR                  U5        [        U[        5      (       d  Mæ  UR                   c  SO[#        UR                   5      n	UR$                  R                  [        U5      S-
  U	45        UR&                  R                  U5        GMQ     [        U5      Ul        [+        UR-                  5       UR/                  5       -   5      n
UR0                  R3                  5        GHo  u  p¼[        R                  " X\5        [        UR4                  [6        5      (       a*  UR4                  R8                  U:X  a  XR:                  L a  Me  Xº;   a  Ml  [<        R>                  S:¼  a=  [@        RC                  [        U5      (       a  URD                  R                  U5        M¼  O*[@        RC                  [        U5      (       a  [G        S	5      e[        URH                  5      URH                  U'   [        U[        5      (       a@  UR                   c  SO[#        UR                   5      n	URJ                  R                  X¹45        UR                  U5        GMr     X44$ )
a[  
Gets the stack + locals values belonging to tx that need to be restored.

Also prunes dead tx locals and realizes all VTs in the tx's stack.

NullVariables in stack/locals will NOT be restored, unless they are the top `stack_pops`
elements of the stack - it is expected that the next instruction to run will pop the top
`stack_pops` elements of the stack, so we should codegen NULLs.

Returns:
    - stack_values: stack and locals values that need to be restored
    - meta: locations of NULLs and ContextWrappingVariables in the stack/locals
        (ignores the top `stack_pops` values on the stack)
rH  rÏ   Nc                 ól   • [         R                  [        R                  U 5      (       a  [	        S5      eg )NzCAttempted to reconstruct WithExitFunctionVariable outside the stack)ri  Ú__instancecheck__r4   ÚWithExitFunctionVariablerh  )rH  s    r¬   Úctx_exit_checkÚ@OutputGraph._get_stack_values_to_restore.<locals>.ctx_exit_checki  s1   € Ü×%Ñ%¤i×&HÑ&HÈ#×NÑNÜ$ØYóð ð Or«   )Úallow_lazy_constantr£   r0   )é   é   z.variable should never be NULL in Python < 3.12)&Úprune_dead_localsr‚  r„   rï  rï   rZ  r4   ÚLazyVariableTrackerÚrealize_allrç   rÕ  Úvisitrê   r†   r‡  r‚   Útarget_valuesrÄ   r‰  rŠ  rƒ  ræ   ÚcellvarsÚfreevarsr¼  r  r¡  ra   r¿  rÄ  ÚsysÚversion_infori  rÔ  rˆ  rh  r†  r‹  )r  r1  rÑ  Ústack_valuesrŸ  rÖ  ÚirË   rØ  rß  Úcell_and_freevarsr  r  s                r¬   Ú_get_stack_values_to_restoreÚ(OutputGraph._get_stack_values_to_restoreS  s»  € ð" 	×ÑÔàˆÜ"Ó$ˆð	¤ð 	°Dô 	ô " "§(¡(×+‰HˆAä"% b§h¡h£-°!Ñ"3°zÑ"AÐÜ×)Ñ)×5Ñ5Øð 6ñ ô ˜e¤Y×%GÑ%G×HÑHÜ×%Ò% nÔ<æ"Ø×#Ñ# EÔ*ÙÜ˜%¤×.Ñ.Ø×%Ñ%×,Ñ,¨QÕ/à×#Ñ# EÔ*Ü˜%Ô!8×9Ó9à×-Ñ-Ñ5‘B¼5À×ATÑATÓ;Uð ð ×#Ñ#×*Ñ*¬C°Ó,=ÀÑ,AÀ=Ð+QÔRØ×)Ñ)×0Ñ0°×3ñ/ ,ô2 ˜\Ó*ˆŒô   §¡£°·±³Ñ =Ó>Ðð ×&Ñ&×,Ñ,×.‰DˆAä×!Ò! .Ô4ô ˜1Ÿ8™8¤[×1Ñ1Ø—H‘H×'Ñ'¨1Ó,ØŸ,™,Ò&áð Ó%Ùä×Ñ 7Ó*ô ×)Ñ)¬,¸×:Ñ:Ø×)Ñ)×0Ñ0°Ô3Ùð ;ô
 ×)Ñ)¬,¸×:Ñ:Ü(ØHóð ô $' t×'8Ñ'8Ó#9ˆD×Ñ˜aÑ Ü˜!Ô4×5Ñ5àŸ/™/Ñ1‘B´u¸Q¿_¹_Ó7Mð ð ×$Ñ$×+Ñ+¨QÐ,>Ô?Ø×Ñ ×"ñQ /ðT Ð!Ð!r«   rý   c           
      óš  • U R                   c  [        S5      e[        R                  b  SSKJn  U" U R                  5        [        R                  (       d  U R                   ULa  [        S5      eU R                  5         X l	        SU l
        [        R                  SU5        / n[        R                  S:¼  a–  U R                   R                   H|  nUR                   S	:X  a;  UR#                  [%        S	['        U R                   R(                  S
   5      S95        MN  [*        R*                  " U5      nSUl        UR#                  U5        M~     / n/ n	Un
U
b®  [/        S U
R0                   5       5      (       d  [        S5      eU R3                  XªUL a  UOS5      u  p¼UR#                  U5        U	R#                  U5        [5        U
R0                  5       H  nUR7                  X¢R8                  S9  M     U
R:                  n
U
b  M®  U R<                  R?                  U5        U RA                  U5        U RB                  (       a#  SSK"J#n  U RA                  U" 5       5        SU l!        U RH                  (       a  U RJ                  (       a  [        S5      eU RA                  U RH                  5        U RM                  U R                   5      u  nnU RA                  U5        U RO                  5         U RP                  RS                  5        VVs0 s H  u  nnU[U        U5      _M     nnn[W        U5      nSSK,J-n  ['        U R\                  5      S:”  aÐ  / nU R_                  S5      U l0        U" [c        U R\                  5      SS9nU Re                  SU5      n[g        U R                   UUS9nURi                  URk                  US5      5        URi                  [m        SS5      5        UR#                  URo                  U R`                  5      5        U RA                  U5        U VVs/ s H  nU  H  nUPM     M     nnnSnSnU R                   UL =(       aâ    U=(       aÙ    [/        S U 5       5      =(       aÀ    [/        S U 5       5      =(       a§    ['        [q        U5      5      ['        U5      :H  =(       a€    U R<                  Rs                  5       =(       a_    URt                  (       + =(       aG    U Rv                  (       + =(       a/    U	S   Rx                  (       + =(       a    U	S   Rz                  (       + nU(       a<  U R|                  (       a+  U R                  U5        U R<                  Rs                  5       nU(       a‘  [g        U R                   5      n U R�                  UU 5        U Rƒ                  U[…        [5        U5      5      U5      u  n!n"U RA                  / U!QU R‡                  5       Q[‰        S5      Q[%        S['        U5      S9PU"S9  GOpU R_                  S5      n[g        U R                   UUUS9n#U R‹                  UUU#S5        U R                  U5        0 n$U#RŒ                  RS                  5        H0  u  nn%U%S:”  d  M  [�        U[�        [’        45      (       a  M+  SU$U'   M2     [g        U R                   UUU$US 9n&U R‹                  UUU&S5        [”        R–                  R                  R˜                  (       Gaq  U(       Gai  ['        U5      S:X  GaY  US   n'[›        U'[”        R–                  Rœ                  Rž                  5      (       Ga   U'R                   [”        R–                  R¢                  R¤                  L Gaî  U'RR                  S   n(U'RR                  S   n)[›        U([”        R–                  Rœ                  R¦                  5      (       d  [        S!5      e0 n*U&R¨                  R«                  5        Hh  n+[›        U+[”        R–                  R¬                  R®                  5      (       d  [        S"[±        U+5       35      eU+R²                  n,U+R´                  U*U,'   Mj     U R¶                  R¸                  n-[»        U(RR                  5       H»  u  n.n'U'U*;   a  [½        SU*U'   5      U-U.'   M   U'R¾                  bK  [Á        U'R¾                  S#S5      =n/(       a-  [Á        U/S$S5      (       a  [½        S%U'R¾                  5      U-U.'   Mx  U'RÃ                  5       (       a  [½        S&U'RÅ                  5       5      U-U.'   M¬  [        S'U' S(U. 35      e    U)RÅ                  5       U R¶                  lc        / n1Sn2[Í        U RÎ                  5      S:w  d  ['        U&R¨                  5      S:w  aŒ  U Rƒ                  UU&RÑ                  5       U5      u  n!n2U1Ri                  U!5        ['        U&R¨                  5      S:w  a#  U1R#                  U&Ro                  U5      5        SnO+U1R#                  [%        S/5      5        OU RÓ                  5         U RA                  U1U2S9  U RA                  U&R‡                  5       U&RÕ                  5       S9  U RA                  [%        S0['        U5      U	S   RÖ                  -
  S9/5        Sn3Sn4[»        U	5       GHÊ  u  n5n['        URØ                  5      n6U5S:w  a  U6URÖ                  -  n6U6S:X  a&  U RA                  [%        S0SS9/[‰        S5      Q5        O;U4U6-  n4U RA                  [Û        5       /[Ý        U3U45      Q[‰        S5      Q5        U3U6-  n3U5['        U	5      S-
  :X  d  M¬  [g        U R                   5      n70 n8U R                   RÞ                  RS                  5        H‡  u  n9n:[›        U:R¾                  [’        5      (       d  M'  U:R¾                  Rà                  U9:X  d  MC  U7Rã                  U7Rå                  U95      5        ['        URØ                  5      ['        U85      -   U8U9'   M‰     U RA                  U7R‡                  5       [%        S0['        U85      S9[%        S1SS9/-   5        URØ                  Rç                  U85        GMÍ     U RA                  [%        S/5      [%        S0['        U	5      S9/[é        U	S   RÖ                  S-   5      Q5        U(       a!  U(       a  U RA                  [%        S2US39/5        [”        R–                  R                  Rê                  S4;   ag  U Rí                  SS59n;U;(       aQ  [”        R–                  R                  Rê                  S6:X  a  [î        Rð                  " S7U; 35        U	$ [ó        S7U; 35      eU	$ s  snnf s  snnf ! [È         a  n0[Ë        S)S*U) 3S+S,S-/U0S.9   Sn0A0GNNSn0A0ff = f)8au  
Compiles the current subgraph, with inputs w.r.t. self.root_tx, and codegens:
    - Call the compiled subgraph
    - Apply side effects
    - Codegen stack and locals
    - Store the locals

Python does not allow NULL to be an arg to a function, so we do not codegen NULLs on the stack,
unless the value is one of the top `stack_pops` values on the stack (these values are expected to be
popped immediately after this generated code. The prologue of the resume function is expected to restore
any dropped NULLs.

Returns stack indices and locals keys where we dropped NULLs, and where we found inactive context manager objects.
Nr�  r   )Ú_finalize_spec_wiringz7root_tx must be tx when nested_graph_breaks is disabledTzCOMPILING GRAPH due to %s©rÙ  é   ÚCOPY_FREE_VARSrÀ   ©rÊ  c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frö   )Úcan_restore)rÄ  Úblocks     r¬   rÆ  Ú/OutputGraph.compile_subgraph.<locals>.<genexpr>  s   é € ÐKÒ8J¨u×(Ñ(×*Ð*Ò8Jùó   ‚z3all blocks in cur_tx.block_stack must be restorable)Úis_graph_breakr0   )Úcreate_breakpointFz)export does not support pregraph_bytecode©ÚdisableÚrandom_valuesz.do not trace into Dynamo rng recovery function©rý   Ú__gen_rand_values)rÉ  c              3   óÔ   #   • U  H^  n[        U[        [        [        45      (       + =(       a2    [        U[        5      =(       a    UR                  5       [        L (       + v •  M`     g 7frö   )rç   rŠ   rˆ   r‹   r‰   Úpython_typeÚfloat)rÄ  r  s     r¬   rÆ  rò  t  sa   é € ð ò +�Aô Øä3Ü,Ü4ðóô ÷ Vô $ A¤Ó7×T¸A¿M¹M»OÌuÐ<TÔUôVò +ùs   ‚A&A(c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frö   )Ú	is_tensor©rÄ  rj  s     r¬   rÆ  rò  €  s   é € Ð=Ò+< a—K‘K—M�MÒ+<ùró  ræ  é   ÚUNPACK_SEQUENCE)Úpycoder™   )ÚtempvarsrÉ  z#flat_returns must be a ListVariablez3graph output value must be a GraphOutputEntry, got rO  Úis_inputrš   r›   zEncountered unrecognized type z at output z8nested function with non-constructible closure in outputz as_python_constant for out_spec z£Cannot return a nested function with closure from a compiled function. Dynamo failed to construct the function defined in the compiled region with closure objects.zGDefine the function at module scope instead of inside another function z0Ensure that all closure variables are constants.)rŽ  r�  r�  r‘  Úfrom_excÚPOP_TOPÚ
BUILD_LISTÚLIST_EXTENDÚDELETE_FASTr¹  )ÚwarnÚerrorr9  r  z‹While compiling, we found certain side effects happened in the model.forward. Here are the list of potential sources you can double check: )zrÄ  rh  r1   r÷  rø  rê  rj  Únested_graph_breaksr€  Úcompile_subgraph_reasonr  rù   Údebugrâ  rã  Úprefix_instsÚopnamerê   r<   rZ  rÃ  r1  Úexn_tab_entryÚallÚblock_stackrç  rÜ  Úexitrÿ   r#  rÂ  Úprune_dead_object_newÚadd_output_instructionsrê  Úbytecode_transformationrõ  r  rc  rÏ  Úcleanup_graphr  r  r{   r  Ú
decoratorsr÷  r
  r–  r  r  r„  rD   rÎ  Úload_function_namer:   Úcreate_storeræ   Úis_emptyÚdebug_localsr  r‡  rˆ  rü  r7  Úcodegen_cellsÚcompile_and_call_fx_graphr  rÏ  r?   Úcodegen_suffixÚusesrx   re   ra   rè   r|  Úlog_graph_in_out_metadatarç   r4   ÚNamedTupleVariableÚ	tuple_clsÚfunctional_exportÚExportTracerOutputÚListVariableÚgraph_outputsr½  ÚcodegenÚGraphOutputEntryri  ÚvariablerÂ  r²  r�  rï  rÈ   r¡  rÖ   Úis_python_constantrD  r‘  rƒ   rJ   rn   r•   Úgraph_output_varsÚrun_compiler_collectiveÚ
get_pycoderƒ  r†  r;   r7   r¼  r¿  Úappend_outputÚcreate_loadÚupdater>   Úside_effect_replay_policyrM  Úwarningsr  r6  )<r  r1  rý   rÑ  rê  r  ÚinstÚ	inst_copyÚall_stack_valuesÚall_stack_locals_metasÚcur_txrä  rŸ  rñ  rõ  rÅ  rÉ  rK  r‚  Únn_modules_proxiesÚrootr÷  Úrandom_calls_instructionsÚrand_fnÚrand_fn_namer*  ÚvalsrL  Ústack_values_flatÚstored_graph_output_varÚgraph_output_varÚcan_use_fast_pathÚcell_cgÚinstructionsr  Úpass1r  r  Úpass2rE  Úflat_returnsr‘  Úvt_to_graph_out_idxrË   r,  r�  Úidxr¡  Úer*  Úsubgraph_pycodeÚ	start_idxÚend_idxrå  Ún_valsÚroot_cgÚunmodified_locals_namesr  r  Úside_effect_refss<                                                               r¬   Úcompile_subgraphÚOutputGraph.compile_subgraphÈ  sÿ  € ð* �<‰<ÑÜ Ð!;Ó<Ð<ô
 ×&Ñ&Ñ2ÝSá! $§.¡.Ô1ä×)×)à�|‰| 2Ò%Ü$ØMóð ð
 	×'Ñ'Ô)à'-Ô$ØˆÔä�	‰	Ð-¨vÔ6ð +-ˆÜ×Ñ˜wÓ&ØŸ™×1Ô1�Ø—;‘;Ð"2Ó2Ø ×'Ñ'Ü*Ø,Ü # D§L¡L×$=Ñ$=¸mÑ$LÓ Mñöô !%§	¢	¨$£�Ið /3�IÔ+Ø ×'Ñ'¨	Ö2ñ 2ð$ Ðà!#ÐØ35ˆØÑ äÑK¸×8JÒ8JÓK×KÑKÜ$ØIóð ð "&×!BÑ!BØ°¢l™
¸ó"ÑˆLð ×#Ñ# LÔ1Ø"×)Ñ)¨$Ô/ô " &×"4Ñ"4Ö5�Ø—
‘
˜6×2DÑ2D�
ÓEñ 6ð —]‘]ˆFð# Ó ð( 	×Ñ×/Ñ/°Ô3à×$Ñ$ \Ô2à×)×)ÝBà×(Ñ(Ñ):Ó)<Ô=Ø-2ˆDÔ*à×!×! d§k§kÜ Ð!LÓMÐMØ×$Ñ$ T×%;Ñ%;Ô<à*.×*NÑ*NØ�L‰Ló+
Ñ'ˆÐ'ð 	×$Ñ$ [Ô1à×ÑÔð 9=¿¹×8MÑ8MÔ8Oô
Ú8O©9¨4°ˆD”/ #Ó&Ò&Ñ8Oð 	ñ 
ô Ð0Ó1ˆå'ô ˆt× Ñ Ó! AÓ%Ø(*Ð%Ø%)§\¡\°/Ó%BˆDÔ"ÙÜ'¨×(9Ñ(9Ó:ØGñˆGð  ×.Ñ.Ð/BÀGÓLˆLÜØ—‘˜dÐ7IñˆGð &×,Ñ,Ø×*Ñ*¨<¸Ó>ôð &×,Ñ,Ô-AÀ!ÀUÓ-KÔLØ%×,Ñ,Ø×$Ñ$ T×%;Ñ%;Ó<ôð ×(Ñ(Ð)BÔCñ& .>ÔNÒ-= TÌÀ#›SÉ™SÑ-=ÐÑNØ"'ÐØÐð �L‰L˜BÐ÷ @Ø!÷@äñ ñ +óó ÷@ô Ñ=Ñ+<Ó=Ó=÷@ô ”CÐ)Ó*Ó+¬sÐ3DÓ/EÑE÷@ð  ×!Ñ!×*Ñ*Ó,÷!@ð" —O‘OÔ#÷#@ð$ ×'Ñ'Ô'÷%@ð& +¨2Ñ.×?Ñ?Ô?÷'@ð( +¨2Ñ.×?Ñ?Ô?ð+ 	ö4  ×!6×!6Ø×'Ñ'¨Ô+Ø $× 1Ñ 1× :Ñ :Ó <Ðæô
   §¡Ó-ˆGØ×Ñ˜r 7Ô+Ø#'×#AÑ#AØ”DœÐ"3Ó4Ó5°tó$Ñ ˆL˜&ð ×(Ñ(ðà!ðð ×-Ñ-Ó/ðô ! “^ð	ô
 'Ð'8¼cÐBSÓ>TÑUðð ð )ó 	ð  $Ÿ|™|¨KÓ8Ðô Ø—‘ØØ Ø#5ñ	ˆEð ×Ñ Ð$5°u¸eÔDð
 ×'Ñ'¨Ô+ð ˆHØ#Ÿj™j×.Ñ.Ö0‘
��Uà˜1•9¤V¨CÔ2FÌÐ1T×%UÓ%UØ$(�H˜S“Mñ 1ô Ø—‘ØØ Ø!Ø#5ñˆEð ×Ñ Ð$5°u¸dÔCô —‘×$Ñ$×>×>Ð>ß%ÜÐ)Ó*¨aÔ/à& qÑ)�ä˜r¤5§=¡=×#:Ñ#:×#MÑ#M×NÒNØŸ™Ü—}‘}×6Ñ6×IÑIóJð $&§8¡8¨A¡;�LØ!Ÿx™x¨™{�HÜ%Ø$¤e§m¡m×&=Ñ&=×&JÑ&J÷ñ ô -Ð-RÓSÐSàFHÐ'Ø!&×!4Ñ!4×!;Ñ!;Ö!=˜Ü)Ø!¤5§=¡=×#8Ñ#8×#IÑ#I÷ ñ  ô #1Ø"UÔVZÐ[`ÓVaÐUbÐ có#ð ð 5:·N±N˜Ø8=¿¹Ð+¨HÓ5ñ ">ð *.×)=Ñ)=×)PÑ)PÐ&Ü#,¨\×-?Ñ-?Ö#@™˜˜RØÐ!4Ó4Ü6FØ +Ð-@ÀÑ-Dó7Ð.¨sÓ3ð ŸI™IÑ1Ü+2°2·9±9¸fÀdÓ+KÐ!K Õ!KÜ '¨°
¸E× BÑ Bä6FØ '¨¯©ó7Ð.¨sÓ3ð  ×2Ñ2×4Ñ4Ü6FØ *¨B×,AÑ,AÓ,Có7Ð.¨sÓ3ô #1Ø"@ÀÀÀKÐPSÈuÐ Uó#ð ñ% $Að*Ø8@×8SÑ8SÓ8U˜×,Ñ,Ô5ð  ˆFØ"ˆOÜ˜4Ÿ:™:Ó&¨!Ó+¬s°5×3FÑ3FÓ/GÈ1Ó/LØ04×0NÑ0NØ˜×/Ñ/Ó1°4ó1Ñ-�˜oð —‘˜lÔ+ä�u×*Ñ*Ó+¨qÓ0Ø—M‘M %×"4Ñ"4Ð5EÓ"FÔGØ.2Ñ+à—M‘MÔ"4°YÓ"?Õ@ð ×,Ñ,Ô.Ø×(Ñ(¨¸Ð(ÑHØ×(Ñ(Ø×&Ñ&Ó(°×1AÑ1AÓ1Cð )ñ ð 	×$Ñ$ä"Ø ÜÐ-Ó.Ð1GÈÑ1J×1TÑ1TÑTñðô	
ð& ˆ	ØˆÜ Ð!7×8‰GˆAˆtä˜×*Ñ*Ó+ˆFØ�A‹vØ˜$Ÿ.™.Ñ(�Ø˜‹{Ø×,Ñ,ä*¨<¸QÑ?ðä$ Q›ðõð ˜6Ñ!�Ø×,Ñ,ä&Ó(ðä,¨Y¸Ó@ðô % Q›ðôð ˜VÑ#�	ð ”CÐ.Ó/°!Ñ3Õ3Ü# D§L¡LÓ1�Ø:<Ð'Ø ŸL™L×8Ñ8×>Ñ>Ö@‘D�A�qÜ! !§(¡(¬K×8Ó8¸Q¿X¹X×=PÑ=PÐTUÕ=UØ×-Ñ-¨g×.AÑ.AÀ!Ó.DÔEÜ58¸×9JÑ9JÓ5KÌcØ3óOñ 6Ð/°Ó2ñ Að ×,Ñ,Ø×,Ñ,Ó.ä*Ø(¬cÐ2IÓ.Jñô +¨=¸aÑ@ðñô	ð ×!Ñ!×(Ñ(Ð)@×Añ[ 9ðv 	×$Ñ$ä" 9Ó-Ü" <´SÐ9OÓ5PÑQðô Ð4°QÑ7×AÑAÀAÑEÓFðô	
ö" Ö 7Ø×(Ñ(Ü# MÐ:JÑKÐLôô �=‰=×Ñ×9Ñ9Ð=NÓNØ#×HÑHØ)-ð  Ið  Ðö  Ü—=‘=×'Ñ'×AÑAÀVÓKÜ—M’MðXØXhÐWiðkôð &Ð%ô 'ðXØXhÐWiðkóð ð
 &Ð%ùó

ùóZ Oøô` 2ó Ü%Ø$^Ø&FÀxÀjÐ$Qð!ð !jØ Rð#ð &'÷ð ûðús$   ÌvÐ&våv# ö#
w
ö-w÷w
r¾  c                 ó~  • U R                   R                  (       Ga  SnUnUbç  [        [        UR	                  5       5      5      nU H†  nX@R
                  L a"  UR                  UR                  U5      5        M3  UR                  (       d  [        S5      eUR                  U   n[        U[        5      (       a  [        S5      eU" U5        Mˆ     UR                  [        [        U5      5      5        UR                  nUS-  nUb  Mç  UR                  [        SUS95        g UR                  [        SSS95        g )Nr   zAcur_tx.post_prune_cell_and_freevars must be set for nested frameszCan't codegen null cellr0   r  rî  )r  rÿ   rÄ   Úsortedræ  rÄ  r1  Úcreate_load_closureÚpost_prune_cell_and_freevarsrh  rç   r†   r9   rZ  r#  r<   )r  r1  r¾  Útx_cntr:  rá  ÚcellrH  s           r¬   r  ÚOutputGraph.codegen_cells 	  s  € à×'Ñ'×3×3Ð3ØˆFØ79ˆFØÑ$ô !¤¨×(@Ñ(@Ó(BÓ!CÓD�Û$�DØ§¡Ò-Ø×(Ñ(¨×)?Ñ)?ÀÓ)EÖFà%×B×BÜ"0Ø có#ð ð %×AÑAÀ$ÑG˜Ü% c¬<×8Ñ8Ü"0Ð1JÓ"KÐKÙ˜3žñ %ð × Ñ Ô!3´C¸³MÓ!BÔCØŸ™�Ø˜!‘�ð+ Ó$ð, ×ÑÔ/°À&ÑIÕJà×ÑÔ/°À!ÑDÕEr«   rä  Úlog_side_effectsc                 ó„  ^^	• U R                   R                  T5        U R                  (       aš  U R                  (       a  [	        S5      eU R                  R                  5        H`  u  pVT" U5        U R                  c  [	        S5      eTR                  TR                  U R                  5      5        TR                  U5        Mb     [        R                  (       a  U R                   R                  T5        UR                   Hl  u  m	nTR                  UU	4S j5        U H  nT" U5        M     TR                  [!        [#        U5      S5      5        TR                  [%        S5      /5        Mn     U R'                  UT5        TR)                  X!R                  (       + S9  U R                   R+                  TU5        g )Nz.backward_state is not supported in export modez>backward_state_var must not be None when backward_state is setc                  ó   >• T " T5      $ rö   r£   )r¾  Ú	debug_vars   €€r¬   r¿  Ú,OutputGraph.codegen_suffix.<locals>.<lambda>Û	  s	   ø€ ¡R¨	¤]r«   Fr  )Úvalue_from_source)rÂ  Úcodegen_save_tempvarsr  rc  rh  r  r  r1  r2  Ú
store_attrr1   Úreplay_side_effectsÚcodegen_hooksr  rÈ  Úextend_outputr:   rZ  r<   r  Úrestore_stackÚcodegen_update_mutated)
r  r1  rä  r¾  r]  rK  rL  r  rÊ  r`  s
      `     @r¬   r!  ÚOutputGraph.codegen_suffix¿	  sb  ù€ ð 	×Ñ×/Ñ/°Ô3Ø××Ø�{�{Ü$Ð%UÓVÐVØ!×0Ñ0×6Ñ6Ö8‘	�Ù�3”Ø×*Ñ*Ñ2Ü(ØXóð ð × Ñ  §¡°×0GÑ0GÓ!HÔIØ—‘˜dÖ#ñ 9ô ×%×%Ø×Ñ×+Ñ+¨BÔ/ð  "Ÿœ‰OˆI�tØ×ÑÕ2Ô3Û�Ù�3–ñ à×ÑÔ1´#°d³)¸UÓCÔDØ×ÑÔ0°Ó;Ð<Ö=ñ  /ð 	×Ñ˜2˜rÔ"à
×Ñ˜¿Y¹Y¼ÐÑGØ×Ñ×0Ñ0°Ð5EÕFr«   c                 óL  • U R                   (       d  [        S5      e[        U R                  R                  5      nU H  nUR
                  R                  SS5        M!     [        R                  " 5       n[        R                  " U5       GH  u  pEUR                  [        R                  R                  L d  M/  [        UR                  5      U(       + 4:X  d  MP  UR                   (       a  Mc  UR                  S   nUR                  [        R                  R                  L d  M›  [        UR                  5      U(       + 4:X  d  M¼  UR                   (       a  MÏ  UR                  S   nU R                  R#                  U5        U R                  R#                  U5        GM     g)zœ
Remove "creation_timestamp" from node meta

Remove this pattern from the graph:
    torch._C._set_grad_enabled(False)
    torch._C._set_grad_enabled(True)
z-should_exit must be True before cleanup_graphÚcreation_timestampNr   )r  rh  r  r•   rò  rŸ  rë   rè   rE  r  Úpairwiser‡  r{  Ú_set_grad_enabledrÄ   r  Ú_erasedÚ
erase_node)r  rò  rò   r:  Únode1Únode2s         r¬   r  ÚOutputGraph.cleanup_graphç	  s  € ð ××Ü Ð!PÓQÐQÜ�T—Z‘Z×%Ñ%Ó&ˆÛˆDØ�I‰I�M‰MÐ.°Ö5ñ ô ×,Ò,Ó.ˆÜ%×.Ò.¨u×5‰LˆEà—‘¤§¡× :Ñ :Ô:Ü˜%Ÿ*™*Ó%¨lÔ*:Ð)<Õ<ØŸŸ™à$Ÿz™z¨!™}�à—L‘L¤E§H¡H×$>Ñ$>Ô>Ü˜eŸj™jÓ)°,Ô.>Ð-@Õ@Ø!ŸMŸM™Mà#(§:¡:¨a¡=�LØ—J‘J×)Ñ)¨%Ô0Ø—J‘J×)Ñ)¨%×0ò 6r«   c                 óŠ  ^^• U R                   (       d  g[        R                  R                  R                  (       a*  [        R                  R
                  R                  ST5      e[        R                  ST5        [        R                  R                  SS UU4S jS9  U R                   R                  5         SU l         g)z5
Do not save this output graph to the CompilePackage
NzDetected a package bypass: %sÚartifactc                  ó   • SSS.$ )NÚprecompile_cache_bypassÚjson©rK  Úencodingr£   r£   r«   r¬   r¿  Ú,OutputGraph.bypass_package.<locals>.<lambda>
  s   € Ø1Ø"ò!r«   c                  ó   >• ST0T E$ )NÚ_reasonr£   )r  rý   s   €€r¬   r¿  r{  
  s   ø€ à˜6ð ð ñ r«   ©Úmetadata_fnÚ
payload_fn)rÇ  rè   r|  r1   Ústrict_precompiler2   ÚPackageErrorrù   ÚwarningÚ_loggingÚtrace_structuredÚbypass_current_entryr¼  s    ``r¬   r½  ÚOutputGraph.bypass_package
  s’   ù€ ð �|�|ØÜ�=‰=×Ñ×1×1Ü—-‘-×#Ñ#×0Ñ0Ø/°óð ô 	�‰Ð3°VÔ<Ü�‰×'Ñ'Øñõð 	(ñ 	
ð 	�‰×)Ñ)Ô+Øˆ�r«   c                 ó|  • 0 nU R                   R                   Hš  nUR                  R                  SS 5      n[        R
                  R                  R                  U5      (       d  MO  UR                  nU Vs/ s H%  n[        U[        5      (       a  UO
[        U5      PM'     snXR                  '   Mœ     U$ s  snf )Nr—  )r•   rò  rŸ  r   rè   rð  Úfake_tensorÚis_fake_tensorÚshaperç   rÂ   ÚreprrK  )r  Úretrò   r—  rŸ   Úss         r¬   Úget_graph_sizes_structuredÚ&OutputGraph.get_graph_sizes_structured 
  s•   € Ø*,ˆØ—J‘J×$Ô$ˆDØ ŸI™IŸM™M¨/¸4Ó@ˆMÜ× Ñ ×,Ñ,×;Ñ;¸M×JÓJØ$×*Ñ*�ÙPTÓ!UÒPTÈ1¤z°!´S×'9Ñ'9¡!¼tÀA»wÒ"FÑPTÑ!U�—I‘I“ñ	 %ð
 ˆ
ùò "Vs   Á8,B9c                 ó�  • SnUSU S3-  nU R                   R                   GH  nUR                  R                  SS 5      n[        R
                  R                  R                  U5      (       d  MP  UR                  nX#R                   S[        U5       S3-  n/ nSnU Ht  n[        U[        5      (       a  UR                  U5        M+  [        U[        R                  5      (       a)  SnUR                  UR                  R                   5        Ms    Mõ     U(       d  GM  UUR                   S	[        U5       S3-  nGM"     U$ )
NzTRACED GRAPH TENSOR SIZES
z===== z =====
r—  z: rþ  FTz (concrete): )r•   rò  rŸ  r   rè   rð  r‰  rŠ  r‹  rK  rÄ   rç   rÂ   rê   r°  rò   Úhint)	r  rK  Úgraph_sizes_strrò   r—  rŸ   Úconcrete_sizeÚ
has_symintÚszs	            r¬   Úget_graph_sizesÚOutputGraph.get_graph_sizes)
  s  € Ø7ˆØ˜V D 6¨Ð2Ñ2ˆØ—J‘J×$Õ$ˆDØ ŸI™IŸM™M¨/¸4Ó@ˆMÜ× Ñ ×,Ñ,×;Ñ;¸M×JÓJØ$×*Ñ*�Ø§i¡i [°´5¸³;°-¸rÐ#BÑB�Ø "�Ø"�
Û�BÜ! "¤c×*Ñ*Ø%×,Ñ,¨RÖ0Ü# B¬¯©×5Ñ5Ø%)˜
Ø%×,Ñ,¨R¯W©W¯\©\Ö:âñ ÷ "‘zØ'Ø#Ÿy™y˜k¨´u¸]Ó7KÐ6LÈBÐOñ›ñ# %ð( Ðr«   c              #   óŒ  #   • U R                   R                  R                  5       n0 nU R                  US9   U R                   R                  R	                  U5        Sv •  U R                   R                  R	                  [        U5      5        g! U R                   R                  R	                  [        U5      5        f = f7f)zZ
Momentarily restores the global state to what it was prior to tracing the current output
)r8  N)rò  rB  Úcopy_graphstater  Úrestore_graphstater   )r  Úprior_global_stateÚcurrent_global_states      r¬   Úrestore_global_stateÚ OutputGraph.restore_global_stateB
  s¥   é € ð
 "×1Ñ1×@Ñ@×PÑPÓRÐØ<>ÐØ×ÑÐ#7ÐÑ8ð	à× Ñ ×/Ñ/×BÑBÐCUÔVÛð × Ñ ×/Ñ/×BÑBÜ,Ð-AÓBõøˆD× Ñ ×/Ñ/×BÑBÜ,Ð-AÓBõüs   ‚6C¹)B Á"/CÂ0CÃCc                 ó�  ^• U R                   nUc  [        S5      eUR                  =mGby  TR                  Gcj  TR                  n[
        R                  STR                  5        [        R                  R                  SS U4S jS9  UR                  n[        U5      S:w  a)  [        SR                  S	R                  U5      5      5      e[        UR!                  5       5      R#                  UR%                  5       [        R&                  R)                  5       -  5         [+        S
SS9   S /UR-                  5       -  n[.        R0                  " UTR                  US9  UTl        S S S 5        S S S 5        UR2                  R5                  5         [6        R8                  eg g ! , (       d  f       NB= f! , (       d  f       NK= f)Nr�  zcompiler_collective %sru  c                  ó   • SSS.$ )NÚcompiler_collectiveÚstringry  r£   r£   r«   r¬   r¿  Ú5OutputGraph.run_compiler_collective.<locals>.<lambda>^
  s   € Ø1Ø (ò%r«   c                  ó8   >• T R                   R                  5       $ rö   )Úlocal_stateÚrender)Údss   €r¬   r¿  r¤  b
  s   ø€  2§>¡>×#8Ñ#8Ô#:r«   r~  r0   z&Expect only one device type but got {}Ú+r¢  Tr_  )Úgroup)rÄ  rh  Údistributed_stateÚ
all_statesÚ
compile_pgrù   Úinfor¦  rè   r„  r…  Ú_device_typesrZ  r   rÿ  rF   rë   rz  ÚrankrF  Údevice_countrp   rŸ   ÚdistÚall_gather_objectÚspeculation_logrÝ  r2   Ú CompileCollectiveRestartAnalysis)r  r1  r­  Údevice_typesr¬  r¨  s        @r¬   r/  Ú#OutputGraph.run_compiler_collectiveT
  s{  ø€ Ø�\‰\ˆØ‰:Ü Ð!;Ó<Ð<Ø×&Ñ&Ð&ˆBÒ3¸¿¹Ò8MØŸ™ˆJä�H‰HÐ-¨r¯~©~Ô>Ü�N‰N×+Ñ+Øñô ;ð ,ñ ð &×3Ñ3ˆLÜ�<Ó  AÓ%Ü$Ø<×CÑCØŸ™ Ó.óóð ô )¨×)9Ñ)9Ó);Ó<×CÑCØ—O‘OÓ%¬×(9Ñ(9×(FÑ(FÓ(HÑHõô Ð2È$ÓOà)-¨°·±Ó1BÑ(B�
ä×&Ò& z°2·>±>ÈÒTà *�”÷ P÷ð ×Ñ×$Ñ$Ô&Ü×6Ñ6Ð6ðC 9NÐ3÷. PÕOú÷õ ús$   Ä#F7Ä.<F&Å*F7Æ&
F4	Æ0F7Æ7
GÚrvr„   c                 ó:  • U R                   (       d  gSSKJn  U GH<  n[        XC5      (       a  UR                  (       d  M'  UR                  5       R                  R                  R                  S5      n[        R                  R                  R                  U5      (       d  [        S[        U5       35      eUR                  c  M®  [!        US4/5      nX`R                   -  (       d  MÑ  UR"                  (       a  [%        UR"                  5      OUR&                  R                  R(                  nUR*                  R,                  R/                  U5        GM?     UR*                  R,                  (       a%  SUR*                  l        [2        R4                  " SS9eg)	a:  
Validate that if torch.autograd.grad is used in the graph and outputs
require grad, we trigger AutogradGradRestartAnalysis only if the output is connected
to the autograd.grad computation.

rv here refers to list of variables that are being returned from dynamo graph.

See Note [Tracing autograd.grad in dynamo]
Nr0   ©ÚTensorVariabler—  z/expected example_value to be a FakeTensor, got Tz3autograd.grad consumed grad_fns of returned tensors©Úrestart_reason)r  Úvariables.tensorr»  rç   Úrequires_gradr“  rò   rŸ  r   rè   rð  r‰  rŠ  rh  ri  ré   rô   r¡  rÆ   rƒ  rK  r´  Úautograd_grad_leaked_tensorsrê   Úgraph_break_on_autograd_gradr2   ÚAutogradGradRestartAnalysis)r  r¸  r1  r»  rH  r‰  Úreachable_grad_fnsÚtensor_names           r¬   Ú)_validate_outputs_safe_for_autograd_nodesÚ5OutputGraph._validate_outputs_safe_for_autograd_nodes{
  s;  € ð ×3×3Øå4äˆCÜ˜c×2Ñ2¸#×:K×:KÙàŸ,™,›.×-Ñ-×2Ñ2×6Ñ6°ÓGˆKÜ×$Ñ$×0Ñ0×?Ñ?À×LÑLÜ$ØEÄdÈ;ÓFWÐEXÐYóð ð ×"Ñ"Ñ*Ùô "<¸kÈ4Ð=PÐ<QÓ!RÐØ!×$HÑ$H×HÑHà14··œc #§*¡*œoÀÇÁÇÁ×ATÑAT�Ø×"Ñ"×?Ñ?×FÑFÀ{×Sñ% ð( ×Ñ×:×:à>BˆB×ÑÔ;Ü×1Ò1ØTñð ð ;r«   c                 óØ  ^• SSK Jn  [        5       mU R                   HQ  n[	        XC5      (       d  M  UR
                  (       a  M(  TR                  UR                  5       R                  5        MS     T(       d  gU R                  R                   HB  nUT;   a  M  [        U4S jUR                   5       5      (       d  M1  TR                  U5        MD     U HŽ  n[	        Xc5      (       d  M  UR                  (       d  M(  UR                  5       R                  T;   d  MH  SnUR                  (       a  [        SSUSS	/S
9  Mk  SUR                   l        [$        R&                  " SS9e   g)ao  Skip frame if a source-less requires_grad_() intermediate leaks as output.

AOTAutograd's functionalization drops requires_grad_() on intermediates,
so returning them (or tensors derived from them) produces wrong results.
We detect this via FX graph reachability: find the requires_grad_() nodes
for source-less intermediates, then check if any output is downstream.
r0   rº  Nc              3   ó,   >#   • U  H	  oT;   v •  M     g 7frö   r£   )rÄ  ÚinpÚtainted_nodess     €r¬   rÆ  ÚHOutputGraph._check_requires_grad_intermediate_outputs.<locals>.<genexpr>À
  s   øé € ÐHÒ3G¨C˜-Ö'Ò3Gùs   ƒaK  An intermediate tensor that had requires_grad_() called on it (or a tensor derived from it) is being returned from the compiled region. AOTAutograd's functionalization drops the requires_grad_() effect on graph outputs, producing wrong results. If you only need the tensor values without gradients, call .detach() before returning.z,returning intermediate with requires_grad_()z4graph output depends on source-less requires_grad_()zVIf you only need the tensor values without gradients, call .detach() before returning.z‚Consume the gradient inside the compiled function (call backward() and use .grad), or move requires_grad_() outside torch.compile.r�  Tz:source-less requires_grad_() intermediate leaked as outputr¼  )r¾  r»  ræ   rá  rç   r¡  rì   r“  rò   r•   rò  ÚanyÚall_input_nodesr¿  rÈ  rJ   r´  Úgraph_break_on_requires_grad_r2   ÚRequiresGradRestartAnalysis)	r  r¸  r1  r»  r  rò   rH  rÝ   rÊ  s	           @r¬   Ú)_check_requires_grad_intermediate_outputsÚ5OutputGraph._check_requires_grad_intermediate_outputs§
  s0  ø€ õ 	5ô -0«EˆØ×-Ô-ˆAÜ˜!×,Ó,°Q·X·X±XØ×!Ñ! !§*¡*£,×"3Ñ"3Ö4ñ .ö Øð —J‘J×$Ô$ˆDØ�}Ó$ÙÜÔH°4×3GÒ3GÓH×HÓHØ×!Ñ! $Ö'ñ	 %ó ˆCä˜3×/Ó/Ø×%×%Ñ%Ø—L‘L“N×'Ñ'¨=Õ8ðQð ð —<—<Ü!Ø NØ VØ$'ð?ðNðô	ð HL�B×&Ñ&ÔDÜ×9Ò9Ø'cñð ò; r«   r<  c                 óà  ^ ^)^*^+^,^-^.• [         R                  R                  R                  5          SSKJn  T R                  (       d  [        S5      eT R                  5         [        T R                  5      S:X  a  [        U5      S:X  a  / S4sSSS5        $ [        5       n[        U[        5      (       d  [        S[        U5       35      e[        U[         5      (       d  [        S[        U5       35      eT R#                  X!5        T R%                  X!5        T R'                  SST R(                  R+                  [-        S	 U 5       5      5      40 5      nT R/                  5       nUR1                  U5        T R(                  R3                  X5        [4        R6                  (       dÁ  [9        S
5         [;        U5       HO  n[=        X85      n	[        U	[>        R@                  5      (       d  M/  [C        U	T RD                  UT RF                  S9  MQ     T RI                  5         [C        [>        R@                  " UT R                  5      T RD                  UT RF                  S9  SSS5        T RK                  5         [        T R                  5      n
[L        S   S==   U
-  ss'   T RO                  5         T RP                  RS                  5         [4        RT                  (       ar  T RF                  (       da  [         RV                  RY                  5       (       d>  [         RZ                  R\                  R^                  (       d  [a        T R                  5        [c        UT R                  5      m+SSK2J3n  U" T+5        T Rh                  (       a)  T Rh                   H  n[k        T+U[=        X<5      5        M     T Rl                   H  nU" T+5        M     [o        T+Rq                  5       S5      b  T Rs                  ST+Ru                  SSSS9S9  T Rv                  b  UT+l<        T Rz                  T+l=        T R|                  R                  5       T+R€                  S'   T R‚                  T+R€                  S'   UT+R€                  S'   T R„                  b  T R„                  T+R€                  S'   [†        R‰                  S[‹        UT+SSSS95        [         RŒ                  R�                  SU 4S jU+4S jS9  T R‘                  5         T R’                  R”                  nUc  [        S5      eUT lK        T RF                  (       dY  SSKLJMs  Jn  UR�                  SS9   [         Rž                  R¡                  URD                  S 9nSSS5        WT R’                  lJ        T R£                  5       nT R¤                  (       a†  T+R                  R§                  S!S"9n[©        U5       VVs0 s H	  u  nnUU_M     nnnT R¤                  R«                  5        H.  u  nnUUR€                  S#'   UU   nUR¬                  UU   lV        M0     T+R                  R¯                  5         T R±                  5          T R³                  T+U5      m*SSS5        SS$KZJ[n  [        T*U5      (       d,  [        [=        T*S%S5      U5      (       a]  T*R¸                  S&:X  aM  [        T*U5      (       a  T*OT*Rº                  nUR½                  U5        [        T*U5      (       d  UR¾                  m*T RF                  (       d  URÀ                  RÃ                  5         T Rv                  b  T Rv                  RÅ                  UT*5        T RÆ                  (       a
  T*m,U,4S' jnUm*U" T*S(S)9m*[L        S   S*==   S-  ss'   URD                  c  [        S+5      eURD                  RÈ                  =n(       Ga=  / m.0 m-T RÊ                   Vs/ s H  nURÌ                  PM     nnU H¼  nURÏ                  URÌ                  5      n [Ð        RÒ                  " URÔ                  5      R×                  5       n![Ù        5       n"[Ú        RÜ                  " U"URÔ                  U!/S5      n#[Þ        R‰                  S,U!5        T.Rá                  [â        Rä                  " U#4S- jU 5      U45        M¾     [         RZ                  R                  S(S)9S.[æ        S/[æ        S0[æ        4U*U+U U-U.4S1 jj5       n$T Ré                  UU$5        OT Ré                  UT*5        T Rê                  c  [        S25      e[í        T Rê                  5      m)[ï        5       (       aÆ  T)Rñ                  U)4S3 j5        / n%[ò        Rô                  " 5        H=  n&U&" T)5        T R÷                  5       n'T)Rù                  U'5        U%Rá                  U'5        M?     U% H#  n'T)Rû                  T)Rý                  U'5      5        M%     T)Rÿ                  [        [ò        5      S5        T)GR                  5         [©        T RÊ                  5       H+  u  nn(U(RÌ                  T GR                  GR                  U'   M-     T)GR                  U5        T)GR	                  5       T)GR                  5       4sSSS5        $ ! , (       d  f       GNA= f! , (       d  f       GN@= fs  snnf ! , (       d  f       GN[= fs  snf ! , (       d  f       g= f)4a^  
Generate code from self.graph and return the Instruction()s to
call that generated code.

Code is generated w.r.t. self.root_tx.
tx is only used for preserving GraphModule metadata

Returns a tuple of (instructions, pycode) where pycode is a string
representation of the generated Python code if generate_pycode_prologue
is enabled, otherwise None.
r0   rö  z2should_exit must be True before call_user_compilerr   Nzrv must be a list, got z#root must be a FakeRootModule, got r*  c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frö   )r“  r   s     r¬   rÆ  Ú8OutputGraph.compile_and_call_fx_graph.<locals>.<genexpr>  s   é € Ð5OÊBÀq·j±j·l°lÊBùró  r-   )rc  ÚstatsÚcalls_captured)Údce_hop_extra_outputsz8Graph contains named parameters due to static addresses.FT©Úprint_outputÚinclude_strideÚinclude_device©rÑ   r  rõ  Ú
backend_idrç  ú%s)rÚ  rÛ  ÚcoloredÚdynamo_output_graphc                  ó(   >• ST R                  5       0$ )NÚsizes)r�  r  s   €r¬   r¿  Ú7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>€  s   ø€ ˜ $×"AÑ"AÓ"CÑDr«   c                  ó&   >• T R                  SSSS9$ )NFTrØ  )Úprint_readablerÜ  s   €r¬   r¿  rã  �  s   ø€  2×#4Ñ#4Ø!&°tÈDð $5ñ $r«   )r€  zold_fake_mode must not be NonerÒ  )rj  rš  ©rž  r—  )Ú_LazyGraphModuleÚ__self__Ú_lazy_forwardc                  ó†   >• [         R                  R                  5          T" U 0 UD6sS S S 5        $ ! , (       d  f       g = frö   )rè   r{  ÚDisableTorchFunctionSubclass)r  r  Úreal_compiled_fns     €r¬   Ú_tf_disabled_wrapperÚCOutputGraph.compile_and_call_fx_graph.<locals>._tf_disabled_wrapperÜ  s-   ø€ ÜŸ™×>Ñ>Õ@Ù/°Ð@¸Ñ@÷ A×@×@ús	    2²
A z"do not trace Dynamo-compiled graphrù  Úunique_graphsz(old_fake_mode.shape_env must not be Nonez:Compiling backend specialized graph with specialization=%sc                 ó   • U" X   5      $ rö   r£   )rK  r  Úcheck_fns      r¬   r¿  rã    s   € ÁXØ$(¡IôF"r«   r  r  rÏ   c                  óÔ  >• T	 H¸  u  p#U" U 5      (       d  M  UT;   a  TU   " U 0 UD6s  $ TR                   R                  UR                  UR                  5         UTR                  S'   [        U 5      n[        TR                  5         TR                  TU5      TU'   S S S 5        S S S 5        TU   " U 0 UD6s  $    T" U 0 UD6$ ! , (       d  f       N-= f! , (       d  f       N6= f)NÚspecialization)	rj  Úpatch_source_specializationr¡  rñ  rŸ  r  r   rò  Úcall_user_compiler)
r  r  rñ  ró  rÒ   Úcompiled_fnrÑ   r  Úspecialization_cacheÚspecialization_guardss
        €€€€€r¬   Úspecialized_dispatchÚCOutputGraph.compile_and_call_fx_graph.<locals>.specialized_dispatch
  sò   ø€ ã4IÑ0˜Ù# DŸ>›>Ø-Ð1EÓEØ';¸NÒ'KØ%)ð("Ø-3ñ("ò !"ð "&§¡×!KÑ!KØ .× 5Ñ 5°~×7NÑ7Nõ"ð =K §¡Ð(8Ñ 9Ü?CÀD»z Ü%,¨T×-AÑ-AÕ%Bà(,×(?Ñ(?ÀÀNÓ(Sð %9¸Ñ$H÷ &C÷"ð $8¸Ò#GÈÐ#XÐQWÑ#XÒXñ% 5Jñ& '¨Ð7°Ñ7Ð7÷ &CÕ%Bú÷"õ "ús$   Á0CÂCÂ!CÃ
CÃCÃ
C'	r�  c                  ól   >• T R                  [        R                  R                  R                  S5      $ )NÚstore_user_object_weakrefs)r½  rè   r|  Úgraph_bytecode_inputsr¤   )r¾  s   €r¬   r¿  rã  2  s&   ø€ ˜B×/Ñ/ÜŸ™×;Ñ;×DÑDØ4ôr«   )†rè   ra  r   Úclear_framer  r÷  r  rh  r/  rn   r•   rZ  rA   rç   r  ri  r  rÐ  rÅ  r  rç  Ú
create_argrÄ   Ú
dedup_passr#  Ú_maybe_preserve_original_metar1   Údo_not_emit_runtime_assertsrp   ÚdirrÖ   r   r>  r-   rj  rc  Úremove_unused_get_attr_nodesÚremove_unused_graphargsro   Ú&remove_tensorify_specialized_graphargsr  rÝ  Ú$canonicalize_output_graph_node_orderÚcompilerÚis_exportingr|  r£  r¤  r¨  r$   Údce_extra_outputsr×  r$  r  r  rã  Ú
parametersr½  rå  rÇ  Ú_backend_idr  r  r1  rŸ  rõ  rç  Úgraph_code_logr  ry   r„  r…  rÞ  rò  r+  Ú_old_fake_moderî  rw  rï  rð  rñ  rÒ   rë  Ú
find_nodesrï  r  Úfake_deviceÚlintrž  rõ  Útorch.fx._lazy_graph_modulerç  r¤   rè  Úforce_recompiler4  Úfake_tensor_converterÚclear_non_cpu_constantsÚadd_backend_idr  ÚspecializationsrÀ  r¡  rÂ  ÚinspectÚ	getsourcerñ  ÚstripÚRootGuardManagerr   ÚLAMBDA_GUARDrù   rê   rH  rI  r	   Úinstall_global_unsaferÄ  rD   rL   rÈ  rM   r½  r–  rÍ  r1  r2  rÌ  Úpop_topr²  r�  Úmake_call_generated_coderÏ  r0  )/r  r1  r¸  r<  r÷  rK  Úoutput_nodeÚsub_gmsÚattrÚsubgraphÚncallsr×  Úsubgraph_nameÚregister_finalizerÚold_fake_moder*  Úbackend_fake_moderÒ   Úplaceholdersrå  ÚnÚplaceholder_to_idxrò   ÚsnapshotrK  rç  Úlazy_gmrí  r  ÚaÚsourcesró  Úsource_indexÚcheck_fn_sourceÚunused_root_guard_managerrñ  rù  Útmp_varsÚconstructorÚvar_namerÊ  r¾  rö  rÑ   rì  r÷  rø  s/   `                                        @@@@@@r¬   r   Ú%OutputGraph.compile_and_call_fx_graphç
  s5	  þ€ ô" �]‰]×)Ñ)×5Ñ5Õ7Ý+à×#×#Ü$ØHóð ð ×(Ñ(Ô*Ü˜4Ÿ:™:Ó&¨!Ó+´°B³¸1³Ø˜4�x÷ 8Ñ7ô )Ó*ˆDä˜b¤$×'Ñ'Ü$Ð'>¼tÀB»x¸jÐ%IÓJÐJÜ˜d¤N×3Ñ3Ü$Ð'JÌ4ÐPTË:È,Ð%WÓXÐXð
 ×:Ñ:¸2ÔBð ×:Ñ:¸2ÔBà×*Ñ*ØØØ×$Ñ$×/Ñ/´Ñ5OÉBÓ5OÓ0OÓPÐRØó	ˆKð —o‘oÓ'ˆGØ×Ñ Ô(à×Ñ×=Ñ=¸bÔNÜ×5×5ô "Ð"CÕDÜ # D¦	˜Ü#*¨4Ó#6˜Ü% h´·±×?Ó?Ü;Ø (Ø $§¡Ø $Ø'+§{¡{ô	ñ !*ð ×5Ñ5Ô7Ü3ÜŸš t¨T¯Z©ZÓ8ØŸ™ØØ#Ÿ{™{ò	÷ Eð& ×(Ñ(Ô*Ü  §¡Ó,ˆFÜ�WÑÐ.Ó/°6Ñ9Ó/à×7Ñ7Ô9ð ×!Ñ!×'Ñ'Ô)ô ×;×;ØŸŸÜŸ™×3Ñ3×5Ñ5ÜŸ™×7Ñ7×S×Sä# D§J¡JÔ/ä# D¨$¯*©*Ó5ˆBå@á! "Ô%ð
 ×6×6Ø%)×%LÔ%L�MÜ˜B ¬w°tÓ/KÖLñ &Mð '+×&AÔ&AÐ"Ù" 2Ö&ñ 'Bô �B—M‘M“O TÓ*Ñ6ð ×#Ñ#ØNØ×(Ñ(Ø%*¸4ÐPTð )ð ð $ñ ð �|‰|Ñ'Ø!%�”ð *.×)EÑ)EˆBÔ&ð ×5Ñ5×:Ñ:Ó<ð �G‰GÐ6Ñ7ð ,0×+AÑ+AˆB�G‰GÐ'Ñ(Ø$(ˆB�G‰G�LÑ!à×(Ñ(Ñ4Ø26×2KÑ2K�—‘Ð.Ñ/ä× Ñ ØÜ&Ø˜"¨TÀ$ÐPTñôô �N‰N×+Ñ+Ø%ÜDôð ,ñ ð ×#Ñ#Ô%Ø ×0Ñ0×:Ñ:ˆMØÑ$Ü$Ð%EÓFÐFà"/ˆDÔØ—;—;ß9Ð9à—]‘]ÈE�]ÒRô ).×(9Ñ(9×(HÑ(HØ"/×"9Ñ"9ð )Ið )Ð%÷ Sð& 2C�×$Ñ$Ô.à!×0Ñ0Ó2ˆNð ×7×7Ø!Ÿx™x×2Ñ2°mÐ2ÐD�Ü7@ÀÔ7NÔ%OÒ7N©t¨q°! a¨¢dÑ7NÐ"Ñ%OØ&*×&NÑ&N×&TÑ&TÖ&V‘N�D˜(Ø19�D—I‘I˜oÑ.Ø,¨TÑ2�CØ6>×6JÑ6J�N 3Ñ'Ö3ñ 'Wð
 �H‰H�M‰MŒOØ×*Ñ*Õ,Ø"×5Ñ5°b¸.ÓI�÷ -õ Eä˜+Ð'7×8Ñ8Üœ7 ;°
¸DÓAÐCS×TÑTØ×(Ñ(¨OÓ;ô " +Ð/?×@Ñ@ñ  à$×-Ñ-ð ð !×0Ñ0°Ô9ä! +Ð/?×@Ñ@à")§/¡/�Kà—;—;ð
 ×3Ñ3×KÑKÔMà�|‰|Ñ'Ø—‘×+Ñ+¨D°+Ô>ð ×3×3Ø#.Ð õAð 3�á!ØÐ$HñˆKô �WÑ˜oÓ.°!Ñ3Ó.Ø×&Ñ&Ñ.Ü$Ð%OÓPÐPØ"/×"9Ñ"9×"IÑ"IÐIˆÖIØ(*Ð%ØSUÐ$Ø-1¯^ª^Ó<ª^¨˜1Ÿ8œ8©^�Ð<Û&5�NØ#*§=¡=°×1FÑ1FÓ#G�LÜ&-×&7Ò&7¸×8OÑ8OÓ&P×&VÑ&VÓ&X�Oä0@Ó0BÐ-Ü%×2Ò2Ø1Ø&×/Ñ/Ø(Ð)Øó	 �Hô —I‘IØTØ'ôð
 *×0Ñ0ä%×-Ò-Ø;Có !"ð !-ó	ð +ðö
ñ# '6ô: —‘×&Ñ&Ð.RÐ&ÐSð8´ð 8¼sð 8Äs÷ 8ò 8ó Tð8ð. ×*Ñ*¨4Ð1EÕFð ×*Ñ*¨4°Ô=à�|‰|Ñ#Ü$Ð%?Ó@Ð@Ü˜4Ÿ<™<Ó(ˆBä×!Ñ!ð × Ñ ôôð �Ü#@×#GÒ#GÖ#I�KÙ ”OàŸ™›ð ð —H‘H˜XÔ&Ø—O‘O HÖ-ñ $Jó !)�HØ×$Ñ$ R§^¡^°HÓ%=Ö>ñ !)ð × Ñ ¤Ô%BÓ!CÀUÔKØ—
’
”ä% d§n¡nÖ5‘��SØLOÏJÉJ�×$Ò$×DÒDÀSÓIñ 6ð ×'Ò'¨Ô-à×&Ò&Ó(¨"¯-ª-«/Ð9÷k
 8Ñ7÷Z EÖDú÷R SÖRüó6 &P÷ -Ö,üòx =÷i 8Õ7ús   °AkÂDkÆ67jÇ1A3jÉ$K+kÕ(j0Õ7A!k×k×(A9kÙ!kÙ4E*kßkß4J kê
j-	ê(kê0
j?	ê:kë
k	ëkë
k-c                 ó4   • U R                   R                  SS9$ )Nrš  ræ  )r•   r  r  s    r¬   r)  ÚOutputGraph.placeholdersO  s   € à�z‰z×$Ñ$¨Ð$Ð6Ð6r«   c                 ó^   • U R                    Vs/ s H  oR                  S   PM     sn$ s  snf ©Nr›  )r)  rŸ  ©r  rò   s     r¬   rÀ  ÚOutputGraph.graphargsS  s)   € à26×2CÒ2CÓDÒ2C¨$—	‘	˜*Ô%Ñ2CÑDÐDùÒDs   �*rÑ   rÒ   c           	      óv   • [        SSSSSSS9   U R                  X5      sS S S 5        $ ! , (       d  f       g = f)NúOutputGraph.call_user_compilerÚbackend_compileTÚcompile_aot_autogradÚ'aot_autograd_cumulative_compile_time_us)Ú
phase_namer`  Úlog_waitcounterÚwaitcounter_name_overrideÚdynamo_compile_column_us)rp   Ú_call_user_compiler)r  rÑ   rÒ   s      r¬   rõ  ÚOutputGraph.call_user_compilerW  s>   € ô Ø,Ø(Ø"&Ø Ø&<Ø%Nó
ð ×+Ñ+¨BÓ?÷
÷ 
÷ 
ús   �*ª
8c                 óh  • U R                   c  [        S5      eSn/ nUR                  R                   H;  nUR                  S;   a  US-  nUR                  S:X  d  M*  UR                  U5        M=     [        U5        U H6  n[        US5      (       a  M  UR                  S   nUR                  Ul
        M8     U R                  Ul        U R                  Ul        [        U R                   ["        R$                  5      =(       d    U R                   n['        U R                   ["        R(                  5      n	U	(       a  [+        X‰5      n[        US5      (       a  UR,                  OS	n
SS
KJnJn  ["        R0                  (       a	  U" U5      nO["        R2                  (       a  U" U5      n [5        5       " [6        R8                  SU
 35        ["        R:                  (       a  [=        U5      nU" X5      n[5        5       " [6        R8                  SU
 35        [?        U5      (       d  [        S5      e [c        SS0 U Rd                  EU[g        UR                  R                  5      [g        U5      S.E5        W$ ! [@        [B        [D        4 a    e [F         a½  nU RH                  (       aD  [K        U R                   U[L        RN                  " 5       5      RQ                  URR                  5      S e[U        UU RV                  RX                  SSU
 S[[        U5       SU RV                  R]                  5        3SU
 S[[        U5       S3S/S9   S nAGNS nAf[^         a    e [`         aI  n[K        U R                   U[L        RN                  " 5       5      RQ                  URR                  5      S eS nAff = f)Nzcompiler_fn must not be Noner   ©rÌ  r6  Úcall_moduler0   rš  Ú_dynamo_sourcer›  r¤   z<unknown compiler_fn>)Úinline_invoke_subgraphÚ!inline_single_use_invoke_subgraphzcalling compiler function zdone compiler function z#compiler_fn did not return callablezBackend compiler exceptionz	Backend: z
Exception:z
Traceback:
zBackend compiler `z` failed with z. Adding a graph break.z-Report an issue to the backend compiler repo.r�  Údynamor>  )Úop_countÚ
node_countÚinput_count)4rÍ   rh  r•   rò  rž  rê   rw   rB  rŸ  r¡  rK  rû  Ú_param_name_to_sourcer
  Ú_source_to_user_stacksrO   rõ  r1   Údebug_backend_overriderP   Údebug_inductor_config_overriderØ   r¤   Ú5torch._higher_order_ops.passes.inline_invoke_subgraphrL  rM  rú   r3   ÚINFOr5  r+  Úcallabler   r   Ú
IndexErrorrH   r  rG   r  ÚcurrentframeÚwith_tracebackÚ__traceback__rK   rÄ  rÆ  rÆ   Úformat_frame_summaryrI   r7  r"   rÑ  rZ  )r  rÑ   rÒ   Útotr)  rò   ÚplrÊ  rÍ   Úinductor_config_overriderK  rL  rM  rö  rL  s                  r¬   rF  ÚOutputGraph._call_user_compilerd  sC  € ð ×ÑÑ#Ü Ð!?Ó@Ð@ØˆØˆØ—H‘H—N”NˆDØ�w‰wÐIÓIØ�q‘�Ø�w‰w˜-Õ'Ø×#Ñ# DÖ)ñ	 #ô
 	˜3ÔÛˆBÜ˜2Ð/×0Ó0Ø—g‘g˜jÑ)�ð %(§J¡J�Ö!ñ ð $(×#<Ñ#<ˆÔ Ø$(×$>Ñ$>ˆÔ!ô 0Ø×&Ñ&¬×(EÑ(Eó÷  ð ×Ñð	 	ô $OØ×"Ñ"¤F×$IÑ$Ió$
Ð ö $Ü4ØóˆKô �{ J×/Ñ/ð × Ò à(ð 	÷
	
ô
 ×(×(Ù'¨Ó+‰BÜ×5×5Ù2°2Ó6ˆBð"	8ÜŒNœ7Ÿ<™<Ð+EÀdÀVÐ)LÔMÜ×(×(Ü,¨[Ó9�Ù% bÓ9ˆKÜŒNœ7Ÿ<™<Ð+BÀ4À&Ð)IÔJÜ˜K×(Ñ(Ü$Ð%JÓKÐKð )ô< 	ØØ,ðØ—.‘.ðàÜ! "§(¡(§.¡.Ó1Ü" <Ó0ò	ô		
ð ÐøôQ /Ô0@Ä*ÐMó 	ð Ü0ó 	Ø×5×5Ü+Ø×$Ñ$ a¬×)=Ò)=Ó)?óç ‘. §¡Ó1°tð<ô 'ØØ—‘×#Ñ#Ø4Ø# D 6¨´c¸!³f°X¸^ÈDÏLÉL×LmÑLmÓLoÐKpÐqØ0°°°nÄSÈÃVÀHÐLcÐdàCð÷	ð 	ûô ó 	ð Üó 	8Ü'Ø× Ñ  !¤W×%9Ò%9Ó%;óç‰n˜QŸ_™_Ó-°4ð8ûð	8ús'   Æ+BI: É:N1ÊB2MÍN1Í(AN,Î,N1c                 ón   • [         R                  R                  R                  (       a  [	        U 5      $ 0 $ rö   )rè   r|  r1   Úuse_graph_deduplicationrN   r  s    r¬   r   ÚOutputGraph.dedup_passÎ  s%   € Ü�=‰=×Ñ×7×7Ü,¨TÓ2Ð2àˆIr«   Úsub_gmc                 óh   • [        XR                  SS9nX2l        SUl        U R	                  X#S S9  U$ )NT)Úrequires_suffixFr“  )ru   r  r¤   Útorchdynamo_force_dynamicr´  )r  rK  re  Ú	next_names       r¬   r±  ÚOutputGraph.install_subgraphÔ  s:   € Ü'¨¯o©oÈtÑTˆ	Ø#ŒØ+0ˆÔ(ð 	×$Ñ$ V¸tÐ$ÑDØÐr«   c                 óZ   • U R                    Vs/ s H  oR                  PM     nnU$ s  snf rö   )rÀ  Úexample)r  rÊ  r;  s      r¬   rÒ   ÚOutputGraph.example_inputsÝ  s&   € Ø)-¯ªÓ8ª #—+”+©ˆÐ8àˆùò 9s   �(c                 ó¾   • [        U R                  R                  SS9SS9 H8  n[        [	        UR
                  5      5      S:X  d  M'  U R                  U5        M:     g )Nr�  ræ  T)Úreverser   )rW  r•   r  rZ  r  Úusersr  r;  s     r¬   r  Ú(OutputGraph.remove_unused_get_attr_nodesâ  sJ   € Ü˜4Ÿ:™:×0Ñ0°JÐ0Ð?ÈÔNˆDÜ”4˜Ÿ
™
Ó#Ó$¨Õ)Ø× Ñ  Ö&ò Or«   c                 óè  ^ ^^^• T R                   (       d  [        S5      eS[        R                  R                  S[
        4S jnS[        R                  R                  S[
        4S jmS[        R                  S[
        4U4S jjnS	S
KJn  [        [        T R                  R                  5      5       HØ  n[        [        UR                  5      5      S	:X  d  M'  UR                  S:X  d�  UR                  S:X  a  UR                   ["        R$                  L dc  UR                  S:X  a7  UR                   [&        R(                  L a  U" UR*                  S	   5      (       d  U" U5      (       d  U" U5      (       d  MÇ  T R-                  U5        MÚ     S[        R                  S[.        R0                  S -  4S jnS[        R                  SS 4U 4S jjn[3        5       mS[2        [.        R0                     S[&        R4                  [&        R6                  -  SS 4S jm/ nT R8                   GH  nU" U5      S LnU(       a&  UR                  (       d  UR;                  U5        M9  M;  UR                  (       d,  [=        UR>                  S   [@        5      (       d
  U" U5        Mx  UR>                  S   n	[=        U	[@        5      (       a  Mž  [=        UR>                  S   RB                  [&        RD                  5      (       aÖ  UR>                  S   RB                  n
UR>                  S   RF                  n[&        RH                  RJ                  RM                  U
5      (       ds  [O        U
RQ                  5       5      nU HT  n[S        URT                  U5      n[V        RX                  " [&        R4                  [&        R6                  4UU4S jU5        MV     GMª  [[        []        UR>                  S   RB                  5      5      (       a  GMÝ  U	R^                  b  U	R^                  OU	RB                  nT" TU5        GM     U H1  nU" U5      nUc  M  UT;  a
  U" U5        M   TRa                  U5        M3     g )Nz(should_exit must be True before finalizeÚb_noderÏ   c                 ó  • U SL a  g[        U [        R                  5      (       d  gU R                  R	                  S5      nUc  gUSL a  g[        U[
        R                  5      (       a  UR                  R                  5       =nb  U$ g)NTFr—  )	rç   r   ÚNoderŸ  r   rè   ÚSymBoolrò   Úmaybe_as_bool)rs  ÚbÚrs      r¬   Úis_static_trueÚ;OutputGraph.remove_unused_graphargs.<locals>.is_static_trueö  sw   € Ø˜Š~ØÜ˜f¤b§g¡g×.Ñ.ØØ—‘—‘ Ó0ˆAØ‰yØØ�DŠyØä˜1œeŸm™m×,Ñ,ØŸ&™&×.Ñ.Ó0Ð0�QÑ=à�ð r«   r.  c                 óÚ   • SSK Jn  [        U [        [        [
        45      (       a  g[        U [        R                  5      (       a%  [        U R                  R                  S5      U5      $ g)Nr   ©ÚSymTypesTr—  F)
Útorch.fx.experimental.sym_noder~  rç   rÂ   rý  rÞ   r   ru  rŸ  r   )r.  r~  s     r¬   Úis_symnode_argÚ;OutputGraph.remove_unused_graphargs.<locals>.is_symnode_arg	  sJ   € Ý?ä˜!œc¤5¬$Ð/×0Ñ0ØÜ˜!œRŸW™W×%Ñ%Ü! !§&¡&§*¡*¨_Ó"=¸xÓHÐHØr«   rò   c                 ó:  >• SSK Jn  U R                  S:w  a  g[        U R                  R                  S5      U5      (       d  g[        U4S jU R                   5       5      (       d  g[        U4S jU R                  R                  5        5       5      (       d  gg)	Nr   r}  rÌ  Fr—  c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7frö   r£   ©rÄ  r.  r€  s     €r¬   rÆ  ÚWOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node.<locals>.<genexpr>   s   øé € Ð<²)¨Q‘~ a×(Ð(²)ùó   ƒc              3   ó4   >#   • U  H  nT" U5      v •  M     g 7frö   r£   r„  s     €r¬   rÆ  r…  "  s   øé € ÐGÒ2F¨Q‘~ a×(Ð(Ò2Fùr†  T)
r  r~  rž  rç   rŸ  r   r  r  r  r½  )rò   r~  r€  s     €r¬   Úis_symnode_compute_nodeÚDOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node  sp   ø€ Ý?à�w‰w˜/Ó)Øä˜dŸi™iŸm™m¨OÓ<¸h×GÑGØô Ô<°$·)²)Ó<×<Ñ<ØÜÔG°$·+±+×2DÑ2DÔ2FÓG×GÑGØØr«   r   )Úis_accessor_noder�  rÌ  c                 ó
  • U R                   S   nUR                  n[        U[        R                  5      (       aI  [        UR
                  R                  [        R                  5      (       a  UR
                  R                  $ g r:  )	rŸ  rl  rç   rè   r°  rò   ÚexprÚsympyÚSymbol)rò   rÊ  rl  s      r¬   Úplaceholder_binds_symbolÚEOutputGraph.remove_unused_graphargs.<locals>.placeholder_binds_symbol7  s^   € Ø—)‘)˜JÑ'ˆCØ—k‘kˆGÜ˜'¤5§<¡<×0Ñ0´ZØ—‘×!Ñ!¤5§<¡<÷6ñ 6ð —|‘|×(Ñ(Ð(Ør«   c                 óè   >• [         R                  SU R                  S   R                  R                  5        U R                  S	 TR                  U 5        TR                  R                  U S 5        g )NzREMOVE UNUSED GRAPHARG %sr›  )rù   r  rŸ  r¡  rK  r  r  rë   )rò   r  s    €r¬   Úremove_unusedÚ:OutputGraph.remove_unused_graphargs.<locals>.remove_unused@  sY   ø€ Ü�I‰IÐ1°4·9±9¸ZÑ3H×3OÑ3O×3TÑ3TÔUð —	‘	˜*Ð%Ø×Ñ˜TÔ"Ø×!Ñ!×%Ñ% d¨DÕ1r«   Úused_symbolsÚfakec                 ó    • U [        U5      -  n g rö   )r&   )r”  r•  s     r¬   Úupdate_used_symbolsÚ@OutputGraph.remove_unused_graphargs.<locals>.update_used_symbolsJ  s   € ð œL¨Ó.Ñ.‰Lr«   r›  c                 ó   >• T" TU 5      $ rö   r£   )Útr—  r”  s    €€r¬   r¿  Ú5OutputGraph.remove_unused_graphargs.<locals>.<lambda>m  s   ø€ Ñ.AÀ,ÐPQÔ.Rr«   )1r  rh  r   rò   ÚArgumentrÞ   ru  rø  rŠ  rÜ  r  r•   rò  rZ  rp  rž  r‡  ÚoperatorÚgetitemrè   Ú_checkr  r  r�  rŽ  ræ   r°  r   r)  rê   rç   rŸ  r~   rl  ÚScriptObjectÚexample_strong_refr�  rž  Útracing_with_realr%  Ú__obj_flatten__rÖ   Úwrapped_objÚpytreeÚtree_map_onlyr    ri  r‰  Úremove)r  rz  rˆ  rŠ  rò   r�  r’  Úrecheck_placeholdersÚbinds_symbolrÊ  Úreal_script_objr¢  Ú	flat_dictr"  Úfake_attr_valr•  Úsymbolr€  r—  r”  s   `                @@@r¬   r  Ú#OutputGraph.remove_unused_graphargsç  sw  û€ ð ××Ü Ð!KÓLÐLð	¤2§7¡7×#3Ñ#3ð 	¼ô 	ð&	œbŸg™g×.Ñ.ð 	´4ô 	ð	¬"¯'©'ð 	´d÷ 	õ" 	KäœT $§*¡*×"2Ñ"2Ó3Ö4ˆDÜ”4˜Ÿ
™
Ó#Ó$¨Õ)à—G‘G˜zÓ)ØŸ™ ?Ó2°t·{±{Äh×FVÑFVÒ7VàŸ™ ?Ó2Ø ŸK™K¬5¯<©<Ò7Ù*¨4¯9©9°Q©<×8Ñ8á.¨t×4Ñ4Ù'¨×-Ó-à×$Ñ$ TÖ*ñ 5ð	¬2¯7©7ð 	´u·|±|ÀdÑ7Jô 	ð	2¤§¡ð 	2¨D÷ 	2ô +.«%ˆð	/ÜœeŸl™lÑ+ð	/Ü38·<±<Ä%Ç,Á,Ñ3Nð	/àô	/ð
  "ÐØ×%Õ%ˆDÙ3°DÓ9ÀÐEˆLæØ—z—zØ(×/Ñ/°Ö5ñ "ð —z—z¬*Ø—I‘I˜jÑ)Ô+@÷+ñ +ñ " $Ö'ð Ÿ)™) JÑ/�CÜ! #Ô'<×=Ñ=Ù Ü! $§)¡)¨JÑ"7×"?Ñ"?Ä×ASÑAS×TÑTØ*.¯)©)°JÑ*?×*GÑ*G˜Ø*.¯)©)°JÑ*?×*RÑ*R˜Ü$Ÿ~™~×AÑA×SÑSØ+÷ ñ  ô )-¨_×-LÑ-LÓ-NÓ(O˜IÛ(1 Ü07Ø$3×$?Ñ$?Àó1" ô !'× 4Ò 4Ü%*§\¡\´5·<±<Ð$@Ý$RØ$1ö!"ñ	 )2ò !Ü&¤t¨D¯I©I°jÑ,A×,IÑ,IÓ'J×KÑKÚ à+.¯?©?Ñ+F˜ŸšÈCÏKÉKð ñ (¨°d×;ñM &óR )ˆDÙ-¨dÓ3ˆFØÓ!Ø Ó-Ù! $Ö'ð !×'Ñ'¨Ö/ò )r«   c                 ó¼  • SSK Jn  U R                  R                   GH;  nUR                  R                  S5      n[        U[        5      (       d  M6  UR                  c  ME  [        UR                  R                  R                  S5      (       d  Mv  [        S UR                   5       5      (       d  M™  UR                  UR                  R                  R                  R                  5      (       d  MÙ  [!        UR                  5       H8  nUR#                  [%        UR                  5      5        U R'                  U5        M:     U R'                  U5        GM>     g )Nr   )ÚTensorifyStater—  rK  c              3   ó>   #   • U  H  oR                   S :H  v •  M     g7f)ÚitemN)r‡  )rÄ  Úus     r¬   rÆ  ÚEOutputGraph.remove_tensorify_specialized_graphargs.<locals>.<genexpr>™  s   é € Ð?²J¨qŸ™ FÖ*²Jùs   ‚)Útorch._dynamo.symbolic_convertr°  r•   rò  rŸ  r   rç   r!   Ú	item_memorB  rò   Ú_exprr  rp  Úshould_specializerK  r  Úreplace_all_uses_withr'   r  )r  r°  rò   r—  r³  s        r¬   r  Ú2OutputGraph.remove_tensorify_specialized_graphargs‚  sõ   € õ 	Bà—J‘J×$Õ$ˆDØ ŸI™IŸM™M¨/Ó:ˆMä˜=¬*×5Ó5Ø!×+Ñ+Ó7Ü˜M×3Ñ3×8Ñ8×>Ñ>À×GÓGÜÑ?°D·J²JÓ?×?Ó?Ø"×4Ñ4à!×+Ñ+×0Ñ0×6Ñ6×;Ñ;÷ó ô
 ˜dŸj™jÖ)�AØ×+Ñ+¬L¸×9PÑ9PÓ,QÔRØ×$Ñ$ QÖ'ñ *ð × Ñ  ×&ò %r«   r  c                 óÔ   • U R                   R                  U5        [        U[        [	        S5      45      (       d  [        S5      eU R                  R                  U5        SU l        g)a  
We call this on the creation of a new compiled subgraph that is inserted
before user code.
An optional pycode argument can be passed to add python codegen along with
the bytecode. The generated python code should match the bytecode behavior
from the `prefix` argument.
Nz,pycode must be a list of python code or NoneT)	r  rÎ  rç   r  ri  rh  r´  rê   r  )r  r‡  r  s      r¬   r  Ú#OutputGraph.add_output_instructions¤  sV   € ð 	× Ñ ×'Ñ'¨Ô/Ü˜&¤4¬¨d«Ð"4×5Ñ5Ü Ð!OÓPÐPØ×Ñ×!Ñ! &Ô)ØˆÕr«   rg  r`  c                 ó  ^^^• TR                   (       aF  S[        [        R                  S4   S[        R                  4UUU4S jjnU R                  TU5        gU R                  T[        R                  " TTT5      5        g)a1  Install a resume function as a global.

When the code has freevars, installs a factory that creates the
function with correct globals and closure (since MAKE_FUNCTION
inherits the current frame's globals, which is wrong for resume
functions from inlined frames). Otherwise installs the function
directly.
Úclosure.rÏ   c                 ó8   >• [         R                  " TTTS U 5      $ rö   )ÚtypesÚFunctionType)r¾  rg  r`  rK  s    €€€r¬   Ú_make_fnÚ<OutputGraph.install_resume_function_global.<locals>._make_fnÄ  s   ø€ ô ×)Ò)¨$°	¸4ÀÀwÓOÐOr«   N)rÀ   rÄ   rÀ  ÚCellTyperÁ  r  )r  rK  rg  r`  rÂ  s    ``` r¬   Úinstall_resume_function_globalÚ*OutputGraph.install_resume_function_global´  su   ú€ ð ××ðPÜœuŸ~™~¨sÐ2Ñ3ðPä×#Ñ#÷Pñ Pð
 ×&Ñ& t¨XÕ6à×&Ñ&ØÜ×"Ò" 4¨°DÓ9õr«   c                 óê   • XR                   ;   a  [        SU S35      eU R                   R                  U5        U R                  R	                  [
        R                  " U R                  X5      5        g)a0  
WARNING: prefer the safer `install_global_by_id/install_global`.
torch.compile instances should be independent of each other;
one footgun is to have one instance depend on the existence of
a global installed by another instance. This can happen if we mangle
a global the same way across both instances.
zglobal 'z' is already installedN)ræ  rh  rì   r  rê   rk   rÃ  rY  )r  rK  rË   s      r¬   r  Ú!OutputGraph.install_global_unsafeÐ  s^   € ð ×)Ñ)Ó)Ü  8¨D¨6Ð1GÐ!HÓIÐIØ×Ñ×"Ñ" 4Ô(Ø�‰×Ñœ[×/Ò/°×0AÑ0AÀ4ÓOÕPr«   c                 ó„   • U S[        U5       SU R                   3nX0R                  ;   a  U$ U R                  X25        U$ )z™
Installs a global if it hasn't been installed already.
This is determined by (prefix, id(value)) pair.

Returns the name of the newly installed global.
rñ   Ú_c)Úidrå  ræ  r  ©r  r‡  rË   rK  s       r¬   Úinstall_global_by_idÚ OutputGraph.install_global_by_idÝ  sG   € ð �˜œ2˜e›9˜+ R¨¯©Ð'8Ð9ˆØ×)Ñ)Ó)ØˆKØ×"Ñ" 4Ô/Øˆr«   c                 ó>   • [        U5      nU R                  X25        U$ )zf
Installs a global, generating a unique name for it.

Returns the name of the newly installed global.
)rB   r  rÌ  s       r¬   r„  ÚOutputGraph.install_globalì  s!   € ô ˜Ó ˆØ×"Ñ" 4Ô/Øˆr«   c                 óH  • S U l         U R                  R                  5         U R                  R                  5         U R                  R                  5         S U l        U R                  R                   H"  nSUR                  ;   d  M  UR                  S	 M$     U R                  R                  5         U R                  R                  5         [        U R                  5       5      U l        U R                  R                  5         U R                  R                  5         U R                   R                  5         U R"                  R                  5         U R$                  R                  5         U R&                  R                  5         U R(                  R                  5         U R*                  R                  5         U R,                  R                  5         U R.                  R                  5         U R0                  R                  5         U R2                  R                  5         g r:  )rÄ  rü  rÝ  r  r%  rû  r•   rò  rŸ  r  r  rÄ   rM  r'  rÂ  rý  rþ  rÿ  r   r  r  rò  rà  rá  r  r  r;  s     r¬   ÚcleanupÚOutputGraph.cleanup÷  sŒ  € ð ˆŒØ×Ñ×#Ñ#Ô%Ø�‰×ÑÔØ×/Ñ/×5Ñ5Ô7Ø$(ˆÔ!à—J‘J×$Ô$ˆDØ˜TŸY™YÕ&Ø—I‘I˜jÒ)ñ %ð 	×Ñ×#Ñ#Ô%Ø× Ñ ×&Ñ&Ô(Ü8=Ø×5Ñ5Ó7ó9
ˆÔ5ð 	×Ñ×ÑÔ!Ø×#Ñ#×)Ñ)Ô+Ø×Ñ×#Ñ#Ô%Ø×$Ñ$×*Ñ*Ô,Ø×Ñ×"Ñ"Ô$Ø×#Ñ#×)Ñ)Ô+Ø×-Ñ-×3Ñ3Ô5Ø×Ñ×"Ñ"Ô$Ø× Ñ ×&Ñ&Ô(Ø×$Ñ$×*Ñ*Ô,Ø× Ñ ×&Ñ&Ô(Ø×Ñ×!Ñ!Õ#r«   r&  c                 ó:   • U R                   R                  U5        g rö   )r  rê   )r  r&  s     r¬   Úadd_graph_finalizerÚOutputGraph.add_graph_finalizer  s   € ð 	×#Ñ#×*Ñ*Ð+=Õ>r«   rò   c                 óØ   • UR                   S:X  a  UR                  S   R                  $ UR                   S:w  a  [        SUR                    S35      eU R                  UR
                     $ )z#Extract the non-fake example tensorrš  r›  r�  z(expected node.op to be 'get_attr', got 'r¬  )rž  rŸ  rl  rh  r  r‡  r;  s     r¬   Úexample_value_from_input_nodeÚ)OutputGraph.example_value_from_input_node  s\   € à�7‰7�mÓ#Ø—9‘9˜ZÑ(×0Ñ0Ð0Ø�7‰7�jÓ Ü Ð#KÈDÏGÉGÈ9ÐTUÐ!VÓWÐWØ�‰˜tŸ{™{Ñ+Ð+r«   Úinlined_modulec                 óŽ  ^ ^^• [         R                  TR                  5      m[        TT R                  T R
                  5      mT R                  R                  T5        S[        SS 4UU U4S jjn[        US5      (       aX  [        UR                  5      (       a>  UR                  R                  [        L a!  UR                  5        H  u  pEU" U5        M     [        US5      (       a[  [        UR                  5      (       a@  UR                  R                  [        L a"  UR                  5        H  u  pEU" U5        M     g g g g )Nr¤  rÏ   c                 ó
  >• TR                   c  [        S5      eTR                  TU 5      nT SU  3nUTR                   U'   [        T[        5      (       a-  U TR
                  [        R                  UR                  5      '   g g r¦  r§  r¨  s      €€€r¬   r«  ÚHOutputGraph.add_fqn_info_for_inlined_modules.<locals>.register_leaf_name+  s†   ø€ Ø×(Ñ(Ñ0Ü$Ð%LÓMÐMØ×=Ñ=¸fÀiÓPˆJØ˜˜q  Ð,ˆHØ2<ˆD×%Ñ% hÑ/Ü˜&¤+×.Ñ.ð ð ×5Ñ5Ü×/Ñ/°
·±Ó@òð /r«   r­  r®  )rÁ  r|  rK  ru   r%  rY  rì   rÆ   rB  rX  r²  Ú__func__Ú!og_module_named_parameters_fn_ptrr³  Úog_module_named_buffers_fn_ptr)r  rÚ  r¡  r«  r¤  rñ   rK  s   ` `   @r¬   Ú add_fqn_info_for_inlined_modulesÚ,OutputGraph.add_fqn_info_for_inlined_modules"  s  ú€ ô ×*Ñ*¨6¯;©;Ó7ˆÜ"Ø�$×9Ñ9¸4×;LÑ;Ló
ˆð 	×/Ñ/×3Ñ3°DÔ9ð		¬#ð 		°$÷ 		ñ 		ô �> =×1Ñ1ä˜×8Ñ8×9Ñ9Ø"×3Ñ3×<Ñ<Ü4ò5ð %3×$CÑ$CÖ$E‘L�IÙ& yÖ1ñ %Fä�> :×.Ñ.ä˜×5Ñ5×6Ñ6Ø"×0Ñ0×9Ñ9Ü1ò2ð %3×$@Ñ$@Ö$B‘L�IÙ& yÖ1ò %Cð2ð 7ð /r«   )Dr'  r  rê  r  r  r  rë  r&  r  r  r  r  r"  râ  r  rÑ  rÃ  rå  r  rÍ   r!  r  rç  rõ  r  rc  re  r²  rÅ  rÿ  r  r±  rà  ræ  rá  rü  rþ  rf  r  r  r´  rÇ  rû  r  r	  r
  r  ré  r  rÄ  r$  r  rÂ  r   r
  r  r  r  r  ró  rß  rò  rÍ  r³  r  r  r%  rý  ©F)r.  r‘   rÏ   N)r1  r�   rÏ   Nr  )r†  rö   )rÏ   rÞ  )rÏ   rÁ  )rÏ   r�   )Útmp)r   r¿  )�r¤   r¥   r¦   r§   r  rV   r©   r®   r6   rÞ   r   r#   r	   rt  r   r  rè   ru  rv  r   r  r/  r7  rÆ   rM  r   rY   rV  r\  rh  r€  r  r„   rÄ   r   ÚProxyrŠ  r‰  rö  r#  r   rÖ  rÙ  rÞ  r€  r”  rç  rê  rú  r  rÂ   r  ÚGraphr•   Úsetterr%  r  ru  r   r  r�  rŽ  r   r  r  r  r  r  Úcontextmanagerr,   r   r'  r*  rð  rñ  r+  r)   rj  ra  r~  r   r  r  ro  r  rT  rW  rZ  rb  rn   rg  rk  r&  r'  ro  r–  ru  Ústaticmethodr|  r…  r´  r@   rÏ  r‚  rç  rü   rT  rD   r  r!  r  r½  r�  r—  rž  r/  rÅ  rÐ  r  r   r)  r   rÀ  r>  r5   rõ  rF  r   r±  rÒ   r  r  r  r  rÀ  rÅ  r  rÍ  r„  rÒ  rÕ  rØ  rá  rª   r£   r«   r¬   rÁ  rÁ     s¤
  ‡ ñð Óð  ñmUà!ðmUð   $Ñ&ðmUð -ð	mUð
 ðmUð %Ð%6Ñ7ðmUð ðmUð ðmUð ðmUð ðmUð $(¨¯©×(IÑ(IÑ#JðmUð Ð*Ñ+ðmUð ðmUð 
õmUô^	*ô5ð 38ò9VØ+/ð9Và	ˆc‰õ9Vðv¨Fð ¸#ð À*ô ð>Øð>Ø"%ð>à	ô>ôô* 8ðDD°3ô Dð
 4:ñ	5Ø#ð	5Ø-0ð	5à	ˆs�E—H‘H—N‘NÐ"Ñ	#õ	5ð)¨%¯(©(¯.©.ô )ô*ð<!:¸TÀ#¹YÈÑ=Mô !:ðN >Bñ	$à�S˜#�XÑð$ð �C˜�H‰oð$ð   ¨¡¨sÐ 2Ñ3°dÑ:ð	$ð
 
õ$ðL& 8¨B°¨GÑ#4ð &¸ô &ô#ð
 óó ðð ó ó ð ð& ô &ð Ø-ð à	ô ðF	Ið ð ÀCð  ÈDô  ð. ð)�u—x‘x—~‘~ó )ó ð)ð ‡\�\ð*˜5Ÿ8™8Ÿ>™>ð *¨dó *ó ð*ð ð7 T¨#¨r¯x©x¨-Ñ%8ó 7ó ð7ð ð4 $ r§w¡w°·±Ð'<Ñ"=ó 4ó ð4ð ð1˜t E§L¡L°%¸¿¹¿¹ÈÐ8SÑ2TÐ$TÑUó 1ó ð1ðA #ð A°ð A¸¿¹¿¹ô Að@ ð @°ð @¸¿¹¿¹ô @ð@ ð @°ð @¸ô @ð ×Ñð
 #'ñ	à ‘}ðð Ð/Ñ0ðð ˜4‘Zð	ð
 
Ð/Ñ	0ôó ðð@ óó ðð ð.˜5×,Ñ,×;Ñ;ó .ó ð.ð
 ð8˜8ó 8ó ð8ð ðA˜Ÿ™×/Ñ/ó Aó ðAð ð>˜D  c ™Nó >ó ð>ð ðF D¨¯©×)CÑ)CÑ$Dó Fó ðFð HLñ'
Ø˜˜U 8¨C°¨HÑ#5°tÐ#;Ñ<Ð<Ñ=ÀÑDð'
à	õ'
ôR$ô&ð óNó ðNð
¨6ð 
°cô 
ð'˜Sô 'ð0 ô 0ðJ˜Tô Jð	 #ð 	¨%¯(©(¯/©/¸CÑ*?ô 	ñ˜Cð ¨Cõ ð5 Cð 5¨Dô 5ð
 ð ð ¨ó ó ðð.ØðØ,/ðà	�‰ôð&pà—‘—‘ %§,¡,Ñ.°Ñ4ðpð ðpð ð	pð
 
ôpðd]/Ø-ð]/à	ˆt�KÑ  $ v¨v ~Ñ"6Ð6Ñ	7ô]/ð~s"Ø-ðs"Ø;>ðs"à	ˆt�OÑ$Ð&9Ð9Ñ	:ôs"ðr ñ	V&à'ðV&ð #ðV&ð ð	V&ð
 
Ð!Ñ	"õV&ðpFÐ ;ð FÀð FÈtô Fð>&Gà'ð&Gð ˜?Ñ+ð&Gð ð	&Gð
 ð&Gð 
ô&GôP1ñ> Sð ¸ð Àõ ð4¨D°°d¸3À¹9±oÐ1EÑ,Fô ð Cð ¨Cô ð2 ×Ñð có ó ðô"%7ðN*ØÐ(Ñ)ð*Ø/Jð*à	ô*ðX>ØÐ(Ñ)ð>Ø/Jð>à	ô>ð@f:à'ðf:ð �Ñ!ðf:ð ð	f:ð
 
ˆt�KÑ  $ s¡)¨dÑ"2Ð2Ñ	3ôf:ðP ð7˜d 2§7¡7™mó 7ó ð7ð ðE˜4 ™>ó Eó ðEð@Ø—.‘.ð@Ø26°v±,ð@à	ô@ðhØ—.‘.ðhØ26°v±,ðhà	ôhðT˜D  e§h¡h×&:Ñ&:Ð!:Ñ;ô ð Sð °%·(±(×2FÑ2Fð È3ô ð  U§\¡\Ñ 2ô ô
'ô
Y0ôv 'ðF EIñ Ø˜;Ñ'ð Ø15°c±¸TÑ1Að à	õ ð àðð �n‰nðð ˜˜S˜‘>ð	ð
 
ôð8Q¨#ð Q°cð Q¸dô Qð¨3ð °sð ¸sô ð	 Sð 	°ð 	¸ô 	ô$ð<?Ø"*¨B¯N©NÐ+;¸TÐ+AÑ"Bð?à	ô?ð
,°%·(±(·-±-ð ,ÀCô ,ð%2Ø#Ÿh™hŸo™oð%2Ø7=ð%2à	÷%2r«   rÁ  c                   ó¤   • \ rS rSr% \\S'   \\S'   \S-  \S'   \S-  \S'   \\S4   S-  \S'   \	\
\4   \S	'    SS
SS\S-  SS4S jjrSS jrSrg)ÚDynamoTracerOutputiJ  Úerror_on_graph_breakÚis_tracing_resume_prologueNÚoutput_graphÚoutput_graph_for_cleanup.r¾  r`  rõ  r�   r  rÏ   c                 óî   • UR                   U l         UR                  U l        UR                  U l        UR                  U l        UR                  U l        U(       a  S U l        g UR                  U l        g rö   )rì  rí  r¾  r`  r*  rï  rî  )r  rõ  r  s      r¬   r  ÚDynamoTracerOutput.__init__T  s[   € ð %+×$?Ñ$?ˆÔ!Ø*0×*KÑ*KˆÔ'Ø—~‘~ˆŒØ×)Ñ)ˆŒØ(.¯©ˆÔ%ÞØ $ˆDÕà &§¡ˆDÕr«   c                 óˆ  • U R                   nU(       Ga.  SSKJn  UR                  R                   H"  nSUR
                  ;   d  M  UR
                  S	 M$     UR                   H  nUR                  R                  5         M     UR                  R                  5         UR                  nUR                  R                  5         U" UR                  5        [        US5      (       a  U" UR                  5        UR                  (       a8  UR                  R                  (       a  S UR                  R                  l        g g g g )Nr0   )Ú_clear_fake_mode_weakrefsr›  r  )rï  rÜ  ró  r•   rò  rŸ  rß  Ú_clear_nodesr   rÝ  rò  Útensor_to_contextr+  rB  r  rj  rÍ  )r  rî  ró  rò   rõ  Útcs         r¬   Ú_cleanup_output_graphÚ(DynamoTracerOutput._cleanup_output_grapha  sõ   € Ø×4Ñ4ˆßõ Að %×*Ñ*×0Ô0�Ø §¡Õ*ØŸ	™	 *Ò-ñ 1ð '×.Ô.�Ø—‘×)Ñ)Ö+ñ /à×Ñ×%Ñ%Ô'Ø×-Ñ-ˆBØ× Ñ ×&Ñ&Ô(ñ & b§l¡lÔ3Ü�|Ð%5×6Ñ6Ù)¨,×*EÑ*EÔFð �|�| §¡× 6× 6Ø7;�—‘×&Ñ&Õ4ð !7ˆ|ðI r«   )r¾  rì  r`  rí  rî  rï  rö   r  )r¤   r¥   r¦   r§   rÞ   r©   rÁ  rÄ   r	   r%  rÆ   r  r÷  rª   r£   r«   r¬   rë  rë  J  st   ‡ ØÓØ $Ó$Ø Ñ$Ó$ð *¨DÑ0Ó0Ø�3˜�8‰_˜tÑ#Ó#Ø�C˜�H‰~Óð HLñ.Ø1ð.Ø:=À¹*ð.à	õ.÷'<r«   rë  a  With the current config, we will graph break (and fall back to eager-mode PyTorch) on all ops that have do not have the 'pt2_compliant_tag'. Please see the following doc for how to mark this op as PT2 compliant https://pytorch.org/tutorials/advanced/custom_ops_landing_page.htmlrî  rÊ   r‡  r  r  c                 ó€  ^ • US:w  a  g S[         R                  R                  SS 4U 4S jjnS[         R                  R                  S[        SS 4U 4S jjn[	        U[         R                  R                  5      (       a?  [         R
                  R                  UR                  ;   a	  U" U5        g U" USU S35        g [	        U[         R                  R                  5      (       Ga*  [        UR                  5       5      n[        U5      S	:X  aM  [        X'S
   5      n[         R
                  R                  UR                  ;   a	  U" U5        g U" USU S35        g [         R                  R                  R                  T R                   X44S5      u  p4 [         R"                  R$                  " UR&                  /UQ70 UD6n	[        UW	5      n[         R
                  R                  UR                  ;   a	  U" U5        g U" USU SU	 S35        g g ! [(         a  n
[+        SS[        U
5      / S9   S n
A
NsS n
A
ff = f)NrÌ  r‡  rÏ   c                 ó^   >• U R                   S;   a  g TR                  R                  U 5        g )N>   ÚatenÚprimÚprims)Ú	namespacer  rì   )r‡  rî  s    €r¬   Úencountered_compliant_opÚ8check_pt2_compliant_op.<locals>.encountered_compliant_opš  s)   ø€ Ø×ÑÐ8Ó8ØØ×)Ñ)×-Ñ-¨fÕ5r«   rÝ   c                 ó”   >• TR                   R                  U 5        [        R                  (       a  [	        SSUS-   [
        -   / S9  g g )Nz Encountered non-PT2-compliant oprœ  Ú r�  )r  rì   r1   Úonly_allow_pt2_compliant_opsrJ   Úerr_epilogue)r‡  rÝ   rî  s     €r¬   Úencountered_non_compliant_opÚ<check_pt2_compliant_op.<locals>.encountered_non_compliant_opŸ  sB   ø€ Ø×&Ñ&×*Ñ*¨6Ô2Ü×.×.ÜØ:ØØ #™I¬Ñ4Øó	ð /r«   z%Encountered the torch.ops.OpOverload z that is not PT2 compliant.r0   r   z:Encountered the non-overloaded torch.ops.OpOverloadPacket z that is not PT2 compliant. Fz*Error when attempting to resolve op packetrœ  r�  z+Encountered the torch.ops.OpOverloadPacket z! which resolves to the overload (z) that is not PT2 compliant.)rè   Ú_opsÚ
OpOverloadrÆ   rç   ÚTagÚpt2_compliant_tagÚtagsÚOpOverloadPacketrÄ   Ú	overloadsrZ  rÖ   r|  r“  Úget_fake_values_from_nodesrZ  r{  Ú_jit_resolve_packetÚ_qualified_op_namer6  rJ   )rî  rÊ   r‡  r  r  rÿ  r  r  rž  ÚoverloadrL  s   `          r¬   Úcheck_pt2_compliant_opr  ”  s  ø€ ð ˆÓØð6¬¯©×)>Ñ)>ð 6À4÷ 6ð
¬U¯Z©Z×-BÑ-Bð Ìð ÐQU÷ ô �&œ%Ÿ*™*×/Ñ/×0Ñ0Ü�9‰9×&Ñ&¨&¯+©+Ó5Ù$ VÔ,ØÙ$ØØ3°F°8Ð;VÐWô	
ð 	ä�&œ%Ÿ*™*×5Ñ5×6Ò6Ü˜&×*Ñ*Ó,Ó-ˆ	ô ˆy‹>˜QÓÜ˜¨1¡Ó.ˆBÜ�y‰y×*Ñ*¨b¯g©gÓ5Ù(¨Ô,ØÙ(Øð.Ø.4¨Xð 6.ð/ôð ä—}‘}×*Ñ*×EÑEØ×#Ñ# d ^°Uó
‰ˆð
	Ü—x‘x×3Ò3Ø×)Ñ)ðØ,0òØ4:ñˆHô �V˜XÓ&ˆÜ�9‰9×&Ñ&¨"¯'©'Ó1Ù$ RÕ(á(ØØ=¸f¸Xð F3Ø3;°*ð =%ð&õðI 7øô0 ó 	ÜØDØÜ ›FØ÷	ûð	ús   Æ.H È
H=ÈH8È8H=ÚPÚRc            
       ór   • \ rS rSrSSS\\\4   S\R                  S\R                  SS4
S	 jr	S\
4S
 jrSrg)r  iå  rõ  rÞ  r  r  r  rÏ   Nc                 ó4   • Xl         X l        X0l        X@l        g rö   )rõ  r  r  r  )r  rõ  r  r  r  s        r¬   r  ÚLazyProxy.__init__æ  s   € ð ŒàŒØŒ	Ø�r«   c                 óN   • U R                   " U R                  0 U R                  D6$ rö   )r  r  r  r  s    r¬   r<  ÚLazyProxy.__call__ó  s   € Ø�wŠw˜Ÿ	™	Ð1 T§[¡[Ñ1Ð1r«   )r  r  r  rõ  )r¤   r¥   r¦   r§   r   r  r  r  r  r  r	   r<  rª   r£   r«   r¬   r  r  å  sS   † ðà ðð �Q˜�T‰Nðð �v‰vð	ð
 —(‘(ðð 
ôð2˜#÷ 2r«   r  c                   óÂ  ^ • \ rS rSrSr    S.SSS\S    S\S\S-  S	\S-  S
S4U 4S jjjr	S\
S
S4S jrSSS\R                  S
S4S jr   S/S\S\S\S\S\S-  S\S-  S\\R                  /\R"                  4   S-  S
\R"                  4S jjr   S/S\S\S\S\S\S-  S\S-  S\\R                  /\R"                  4   S-  S
\R"                  4U 4S jjjr    S0S\S\S\S\S\S-  S\S-  S
\R                  4U 4S jjjrS\R                  S
S4S jr  S1S\S\S\S\S\S-  S
\R"                  4S  jjrS!\R"                  S
\\R"                  -  4S" jrS#\S
\4S$ jrS\S%\\R                  R"                  -  S
S4S& jrS\R:                  \R<                  -  S'\S-  S
S4S( jrS)\R:                  S
\ \!RD                     4S* jr#S
\$4S+ jr%S
\&4S, jr'S-r(U =r)$ )2rÞ  i÷  z÷
Holds an FX graph that is being traced. OutputGraph owns a SubgraphTracer
and the separation of responsibilities is that SubgraphTracer is
responsible for building the graph while OutputGraph is responsible for
compiling and executing the graph.
Nrî  rÁ  r#  rÊ  r  r!  rÏ   c                 óf  >• [         TU ]  5         [        R                  " U5      U l        [
        R                  R                  5       U l        X0l	        0 U l
        0 U l        X l        X@l        XPl        0 U l        0 U l        0 U l        S U l        SU l        SU l        SU l        S U l        [/        5       U l        SU l        Ub  UR4                  S-   OSU l        S U l        S U l        S U l        S U l        U R                  c  / U l        O\Uc  U R                  R>                  S S  U l        O:U R                  R>                  U R                  RA                  U5      U4/-   U l        [/        5       U l!        / U l"        [
        RF                  " 5       (       a  [I        S5      e[/        5       U l%        g )NFr0   r   zSInference mode is supposed to be disabled during compilation. Please open an issue.)&r  r  Úweakrefrƒ  rî  rè   r   ræ  r•   rÊ  r  r  r#  r  r!  Úlifted_freevarsr  Údynamic_scalar_nodesÚ	prev_instÚ,unsafe_allow_externally_visible_side_effectsÚ+traced_with_externally_visible_side_effectsÚallow_side_effects_in_hopÚside_effect_stackr.   Útraced_sourcesÚis_reconstructing_generatorÚdebug_levelÚ	_cur_codeÚ_orig_gm_metaÚ_orig_gm_lineno_mapÚ_orig_gm_firstlinenoÚsource_fn_stackÚ_target_to_strÚ_used_namesrð  Úis_inference_mode_enabledr6  Útracked_proxyable_vt)r  rî  r#  rÊ  r  r!  r  s         €r¬   r  ÚSubgraphTracer.__init__ÿ  s¨  ø€ ô 	‰ÑÔÜ#ŸMšM¨,Ó7ˆÔÜ—X‘X—^‘^Ó%ˆŒ
ð #Œð 9;ˆÔ à=?ˆÔð ŒØ*ÔØ&Ôð :<ˆÔð NPˆÔð >@ˆÔ!àˆŒð
 =BˆÔ9Ø;@ˆÔ8ð */ˆÔ&ð AEˆÔô 3=³,ˆÔð ,1ˆÔ(à:@Ñ:L × 2Ñ 2°QÒ 6ÐRSˆÔàˆŒØ/3ˆÔØAEˆÔ Ø04ˆÔ!ð
 �;‰;ÑØ.0ˆDÕ ØÑ"Ø#'§;¡;×#>Ñ#>¹qÐ#AˆDÕ à#'§;¡;×#>Ñ#>Ø—‘×*Ñ*¨=Ó9¸=ÐIðBñ $ˆDÔ ô
 -7«LˆÔð 8:ˆÔ)Ü×*Ò*×,Ñ,ÜØeóð ô BLÃˆÕ!r«   rE  c                 ó:   • U R                   R                  U5        g rö   )r/  rì   )r  rE  s     r¬   Úrecord_proxyable_vtÚ"SubgraphTracer.record_proxyable_vth  s   € Ø×!Ñ!×%Ñ% bÕ)r«   r1  r�   rò   c                 óÀ  • U R                   (       aÍ  U R                  (       a»  U R                  (       a©  UR                  R                  nS nUb(  U R                  R                  X0R                  -
  S 5      nUbb  U R                   U   n[        R                  R                   H  nXe;   d  M
  XV   UR                  U'   M     SU;   a  US   UR                  S'   g g g g g g )NÚstack_trace)
r(  r)  r*  Úcurrent_instructionÚstarts_liner   r   rƒ  Ú_COPY_META_FIELDSrŸ  )r  r1  rò   ÚlinenoÚnode_idxrŸ  r   s          r¬   r  Ú,SubgraphTracer._maybe_preserve_original_metal  sÖ   € ð ××Ø×(×(Ø×)×)à×+Ñ+×7Ñ7ˆFØˆHØÑ!Ø×3Ñ3×7Ñ7Ø×6Ñ6Ñ6¸ó�ð Ñ#Ø×)Ñ)¨(Ñ3�ÜŸX™X×7Ô7�EØ•}Ø+/©;˜Ÿ	™	 %Ó(ñ 8ð ! DÓ(Ø/3°MÑ/B�D—I‘I˜mÒ,ð )ð $ð *ð )ð r«   rÊ   r‡  r  r  rK  Ú	type_exprÚproxy_factory_fnc           	      ó\  • [         R                  " 5       n U R                  XX4XVU5      U R                  R                  =R
                  [         R                  " 5       U-
  -  sl        $ ! U R                  R                  =R
                  [         R                  " 5       U-
  -  sl        f = frö   )re  rf  Ú_create_proxyrî  r"  rB  )	r  rÊ   r‡  r  r  rK  r<  r=  Ú_t0s	            r¬   r  ÚSubgraphTracer.create_proxy‚  s…   € ô �lŠl‹nˆð	Ø×%Ñ%Ø˜d¨DÐ=Móð ×Ñ×6Ñ6×FÒFÜ—’“ Ñ$ñÖFøˆD×Ñ×6Ñ6×FÒFÜ—’“ Ñ$ñÖFús   —A* Á*AB+c           	      óî  >^^^^^• U R                   b^  [        R                  " X445      u  p‰/ n
U H%  nU R                  U5      nU
R	                  U5        M'     [        R
                  " X©5      u  p4[        TU ]  UTUUUUU5      mU R                  R                  n[        R                  S:¼  a«  US;   a¥  UR                  mTU R                  LaŠ  TR                  b}  TR                  R                  bf  UR                   mUR#                  TR                  R                  S9mS[$        4UUUU4S jjn[&        R)                  S[+        U5      5        TU l        SnUR                   U R,                  Laã  [.        R0                  " UR                   5      R3                  SS	 5      " 5       n[5        U[6        R8                  R:                  5      (       ao  S
nUR<                  R>                   Vs/ s H  nUR@                  PM     snU l!        URD                  U l#        URH                  RJ                  RL                  U l'        OS U l!        S U l#        S U l'        URP                  nU(       a'  URS                  5       TRT                  R@                  S'   US;   aÕ  TRT                  RV                  T4nU(       aŽ  [Y        TRT                  R@                  S   R[                  5       5      S   S   nUR\                  R_                  S5      (       a8  UR\                  R_                  S5      (       d  TRT                  RV                  U4nU R`                  U/-   TRT                  R@                  S'   O¡US:X  a›  U R                   b  [c        SSU Rd                   3S/ S9  U R`                  TRT                  RV                  [g        U4S jTRT                  R@                  S   Ri                  5        5       5      4/-   TRT                  R@                  S'   U Rk                  UTRT                  5        U(       Gd+  STRT                  R@                  ;  a:  URP                  nU(       a'  URS                  5       TRT                  R@                  S'   STRT                  R@                  ;  a½  US;   a>  U R`                  TRT                  RV                  T4/-   TRT                  R@                  S'   OyUS:X  as  U R                   b  [c        SSS/ S9  U R`                  TRT                  RV                  TRT                  R@                  S   T   S   4/-   TRT                  R@                  S'   STRT                  R@                  ;  aÜ  / nU(       aJ  URm                  5       (       d  UR	                  URo                  5       5        [q        USS 5      nU(       a  MJ  U Vs/ s H  nURr                  [u        5       ;  d  M  UPM!     nnURw                  5         [x        Rz                  R}                  U5      R                  5       nSR�                  U5      TRT                  lA        [6        R„                  R†                  Rˆ                  (       d)  [6        R„                  R†                  RŠ                  (       aD  U R                  RŒ                  R�                  U R                  R                  TRT                  5        T$ s  snf s  snf )Nrë  rI  )r9  rÏ   c                  óv   >• [        TT5      R                  5       n STR                  R                   ST SU  3$ )NzTRACE FX call z from rþ  )rr   Úrstriprò   rK  )ÚlineÚcur_instÚheaderr¸  Útx_codes    €€€€r¬   Úget_trace_call_log_strÚ<SubgraphTracer._create_proxy.<locals>.get_trace_call_log_stræ  s9   ø€ Ü5°g¸xÓH×OÑOÓQ�DØ+¨B¯G©G¯L©L¨>¸À¸xÀrÈ$ÈÐPÐPr«   rÞ  FÚorig_graphmodulec                  ó   • g rö   r£   r£   r«   r¬   r¿  Ú.SubgraphTracer._create_proxy.<locals>.<lambda>ñ  s   € ¨Dr«   TÚnn_module_stack>   r6  rÌ  ræ  r0   )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.containerr+  rJ  z4Invoking an nn.Module inside a higher order operatorzHigher order op name: zThis is not supported.r�  c              3   óf   >#   • U  H&  u  nu  p#UR                  S 5      S   T:X  d  M"  Uv •  M(     g7f)Ú@r   N)rS  )rÄ  r  rñ   Útyr‡  s       €r¬   rÆ  Ú/SubgraphTracer._create_proxy.<locals>.<genexpr>   s4   øé € ð â*Q™J˜A™w ØŸ7™7 3›<¨™?¨fÑ4÷ ™Ú*Qùs   ƒ!1¨	1z2Invoking an nn.Module inside a HigherOrderOperatorrœ  r5  r#  )Hr#  r¥  Útree_flattenÚ#maybe_lift_tracked_freevar_to_inputrê   Útree_unflattenr  r  rî  rZ  râ  rã  r6  r  Ú	positionsr9  rÆ  Úget_line_of_code_headerrÆ   Útrace_call_logr  rz   r'  rC   Úget_contextr   rç   rè   r   r>  r•   rò  rŸ  r(  Ú_lineno_mapr)  r4  Ú__code__r½   r*  rN  r1  rò   rK  r  r½  r¥   Ú
startswithr+  rJ   r  rã  r  r  Úis_co_filename_from_nn_modulesÚframe_summaryrÖ   rm  r+   ro  r  ÚStackSummaryÚ	from_listr   rÿ  r5  r|  r1   rc  Útrack_nodes_for_deduplicationré  Ú
track_node)r  rÊ   r‡  r  r  rK  r<  r=  Ú	flat_argsÚ	tree_specÚnew_flat_argsrÊ  Úmaybe_new_argr1  rI  Úis_retracingÚorig_graphmodule_maybeÚndrN  rï   Úcurrent_nn_moduleÚframe_summariesÚframeÚfiltered_frame_summariesÚmsgsrF  rG  r¸  rH  r  s     `                      @@@@€r¬   r?  ÚSubgraphTracer._create_proxy–  sï  ý€ ðV �;‰;Ñ"Ü#)×#6Ò#6¸°~Ó#FÑ ˆIØˆMÛ �Ø $× HÑ HÈÓ M�Ø×$Ñ$ ]Ö3ñ !ô "×0Ò0°ÓJ‰LˆDä‰WÑ!ØØØØØØØó
ˆð ×Ñ×)Ñ)ˆô ×Ñ˜wÓ&¨4ð 4
ó ,
ð
 ×-Ñ-ˆHà §¡Ò.Ø×&Ñ&Ñ2Ø×&Ñ&×-Ñ-Ñ9àŸ)™)�Ø×3Ñ3¸8×;MÑ;M×;TÑ;TÐ3ÐU�ðQ´÷ Qò Qô ×$Ñ$ T¬:Ð6LÓ+MÔNØ!)�”ð ˆØ�9‰9˜DŸN™NÒ*Ü%1×%=Ò%=¸b¿i¹iÓ%H×%LÑ%LØ"¡Lô&ó &Ð"ô Ð0´%·(±(×2FÑ2F×GÑGØ#�à&<×&BÑ&B×&HÒ&Hó&Ú&H �B—G”GÑ&Hñ&�Ô"ð ,B×+MÑ+M�Ô(à*×2Ñ2×;Ñ;×JÑJð Õ)ð &*�Ô"Ø+/�Ô(Ø,0�Ô)Ø×,Ñ,ˆÞØ.=×.BÑ.BÓ.DˆB�G‰G�L‰LÐ*Ñ+àÐ3Ó3Ø—W‘W—\‘\ 6Ð*ˆEÞô %)¨¯©¯©Ð6GÑ)H×)OÑ)OÓ)QÓ$RÐSUÑ$VØñ%Ð!ð %×/Ñ/×:Ñ:Ø5÷ñ à+×6Ñ6×AÑAØ0÷ñ ð  ŸW™WŸ\™\Ð+<Ð=�Eà.2×.BÑ.BÀeÀWÑ.LˆB�G‰G�L‰LÐ*Ò+Ø�]Ó"Ø�{‰{Ñ&ÜØRØ4°T×5GÑ5GÐ4HÐIØ 8Øò	ð /3×.BÑ.Bà—G‘G—L‘LÜô à*,¯'©'¯,©,Ð7HÑ*I×*OÑ*OÔ*Qóó ðð	Fñ 	/ˆB�G‰G�L‰LÐ*Ñ+ð 	×*Ñ*¨2¨r¯w©wÔ7çØ ¨¯©¯©Ó4Ø"$×"4Ñ"4�Þ"Ø6E×6JÑ6JÓ6L�B—G‘G—L‘LÐ!2Ñ3à ¨¯©¯©Ó4ØÐ;Ó;Ø6:×6JÑ6JØŸ™Ÿ™ vÐ.ðNñ 7�B—G‘G—L‘LÐ!2Ò3ð ˜]Ó*Ø—{‘{Ñ.Ü%Ø$XØ$&Ø(@Ø"$ò	ð 7;×6JÑ6JàŸG™GŸL™LØŸG™GŸL™LÐ):Ñ;¸FÑCÀAÑFððNñ 7�B—G‘G—L‘LÐ!2Ñ3ð  §¡§¡Ó,Ø<>ˆOÞð ×8Ñ8×:Ñ:Ø#×*Ñ*¨2×+;Ñ+;Ó+=Ô>Ü˜R ¨4Ó0�÷ �"ñ -ó(â,�EØ—>‘>Ô)<Ó)>Ñ>÷ Ù,ð %ð (ð %×,Ñ,Ô.ô ×)Ñ)×3Ñ3Ð4LÓM×TÑTÓVˆDØ"$§'¡'¨$£-ˆB�G‰GÔô �M‰M× Ñ ×8×8Ü�}‰}×#Ñ#×A×Aà×Ñ×,Ñ,×7Ñ7Ø×!Ñ!×,Ñ,¨b¯g©gôð ˆ	ùò[&ùòr(s   Ç0[-×[2×0[2c                 óà  >• [        U R                  XX45        U R                  bo  [        R                  " U0 UD6nU HS  n[        U[        R                  R                  5      (       d  M.  UR                  U R                  :w  d  MJ  [        S5      e   [        T
U ]1  XX4XV5      n	U R                  R                  U	R                  S'   U R                  R!                  U	R"                  5        U	$ )Nz2create_node using arg not from this SubgraphTracerrl  )r  rî  r#  r¥  Úarg_tree_leavesrç   rè   r   ru  r•   rh  r  r  r  rŸ  r-  rì   rK  )r  rÊ   r‡  r  r  rK  r<  rc  rÊ  rò   r  s             €r¬   r  ÚSubgraphTracer.create_noded  sÅ   ø€ ô 	˜t×0Ñ0°$ÀÔMØ�;‰;Ñ"Ü×.Ò.°Ð?¸Ñ?ˆIÛ �Ü! #¤u§x¡x§}¡}×5Ñ5ÙØ—9‘9 §
¡
Õ*Ü(ØLóð ñ	 !ô ‰wÑ" 4°¸tÓOˆØ*.×*;Ñ*;×*EÑ*Eˆ�	‰	Ð&Ñ'Ø×Ñ×Ñ˜TŸY™YÔ'Øˆr«   c                 óÐ  • [        UR                  5      S:”  aŒ  / nUR                   HV  nUR                  U R                  :w  d  M  UR                  [	        [        UR                  R                  5      5      5        MX     U H  nUR                  R                  U5        M      U R                  R                  U5        U R                  R                  UR                  S 5        g rá  )rZ  rp  r•   rÎ  rÜ  r  rò  rp  r  rë   rK  )r  rò   Úuser_graph_nodesÚuserÚother_graph_nodes        r¬   r  ÚSubgraphTracer.remove_node  sª   € Üˆt�z‰z‹?˜QÓØ46ÐØŸ
œ
�ð —:‘: §¡Õ+ð %×+Ñ+¬H´T¸$¿*¹*×:JÑ:JÓ5KÓ,LÖMñ #ó %5Ð Ø ×&Ñ&×1Ñ1Ð2BÖCñ %5à�
‰
×Ñ˜dÔ#Ø× Ñ ×$Ñ$ T§Y¡Y°Õ5r«   r—  Úbeforer¡  c           	      óÒ  • [        U[        R                  5      (       a%  U R                  R	                  UR
                  5        [        R                  SUUb  UR                  OSUU R                  U5        Uc  U R                  c  [        SU SU S35      eU R                  (       ar  U R                  ce  Uc  [        S5      e[        USS9(       dH  U R                  R                  R!                  U/ 5      R	                  ["        R$                  " 5       5        ['        XR(                  5      nU R*                  (       av  [-        [/        U R*                  5      5      nU R*                  U   R0                  nU(       a  U R2                  R5                  U5      nO7U R2                  R7                  U5      nOU R2                  R5                  S 5      nU   U R9                  S	US
0 US9n	[;        U	R0                  U5        U R*                  (       a@  U(       a9  U R*                  R=                  5       u  p«X�R*                  U'   X°R*                  U
'   OX�R*                  U'   U R(                  R?                  U5        U R                  n[        R@                  RC                  5       nU(       d®  U(       d§  [        U[        R                  5      (       a  U RE                  X55        Ov[        U[F        [H        45      (       a[  [K        U5       HL  u  pï[        U[        R                  5      (       d  M&  S nU(       a  [M        UUSS9nU RE                  UU5        MN     [        U[        RN                  5      (       aU  [        UR0                  RP                  [R        RT                  5      (       a"  X�RV                  UR0                  RP                  '   U	sS S S 5        $ ! , (       d  f       g = f)Nz7create_graph_input %s %s %s at debug_level %s before=%sz(none)z0you are required to provide a source for inputs z example_val z on the root tracerz5source must not be None for export root tracer inputsT)Úonly_allow_inputrš  r£   ©r<  F)rO  rÂ  Úindex_is_slice),rç   rè   r   rð  rê   ró  rù   r  rK  r&  r#  rh  rÊ  r`   rî  r
  rM  r   rô  ru   r-  r  rã  rÜ  rò   r•   Úinserting_beforeÚinserting_afterr  r}   Úpopitemrì   r  r	  Ú_lift_basic_symbolsr  rÄ   rï  r]   r°  rŒ  r�  rŽ  r  )r  rK  r<  r—  rx  r¡  Ú	prev_namerò   Úctxrƒ  r  r  Úis_strict_exportÚis_non_strict_exportrå  rL  Úe_sources                    r¬   r•  Ú!SubgraphTracer.create_graph_input•  s  € ô �m¤U§\¡\×2Ñ2Ø×-Ñ-×4Ñ4°]×5KÑ5KÔLÜ�	‰	ØEØØ!Ñ-ˆF�KŠK°8ØØ×ÑØô	
ð ‰>Ø�{‰{Ñ"Ü$ØFÀtÀfÈMÐZgÐYhÐh{Ð|óð ð �>�>˜dŸk™kÑ1Ø‰~Ü$ØKóð ô (¨À×FØ×!Ñ!×7Ñ7×BÑBÀ6È2ÓN×UÑUÜ"×0Ò0Ó2ôô # 4×)9Ñ)9Ó:ˆØ×#×#ÜœX d×&>Ñ&>Ó?Ó@ˆIØ×+Ñ+¨IÑ6×;Ñ;ˆDÞØ—j‘j×1Ñ1°$Ó7‘à—j‘j×0Ñ0°Ó6‘à—*‘*×-Ñ-¨dÓ3ˆCÚØ×%Ñ% m°T¸2¸rÈYÐ%ÐWˆEÜ˜eŸj™j¨-Ô8Ø×'×'®FØ×/Ñ/×7Ñ7Ó9‘�Ø16×(Ñ(¨Ñ.Ø./×(Ñ(¨Ò+à16×(Ñ(¨Ñ.ð
 ×Ñ× Ñ  Ô&ð@  $Ÿ~™~Ðô $)§>¡>×#>Ñ#>Ó#@Ð Þ#Ö,@Ü˜m¬U¯\©\×:Ñ:Ø×,Ñ,¨]ÕCÜ ´´e¨}×=Ñ=Ü )¨-Ö 8™˜Ü)¨!¬U¯\©\×:Ñ:Ù$à#'˜Þ!Ü'4Ø%+Ø&'Ø/4ñ(˜Hð ×0Ñ0°°HÖ=ñ !9ô ˜-¬¯©×6Ñ6¼:Ø×"Ñ"×'Ñ'¬¯©÷<ñ <ð ?D×"Ñ" =×#5Ñ#5×#:Ñ#:Ñ;Ø÷S �S�Sús   ÇG8OÏ
O&rƒ  c                 ó¤  • U R                   c  [        S5      eUR                  R                  S   n[	        U[
        R                  5      (       aG  UR                  R                  U R                  ;   a#  U R                  UR                  R                     $ XR                  ;   a  U R                  U   $ UR                  U R                   :w  a  U R                   R                  U5        [	        U[
        R                  5      (       aD  [        U5      (       a4  UR                  U R                   L a  U R                   R                  X!5        UR                  R                  S   n[	        U[        5      (       a  [!        UR"                  5      O
[!        U5      nU R%                  UR                  R&                  X25      nX@R                  U'   U$ )NzIlift_tracked_freevar_to_input should not be called on root SubgraphTracerr—  )r#  rh  rò   rŸ  rç   rè   r°  rŒ  r  r  rõ  Úlift_tracked_freevar_to_inputr   r/   Útrack_produced_symintsr   ri  Úreal_objr•  rK  )r  rƒ  r—  r<  Ú	new_proxys        r¬   rˆ  Ú,SubgraphTracer.lift_tracked_freevar_to_input  sn  € ð �;‰;ÑÜ Ø[óð ð Ÿ
™
Ÿ™¨Ñ8ˆô �}¤e§l¡l×3Ñ3Ø×"Ñ"×'Ñ'¨4×+=Ñ+=Ó=à×%Ñ% m×&8Ñ&8×&=Ñ&=Ñ>Ð>ð
 ×(Ñ(Ó(Ø×'Ñ'¨Ñ.Ð.ð
 �<‰<˜4Ÿ;™;Ó&Ø�K‰K×5Ñ5°eÔ<ô �}¤e§l¡l×3Ñ3Ü-¨m×<Ñ<Ø—‘ §¡Ò+à�K‰K×.Ñ.¨}ÔDàŸ
™
Ÿ™¨Ñ8ˆô ˜-Ô)9×:Ñ:ô �×'Ñ'Ô(ä�mÓ$ð 	ð
 ×+Ñ+¨E¯J©J¯O©O¸YÓVˆ	Ø&/×Ñ˜UÑ#ØÐr«   rÊ  c                 ó0  ^ • [        U[        R                  R                  5      (       dJ  [        U[        5      (       a3  [	        U 4S jUR
                  UR                  UR                  4 5       6 $ U$ UR                  T :X  a  U$ T R                  U5      $ )zƒ
If arg is a free variable, then lift it to be an input.
Returns the new lifted arg (if arg was a freevar), else the
original arg.
c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7frö   )rT  )rÄ  Úsub_argr  s     €r¬   rÆ  ÚESubgraphTracer.maybe_lift_tracked_freevar_to_input.<locals>.<genexpr>\  s&   øé € ð â'F˜Gð ×@Ñ@À×IÐIÚ'Fùs   ƒ!)
rç   rè   r   rå  ÚsliceÚstartÚstopÚsteprõ  rˆ  )r  rÊ  s   ` r¬   rT  Ú2SubgraphTracer.maybe_lift_tracked_freevar_to_inputO  s   ø€ ô ˜#œuŸx™xŸ~™~×.Ñ.ô
 ˜#œu×%Ñ%Üôà(+¯	©	°3·8±8¸S¿X¹XÑ'Fóðð ð �
Ø�Z‰Z˜4ÓØˆJØ×1Ñ1°#Ó6Ð6r«   Úe_proxyc                 ó	  ^ ^^• TR                   m[        T[        5      (       d  [        S[	        T5       35      eS[
        S[        4U 4S jjnS[
        S[
        S[
        S[        R                  4UU4S jjn[        U[        R                  5      (       Ga’  [        UR                  5       5       H�  u  pVU" U5      (       d  M  [        R                  S	UTUTR                  5        [!        TUUS
[        R"                  R$                  R&                  R(                  TU40 [	        U5      S9nT R+                  Xg5        M‘     UR-                  5       nU" U5      (       ao  [        R                  SUTTR                  5        [!        TUUS
[        R"                  R$                  R.                  T40 [	        U5      S9nT R+                  X‡5        UR0                  [        R2                  L a®  [        UR5                  5       5       H�  u  pVU" U5      (       d  M  [        R                  SUTUTR                  5        [!        TUUS
[        R"                  R$                  R6                  R(                  TU40 [	        U5      S9nT R+                  Xg5        M‘     GO;UR0                  [        R8                  L aA  T R+                  UR;                  5       T5        T R+                  UR=                  5       T5        OÝUR0                  [        R>                  [        R@                  1;   aA  T R+                  URC                  5       T5        T R+                  URE                  5       T5        OnUR0                  [        RF                  [        RH                  1;   a@  T R+                  URK                  5       T5        T R+                  URM                  5       T5        [O        U5      (       aC  URQ                  5       u  pšU	 H*  n[S        X5      nT R+                  U[S        TU5      5        M,     g g [        U[        RT                  5      (       a4  U" U5      (       a&  URV                  RX                  nTTRZ                  U'   g g g )Nz%tracer must be a SubgraphTracer, got rŽ  rÏ   c                 óÞ   >• SSK Jn  U" U 5      =(       aX    [        U R                  R                  [
        R                  5      =(       a#    U R                  R                  TR                  ;  $ )Nr   )r(   )rø  r(   rç   rò   rŒ  r�  rŽ  r  )rŽ  r(   r  s     €r¬   Ú	need_bindÚ8SubgraphTracer.track_produced_symints.<locals>.need_bindƒ  sJ   ø€ ÝIñ ˜A“÷ :Ü˜qŸv™vŸ{™{¬E¯L©LÓ9÷:à—F‘F—K‘K t×'9Ñ'9Ñ9ðr«   r—  r  r  c                 ó”  >• [        T[        5      (       a  T" 5       OTm[        T[        R                  R                  5      (       d  [        S[        T5       35      eTR                  R                  TR                  5         TR                  " U0 UD6n[        UR                  U 5        UsS S S 5        $ ! , (       d  f       g = f)Nz!e_proxy must be an fx.Proxy, got )rç   r  rè   r   rå  rh  ri  r•   r~  rò   r  r}   )r—  r  r  rƒ  r–  rõ  s       €€r¬   Ú_proxy_with_example_valueÚHSubgraphTracer.track_produced_symints.<locals>._proxy_with_example_valueŒ  s”   ø€ ô
 $.¨g´y×#AÑ#A‘g”iÀwˆGÜ˜g¤u§x¡x§~¡~×6Ñ6Ü$Ø7¼¸W»°ÐGóð ð —‘×-Ñ-¨g¯l©lÕ;Ø×+Ò+¨TÐ<°VÑ<�Ü! %§*¡*¨mÔ<Ø÷ <×;×;ús   Â*B9Â9
Cz=track_produced_symints %s for %s.size()[%s] at debug_level %srÌ  r{  zCtrack_produced_symints %s for %s.storage_offset() at debug_level %sz?track_produced_symints %s for %s.stride()[%s] at debug_level %s).rõ  rç   rÞ  rh  ri  r	   rÞ   r   rå  rè   r   rï  rŸ   rù   r  r&  r  Úopsrû  Úsym_sizerÂ   r‰  Ústorage_offsetÚsym_storage_offsetÚlayoutÚstridedr    Ú
sym_strideÚ
sparse_cooÚ_indicesÚ_valuesÚ
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚ
sparse_cscÚ
sparse_bscÚccol_indicesÚrow_indicesr/   Ú__tensor_flatten__rÖ   r°  rò   rŒ  r  )r  r—  r–  r™  rœ  rå  rŽ  Ú
lazy_proxyr   Úattrsr‚  r"  Úinner_trŒ  rõ  s   ` `           @r¬   r‰  Ú%SubgraphTracer.track_produced_symintso  sÀ  ú€ ð  —‘ˆÜ˜&¤.×1Ñ1Ü Ð#HÌÈfËÈÐ!WÓXÐXð	œð 	¤÷ 	ð	Üð	Ü'*ð	Ü69ð	ä�X‰X÷	ð 	ô �m¤U§\¡\×2Ò2Ü! -×"4Ñ"4Ó"6Ö7‘�Ù˜Q—<“<Ü—I‘IØWØØØØ×*Ñ*ôô "+ØØ1ØØ'ÜŸ	™	Ÿ™×/Ñ/×3Ñ3Ø  !˜ØÜ"& q£'ñ	"�Jð ×/Ñ/°Ö>ñ' 8ð* +×9Ñ9Ó;ˆNÙ˜×(Ñ(Ü—	‘	ØYØ"ØØ×&Ñ&ô	ô 'ØØ-Ø"Ø#Ü—I‘I—N‘N×5Ñ5Ø�JØÜ" >Ó2ñ	�
ð ×+Ñ+¨NÔGà×#Ñ#¤u§}¡}Ò4Ü% m×&:Ñ&:Ó&<Ö=‘D�AÙ  —|“|ÜŸ	™	Ø]ØØ#ØØ"×.Ñ.ôô &/Ø"Ø5ØØ+Ü!ŸI™IŸN™N×5Ñ5×9Ñ9Ø$ a˜LØÜ&*¨1£gñ	&˜
ð ×3Ñ3°AÖBó' >ð* ×%Ñ%¬×)9Ñ)9Ò9Ø×+Ñ+¨M×,BÑ,BÓ,DÀgÔNØ×+Ñ+¨M×,AÑ,AÓ,CÀWÕMØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÓMØ×+Ñ+¨M×,FÑ,FÓ,HÈ'ÔRØ×+Ñ+¨M×,EÑ,EÓ,GÈÕQØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÓMØ×+Ñ+¨M×,FÑ,FÓ,HÈ'ÔRØ×+Ñ+¨M×,EÑ,EÓ,GÈÔQÜ,¨]×;Ñ;Ø*×=Ñ=Ó?‘
�Û!�DÜ% mÓ:�GØ×/Ñ/°¼ÀÈ$Ó9OÖPò "ð <ô
 ˜¤u§|¡|×4Ñ4Ù˜×'Ñ'Ø$×)Ñ)×.Ñ.�Ø-4�×$Ñ$ TÒ*ð (ð 5r«   rÅ  c           	      óæ  ^ •  SS[         [        R                  -  S[        S -  S[        SS 4U 4S jjjn[        U[        R                  5      (       Gat  [        UR                  5       5       H+  u  pEU" UUb  [        U[        R                  U5      OS SS9  M-     UR                  [        R                  L a}  [        UR                  5       5       H+  u  pEU" UUb  [        U[        R                  U5      OS SS9  M-     U" UR!                  5       Ub  [        U[        R"                  5      OS SS9  GO;UR                  [        R$                  L aA  T R'                  UR)                  5       U5        T R'                  UR+                  5       U5        OÝUR                  [        R,                  [        R.                  1;   aA  T R'                  UR1                  5       U5        T R'                  UR3                  5       U5        OnUR                  [        R4                  [        R6                  1;   a@  T R'                  UR9                  5       U5        T R'                  UR;                  5       U5        [=        U5      (       aF  UR?                  5       u  pgU H-  n[A        X5      n	T R'                  X’b  [C        X(5      OS 5        M/     g g [        U[        R                  5      (       a
  U" UU5        g g )	NrŽ  r¡  rx  rÏ   c           	      óZ  >• [        U 5      (       d  g [        U [        R                  5      (       d  [	        S[        U 5       35      eTR                  U 5      n[        U5      S:X  a  g TR                  bò  TR                  R                  X5        U HÐ  nTR                  R                  U   nUR                  R                  S   n[        U[        R                  5      (       d  [	        S[        U5       35      eTR                  [        U5      [        U5      UUUS9n[        R!                  SUUb  UR"                  OSTR$                  5        UTR&                  U'   MÒ     g [        U5      S:w  a  [	        S	U S
U  35      eUc  [	        SU  SU  S35      e[)        [+        U5      5      nTR                  [        U5      [        U 5      U UUS9n[        R!                  SU Ub  UR"                  OSTR$                  5        [-        UU SS SS9UR                  R                  S'   g )Nzs must be a SymInt, got r   r—  z"example_val must be a SymInt, got )rx  r¡  z4_lift_symbols_in_symint %s from %s at debug_level %szsubgraph inputsr0   zyFor root tracer, we only expect to bind basic symbols (compound symbols should be cached before) but got unbound symbols z in zSource of 'zÕ' is None when lifting it to input of top-level. If it's an unbacked symbol, this could be because it's not tracked with lazy_bind_unbacked_symbols. Otherwise, should provide a source when create_graph_input for `z` at root tracer.F)Úpass_arg_as_tensorr‰  rÿ  r›  )r(   rç   rè   r°  rh  ri  Úlookup_unbound_symbolsrZ  r#  r€  r  rò   rŸ  r•  rÆ   rù   r  rK  r&  r  rã  Úiterr   )	rŽ  r¡  rx  Úself_to_be_boundÚs0Úparent_proxyÚexample_valÚphr  s	           €r¬   Ú_lift_symbols_in_symintÚCSubgraphTracer._lift_basic_symbols.<locals>._lift_symbols_in_symintö  sB  ø€ ô
 ˜q—>‘>Øä˜a¤§¡×.Ñ.Ü$Ð'?ÄÀQÃ¸yÐ%IÓJÐJØ#×:Ñ:¸1Ó=ÐÜÐ#Ó$¨Ó)Øð �{‰{Ñ&à—‘×/Ñ/°Ô:Û*�BØ#'§;¡;×#<Ñ#<¸RÑ#@�LØ".×"3Ñ"3×"8Ñ"8¸Ñ"I�KÜ% k´5·<±<×@Ñ@Ü,Ø@ÄÀkÓARÐ@SÐTóð ð ×0Ñ0Ü˜B›Ü˜[Ó)Ø#Ø%Ø%ð 1ð �Bô —I‘IØNØØ'-Ñ'9˜ŸšÐ?PØ×(Ñ(ô	ð :<�D×(Ñ(¨Ó6ò) +ô. Ð'Ó(¨AÓ-Ü(ðLØL\ÐK]Ð]aÐbcÐadðfóð ð ‘>Ü(Ø% a Sð )[à[\ÐZ]Ð]nðpóð ô
 œ$Ð/Ó0Ó1�Ø×,Ñ,Ü˜“GÜ˜“GØØ!Ø!ð -ð �ô —	‘	ØJØØ#)Ñ#5�F—K’KÐ;LØ×$Ñ$ô	ô ,4ØØØ',Ø $Ø#ñ,�—‘—‘˜ZÒ(r«   T)rx  rã  )"rÂ   rè   r°  r   rÞ   rç   r   rï  rŸ   rg   rf   ÚSIZEr¢  r£  r    ÚSTRIDEr   ÚSTORAGE_OFFSETr¥  r€  r¦  r§  r¨  r©  rª  r«  r¬  r­  r®  r¯  r/   r°  rÖ   rY   )
r  r—  rÅ  r¿  rå  rŽ  r²  r‚  r"  r³  s
   `         r¬   r€  Ú"SubgraphTracer._lift_basic_symbolsï  s’  ø€ ð !ñH	Ü”U—\‘\Ñ!ðH	ä˜T‘MðH	ô ðH	ð ÷	H	ð H	ôT �m¤U§\¡\×2Ò2Ü! -×"4Ñ"4Ó"6Ö7‘�Ù'Øð ™?ô -¨S´.×2EÑ2EÀqÔIà!àôñ 8ð ×#Ñ#¤u§}¡}Ò4Ü% m×&:Ñ&:Ó&<Ö=‘D�AÙ+Øð  #™ô 1°´n×6KÑ6KÈQÔOà!%à#ôñ >ñ (Ø!×0Ñ0Ó2ð ™?ô -¨S´.×2OÑ2OÔPà!àôð ×%Ñ%¬×)9Ñ)9Ò9Ø×(Ñ(¨×)?Ñ)?Ó)AÀ3ÔGØ×(Ñ(¨×)>Ñ)>Ó)@À#ÕFØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÓMØ×(Ñ(¨×)CÑ)CÓ)EÀsÔKØ×(Ñ(¨×)BÑ)BÓ)DÀcÕJØ×%Ñ%¬%×*:Ñ*:¼E×<LÑ<LÐ)MÓMØ×(Ñ(¨×)CÑ)CÓ)EÀsÔKØ×(Ñ(¨×)BÑ)BÓ)DÀcÔJÜ,¨]×;Ñ;Ø*×=Ñ=Ó?‘
�Û!�DÜ% mÓ:�GØ×,Ñ,Ø¹/¤¨CÔ!6Ètöò "ð <ô ˜¤u§|¡|×4Ñ4Ù#ØØõð 5r«   rŽ  c                 óÔ  • UR                   R                  R                  n[        U5      S:X  a  / $ / nU H¥  nX@R                  ;  a  UR                  U5        M%  U R                  U   n[        U[        5      (       a  U" 5       nXPR                  U'   [        U[        R                  R                  5      (       a  UR                  U Ld  M˜  [        SU S35      e   [        US S9$ )Nr   zThe proxy of symbol z" doesn't belong to current tracer.c                 ó   • U R                   $ rö   )rK  )rŽ  s    r¬   r¿  Ú7SubgraphTracer.lookup_unbound_symbols.<locals>.<lambda>‹  s   € °·²r«   )rS  )rò   rŒ  r&   rZ  r  rê   rç   r  rè   r   rå  rõ  rh  rW  )r  rŽ  r&   Úto_be_boundr»  rƒ  s         r¬   r¸  Ú%SubgraphTracer.lookup_unbound_symbolsw  sÏ   € Ø—v‘v—{‘{×/Ñ/ˆÜˆ|Ó Ó!ØˆIàˆÛˆBØ×+Ñ+Ó+Ø×"Ñ" 2Ô&Ùà×&Ñ& rÑ*ˆEÜ˜%¤×+Ñ+Ù›�Ø).×"Ñ" 2Ñ&Ü˜e¤U§X¡X§^¡^×4Ñ4¸¿¹ÈDÔ8PÜ$Ø*¨2¨$Ð.PÐQóð ñ ô �kÑ'7Ñ8Ð8r«   c                 ó’  ^• U R                   n/ n/ m/ n[        U R                  R                  5       H„  u  pEUR                  S:X  ao  UR
                  S   n[        U[        R                  5      (       a?  UR                  UR                  5        UR                  U5        TR                  U5        M‚  M„    O   [        [        X5      5       VVV	s/ s H  u  nu  p‰X‰:w  d  M  UPM     n
nnn	U
(       a:  U
 Vs/ s H  orU   PM	     nn[        U4S jU
 5       5      nSU 3n[        SXÜ5      $ [        SSS5      $ s  sn	nnf s  snf )	Nrš  r—  c              3   ó.   >#   • U  H
  nTU   v •  M     g 7frö   r£   )rÄ  rå  Útensor_placeholder_indicess     €r¬   rÆ  Ú4SubgraphTracer.has_input_mutation.<locals>.<genexpr>§  s   øé € ð *Ú7E°!Ð*¨1Ö-²~ùs   ƒzInput mutation detected at TFrœ  r£   )rð  rï  r•   rò  rž  rŸ  rç   rè   r   rê   ró  rÊ  rÄ   rà   )r  Úinput_versions_at_beginningÚinput_nodesÚinput_versions_at_endÚplaceholder_idxrò   r—  rå  Úv1Úv2Úmutated_inputsÚmutated_nodesrâ   rÝ   rÌ  s                 @r¬   Úhas_input_mutationÚ!SubgraphTracer.has_input_mutation�  sK  ø€ Ø&*×&GÑ&GÐ#ØˆØ%'Ð"à "ÐÜ%.¨t¯z©z×/?Ñ/?Ö%@Ñ!ˆOØ�w‰w˜-Ó'Ø $§	¡	¨/Ñ :�Ü˜m¬U¯\©\×:Ñ:Ø)×0Ñ0°×1GÑ1GÔHØ×&Ñ& tÔ,Ø.×5Ñ5°oÖFñ ;ñ
 ñ &Aô  )ÜÐ/ÓGô õ
ò ‘�‘8�Bð ‰x÷	 ñ ð 	ò 
ö Ù5CÓD²^°¨œ^±^ˆMÐDÜ$)ô *Ù7Eó*ó %Ð!ð 0°¨Ð?ˆCÜ  cÓAÐAä˜E 2 rÓ*Ð*ùô!
ùò Es   ÃD=Ã%D=Ã:Ec           	      ó0  • SSK Jn  SSKJn  [	        5       nU R
                  R                   Ht  nUR                  S:X  aa  U" U/5      S   n[        U[        R                  5      (       a4  U" U5       H&  nXc;   a  SX6    SU 3n[        SU5      s  s  $ XCU'   M(     Mr  Mt    O   [	        5       nU R
                  R                  SS	9S   n	[        R                  " U	R                  S   5       H‹  n
U
(       d  M  U" U
/5      S   n[        U[         5      (       a  [#        S
5      e[        U[        R                  5      (       d  MY  U" U5       H&  nXh;   a  SX†    SU
 3n[        SU5      s  s  $ X¨U'   M(     M�     UR%                  5       UR%                  5       -  n['        U5      S:”  aT  U Vs/ s H  oÃU   XŒ   4PM     nnSR)                  U VVs/ s H  u  pïU SU 3PM     snn5      nSU 3n[        SU5      $ [        SS5      $ s  snf s  snnf )Nr   )Úget_tensor_storages)Ú_collect_fake_inputsrš  z*Input-to-input aliasing detected at nodes z and Tr*  ræ  z example_value must not be a listz,Output-to-output aliasing detected at nodes z, z+Input-to-output aliasing detected at nodes Frœ  )Ú(torch._dynamo.variables.higher_order_opsrÙ  Útorch._higher_order_ops.utilsrÚ  r%  r•   rò  rž  rç   rè   r   rÛ   r  r¥  Útree_leavesr  r  rh  rF  rZ  rÿ  )r  rÙ  rÚ  Úinput_storagesrò   r—  ÚstoragerÝ   Úoutput_storagesÚ	out_nodesÚout_nodeÚintersected_storagesrŽ  Úaliasedrå  Úos                   r¬   rÜ   ÚSubgraphTracer.has_aliasing¯  s  € ÝPÝFä>B»fˆà—J‘J×$Ô$ˆDØ�w‰w˜-Ó'Ù 4°d°VÓ <¸QÑ ?�Ü˜m¬U¯\©\×:Ñ:Ù#6°}Ö#E˜Ø"Ó4à$NÈ~ÑOfÐNgÐglÐmqÐlrÐ"s˜CÜ#/°°cÓ#:Ô:Ø26 wÓ/ó $Fñ ;ñ ñ %ô @D»vˆØ—J‘J×)Ñ)¨XÐ)Ð6°qÑ9ˆ	Ü×*Ò*¨9¯>©>¸!Ñ+<Ö=ˆHßˆxÙ 4°h°ZÓ @ÀÑ C�Ü˜m¬T×2Ñ2Ü(Ð)KÓLÐLÜ˜m¬U¯\©\×:Ó:Ù#6°}Ö#E˜Ø"Ó5à$PÐQ`ÑQiÐPjÐjoÐpxÐoyÐ"z˜CÜ#/°°cÓ#:Ô:Ø3;¨Ó0ó $Fñ >ð  .×2Ñ2Ó4°×7KÑ7KÓ7MÑMÐÜÐ#Ó$ qÓ(ñ BVóÚAU¸A Ñ" OÑ$6Ó7ÑAUð ð ð —i‘i¹GÔ DºG±D°A A 3 e¨A¨3£¹GÒ DÓEˆGØ?À¸yÐIˆCÜ  cÓ*Ð*ä˜E 2Ó&Ð&ùòùó !Es   Æ1HÇH
)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   )NFNN)NNN)NNNN)FN)*r¤   r¥   r¦   r§   r  r   rÞ   r,   rÆ   r  r„   r2  r   ru  r  r	   r   rå  r  r?  r  r  r   r•  r  rˆ  rT  rè   r‰  r°  r   r€  r  r�  rŽ  r¸  rà   rÖ  rÛ   rÜ   rª   r(  r)  s   @r¬   rÞ  rÞ  ÷  sr  ø† ñð .2ØØ'+Ø"&ñgNà#ðgNð Ð)Ñ*ðgNð ð	gNð
  ‘}ðgNð ˜4‘ZðgNð 
÷gNð gNðR* oð *¸$ô *ðCØ-ðCØ57·W±WðCà	ôCð8  Ø $ØAEñàðð ðð ð	ð
 ðð �D‰jðð ˜‘:ðð # B§G¡G 9¨b¯h©hÐ#6Ñ7¸$Ñ>ðð 
�‰õð4  Ø $ØAEñLàðLð ðLð ð	Lð
 ðLð �D‰jðLð ˜‘:ðLð # B§G¡G 9¨b¯h©hÐ#6Ñ7¸$Ñ>ðLð 
�‰÷Lð Lðd ØØØ $ñàðð ðð ð	ð
 ðð �D‰jðð ˜‘:ðð 
�‰÷ð ð66 §¡ð 6¨Dô 6ð6 Ø $ñAàðAð ðAð ð	Að
 ðAð ˜‘ðAð 
�‰õAðH4°2·8±8ð 4À	ÈBÏHÉHÑ@Tô 4ðl7°sð 7¸sô 7ð@}5Ø ð}5Ø+4°u·x±x·~±~Ñ+Eð}5à	ô}5ð@DØ"Ÿ\™\¨E¯L©LÑ8ðDØ?EÈ¹}ðDà	ôDðP9¨¯©ð 9¸¸e¿l¹lÑ9Kô 9ð, + Lô  +ðD,'˜l÷ ,'ò ,'r«   rÞ  rö   (  r  rù  r  r1  rI  rH  r  r  r3   r�  rz  râ  re  r  rÀ  r5  r  Úcollections.abcr   r   r   r   r   rŒ  r   Útypingr	   r
   r   r   r   r   r   r   Útyping_extensionsr   r   r   r�  Útorch._guardsrè   Útorch._loggingÚtorch.distributedÚdistributedr²  Útorch.nnÚtorch.utils._pytreer“  r”  r¥  r   r   Útorch._C._dynamor   Útorch._dynamo.excr   r   r   r   r   r   r   r   Ú"torch._library.fake_class_registryr   Útorch._library.opaque_objectr    Útorch._subclasses.fake_tensorr!   Útorch._utils_internalr"   Útorch.export.dynamic_shapesr#   r  r$   Ú%torch.fx.experimental._backward_stater%   rø  r&   r'   r(   r)   r*   r+   Útorch.fx.noder,   Útorch.fx.passes.runtime_assertr-   Útorch.utils._ordered_setr.   Útorch.utils._python_dispatchr/   rœ  r1   r2   r÷   r4   Úbackends.registryr5   r6   r  r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r*  rD   Úcurrent_scope_idrE   Údevice_interfacerF   rG   rH   rI   rJ   rK   rý  rL   rM   Úgraph_deduplicationrN   Úgraph_id_filterrO   rP   Úgraph_region_trackerrQ   rR   rS   Úmutation_guardrT   rÂ  rU   rV   rW   r¡  rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   Úvariables.builderr~   r   r€   r�   Úvariables.ctx_managerr‚   Úvariables.functionsrƒ   r„   Úvariables.listsr…   Úvariables.miscr†   Úvariables.nn_moduler‡   r¾  rˆ   r‰   rŠ   Úvariables.torch_functionr‹   Úvariables.user_definedrŒ   rc  rŽ   Útorch._dynamo.packager�   rµ  r�   Ú!torch._dynamo.variables.functionsr‘   rè  r“   Ú torch.multiprocessing.reductionsr”   Ú	getLoggerr¤   rù   r„  ÚgetArtifactLoggerÚgraph_tabular_logr  Úgraph_sizes_logrX  r  rÂ   r°  ÚTensorMetadataDimr¨   rÌ   r�   r®   rÈ   r&  r'  r³  rà  r²  rß  r%  rÆ   rØ   rÛ   rà   r  rÄ   ræ   rÖ  r•   ru  rô   Úcacherú   rü   r  r  r+  rÅ   rt  r@  rW  r‚  rŽ  r¤  ræ  r¨  r­  r¯  rÁ  rë  r  r  r  rä  r  r  r  ÚTracerrÞ  r£   r«   r¬   Ú<module>r     sK  ðñó* Û Û Û Û Û Û Û Û Û 	Û 
Û Û Û Û Û ß 9Ñ 9ß 4Ý ÷	÷ 	ó 	÷ >Ñ =ã ã Û Ý  Û ß $Ð $ß Ý #ß N÷÷ õ @Ý 8Ý 4Ý 0Ý 9Ý :Ý ?÷÷ õ !Ý JÝ /Ý Fç DÓ Dß 5÷÷ ÷ ó õ 'Ý Ý -Ý 6÷õ ÷ SÝ :÷õ 5ß /Ý 0ß WÑ W÷÷ ÷ ÷ ó ÷$÷ ÷ ÷ ÷ ÷ ÷0ó õ ;ß HÝ -Ý (Ý 1÷ñ õ
 CÝ ;ö ÝAÝ4ÝHÝNÝ4Ý?à×Ó˜Ó!€Ø—N’N×4Ò4°X¸wÓGÐ Ø—’×1Ò1°(¸LÓI€Ø—.’.×2Ò2°8¸]ÓK€Ø—’×1Ò1°(¸LÓI€à×*Ò*Ð à˜%Ÿ,š,Ñ&¨Ñ-Ð Ø!Ð"3Ñ4Ð ØÐ;Ñ<Ð ô7�yô 7ô!�)ô !ô*�zô ð "'§¢§¢×!>Ò!>Ð Ø$)§H¢H§O¢O×$DÒ$DÐ !ðØðØ&*¨3°¨8¡nðàˆc�3ˆhÑôñ& �$Ñ÷ð ó ðñ
 �$Ñ÷0ð 0ó ð0ð 6:ñ)Ø˜u U§\¡\°3¸±:Ð%=Ñ>Ñ?ð)à�—’×%Ò%×*Ò*Ñ+¨dÑ2ð)ð 	ˆ�Š×	Ò	×	"Ò	"Ñ#õ)ðX ‡‚ð4�có 4ó ð4ð ÷-ð -ó ñ-ð¨#ð °(¸2¸tÀC¹y¸=Ñ2Iõ ô �U—X’X—_’_õ  ÷ !ò !ðH 	ˆS‘&ˆ[Ñ�ð ÷Nð Nó ñNð: ÷<
ð <
ó ñ<
ð~ ÷ð ó ñð* ÷'ð 'ó ñ'ð,4˜Ÿšð 4°°b·g²g¸s°lÑ1Cð 4Éõ 4ð$C˜rŸxšxð C¨Dõ Cð¡Eð ¨d°3¸°8©nõ ô(H"Ñ.õ H"ôVg.2Ñ#õ g.2÷T]><ò ><ðDJñ ðHÙðHØ%(ðHØ25ðHØ=@ðHØJMðHà	õHðV  —o“oÓ'Ñ áˆcƒN�ÙˆCƒL�÷2ò 2ô$d'�R—Y’Yö d'r«   