ó
    CC˜jºn ã                  ó"  • S SK J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  S SKJr  S SK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Jr  S SKrS SKJs  J r!  S SKJ"r"J#r#J$r$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 SK/J0r0  S SK1J2r2  S SK3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:J;r;  S SK<J=r=  S SK>J?r?  S SK@JArA  S SKBJCrC  S SKDJErEJFrF  S SKGJHrH  S SKIJJrJJKrKJLrL  S SKMJNrNJOrOJPrPJQrQJRrRJSrS  S SKTJUrU  S SKVJWrW  SSKXJYrYJZrZJ[r[  \(       a(  S SK\J]r]J^r^J_r_J`r`Jara  S SKJbrb  S SKcJdrd  S S KeJfrf  S S!KgJhrhJiri  \RÔ                  " \k5      rl\RÚ                  RÝ                  \kS"5      ro \RÚ                  RÝ                  \kS#5      rp\tru\R@                  Rì                  rw\" S&5      rx\Rò                  Rô                  Rö                  r{Sr|S q}\Rü                  Rÿ                  S'5      r€S‚S( jr� " S) S*\S+S,9r‚\ƒ" \‚GR                  5      r…\GR                  SƒS- j5       r‡ " S. S/5      rˆ\ " S0 S1\‰5      5       rŠ " S2 S3\‰5      r‹\ " S4 S5\‰5      5       rŒ\ " S6 S7\‰5      5       r�\ " S8 S9\‰5      5       rŽ\ " S: S;\‰5      5       r�\ " S< S=\‰5      5       r� " S> S?\	GR"                  5      r’\’" 5       r“S„S@ jr”\GR*                  S…SA j5       r–\GR*                  S†SC j5       r—      S‡SD jr˜SˆSE jr™SˆSF jršS‰SG jr›SŠSH jrœS‹SI jr�SŠSJ jrž\GR                  SŒSK j5       rŸ\GR                  S�SL j5       r SŽSM jr¡S�SN jr¢ " SO SP5      r£\GR                  S�SQ j5       r¤\GR*                      S†SR j5       r¥S�SS jr¦ " ST SU5      r§ " SV SW5      r¨ " SX SY\%5      r©\\ESZS[4   rª\" S\S]9 " S^ S_5      5       r«S‘S` jr¬\" S\S]9 " Sa Sb5      5       r­ " Sc Sd5      r®\" S\S\Se9 " Sf Sg5      5       r¯\" S\S\Se9 " Sh Si5      5       r°\" S\S\Se9 " Sj Sk5      5       r±\(       a  \°\±-  r²\" S\S\Se9 " Sl Sm\³5      5       r´\" S\S\Se9 " Sn So5      5       rµ " Sp SB\K5      r¶\·r¸      S’Sq jr¹            S“Sr jrº        S”Ss jr»        S”St jr¼ " Su Sv\C5      r½S•Sw jr¾S–Sx jr¿S—Sy jrÀ\Rô                  GR‚                  GR„                  GR†                  \¾\Rô                  Rö                  GRˆ                  GR†                  Sz \Rô                  Rö                  GRŠ                  GR†                  S{ \Rô                  Rö                  GRŒ                  GR†                  S| 0rÇ\”" \Rô                  Rö                  GR�                  GR†                  \Rô                  Rö                  GR’                  GR†                  \Rô                  Rö                  GR”                  GR†                  \Rô                  GR–                  GR˜                  GRš                  5      rÎS S}KÏJÐrÐJÑrÑJÒrÒJÓrÓJÔrÔJÕrÕJÖrÖJ×r×JØrØ  S˜S~ jrÙ\GR´                  S™S j5       rÛ        SšS€ jrÜ        S›S� jrÝg! \q a.  rrS$\s" \r5      ;   a  \RÔ                  " \kS%-   5      rp SrrCrGNý\reSrrCrff = f)œé    )ÚannotationsN)Údefaultdict)Ú	dataclass)ÚAnyÚcastÚLiteralÚTYPE_CHECKINGÚ	TypeGuardÚTypeVarÚUnion)ÚSelfÚ	TypedDictÚUnpack)ÚReferenceType)ÚSymBoolÚSymFloatÚSymIntÚTensor)Úis_functorch_wrapped_tensorÚis_legacy_batchedtensor)ÚCustomClassBase)ÚFakeScriptObject)ÚMissingOpProfile)Údtrace_structured)Úsuggest_memory_format)Ú	assert_eqÚassert_metadata_eqÚis_sparse_anyÚis_sparse_compressedÚMetaConverter)Ú!_is_privateuse1_backend_availableÚrender_call)Úimmutable_dict)Únormalize_function)ÚStorageWeakRef)ÚTorchFunctionMode)ÚIntLikeTypeÚpy_sym_types)Úno_dispatch)Úis_traceable_wrapper_subclassÚTorchDispatchModeÚTraceableWrapperSubclass)ÚKeyPathÚkeystrÚPyTreeÚtree_mapÚ	tree_map_ÚTreeSpec)Úcount)ÚCapturedTracebacké   )Ú_CacheKeyStateÚ_PySymInputStubÚ_SymIntOutputStub)ÚCallableÚ	GeneratorÚIterableÚMappingÚSequence)ÚTracebackType)ÚSource)Ú
OpOverload)ÚShapeEnvÚSymbolicContextÚhierarchical_compileÚnot_implementedz 'not_implemented' not registeredz.not_implementedÚTÚ	MkldnnCPUc                óB   • U S L=(       a    U R                  [        5      $ ©N)ÚhasÚ_MKLDNN_DISPATCH_KEY)Údispatch_keyss    Ú«C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_subclasses/fake_tensor.pyÚ_dispatch_keys_has_mkldnnrM   \   s   € Ø Ð$×P¨×):Ñ):Ô;OÓ)PÐPó    c                  ó¶   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   Srg)Ú"_FakeTensorConstructorIgnoredStateé`   ÚobjectÚ_nonzero_memoÚ_nonzero_memo_vcÚ_nonzero_memo_epochÚ
_item_memoÚ_item_memo_vcÚ_item_memo_epochÚ_unique_memoÚ_unique_memo_vcÚ_unique_memo_epochÚ_unique_consecutive_memoÚ_unique_consecutive_memo_vcÚ_unique_consecutive_memo_epochÚ_nested_int_memoÚ_nested_int_memo_vcÚ_nested_int_memo_epochÚ_debug_trace© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__rc   rN   rL   rP   rP   `   sd   ‡ ð ÓØÓØÓØÓØÓØÓØÓØÓØÓØ$Ó$Ø!'Ó'Ø$*Ó*ØÓØÓØ"Ó"ØÖrN   rP   F)Útotalc                óP   • U SSSSS[         R                  R                  5       4;   $ )NÚcudaÚhpuÚxpuÚmpsÚmtia)ÚtorchÚ_CÚ_get_privateuse1_backend_name)Údevice_types    rL   Ú_is_indexed_device_typerv   {   s3   € àØØØØØÜ�‰×.Ñ.Ó0ðñ ð rN   c                  ó(   • \ rS rSrSS jrSS jrSrg)ÚIncrementRecursionCounté‹   c                ó   • [         S-  q g ©Nr5   ©ÚRECURSION_COUNT©Úselfs    rL   Ú__init__Ú IncrementRecursionCount.__init__Œ   ó   € ä˜1Ñ‰rN   c                ó   • [         S-  q g r{   r|   r~   s    rL   Ú__del__ÚIncrementRecursionCount.__del__�   r‚   rN   rc   N©ÚreturnÚNone)re   rf   rg   rh   r€   r„   rj   rc   rN   rL   rx   rx   ‹   s   † ô÷rN   rx   c                  ó    • \ rS rSr% S\S'   Srg)ÚUnsupportedFakeTensorExceptioné•   ÚstrÚreasonrc   Nrd   rc   rN   rL   rŠ   rŠ   •   ó   ‡ à†KrN   rŠ   c                  ó<   ^ • \ rS rSr        SU 4S jjrSrU =r$ )ÚFakeTensorDeviceMismatchErroréš   c                óV   >• Xl         X l        X0l        [        TU ]  SU SU S35        g )NzOExpected all tensors to be on the same device, but found at least two devices, z and Ú!)ÚfuncÚcommon_deviceÚdeviceÚsuperr€   )r   r”   r•   r–   Ú	__class__s       €rL   r€   Ú&FakeTensorDeviceMismatchError.__init__›   s:   ø€ ð Œ	Ø*ÔØŒÜ‰Ñð%Ø%2 O°5¸¸ÀðCõ	
rN   )r•   r–   r”   )r”   r@   r•   útorch.devicer–   rš   r‡   rˆ   )re   rf   rg   rh   r€   rj   Ú__classcell__©r˜   s   @rL   r�   r�   š   s3   ø† ð
àð
ð $ð
ð ð	
ð
 
÷
õ 
rN   r�   c                  ó    • \ rS rSr% S\S'   Srg)ÚDynamicOutputShapeExceptionéª   r@   r”   rc   Nrd   rc   rN   rL   rž   rž   ª   ó   ‡ à
ÖrN   rž   c                  ó    • \ rS rSr% S\S'   Srg)ÚDataDependentOutputExceptioné¯   r@   r”   rc   Nrd   rc   rN   rL   r¢   r¢   ¯   r    rN   r¢   c                  ó    • \ rS rSr% S\S'   Srg)ÚUnsupportedOperatorExceptioné´   r@   r”   rc   Nrd   rc   rN   rL   r¥   r¥   ´   r    rN   r¥   c                  ó    • \ rS rSr% S\S'   Srg)Ú$UnsupportedMutationAliasingExceptioné¹   rŒ   r�   rc   Nrd   rc   rN   rL   r¨   r¨   ¹   rŽ   rN   r¨   c                  ó    • \ rS rSr% S\S'   Srg)ÚMetadataMismatchErroré¾   rŒ   r�   rc   Nrd   rc   rN   rL   r«   r«   ¾   rŽ   rN   r«   c                  ó4   • \ rS rSr% S\S'   S\S'   S	S jrSrg)
ÚFakeTensorTLSéÃ   úbool | NoneÚallow_non_fake_inputs_overridezweakref.WeakSet[FakeTensor]Ú%non_strict_export_fake_tensor_trackerc                óF   • S U l         [        R                  " 5       U l        g rH   )r±   ÚweakrefÚWeakSetr²   r~   s    rL   r€   ÚFakeTensorTLS.__init__É   s   € Ø.2ˆÔ+Ü5<·_²_Ó5FˆÕ2rN   )r±   r²   Nr†   )re   rf   rg   rh   ri   r€   rj   rc   rN   rL   r®   r®   Ã   s   ‡ ð %0Ó/Ø+FÓF÷GrN   r®   c                 ó.   • [         R                  U S5      $ ©NT)ÚdictÚfromkeys)Úitemss    rL   Úordered_setr¼   Ñ   s   € Ü�=‰=˜ Ó%Ð%rN   c               #  ó.  #   • [         R                  R                  [         R                  R                  R                  5      n  U v •  U b   [         R                  R                  U 5        g g ! U b   [         R                  R                  U 5        f f = f7frH   )rr   rs   Ú_unset_dispatch_modeÚ_TorchDispatchModeKeyÚFAKEÚ_set_dispatch_mode)Úolds    rL   Úunset_fake_temporarilyrÃ   Õ   sk   é € ä
�(‰(×
'Ñ
'¬¯©×(FÑ(F×(KÑ(KÓ
L€Cð-ØŠ	à‰?Ü�H‰H×'Ñ'¨Õ,ð øˆ3‰?Ü�H‰H×'Ñ'¨Õ,ð üs   ‚ABÁA- Á	$BÁ-%BÂBÚFakeTensorModec              #  ó^   #   • U R                   n SU l         S v •  Xl         g ! Xl         f = f7f)NF)Úcache_enabled)Ú	fake_modeÚ	old_values     rL   Údisable_fake_tensor_cacherÉ   ß   s,   é € à×-Ñ-€Ið,Ø"'ˆ	ÔÛà"+Õø )Õüs   ‚-�" ›-¢*ª-c               ó   ^• U /nU(       ar  UR                  5       m[        T5      (       d  UR                  T5        M:  TR                  5       u  p4UR	                  U4S j[        U5       5       5        U(       a  Mr  U$ )Nc              3  ó<   >#   • U  H  n[        TU5      v •  M     g 7frH   )Úgetattr)Ú.0ÚkeyÚcurrs     €rL   Ú	<genexpr>Ú$get_plain_tensors.<locals>.<genexpr>÷   s   øé € ÐGÒ2F¨3”G˜D #×&Ð&Ò2Fùs   ƒ)Úpopr*   ÚappendÚ__tensor_flatten__ÚextendÚreversed)ÚsubclassÚoutÚtodoÚ
inner_keysÚ_rÏ   s        @rL   Úget_plain_tensorsrÜ   é   si   ø€ ð ˆ:€DÞ
Ø�x‰x‹zˆÜ,¨T×2Ñ2Ø�J‰J�tÔÙà×/Ñ/Ó1‰ˆ
Ø�‰ÔG´(¸:Ô2FÓGÔG÷ ˆ$ð €JrN   c                óš   • [        U [        5      (       a  g[        U [        5      =(       a    [        R                  R                  U 5      $ r¸   )Ú
isinstanceÚ
FakeTensorr   rr   rs   Ú_is_fake_tensor©Úxs    rL   Úis_fake_tensorrã   ü   s3   € ä�!”Z× Ñ ØÜ�aœÓ ×@¤U§X¡X×%=Ñ%=¸aÓ%@Ð@rN   c                ó„  • SSK Jn  [        U 5      (       a  g[        U 5      (       a™  [	        U 5      R                  U 5      u  p#S nU Hj  n[        X5      ==[        S` =b(  u   n  [        U5      nUc  UnM/  XG:w  a  [        S5      eMA      =[        S` =b  u     MS    n[        S[	        U5       35      e   U=(       d    S$ [        X5      (       a  [        U R                  5      $ [        U [        5      (       am  [        R                  " U 5      (       aR  [        R                  R!                  5       n	[        R                  R"                  R%                  X	5      n
[        U
5      $ [        U [        5      (       aD  ['        U 5      (       a4  [        R                  R"                  R)                  U 5      n
[        U
5      $ g)Nr   ©ÚFunctionalTensorTrc   z got mixed fake and real tensors!ú(expected Tensor or CustomClassBase, got F)Ú#torch._subclasses.functional_tensorræ   rã   r*   ÚtyperÔ   rÌ   r   Úis_fakeÚAssertionErrorr   rÞ   Úelemrr   Ú_is_functional_tensorrs   Ú$_functionalization_reapply_views_tlsÚ
_functorchÚ_unwrap_functional_tensorr   Úget_unwrapped)râ   ræ   ÚattrsrÛ   Úgot_fakeÚattrÚvÚfakeÚ
unexpectedÚreapply_viewsÚ	unwrappeds              rL   rê   rê     sp  € ÝDä�a×ÑØÜ$ Q×'Ñ'Ü˜“7×-Ñ-¨aÓ0‰ˆØ $ˆÛˆDÜ˜!Ó"Ù"”V–X‘]Ü" 1›:�DØÑ'Ø#'šØ!Ó)Ü,Ð-OÓPÐPñ *ñ	 #ð '”_×&Ùð 'àÜ(ØBÄ4È
ÓCSÐBTÐUóð ñ ð × ˜5Ð Ü	�A×	(Ñ	(Ü�q—v‘v‹ÐÜ	�A”v×	Ñ	¤5×#>Ò#>¸q×#AÑ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!ÓSˆ	Ü�yÓ!Ð!Ü	�A”v×	Ñ	Ô#>¸q×#AÑ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü�yÓ!Ð!ØrN   c                ó|  • SSK Jn  [        U [        5      (       a  U R                  $ [        U 5      (       a…  U R                  5       u  p#S nU Hi  n[        X5      ==[        S` =b'  u   n  [        U5      nUc  UnM/  XGLa  [        S5      eM@      =[        S` =b  u     MR    n[        S[        U5       35      e   U$ [        X5      (       a  [        U R                  5      $ [        U [        5      (       am  [        R                  " U 5      (       aR  [        R                   R#                  5       n	[        R                   R$                  R'                  X	5      n
[        U
5      $ [        U [        5      (       aD  [)        U 5      (       a4  [        R                   R$                  R+                  U 5      n
[        U
5      $ g )Nr   rå   rc   z&All fake tensor modes must be the samerç   )rè   ræ   rÞ   rß   rÇ   r*   rÔ   rÌ   r   Úmaybe_get_fake_moderë   r   ré   rì   rr   rí   rs   rî   rï   rð   r   rñ   )Útræ   Úinner_tensor_namesrÛ   ÚmodeÚt_namerõ   Úmr÷   rø   rù   s              rL   rû   rû   &  so  € ÝDä�!”Z× Ñ Ø�{‰{ÐÜ$ Q×'Ñ'Ø !× 4Ñ 4Ó 6ÑÐØ&*ˆÛ(ˆFÜ˜!Ó$Ù"”V–X‘]Ü+¨AÓ.�AØ‘|Ø šØšÜ,Ð-UÓVÐVñ 'ñ	 #ð '”_×&Ùð 'àÜ(ØBÄ4È
ÓCSÐBTÐUóð ñ )ð ˆÜ	�A×	(Ñ	(Ü" 1§6¡6Ó*Ð*Ü	�A”v×	Ñ	¤5×#>Ò#>¸q×#AÑ#AÜŸ™×EÑEÓGˆÜ—H‘H×'Ñ'×AÑAÀ!ÓSˆ	Ü" 9Ó-Ð-Ü	�A”v×	Ñ	Ô#>¸q×#AÑ#AÜ—H‘H×'Ñ'×5Ñ5°aÓ8ˆ	Ü" 9Ó-Ð-ØrN   c                óF   • [        U [        5      (       a  U R                  $ g rH   )rÞ   rß   Úreal_tensorrá   s    rL   Úmaybe_get_real_tensorr  I  ó   € Ü�!”Z× Ñ Ø�}‰}ÐØrN   c                óF   • [        U [        5      (       a  U R                  $ g rH   )rÞ   rß   Úfake_devicerá   s    rL   Úmaybe_get_fake_devicer  O  r  rN   c                óF   • [        U [        5      (       a  U R                  $ g rH   )rÞ   rß   Úconstantrá   s    rL   Úmaybe_get_fake_constantr
  U  s   € Ü�!”Z× Ñ Ø�z‰zÐØrN   c                óT   • [         R                  R                  U R                  5      $ rH   )rr   rs   Ú_SchemaInfoÚ_schema©r”   s    rL   Úget_schema_infor  [  s   € ä�8‰8×Ñ §¡Ó-Ð-rN   c                ó¾   • SSK Jn  [        R                  R                  nX   R
                  R                  S5      =(       a    X   R                  [        U5      ;   $ )Nr   ©Údecomposition_tableztorch._decomp)	Útorch._decompr  rr   Ú_decompÚdecompositionsrf   Ú
startswithre   Údir)r”   r  r  s      rL   Útorch_decomp_decompositionsr  e  sR   € å1ä—]‘]×1Ñ1€Nð Ñ$×/Ñ/×:Ñ:Øó÷ Dà
Ñ
#×
,Ñ
,´°NÓ0CÑ
CðDrN   c                ó€   • [         R                  U5      nU Vs/ s H  n[        X05      (       d  M  UPM     sn$ s  snf rH   )ÚpytreeÚtree_leavesrÞ   )ÚtyÚtreeÚ	flat_valsrì   s       rL   Útree_flatten_onlyr  r  s1   € Ü×"Ñ" 4Ó(€IÙ&Ó?šY�T¬*°T×*>�D™YÑ?Ð?ùÒ?s   š;²;c                óD  • [        U 5      [        L =(       a‰    U R                  [        R                  :H  =(       ae    U R
                  =(       dM    U R                  =(       d:    [        U 5      =(       d(    [        U 5      =(       d    [        R                  " U 5      (       + $ rH   )
ré   r   Úlayoutrr   ÚstridedÚ	is_sparseÚ	is_nestedr   r   rí   )rü   s    rL   Ú_is_plain_tensorr%  w  sx   € äˆQ‹”6Ð÷ 	
Ø�H‰HœŸ™Ñ%÷	
ð �K‰K÷ .Ø�{‰{÷.ä*¨1Ó-÷.ô ' qÓ)÷.ô ×*Ò*¨1Ó-ô
ð
rN   c                  óö   • \ rS rSr% \  SS j5       rS\S'   S\S'   S\S'   S	S	S
.SS jjrSS jrSS jr	SS jr
SS jrSS jr  SSSSS.               SS jjjr  S            S!S jjrSrg)"ÚFakeTensorConverteri‰  c                ó.   • U R                   R                  $ rH   )Úmeta_converterÚtensor_memor~   s    rL   r*  ÚFakeTensorConverter.tensor_memoŠ  s   € ð ×"Ñ"×.Ñ.Ð.rN   zMetaConverter[FakeTensor]r)  z5dict[StorageWeakRef, list[ReferenceType[FakeTensor]]]Úconstant_storage_mappingÚboolÚexportF©Ú	copy_datar.  c               ó:   • [        US9U l        X l        0 U l        g )N)r0  )r    r)  r.  r,  )r   r0  r.  s      rL   r€   ÚFakeTensorConverter.__init__–  s   € Ü+°iÑ@ˆÔØŒð )+ˆÕ%rN   c                óD  • [        U[        5      (       a  UR                  c  [        S5      e[	        UR                  R                  5       5      nX R                  ;  a  / U R                  U'   U R                  U   R                  [        R                  " U5      5        g )Nz0fake_tensor must be a FakeTensor with a constant)
rÞ   rß   r	  rë   r%   Ú_typed_storager,  rÓ   r´   Úref)r   Úfake_tensorÚweak_sts      rL   Úadd_constant_storage_mappingÚ0FakeTensorConverter.add_constant_storage_mapping�  s‰   € ô
 ØœZ÷ñ ð ×#Ñ#Ñ+ä Ð!SÓTÐTÜ  ×!5Ñ!5×!DÑ!DÓ!FÓGˆð
 ×7Ñ7Ó7Ø57ˆD×)Ñ)¨'Ñ2Ø×%Ñ% gÑ.×5Ñ5´g·k²kÀ+Ó6NÕOrN   c                ó"  • [        U[        5      (       a  [        S5      e[        UR	                  5       5      nX R
                  ;  a  g U R
                  U    H&  nU" 5       nUc  M  UR                  5         S Ul        M(     U R
                  U	 g )Nz(Expected a real tensor, not a FakeTensor)rÞ   rß   rë   r%   r4  r,  Ú_fix_weakrefr	  )r   Útensorr7  Úweak_tensor_refÚtens        rL   Úinvalidate_constant_aliasesÚ/FakeTensorConverter.invalidate_constant_aliases±  sƒ   € Ü�fœj×)Ñ)Ü Ð!KÓLÐLä  ×!6Ñ!6Ó!8Ó9ˆØ×7Ñ7Ó7Øà#×<Ñ<¸WÔEˆOÙ!Ó#ˆCØ‹à× Ñ Ô"Ø#�–ñ  Fð ×)Ñ)¨'Ñ2rN   c                ó†  • [        U R                  R                  5       5       Hš  u  p/ nSnU H>  nU" 5       nUb  UR                  c  M  UR	                  U5        Ub  M2  UR                  nM@     Uc  U R                  U	 M_  UR
                  R                  S:X  a  X0R                  U'   M‰  U R                  U5        Mœ     g)zFClear non-CPU constants while keeping cheap CPU constants for folding.NÚcpu)Úlistr,  r»   r	  rÓ   r–   ré   r?  )r   r7  Úweak_tensor_refsÚlive_tensor_refsr	  r=  r>  s          rL   Úclear_non_cpu_constantsÚ+FakeTensorConverter.clear_non_cpu_constantsÂ  s³   € ä)-¨d×.KÑ.K×.QÑ.QÓ.SÖ)TÑ%ˆGØ@BÐØ&*ˆHÛ#3�Ù%Ó'�Ø‘; #§,¡,Ñ"6Ùà ×'Ñ'¨Ô8ØÓ#Ø"Ÿ|™|’Hñ $4ð ÑØ×1Ñ1°'Ò:Ø—‘×%Ñ%¨Ó.Ø9I×-Ñ-¨gÓ6à×0Ñ0°Ö:ò# *UrN   c                óž   • U R                   R                  R                  R                  U5      nUc  g U R                  R                  U5      $ rH   )r)  Ú	describerÚlookup_tensorÚgetr*  )r   rü   Útids      rL   Ú	_get_memoÚFakeTensorConverter._get_memo×  sC   € Ø×!Ñ!×+Ñ+×9Ñ9×=Ñ=¸aÓ@ˆØ‰;ØØ×Ñ×#Ñ# CÓ(Ð(rN   c                ó~   • U R                   R                  R                  U5      nX R                   R                  U'   g rH   )r)  rI  Úget_tensor_idr*  )r   rü   rõ   rL  s       rL   Úset_tensor_memoÚ#FakeTensorConverter.set_tensor_memoÝ  s2   € Ø×!Ñ!×+Ñ+×9Ñ9¸!Ó<ˆØ/0×Ñ×'Ñ'¨Ò,rN   NT)ÚsourceÚsymbolic_contextÚtracec          	     ó¶	  ^^• U(       d”  U(       d�  U(       a†  [         R                  R                  R                  5       =n(       aW  X(R                  ;   aH  UR                  U   nSSKJn	  [        Xi5      (       d  [        S[        U5       35      eUR                  nU R                  U5      n
U
bH  UR                  (       a5  U
R                  (       d$  [         R                  R                  U5      U
l        U
$ UR                   (       a  [#        S5      e[        U5      [         R$                  R&                  L a  U(       a  [        S5      eU(       a  UOS m      SUU4S jjnU R)                  UUUUUUS9nU[*        L a  [#        S5      eUR                  (       a$  [         R                  R                  U5      Ul        [        U[         R,                  R.                  R0                  5      (       a   [         R2                  " UR4                  5      OUnUR6                  (       aM  UR8                  (       a<  UR:                  UR<                  :w  a"  UR8                  (       a  UR:                  Ul        SS	KJ n  S nU RB                  (       Gd  [E        U5      (       Ga  URG                  5       S:X  Ga÷  URH                  R                  S
:X  GaÜ  UR<                  [         RJ                  [         RL                  [         RN                  [         RP                  [         RR                  4;   Ga€  Uc8  TRT                  Gco  [         R                  R                  R                  5       GcE  Ub  [        X^5      (       Gd1  Ub  UGb*  SSKJ+nJ,n  SSKJ-n  []        5          UR_                  5       nS S S 5        [`        Rb                  " U5      (       dÞ  [`        Rd                  " U5      (       dÃ  Uc  Xül3        O¹Uc  [        S5      e[        UU5      (       a  URh                  nOU" U5      nURk                  UUURl                  US9nUR<                  [         RJ                  :X  a  URo                  UUUS9Ul3        O4UR<                  [         RR                  :X  a  URq                  UUUS9Ul3        U(       a  U Rs                  U5        U$ ! , (       d  f       GN"= f)Nr   )ÚStatefulSymbolicContextz&Expected StatefulSymbolicContext, got zquantized nyi in meta tensorsz,make_constant must be False for nn.Parameterc                óp   >• [        5          [        TU " 5       UTS9sS S S 5        $ ! , (       d  f       g = f)N©r	  )r)   rß   )Úmake_meta_tr–   r	  rÇ   s     €€rL   Úmk_fake_tensorÚ<FakeTensorConverter.from_real_tensor.<locals>.mk_fake_tensor  s,   ø€ ô •Ü!Øá“Màð &ñ	÷ ——ús   Œ'§
5)Ú	shape_envÚcallbackrS  rT  rU  zmeta converter nyi)ÚRandomValueSourcerB  )ÚCallMethodItemSourceÚFloatTensorSource)Ú
DimDynamiczshape_env unexpectedly missing)rS  Údynamic_dimrT  )ÚhintrS  )rZ  zCallable[[], object]r–   ztorch.device | strr‡   rß   ):rr   Ú_guardsÚTracingContextÚtry_getÚtensor_to_contextÚ%torch.fx.experimental.symbolic_shapesrW  rÞ   rë   ré   Útensor_sourcerM  Ú	is_mkldnnrs   Ú_dispatch_keysrK   Úis_quantizedrŠ   ÚnnÚ	Parameterr)  ÚNotImplementedÚ_subclassesÚfunctional_tensorræ   Ú_from_functional_tensorrì   Úrequires_gradÚis_leafÚ
grad_dtypeÚdtypeÚtorch._dynamo.sourcer_  r.  r%  Údimr–   Úint64Úint32Úint16Úint8Úfloat64r]  r`  ra  rb  r)   ÚitemÚmathÚisnanÚisinfÚ	item_memoÚbaseÚcreate_unspecified_symbolÚDYNAMICÚcreate_symintnodeÚcreate_symfloatnoder8  )r   rÇ   rü   Úmake_constantr]  rS  rT  rU  Útracing_contextrW  Ú
maybe_memor[  rØ   Úinner_tr_  Úvaluer`  ra  rb  Úitem_sourceÚsymbolr	  s    `                   @rL   Úfrom_real_tensorÚ$FakeTensorConverter.from_real_tensorç  sÔ  ù€ ö  ®¶9Ü"'§-¡-×">Ñ">×"FÑ"FÓ"HÐHˆÕHØ×9Ñ9Ó9Ø'6×'HÑ'HÈÑ'KÐ$õô &Ð&6×PÑPÜ,ØDÄTÐJZÓE[ÐD\Ð]óð ð .×;Ñ;�Fà—^‘^ AÓ&ˆ
ØÑ!Ø�{�{ :×#7×#7Ü+0¯8©8×+BÑ+BÀ1Ó+E�
Ô(ØÐà�>�>Ü0Ð1PÓQÐQÜ�‹7”e—h‘h×(Ñ(Ò(ÞÜ$Ð%SÓTÐTæ%‘1¨4ˆð
	Ø-ð	Ø7Ið	à÷	ð 	ð, ×!Ñ!ØØØ#ØØ-Øð "ð 
ˆð ”.Ò Ü0Ð1EÓFÐFØ�;�;Ü %§¡× 7Ñ 7¸Ó :ˆCÔô ˜!œU×.Ñ.×@Ñ@×QÑQ×RÑRô ×)Ò)¨!¯&©&Ô1àð 	ð ×!×!Ø——Ø×"Ñ" g§m¡mÓ3Ø——à$×/Ñ/ˆCŒNå:àˆà——�Ü  ×#Ò#Ø—‘“˜1”Ø—‘—‘ Ô&ð —‘Ü—‘œUŸ[™[¬%¯+©+´u·z±zÄ5Ç=Á=ÐQôRð Ñ"à×'Ñ'Ò/ÜŸ™×4Ñ4×<Ñ<Ó>ÒFð( ‘¤z°&×'LÒ'Lð ‘ 9Ò#8çTÝHä•ØŸ™›�÷ ä—:’:˜e×$Ñ$¬T¯ZªZ¸×->Ñ->Ø‘>ð %*•Mà Ñ(Ü,Ð-MÓNÐNä! &Ð*;×<Ñ<Ø&,§k¡k™á&:¸6Ó&B˜Ø&×@Ñ@ØØ*Ø$.×$6Ñ$6Ø)9ð	 Að �Fð —w‘w¤%§+¡+Ó-Ø(1×(CÑ(CØ"Ø!&Ø#.ð )Dð )˜�ð
 Ÿ™¤E§M¡MÓ1Ø(1×(EÑ(EØ"Ø!&Ø#.ð )Fð )˜œö
 Ø×-Ñ-¨cÔ2àˆ
÷M –ús   ÎS	Ó	
Sc                óä   • UR                   R                  S:w  a#  [        SUR                   R                   S35      eU R                  U5      nUb  U$ [	        XX4US9nU R                  X'5        U$ )NÚmetaz$tensor's device must be `meta`, got z instead)ÚpytyperK   )r–   ré   rë   rM  rß   rQ  )r   rÇ   rü   r–   r”  rK   r‹  rØ   s           rL   Úfrom_meta_and_deviceÚ(FakeTensorConverter.from_meta_and_device©  sw   € ð �8‰8�=‰=˜FÓ"Ü Ø6°q·x±x·}±}°oÀXÐNóð ð
 —^‘^ AÓ&ˆ
ØÑ!ØÐÜØ˜&¸}ñ
ˆð 	×Ñ˜QÔ$Øˆ
rN   )r,  r.  r)  )r‡   zRweakref.WeakValueDictionary[torch._subclasses.meta_utils.MetaTensorId, FakeTensor])r0  r-  r.  r-  r‡   rˆ   )r6  rß   r‡   rˆ   )r<  r   r‡   rˆ   r†   )rü   r   r‡   úFakeTensor | None)rü   r   rõ   rß   r‡   rˆ   )FN)rÇ   rÄ   rü   r   r‰  r-  r]  úShapeEnv | NonerS  úSource | NonerT  úSymbolicContext | NonerU  r-  r‡   rß   )NN)rÇ   rÄ   rü   r   r–   rš   r”  ztype[torch.Tensor] | NonerK   útorch.DispatchKeySet | Noner‡   rß   )re   rf   rg   rh   Úpropertyr*  ri   r€   r8  r?  rF  rM  rQ  r�  r•  rj   rc   rN   rL   r'  r'  ‰  s  ‡ Øð/ð
ó/ó ð/ð .Ó-ØSÓSØƒLà,1À%÷ +ôPô(3ô";ô*)ô1ð $Ø%)ðð !%Ø37Øñà!ðð ðð ð	ð
 #ðð ðð 1ðð ðð 
öðN -1Ø59ðà!ðð ðð ð	ð
 *ðð 3ðð 
÷ð rN   r'  c                óê   • [         R                  R                  S5      U R                  :X  aF  [         R                  R
                  c  [         R                  " SU S9O[         R                  " SU S9  g g )NTr5   ©r–   )rr   ÚacceleratorÚcurrent_acceleratorré   ÚversionÚhipÚemptyÚzerosrž  s    rL   Úinit_gpu_contextr¥  Á  sX   € ô ×Ñ×,Ñ,¨TÓ2°f·k±kÓAô �}‰}× Ñ Ñ(ô �KŠK˜ &Ò)ä—’˜Q vÑ.ùð	 BrN   c              #  óä  #   • U R                   n[        R                  R                  5       nX!:w  a  [	        U SU 35      e[        R                  R                  5          SU l         [        R                  R                  5          [        R                  R                  S5         S v •  Xl          S S S 5        S S S 5        g ! Xl         f = f! , (       d  f       N"= f! , (       d  f       g = f7f)Nú, T)Úin_kernel_invocationrr   rs   Ú_meta_in_tls_dispatch_includerë   Ú_DisableTorchDispatchÚ_PreserveDispatchKeyGuardÚ!_set_meta_in_tls_dispatch_include)rÇ   Úprev_in_kernelÚmeta_in_tlss      rL   Úin_kernel_invocation_managerr¯  Ì  sµ   é € ð
 ×3Ñ3€NÜ—(‘(×8Ñ8Ó:€KØÓ$Ü ˜}¨B¨~Ð.>Ð?Ó@Ð@ä	�‰×	'Ñ	'Õ	)Ø)-ˆ	Ô&ô �X‰X×/Ñ/Õ1Ü�H‰H×6Ñ6°tÔ<ð@Ûà1?Õ.÷ 2÷	 
*Ð	)øð 2@Õ.ú÷ 2Õ1ú÷	 
*Õ	)üsN   ‚AC0Á &CÂ CÂ'CÂ+CÂ2CÂ:	C0ÃCÃCÃ
C	ÃCÃ
C-Ã)C0c                ó¤   • [         R                  R                  U R                  5       R	                  S5      S   R	                  S5      S   5      $ )Nz::éÿÿÿÿÚ.r   )rr   rs   Ú _should_allow_numbers_as_tensorsÚnameÚsplitr  s    rL   Úshould_allow_numbers_as_tensorsr¶  ä  sB   € Ü�8‰8×4Ñ4Ø�	‰	‹×Ñ˜$Ó Ñ#×)Ñ)¨#Ó.¨qÑ1óð rN   c                  óR   • \ rS rSr\R
                  R                  SS5      S:H  rSrg)ÚFakeTensorConfigiê  ÚTORCH_FAKE_TENSOR_DEBUGÚ0Ú1rc   N)	re   rf   rg   rh   ÚosÚenvironrK  Údebugrj   rc   rN   rL   r¸  r¸  ê  s   † Ø�J‰J�N‰NÐ4°cÓ:¸cÑAƒErN   r¸  c                  ó”   • \ rS rSr% S\S'   S\S'   SS.SS jjrSS	 jrSS
 jrSS jrSS jr	 S     SS jjr
      SS jrSrg)ÚSymNumberMemoDescriptoriù  rŒ   Ú_namer-  Ú_is_nested_intF©Úis_nested_intc               ó   • Xl         g rH   )rÂ  )r   rÄ  s     rL   r€   Ú SymNumberMemoDescriptor.__init__  s   € Ø+ÕrN   c                ó   • X l         g rH   ©rÁ  )r   Úownerr´  s      rL   Ú__set_name__Ú$SymNumberMemoDescriptor.__set_name__  s   € Ø�
rN   c                ó    • SU R                    3$ )NrÛ   rÈ  ©r   Úobjs     rL   Ú_memoÚSymNumberMemoDescriptor._memo	  s   € Ø�4—:‘:�,ÐÐrN   c                ó"   • SU R                    S3$ )NrÛ   Ú_vcrÈ  rÍ  s     rL   Ú_memo_vcÚ SymNumberMemoDescriptor._memo_vc  s   € Ø�4—:‘:�,˜cÐ"Ð"rN   c                ó"   • SU R                    S3$ )NrÛ   Ú_epochrÈ  rÍ  s     rL   Ú_memo_epochÚ#SymNumberMemoDescriptor._memo_epoch  s   € Ø�4—:‘:�,˜fÐ%Ð%rN   Nc                óH  • [        XR                  U5      5      =nc  g U R                  (       dZ  UR                  5       (       dE  [        XR	                  U5      S 5      UR
                  :w  a  [        XR                  U5      S 5        g [        U[        R                  5      (       a  UR                  R                  b  U$ U R                  (       dO  [        XR                  U5      S 5      UR                  R                  :w  a  [        XR                  U5      S 5        g U$ rH   )rÌ   rÏ  rÂ  Úis_inferencerÓ  Ú_versionÚsetattrrÞ   rr   r   Únoderd  r×  rÇ   Úepoch)r   rÎ  ÚobjtypeÚrs       rL   Ú__get__ÚSymNumberMemoDescriptor.__get__  s×   € ô ˜Ÿj™j¨›oÓ.Ð.ˆAÑ7Øð
 ×"×"¨3×+;Ñ+;×+=Ñ+=Ü�sŸM™M¨#Ó.°Ó5¸¿¹ÓEÜ˜ŸZ™Z¨›_¨dÔ3Øô �aœŸ™×(Ñ(¨Q¯V©V¯[©[Ñ-DØˆHð ×#×#Ü˜×-Ñ-¨cÓ2°DÓ9¸S¿]¹]×=PÑ=PÓPä�CŸ™ C›¨$Ô/ØàˆrN   c                óØ  • UcR  [        XR                  U5      S 5        [        XR                  U5      S 5        [        XR                  U5      S 5        g [        XR                  U5      U5        U R                  (       d:  UR                  5       (       d%  [        XR                  U5      UR                  5        [        XR                  U5      UR                  R                  5        g rH   )	rÜ  rÏ  rÓ  r×  rÂ  rÚ  rÛ  rÇ   rÞ  )r   rÎ  r�  s      rL   Ú__set__ÚSymNumberMemoDescriptor.__set__2  s¢   € ð
 ‰=Ü�CŸ™ C›¨$Ô/Ü�CŸ™ sÓ+¨TÔ2Ü�C×)Ñ)¨#Ó.°Õ5ä�CŸ™ C›¨%Ô0Ø×&×&¨s×/?Ñ/?×/AÑ/AÜ˜Ÿ]™]¨3Ó/°·±Ô>Ü�C×)Ñ)¨#Ó.°·±×0CÑ0CÕDrN   )rÂ  rÁ  )rÄ  r-  r‡   rˆ   )rÉ  rŒ   r´  rŒ   r‡   rˆ   )rÎ  rß   r‡   rŒ   rH   )rÎ  rß   rß  ztype[FakeTensor] | Noner‡   z$torch.SymInt | torch.SymFloat | None)rÎ  rß   r�  zBtorch.SymInt | torch.SymFloat | torch.SymBool | int | float | Noner‡   rˆ   )re   rf   rg   rh   ri   r€   rÊ  rÏ  rÓ  r×  rá  rä  rj   rc   rN   rL   rÀ  rÀ  ù  su   ‡ ØƒJð Óà05÷ ,ôô ô#ô&ð CGðØðØ(?ðà	-õð8EàðEð RðEð 
÷	ErN   rÀ  c                  óê  ^ • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   \" 5       rS
\S'   \" 5       r\" 5       r	S
\S'   \" 5       r
S
\S'   \" SS9rS\S'   S\S'   \R                  R                  R                  r\S+S j5       r\S,S j5       r S-SS.     S.S jjjr\S/S j5       r\R,                  S0S j5       r\S/S j5       r\R,                  S1S j5       r\S2S j5       r\       S3SSSSSS.                           S4S  jjj5       rS5U 4S! jjr\S6S" j5       r\\S#\" 5       4         S7S$ jj5       5       r \      S8S% j5       r!S&S'.   S9S( jjr"S:S) jr#S*r$U =r%$ );rß   iB  aT  
Meta tensors give you the ability to run PyTorch code without having to
actually do computation through tensors allocated on a `meta` device.
Because the device is `meta`, meta tensors do not model device propagation.
FakeTensor extends MetaTensors to also carry an additional `fake_device`
which tracks devices that would have been used.
rš   Ú_fake_devicerÄ   rÇ   úTensor | Noner	  r  z$SymNumberMemoDescriptor | int | NoneÚnonzero_memoÚunique_memoÚunique_consecutive_memoTrÃ  útype[Tensor] | Noner”  r›  rK   c                ó,   • [        U R                  5      $ rH   )rM   rK   r~   s    rL   rk  ÚFakeTensor.is_mkldnni  s   € ô )¨×);Ñ);Ó<Ð<rN   c                ó–   • U R                   (       a  [        R                  $ [        R                  R                  U [        U 5      5      $ rH   )rk  rr   Ú_mkldnnr   r!  rá  ré   r~   s    rL   r!  ÚFakeTensor.layoutn  s0   € ð �>�>Ü—=‘=Ð Ü�}‰}×$Ñ$ T¬4°«:Ó6Ð6rN   N)Úmasked_gradc               ó²   • U R                   (       a2  [        R                  R                  R                  R                  XUS9$ [        R                  " XUS9$ )N©rw  rò  )rk  rr   ÚopsÚatenÚ	_to_denseÚdefaultr   Úto_dense)r   rw  rò  s      rL   rù  ÚFakeTensor.to_denseu  sI   € ð �>�>Ü—9‘9—>‘>×+Ñ+×3Ñ3Ø¨{ð 4ð ð ô �Š˜t¸kÑJÐJrN   c                ó|   • U R                   R                  (       a  [        R                  " S5      $ U R                  $ ©Nr“  )rÇ   r¨  rr   r–   r  r~   s    rL   r–   ÚFakeTensor.device�  s,   € ð �>‰>×.×.Ü—<’< Ó'Ð'à×#Ñ#Ð#rN   c                ó   • [         erH   )ÚNotImplementedError)r   rÛ   s     rL   r–   rý  ‰  s   € ä!Ð!rN   c                ó   • U R                   $ rH   )rç  r~   s    rL   r  ÚFakeTensor.fake_device�  s   € à× Ñ Ð rN   c                ó0   • U R                  U5      U l        g rH   )Ú_normalize_fake_devicerç  )r   r–   s     rL   r  r  ‘  s   € à ×7Ñ7¸Ó?ˆÕrN   c                óä  • U R                   S;   a  [        U 5        [        U R                   5      (       aº  U R                  c­  U R                   S:w  az  [	        [
        U R                   5      R                  5       (       aM  [
        R                  " U R                    S[	        [
        U R                   5      R                  5        35      n U $ [
        R                  " U R                    S35      n U $ )zFNormalize device by initializing GPU context and setting device index.)rm   ro   rp   Ú:z:0)	ré   r¥  rv   ÚindexrÌ   rr   Úis_initializedr–   Úcurrent_devicerž  s    rL   r  Ú!FakeTensor._normalize_fake_device¤  s±   € ð �;‰;˜/Ó)Ü˜VÔ$ä" 6§;¡;×/Ñ/°F·L±LÑ4HØ�{‰{˜eÓ#¬´°v·{±{Ó(C×(RÑ(R×(TÑ(TÜŸšØ—{‘{�m 1¤W¬U°F·K±KÓ%@×%OÑ%OÓ%QÐ$RÐSó�ð
 ˆô Ÿš¨¯©¨°RÐ&8Ó9�ØˆrN   F)rÇ   r  rç  rt  Ú	_is_paramc               ó(  • [        [        [        [        4   U5      n[         H  nUR                  US 5        M     U(       a#  [        [        U5      5      n[        SU< 35      e[        U[        5      (       a  Ub  X�La  [        S5      eUnOMUb<  [        U[        5      (       d  [        S[        U5       35      eUb  [        S5      eUnUc  [        S5      eUc  [        S5      eSU4SU	4S	U
44 VVs/ s H6  u  nnUc  M  U[        R                  [        R                   " U5      5      4PM8     nnnU(       a7  US
   u  nnUSS   H#  u  nnUU:w  d  M  [#        SU SU SU SU 35      e   UnO[        S5      e[        R$                  " U UUc  UR&                  OUSUS9nUR(                  (       d   [        R*                  R-                  U5        O[        R*                  R/                  U5        UR                   R                  S:w  a"  [1        SUR                   R                   35      eUR2                  (       d  UR                  S:X  a  [1        S5      eUUl        UUl        UUl        UUl        UUl        [        U[        5      (       a  [1        S5      eUUl        S Ul         S Ul!        S Ul"        S Ul#        S Ul$        U(       a  UUl%        [L        RN                  (       a  [P        RR                  " 5       Ul*        U$ s  snnf )Nz8FakeTensor.__new__() got an unexpected keyword argument z5FakeTensor.__new__() got conflicting fake_mode valueszTFakeTensor.__new__() expected a FakeTensorMode or Tensor as the first argument, got zYFakeTensor.__new__() expected either (fake_mode, elem, ...) or (elem, fake_mode=..., ...)z;FakeTensor.__new__() missing required argument: 'fake_mode'z6FakeTensor.__new__() missing required argument: 'elem'r–   r  rç  r   r5   z4FakeTensor.__new__() got conflicting device values: Ú=r§  zKFakeTensor.__new__() missing required argument: 'device' (or 'fake_device')T)Údispatch_deviceÚdevice_for_backend_keysr“  z%elem.device.type must be 'meta', got z7device.type must not be 'meta' when allow_meta is Falsez$real_tensor must not be a FakeTensor)+r   r¹   rŒ   rR   Ú,_FAKE_TENSOR_CONSTRUCTOR_IGNORED_STATE_ATTRSrÒ   ÚnextÚiterÚ	TypeErrorrÞ   rÄ   r   ré   rß   r  rr   r–   Ú
ValueErrorÚ_make_subclassrt  Ú_allow_unsafe_data_ptr_accessrs   Ú_set_throw_on_mutable_data_ptrÚ(_set_warn_deprecated_on_mutable_data_ptrrë   Ú
allow_metar  rÇ   r	  r”  rK   r  ré  rƒ  rê  rë  Únested_int_memor
  r¸  r¾  r4   Úextractrb   )ÚclsÚfake_mode_or_elemrì   r–   r	  r  r”  rK   rÇ   r  rç  rt  r
  ÚstateÚ
state_dictÚ	attr_namer÷   r´  r�  Úspecified_devicesÚ
first_nameÚresolved_deviceÚcandidate_devicer   s                           rL   Ú__new__ÚFakeTensor.__new__³  sH  € ô$ œ$œs¤F˜{Ñ+¨UÓ3ˆ
ßEˆIØ�N‰N˜9 dÖ+ñ FæÜœd :Ó.Ó/ˆJÜØJØ‘.ð"óð ô
 Ð'¬×8Ñ8ØÑ$¨Ò)KÜÐ WÓXÐXØ)‰Ið !Ñ,Ü!Ð"3´V×<Ñ<Ü#ð6Ü6:Ð;LÓ6MÐ5NðPóð ð Ñ#Ü#ðOóð ð )�ØÑ ÜØQóð ð ‰<ÜÐTÓUÐUð
 ˜6Ð"Ø Ð,Ø Ð.ñ ô
ò ‘��eð
 ó KˆT”:×4Ñ4´U·\²\À%Ó5HÓIÓJñ ð 	ñ 
ö Ø*;¸AÑ*>Ñ'ˆJ˜Ø*;¸A¸BÓ*?Ñ&�Ð&Ø"Ð&6Õ6Ü$ØNØ%˜, a¨Ð'8¸¸4¸&ÀÐBRÐASðUóð ñ +@ð %‰Fäð.óð ô
 ×$Ò$ØØØ"/Ñ"7ˆD×Ò¸]Ø Ø$*ñ
ˆð ×6×6Ü�H‰H×3Ñ3°DÕ9ä�H‰H×=Ñ=¸dÔCà�;‰;×Ñ˜vÓ%Ü Ø7¸¿¹×8HÑ8HÐ7IÐJóð ð ×#×#Ø�{‰{˜fÓ$Ü$ØMóð ð "ˆÔØ"ˆŒØ ˆŒØˆŒØ*ˆÔÜ�k¤:×.Ñ.Ü Ð!GÓHÐHØ&ˆÔØ ˆÔØˆŒØˆÔØ'+ˆÔ$Ø#ˆÔæØ&ˆDŒNä×!×!Ü 1× 9Ò 9Ó ;ˆDÔØˆùóO
s   Ã:
LÄ/Lc                óü   >• [         TU ]  5         [        R                  R	                  5       (       aJ  [        R
                  R                  R                  (       a   [        R                  R                  U 5        g g g rH   )r—   r€   rr   ÚcompilerÚis_exportingÚ_exportÚconfigÚ#detect_non_strict_fake_tensor_leaksÚfake_tensor_tlsr²   Úadd)r   ÚargsÚkwargsr˜   s      €rL   r€   ÚFakeTensor.__init__E  sS   ø€ Ü‰ÑÔä�N‰N×'Ñ'×)Ñ)Ü—‘×$Ñ$×H×Hä×AÑA×EÑEÀdÕKð Ið *rN   c                ó$   • UR                  U 5      $ rH   )Úfrom_tensor)rü   rÇ   s     rL   r2  ÚFakeTensor.from_tensorM  s   € à×$Ñ$ QÓ'Ð'rN   rc   c                ó:  • U[         R                  R                  R                  R                  L au  [        U5      S:w  d  [        US   [        5      (       d  [        S5      eUS   R                  R                  (       a  [         R                  " S5      $ US   R                  $ [        R                  U5      =n(       a  U" U5      $ U Vs/ s H'  n[        U[        5      (       a  M  U[        Ld  M%  UPM)     nnU(       a  [         R#                  SU5        [$        $ S n[&        R(                  " U0 UD6 H&  n	[        U	[        5      (       d  M  U	R                  n  O   Uc  [        S5      e[         R*                  R-                  [         R*                  R.                  R0                  5      n
U
(       a  [         R#                  SUU
5        [$        $ UR                  (       a  [        S5      eU   U" U0 UD6sS S S 5        $ s  snf ! , (       d  f       g = f)	Nr5   r   z@Expected exactly one FakeTensor argument for prim.device.defaultr“  z(FakeTensor unrecognized subclass(es): %sz,Could not find a FakeTensor in the argumentsz(FakeTensor mode already active: %s in %sz,fake_mode.in_kernel_invocation must be False)rr   rõ  Úprimr–   rø  ÚlenrÞ   rß   rë   rÇ   r¨  r  Ú_DISPATCH_META_HANDLERSrK  Ú
issubclassr   Únot_implemented_logr¾  rp  r  Úarg_tree_leavesrs   Ú_get_dispatch_moder¿   rÀ   )r  r”   Útypesr.  r/  Úhandlerrü   Úunrecognized_typesrÇ   ÚargÚmaybe_cur_fake_modes              rL   Ú__torch_dispatch__ÚFakeTensor.__torch_dispatch__Q  sÆ  € ð ”5—9‘9—>‘>×(Ñ(×0Ñ0Ò0Ü�4‹y˜A‹~¤Z°°Q±¼×%DÑ%DÜ$ØVóð ð �A‰w× Ñ ×5×5Ü—|’| FÓ+Ð+à˜A‘w×*Ñ*Ð*ô .×1Ñ1°$Ó7Ð7ˆ7Õ7Ù˜4“=Ð ñ ó
Ú�!¤J¨q´*×$=‹AÀ!Ì6À/�A‘uð 	ð 
ö Ü×%Ñ%Ø:Ð<Nôô "Ð!àˆ	Ü×)Ò)¨4Ð:°6Ô:ˆCÜ˜#œz×*Ó*ØŸM™M�	Ùñ ;ð
 ÑÜ Ð!OÓPÐPô $Ÿh™h×9Ñ9Ü�H‰H×*Ñ*×/Ñ/ó
Ðö Ü×%Ñ%Ø:ØØ#ôô
 "Ð!à×)×)Ü Ð!OÓPÐPâÙ˜Ð( Ñ(÷ ‰YùòO
÷N �Yús   ÃHÃ,HÃ7HÇ5HÈ
Hc           
     óØ  ^ ^^^^^	^
^^• S mSnS m[        [        R                  R                  5      m[        [        R                  R
                  5      m[        [        R                  R                  5      mS	S jm	S	S jm
S
U	4S jjmSUUUU UU	U
UU4	S jjnU H  nU" U5        M     [        T 5      (       a  Tc  Sn[        R                  " S5      mTc  [        ST  35      eTU4$ )NFc                ó    • U R                   S:H  $ )NrB  ©ré   rž  s    rL   Úis_device_cpuÚ5FakeTensor._find_common_device.<locals>.is_device_cpu¾  s   € Ø—;‘; %Ñ'Ð'rN   c                ó    • U R                   S:H  $ rü  rE  rž  s    rL   Úis_device_metaÚ6FakeTensor._find_common_device.<locals>.is_device_metaÁ  s   € Ø—;‘; &Ñ(Ð(rN   c                ó\   >• T" U R                   5      =(       a    U R                  5       S:H  $ ©Nr   )r–   ry  )rü   rF  s    €rL   Úcpu_zero_dimÚ4FakeTensor._find_common_device.<locals>.cpu_zero_dimÄ  s!   ø€ Ù  §¡Ó*×;¨q¯u©u«w¸!©|Ð;rN   c                óÜ  >	• [        U [        5      (       d  g Tc  U R                  mT" U 5      m
g T" U 5      nU R                  T:X  a
  T
(       a  Um
g T	T;   nU(       a  U(       d  g T
(       a  U(       d  U R                  mUm
g T	T;   a'  [        [	        TTU R                  45      5      (       a  g T	T;   a'  [        [	        TTU R                  45      5      (       a  g [
        R                  R                  R                  nUbS  UTR                  ;   nX0R                  R                  ;   nU(       d  U(       a  U R                  mUm
g U(       a  U(       d  g [        T	TU R                  5      erH   )rÞ   rß   r–   ÚanyÚmaprr   rï   r*  Úfake_tensor_prefer_device_typeré   r�   )rü   Út_is_cpu_zero_dimÚ&is_bypass_zero_dim_cpu_tensor_check_opÚprefer_device_typeÚcommon_has_preferredÚt_has_preferredÚ$bypass_zero_dim_cpu_tensor_check_opsr•   rM  r”   Úis_cpu_zero_dimrF  rI  Úmeta_rhs_mixed_device_fnsÚmixed_device_fnss         €€€€€€€€€rL   Úmerge_devicesÚ5FakeTensor._find_common_device.<locals>.merge_devicesÇ  sI  ø€ ô ˜a¤×,Ñ,ØàÑ$Ø !§¡�Ù".¨q£/�Øá ,¨Q£ÐØ�x‰x˜=Ó(Þ"Ø&7�OØð Ð<Ñ<ð 3ö !Ö)OØö Ö'MØ !§¡�Ø"3�Øð Ð'Ó'Ü”s˜=¨=¸!¿(¹(Ð*CÓD×EÑEØàÐ0Ó0Ü”s˜>¨M¸1¿8¹8Ð+DÓE×FÑFØô "'×!1Ñ!1×!8Ñ!8×!WÑ!WÐØ!Ñ-Ø'9¸]×=OÑ=OÑ'OÐ$Ø"4¿¹¿¹Ñ"E�æ+¶à$%§H¡H�MØ&7�OØÞ)¶/àô 0°°mÀQÇXÁXÓNÐNrN   TrB  z!Could not find common device for )r–   rš   r‡   r-  ©rü   r   r‡   r-  )rü   rR   r‡   rˆ   )r¼   rö  Ú_foreach_copyrø  Úadd_r   Ú	nextafterr¶  rr   r–   rë   )r”   Ú	flat_argsÚhas_scalar_only_inputsr\  r?  rX  r•   rM  rY  rF  rI  rZ  r[  s   `    @@@@@@@@rL   Ú_find_common_deviceÚFakeTensor._find_common_device¡  sá   ÿø€ ð ˆØ!&ÐØˆô 'Ü×Ñ×&Ñ&ó
Ðô %0Ü�I‰I×Ñó%
Ð!ô
 0;Ü�N‰N×"Ñ"ó0
Ð,ô	(ô	)÷	<÷=	O÷ =	Oó~ ˆCÙ˜#Öñ ô +¨4×0Ñ0°]Ñ5Jà%)Ð"Ü!ŸLšL¨Ó/ˆMàÑ Ü Ð#DÀTÀFÐ!KÓLÐLàÐ4Ð4Ð4rN   r5   )Úcoeffc               ó
  • U R                   c  U R                  R                  S S9U l         [        U R                   [        R
                  5      (       d!  [        S[        U R                   5       35      eU R                   U-  $ )N©Únt_tensor_idz1Expected nested_int_memo to be torch.SymInt, got )r  rÇ   Úcreate_symbolic_nested_intrÞ   rr   r   rë   ré   )r   rf  s     rL   Úget_nested_intÚFakeTensor.get_nested_int  s   € ð
 ×ÑÑ'Ø#'§>¡>×#LÑ#LØ!ð $Mð $ˆDÔ ô ˜$×.Ñ.´·±×=Ñ=Ü ØCÄDÈ×I]ÑI]ÓD^ÐC_Ð`óð ð ×#Ñ# eÑ+Ð+rN   c                ó  • U R                  5       S:X  a  U R                  5       $ U R                  5       S:X  a   U  Vs/ s H  oR                  5       PM     sn$ U  Vs/ s H  oR                  5       PM     sn$ s  snf s  snf ©Nr   r5   )ry  r  Útolist)r   rì   s     rL   ro  ÚFakeTensor.tolist&  sb   € Ø�8‰8‹:˜‹?Ø—9‘9“;ÐØ�X‰X‹Z˜1‹_Ù,0Ó1ªD D—I‘I–K©DÑ1Ð1á.2Ó3ªd d—K‘K–M©dÑ3Ð3ùò 2ùâ3s   ½A9ÁA>)rb   rç  r
  r	  rK   r  rÇ   rƒ  r  ré  r”  r  rë  rê  ©r‡   r-  )r‡   útorch.layoutrH   )rw  ztorch.dtype | Nonerò  r°   r‡   r   )r‡   rš   )rÛ   rš   r‡   rˆ   ©r–   rš   r‡   rˆ   )r–   rš   r‡   rš   )NNNNNNN)r  zFakeTensorMode | Tensor | Nonerì   rè  r–   útorch.device | str | Noner	  rè  r  rè  r”  rì  rK   r›  rÇ   úFakeTensorMode | Noner  rt  rç  rt  rt  r°   r
  r-  r  z*Unpack[_FakeTensorConstructorIgnoredState]r‡   r   )r.  rR   r/  rR   r‡   rˆ   )rü   r   rÇ   rÄ   r‡   rß   ©
r”   r@   r<  úSequence[type]r.  úSequence[object]r/  úMapping[str, object]r‡   rR   )r”   r@   rb  rx  r‡   ztuple[torch.device, bool])rf  zint | torch.SymIntr‡   ztorch.SymInt)r‡   r   )&re   rf   rg   rh   Ú__doc__ri   rÀ  ré  rƒ  rê  rë  r  rr   rs   r¿   rÀ   Ú	_mode_keyrœ  rk  r!  rù  r–   Úsetterr  Ústaticmethodr  r$  r€   r2  Úclassmethodr3   r#   rA  rd  rk  ro  rj   r›   rœ   s   @rL   rß   rß   B  s	  ø‡ ñð ÓØÓØÓØÓñ
 :QÓ9R€LÐ6ÓRÙ'Ó)€IÙ8OÓ8Q€KÐ5ÓQáÓ!ð ÐAó ñ .¸DÑA€Oð
  ÓØ.Ó.ð —‘×.Ñ.×3Ñ3€Iàó=ó ð=ð ó7ó ð7ð %)ð
Kð $(ñ	
Kà!ð
Kð !ð	
Kð
 
ö
Kð ó$ó ð$ð ‡]�]ó"ó ð"ð ó!ó ð!ð ×Ñó@ó ð@ð$ óó ðð ð =AØ"Ø,0Ø"&Ø%)Ø&*Ø59ð}ð ,0Ø15Ø26Ø%)Øñ}à9ð}ð ð}ð *ð	}ð
  ð}ð #ð}ð $ð}ð 3ð}ð )ð}ð /ð}ð 0ð}ð #ð}ð ð}ð <ð}ð  
õ!}ó ð}÷bLð ó(ó ð(ð Ø
ð
 "$Ù'5Ó'7ðL)àðL)ð ðL)ð ð	L)ð
 %ðL)ð 
ôL)ó ó ðL)ð\ ðr5Øðr5Ø%5ðr5à	"ór5ó ðr5ðn %&ñ,ð "ð,ð 
õ	,÷ 4ò 4rN   rß   r7   r8   T)Úslotsc                  óÞ   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'           S!S jrSrg )"ÚTensorMetadatai2  zC
The Tensor metadata relevant to hashing FakeTensors when caching.
ztorch.dtyperw  ztuple[_MetadataIntLike, ...]ÚshapeÚstriderš   r–   rr  r!  ztorch.memory_format | NoneÚmemory_formatÚ_MetadataIntLikeÚstorage_offsetz_MetadataIntLike | NoneÚstorage_bytesr-  rt  rm  Úis_conjÚis_negrÚ  r#  r°   Úis_coalescedú
int | NoneÚ	dense_dimÚ
sparse_dimc                óz  • [         R                  " U 5       H¡  n[        XR                  5      n[	        U[
        [        [        R                  45      (       a&  / nUR                  XX65        UR                  5         Mh  [	        U[        5      (       a  UR                  X5        M�  UR                  U5        M£     g rH   )ÚdataclassesÚfieldsrÌ   r´  rÞ   ÚtuplerC  rr   ÚSizeÚ_prep_args_for_hashÚclearr   Úconvert_sym_intrÓ   )r   Úresultrþ   r  Úfieldr�  Úid_hashed_objectss          rL   Ú_flatten_intoÚTensorMetadata._flatten_intoJ  sŠ   € ô !×'Ò'¨Ö-ˆEÜ˜D§*¡*Ó-ˆEÜ˜%¤%¬¬u¯z©zÐ!:×;Ñ;ð 35Ð!Ø×(Ñ(¨¸ÔQØ!×'Ñ'Ö)Ü˜E¤6×*Ñ*Ø×%Ñ% fÖ4à—‘˜eÖ$ò .rN   rc   N)r–  úlist[object]rþ   rÄ   r  r6   r‡   rˆ   )re   rf   rg   rh   rz  ri   r™  rj   rc   rN   rL   r�  r�  2  s—   ‡ ñð ÓØ'Ó'Ø(Ó(ØÓØÓØ-Ó-Ø$Ó$Ø*Ó*ØÓØÓØƒMØƒLØÓØƒOØÓØÓØÓð%àð%ð ð%ð ð	%ð
 
÷%rN   r�  c                ó  • U R                   n[        U 5      nU R                  (       d  U(       a  SnO![        U 5      nU R	                  US9(       d  SnU R                  5       n[        U R                  U R                  U[        R                  :X  a  U R                  5       OSU R                  UUUU(       d  U R                  5       R                  5       OSU R                  U R                   U R#                  5       U R%                  5       U R'                  5       U R(                  U R(                  (       a  U R+                  5       OSU(       a  U R-                  5       OSU(       a  U R/                  5       5      $ S5      $ )z)
Extract the TensorMetadata of a tensor.
N)r„  rc   )r!  r   Ú_has_symbolic_sizes_stridesr   Úis_contiguousr†  r�  rw  r‚  rr   r"  rƒ  r–   Úuntyped_storageÚnbytesrt  rm  rˆ  r‰  rÚ  r#  rŠ  rŒ  r�  )rü   r!  Ú_is_sparse_anyr„  r†  s        rL   Úextract_tensor_metadatar¢  `  s  € ð
 �X‰X€FÜ(¨Ó+€Nð 	×$×$®Ø‰ä-¨aÓ0ˆØ�‰¨]ˆÖ;Ø ˆMà×%Ñ%Ó'€NäØ	�‰Ø	�‰Ø¤§¡Ó-ˆ�‰Œ
°2Ø	�‰ØØØæ,:ˆ×ÑÓ×"Ñ"Ô$ÀØ	�‰Ø	�‰Ø	�	‰	‹Ø	�‰‹
Ø	�‰ÓØ	�‰ØŸKŸKˆ�‰Ô¨TÞ'ˆ�‰Œ¨TÞ(ˆ�‰‹ó%ð ð$ /3ó%ð rN   c                  óV   • \ rS rSr% SrS\S'   S\S'   SS jrSS jrSS	 jrSS
 jr	Sr
g)Ú_DispatchCacheKeyi‹  z(
Key for the FakeTensor dispatch cache.
útuple[object, ...]rÎ   ÚintÚ	hashvaluec                ó0   • Xl         [        U5      U l        g rH   )rÎ   Úhashr§  )r   Útups     rL   r€   Ú_DispatchCacheKey.__init__”  s   € ØŒÜ˜c›ˆ�rN   c                ób   • [        U[        5      =(       a    U R                  UR                  :H  $ rH   )rÞ   r¤  rÎ   )r   Úothers     rL   Ú__eq__Ú_DispatchCacheKey.__eq__˜  s"   € Ü˜%Ô!2Ó3×M¸¿¹ÀEÇIÁIÑ8MÐMrN   c                ó   • U R                   $ rH   )r§  r~   s    rL   Ú__hash__Ú_DispatchCacheKey.__hash__›  s   € Ø�~‰~ÐrN   c                óx   • U R                    H*  n[        U[        5      (       d  M  UR                  5         M,     g rH   )rÎ   rÞ   r7   Ústrip_shape_env)r   rõ   s     rL   r´  Ú!_DispatchCacheKey.strip_shape_envž  s+   € ð —”ˆAÜ˜!œ_×-Ó-Ø×!Ñ!Ö#ò rN   )r§  rÎ   N)rª  r¥  r‡   rˆ   )r­  rR   r‡   r-  )r‡   r¦  r†   )re   rf   rg   rh   rz  ri   r€   r®  r±  r´  rj   rc   rN   rL   r¤  r¤  ‹  s)   ‡ ñð 
ÓØƒNô#ôNô÷$rN   r¤  c                  ó   • \ rS rSrSrg)ÚSingletonConstanti¨  rc   N)re   rf   rg   rh   rj   rc   rN   rL   r·  r·  ¨  s   † ÚrN   r·  )Úfrozenr  c                  óF   • \ rS rSr% SrS\S'   S\S'   S\S'   \rS\S	'   S
rg)Ú_DispatchCacheEntryOutputInfoi¬  a™  
Entry type for the FakeTensor dispatch cache for an output. Accounts for three
possibilities:
1) The op is inplace, and a hit means we need to alias the argument at a
   given index.
2) We need to synthesize a new FakeTensor given tensor metadata. For view
   ops, we further capture the index of the arg to alias.
3) if the tensor related fields are None, then it is a constant value (e.g.
None or integer)
r‹  Úinplace_idxzTensorMetadata | NoneÚmetadataÚview_idxz
Any | NoneÚconstant_valuerc   N)	re   rf   rg   rh   rz  ri   r·  r¾  rj   rc   rN   rL   rº  rº  ¬  s%   ‡ ñ	ð ÓØ#Ó#ØÓØ!2€N�JÖ2rN   rº  c                  ó2   • \ rS rSr% SrS\S'   SrS\S'   Srg	)
Ú_DispatchCacheValidEntryi¿  z­
Entry type for the FakeTensor dispatch cache. It supports two types of outputs
1) tensor
2) tuple of tensors

is_output_tuple flag helps in differentiating the return type
z$tuple[_DispatchCacheEntryOutputInfo]Úoutput_infosFr-  Úis_output_tuplerc   N)re   rf   rg   rh   rz  ri   rÂ  rj   rc   rN   rL   rÀ  rÀ  ¿  s   ‡ ñð 7Ó6Ø!€O�TÖ!rN   rÀ  c                  ó$   • \ rS rSr% SrS\S'   Srg)Ú_DispatchCacheBypassEntryiÍ  z(
Entry type for a negative cache entry.
rŒ   r�   rc   N©re   rf   rg   rh   rz  ri   rj   rc   rN   rL   rÄ  rÄ  Í  ó   ‡ ñð †KrN   rÄ  c                  ó$   • \ rS rSr% SrS\S'   Srg)Ú_BypassDispatchCacheiÚ  z4
Signals cases that should skip FakeTensor caching.
rŒ   r�   rc   NrÅ  rc   rN   rL   rÈ  rÈ  Ú  rÆ  rN   rÈ  c                  óB   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	rg
)ÚDispatchCacheInfoiã  z?
Information about the state of the FakeTensor dispatch cache.
r¦  ÚhitsÚmissesúdict[str, int]ÚbypassesÚsizerc   NrÅ  rc   rN   rL   rÊ  rÊ  ã  s   ‡ ñð ƒIØƒKØÓØ
†IrN   rÊ  c                  ó€  ^ • \ rS rSr% 0 rS\S'   SrS\S'   SrS\S'   \" \	5      r
S\S	'   SrS\S
'   SrS\S'   S\S'   S\S'   S\S'   S\S'   SrS\S'   SrS\S'   SSSSSS.           SGU 4S jjjrSHS jrSIS jr\SJS j5       r\SKS j5       r\S\" 5       4         SLS  jj5       rSMU 4S! jjr        SNU 4S" jjr\SJS# j5       r\SOS$ j5       r\SHS% j5       r          SLS& jr          SPS' jr        SQS( jr           SRS) jr!              SSS* jr"              STS+ jr#              SUS, jr$            SVS- jr%            SWS. jr&            SXS/ jr'S\" 5       4         SLS0 jjr(          SYS1 jr)            SZS2 jr*          S[S3 jr+\," S4S5S6S7S8S9S:S;5      r-S\S< jr.          S]S= jr/          S^S> jr0SS?.   S_S@ jjr1\," \2Rf                  Rh                  \2Rj                  Rl                  \2Rn                  Rl                  \2Rp                  Rl                  \2Rr                  Rl                  \2Rt                  Rl                  \2Rv                  Rl                  \2Rx                  Rl                  \2Rz                  Rl                  \2R|                  R~                  \2R€                  Rl                  \2R(                  Rl                  5      rA\," \2R„                  Rl                  \2R†                  Rl                  \2Rˆ                  RŠ                  5      rFS\SA jrG\," \2R�                  Rl                  \2R’                  Rl                  5      rJS`SB jrK          SaSC jrLSSSSSD.           SbSE jjrMSFrNU =rO$ )crÄ   iø  ú,dict[_DispatchCacheKey, _DispatchCacheEntry]Úcacher   r¦  Ú
cache_hitsÚcache_missesrÍ  Úcache_bypassesrÞ  Fr-  r¨  Ústatic_shapesr˜  r]  z
str | NoneÚ_stackr  r±  Únt_tensor_id_counterÚnt_tensor_id_initial_countTN)Úallow_fallback_kernelsÚallow_non_fake_inputsr]  rÖ  r.  c               óÌ  >• [         R                  S[        U 5      5        [        TU ]  5         Xl        SS KnSS KnUR                  R                  R                  U l        [        U R                  US9U l        Ub  X@l        O	US L U l        SU l        UR                  R                  R                   U l        UR                  R                  R$                  U l        UR(                  R                  R*                  =(       a    U R                  (       + U l        UR(                  R                  R.                  U l        X l        SU l        / U l        X0l        [:        R<                  " 5       U l        S U l         URB                  RD                  RF                  U l$        SS K%nURL                  RN                  RP                  RR                  U l*        U RT                  U l+        g )Nzcreate_mode 0x%xr   r/  F),Úlogr¾  Úidr—   r€   rÚ  Útorch._dynamo.configÚtorch._functorch.configrï   r*  Ú"fake_tensor_propagate_real_tensorsÚpropagate_real_tensorsr'  Úfake_tensor_converterrÖ  Úallow_scalar_outputsÚ(fake_tensor_allow_unsafe_data_ptr_accessr  Úfake_tensor_allow_metar  Ú_dynamoÚfake_tensor_cache_enabledrÆ   Ú$fake_tensor_cache_crosscheck_enabledÚcache_crosscheck_enabledrÛ  r¨  Úenter_stackr]  Ú	tracebackÚextract_stackÚ_stack_tracer×  rs   r¿   rÀ   r{  Ú$torch.nested._internal.nested_tensorÚnestedÚ	_internalÚnested_tensorÚ_tensor_id_counterrÙ  rØ  )r   rÚ  rÛ  r]  rÖ  r.  rr   r˜   s          €rL   r€   ÚFakeTensorMode.__init__  s›  ø€ ô$ 	�	‰	Ð$¤b¨£hÔ/Ü‰ÑÔØ&<Ô#ã#Û&ð ×Ñ×#Ñ#×FÑFð 	Ô#ô &9Ø×1Ñ1Øñ&
ˆÔ"ð
 Ñ$Ø!.Õà!*¨dÐ!2ˆDÔð %*ˆÔ!ð ×Ñ×#Ñ#×LÑLð 	Ô*ð  ×*Ñ*×1Ñ1×HÑHˆŒà�M‰M× Ñ ×:Ñ:÷ 0Ø×/Ñ/Ô/ð 	Ôð
 �M‰M× Ñ ×EÑEð 	Ô%ð &;Ô"ð %*ˆÔ!ð VXˆÔà"Œä%×3Ò3Ó5ˆÔØˆŒð Ÿ™×7Ñ7×<Ñ<ˆŒã3ð �L‰L×"Ñ"×0Ñ0×CÑCð 	Ô'ð %)×$CÑ$CˆÕ!rN   c                ó&   • U R                   U l        g rH   )rÙ  rØ  r~   s    rL   Úreset_nt_tensor_id_counterÚ)FakeTensorMode.reset_nt_tensor_id_counterm  s   € Ø$(×$CÑ$CˆÕ!rN   c                óL   • [        U[        5      =(       a    UR                  U L $ rH   )rÞ   rß   rÇ   ©r   rü   s     rL   Úis_our_fakeÚFakeTensorMode.is_our_fake|  s'   € äØ”:ó÷ $ð —‘˜tÐ#ð		
rN   c                óÊ  • [         R                  R                  5       (       aQ  [         R                  R                  5       (       a  [	        S5      e[         R                  R                  5       (       + $ [         R                  R                  5       =(       dF    [        [         S5      =(       a    [         R                  R                  5       =(       d
    [        5       (       + $ )Nz&Cannot have both xpu and cuda compiledrn   )	rr   ro   Ú_is_compiledrm   rë   Úis_availableÚhasattrrn   r!   r~   s    rL   Úavoid_device_initÚ FakeTensorMode.avoid_device_init‰  s’   € ä�9‰9×!Ñ!×#Ñ#Ü�z‰z×&Ñ&×(Ñ(Ü$Ð%MÓNÐNÜ—y‘y×-Ñ-Ó/Ô/Ð/ô �J‰J×#Ñ#Ó%÷ 3Üœ˜uÓ%×B¬%¯)©)×*@Ñ*@Ó*B÷3ä0Ó2ô
ð 	
rN   c                óœ   • U R                   c4  SR                  [        R                  " U R                  5      5      U l         U R                   $ )NÚ )r×  Újoinrì  Úformat_listrî  r~   s    rL   ÚstackÚFakeTensorMode.stack–  s7   € à�;‰;ÑØŸ'™'¤)×"7Ò"7¸×8IÑ8IÓ"JÓKˆDŒKØ�{‰{ÐrN   rc   c                ó  • [         R                  R                  [         R                  R                  R                  5      b  [        SU 35      e U R                  XX45      $ ! [         a    [        R                  S5        e f = f)Nz2FakeTensorMode should not be set when dispatching zfake tensor raised TypeError)
rr   rs   r;  r¿   rÀ   rë   Údispatchr  rÝ  Ú	exception)r   r”   r<  r.  r/  s        rL   rA  Ú!FakeTensorMode.__torch_dispatch__œ  su   € ô �8‰8×&Ñ&¤u§x¡x×'EÑ'E×'JÑ'JÓKÑWÜ ØDÀTÀFÐKóð ð	Ø—=‘= ¨dÓ;Ð;øÜó 	Ü�M‰MÐ8Ô9Øð	ús   ÁA$ Á$!Bc                óî  >• SS K nS nU R                  (       aO  UR                  R                  5       nUR                  R	                  S5        UR                  R                  5         UR                  R                  U R                  5      nXLa+  U R                  R                  SX245        [        TU ]-  5       $ UR                  R                  U 5        U R                  R                  SS U45        U $ )Nr   TF)rï  r   rs   Ú_only_lift_cpu_tensorsÚ_set_only_lift_cpu_tensorsÚ_ensureCUDADeviceGuardSetr¾   r{  rë  rÓ   r—   Ú	__enter__rÁ   )r   rr   Úprev_only_lift_cpu_tensorsÚmaybe_prev_fake_moder˜   s       €rL   r  ÚFakeTensorMode.__enter__±  sÍ   ø€ Û3à%)Ð"Ø×!×!à).¯©×)HÑ)HÓ)JÐ&Ø�H‰H×/Ñ/°Ô5ð
 �H‰H×.Ñ.Ô0à$Ÿx™x×<Ñ<¸T¿^¹^ÓLÐØÒ+Ø×Ñ×#Ñ#ØÐ+ÐHôô ‘7Ñ$Ó&Ð&ð �H‰H×'Ñ'¨Ô-Ø×Ñ×#Ñ# U¨DÐ2LÐ$MÔNàˆrN   c                óú   >• U R                   R                  5       u  pEnU(       aV  [        TU ]  XU5        Ub  [        R
                  R                  U5        Ub   [        R
                  R                  U5        g g g rH   )rë  rÒ   r—   Ú__exit__rr   rs   rÁ   r  )r   Úexc_typeÚexc_valÚexc_tbÚliver  Ú maybe_prev_only_lift_cpu_tensorsr˜   s          €rL   r  ÚFakeTensorMode.__exit__Ì  st   ø€ ð ×Ñ× Ñ Ó"ñ 	GˆÐ%Eö Ü‰GÑ˜X°Ô7ð $Ñ/Ü—‘×+Ñ+Ð,@ÔAØ/Ñ;Ü—‘×3Ñ3Ð4TÕUð <ð rN   c                ó   • gr¸   rc   ©r  s    rL   Úis_infra_modeÚFakeTensorMode.is_infra_modeÞ  s   € àrN   c                ó²   • [        [        R                  [        R                  [	        [        R
                  5      [        [        R                  5      5      $ )z(
Query the state of the dispatch cache.
)rÊ  rÄ   rÓ  rÔ  r¹   rÕ  r6  rÒ  r  s    rL   Ú
cache_infoÚFakeTensorMode.cache_infoâ  s?   € ô
 !Ü×%Ñ%Ü×'Ñ'Ü”×.Ñ.Ó/Ü”×$Ñ$Ó%ó	
ð 	
rN   c                óˆ   • SU l         SU l        U R                  R                  5         U R                  R                  5         g)z
Clear the dispatch cache.
r   N)rÓ  rÔ  rÕ  r”  rÒ  r  s    rL   Úcache_clearÚFakeTensorMode.cache_clearî  s3   € ð
 ˆŒØˆÔØ×Ñ× Ñ Ô"Ø�	‰	�‰ÕrN   c                ó\  • SnSn [        U R                  5      nU R                  XQX45      nUc  U R                  XX45      $ Uc  [        S5      eUR!                  5       (       a5  UR                  c  [        S5      eUR                  R"                  n[$        n	O[        R&                  n[(        n	UR+                  US5      n
U
b´  [	        U
[,        5      (       a7  [        R                  U
R                  ==   S-  ss'   U R                  XX45      $ U R/                  XZXaU5      n[        =R0                  S-  sl        U R2                  (       a)  [5        U 5         U R7                  X±X#U5        SSS5        U$ U$ U R                  XX45      n U R9                  XVXXK5      n
U	" X†U
5        [        =R:                  S-  sl        U$ ! [         a‘  n[	        U[
        R                  R                  5      (       a8  UR                  5       S:X  a$  [        R                  SUS   UR                  5        [        R                  UR                  ==   S-  ss'    SnAGN,SnAff = f! , (       d  f       U$ = f! [         a®  n[	        U[
        R                  R                  5      (       a8  UR                  5       S:X  a$  [        R                  SUS   UR                  5        [        R                  UR                  ==   S-  ss'   U	" X†[-        UR                  5      5        Us SnA$ SnAff = f)z†
Lookup a cache entry for the given arguments. If none exists, dispatch
and cache the result (if the result is eligible for caching).
NÚinvoke_subgraphz6Fake tensor cache failed: identifier = %s, reason = %sr5   z1state must not be None after cache key generationz:state.shape_env must not be None when caching on shape_env)r6   r]  Ú
_cache_keyrÈ  rÞ   rr   Ú_opsÚHigherOrderOperatorr´  Úhc_logr¾  r�   rÄ   rÕ  Ú_dispatch_implrë   Úcache_on_shape_envÚfake_tensor_cacheÚ_set_cache_key_for_shape_envrÒ  Ú_set_cache_keyrK  rÄ  Ú_output_from_cache_entryrÓ  rê  rÉ   Ú_crosscheck_cache_outputÚ_make_cache_entryrÔ  )r   r”   r<  r.  r/  r  rÎ   ÚerÒ  Úset_cache_keyÚentryÚoutputs               rL   Ú_cached_dispatch_implÚ$FakeTensorMode._cached_dispatch_implø  sº  € ð ˆØˆð	9Ü" 4§>¡>Ó2ˆEØ—/‘/ %¨tÓ<ˆCð ‰;ð
 ×&Ñ& t°DÓAÐAà‰=Ü Ð!TÓUÐUØ×#Ñ#×%Ñ%Ø�‰Ñ&Ü$ØPóð ð —O‘O×5Ñ5ˆEÜ8‰Mä"×(Ñ(ˆEÜ*ˆMØ—	‘	˜#˜tÓ$ˆàÑÜ˜%Ô!:×;Ñ;ô ×-Ñ-¨e¯l©lÓ;¸qÑ@Ó;à×*Ñ*¨4¸ÓEÐEð ×2Ñ2°5ÀÈDÓQˆFÜ×%Ò%¨Ñ*Õ%Ø×,×,ô /¨tÕ4Ø×1Ñ1°&ÀÈVÔT÷ 5àˆM�6ˆMð ×$Ñ$ T°$Ó?ˆð	Ø×*Ñ*¨5°tÀ6ÓRˆEñ$ 	�e %Ô(Ü×#Ò# qÑ(Õ#Øˆøô] $ó 	9ô ˜4¤§¡×!?Ñ!?×@Ñ@Ø—I‘I“KÐ#4Ó4ä—‘ØLØ˜‘GØ—H‘Hôô
 ×)Ñ)¨!¯(©(Ó3°qÑ8×3Ñ3ûð	9ú÷b 5Ô4àˆMûô $ó 	ô
 ˜4¤§¡×!?Ñ!?×@Ñ@Ø—I‘I“KÐ#4Ó4ä—‘ØLØ˜‘GØ—H‘Hôô
 ×)Ñ)¨!¯(©(Ó3°qÑ8Ó3Ù˜%Ô&?ÀÇÁÓ&IÔJØ�Mûð	úsC   †'G ÅI!ÆI3 Ç
IÇBIÉIÉ!
I0É3
L+É=B#L&Ì L+Ì&L+c           	     óÆ  • [         R                  R                  R                  R	                  5       SLnU[         R
                  " 5       [         R                  R                  5       [         R                  " 5       U R                  (       a  U R                  R                  OSU/nUR                  (       a  UR                  U R                  5        / nU(       a  U R                  XcX5        U(       a  U R                  XdX5        [        [!        U5      5      nU H1  n	["        R$                  " U	[&        R(                  " [*        US95        M3     UR-                  5         U$ )zs
Create a cache key given the dispatch args. Raises _BypassDispatchCache
for any situation that precludes caching.
N©rÎ   )rr   ÚfxÚexperimentalÚproxy_tensorÚget_proxy_modeÚget_default_dtypers   Ú_get_default_deviceÚis_inference_mode_enabledr]  ÚsettingsÚknown_symbolsrÓ   rÞ  r“  r¤  r‘  r´   ÚfinalizeÚ	functoolsÚpartialÚevict_fake_tensor_cache_keyr”  )
r   r  r”   r.  r/  Ú
is_tracingÚ
key_valuesr˜  rÎ   Úid_hashed_objs
             rL   r(  ÚFakeTensorMode._cache_keyX  s  € ô —X‘X×*Ñ*×7Ñ7×FÑFÓHÐPTÐTˆ
àô ×#Ò#Ó%ô �H‰H×(Ñ(Ó*ô ×+Ò+Ó-ð (,§~§~ˆD�N‰N×#Ò#¸4ð ð%
ˆ
ð( ××ð ×Ñ˜dŸj™jÔ)à*,Ðæà×$Ñ$ Z°uÔPÞà×$Ñ$ Z¸ÔRÜ¤ jÓ 1Ó2ˆã.ˆMÜ×ÒØœy×0Ò0Ô1LÐRUÑVöñ /ð 	×ÑÔ!Øˆ
rN   c                ó¤  • SSK Jn  [        U[        R                  R
                  5      (       a  X;   a  g[        R                  R                  UR                  ;   a  [        S5      e[        R                  R                  UR                  ;   a�  U[        R                  R                  L au  [        UUUSS9u  pVUS    H]  n[        U[        R                  5      (       d  M$  UR                  [        R                   [        R"                  4;   d  MT  [        S5      e   g[        S5      e[        R                  R$                  UR                  ;   a  [        S	5      eU[        R&                  R(                  L a  [        S
5      eU[        R*                  R,                  R.                  R(                  L a  [        S5      eXR0                  ;   a  [        S5      eU[        R2                  R(                  L a  [        S5      eUR5                  5       S:X  a  [        S5      e[        R6                  R8                  R;                  U5      (       d  [        S5      eUR<                  (       aa  [        R>                  RA                  UR5                  5       [        R>                  RB                  RD                  5      (       a  [        S5      egg)zI
Validate that the cache key generated by _cache_key will be
reasonable.
r   ©Úregistered_hop_fake_fnsNzdata dependent outputT©r.  r/  Únormalize_to_only_use_kwargsÚindiceszdynamic output shapezinplace viewzunsafe viewzprims.as_stridedÚliftúmkldnn tensorzinductor::resize_storage_bytes_znon-builtinÚCompositeImplicitAutograd)#Útorch._higher_order_ops.utilsrO  rÞ   rr   r)  r*  ÚTagÚdata_dependent_outputÚtagsrÈ  Údynamic_output_shaperö  r  r   r$   rw  r-  r}  Úinplace_viewÚ_unsafe_viewrø  rõ  ÚprimsÚ
as_stridedÚlift_fnsÚ	to_mkldnnr´  Ú_libraryÚutilsÚ
is_builtinÚis_viewrs   Ú%_dispatch_has_kernel_for_dispatch_keyÚDispatchKeyrU  )r   r”   r.  r/  rO  rÛ   Ú
new_kwargsr  s           rL   Ú_validate_cache_keyÚ"FakeTensorMode._validate_cache_key�  s  € õ 	Jô
 �tœUŸZ™Z×;Ñ;×<Ñ<ØÓ/àô
 �9‰9×*Ñ*¨d¯i©iÓ7Ü&Ð'>Ó?Ð?ä�9‰9×)Ñ)¨T¯Y©YÓ6Ø”t—z‘z×(Ñ(Ò(Ü 2ØØØ!Ø15ñ	!‘�ð (¨	Ô2�Eô " %¬¯©×6Ó6¸5¿;¹;ÜŸ
™
ÜŸ
™
ðKõ <ô 3Ð3IÓJÐJñ 3ð ä&Ð'=Ó>Ð>ä�9‰9×!Ñ! T§Y¡YÓ.Ü& ~Ó6Ð6à”4×$Ñ$×,Ñ,Ò,Ü& }Ó5Ð5à”5—9‘9—?‘?×-Ñ-×5Ñ5Ò5Ü&Ð'9Ó:Ð:à—=‘=Ó Ü& vÓ.Ð.à”4—>‘>×)Ñ)Ò)Ü& Ó7Ð7à�9‰9‹;Ð;Ó;Ü&Ð'HÓIÐIä�~‰~×#Ñ#×.Ñ.¨t×4Ñ4Ü& }Ó5Ð5ð
 �<�<œEŸH™H×JÑJØ�I‰I‹KœŸ™×-Ñ-×GÑG÷
ñ 
ô 'Ð'BÓCÐCð
ˆ<rN   c                ó  • SSK Jn  SSKJn  [	        U[
        [        [        45      (       a7  UR                  [        U5      5        UR                  S[        U5       35        [	        U[        5      (       aA  U R                  XR                  5       X45        U R                  XR                  5       X45        gU GHÈ  n[	        U[        5      (       aœ  U R                  U5      (       d  [!        S5      eUR"                  b  [!        S5      e[%        U5      (       a  [!        UR&                   S35      eUR(                  (       a  [!        S	5      e[+        U5      nUR-                  XU5        Mµ  [	        U[.        5      (       a  [!        S
5      e[	        U[0        5      (       a  UR3                  X5        Mý  [	        U[4        [6        45      (       a  [!        S5      e[	        U[
        [        [        45      (       a  U R                  XX45        GMX  [	        U[8        R:                  5      (       a  [!        S5      e[	        U[<        R>                  R@                  5      (       aH  UR                  [        U5      5        UR                  [C        U5      5        UR                  U5        GMó  [	        Xv5      (       a8  UR                  [E        U5      5        UR                  URF                  5        GM;  [	        Xu5      (       aR  UR                  [        U5      5        UR                  [E        U5      5        UR                  URH                  5        GM�  UR                  [        U5      5        UR                  U5        GMË     g)a  
Translate the provided args into a form suitable for caching at FakeTensor
dispatch, i.e., convert unhashable types like lists & dicts into tuples and
convert FakeTensors into metadata. Raises _BypassDispatchCache to signal
unsupported cases that should bypass caching.
r   )ÚFunctionalCallableWithEpilogue)ÚSubgraphCallableWrapperÚlength_Nznot our fakeúconstant attributez tensorrT  znon-fake tensorzsymbolic shapezfunction argument)%Ú*torch._higher_order_ops.auto_functionalizerk  rV  rl  rÞ   rC  r‘  r¹   rÓ   ré   r6  r“  ÚkeysÚvaluesrß   rú  rÈ  r	  r   r!  rk  r¢  r™  r   r   r•  r   r   r<  ÚFunctionTyperr   r<  ÚGraphModulerÞ  r©  ÚsubgraphÚorig_callable)	r   r–  r.  r  r˜  rk  rl  r?  r¼  s	            rL   r“  Ú"FakeTensorMode._prep_args_for_hashÛ  s�  € õ	
õ 	Jä�dœT¤5¬$Ð/×0Ñ0Ø�M‰Mœ$˜t›*Ô%Ø�M‰M˜G¤C¨£I ;Ð/Ô0ä�dœD×!Ñ!Ø×$Ñ$ V¯Y©Y«[¸%ÔSØ×$Ñ$ V¯[©[«]¸EÔUØäˆCÜ˜#œz×*Ñ*Ø×'Ñ'¨×,Ñ,Ü.¨~Ó>Ð>Ø—<‘<Ñ+Ü.Ð/CÓDÐDÜ  ×%Ñ%Ü.°#·*±*°¸WÐ/EÓFÐFØ—=—=Ü.¨Ó?Ð?Ü2°3Ó7�Ø×&Ñ& v°UÖ;Ü˜C¤×(Ñ(Ü*Ð+<Ó=Ð=Ü˜C¤×(Ñ(Ø×%Ñ% fÖ2Ü˜C¤'¬8Ð!4×5Ñ5Ü*Ð+;Ó<Ð<Ü˜C¤$¬¬tÐ!4×5Ñ5Ø×(Ñ(¨°e×OÜ˜C¤×!3Ñ!3×4Ñ4Ü*Ð+>Ó?Ð?Ü˜C¤§¡×!5Ñ!5×6Ñ6ð —‘œd 3›iÔ(Ø—‘œb ›gÔ&Ø!×(Ñ(¨×-Ü˜C×9Ñ9Ø—‘œd 3›iÔ(Ø!×(Ñ(¨¯©×6Ü˜C×@Ñ@Ø—‘œd 3›iÔ(Ø—‘œd 3›iÔ(Ø!×(Ñ(¨×):Ñ):×;ð
 —‘œd 3›iÔ(Ø—‘˜c×"òQ rN   c                ó®  • [        U[        [        S 5      45      (       a  g [        X5        [        U[        5      (       d  [        S5      eUR                  b  [        S5      eUR                  (       a  [        S5      e[        U5      (       a  [        S5      eUR                  5        H&  n[        U5      [        U5      :X  d  M  [        S5      e   g )Nznon-FakeTensor outputrn  zsparse outputzsparse compressed outputzkwarg aliases output)rÞ   r¦  ré   Ú%_validate_symbolic_output_for_cachingrß   rÈ  r	  r#  r   rq  rÞ  )r   r  rÎ   r”   r.  r/  r7  Úkvals           rL   Ú _validate_output_for_cache_entryÚ/FakeTensorMode._validate_output_for_cache_entry   sµ   € ô �fœs¤D¨£JÐ/×0Ñ0Øô 	.¨eÔ<ô ˜&¤*×-Ñ-Ü&Ð'>Ó?Ð?ð �?‰?Ñ&Ü&Ð';Ó<Ð<ð ××Ü& Ó7Ð7ä ×'Ñ'Ü&Ð'AÓBÐBð —M‘M–OˆDÜ�$‹xœ2˜f›:Õ%Ü*Ð+AÓBÐBò $rN   c                ó¶  ^• [        U[        [        R                  [	        S 5      45      (       a  [        S S S US9$ [        [        U5      5       H*  n[        XG   5      [        U5      :X  d  M  [        US S S9s  $    S n[        U[        R                  R                  5      (       ar  UR                  (       aa  [        U5       V	V
s/ s H  u  pš[        U
[        5      (       d  M  U	PM      nn	n
[        U5      S:w  a  [        S[        U5       35      eUS   n[        U5      n[!        U4S jUR"                   5       5      Ul        [!        U4S jUR$                   5       5      Ul        TR'                  UR(                  5      Ul        UR*                  c  S OTR'                  UR*                  5      Ul        [        S UUS9n[-        U4SS	9nSS
KJn   U R3                  TXâX45      n[        R6                  R9                  U5      n[        R6                  R9                  U5      nUU:w  a  [5        S5      eU$ s  sn
n	f ! U a    [5        S5      S ef = f)N©r»  r¼  r½  r¾  )r»  r¼  r½  r5   z1Expected exactly one tensor arg for view op, got r   c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frH   ©Úconvert_output©rÍ   rõ   r  s     €rL   rÐ   ÚBFakeTensorMode._get_output_info_for_cache_entry.<locals>.<genexpr>j  s   øé € ÐOÂ¸1˜u×3Ñ3°A×6Ð6Âùó   ƒ!c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frH   r  r�  s     €rL   rÐ   r‚  k  s   øé € ÐQÂ¸A × 4Ñ 4°Q× 7Ð 7Âùrƒ  F©rÁ  rÂ  )ÚGuardOnDataDependentSymNodezdata dependent symnodezdispatch_key_set mismatch)rÞ   r¦  rr   r   ré   rº  Úranger6  rÞ  r)  r@   rd  Ú	enumerater   rë   r¢  r‘  r‚  rƒ  r€  r†  r‡  rÀ  ri  r†  r1  rÈ  rs   Ú_dispatch_key_set)r   r  rÎ   r”   r.  r/  r7  Úidxr½  Úirü   Úidxsr¼  r6  Úentry_for_synth_outputr†  Úsynth_outputÚsynth_key_setÚkey_sets    `                 rL   Ú _get_output_info_for_cache_entryÚ/FakeTensorMode._get_output_info_for_cache_entryJ  s#  ø€ ô �fœs¤E§L¡L´$°t³*Ð=×>Ñ>Ü0Ø ¨4¸$Èvñð ô
 œ˜T›Ö#ˆCÜ�$‘)‹}¤ 6£
Õ*Ü4Ø #¨d¸Tñò ñ $ð ˆÜ�dœEŸJ™J×1Ñ1×2Ñ2°t·|·|Ü"+¨D¤/ÔK¢/™$˜!´ZÀÄ6×5J—A¡/ˆDÑKÜ�4‹y˜A‹~Ü$ØGÌÈDË	À{ÐSóð ð ˜A‘wˆHä*¨6Ó2ˆÜÔOÀÇÂÓOÓOˆŒÜÔQÀÇÂÓQÓQˆŒØ"'×"6Ñ"6°x×7NÑ7NÓ"OˆÔð ×%Ñ%Ñ-ñ à×%Ñ% h×&<Ñ&<Ó=ð 	Ôô .ØØØñ
ˆô ":Ø˜°5ñ"
Ðõ 	Vð		KØ×8Ñ8ØÐ-°DóˆLô Ÿ™×2Ñ2°<Ó@ˆÜ—(‘(×,Ñ,¨VÓ4ˆØ˜GÓ#Ü&Ð'BÓCÐCàˆùóg LøðJ +ó 	Kô
 'Ð'?Ó@ÀdÐJð	Kús   Ã	H?Ã(H?ÇI ÉIc                óP  ^• SSK JnJn  SSKJm  U R                  X4U5        [        U[        R                  R                  5      (       aX  X8;   aS  [        U[        5      (       a  UOU4n	[        U4S jU	 5       5      =(       d    X7;   n
U
(       a  [        SU SU S35      e[        U[        [        R                  [        S5      45      (       a  [!        SSSUS	9n[#        U4S
S9$ [        U[        5      (       a   U H  nU R%                  UUUUUU5        M     OU R%                  UUUUUU5        [        U[        5      (       a9  U Vs/ s H  nU R'                  UUUUUU5      PM     nn[#        [        U5      SS9$ U R'                  UUUUUU5      n[#        U4S
S9$ s  snf )z˜
Make a cache entry object for the given 'output' Tensor. Raises
_BypassDispatchCache if the output tensor has characteristics that
prevent caching it.
r   )Úhops_that_skip_faketensor_cacherO  )Úhas_free_unbacked_symbolsc              3  ó–   >#   • U  H>  n[        U[        R                  [        R                  45      =(       a    T" U5      v •  M@     g 7frH   )rÞ   rr   r   r   )rÍ   Úor•  s     €rL   rÐ   Ú3FakeTensorMode._make_cache_entry.<locals>.<genexpr>º  s@   øé € ð ò "˜ô ˜q¤5§<¡<´·±Ð">Ó?÷ 5Ù1°!Ó4ô5â!ùs   ƒAA	zunbacked symbol in HOP z output                     or z# in hops_that_skip_faketensor_cacheNr}  Fr…  T)rV  r”  rO  ri  r•  rh  rÞ   rr   r)  r*  r‘  rP  rÈ  r¦  r   ré   rº  rÀ  rz  r‘  )r   r  rÎ   r”   r.  r/  r7  r”  rO  ÚoutsÚnon_cacheableÚoutput_infoÚout_elementÚout_elemrÁ  r•  s                  @rL   r3  Ú FakeTensorMode._make_cache_entry—  sô  ø€ ÷	
õ 	Tà× Ñ  ¨VÔ4ô �tœUŸZ™Z×;Ñ;×<Ñ<ØÓ/ä'¨´×6Ñ6‘6¸V¸IˆDäô ñ "óó ÷ ;ð
 Ñ:ð ö Ü*Ø-¨d¨Vð 4Ø�vÐ@ðBóð ô
 �fœs¤E§L¡L´$°t³*Ð=×>Ñ>Ü7Ø ¨4¸$ÈvñˆKô ,Ø)˜^¸Uñð ô �fœe×$Ñ$Û%�Ø×5Ñ5ØØØØØØöò  &ð ×1Ñ1ØØØØØØôô �fœe×$Ñ$ñ !'ó
ò !'�Hð ×5Ñ5ØØØØØØöñ !'ð ð 
ô ,ä" <Ó0Ø $ñð ð ×?Ñ?ØØØØØØóˆKô ,Ø)˜^¸Uñð ùò5
s   Å F#c                ó„  ^^^• UR                   cD  UR                  c7  UR                  c*  UR                  [        L a  [        S5      eUR                  $ UR                   b0  XRR                      n[        U[        5      (       d  [        S5      eU$ UR                  nUc  g [        U5      (       a  [        S5      eSU4S jjm[        UU4S jUR                   5       5      n[        UU4S jUR                   5       5      n	T" UR                  T5      n
UR                  b  T" UR                  T5        [        R                  nU R                   b  U R                   R"                  n[%        U 5         U" 5          [&        R(                  " UU	UR*                  UR,                  SUR.                  S9nS S S 5        S S S 5        UR0                  (       a   [&        R2                  R5                  WS	5        UR6                  (       a   [&        R2                  R9                  WS	5        [        U[&        R:                  R<                  5      (       a”  UR>                  (       aƒ  U[A        [B        UR                  5         n[        U[        5      (       d  [        S
5      eURE                  5       n[%        U 5         U" 5          WRG                  XêX‰5        S S S 5        S S S 5        [        U WURH                  5      $ ! , (       d  f       GNM= f! , (       d  f       GNW= f! , (       d  f       NQ= f! , (       d  f       NZ= f)Nz2entry.constant_value must not be SingletonConstantz inplace_arg must be a FakeTensorz)Sparse tensors are not supported in cachec                óÚ   >• [        U [        5      (       a4  UR                  c  [        S5      eU R	                  TUR                  5      $ [        U [
        5      (       a  [        S5      eU $ )Nz6state.shape_env must not be None for _SymIntOutputStubz Unexpected _PySymInputStub value)rÞ   r8   r]  rë   r  r7   )r�  r  rÎ   s     €rL   Úcheck_valueÚGFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.check_value#	  s`   ø€ Ü˜%Ô!2×3Ñ3Ø—?‘?Ñ*Ü(ØPóð ð —}‘} S¨%¯/©/Ó:Ð:ä˜e¤_×5Ñ5Ü(Ð)KÓLÐLØ�rN   c              3  ó6   >#   • U  H  nT" UT5      v •  M     g 7frH   rc   ©rÍ   rõ   r¡  r  s     €€rL   rÐ   ÚEFakeTensorMode._get_output_tensor_from_cache_entry.<locals>.<genexpr>/	  s   øé € ÐD²^°‘k ! U×+Ð+²^ùó   ƒc              3  ó6   >#   • U  H  nT" UT5      v •  M     g 7frH   rc   r¤  s     €€rL   rÐ   r¥  0	  s   øé € ÐF²o°‘{ 1 e×,Ð,²oùr¦  r“  )rw  r!  r–   rt  Tzview_arg must be a FakeTensor)r�  r…  r  r6   r‡   r'   )%r»  r¼  r½  r¾  r·  rë   rÞ   rß   r   r‘  r‚  rƒ  r†  r‡  Ú
contextlibÚnullcontextr]  Úsuppress_guardsr¯  rr   Úempty_stridedrw  r!  rt  rˆ  rs   Ú	_set_conjr‰  Ú_set_negr)  r@   rd  r   r¦  rŸ  Úset_r–   )r   r  r6  rÎ   r”   r.  Úinplace_argr¼  r‚  rƒ  r†  Úmaybe_suppressr£  Úview_argÚstorager¡  s    ` `           @rL   Ú#_get_output_tensor_from_cache_entryÚ2FakeTensorMode._get_output_tensor_from_cache_entry	  sr  ú€ ð ×ÑÑ%Ø—‘Ñ&Ø—‘Ñ&à×#Ñ#Ô'8Ò8Ü$ØHóð ð ×'Ñ'Ð'Ø×ÑÑ(à×0Ñ0Ñ1ˆKÜ˜k¬:×6Ñ6Ü$Ð%GÓHÐHØÐð —>‘>ˆØÑØä˜×"Ñ"Ü Ð!LÓMÐM÷
	ô ÕD°X·^²^ÓDÓDˆÜÕF°h·o²oÓFÓFˆÙ$ X×%<Ñ%<¸eÓDˆØ×!Ñ!Ñ-Ù˜×.Ñ.°Ô6ô ×"Ñ"ð 	ð �>‰>Ñ%Ø!Ÿ^™^×;Ñ;ˆNä)¨$Õ/±Õ1AÜ×'Ò'ØØØ—n‘nØ—‘ØØ&×4Ñ4ñˆE÷ 2B×/ð ××Ü�H‰H×Ñ˜u dÔ+Ø�?�?Ü�H‰H×Ñ˜e TÔ*ä�dœEŸJ™J×1Ñ1×2Ñ2°t·|·|àœD¤ e§n¡nÓ5Ñ6ˆHÜ˜h¬
×3Ñ3Ü$Ð%DÓEÐEØ×.Ñ.Ó0ˆGÜ-¨dÕ3±^Õ5EØ—
‘
˜7°EÔB÷ 6F×3ô ˜$  x§¡Ó7Ð7÷1 2BÖ1Aú×/Ö/ú÷* 6FÕ5Eú×3Õ3úsH   Å6LÅ>8K<Æ6LÊ:L1ËL ËL1Ë<
L	ÌLÌ
LÌ 
L.	Ì*L1Ì1
L?c           
     óÞ   • UR                   (       a8  UR                   Vs/ s H  nU R                  XX4U5      PM     nn[        U5      $ U R                  XR                  S   X4U5      $ s  snf )z/
Create a new FakeTensor from the cache entry.
r   )rÂ  rÁ  r³  r‘  )r   r  r6  rÎ   r”   r.  r›  Úoutputss           rL   r1  Ú'FakeTensorMode._output_from_cache_entryU	  s�   € ð × × ð
 $)×#5Ò#5ó	ò $6�Kð ×8Ñ8Ø¨°4öñ $6ð	 ð ô ˜“>Ð!à×;Ñ;Ø×)Ñ)¨!Ñ,¨c¸óð ùòs    A*c                óð   ^• SU4S jjm U R                  X#XE5      n T" Xa5        g! [         a  n[        SU SU SU SU 35      UeSnAff = f! [         a  n[        SU SU SU 35      UeSnAff = f)zn
Helper to validate that the output synthesized from the cache matches
the output created by normal dispatch.
c                óŠ  >• [        U [        5      (       a„  [        U[        5      (       d  [        S[        U5       35      e[	        U 5      [	        U5      :w  a#  [        S[	        U 5       S[	        U5       35      e[        X5       H  u  p#T" X#5        M     g [        U [        5      (       a,  [        U[        5      (       a  X:w  a  [        SU  SU 35      eg U c  Ub  [        SU 35      eg [        U [        5      (       aB  [        U 5      [        U5      Ld  U R                  UR                  La  [        SU  SU 35      eg [        U [        R                  5      (       aG  [        U[        R                  5      (       d  [        S[        U5       35      e[        [        X5        g [        S[        U 5       35      e)	NzExpected tuple, got zTuple length mismatch: z != zInt mismatch: zExpected None, got zSymType mismatch: úExpected Tensor, got zUnsupported type )rÞ   r‘  rë   ré   r6  Úzipr¦  r(   rÝ  rr   r   r   r   ÚRuntimeError)ÚaÚbÚlrà  Úassert_helpers       €rL   rÀ  Ú>FakeTensorMode._crosscheck_cache_output.<locals>.assert_helper{	  s€  ø€ Ü˜!œU×#Ñ#Ü! !¤U×+Ñ+Ü(Ð+?ÄÀQÃ¸yÐ)IÓJÐJÜ�q“6œS ›VÓ#Ü(Ð+BÄ3ÀqÃ6À(È$ÌsÐSTËvÈhÐ)WÓXÐXÜ žI‘D�AÙ! !Ö'ò &ä˜Aœs×#Ñ#Ü! !¤S×)Ñ)¨Q«VÜ(¨>¸!¸¸DÀÀÐ)DÓEÐEð .4à‘Ø‘=Ü(Ð+>¸q¸cÐ)BÓCÐCð !ä˜Aœ|×,Ñ,Ü˜“7¤$ q£'Ò)¨Q¯V©V¸1¿6¹6Ò-AÜ(Ð+=¸a¸SÀÀQÀCÐ)HÓIÐIð .Bä˜AœuŸ|™|×,Ñ,Ü! !¤U§\¡\×2Ñ2Ü(Ð+@ÄÀaÃÀ	Ð)JÓKÐKÜ"¤9¨aÕ3ä"Ð%6´t¸A³w°iÐ#@ÓAÐArN   z*FakeTensor cache crosscheck failure: func=z, args=z	, kwargs=z: Dispatch raised=N)r½  r   r¾  r   r‡   rˆ   )r,  Ú	Exceptionr¼  )	r   r7  r”   r<  r.  r/  Útrue_outputr4  rÀ  s	           @rL   r2  Ú'FakeTensorMode._crosscheck_cache_outputn	  s¶   ø€ ÷	Bð0	Ø×-Ñ-¨d¸4ÓHˆKð	Ù˜+Õ.øô ó 	ÜØ<¸T¸Fð CØ�v˜Y v hÐ.@ÀÀðEóð ðûð	ûô ó 	ÜØ<¸T¸Fð CØ�v˜Y v hð0óð ðûð	ús+   ‹' žA §
A±A	Á	AÁ
A5ÁA0Á0A5c                ó6  • U=(       d    0 n[        5          [        R                  SXU5        S S S 5        U[        ;   a  [        U   " U5      $ [        R	                  5       [
        R                  ::  a(  [        R                  SS[        -  U5        [        5       nU[        ;   a  [        U 5         U" U0 UD6sS S S 5        $ U R                  (       a  U R                  XX45      $ U R                  XX45      $ ! , (       d  f       NÑ= f! , (       d  f       NT= f)Nz%s %s %sz'%sFakeTensorMode.__torch_dispatch__: %sÚ )r)   rÝ  r¾  r7  ÚgetEffectiveLevelÚloggingÚDEBUGr}   rx   Ú_DISPATCH_HANDLE_DIRECTLYr¯  rÆ   r8  r,  )r   r”   r<  r.  r/  Úincrs         rL   r	  ÚFakeTensorMode.dispatch¢	  sä   € ð —˜2ˆÜ�]Ü�I‰I�j $¨fÔ5÷ ð Ô*Ó*Ü*¨4Ò0°Ó6Ð6ä× Ñ Ó"¤g§m¡mÓ3Ü�I‰IØ9¸3ÄÑ;PÐRVôô +Ó,ˆDð Ô,Ó,ä-¨dÕ3Ù˜TÐ, VÑ,÷ 4Ñ3ð ××Ø×-Ñ-¨d¸4ÓHÐHà×&Ñ& t°DÓAÐA÷/ �]ú÷" 4Õ3ús   –C9Â2D
Ã9
DÄ

Dc                ó„  ^ ^^^^
^• SSK mSSKJn  SU U4S jjn[        T[        R
                  5      (       aW   U" TTSSSSSS9  [        [        TR                  5       TR                  5       5      5       H  u  nu  p‰ U" X‰5        M     TS4$ Tck  Tbh  [        R                  R                  R                  (       a  [        S	UUU4S jS9  [        T TT5      S4$ [        ST ST S[        U5       ST 35      e U" TT5        TS4$ ! [         ar  m
[        R                  R                  R                  (       a#  [        S	U
U4S
 jS9  [        T TT5      S4s Sm
@
$ [        ST ST S[        U5       ST 35      T
eSm
@
ff = f! [         aw  m
[        R                  R                  R                  (       a%  [        S	U
U4S jS9  [        T TT5      S4s Sm
@
s  $ [        SU SU	 S[        U5       SU ST 3
5      T
eSm
@
ff = f! [         a&  m
[        ST ST S[        U5       ST 35      T
eSm
@
ff = f)z®
Helper to cross-check fake/real output properties & values,
and create new fake vals if mismatched.
Returns tuple of object & boolean, for whether or not it was overwrriten
r   N)Ú_check_fake_real_tensorsc                óŒ  >• [        U [        [        45      (       að  TR                  c  [	        S5      eU R
                  R                  R                  TR                  R                  R                  5       -
  TR                  R                  R                  5       -
  (       dh  TR                  R                  TR                  U R
                  R                  U5      SS9TR                  R                  La  [        SU  SU S35      eg g [        U [         ["        [$        45      (       a  X:w  a  [        SU  SU S35      eg g )Nz3self.shape_env must not be None for symbolic valuesT)Úcompute_hintúmismatch between fake value ú and real value rÆ  )rÞ   r   r   r]  rë   rÝ  ÚexprÚfree_symbolsÚbacked_var_to_valrp  Úreal_tensor_prop_unbacked_valsÚ_maybe_evaluate_staticÚEqÚSÚtruer«   r¦  Úfloatr-  )rö   Úrealr   Úsympys     €€rL   Ú_check_fake_real_valsÚ?FakeTensorMode._maybe_infer_fake.<locals>._check_fake_real_valsÏ	  s9  ø€ ä˜$¤¬Ð 2×3Ñ3à—>‘>Ñ)Ü(ØMóð ð Ÿ	™	Ÿ™×3Ñ3Ø—n‘n×6Ñ6×;Ñ;Ó=ñ>à—n‘n×CÑC×HÑHÓJ÷Kð
 Ÿ™×=Ñ=Ø!ŸH™H T§Y¡Y§^¡^°TÓ:Èð >ð ð  %Ÿw™wŸ|™|ò,ô
 4Ø:¸4¸&Ð@PÐQUÐPVÐVWÐXóð ð,ðKô Ø”sœE¤4Ð(÷ñ ð “<Ü/Ø6°t°fÐ<LÈTÈFÐRSÐTóð ð  ðrN   úReal tensor propagation foundFT)ÚcontextÚsizesÚstridesr†  rt  Úmismatched_fake_kernelc                 ó4   >• [        T5      T R                  S.$ ©N©Úopr�   ©rŒ   r�   ©Úexcr”   s   €€rL   Ú<lambda>Ú2FakeTensorMode._maybe_infer_fake.<locals>.<lambda>ü	  s   ø€ Ü"% d£)Ø&)§j¡jò-rN   ©Úmetadata_fnzFReal tensor propagation found a metadata mismatch between fake tensor z and real tensor z,  at outputz, for func: c                 ó4   >• [        T5      T R                  S.$ ræ  ré  rê  s   €€rL   rì  rí  
  s   ø€ Ü&)¨$£iØ*-¯*©*ò1rN   zIReal tensor propagation found an output size mismatch between fake shape z and real shape z, at outputz.size(z), for func: c                 ó,   >• [        T5      ST  ST 3S.$ )NrÑ  rÒ  rç  ©rŒ   )rö   r”   rÜ  s   €€€rL   rì  rí  
  s"   ø€ Ü! $›iØ$@ÀÀÐFVÐW[ÐV\Ð"]ò)rN   zQReal tensor propagation found an output value mismatch between fake output value z and real output value )rö   r   rÜ  r   r‡   rˆ   )rÝ  Útorch._subclasses.fake_utilsrÎ  rÞ   rr   r   r«   rï   r*  Ú*generate_fake_kernels_from_real_mismatchesr   Ú_infer_fake_from_real_tensorr.   rˆ  r»  rÏ  )r   r”   Úpathrö   rÜ  rÎ  rÞ  ÚjÚs_fakeÚs_realrë  rÝ  s   `` ``     @@rL   Ú_maybe_infer_fakeÚ FakeTensorMode._maybe_infer_fakeÃ	  s–  ý€ ó 	åI÷	ð 	ô< �dœEŸL™L×)Ñ)ðÙ(ØØØ;ØØ!Ø#'Ø"'òô2 (1´°T·Y±Y³[À$Ç)Á)Ã+Ó1NÖ'OÑ#�Ñ#�FðÙ)¨&Ö9ñ (PðT �Uˆ{Ðð1 ‰\˜dÑ.Ü×Ñ×&Ñ&×Q×QÜ!Ø,ö!òô 4°D¸$ÀÓEÀtÐKÐKÜ'ðØ#˜fÐ$5°d°Vð <Ü# D›\˜N¨,°t°fð>óð ðÙ% d¨DÔ1ð �Uˆ{Ðøôu )ó Ü×#Ñ#×*Ñ*×U×UÜ%Ø0õ%òô 8¸¸dÀDÓIÈ4ÐOÕOÜ+ð#Ø#' &Ð(9¸$¸ð @!Ü!'¨£ ¨l¸4¸&ðBóð ð	ûðûô& -ó Ü×'Ñ'×.Ñ.×Y×YÜ)Ø4õ)òô  <¸DÀ$ÈÓMÈtÐS×SÜ/ð&Ø&, XÐ-=¸f¸Xð F$Ü$*¨4£L >°¸°s¸-ÈÀvðOóð ð	ûðûôB )ó Ü+ð)Ø)-¨Ð.EÀdÀVð L Ü & t£˜~¨\¸$¸ðAóð ð	ûðúsa   ºD Â FÃ?	H Ä
FÄAFÅFÅ"!FÆFÆ
HÆAHÇHÇ#$HÈHÈ
H?È!H:È:H?c                óè  ^ ^^^• SSK Jn  SmT R                  (       a  [        T R                  R                  5      mSUU 4S jjn[
        R                  U5      u  p‰[
        R                  U5      u  p« U" SXSXB5        [        [        XŠ5       VVVs/ s H  u  u  pÍnT R!                  TXÍU5      PM     snnn6 u  nn[#        U5      (       a  T(       a  U" 5         [
        R%                  Xù5      $ ! [         ao  m[        R                  R                  R                  (       a,  [        SUU4S jS9  U" 5         [        UU 4S	 jU5      s Sm@$ [        S
U SU ST 35      TeSm@ff = fs  snnnf )z³
Helper to cross-check fake/real output properties & values,
and create new fake vals if mismatched, but at the kernel level.
Means this handles pytree outputs & checks aliasing.
r   )Ú_check_alias_infoNc                 ó’   >• [        [        TR                  R                  5      R	                  T 5      5      TR                  l        g rH   )rC  Úsetr]  Úpending_fresh_unbacked_symbolsÚ
difference)Úpending_unbackedr   s   €€rL   Ú_clear_pending_unbackedÚXFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>._clear_pending_unbackedH
  s4   ø€ Ü<@Ü�D—N‘N×AÑAÓB×MÑMØ$óó=ˆD�N‰NÕ9rN   rà  rä  c                 ó:   >• [        T5      ST R                   3S.$ )Nz>Mismatched aliasing spec between fake kernel and real kernel: rç  ré  rê  s   €€rL   rì  ÚIFakeTensorMode._maybe_infer_fake_kernel_from_pytree_out.<locals>.<lambda>[
  s!   ø€ Ü! $›ià\Ð]`×]gÑ]gÐ\hÐiò)rN   rî  c                ó   >• [        TTU 5      $ rH   )rõ  )râ   r”   r   s    €€rL   rì  r  g
  s   ø€ Ô:¸4ÀÀqÔIrN   zGReal tensor propagation found an aliasing mismatch between fake output z and real output z,  for func: r†   )ró  rý  r]  rC  r   r  Útree_flatten_with_pathÚtree_flattenr«   rr   rï   r*  rô  r   r0   r»  rú  rP  Útree_unflatten)r   r”   Úfake_inÚreal_inÚfake_outÚreal_outrý  r  Úfake_paths_leavesÚ	fake_specÚreal_leavesrÛ   Ú
_fake_pathÚ	_fake_outÚ	_real_outÚfake_leavesÚ	overridesrë  r  s   ``               @@rL   Ú(_maybe_infer_fake_kernel_from_pytree_outÚ7FakeTensorMode._maybe_infer_fake_kernel_from_pytree_out4
  st  û€ õ 	Cð  ÐØ�>�>Ü# D§N¡N×$QÑ$QÓRÐ÷	ð 	ô (.×'DÑ'DÀXÓ'NÑ$ÐÜ×,Ñ,¨XÓ6‰ˆð	áØ/°ÀHôô> "%ô ;>Ø%ô;õò;Ñ6Ñ+�Z¨Yð ×&Ñ& t¨ZÀIÖNñ;óð"
Ñˆ�Yô �	�N‰NÖ/á#Ô%Ü×$Ñ$ [Ó<Ð<øôQ %ó 	ä×Ñ×&Ñ&×Q×QÜ!Ø,õ!òñ (Ô)ÜÝIÈ8óõ ô ,ð#Ø#+ *Ð,=¸h¸Zð H"Ø"& ð)óð ð	ûð)	üô:s+   Á5
C1 Â"E-Ã1
E*Ã;AE%Å
E*ÅE%Å%E*c                ó¢  ^ ^^^^.^/^0^1^2^3^4^5^6^7^8^9• SSK Jn  [        R                  TT45      u  m2m.[	        T25      nU(       aI  T2 Vs/ s H   n[        U5      (       d  M  [        U5      PM"     nn[        R                  SU5        [        $ T2 V	s/ s H  n	T R                  U	5      (       d  M  U	PM     n
n	[        S U
 5       5      =(       d    [        S T2 5       5      m4T R                  m0TT R                  ;   nSnT R                  (       a  T[        R                   R"                  R$                  R&                  L a  ST;   a  TS   R                  S:w  a  S	nT[        R                   R(                  R*                  R&                  L a  S	nT[        R                   R"                  R$                  R&                  L =(       a@    [-        TS   [        R.                  5      =(       a    TS   R0                  R                  S
:H  =(       d    UnU(       a  U
(       a%  [3        T5      (       aë  T4(       dä  U
(       dÝ  U(       dÖ  [5        S U
 5       5      (       d  [7        T S35      eT2 Vs/ s H'  nT R                  U5      (       a  UR8                  OUPM)     nn[        R;                  UT.5      u  nnT" U0 UD6n[        U5      [.        L aJ  T R=                  U5      (       a4  [?        5          URA                  5       nS S S 5        T0RC                  T US	S9$ U(       aY  [E        T5      S:w  d  [E        T5      S:w  a  [7        ST ST 35      e[        TS   5      [.        L a  T0RC                  T TS   5      $ T RG                  TT0T2T.5      u  m2n
@@[5        S U
 5       5      n[-        T[        RH                  RJ                  5      (       Ga°  [        RL                  RN                  TRP                  ;  Ga‡  [        RL                  RR                  TRP                  ;  d  T["        RT                  R&                  L GaA  U(       Ga9  [E        U
5      S:w  Ga)  T4(       Gd!  U(       Gd  T["        RV                  R&                  Laü  T2 Vs/ s H'  nT R                  U5      (       a  UR8                  OUPM)     nn[        R;                  UT.5      u  nn[?        5          T" U0 UD6nS S S 5        [        RY                  W5      nU V	s/ s H  n	[-        U	[.        5      (       d  M  U	PM     nn	[5        U 4S jU 5       5      nU(       a   [        R[                  [.        U0U 4S jU5      $ U H  nT0R]                  U5        M     [        R;                  T2T.5      u  mm[-        T[        RH                  R^                  5      (       aa  TU;   a[  T R`                  c  [b        Rd                  OT R`                  Rf                  nT    U" 5          UT   " T0 TD6sS S S 5        sS S S 5        $ T Ri                  TU
TT5            S,U 4S jjnSSK5J6m/J7m3  [q        5       m5T5m8T Rr                  (       aò  [5        S U
 5       5      (       aÛ  [        U3U U94S jT2 5       5      (       d¿  [t        R                  ST5        T2 Vs/ s H  nU" U5      PM     nn[        R;                  UT.5      u  m6m7[v        Rx                  " T5      nU(       d  [v        Rz                  " TUT.5      n T" T60 T7D6m8U(       d2  WR                  5         [v        R€                  " TR‚                  T2T85        OQT Rr                  (       a@  [t        R                  STU
T2T R`                  (       a  T R`                  R„                  OS 5        S-UU/U3UUU5U6U7U8U 4
S jjnT4(       a.  [‡        5       R‰                  T5      nUb  U" U" T /TQ70 TD65      $ T[        R                   R"                  RŠ                  R&                  L ad  [E        T5      S:”  a  TS   OTR‰                  S5      nTR‰                  S5      n [�        T TS   UU S9n!U![        La  U" [�        [�        U!5      5      $ SSKIJJn"  TU";  a¼  T R—                  T5      (       d¦  T4(       a  TT R˜                  ;   d�  SS KIJMn#  TU#;   aK  T4(       d'  [�        T5      (       a4  [5        S! U
 5       5      (       a  T    U" U#T   " T0 TD65      sS S S 5        $ T    TRž                  " T0 TD6n$U$[        La  U" U$5      sS S S 5        $  S S S 5        S"TR                   R¢                  ;   aE  [¥        TS#5      (       a4  [§        T5      (       d$  T    U" TR¨                  " T0 TD65      sS S S 5        $ [        Rª                  R¬                  R®                  n%U%b'  TU%R°                  ;   a  U%R²                  " TT /TQ70 TD6$ T Rr                  (       ak  T8T5Laf  [v        Rx                  " T5      (       dK  T R`                  b>  [v        R´                  " T5      (       d#  [·        T TT85      n&[¹        S$U4S% jS&9  U" U&5      $ [        Rº                  R¼                  R¾                  RÁ                  TR£                  5       5      RÂ                  RÄ                  n'U'(       a~   [        Rº                  RÂ                  RÇ                  T T5      m1[        Rº                  RÂ                  RÉ                  U14S' j5         T    U'" T0 TD6n&U" U&5      sS S S 5        sS S S 5        $ [Ì         H5  u  n)n*U)" T5      (       d  M  U*" T T/TQ70 TD6n!U![        Ld  M-  U" U!5      s  $     S.   S/UU.U2UU4UU 4S) jjjn+[Ï        T5      (       d  U+" 5       n,U" U,5      $  [Ñ        T 5         T" T0 TD6n$S S S 5        U" T RÙ                  W$TT2TR‰                  S5      S+95      $ s  snf s  sn	f s  snf ! , (       d  f       G	N= fs  snf ! , (       d  f       GNP= fs  sn	f ! , (       d  f       O= fS S S 5        GM=  ! , (       d  f       GNL= fs  snf ! [|         a"  n[t        R                  STU5         S nAGN~S nAff = f! , (       d  f       GNŸ= f! , (       d  f       GNy= f! , (       d  f       GN,= f! , (       d  f       O= fS S S 5        GM§  ! , (       d  f       GN¶= f! [Ê         am  n(T Rr                  (       aU  T8T5LaP  [v        Rx                  " T5      (       d5  T R`                  b(  [·        T TT85      n&[¹        S$U4S( jS&9  U" U&5      s S n(A($ U(eS n(A(ff = f! , (       d  f       GN³= f! [Ò         a  n-U+" U-5      s S n-A-$ S n-A-f[Ô         a    [t        R×                  S*T5        e f = f)0Nr   rN  z,FakeTensorMode unrecognized subclass(es): %sc              3  ó8   #   • U  H  oR                   v •  M     g 7frH   )r�  )rÍ   r‹  s     rL   rÐ   Ú0FakeTensorMode._dispatch_impl.<locals>.<genexpr>ž
  s   é € ð !
Ú3H¨a×)Ö)Ò3Hùó   ‚c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7frH   )rÞ   r   )rÍ   r½  s     rL   rÐ   r   
  s   é € Ð:²	¨1”˜Aœv×&Ð&²	ùó   ‚Fr–   rB  Tr“  c              3  ó<   #   • U  H  oR                   S Lv •  M     g 7frH   rY  ©rÍ   rü   s     rL   rÐ   r  Ê
  s   é € ÐMÒ7L°!—z‘z¨Õ-Ò7Lùó   ‚z. should not have fake inputs without constants©r‰  r5   z1Expected exactly one arg for lift func, got args=z kwargs=c              3  ó<   #   • U  H  oR                   S Lv •  M     g 7frH   rY  ©rÍ   r4  s     rL   rÐ   r  ü
  ó   é € ÐQÒ;P°aŸ:™:¨TÕ1Ò;Pùr!  c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frH   )Úmay_turn_const)rÍ   rü   r   s     €rL   rÐ   r    s!   øé € ÐPÒ?O¸!˜t×2Ñ2°1×5Ð5Ò?Oùrƒ  c                ó&   >• TR                  TU SS9$ )NTr"  )r�  )rü   Ú	converterr   s    €€rL   rì  Ú/FakeTensorMode._dispatch_impl.<locals>.<lambda>  s   ø€ ˜i×8Ñ8¸¸qÐPTÐ8ÑUrN   c                óÐ  >• [        U [        5      (       a  U R                  $ [        U [        5      (       a�  TR                  c  [        S5      eU R                  R                  U R                  R                  R                  TR                  R                  5      R                  TR                  R                  5      5      $ [        U [        5      (       a  U R                  $ U $ )Nz2self.shape_env must not be None for symbolic types)rÞ   rß   r  r(   r]  rë   rÝ  r”  rÓ  ÚxreplacerÕ  rÖ  r   Úreal_obj)rü   r   s    €rL   Úmaybe_to_real_tensorÚ;FakeTensorMode._dispatch_impl.<locals>.maybe_to_real_tensor<  s±   ø€ ô ˜!œZ×(Ñ(Ø—}‘}Ð$Ü˜Aœ|×,Ñ,Ø—>‘>Ñ)Ü(ØLóð ð —v‘v—}‘}Ø—F‘F—K‘K×(Ñ(¨¯©×)IÑ)IÓJ×SÑSØŸ™×EÑEóóð ô
 ˜AÔ/×0Ñ0Ø—z‘zÐ!à�rN   )Úcompute_unbacked_bindingsÚfree_unbacked_symbolsc              3  ó<   #   • U  H  oR                   S Lv •  M     g 7frH   )r  r$  s     rL   rÐ   r  Z  s   é € ÐMÒ7L°!—M‘M¨Õ-Ò7Lùr!  c              3  óÈ   >#   • U  HW  n[        U[        5      =(       a;    T" U5      =m=(       a*    TR                  S L=(       a    [        U4S jT 5       5      v •  MY     g 7f)Nc              3  óV   >#   • U  H  nUTR                   R                  ;  v •  M      g 7frH   )r]  rÖ  )rÍ   Úsr   s     €rL   rÐ   Ú:FakeTensorMode._dispatch_impl.<locals>.<genexpr>.<genexpr>`  s'   øé € ð â!%˜Að  §¡×!NÑ!NÖNÚ!%ùs   ƒ&))rÞ   r(   r]  rP  )rÍ   r½  r1  r   Úsymss     €€€rL   rÐ   r  [  sg   øé € ð ò #�Aô ˜q¤,Ó/÷ Ù!6°qÓ!9Ð9˜÷àŸ™¨dÐ2÷ô ô á!%óó ôò #ùs   ƒAA"zpropagate_real_tensors %sz9real-tensor fallback failed for %s: %s; silently ignoringz,SKIPPED propagate_real_tensors %s(%s, %s) %sc           	     óf  >
^^• SS K m[        R                  ST5        SUUUU4S jjmTTLGa  [        R                  R
                  R                  (       d  TR                  TTT4T	T
4U T5        OTR                  TTT4T	T
4U T5      n [        U [        5      (       dr  [        T[        5      (       d]  [        U 5      [        T5      LaF  [        T[        [        R                  U 5      5      [        [        R                  T5      5      5        O[        TU T5        T" TR                  U SS9  U $ )Nr   zmaybe_propagate_real_tensors %sc                ó2  >• [        U [        5      (       aÇ  [        R                  S[	        U 5      [	        U5      5        Xl        [        U R                  5       UR                  5       5       H  u  p#T" X#5        M     [        U R                  5       UR                  5       5       H  u  p#T" X#5        M     T" U R                  5       UR                  5       5        g [        U [        5      (       Ga$  T" U 5      (       Ga  [        U R                  R                  TR                  5      (       aI  TR                  c  [        S5      eTR                  R!                  U R                  R                  U5        g [        U R                  R                  =nTR"                  5      (       ak  [        UR$                  TR                  5      (       aE  UR&                  S:X  a4  TR                  c  [        S5      eTR                  R!                  X!5        g g g g g g )Nz%maybe_propagate_real_tensors %s -> %sz3self.shape_env must not be None for symbolic Symbolr5   z/self.shape_env must not be None for symbolic Eq)rÞ   rß   rÝ  r¾  rÞ  r  r»  rÏ  rƒ  r†  r(   rÝ  rÓ  ÚSymbolr]  rë   Ú"set_real_tensor_prop_unbacked_valsrØ  ÚlhsÚrhs)rü   Úreal_tr5  Úreal_sr1  Úgor   rÝ  s       €€€€rL   r@  ÚOFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors.<locals>.go˜  sŽ  ø€ Ü˜a¤×,Ñ,ä—I‘IØ?ÄÀAÃÌÈ6Ë
ôð %+”MÜ%(¨¯©«°6·;±;³=Ö%A™	˜Ù˜1žñ &Bä%(¨¯©«°V·]±]³_Ö%E™	˜Ù˜1žñ &Fá�q×'Ñ'Ó)¨6×+@Ñ+@Ó+BÕCÜ ¤<×0Ò0Ñ5JÈ1×5MÒ5MÜ! !§&¡&§+¡+¨u¯|©|×<Ñ<ØŸ>™>Ñ1Ü"0Ø Uó#ð ð Ÿ™×IÑIØŸF™FŸK™K¨õô #¨¯©¯©Ð#3 1°U·X±X×>Ñ>Ü& q§u¡u¨e¯l©l×;Ñ;ØŸE™E Q›JàŸ>™>Ñ1Ü"0Ø Qó#ð ð Ÿ™×IÑIÈ!ÕTð 'ð <ð ?ð 6NÐ0rN   T)Úpeek)rü   rR   r>  r   r‡   rˆ   )rÝ  rÝ  r¾  rr   rï   r*  rô  r  rÞ   r   ré   r1   r‘  r  r	  r]  )r  r@  rÝ  r.  r0  r1  r”   r/  ÚnilÚ	real_argsÚreal_kwargsr  r   s    @@€€€€€€€€€€rL   Úmaybe_propagate_real_tensorsÚCFakeTensorMode._dispatch_impl.<locals>.maybe_propagate_real_tensors“  s  ú€ Ûä�I‰IÐ7¸Ô>÷Uò UðB ˜sÓ"ä×'Ñ'×.Ñ.×Y×YØ×AÑAØØ˜v˜Ø" KÐ0Ø Ø õð  $×LÑLØØ˜v˜Ø" KÐ0Ø Ø ó �Hô # 8¬V×4Ñ4Ü& x´×8Ñ8Ü˜X›¬d°8«nÒ<ô ØÜœf×1Ñ1°(Ó;Ó<Üœf×1Ñ1°(Ó;Ó<õô ˜b (¨HÔ5ñ
 *¨$¯.©.¸(ÈÒNàˆOrN   rw  rò  rô  )Ú
meta_tabler  c              3  óB   #   • U  H  n[        U5      (       + v •  M     g 7frH   )r   r$  s     rL   rÐ   r  
  s   é € ÐPÒ:O°Q¤¨aÓ 0×0Ñ0Ò:Oùr  zprims::Úprim_meta_implÚmissing_fake_kernelc                 ó   >• S[        T 5      0$ ©Nrè  rò  r  s   €rL   rì  r*  9  s   ø€ Øœc $›iñ)rN   rî  c                 ó   >• T $ rH   rc   )Úctxs   €rL   rì  r*  G  s   ø€ ÁSrN   c                 ó   >• S[        T 5      0$ rM  rò  r  s   €rL   rì  r*  X  s   ø€ Ø ¤# d£)ñ-rN   c                óF  >• [         R                  R                  R                  T5      (       a.  [         R                  R                  R                  " T/TQ70 TD6$ T(       d  TR                  T5      (       d  [        T5      eU c  [        T5      n [        TTTTU 5      $ rH   )rr   ra  rb  Úcan_generate_trivial_fake_implÚgenerate_trivial_fake_implÚcan_run_unsafe_fallbackr¥   Úrun_fallback_kernel)Úerrorr.  Ú	args_specrb  r”   Úhas_symbolic_sizesr/  r   s    €€€€€€€rL   Úmaybe_run_unsafe_fallbackÚ@FakeTensorMode._dispatch_impl.<locals>.maybe_run_unsafe_fallbackk  s’   ø€ ô �~‰~×#Ñ#×BÑBÀ4×HÑHÜ—~‘~×+Ñ+×FÒFØðØòØ#)ñð ö "¨×)EÑ)EÀd×)KÑ)KÜ2°4Ó8Ð8Ø‰}Ü4°TÓ:�Ü& t¨T°9¸iÈÓOÐOrN   z*failed while attempting to run meta for %srž  )rü   rE   r‡   z)T | Tensor | torch._C.ScriptObject | None)r  rE   r‡   rE   rH   )rV  zRuntimeError | Noner‡   r—  )mrV  rO  r  r	  Ú_check_for_subclassÚ_check_for_subclass_argré   r9  r¾  rp  rú  rP  rã  r_  r   rr   rõ  rö  Ú_to_copyrø  r]  Ú
device_putrÞ   r   r–   r¶  Úallrë   r	  r
  r'  r)   Úcloner�  r6  Ú%validate_and_convert_non_fake_tensorsr)  r@   rW  Únondeterministic_seededrY  r[  Údetach_Ú_nested_tensor_from_tensor_listr  Útree_map_onlyr?  r*  r]  r¨  r©  Úignore_fresh_unbacked_symbolsÚinvalidate_written_to_constantsri  r0  r1  rR   râ  rÝ  Úlibrary_utilsrc  ÚMutationCheckerÚZeroDivisionErrorÚcheckÚcheck_aliasing_constraintrÁ  rÖ  Úget_fast_op_implsrK  rù  Úmaybe_to_dense_mkldnnr   rß   r  rH  Úcpp_meta_supports_symintÚ#_unbacked_special_fake_handling_opsr  r  Ú	decomposer  r´  rÿ  Ústride_incorrect_oprJ  rç  r*  Ú_custom_ops_profileÚdataÚgeneric_fake_kernelÚhas_fake_kernelÚ"inferred_fake_kernel_from_real_outr   ra  Úsimple_registryÚ	singletonÚfindÚ	fake_implÚkernelÚFakeImplCtxÚset_ctx_getterr   Úop_implementations_checksÚhas_metar¯  rÿ  rÂ  r
  Ú+wrap_meta_outputs_with_default_device_logic):r   r”   r<  r.  r/  rO  Úhas_unrecognized_typesrâ   r>  rü   Úflat_arg_fake_tensorsÚis_lift_funcÚavoiding_device_initÚ!device_conversion_skip_const_propr½  Úconst_flat_argsÚ
const_argsÚconst_kwargsrØ   Úall_constantÚflat_outÚflat_out_tensorsr>  Ú#maybe_ignore_fresh_unbacked_symbolsr.  Úreal_flat_argsrc  Úmutation_checkerrë  rF  Ú	fast_implrw  rò  Úop_impl_outrH  r  rà  Úprofilesr–  Úmaybe_fake_implr4  Úrun_impl_checkÚop_implrY  ÚfallbackÚnot_implemented_errorrW  r0  r)  rO  rb  r1  rX  rC  rD  rE  r  r7  s:   `` ``                                         @@@@@@@@@@@@rL   r,  ÚFakeTensorMode._dispatch_impl€
  sí  ÿÿ€ õ 	Jä%×2Ñ2°D¸&°>ÓBÑˆ	�9ô "5°YÓ!?ÐÞ!á!*ó"Ú!*˜AÔ.EÀa×.H“”�Q–¡ð ð "ô  ×%Ñ%Ø>Ð@Rôô "Ð!á,5Ó MªI q¸×9IÑ9IÈ!×9L§©IÐÐ MÜ ñ !
Ù3Hó!
ó 
÷ ;äÑ:±	Ó:Ó:ð 	ð ×.Ñ.ˆ	à˜tŸ}™}Ñ,ˆð  %ÐØ×!×!àœŸ	™	Ÿ™×/Ñ/×7Ñ7Ò7Ø Ó&Ø˜8Ñ$×)Ñ)¨UÓ2à'+Ð$Ø”u—y‘y—‘×1Ñ1×9Ñ9Ò9Ø'+Ð$ð ”E—I‘I—N‘N×+Ñ+×3Ñ3Ð3÷ .Ü˜4 ™7¤E§L¡LÓ1÷.à�Q‘—‘×#Ñ# vÑ-÷-"ð "ð	 	*ö Ö!6Ü+¨D×1Ñ1Þ&Þ)Þ5äÑMÑ7LÓM×MÑMÜ$Ø�fÐJÐKóð ñ CLóÚBK¸Q˜d×.Ñ.¨q×1Ñ1�—
’
°qÒ8Á)ð ð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜Ù˜
Ð3 lÑ3ˆCÜ�C‹yœFÒ" t×':Ñ':¸3×'?Ñ'?ô !•]ØŸ)™)›+�C÷ #à ×1Ñ1°$¸È4Ð1ÐPÐPö Ü�6‹{˜aÓ¤3 t£9°£>Ü$ØGÈÀvÈXÐV\ÐU]Ð^óð ô �D˜‘G‹}¤Ò&Ø ×1Ñ1°$¸¸Q¹Ó@Ð@ð .2×-WÑ-WØ�)˜Y¨	ó.
Ñ*ˆÐ)ð �&ô ÑQÑ;PÓQÓQˆä�tœUŸZ™Z×2Ñ2×3Ò3Ü—	‘	×1Ñ1¸¿¹ÔBô —	‘	×&Ñ&¨d¯i©iÓ7¸4Ä4Ç<Á<×CWÑCWÓ;WçÜÐ)Ó*¨aÔ/ß&ß(ØœD×@Ñ@×HÑHÒHñ CLóÚBK¸Q˜d×.Ñ.¨q×1Ñ1�—
’
°qÒ8Á)ð ð ô (.×'<Ñ'<¸_ÈiÓ'XÑ$ˆJ˜ô •Ù˜JÐ7¨,Ñ7�÷ ô ×)Ñ)¨#Ó.ˆHÙ+3ÓMª8 a´zÀ!ÄV×7L§©8ÐÐMÜÔPÑ?OÓPÓPˆLæÜ×+Ñ+ÜÝUØóð ó (�Ø×5Ñ5°cÖ:ñ (ô
 ×,Ñ,¨Y¸	ÓB‰ˆˆfô �tœUŸZ™Z×;Ñ;×<Ñ<ØÐ/Ó/ð
 —>‘>Ñ)ô ×&Ò&à—^‘^×AÑAð 0ò Ñ:Õ<Ø.¨tÒ4°dÐE¸fÑE÷ =Ð<—‘ð 	×,Ñ,¨TÐ3HÈ$ÐPVÔWð	Øð	à6÷	÷(	
ô
 ‹hˆàˆà×'×'ÜÑMÑ7LÓM×MÑMÜö ñ #ó÷ ñ ô �I‰IÐ1°4Ô8Ù?HÓIºy¸!Ñ2°1Ö5¹yˆNÐIÜ%+×%:Ñ%:¸>È9Ó%UÑ"ˆI�{ä&×1Ò1°$Ó7ˆJÞÜ#0×#@Ò#@Ø˜.¨)ó$Ð ð
Ù Ð:¨kÑ:�ö Ø ×&Ñ&Ô(Ü×7Ò7¸¿
¹
ÀIÈxÔXøà×(×(ô �I‰IØ>ØØ%Øà—>—>ð —‘×=Ò=àô÷O	÷ O	ð O	öd Ü)Ó+×/Ñ/°Ó5ˆIØÑ$Ù3±I¸dÐ4TÀTÒ4TÈVÑ4TÓUÐUà”5—9‘9—>‘>×*Ñ*×2Ñ2Ò2ô
  # 4›y¨1›}�D˜’G°&·*±*¸WÓ2EˆEØ Ÿ*™* ]Ó3ˆKÜ/Ø�d˜1‘g U¸ñˆKð ¤.Ò0Ù3´D¼À[Ó4QÓRÐRõ 	-ð ˜
Ó"Ø×1Ñ1°$×7Ñ7æ" t¨t×/WÑ/WÓ'Wõ :ð Ð*Ó*Þ"ô 0°×5Ñ5ÜÑPÑ:OÓP×PÑPò Ù7Ø+¨DÒ1°4ÐB¸6ÑBó÷ ‘Tò
 à—N’N DÐ3¨FÑ3�ØœNÒ*Ù7¸Ó:÷	 ‘ð +÷ ð ˜Ÿ™×*Ñ*Ó*Ü˜Ð.×/Ñ/Ü'¨×-Ñ-âÙ3Ø×'Ò'¨Ð8°Ñ8ó÷ ‘ô
 —=‘=×'Ñ'×;Ñ;ˆØÑØ�x—}‘}Ó$Ø×3Ò3°D¸$ÐPÀÒPÈÑPÐPð ×'×'Ø Ò#Ü!×,Ò,¨T×2Ñ2Ø—‘Ñ*ô !×0Ò0°×6Ñ6Ü;¸DÀ$ÈÓQ�ä!Ø)ô!òñ 4°FÓ;Ð;ô  Ÿ.™.×8Ñ8×BÑB×GÑGØ�I‰I‹Kó
ç
‰)—F‘Fð 	ö ðÜ—n‘n×.Ñ.×:Ñ:¸4ÀÓF�Ü—^‘^×-Ñ-×<Ñ<¼[ÕIÊ4Ù,¨dÐ=°fÑ=�FÙ7¸Ó?÷ LPÈ4×IÑI÷8 (AÑ#ˆN˜GÙ˜d×#Ó#á% d¨DÐB°4ÒB¸6ÑB�Ø¤nÔ4á7¸ÓDÒDñ (Að *.ð	PØ&ð	Pà÷	Pö 	Pô( ˜�~‰~Ù0Ó2ˆHÙ/°Ó9Ð9ð
	Ü-¨dÕ3Ù˜$Ð) &Ñ)�÷ 4ñ ,Ø×<Ñ<Ø�4˜¨6¯:©:°hÓ+?ð =ð ó
ð 	
ùòu"ùò !Nùòb÷ #–]üòj÷ –üò  N÷< =Õ<ú———‘üòd Jøô %ó ô —	‘	ØOØØ÷ò ûð	ú÷r –Tú÷
 –ú÷" –ú÷H LPÍ4ú×I×I×IÑIûô $ó ð ×/×/Ø ¨Ò+Ü)×4Ò4°T×:Ñ:ØŸ™Ñ2ä?ÀÀdÈHÓU�Fä%Ø-ô%òñ 8¸Ó?Õ?à�Gûð'ú÷x 4Ö3ûä"ó 	DÙ,Ð-BÓCÕCûÜó 	Ü�M‰MÐFÈÔMØð	úsL  ÁpÁpÂpÂ.pÉ*.pË-pÒ.p$Ó	p)Ôp;Ôp;×9qØq Ø	qÚ1q.Üq3 ã7r"ä#r4æsëAt ì's4ì*sì:	s4í	t ï v ï	v ïv ð
p!ð)
p8ñ 
q	ñ
qñ
q+ñ3
rñ=ròrò"
r1ò4
só
só
s&	ó"s4ó)t ó4
tó>t ôt ô
u=ôA u8õ0u=õ6u8õ8u=ö 
vö
v öv ö
wöv)ö#wö)%wÚ
debugprimsr]  rö  ÚxlaÚvisionÚ	torchtextÚ
torchaudioÚ	quantizedc                óŒ   • U R                   (       d  gUR                  U R                  ;   =(       d    UR                  5       S:H  $ )NFzfbgemm::gmm)rÚ  Ú	namespaceÚ+_can_run_unsafe_fallback_allowed_namespacesr´  ©r   r”   s     rL   rT  Ú&FakeTensorMode.can_run_unsafe_fallback¥  s:   € Ø×*×*Øð
 �N‰N˜d×NÑNÑN÷ ,Ø�y‰y‹{˜mÑ+ð	
rN   c                ól   ^ ^^^^^• / mSUUUUUU 4S jjnT Vs/ s H
  oe" U5      PM     nnUT4$ s  snf )z¿
Checks if the list of tensors are fake tensors.
If not, try to convert them to fake tensors.
Returns the original args, kwargs, and a flattened list of (args, kwargs) that are fake tensors.
c                ó¸  >• [        U [        5      (       d  U $ TR                  U 5      (       Gd  [        T
S5      (       aX  [        R
                  R                  T
R                  ;   a0  [        R                  T	T5      u  p[        S[        T
X5       35      e[        R                  c  TR                  O[        R                  nU(       dg  [        U [        5      (       a"  U R                   nUTLa  [        SU ST 35      e[        R                  T	T5      u  p[        S[        T
X5       35      eTR#                  TU 5      nOU nTR%                  U5        U$ )NrY  zECan't call metadata mutating ops on non-Fake Tensor inputs. Found in z"Mixing fake modes NYI x.fake_mode=z	 vs self=zuPlease convert all Tensors to FakeTensors first or instantiate FakeTensorMode with 'allow_non_fake_inputs'. Found in )rÞ   r   rú  rÿ  rr   rW  r[  rY  r  r
  rë   r"   r,  r±   rÛ  rß   rÇ   r�  rÓ   )râ   r.  r/  rÛ  Úx_fake_moderØ   rW  r)  rƒ  rb  r”   r   s         €€€€€€rL   ÚvalidateÚFFakeTensorMode.validate_and_convert_non_fake_tensors.<locals>.validate¾  sZ  ø€ Ü˜a¤×(Ñ(Ø�ð ×#Ñ# A×&Ò&Ü˜4 ×(Ñ(¬U¯Y©Y×-CÑ-CÀtÇyÁyÓ-PÜ#)×#8Ñ#8¸ÀIÓ#N‘L�DÜ(Ø_Ô`kÐlpÐrvÓ`ð  `Að  Bóð ô
 '×EÑEÑMð ×.Ò.ä(×GÑGð &ö
 -Ü! !¤Z×0Ñ0à&'§k¡k˜Ø&¨dÒ2Ü"0Ø"DÀ[ÀMÐQZÐ[_ÐZ`Ð aó#ð ô $*×#8Ñ#8¸ÀIÓ#N‘L�DÜ(ðBÜBMÈdÐTXÓBaÐAbðdóð ð
  ×0Ñ0°°qÓ9‘à�à!×(Ñ(¨Ô-ØˆJrN   )râ   rE   r‡   úT | FakeTensorrc   )	r   r”   r)  rb  rW  r§  r½  Úvalidated_argsrƒ  s	   `````   @rL   ra  Ú4FakeTensorMode.validate_and_convert_non_fake_tensors°  sA   ý€ ð 35Ð÷#	ô #	ñJ 09Ó9ªy¨!˜( 1ž+©yˆÐ9ØÐ4Ð4Ð4ùò :s   š1c           
     óZ  ^ ^^^^^^^	^
• T R                   mS mSmSm
S m	T[        R                  R                  L d  T[        R                  R                  L a:  [        T5      S:X  a+  [        TS   [        5      (       a  TS   R                  m	T	S Lm
SUUUUUUU	U
U 4	S jjn[        XQ5      $ )NFr5   r   c                óÀ  >	^ • [        T [        5      (       d  T $ Tc  [        R                  TT5      u  mmTR	                  T 5      nU(       aG  [
        R                  " T R                  T:H  UU 4S j5        T
(       a  T	T l        [        [        T 5      $ TbF  T(       a  TR                  TT 5      nOTR                  TT T=(       d    T5      nT
(       a  T	Ul        U$ T $ )Nc                 ó(   >• STR                    ST  3$ )Nz-FakeTensor is wrapped to wrong device, found z, expected rž  )r•   r4  s   €€rL   rì  ÚZFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrap.<locals>.<lambda>  s   ø€ ÐKÈAÏHÉHÈ:ÐU`ÐanÐ`oÑprN   )rÞ   r   rß   rd  rú  rr   Ú_checkr–   rK   r   rE   r�  r•  )r4  rú  rØ   r•   r)  r–   rb  r”   rc  Úinput_dispatch_keysÚpreserve_dispatch_keysr   s   `  €€€€€€€€€rL   ÚwrapÚHFakeTensorMode.wrap_meta_outputs_with_default_device_logic.<locals>.wrapü  sÔ   ù€ ô ˜a¤×(Ñ(Ø�àÑ$ô ×2Ñ2°4¸ÓCñØ!Ø*ð ×*Ñ*¨1Ó-ˆKÞÜ—’Ø—H‘H Ñ-Ýpôö *Ø&9�A”OÜœA˜q“zÐ!ØÑ&Þ)ð $×4Ñ4°T¸1Ó=‘Cà#×8Ñ8Ø˜a ×!8¨=ó�Cö *Ø(;�CÔ%Ø�
ð �rN   ©r4  rE   r‡   r©  )
rã  rö  Úaliasrø  Údetachr6  rÞ   rß   rK   r0   )r   rà  r”   rb  r–   r³  r•   r)  rc  r±  r²  s   ` ``` @@@@@rL   r�  Ú:FakeTensorMode.wrap_meta_outputs_with_default_device_logicæ  s�   ÿø€ ð ×.Ñ.ˆ	ð ˆØ!&ÐØ!&ÐØ"Ðà”T—Z‘Z×'Ñ'Ò'¨4´4·;±;×3FÑ3FÒ+FÜ�I“ !Ó#Ü˜9 Q™<¬×4Ñ4à"+¨A¡,×"<Ñ"<ÐØ%8ÀÐ%DÐ"÷%	÷ %	ôN ˜Ó Ð rN   rh  c               ó¬  • SS K nSSKJn  Uc=  U R                  nU R                  (       d  [        S5      eU =R                  S-  sl        UR                  " U" US5      5      nUR                  R                  R                  S5      nU R                  c  [        S5      eU R                  R                  U R                  R                  UUS9UUS9nU$ )	Nr   )ÚNestedIntNodez4should only be called while FakeTensorMode is activer5   Úintermediate_offsets_or_lengthszself.shape_env must not be None)ÚvalrS  )Úsymrd  rS  )rï  Ú!torch.nested._internal.nested_intrº  rØ  rë  rë   r   rç  rS  ÚEphemeralSourcer]  r‡  Úcreate_symbol)r   ri  rr   rº  rd  ÚsrcÚrets          rL   rj  Ú)FakeTensorMode.create_symbolic_nested_int%  sÒ   € ó
 	4ÝCàÑØ×4Ñ4ˆLØ×#×#Ü$ØJóð ð ×%Ò%¨Ñ*Õ%Ø�|Š|™M¨,¸Ó:Ó;ˆà�m‰m×"Ñ"×2Ñ2Ð3TÓUˆØ�>‰>Ñ!Ü Ð!BÓCÐCØ�n‰n×.Ñ.Ø—‘×,Ñ,ØØð -ð ð Øð /ð 
ˆð ˆ
rN   c                óp   • [         R                  R                  UR                  ;   a  gXR                  ;   $ r¸   )rr   rW  Ú	view_copyrY  Ú_cpp_meta_supports_symintr¢  s     rL   ro  Ú'FakeTensorMode.cpp_meta_supports_symintX  s*   € Ü�9‰9×Ñ $§)¡)Ó+ØØ×5Ñ5Ñ5Ð5rN   c                óØ   • UR                  5       [        :*  =(       aM    [        U5      (       + =(       a6    U R                  U5      (       + =(       a    UR                  R
                  S:g  $ rü  )ÚnumelÚCONSTANT_NUMEL_LIMITr   rú  r–   ré   rù  s     rL   r'  ÚFakeTensorMode.may_turn_const_  sS   € à�G‰G‹IÔ-Ñ-÷ (Ü! !Ó$Ô$÷(à×$Ñ$ QÓ'Ô'÷(ð —‘—‘ Ñ'ð		
rN   c                óÐ  • [        S U 5       5      n[        U5      nU(       aÂ  UR                  5       (       a¬  [        UUUSS9u  pxUR	                  5        H‰  u  pšU	S:w  d  UR                  U	5      (       a  U	OSn	U R                  U
5      (       d  M=  UR                  U	5      (       d  MU  U
R                  c  Md  U R                  R                  U
R                  5        M‹     g g g )Nc              3  ó<   #   • U  H  oR                   S Lv •  M     g 7frH   rY  r$  s     rL   rÐ   ÚAFakeTensorMode.invalidate_written_to_constants.<locals>.<genexpr>n  r%  r!  TrP  Úinputr   )
rP  r  Ú
is_mutabler$   r»   Úhas_argumentrú  r	  rã  r?  )r   r”   rƒ  r.  r/  Úany_constantÚschema_inforÛ   rg  Úkrõ   s              rL   rg  Ú.FakeTensorMode.invalidate_written_to_constantsg  sÇ   € ô ÑQÑ;PÓQÓQˆÜ% dÓ+ˆÞ˜K×2Ñ2×4Ñ4Ü.ØØØØ-1ñ	‰MˆAð #×(Ñ(Ö*‘�Ø˜w›,¨+×*BÑ*BÀ1×*EÑ*E‘AÈF�à×$Ñ$ Q×'Ó'Ø#×.Ñ.¨q×1Ó1ØŸ
™
Ó.à×.Ñ.×JÑJÈ1Ï:É:ÖVò +ð 5ˆ<rN   )rÖ  rS  rT  rU  c          	     ó   • [        U[        5      (       a  UR                  U L a  Uc  Uc  Uc  U$ U R                  nUc  U R                  nU(       a  Ub  [        S5      eS nU R                  R                  U UUUUUS9$ )Nz2cannot set both static_shapes and symbolic_context)r]  rS  rT  rU  )rÞ   rß   rÇ   r]  rÖ  rë   rã  r�  )r   r<  rÖ  rS  rT  rU  r]  s          rL   r2  ÚFakeTensorMode.from_tensor€  sŸ   € ô �vœz×*Ñ*Ø× Ñ  DÒ(ØÑ%Ø‘Ø Ñ(àˆMà%)§^¡^ˆ	ØÑ Ø ×.Ñ.ˆMÞØÑ+Ü$ØHóð ð ˆIØ×)Ñ)×:Ñ:ØØØØØ-Øð ;ð 
ð 	
rN   )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ˆ   r†   )rü   rR   r‡   zTypeGuard[FakeTensor]rq  )r‡   rŒ   rv  )r‡   r   )r  ztype[BaseException] | Noner  zBaseException | Noner  zTracebackType | Noner‡   rˆ   )r‡   rÊ  )
r  r6   r”   r@   r.  rx  r/  ry  r‡   r¤  )r”   r@   r.  rx  r/  ry  r‡   rˆ   )
r–  r›  r.  z:Mapping[str, object] | Sequence[object] | Iterable[object]r  r6   r˜  r›  r‡   rˆ   )r  r6   rÎ   r¤  r”   r@   r.  rx  r/  ry  r7  r—  r‡   rˆ   )r  r6   rÎ   r¤  r”   r@   r.  rx  r/  ry  r7  rß   r‡   rº  )r  r6   rÎ   r¤  r”   r@   r.  rx  r/  ry  r7  r—  r‡   rÀ  )r  r6   r6  rº  rÎ   r¤  r”   r@   r.  rx  r‡   r—  )r  r6   r6  rÀ  rÎ   r¤  r”   r@   r.  rx  r‡   ú1FakeTensor | None | tuple[FakeTensor | None, ...])r7  rØ  r”   r@   r<  rw  r.  rx  r/  ry  r‡   rˆ   )
r”   r@   rö  r-   rö   rR   rÜ  rR   r‡   ztuple[object | None, bool])r”   r@   r  rR   r  rR   r  rR   r  rR   r‡   zobject | None)
r”   r@   r<  rw  r.  rx  r/  ry  r‡   r—  ©r”   r@   r‡   r-  )
r”   r@   r)  r'  rb  rx  rW  r2   r‡   z%tuple[list[object], list[FakeTensor]])
rà  rR   r”   r@   rb  rx  r–   rš   r‡   r/   )ri  r‹  r‡   r'   r^  )
r”   r@   rƒ  zSequence[FakeTensor]r.  rx  r/  ry  r‡   rˆ   )r<  r   rÖ  r°   rS  r™  rT  rš  rU  r-  r‡   rß   )Pre   rf   rg   rh   rÒ  ri   rÓ  rÔ  r   r¦  rÕ  rÞ  r¨  rØ  rÙ  r€   rö  rú  rœ  r   r  r3   r#   rA  r  r  r~  r  r!  r$  r8  r(  rh  r“  rz  r‘  r3  r³  r1  r2  r	  rú  r  r,  r¼   r¡  rT  ra  r�  rj  rö  r£  r„  r«  rø  Úas_strided_scatterr^  Úas_strided_r¤  r·  Úview_as_realÚview_as_complexr®  Úsource_Storage_storage_offsetÚ(_sparse_coo_tensor_with_dims_and_tensorsrÆ  Úviewr\  Úslicer   rp  ro  Ú
lift_freshÚlift_fresh_copyr_  r'  rg  r2  rj   r›   rœ   s   @rL   rÄ   rÄ   ø  sÉ  ø‡ Ø:<€EÐ7Ó<Ø€J�ÓØ€L�#ÓÙ%0°Ó%5€N�NÓ5ð €Eˆ3ƒNØ!&Ð˜$Ó&ØÓØÓØÓØÓð !#Ð˜#Ó"Ø&(Ð Ó(ð
 (,Ø&+Ø%)Ø%)ð ñ![Dð !%ð[Dð  $ð	[Dð
 #ð[Dð #ð[Dð  ð![Dð" 
÷#[Dð [DôzDô
ð ó

ó ð

ð óó ðð
 ð "$Ù'5Ó'7ðàðð ðð ð	ð
 %ðð 
ôó ð÷&ð6Và,ðVð &ðVð %ð	Vð
 
÷Vð$ óó ðð ó	
ó ð	
ð óó ðð^àð^ð ð^ð ð	^ð
 %ð^ð 
ô^ð@5àð5ð ð5ð ð	5ð
 %ð5ð 
ô5ðnJDàðJDð ðJDð %ð	JDð
 
ôJDðXC#àðC#ð IðC#ð ð	C#ð
 (ðC#ð 
ôC#ðJ(Càð(Cð ð(Cð ð	(Cð
 ð(Cð %ð(Cð "ð(Cð 
ô(CðTKàðKð ðKð ð	Kð
 ðKð %ðKð ðKð 
'ôKðZiàðið ðið ð	ið
 ðið %ðið "ðið 
"ôiðVQ8àðQ8ð -ðQ8ð ð	Q8ð
 ðQ8ð ðQ8ð 
ôQ8ðfàðð (ðð ð	ð
 ðð ðð 
;ôð22àAð2ð ð2ð ð	2ð
 ð2ð %ð2ð 
ô2ðp "$Ù'5Ó'7ðBàðBð ðBð ð	Bð
 %ðBð 
õBðBoØðoØ&-ðoØ5;ðoØCIðoà	#ôoðbJ=àðJ=ð ðJ=ð ð	J=ð
 ðJ=ð ðJ=ð 
ôJ=ðXS
àðS
ð ðS
ð ð	S
ð
 %ðS
ð 
ôS
ñt 3>ØØØØØØØØó	3Ð/ô	
ð45àð45ð 'ð45ð $ð	45ð
 ð45ð 
/ô45ðl=!àð=!ð ð=!ð $ð	=!ð
 ð=!ð 
ô=!ð@ -1ñØ)ðà	õñ< !,Ø�
‰
× Ñ Ø×Ñ×"Ñ"Ø×Ñ×'Ñ'Ø�‰×ÑØ×Ñ× Ñ Ø�
‰
×ÑØ�‰×ÑØ×Ñ×!Ñ!Ø×Ñ×$Ñ$Ø�	‰	×/Ñ/Ø×5Ñ5×=Ñ=Ø�
‰
×Ñó!Ðñ +6Ø�	‰	×ÑØ×Ñ×!Ñ!Ø�
‰
×Ñó+Ð'ô6ñ
 ˜4Ÿ?™?×2Ñ2°D×4HÑ4H×4PÑ4PÓQ€Hô
ðWàðWð  4ðWð ð	Wð
 %ðWð 
ôWð: &*Ø $Ø37Øñ"
àð"
ð #ð	"
ð
 ð"
ð 1ð"
ð ð"
ð 
÷"
ó "
rN   c                ó4  • SSK JnJn  [        R                  R
                  R                  R                  5       SLnU(       a  U" U5       H  n[        S5      e   gU" U5       H0  nUR                   H  nXpR                  ;  d  M  [        S5      e   M2     g)a�  
Validate symbolic content in output and raise _BypassDispatchCache if
caching should be bypassed.

Args:
    state: Cache key state containing known symbols
    output: Output to validate
    proxy_mode_active: Whether PROXY dispatch mode is currently active

Raises: _BypassDispatchCache: If output contains symbolic content that
    prevents caching

Details:

If our output contains any symbols that didn't appear in the input then we
need to bypass. Usually this will be unbacked symbols which can't be
properly reconstructed but there could be "weird" cases where backed symbols
spontaneously appear (from non-input state)?

If we're proxy (symbol) tracing and the output contains ANY symbols then we
need to bypass. The problem is that ProxyTorchDispatchMode relies on SymNode
object identity and being able to see the construction of SymNodes.

We could improve the proxy tracing case in a few ways:

1. If the output SymNodes are directly copied from inputs then this is
   actually fine - they're already tracked. This would probably be the
   biggest bang/buck.

2. If the output (tensors) are all direct copies of the inputs then this is
   also fine - since they're inputs they must be tracked. We already compute
   this we just don't plumb it around enough.

3. If the output SymNodes are already tracked by the proxy then this is also
   actually fine - they're properly tracked. This probably wouldn't be
   common since for most outputs we use torch.empty_strided() and recompute
   strides.

4. We could use the proxy to track "how" the SymNodes were computed and when
   using the cache we could "replay" them properly to teach the proxy how to
   build them.
r   )Ú_iterate_exprsÚ_iterate_nodesNzProxy mode with SymNode outputzunrepresented symbol in output)ri  rå  ræ  rr   r<  r=  r>  r?  rÈ  rÔ  rD  )r  r7  rå  ræ  rI  rÛ   r5  r�  s           rL   rx  rx  ¨  sƒ   € ÷Z Uä—‘×&Ñ&×3Ñ3×BÑBÓDÈDÐP€JÞñ   Ö'ˆAÜ&Ð'GÓHÐHò (ñ   Ö'ˆAØŸ.œ.�Ø×!4Ñ!4Õ4Ü.Ð/OÓPÐPó )ò (rN   c                ó>  ^ ^^^• [         R                  R                  UR                  ;   a  Te0 m[	        5          SU U4S jjnU Vs/ s H
  oe" U5      PM     nn[
        R                  X#5      u  pxU" U0 UD6n	S S S 5        [        5       mU HU  n
[        U
[        5      (       d  M  [        U
5      (       a  M,  TR                  U
R                  5       R                  5        MW     SU UUU4S jjn[
        R                  UW	5      $ s  snf ! , (       d  f       N™= f)Nc                óð   >• TR                  U 5      (       a^  [        R                  " X R                  S9nU R                  (       a  UR                  U R                  5       5        U T[        U5      '   U$ U $ )Nrž  )rú  rr   Ú
zeros_liker  r#  Ú_coalesced_rŠ  rÞ  )r4  rØ   rÇ   Ú	inp_implss     €€rL   Úto_real_tensorÚ+run_fallback_kernel.<locals>.to_real_tensorú  sZ   ø€ Ø×$Ñ$ Q×'Ñ'Ü×&Ò& q·±Ñ?�Ø—;—;Ø—O‘O A§N¡NÓ$4Ô5Ø%&�	œ"˜S›'Ñ"Ø�
ØˆHrN   c                óL  >• [        U 5      T;  aE  [        U [        5      (       a0  [        U 5      (       d   U R	                  5       R
                  T;   a  Te[        U [        5      (       a9  [        U 5      T;   a  T[        U 5         $ TR                  R                  TU 5      $ U $ rH   )rÞ  rÞ   r   r   r4  Ú_cdatarã  r�  )r4  rÇ   rë  Úorig_not_implemented_exceptionÚstoragess    €€€€rL   Úmap_outÚ$run_fallback_kernel.<locals>.map_out  s‹   ø€ Üˆa‹5˜	Ó!Ü�qœ&×!Ñ!Ü! !×$Ñ$Ø× Ñ Ó"×)Ñ)¨XÓ5à0Ð0ä�aœ× Ñ Ü�!‹u˜	Ó!Ø ¤ A£Ñ'Ð'à ×6Ñ6×GÑGÈ	ÐSTÓUÐUàˆHrN   )r4  rE   r‡   z
T | Tensorrµ  )rr   rW  r[  rY  r)   r  r
  rÿ  rÞ   r   r   r-  r4  rï  r0   )rÇ   r”   rb  rW  rð  rì  r½  r.  r/  rà  r4  rò  rë  rñ  s   `   `       @@rL   rU  rU  æ  së   û€ ô ‡y�y×Ñ §¡Ó*Ø,Ð,ð €Iô 
�÷	ð 	ñ 1:Ó:²	¨1�^ AÖ&±	ˆ	Ð:Ü×,Ñ,¨YÓB‰ˆá�$Ð!˜&Ñ!ˆ÷ 
ô  &)£U€HãˆÜ�aœ× Ó Ü  ×#Ó#Ø—‘˜Q×-Ñ-Ó/×6Ñ6Ö7ñ ÷ò ô  �?‰?˜7 AÓ&Ð&ùòC ;÷ 
�ús   »DÁ	D	Á!DÄ	DÄ
Dc                ó,   • UR                  5         X U'   g rH   )r´  ©rÒ  rÎ   r6  s      rL   r/  r/  '  s   € ð
 ×ÑÔØˆ#‚JrN   c                ó   • X U'   g rH   rc   rõ  s      rL   r0  r0  0  s   € ð
 ˆ#‚JrN   c                  óB   • \ rS rSrSS jr  S         SS jjrSrg)	ÚFakeCopyModei:  c                ó   • Xl         g rH   ©rÇ   )r   rÇ   s     rL   r€   ÚFakeCopyMode.__init__;  s   € Ø"�rN   Nc                ó0  • U(       a  UO0 nU[         R                  R                  R                  L aV  [	        US   [
        5      (       d  [        S[        US   5       35      eU" U R                  R                  US   SS940 UD6$ U[
        R                  L a»  [        U5      S:w  d  [        U5      S:w  a$  [        S[        U5       S[        U5       S35      e[        [
        US   5      n[        [        [        [        4   US	   5      n[!        U5      U;   a  U[!        U5         $ U R                  R                  USS9nXv[!        U5      '   U$ [         R                  R#                  5          U" U0 UD6sS S S 5        $ ! , (       d  f       g = f)
Nr   rº  T)rÖ  é   z3Expected 2 args and 0 kwargs for __deepcopy__, got z
 args and z kwargsr5   )rr   rs   Ú
TensorBaser`  rÞ   r   rë   ré   rÇ   r2  Ú__deepcopy__r6  r   r¹   r¦  rß   rÞ  ÚDisableTorchFunctionSubclass)r   r”   r<  r.  r/  r<  ÚmemorØ   s           rL   Ú__torch_function__ÚFakeCopyMode.__torch_function__>  so  € ö "‘ rˆð ”5—8‘8×&Ñ&×,Ñ,Ò,Ü˜d 1™g¤v×.Ñ.Ü$Ð'<¼TÀ$ÀqÁ'»]¸OÐ%LÓMÐMÙØ—‘×*Ñ*¨4°©7À$Ð*ÐGñØKQñð ð ”V×(Ñ(Ò(Ü�4‹y˜A‹~¤ V£°Ó!1Ü$ØIÌ#ÈdË)ÈÐT^Ô_bÐciÓ_jÐ^kÐkrÐsóð ô œ& $ q¡'Ó*ˆFÜœœS¤*˜_Ñ-¨t°A©wÓ7ˆDä�&‹z˜TÓ!ØœB˜v›JÑ'Ð'à—.‘.×,Ñ,¨VÀ4Ð,ÐHˆCØ"”�F“ÑØˆJä—‘×6Ñ6Õ8Ù˜TÐ, VÑ,÷ 9×8×8ús   Å5FÆ
Frú  )rÇ   rÄ   r‡   rˆ   )rc   N)
r”   r@   r<  rw  r.  rx  r/  zMapping[str, object] | Noner‡   rß   )re   rf   rg   rh   r€   r  rj   rc   rN   rL   rø  rø  :  sI   † ô#ð "$Ø.2ð -àð -ð ð -ð ð	 -ð
 ,ð -ð 
÷ -ð  -rN   rø  c                óì   • [        U 5      S:w  d  [        U S   [        5      (       d  [        S5      eU S   R                  R
                  (       a  [        R                  " S5      $ U S   R                  $ )Nr5   r   z<Expected exactly one FakeTensor argument for _device_handlerr“  )	r6  rÞ   rß   rë   rÇ   r¨  rr   r–   r  ©r.  s    rL   Ú_device_handlerr  a  sc   € ô ˆ4ƒy�Aƒ~œZ¨¨Q©´×<Ñ<ÜØJó
ð 	
ð ˆA�w×Ñ×-×-Ü�|Š|˜FÓ#Ð#à�A‰w×"Ñ"Ð"rN   c                ó&   • [        S U  5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7frH   )r\  )rÍ   râ   s     rL   rÐ   Ú&_check_for_subclass.<locals>.<genexpr>}  s   é € Ð=²9¨aÔ& q×)Ð)²9ùr  )rP  )rb  s    rL   r[  r[  |  s   € ÜÑ=±9Ó=Ó=Ð=rN   c                ó$  • [        U [        5      (       a  g[        U [        5      (       d  g[        U 5      nU[        L a  g[	        U[
        R                  R                  5      =(       a    UR                  [        R                  L nU(       a  gg)NFT)	rÞ   rß   r   ré   r8  rr   rn  ro  rA  )râ   Úx_typeÚ#is_metadata_only_parameter_subclasss      rL   r\  r\  €  sv   € Ü�!”Z× Ñ ØÜ�aœ× Ñ Øä�!‹W€FØ”ÒØô 	�6œ5Ÿ8™8×-Ñ-Ó.÷ 	CØ×%Ñ%¬×)BÑ)BÐBð (ö +ØàrN   c                ód   • [        S [        [        U S   5      R                  5        5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7frH   ©r¦  ©rÍ   r5  s     rL   rÐ   Ú<lambda>.<locals>.<genexpr>š  s   é € ð 4Ú4�1ŒˆA�ˆÒ4ùr  r   )r‘  r   r   rÏ  r  s    rL   rì  rì  š  s*   € ¬eñ 4ÜœV T¨!¡WÓ-×2Ñ2Ô4ó4ô /rN   c                ód   • [        S [        [        U S   5      R                  5        5       5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7frH   r  r  s     rL   rÐ   r  �  s   é € ð 6Ú6�1ŒˆA�ˆÒ6ùr  r   )r‘  r   r   rƒ  r  s    rL   rì  rì  �  s*   € ´ñ 6ÜœV T¨!¡WÓ-×4Ñ4Ô6ó6ô 1rN   c                óV   • [        [        [        U S   5      R                  5       5      $ rL  )r¦  r   r   r†  r  s    rL   rì  rì     s    € ¼ÜŒV�T˜!‘WÓ×,Ñ,Ó.ô9rN   )	Ú_device_not_kwarg_opsÚ_is_tensor_constructorÚ_like_tensor_constructorsÚcontains_tensor_typesrm  r€  rn  r  rr  c                ól   • U [         R                  ;   a   [         R                  R                  U 5        g g rH   )rÄ   rÒ  rÒ   r;  s    rL   rH  rH  »  s)   € Ø
Œn×"Ñ"Ó"Ü×Ñ× Ñ  Õ%ð #rN   c                 ó¼  • [         R                  S5        [         R                  S[        R                  5        [         R                  S[        R                  5        [        R
                  n U (       ah  [         R                  S5        [        S U  5       5      n[        U R                  5       S S9 H#  u  p#[         R                  SUS	-   U S
3U5        M%     g g )NzFakeTensor cache stats:z  cache_hits: %sz  cache_misses: %sz  cache_bypasses:c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frH   )r6  )rÍ   rÔ  s     rL   rÐ   Ú#dump_cache_stats.<locals>.<genexpr>È  s   é € Ð-¢H˜q”C˜—F�F¢Hùr  c                ó   • U S   * $ r{   rc   )r‹  s    rL   rì  Ú"dump_cache_stats.<locals>.<lambda>É  s
   € ¸A¸a¹D¹5rN   r;  z    %-*s %sr5   r  )	rÝ  ÚinforÄ   rÓ  rÔ  rÕ  ÚmaxÚsortedr»   )rÎ  ÚwidthrÔ  rõ   s       rL   Údump_cache_statsr#  À  s    € ä‡H�HÐ&Ô'Ü‡H�HÐ¤×!:Ñ!:Ô;Ü‡H�HÐ!¤>×#>Ñ#>Ô?Ü×,Ñ,€HÞÜ�‰Ð$Ô%ÜÑ-¡HÓ-Ó-ˆÜ˜8Ÿ>™>Ó+±ÔA‰DˆAÜ�H‰H�] E¨A¡I°!°°A¨w¸Ö:ò Bð rN   c           	     ó0  ^• SU4S jjnUR                  5       S:w  a  U" SUR                  5        35        [        UR                  5       5       Vs/ s H6  n[        R                  R
                  R                  U R                  5      PM8     nnS/UR                  5       -  n[        UR                  5       5       VVs/ s H  u  pxX‡4PM
     n	nnU	R                  S S9  Sn
U
nU	 HM  u  p‡XŠ:w  a'  U" SUR                   S	UR                  5        S
35        X¶U'   X¢R                  U   -  n
XµU   -  nMO     U    [        R                  " UUUR                  UR                  UR                  S9sS S S 5        $ s  snf s  snnf ! , (       d  f       g = f)Nc                ó<   >• [        STR                   SU  S35      e)NzQpropagate_real_tensors: we cannot infer a Fake kernel (meta kernel) for operator z	 because z>. Please use torch.library.register_fake to add a Fake kernel.)r¼  rÁ  )r�   rè  s    €rL   ÚunsupportedÚ1_infer_fake_from_real_tensor.<locals>.unsupportedÐ  s1   ø€ Üð*Ø*,¯(©(¨°9¸V¸Hð EKðLó
ð 	
rN   r   z'a return has a non-zero storage offset r±  c                ó   • U S   U S   * 4$ rn  rc   rá   s    rL   rì  Ú._infer_fake_from_real_tensor.<locals>.<lambda>ó  s   €   !¡ q¨¡t e™}rN   r;  r5   z(a return was not dense in memory (sizes z	 strides Ú))r–   rw  r!  )r�   rŒ   r‡   rˆ   )r†  r‡  ry  rr   ra  r{  Úallocate_sizer]  rˆ  rƒ  Úsortr‚  r«  r–   rw  r!  )rþ   rè  r  r&  rÛ   Ú
fake_shapeÚfake_stridesrŠ  r5  rã  ÚexpectedÚfake_strides    `          rL   rõ  rõ  Í  s{  ø€ ÷
ð ×ÑÓ  AÓ%ÙØ5°h×6MÑ6MÓ6OÐ5PÐQô	
ô �x—|‘|“~Ô&óâ&ˆAô 	�‰× Ñ ×.Ñ.¨t¯~©~Ö>Ù&ð ð ð �4˜(Ÿ,™,›.Ñ(€LÜ&/°·±Ó0AÔ&BÔCÒ&B™F˜C�‹xÑ&B€GÑCØ‡L�LÑ,€LÑ-Ø€HØ€KÛ‰ˆØ‹=ÙØ:¸8¿>¹>Ð:JÈ)ÐT\×TcÑTcÓTeÐSfÐfgÐhôð (�SÑØŸn™n¨SÑ1Ñ1ˆØ!¨s¡OÑ3Šñ ò 
Ü×"Ò"ØØØ—?‘?Ø—.‘.Ø—?‘?ñ
÷ 
‰ùò5ùó D÷ 
�ús   Á=E<ÃFÄ<6FÆ
Fc                ó*  • U R                   c  [        S5      e[        R                  U5      u  p4[	        S U 5       5      (       d  [        SUR                   35      eU Vs/ s H  n[        XU5      PM     nn[        R                  Xd5      $ s  snf )Nzmode.shape_env must not be Nonec              3  óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frH   )rÞ   rr   r   r   s     rL   rÐ   Ú5inferred_fake_kernel_from_real_out.<locals>.<genexpr>  s   é € ÐB²M¨qŒz˜!œUŸ\™\×*Ð*²Mùs   ‚')zPpropagate_real_tensors: we don't support operators that return non-Tensors. Got )	r]  rë   r  r	  r_  r¼  r  rõ  r
  )rþ   rè  r  Úreal_flat_outÚspecrü   Úfake_flat_outs          rL   rw  rw  	  s—   € ð ‡~�~ÑÜÐ>Ó?Ð?ô
 !×-Ñ-¨hÓ7Ñ€MÜÑB±MÓB×BÑBÜð Ø "§
¡
˜|ð-ó
ð 	
ñ
 IVÓVÊÀ1Ô1°$¸AÖ>É€MÐVÜ× Ñ  Ó5Ð5ùò Ws   Á#B)rK   r›  r‡   r-  )ru   rŒ   r‡   r-  )r»   rE   r‡   zdict[T, Literal[True]])r‡   z/Generator[TorchDispatchMode | None, None, None])rÇ   rÄ   r‡   zGenerator[None, None, None])r×   z!Tensor | TraceableWrapperSubclassrØ   ú-list[Tensor | int | SymInt | CustomClassBase]r‡   r7  )râ   rR   r‡   zTypeGuard[Tensor])rü   rR   r‡   ru  )râ   rR   r‡   rè  )râ   rR   r‡   ztorch.device | None)r”   r@   r‡   ztorch._C._SchemaInforÙ  )r  ztype[T]r  r/   r‡   zlist[T])rü   rR   r‡   r-  rs  )rü   r   r‡   r�  )r  r6   r7  rß   r‡   rˆ   )rÇ   rÄ   r”   r@   rb  rx  rW  r/   rð  r¼  r‡   rß   )rÒ  rÑ  rÎ   r¤  r6  Ú_DispatchCacheEntryr‡   rˆ   )r.  rx  r‡   rš   )rb  rx  r‡   r-  )râ   rR   r‡   r-  )rÎ   r¤  r‡   rˆ   r†   )rþ   rÄ   rè  útorch._ops.OpOverloadr  útorch.Tensorr‡   r:  )rþ   rÄ   rè  r9  r  r   r‡   r   )ÞÚ
__future__r   Úatexitr¨  r�  rF  rÈ  r€  r¼  Ú	threadingrì  r<  Útypingr´   Úcollectionsr   r   r   r   r   r	   r
   r   r   Útyping_extensionsr   r   r   r   rr   Útorch._library.utilsra  rb  rh  r   r   r   r   Útorch._C._functorchr   r   Útorch._custom_class_baser   Ú"torch._library.fake_class_registryr   Útorch._library.fake_profiler   Útorch._loggingr   Útorch._prims_commonr   Útorch._subclasses.meta_utilsr   r   r   r   r    Útorch._utilsr!   r"   Útorch.fx.immutable_collectionsr#   Útorch.fx.operator_schemasr$   Ú torch.multiprocessing.reductionsr%   Útorch.overridesr&   Útorch.typesr'   r(   Útorch.utils._mode_utilsr)   Útorch.utils._python_dispatchr*   r+   r,   Útorch.utils._pytreer-   r.   r/   r0   r1   r2   Útorch.utils._statsr3   Útorch.utils._tracebackr4   Ú_fake_tensor_utilsr6   r7   r8   Úcollections.abcr9   r:   r;   r<   r=   r>   Útorch._guardsr?   Ú
torch._opsr@   ri  rA   rB   Ú	getLoggerre   rÝ  Ú_loggingÚgetArtifactLoggerr+  r9  r  r4  rŒ   rC  ÚDimListÚ_pytreer  rE   r)  rõ  rö  rÊ  r}   rs   Ú_dispatch_key_parserJ   rM   rP   Ú	frozensetri   r  rÒ  rv   rx   r¼  rŠ   r�   rž   r¢   r¥   r¨   r«   Úlocalr®   r,  r¼   ÚcontextmanagerrÃ   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Ä  r8  rÂ  rÈ  rÊ  rÄ   rR   Ú_StoragePointerrx  rU  r/  r0  rø  r  r[  r\  r5  r–   rø  rÏ  rƒ  r†  r7  rŠ  rŒ  r�  ÚprofilerÚ_record_function_exitÚ_RecordFunctionrÊ  Útorch._subclasses.fake_implsr  r  r  r  rm  r€  rn  r  rr  rH  Úregisterr#  rõ  rw  rc   rN   rL   Ú<module>rg     s9  ðÝ "ã Û Û Û Û Û Û 	Û Û Û Û Û Ý #Ý !ß O× OÑ Oß 5Ñ 5Ý !ã ß ,Ð ,ß 3Ó 3ß TÝ 4Ý ?Ý 8Ý ,Ý 5÷õ ÷ HÝ 9Ý 8Ý ;Ý -ß 1Ý /÷ñ ÷
 W× VÝ $Ý 4ç RÑ Rö ßPÕPÝ#å$Ý%ßOà×Ò˜Ó!€Ø	�‰×	)Ñ	)¨(Ð4JÓ	K€ðØŸ.™.×:Ñ:¸8ÐEVÓWÐð €à	�‰×	Ñ	€ÙˆCƒL€à‡z�z‡~�~×Ñ€àÐ à€à—x‘x×3Ñ3°KÓ@Ð ôQô¨¸%ò ñ* 09Ø&×6Ò6ó0Ð ,ð ‡‚óó ð÷ñ ð ô \ó ó ðô
 Lô 
ð  ô ,ó ó ðð ô <ó ó ðð ô <ó ó ðð ô¨<ó ó ðð ô˜Ló ó ðôG�I—O’Oô Gñ  “/€ô&ð ×Òó-ó ð-ð ×Òó,ó ð,ðØ/ðð 
7ðð 3ô	ô&Aô ôF ôFôôð ‡‚ó.ó ð.ð ‡‚ó	Dó ð	Dô@ô
÷$uñ uðp	 ‡‚ó
ó ð
ð ×Òð@Øð@à ó@ó ð@ô.÷Bñ B÷FEñ FEôRj4�ô j4ðZ ˜Ð&7Ð9LÐLÑMÐ ñ �Ñ÷*%ð *%ó ð*%ôZ(ñV �Ñ÷$ð $ó ð$÷8	ñ 	ñ �$˜dÑ#÷3ð 3ó $ð3ñ$ �$˜dÑ#÷
"ð 
"ó $ð
"ñ �$˜dÑ#÷ð ó $ðö Ø2Ð5NÑNÐñ �$˜dÑ#ô˜9ó ó $ðñ �$˜dÑ#÷ð ó $ðô(j
Ð&ô j
ðZ= €ð:QØð:QØ#-ð:Qà	ô:Qð|>'Øð>'à
ð>'ð  ð>'ð ð	>'ð
 %1ð>'ð ô>'ðBØ7ðà	ðð ðð 
ô	ðØ7ðà	ðð ðð 
ô	ô$-Ð$ô $-ôN#ô6>ôð2 
‡I�I‡N‚N×Ò×!Ò! ?Ø	‡I�I‡N�N×Ò×Òñ "ð 
‡I�I‡N�N×Ò×!Ò!ñ $ð 
‡I�I‡N�N×!Ò!×)Ò)ñ ,ðÐ ñ (Ø	‡I�I‡N�N×Ò×'Ò'Ø	‡I�I‡N�N×Ò×$Ò$Ø	‡I�I‡N�N×Ò×%Ò%ð 
‡I�I×Ò×,Ò,×<Ò<óÐ ÷
÷ 
õ 
ô&ð
 ‡‚ó	;ó ð	;ð9
Ø
ð9
Ø3ð9
Ø?Kð9
àô9
ðx6Ø
ð6Ø3ð6Ø?Bð6àõ6øðEv ó Ø)©S°«VÓ3Ø%×/Ò/°Ð;MÑ0MÓNÖàˆûð	ús   Å.Y ÙZÙ !Z	ÚZ	Ú	Z