
    3j\              	       
   S SK r S SKJr  S SKJrJr  S SKrS SK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Jr  SSKJrJrJrJrJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK#J$r$  \(       a  S SK%J&r&  SSK'J(r(  S SK)J*r*  \RV                  r+S\S\S\,4S jr-S\.\   S\S\,4S jr/S\R`                  SSSS4S jr1S\R`                  S\,4S jr2S\,S\Rf                  4S  jr4S\,S\Rj                  4S! jr6\*" S"S#S$9S%\,S&\,SS4S' j5       r7\7Rp                  S%\,S&\,SS4S( j5       r9\" \Rt                  Rv                  Rx                  Rz                  5        \*" S)S#S$9S%\,S&\,SS4S* j5       r>\>Rp                  S%\,S&\,SS4S+ j5       r9\" \Rt                  Rv                  R~                  Rz                  5        \*" S,S#S$9S-\,S.\,SS4S/ j5       r@\@Rp                  S-\,S.\,SS4S0 j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" S1S#S$9S-\,S.\,SS4S2 j5       rA\ARp                  S-\,S.\,SS4S3 j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" S4S#S$9S-\,SS4S5 j5       rB\BRp                  S-\,SS4S6 j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" S7S#S$9S8\CS9\,SS4S: j5       rD\DRp                  S8\CS9\,SS4S; j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" S<S#S$9S.\,SS4S= j5       rE\ERp                  S.\,SS4S> j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" S?S#S$9S@\,SA\,SS4SB j5       rF\FRp                  S-\,S.\,SS4SC j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" SDS#S$9SE\,SF\,SG\RV                  SS4SH j5       rG\GRp                  SE\,SF\,SG\RV                  SS4SI j5       r9\" \Rt                  Rv                  R                  Rz                  5        \*" SJS#S$9SK\RV                  S.\,SS4SL j5       rH\HRp                  SK\RV                  S.\,SS4SM j5       r9\" \Rt                  Rv                  R                  Rz                  5         " SN SO5      rI " SP SQ\"5      rJ " SR SS\J5      rK " ST SU\K5      rL " SV SW\5      rMg)X    N)Callable)AnyOptional)ConstDictVariable)TupleVariable)has_side_effectProxy   )graph_break_hints)create_call_function)TYPE_CHECKINGunimplemented)CURRENT_STREAM_INDEXget_external_object_by_indexregister_graph_created_objectregister_user_objectreset_user_object_trackingCurrentStreamSource   )VariableTrackerConstantVariable)FxTracebackAnnotateVariable)LazyVariableTracker)InstructionTranslator)	PyCodegen)	custom_opargskwargsreturnc            	          [         R                  " U 0 UD6n[        U[        R	                  [        / 5      [        0 5      5      5      $ N)torchEventr   EventVariable make_construct_in_graph_event_fnr   r   )r   r    events      Y/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/variables/streams.py	new_eventr*   &   sC    KK((E(66"04	
     c            	          [         R                  " U 0 UD6n[        U[        R	                  [        / 5      [        0 5      5      5      $ r#   )r$   Streamr   StreamVariable!make_construct_in_graph_stream_fnr   r   )r   r    streams      r)   
new_streamr1   0   sC    \\4*6*F(88"04	
 r+   devicecgr   c                    ^ TR                  U4S j5        T" [        U 5      5        TR                  [        SS5      5        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ Nstash_graph_created_objectload_import_fromr$   _dynamograph_bytecode_inputs__name__)r3   s   r)   <lambda>)_codegen_current_stream.<locals>.<lambda><   s&    ##MM//88(
r+   r   F)add_push_nullr   extend_outputr   )r2   r3   s    `r)   _codegen_current_streamrA   :   s<    	
 6"#)!U34r+   c                 b   ^  [         R                  R                  T 5      n[        UU 4S j5      $ )Nc                    > [        TU5      $ r#   )rA   )_r3   r2   s     r)   r=   $get_current_stream.<locals>.<lambda>H   s    5fbAr+   )r$   acceleratorcurrent_streamr   )r2   r0   s   ` r)   get_current_streamrH   E   s,    --f5F(A r+   indexc                 n    [        U 5      n[        U[        R                  5      (       d
   SU  35       eU$ )Nz3Fork/join stream expected a stream object at index )r   
isinstancer$   r-   )rI   r0   s     r)   _get_stream_by_indexrL   L   s;    )%0Ffell++ 
=eWE+ Mr+   c                 n    [        U 5      n[        U[        R                  5      (       d
   SU  35       eU$ )Nz4Record/wait event expected an event object at index )r   rK   r$   r%   )rI   r(   s     r)   _get_event_by_indexrN   T   s;    (/EeU[[)) 
>ugF) Lr+   zstreams::fork )mutates_args
from_indexto_indexc                 T    [         R                  R                  [        U5      5        g r#   r$   rF   
set_streamrL   rQ   rR   s     r)   fork_streamrW   \   s    
 
  !5h!?@r+   c                     g r#   rO   rV   s     r)   rD   rD   d       
 	r+   zstreams::joinc                 T    [         R                  R                  [        U5      5        g r#   rT   rV   s     r)   join_streamr[   o   s    	  !5h!?@r+   c                     g r#   rO   rV   s     r)   rD   rD   t   rY   r+   zstreams::record_eventevent_indexstream_indexc                 R    [        U 5      n[        U5      nUR                  U5        g r#   )rN   rL   recordr]   r^   r(   r0   s       r)   record_eventrb      s"    ,E!,/F	LLr+   c                     g r#   rO   r]   r^   s     r)   rD   rD      rY   r+   zstreams::wait_eventc                 R    [        U 5      n[        U5      nUR                  U5        g r#   )rN   rL   waitra   s       r)   
wait_eventrg      s"    ,E!,/F	JJvr+   c                     g r#   rO   rd   s     r)   rD   rD      rY   r+   zstreams::synchronize_eventc                 :    [        U 5      nUR                  5         g r#   )rN   synchronize)r]   r(   s     r)   synchronize_eventrk      s    ,E	r+   c                     g r#   rO   )r]   s    r)   rD   rD          r+   zstreams::synchronize_devicedevice_typedevice_indexc                 j    [         R                  R                  [         R                  " X5      5        g r#   )r$   rF   rj   r2   rn   ro   s     r)   synchronize_devicerr      s    	!!%,,{"IJr+   c                     g r#   rO   rq   s     r)   rD   rD      rm   r+   zstreams::synchronize_streamc                 :    [        U 5      nUR                  5         g r#   )rL   rj   )r^   r0   s     r)   synchronize_streamru      s    !,/F
r+   c                     g r#   rO   )r^   s    r)   rD   rD      rm   r+   zstreams::wait_streamwaiting_stream_indexwaited_on_stream_indexc                 R    [        U 5      n[        U5      nUR                  U5        g r#   )rL   wait_stream)rw   rx   waiting	waited_ons       r)   rz   rz      s&    "#78G$%;<I	"r+   c                     g r#   rO   rd   s     r)   rD   rD      rY   r+   zstreams::sync_deallocwait_event_indexsrc_stream_index
to_deallocc                 j    [         R                  R                  R                  R	                  X5        g)au  An op which waits on an event and moves the last usage of to_dealloc
after the wait, so that after the sync occurs, the deallocation or
subsequent reuse of the tensor's memory will be guaranteed to happen
after a side stream is finished using it.
See https://docs.pytorch.org/docs/stable/generated/torch.Tensor.record_stream.html#torch.Tensor.record_stream
for more detailsN)r$   opsstreamsrg   defaultr~   r   r   s      r)   sync_deallocr      s#     
II  (()9Lr+   c                     g r#   rO   r   s      r)   rD   rD      s     	r+   zstreams::record_streamtensorc                 8    U R                  [        U5      5        g r#   )record_streamrL   r   r^   s     r)   r   r      s    
-l;<r+   c                     g r#   rO   r   s     r)   rD   rD      rY   r+   c                       \ rS rSrSrSS jrSS jrSS jrSS	\R                  S-  SS4S
 jjr
S\4S jrS\4S jrSrg)SymbolicStreamStatei  z)Track the currently entered stream if anyr!   Nc                    SSK Jn  / n[        R                  R	                  5       (       a}  [        5         [        R                  R                  5       nU" UR                  5      n[        X45      nU[        :X  d   S[         SU 35       e[        R                  " X4S9nXVl        U/n[        R                  " U5      U l        g )Nr
   r   z+Current stream must be registered at index z, got )source)r   r   r$   rF   is_availabler   rG   r2   r   r   r   createuser_object_indexcollectionsdequecur_stream_stack)selfr   	cur_stackr0   r   rI   
stream_vars          r)   __init__SymbolicStreamState.__init__
  s    0*,	))++&(&&557F(7F
 )8E00 =>R=S Tg0 -33FJJ ,1(#ICNCTCTD
r+   r.   c                 :    U R                   R                  U5        g r#   )r   appendr   r0   s     r)   enter_stream SymbolicStreamState.enter_stream&  s    $$V,r+   c                 8    U R                   R                  5         g r#   )r   popr   s    r)   exit_streamSymbolicStreamState.exit_stream)  s    !!#r+   r2   c                     Ub0  [        U R                  5       H  nUR                  U:X  d  M  Us  $    U R                  S   $ )N)reversedr   r2   )r   r2   r0   s      r)   
cur_streamSymbolicStreamState.cur_stream,  sA    "4#8#89==F*!M : $$R((r+   c                 2    [        U R                  5      S:  $ )Nr   )lenr   r   s    r)   in_stream_context%SymbolicStreamState.in_stream_context4  s    4(()A--r+   c                     U R                   S   n[        U[        5      (       a.  UR                  5       (       d  [	        UR                  5       5      $ [	        UR                  5      $ )zOGet a Python object id for the current stream without realizing lazy variables.r   )r   rK   r   is_realizedid
peek_valuevaluer   s     r)   cur_stream_id!SymbolicStreamState.cur_stream_id7  sQ    &&r*f1226;M;M;O;Of'')**&,,r+   )r   )r!   N)r0   r.   r!   Nr#   )r<   
__module____qualname____firstlineno____doc__r   r   r   r$   r2   r   boolr   intr   __static_attributes__rO   r+   r)   r   r     sI    3
8-$)!4 )@P ).4 . s  r+   r   c            	          ^  \ rS rSrSr\SSSSS\\\4   SS 4S	 j5       r	S
\
S   S\SS4U 4S jjrSSS\S\4U 4S jjrSSS\S\4U 4S jjrS\4S jrS\4S jrSS jrSrU =r$ )StreamContextVariablei?  z(This represents torch.cuda.StreamContexttxr   stream_to_enterr.   r    r!   c                     [        U40 UD6$ r#   )r   )r   r   r    s      r)   r   StreamContextVariable.createB  s     %

 	
r+   r0   Nc                 l   > Xl         [        TU ]  " SSU R                  5       R                  0S S.UD6  g )Nr0   )target_valuesinitial_valuesrO   )r0   superr   
get_streamr   )r   r0   r    	__class__s      r)   r   StreamContextVariable.__init__M  s<     	
#T__%6%H%HI	
 	
r+   r   c                 t   > UR                   R                  U R                  5       5        [        TU ]  U5      $ r#   )symbolic_stream_stater   r   r   enterr   r   r   r   s      r)   r   StreamContextVariable.enterU  s/    
 	  --doo.?@w}R  r+   c                 Z   > UR                   R                  5         [        TU ]  " U/UQ76 $ r#   )r   r   r   exitr   s      r)   r   StreamContextVariable.exit]  s+    
 	  ,,.w|B&&&r+   c                 6    [         R                  R                  $ r#   )r$   cudaStreamContextr   s    r)   python_type!StreamContextVariable.python_typee  s    zz'''r+   c                     g)NTrO   r   s    r)   supports_graph_breaks+StreamContextVariable.supports_graph_breaksh  s    r+   c                 J    U R                   (       d   S5       eU R                   $ )Nz,Stream context should have a separate streamr0   r   s    r)   r    StreamContextVariable.get_streamk  s    {{JJJ{{{r+   r   r!   r.   )r<   r   r   r   r   staticmethoddictstrr   r   r   r   r   r   r   typer   r   r   r   r   __classcell__r   s   @r)   r   r   ?  s    2
#
)
 sCx.
 
!	
 

x(89 
S 
T 
!)!2A!	!')'2A'	'(T (t  r+   r   c                   8  ^  \ rS rSrSr\R                  r SS\S\R                  S\	S-  S\
SS4
U 4S	 jjjrS\4S
 jrS\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrS\4S jrS\4S jrS\4S jrSS jrSS jr\S\S\S\\	S/S4   4S j5       rSrU =r $ )r.   ip  z1Represents the device-agnostic torch.Stream classNproxyr   r   r    r!   c                    > Ub9  SUR                   R                  ;   a  UR                   R                  S   U:X  d   eXl        X l        UR                  U l        X0l        [        TU ]  " S0 UD6  g )Nexample_valuer#   )nodemetar   r   r2   r   r   r   r   r   r   r   r    r   s        r)   r   StreamVariable.__init__u  s`     EJJOO!C::???3u<<<

ll!2((r+   c                 "    [         R                  $ r#   )r$   r-   r   s    r)   r   StreamVariable.python_type  s    ||r+   c                     U R                   $ r#   r   r   s    r)   get_real_python_backed_value+StreamVariable.get_real_python_backed_value      zzr+   r   r   namer   c                   > [        U R                  U5      (       d
   SU 35       eSSKJnJn  SSKJn  US:X  a  US   n[        U[        5      (       d   eUR                  R                  S[        R                  R                  R                  UR                  U R                  40 5        [         R"                  " S 5      $ US	:X  a  US   n	[        U	[$        5      (       d   eUR                  R                  S[        R                  R                  R&                  U R                  U	R                  40 5        [         R"                  " S 5      $ US
:X  aa  UR                  R                  S[        R                  R                  R(                  U R                  40 5        [         R"                  " S 5      $ US:X  a3  U" [         UUR                  R                  " SU/U" U /U-   U5      Q76 S9$ US:X  Ga0  SSKJn
  UR                  R-                  [/        U R                  5      5        U(       a6  [        US   [        5      (       a  US   nUR                  nUR                  nOLU R                  R1                  5       n[3        U[        R5                  [7        / 5      [9        0 5      5      5      nUR                  R                  S[        R                  R                  R0                  XR                  40 5        U
" UUR                  R                  S[:        U40 5      S9$ X%;   Ga  [=        U5      S:X  a  U(       d  SSKJ nJ!n  U RD                  (       a+  U" U RD                  RG                  URH                  5      5        US   n[        U[$        5      (       d  [J        RL                  " U[N        5      $ URD                  (       a:  U RD                  c   eU" U RD                  RG                  URH                  5      5        [J        RL                  " UXR   " U R                  UR                  5      5      $ [P        TU ]  XX45      $ )Nzno stream method found named r
   )cmp_name_to_op_mappingproxy_args_kwargsr   wrap_fx_proxy_clsrg   r   call_functionrz   rj   querycall_method
target_clsr   r   rb   )wrap_fx_proxy)r   r   GuardBuilderinstall_guard)*hasattrr   utilsr   r   builderr   rK   r&   outputcreate_proxyr$   r   r   rg   r   r   r   r.   rz   ru   r   'check_event_record_after_input_mutationr   rb   r   r'   r   r   r   r   guardsr   r  r   
make_guardEQUALS_MATCHr   buildNotImplementedr   r   )r   r   r   r   r    r   r   r   	event_argother_streamr   	event_varr(   r]   r   r  otherr   s                    r)   r   StreamVariable.call_method  s    tzz4((P,I$*PP(E.<QIi7777II""		!!,,,,d.D.DE	 $**400]"7LlN;;;;II""		!!--'')G)GH	 $**400]"II""		!!44'')	 $**400W_$+ii,,!4*;TFTM6*R  ^#.II==bnM
47M:: G	!'99

//1;!BB%b)+<R+@ II""		!!..445	 !ii,,#0 N	  +D	Qv<{{dkk44\5N5NOP GEe^44&,,R@@||{{...dkk44\5N5NOP"((&,TZZE 
 w"2T::r+   c                     U R                   $ r#   r   r   s    r)   as_proxyStreamVariable.as_proxy  r   r+   c                     g)Nztorch._CrO   r   s    r)   module_nameStreamVariable.module_name  s    r+   c                     g)Nr-   rO   r   s    r)   fn_nameStreamVariable.fn_name  s    r+   r   c                   ^ U R                   (       a   eU R                  b[  TR                  U4S j5        TR                  TR	                  U R                  5      5        TR                  [        SS5      5        g SU R                   3nTR                  R                  R                  X R                  5      nTR                  TR                  USS95        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ )Nr   r8   codegens   r)   r=   ,StreamVariable.reconstruct.<locals>.<lambda>  s&    00MM77@@2r+   r   F_stream_Tadd)r   r   r?   append_outputcreate_load_constr@   r   r2   r   r  install_global_by_idr   create_load_globalr   r  prefixr   s    `  r)   reconstructStreamVariable.reconstruct  s     ;;!!-!! !!'";";D<R<R"ST!!"6q%"@A  }-F::$$99&**MD!!'"<"<Tt"<"LMr+   c                     U $ r#   rO   r   s    r)   r   StreamVariable.get_stream  s    r+   c                 0   ^ ^ S[         SSSS 4U U4S jjnU$ )NrI   r  r   r!   c                    >^ TR                  U4S j5        TR                  U4S j5        T" T5        T" T5        TR                  [        SS5      5        TR                  [        SS5      5        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ r6   r8   r  s   r)   r=   NStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>  &    00MM77@@0r+   c                  l   > T R                  [        R                  R                  R                  S5      $ )Nbuild_streamr9   r$   r:   r  r<   r  s   r)   r=   r1    s%    00MM''00.r+   r
   Fr   r?   r@   r   rI   r  r   r    s    `r)   fn<StreamVariable.make_construct_in_graph_stream_fn.<locals>.fn  g    !! !!
 DMFO!!"6q%"@A!!"6q%"@Ar+   r   r   r    r8  s   `` r)   r/   0StreamVariable.make_construct_in_graph_stream_fn  .    	Bc 	BK 	BD 	B 	B" 	r+   )r2   r   r   r   r#   r  r   r!   Nr   )!r<   r   r   r   r   r$   r-   _cpython_typer	   r   r   r   r   r   objectr   r   listr   r   r   r  r  r  r*  r   r   r   r   r   r/   r   r   r   s   @r)   r.   r.   p  s#   ;LLM )-	)) ||) :	)
 ) 
) )&T f c;#c; c; ?#	c;
 S/)*c; 
c;J% S  N& %6	3$d*	+ r+   r.   c                   v   ^  \ rS rSrSr\R                  R                  rS\	4S jr
SSS\SS4U 4S	 jjrS
rU =r$ )CudaStreamVariablei*  zMRepresents torch.cuda.Stream, preserving device-specific type and attributes.r!   c                 6    [         R                  R                  $ r#   )r$   r   r-   r   s    r)   r   CudaStreamVariable.python_type/  s    zz   r+   r   r   r   r   c                   > SSK Jn  US:X  a  SSKJnJn  U R
                  (       a+  U" U R
                  R                  UR                  5      5        [        U R                  S5      (       a&  UR                  " U R                  R                  5      $ [        U R                  S5      (       a&  UR                  " U R                  R                  5      $ [        TU ]9  X5      $ )Nr   r   cuda_streamr
   r   native_handle) r   r  r   r  r   r	  r
  r  r   r   rH  rI  r   var_getattr)r   r   r   r   r   r  r   s         r)   rK  CudaStreamVariable.var_getattr2  s    &= <{{dkk44\5N5NOPtzz=11'..tzz/E/EFFtzz?33'..tzz/G/GHHw"2,,r+   rO   )r<   r   r   r   r   r$   r   r-   r@  r   r   r   rK  r   r   r   s   @r)   rD  rD  *  sB    WJJ%%M!T !-5 -S -EV - -r+   rD  c                   (  ^  \ rS rSrS\S\R                  S\S-  S\SS4
U 4S jjr	S\
4S	 jrS\4S
 jrSSS\S\\   S\\\4   S\4
S jrS\4S jr\SSS\\   S\\\4   S\S\4   4S j5       r\S\S\S\\S/S4   4S j5       rSS jrSrU =r$ )r&   iD  r   r   r   Nr    r!   c                    > Ub9  SUR                   R                  ;   a  UR                   R                  S   U:X  d   e[        TU ]  " S0 UD6  Xl        X l        X0l        g )Nr   rO   )r   r   r   r   r   r   r   r   s        r)   r   EventVariable.__init__E  sU     EJJOO!C::???3u<<<"6"

!2r+   c                 "    [         R                  $ r#   )r$   r%   r   s    r)   r   EventVariable.python_typeS  s    {{r+   c                     U R                   $ r#   r   r   s    r)   r   *EventVariable.get_real_python_backed_valueV  r   r+   r   r   r   r   c                    SSK Jn  SSKJn  US:X  az  [        R                  XU5      u  pxUR                  R                  S[        R                  R                  R                  U R                  U40 5        [        R                  " S 5      $ US:X  a  [        R                  XU5      u  pUR                  R                  [!        U	R"                  5      5        UR                  R                  S[        R                  R                  R$                  U R                  U40 5        [        R                  " S 5      $ US:X  aa  UR                  R                  S[        R                  R                  R&                  U R                  40 5        [        R                  " S 5      $ US	:X  a3  U" [        UUR                  R                  " S
U/U" U /U-   U5      Q76 S9$ [)        U R"                  5      R*                   S[)        U R"                  5      R,                   SU 3n
[/        S[1        U5      SU
 S3/ [2        R4                  QS9  g )Nr
   )r   r   r   rf   r   r`   rj   r   r   r   .zUnsupported event methodz#Dynamo doesn't support tracing the zC method. We currently support wait, record, synchronize, and query.)gb_typecontextexplanationhints)r  r   r  r   r&   _get_stream_argr  r  r$   r   r   rg   r   r   r   r  r   r   rb   rk   r   r   r   r   r   r   SUPPORTABLE)r   r   r   r   r    r   r   rD   r^   
stream_argmethod_names              r)   r   EventVariable.call_methodY  s    	..6>+;;BfMOAII""		!!,,**   $**400X'4'D'DRv'V$JII==bAQAQ>RSII""		!!..**   $**400]"II""		!!33'')	 $**400W_$+ii,,!4*;TFTM6*R  

#../qdjj1A1N1N0OqQUPVW  2D	A+ OM N&22r+   c                     U R                   $ r#   r  r   s    r)   r  EventVariable.as_proxy  r   r+   r.   c                     SnU(       a  US   nOU(       a  UR                  S5      nU(       d'  U R                  R                  5       nXDR                  4$ X3R                  4$ )a  Returns (stream_variable, stream_index_for_op).

The ambient current stream is registered at index 0 in the external
object registry.  The inductor wrapper updates index 0 at runtime so
that cudagraph capture sees the capture stream, not the stale
trace-time default stream.
Nr   r0   )getr   r   r   )r   r   r    r\  r   s        r)   rZ  EventVariable._get_stream_arg  s[     
aJH-J11<<>J;;;;7777r+   r   c                 0   ^ ^ S[         SSSS 4U U4S jjnU$ )NrI   r  r   r!   c                    >^ TR                  U4S j5        TR                  U4S j5        T" T5        T" T5        TR                  [        SS5      5        TR                  [        SS5      5        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ r6   r8   r  s   r)   r=   LEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>  r2  r+   c                  l   > T R                  [        R                  R                  R                  S5      $ )Nbuild_eventr5  r  s   r)   r=   rg    s%    00MM''00-r+   r
   Fr   r6  r7  s    `r)   r8  :EventVariable.make_construct_in_graph_event_fn.<locals>.fn  r:  r+   r;  r<  s   `` r)   r'   .EventVariable.make_construct_in_graph_event_fn  r>  r+   c                     U R                   (       a   eSnUR                  R                  R                  X R                  5      nUR                  UR                  USS95        g )N_eventTr"  )r   r   r  r&  r   r$  r'  r(  s       r)   r*  EventVariable.reconstruct  sQ     ;;zz  55fjjIg8848HIr+   )r   r   r   r?  )r<   r   r   r   r	   r$   r%   r   r   r   r   r   rA  r   r   rB  r   r   r   r  r   tuplerZ  r   r   r   r'   r*  r   r   r   s   @r)   r&   r&   D  sB   33 {{3 :	3
 3 
3T f ?#? ? ?#	?
 S/)*? 
?B%  8#8?#8 S/)*8 
$	%	8 80 %6	3$d*	+ ,J Jr+   r&   )Nr   collections.abcr   typingr   r   r$   torch._dynamo.variables.dictsr   torch._dynamo.variables.listsr   torch.fxr   r	   rJ  r   bytecode_transformationr   excr   r   r;   r   r   r   r   r   r   r   baser   constantr   ctx_managerr   lazyr   torch._dynamo.symbolic_convertr   r  r   torch._library.custom_opsr   Tensorr   r*   ro  r1   r2   rA   rH   r-   rL   r%   rN   rW   register_fakerD   r   r   forkr   r[   joinrb   rg   rk   r   rr   ru   rz   r   r   r   r   r.   rD  r&   rO   r+   r)   <module>r     s{    $    ; 7 +   : .  ) ! & 4 % D# / 
S C C eCj C C 5ELL 5k 5d 5u||    s u{{  ?,AAA 
A -A 			 
	 	 		!!&&.. / ?,AC A3 A4 A -A 			 
	 	 		!!&&.. / "4c    5 			 
	 	 		!!..66 7  r2C s t  3 			 
	 	 		!!,,44 5 'b93 4  :
   	3 	4 	 !	 		!!33;; < (r:KC Ks Kt K ;K !!	3 	c 	d 	 "	 		!!44<< = (r:S T  ;
 !!	C 	D 	 "	 		!!44<< = !3#c #3 #4 # 4# 			 
	 	 		!!--55 6 "4	M	M-0	M>Cll	M		M 5	M 			 	 
		 	 		!!..66 7 #"5=%,, =c =d = 6= 	LL		 
	 	 		!!//77 85  5 p.7 .bw* wt- -4PJO PJr+   