ó
    EñiG¢  ã                  óV  • S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJr  S SK	J
r
JrJrJr  S SKJr  \(       a   S SKrS SKJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKrS SKJs  Jr  S SK J!s  J"r#  S SK$J%r&  S SKJ'r'J(r(  S SK)J*r*  S SK+J,r,J-r-J.r.J/r/J0r0  \Rb                  Re                  \3S5      r4S S jr5 " S S\Rl                  5      r7 " S S\05      r8\Rr                  S!S j5       r:\8" 5       4     S"S jjr; " S S\5      r< " S S\<5      r= " S S\<5      r> " S S\<5      r?S#S jr@g)$é    )ÚannotationsN)ÚABCÚabstractmethod)ÚAbstractContextManager)ÚAnyÚOptionalÚTYPE_CHECKINGÚUnion)ÚSelf)ÚCallableÚ	GeneratorÚSequence)ÚTracebackType)ÚFunctionalizeInterpreter)Ú
OpOverload)Ú$_functionalization_reapply_views_tls)Ú_get_dispatch_mode_pre_dispatchÚTorchBindOpOverload)Úis_sparse_any)Ú_detect_infra_modeÚ_disable_infra_modeÚautograd_would_have_decomposedÚreturn_and_correct_aliasingÚTorchDispatchModeÚnot_implementedc                 ó   ^ • SU 4S jjnU$ )Nc                ó0   >• U R                   " U0 0 UETED6$ ©N)Úto)ÚselfÚargsÚkwargsÚextra_kwargss      €Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_subclasses/functional_tensor.pyÚ_Ú&_conversion_method_template.<locals>._5   s"   ø€ Ø�wŠw˜Ð;Ð : 6Ð :¨\Ð :Ñ;Ð;ó    )r    ÚFunctionalTensorr!   r   r"   r   Úreturnr   © )r#   r%   s   ` r$   Ú_conversion_method_templater+   4   s   ø€ ÷<ð €Hr'   c                  óÔ  ^ • \ rS rSr% SrS\S'   \R                  R                  R                  r
\R                  R                  R                  \R                  R                  R                  5      r\R                   R"                  R$                  R&                  \R                   R"                  R$                  R(                  \R                   R"                  R*                  R&                  \R                   R"                  R,                  R&                  \R                   R"                  R.                  R&                  \R                   R"                  R0                  R&                  \R                   R"                  R2                  R&                  \R                   R"                  R4                  R&                  \R                   R"                  R6                  R&                  \R                   R"                  R8                  R&                  \R                   R"                  R:                  R&                  \R                   R"                  R<                  R&                  \R                   R"                  R>                  R&                  \R                   R@                  RB                  R&                  /r"Sr#S\S'   SS jr$  S         S S
 jjr%SS.S!S jjr&\'S"S j5       r(S#S jr)S$S jr*S%S jr+S&S jr,S&S jr-S&S jr.S'S jr/S(U 4S jjr0 S)       S*S jjr1\2" \Rf                  S9r4\2" \RB                  " S5      S9r5\2" \Rl                  S9r6\2" \Rn                  S9r8\2" \Rr                  S9r:\2" \Rv                  S9r<\2" \Rz                  S9r=\2" \R|                  S9r?\2" \R€                  S9rA\2" \R„                  S9rC S)SS.     S+S jjjrD\ES,S j5       rFS-S jrGS	rHU =rI$ ).r(   é;   a"  
Functional tensors represent tensors that will remove mutations
from a program. If you perform a mutable operation on a functional tensor,
it will re-dispatch to the functional variant of that operation.

Historically, functionalization is implemented in C++ in the dispatcher.
This class is a lightweight python shim around the C++ functionalization logic.

FunctionalTensor is required to be used with a corresponding
FunctionalTensormode active, because it relies
on using the mode for dispatch (which can properly handle factory functions).
útorch.TensorÚelemNzOptional[FunctionalTensor]Ú_inference_mode_basec                ó   • [         R                  " U5      (       d  [        S5      e[        R                  [         R
                  R                  U5      -  n[         R                  R                  U UR                  [        U5      (       d  UR                  5       OS [        U5      (       d  UR                  5       OS S UR                  UR                  UR                  SUR                   S SSU5      n[         R
                  R#                  U5        Xl        [         R&                  R(                  R*                  (       aË  [         R,                  " 5       (       a±  [         R.                  R(                  R0                  (       aˆ  UR3                  5       (       a/  S Ul        XBR6                  UR$                  R9                  5       '   U$ UR6                  UR$                  R9                  5          Ul        UR4                  c  [        S5      eU$ )Nz elem must be a functional tensorFz)out._inference_mode_base must not be None)ÚtorchÚ_is_functional_tensorÚAssertionErrorr(   Ú_extra_dispatch_keysÚ_CÚ_dispatch_keysÚTensorÚ_make_wrapper_subclassÚshaper   ÚstrideÚstorage_offsetÚdtypeÚlayoutÚdeviceÚrequires_gradÚ_set_throw_on_mutable_data_ptrr/   Ú_exportÚconfigÚ(enable_auto_functionalized_v2_for_exportÚis_inference_mode_enabledÚ	_inductorÚenable_auto_functionalized_v2Úis_base_tensorr0   Ú_storage_to_baseÚuntyped_storage)Úclsr/   ÚmodeÚextra_dispatch_keysÚouts        r$   Ú__new__ÚFunctionalTensor.__new__o   s“  € Ü×*Ò*¨4×0Ñ0Ü Ð!CÓDÐDô& ×1Ñ1´E·H±H×4KÑ4KÈDÓ4QÑQð 	ô �l‰l×1Ñ1ð
 Ø�J‰JÜ!.¨t×!4Ñ!4ˆD�K‰KŒM¸$ä-:¸4×-@Ñ-@�×#Ñ#Ô%ÀdàØ�J‰JØ�K‰KØ�K‰KØØ×ÑØØØØó)
ˆô, 	�‰×/Ñ/°Ô4ØŒô �M‰M× Ñ ×I×IÜ×/Ò/×1Ñ1Ü—‘×&Ñ&×D×Dà×!Ñ!×#Ñ#Ø+/�Ô(ð EH×%Ñ% c§h¡h×&>Ñ&>Ó&@ÑAð ˆ
ð ,0×+@Ñ+@Ø—H‘H×,Ñ,Ó.ñ,�Ô(ð ×+Ñ+Ñ3Ü(Ð)TÓUÐUØˆ
r'   r*   c                ó’  • U Vs/ s H:  nU[         R                  [         R                  R                  [        4;  d  M8  UPM<     nnU(       a  [
        R                  SU5        [        $ Uc  0 nU[        R                  ;   Ga4  [        U5      S:w  a  [        S5      eU[         R                  R                  R                  R                  [         R                  R                  R                  R                   4;   a_  [        U5      S:w  d  [#        US   [        5      (       d  [        S5      eU" [         R$                  " US   R&                  5      US   5      $ [        U5      S:w  d  [#        US   [        5      (       d  [        S5      eU" [         R$                  " US   R&                  5      5      $ [)        S5      es  snf )	Nú.FunctionalTensor unrecognized subclass(es): %sr   z+kwargs must be empty for metadata functionsé   z+Expected 2 args with FunctionalTensor firsté   z$Expected 1 arg with FunctionalTensorzqAttempting to use FunctionalTensor on its own. Instead, please use it with a corresponding FunctionalTensorMode())r2   r8   Ú_subclassesÚ
FakeTensorr(   Únot_implemented_logÚdebugÚNotImplementedÚmetadata_fnsÚlenr4   ÚopsÚatenÚis_strides_like_formatÚdefaultÚis_contiguousÚmemory_formatÚ
isinstanceÚ_from_functional_tensorr/   ÚRuntimeError)r    ÚfuncÚtypesr!   r"   ÚtÚunrecognized_typess          r$   Ú__torch_dispatch__Ú#FunctionalTensor.__torch_dispatch__²   s�  € ñ ó
â�ØœŸ™¤u×'8Ñ'8×'CÑ'CÔEUÐVÑV÷ Ùð 	ð 
ö
 Ü×%Ñ%Ø@ÐBTôô "Ð!à‰>ØˆFð Ô#×0Ñ0Ô0ô �6‹{˜aÓÜ$Ð%RÓSÐSØÜ—	‘	—‘×5Ñ5×=Ñ=Ü—	‘	—‘×,Ñ,×:Ñ:ðó ô �t“9 “>¬°D¸±GÔ=M×)NÑ)NÜ(Ð)VÓWÐWÙœE×9Ò9¸$¸q¹'¿,¹,ÓGÈÈaÉÓQÐQÜ�4‹y˜A‹~¤Z°°Q±Ô9I×%JÑ%JÜ$Ð%KÓLÐLáœ×5Ò5°d¸1±g·l±lÓCÓDÐDô Øó
ð 	
ùòQ
s   …7GÁ G)Útensor_contentsc               ó4   • S[        U R                  5       S3$ )NzFunctionalTensor(Ú))Úreprr/   )r    rk   s     r$   Ú__repr__ÚFunctionalTensor.__repr__å   s   € Ø"¤4¨¯	©	£?Ð"3°1Ð5Ð5r'   c                óœ  • [         R                  " U 5      (       a  [        S5      e[         R                  " U 5      n[	        [         R
                  R                  R                  5      nUc  [        S5      eU   [         R                  " X5        [        X5      n[         R                  " X5        S S S 5        U$ ! , (       d  f       W$ = f)Nz)x must not already be a functional tensorz functional_mode must not be None)
r2   r3   r4   Ú_to_functional_tensorr   r6   Ú_TorchDispatchModeKeyÚ
FUNCTIONALÚ_mirror_autograd_meta_tor(   )ÚxÚx_functionalÚfunctional_moderN   s       r$   Úto_functionalÚFunctionalTensor.to_functionalè   s¥   € ô ×&Ò& q×)Ñ)Ü Ð!LÓMÐMô
 ×2Ò2°1Ó5ˆô -¬U¯X©X×-KÑ-K×-VÑ-VÓWˆØÑ"Ü Ð!CÓDÐDâÜ×*Ò*¨1Ô;Ü" <ÓAˆCÜ×*Ò*¨<Ô=÷ ð ˆ
÷	 Œ_ð ˆ
ús   Á:8B<Â<
Cc                ón   • [         R                  " U 5        [         R                  " U R                  5      $ r   )r2   Ú_syncrc   r/   ©r    s    r$   Úfrom_functionalÚ FunctionalTensor.from_functional  s#   € Ü�Š�DÔÜ×,Ò,¨T¯Y©YÓ7Ð7r'   c                óB   • [         R                  " U R                  5      $ r   )r2   Ú_is_functional_tensor_baser/   r}   s    r$   rH   ÚFunctionalTensor.is_base_tensor  s   € Ü×/Ò/°·	±	Ó:Ð:r'   c                óF   • [         R                  " U R                  U5        g r   )r2   Ú_functionalize_replacer/   )r    Úoutputs     r$   Úreplace_ÚFunctionalTensor.replace_
  s   € Ü×$Ò$ T§Y¡Y°Õ7r'   c                óD   • [         R                  " U R                  5        g r   )r2   Ú_functionalize_commit_updater/   r}   s    r$   Úcommit_updateÚFunctionalTensor.commit_update  s   € Ü×*Ò*¨4¯9©9Õ5r'   c                óD   • [         R                  " U R                  5        g r   )r2   Ú_functionalize_syncr/   r}   s    r$   ÚsyncÚFunctionalTensor.sync  s   € Ü×!Ò! $§)¡)Õ,r'   c                óD   • [         R                  " U R                  5        g r   )r2   Ú1_functionalize_mark_mutation_hidden_from_autogradr/   r}   s    r$   Ú"mark_mutation_hidden_from_autogradÚ3FunctionalTensor.mark_mutation_hidden_from_autograd  s   € Ü×?Ò?ÀÇ	Á	ÕJr'   c                ój  • U R                   R                  5       S:X  a  U R                   R                  5       $ U R                   R                  5       S:X  a*  U R                    Vs/ s H  oR                  5       PM     sn$ U R                    Vs/ s H  oR                  5       PM     sn$ s  snf s  snf )Nr   rT   )r/   ÚdimÚitemÚtolist)r    r/   s     r$   r—   ÚFunctionalTensor.tolist  sy   € Ø�9‰9�=‰=‹?˜aÓØ—9‘9—>‘>Ó#Ð#Ø�Y‰Y�]‰]‹_ Ó!Ø,0¯IªIÓ6ªI D—I‘I–K©IÑ6Ð6à.2¯iªiÓ8ªi d—K‘K–M©iÑ8Ð8ùò 7ùâ8s   Á%B+ÂB0c                ó,  >• [        [        R                  R                  R                  5      R
                  (       aH  [        R                  R                  R                  U U R                  U R                  U R                  S9  [        TU ]4  " U0 UD6$ )N)r=   r?   r>   )r   r2   r6   rs   rt   Úexportr\   r]   Ú_assert_tensor_metadatar=   r?   r>   Úsuperr   )r    r!   r"   Ú	__class__s      €r$   r   ÚFunctionalTensor.to  sj   ø€ ÜœeŸh™h×<Ñ<×GÑGÓH×O×OÜ�I‰I�N‰N×2Ñ2ØØ—j‘jØ—{‘{Ø—{‘{ð	 3ñ ô ‰wŠz˜4Ð* 6Ñ*Ð*r'   c                óÂ   • U=(       d    [         R                  R                  5       n[        U5      S:”  a  U R                  " U/UQ70 UD6$ U R                  " SSU0UD6$ )Nr   r?   r*   )r2   ÚcudaÚcurrent_devicer[   r   )r    r?   r!   r"   s       r$   r    ÚFunctionalTensor.cuda)  sV   € ð ×6œ5Ÿ:™:×4Ñ4Ó6ˆÜˆt‹9�q‹=Ø—7’7˜6Ð3 DÒ3¨FÑ3Ð3à—7’7Ñ3 &Ð3¨FÑ3Ð3r'   )r=   Úcpu)r?   )Úmasked_gradc               ó6   • U R                   R                  5       $ r   )r/   Úto_dense)r    r=   r¤   s      r$   r¦   ÚFunctionalTensor.to_dense>  s   € ð �y‰y×!Ñ!Ó#Ð#r'   c                ó.   • U R                   R                  $ r   )r/   r>   r}   s    r$   r>   ÚFunctionalTensor.layoutF  s   € ð �y‰y×ÑÐr'   c                ó4   • [        U R                  5       5      $ r   )Úboolr–   r}   s    r$   Ú__bool__ÚFunctionalTensor.__bool__K  s   € Ü�D—I‘I“KÓ Ð r'   )r/   r.   rL   ÚFunctionalTensorModer)   r   ©r*   N©
re   r   rf   zSequence[type]r!   útuple[Any, ...]r"   zdict[str, Any] | Noner)   r   )rk   zobject | Noner)   Ústr)rv   r.   r)   r(   )r)   r.   ©r)   r«   )r…   r.   r)   ÚNone)r)   r´   )r)   r   )r!   r   r"   r   r)   r.   r   )r?   ztorch.device | int | str | Noner!   r   r"   r   r)   r.   )r=   ztorch.dtype | Noner¤   zbuiltins.bool | Noner)   r.   )r)   ztorch.layout)r)   zbuiltins.bool)JÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r2   r6   rs   rt   Ú	_mode_keyÚ,_additional_keys_to_prop_for_wrapper_tensorsÚaddÚDispatchKeyÚ
ZeroTensorr5   r\   r]   r`   r_   ra   r^   Úis_non_overlapping_and_denseÚsizeÚsym_sizer;   Ú
sym_strider<   Úsym_storage_offsetÚnumelÚ	sym_numelr•   Úprimr?   rZ   r0   rO   ri   ro   Ústaticmethodry   r~   rH   r†   rŠ   rŽ   r’   r—   r   r    r+   Úint8Úcharr£   Úbfloat16Úuint8ÚbyteÚfloat64ÚdoubleÚfloat32Úfloatr«   Úfloat16ÚhalfÚint32ÚintÚint64Úlongr¦   Úpropertyr>   r¬   Ú__static_attributes__Ú__classcell__©r�   s   @r$   r(   r(   ;   sH  ø‡ ñð Óð —‘×.Ñ.×9Ñ9€Ið !Ÿ8™8×PÑP×TÑTØ�‰×Ñ×'Ñ'óÐð 	�	‰	�‰×$Ñ$×,Ñ,Ø�	‰	�‰×$Ñ$×2Ñ2Ø�	‰	�‰×-Ñ-×5Ñ5Ø�	‰	�‰×3Ñ3×;Ñ;Ø�	‰	�‰×Ñ×#Ñ#Ø�	‰	�‰×Ñ×'Ñ'Ø�	‰	�‰×Ñ×%Ñ%Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×%Ñ%×-Ñ-Ø�	‰	�‰×)Ñ)×1Ñ1Ø�	‰	�‰×Ñ×$Ñ$Ø�	‰	�‰× Ñ ×(Ñ(Ø�	‰	�‰×Ñ×"Ñ"Ø�	‰	�‰×Ñ×%Ñ%ð€Lð$ 8<ÐÐ4Ó;ôAðN !#Ø(,ð1
àð1
ð ð1
ð ð	1
ð
 &ð1
ð 
õ1
ðf <@÷ 6ð óó ðô48ô;ô8ô6ô-ôKô9÷+ð 9=ð4Ø5ð4ØEHð4ØTWð4à	õ4ñ '¨U¯Z©ZÑ8€DÙ
%¨U¯\ª\¸%Ó-@Ñ
A€CÙ*°·±Ñ@€HÙ&¨U¯[©[Ñ9€DÙ(¨u¯}©}Ñ=€FÙ'¨e¯m©mÑ<€EÙ&¨U¯Z©ZÑ8€DÙ&¨U¯]©]Ñ;€DÙ
%¨E¯K©KÑ
8€CÙ&¨U¯[©[Ñ9€Dð
 %)ð$ð -1ñ	$à!ð$ð *ð	$ð
 
ö$ð ó ó ð ÷!ò !r'   r(   c                  ó¬   ^ • \ rS rSr   S       S	U 4S jjjrS
U 4S jjr        SU 4S jjr  S         SS jjr\SS j5       r	Sr
U =r$ )r®   iO  c                óh  >• [         TU ]  5         X l        SU l        / U l        [
        R                  R                  R                  U l	        Xl
        U(       a$  [
        R                  R                  R                  OS U l        0 U l        0 U l        X0l        ["        R$                  " 5       U l        g ©NF)rœ   Ú__init__rš   Úis_on_stackÚenter_stackr2   r6   rs   rt   r»   Úpre_dispatchr¾   ÚPreDispatchÚ_dispatch_keyÚ_tokensÚ_tokens_forward_outputÚ_allow_token_discoveryÚweakrefÚWeakKeyDictionaryrI   )r    râ   rš   rç   r�   s       €r$   rß   ÚFunctionalTensorMode.__init__P  s”   ø€ ô 	‰ÑÔØŒØ ˆÔØˆÔô Ÿ™×7Ñ7×BÑBˆŒØ(ÔæAMœUŸX™X×1Ñ1×=Ò=ÐSWˆÔð 13ˆŒð @BˆÔ#ð '=Ô#ô ×%Ò%Ó'ð 	Õr'   c                ó²   >^ • SU 4S jjnU" 5       c)  T R                   R                  S5        [        TT ]  5       $ T R                   R                  S5        T $ )Nc                 óD  >• T R                   [        R                  R                  R                  :X  a-  [        [        R                  R                  R                  5      $ [        R                  R                  [        R                  R                  R                  5      $ r   )	rä   r2   r6   r¾   rã   r   rs   rt   Ú_get_dispatch_moder}   s   €r$   Ú_get_prev_modeÚ6FunctionalTensorMode.__enter__.<locals>._get_prev_modev  sm   ø€ Ø×!Ñ!¤U§X¡X×%9Ñ%9×%EÑ%EÓEÜ6Ü—H‘H×2Ñ2×=Ñ=óð ô —8‘8×.Ñ.Ü—‘×.Ñ.×9Ñ9óð r'   TF)r)   úOptional[FunctionalTensorMode])rá   Úappendrœ   Ú	__enter__)r    rî   r�   s   ` €r$   rò   ÚFunctionalTensorMode.__enter__u  sN   ù€ ÷	ñ ÓÑ#Ø×Ñ×#Ñ# DÔ)Ü‘7Ñ$Ó&Ð&à×Ñ×#Ñ# EÔ*ØˆKr'   c                ój   >• U R                   R                  5       nU(       a  [        TU ]  XU5        g g r   )rá   Úpoprœ   Ú__exit__)r    Úexc_typeÚexc_valÚexc_tbrà   r�   s        €r$   rö   ÚFunctionalTensorMode.__exit__†  s0   ø€ ð ×&Ñ&×*Ñ*Ó,ˆÞÜ‰GÑ˜X°Õ7ð r'   c                óX  ^ ^^• Tc  0 mU Vs/ s HL  n[        U[        R                  R                  5      (       a  M.  U[        R                  [
        4;  d  MJ  UPMN     nnU(       a  [        R                  SU5        [        $ SUUU 4S jjnU[
        R                  ;  aq  U" U5      (       ad  [        R                  R                  UR                  5       5      (       a2  T    UR                  " T0 TD6nU[        La  UsS S S 5        $  S S S 5        SU 4S jjn	SS jn
SSKJnJnJn  U" U5      (       aØ  [        R                  R%                  UR                  5       [        R                  R&                  R(                  5      (       dƒ  SS KJs  Jn  SS KJs  Jn  [        R4                  R7                  5       (       a'  UR8                  (       a  U" T UTT5      $ U" T UTT5      $ UR:                  (       a  U" T UTT5      $ U" T UTT5      $ SSKJnJ n  U" U5      (       a’  [        R                  R%                  UR                  5       [        R                  R&                  R(                  5      (       a  [C        SUR                  5        S	35      eU" T RD                  T RF                  UTT5      $ [H        RJ                  " [
        U
TT45      u  nn[        R                  RM                  [        R                  R&                  R(                  5      n[        R                  RO                  [        R                  R&                  R(                  5      nU(       d  U(       a  [C        S
5      e[        R                  RQ                  5       [        R                  RS                  [        R                  R&                  R(                  5      -  n[        R                  RU                  5       RW                  [        R                  R&                  R(                  5      [
        RX                  -
  n[[        U[\        5      (       aG  [_        5       nURa                  T5      nURa                  T5      nU" U0 UD6nURc                  U5      nGOi[        R                  Re                  UU5          [        Rf                  " S5      nU[
        R                  ;   a0  U" U0 UD6n[H        RJ                  " [        R                  U	U5      nGO¹[        R                  Ri                  [        R                  Rj                  Rl                  5      =n(       a»  [H        Rn                  " TT/5       HŸ  n[[        U[
        5      (       d  M  [        Rp                  " URr                  5      n  URt                  Rv                  U    n!U!R|                  R~                  n"[€        R‚                  " U"5         [        R„                  " U5        S S S 5        M¡     UR†                  " [        R                  R&                  R(                  /UQ70 UD6nT Rˆ                  (       aG  U[        RŠ                  RŒ                  RŽ                  R�                  L a  [        R’                  " U5        [H        RJ                  " [        R                  U	U5      n[        R”                  " 5         [        Rf                  " U5         S S S 5        [        R                  RM                  [        R                  R&                  R(                  5      n[        R                  RO                  [        R                  R&                  R(                  5      nU(       d  U(       a  [C        S5      e[—        S [H        Rn                  " W5       5       5      (       a1  U[        RŠ                  RŒ                  R˜                  R�                  L a  U$ [        Rš                  Rœ                  URž                  ;   aj  U[        RŠ                  RŒ                  R                   R¢                  La9  [        R¤                  R¦                  R©                  5          U" T0 TD6  S S S 5        [«        UTTU5      $ s  snf ! , (       d  f       GN‘= f! [x         a    [{        SU  S35      S ef = f! , (       d  f       GMk  = f! [        R”                  " 5         [        Rf                  " W5        f = f! , (       d  f       GN = f! , (       d  f       N¦= f)NrR   c                óR  >• TR                   (       a2  U [        R                  R                  R                  R
                  L a  gSSKJn  U" U 5      (       a  g[        S U R                  R                   5       5      nU(       d  U R                  R                  (       a  gTR                   (       aQ  TR                  (       a?  U R                  S;  a.  U R                  5       (       a  [        R                   " SU  S3S	S
9  gg["        R$                  " TT45      u  p4['        X5      $ )NFr   )Ú#_should_decompose_because_unsafe_opTc              3  ó8   #   • U  H  oR                   v •  M     g 7fr   )Ú
alias_info)Ú.0Úargs     r$   Ú	<genexpr>ÚRFunctionalTensorMode.__torch_dispatch__.<locals>._can_decompose.<locals>.<genexpr>·  s   é € Ð$VÒ?U¸§^¦^Ò?Uùs   ‚)r]   rÇ   z˜At pre-dispatch tracing, we assume that any custom op marked with CompositeImplicitAutograd and have functional schema are safe to not decompose. Found z to be one such op.rS   )Ú
stacklevel)rš   r2   r\   r]   Údropoutr_   Útorch._decomprý   ÚanyÚ_schemaÚ	argumentsÚ
is_mutablerâ   Ú	namespaceÚ_can_decomposeÚwarningsÚwarnÚpytreeÚtree_flattenr   )re   rý   Úalias_info_presentÚflat_args_kwargsr%   r!   r"   r    s        €€€r$   r  Ú?FunctionalTensorMode.__torch_dispatch__.<locals>._can_decompose§  sê   ø€ ð �{�{˜t¤u§y¡y§~¡~×'=Ñ'=×'EÑ'EÒEØõ Já2°4×8Ñ8Øô "%Ñ$V¸t¿|¹|×?UÒ?UÓ$VÓ!VÐÞ! T§\¡\×%<×%<Øð �{�{Ø×$×$à—~‘~Ð-=Ó=À$×BUÑBU×BWÑBWÜ Ÿšð%à%) FÐ*=ð?ð ()ò	ð !Øô #)×"5Ò"5°t¸V°nÓ"EÑÐÜ1°$ÓIÐIr'   c                óÔ   >• [        U [        5      (       a  [        S5      e[        U [        R                  5      (       a'  [        R
                  " U 5      (       a  [        U T5      $ U $ )Nz*x must not be a FunctionalTensor in wrap())rb   r(   r4   r2   r8   r3   )rv   r    s    €r$   ÚwrapÚ5FunctionalTensorMode.__torch_dispatch__.<locals>.wrapâ  sR   ø€ ô ˜!Ô-×.Ñ.Ü$Ð%QÓRÐRÜ˜!œUŸ\™\×*Ñ*¬u×/JÒ/JÈ1×/MÑ/MÜ'¨¨4Ó0Ð0ØˆHr'   c                ó   • U R                   $ r   )r/   )rv   s    r$   ÚunwrapÚ7FunctionalTensorMode.__torch_dispatch__.<locals>.unwrapì  s   € Ø—6‘6ˆMr'   r   )Úcan_auto_functionalizeÚdo_auto_functionalizeÚdo_auto_functionalize_v2)Úhandle_effectsÚhas_effectszfunc zE with effects should not have a kernel for Functionalize dispatch keyz?Functionalization should not already be enabled above this modeTzcannot find z in tensor_trackerzNFunctionalization should not already be enabled above this mode after dispatchc              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr   )rb   r(   )r   rv   s     r$   r  Ú:FunctionalTensorMode.__torch_dispatch__.<locals>.<genexpr>Ž  s"   é € ð â9�Aô ˜1Ô.×/Ð/Ú9ùs   ‚)re   r   r)   r«   )rv   Úobjectr)   r!  )rv   r(   r)   r.   )VÚ
issubclassr2   rU   rV   r8   r(   rW   rX   rY   rZ   r6   Ú_dispatch_has_kernelÚnameÚ	decomposeÚ*torch._higher_order_ops.auto_functionalizer  r  r  Ú%_dispatch_has_kernel_for_dispatch_keyr¾   ÚFunctionalizeÚtorch._export.configrB   rC   Útorch._inductor.configrF   ÚcompilerÚis_exportingrD   rG   Útorch._higher_order_ops.effectsr  r  r4   rç   rå   r  Útree_map_onlyÚ&_dispatch_tls_is_dispatch_key_includedÚ&_dispatch_tls_is_dispatch_key_excludedÚ_dispatch_tls_local_include_setÚDispatchKeySetÚ_dispatch_tls_local_exclude_setÚremover5   rb   r   ÚPythonFunctionalizeAPIÚunwrap_tensorsÚwrap_tensorsÚ_ForceDispatchKeyGuardÚ#_functionalize_enable_reapply_viewsrí   rs   ÚPROXYÚtree_leavesrc   r/   ÚtracerÚtensor_trackerÚKeyErrorrd   ÚproxyÚnodeÚfx_tracebackÚset_current_replay_noder|   Ú_op_dkrš   r\   r]   r  r_   Ú_freeze_functional_tensorÚ_disable_functionalizationr  Ú
lift_freshÚTagÚinplace_viewÚtagsÚset_Úsource_TensorÚutilsÚ_mode_utilsÚno_dispatchr   )#r    re   rf   r!   r"   rg   rh   r  Úrr  r  r  r  r  Úexport_configÚinductor_configr  r  Úargs_unwrappedÚkwargs_unwrappedÚis_includedÚis_excludedÚinclude_to_setÚexclude_to_setÚctxÚfully_unwrapped_argsÚfully_unwrapped_kwargsÚouts_unwrappedÚouts_wrappedÚold_apply_viewsÚmÚaÚ	unwrappedÚtracker_entryÚ	curr_nodes#   `  ``                              r$   ri   Ú'FunctionalTensorMode.__torch_dispatch__�  s2  ú€ ð ‰>ØˆFñ ó
â�Ü˜a¤×!2Ñ!2×!=Ñ!=×>ó ð œ%Ÿ,™,Ô(8Ð9Ñ9÷ Ùð 	ð 
ö Ü×%Ñ%Ø@ÐBTôô "Ð!÷-	Jñ -	Jð` Ô(×5Ñ5Ó5Ù˜t×$Ñ$ô —‘×-Ñ-¨d¯i©i«k×:Ñ:âØ—N’N DÐ3¨FÑ3�ØœNÒ*Ø÷ ‘à*÷ ÷
	ô	÷	
ñ 	
ñ "Ø÷
ñ 
ä—(‘(×@Ñ@Ø�I‰I‹KœŸ™×-Ñ-×;Ñ;÷
ñ 
÷ 9Ð8ß<Ð<ä�~‰~×*Ñ*×,Ñ,Ø ×I×IÙ3°D¸$ÀÀfÓMÐMá,¨T°4¸¸vÓFÐFà×<×<Ù/°°d¸DÀ&ÓIÐIÙ(¨¨t°T¸6ÓBÐBçOá�t×ÑÜ�x‰x×=Ñ=Ø—	‘	“œUŸX™X×1Ñ1×?Ñ?÷ñ ô %Ø˜DŸI™I›K˜=Ð(mÐnóð ñ "Ø×+Ñ+¨T¯\©\¸4ÀÀvóð ô ,2×+?Ò+?Ü˜f t¨V nó,
Ñ(ˆÐ(ô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆö ž{Ü ØQóð ô �H‰H×4Ñ4Ó6Ü�h‰h×%Ñ%¤e§h¡h×&:Ñ&:×&HÑ&HÓIñJð 	ô
 �H‰H×4Ñ4Ó6×=Ñ=Ü—‘×$Ñ$×2Ñ2óô ×3Ñ3ñ4ð 	ô �dÔ/×0Ñ0ô
 )Ó*ˆCØ#&×#5Ñ#5°dÓ#;Ð Ø%(×%7Ñ%7Øó&Ð"ñ "Ø%ðà(ñˆNð ×+Ñ+¨NÓ;ŠLô —‘×0Ñ0°ÀÕPð<Oä&+×&OÒ&OÐPTÓ&U�Oð Ô/×<Ñ<Ó<Ù)-¨~Ð)RÐAQÑ)R˜Ü'-×';Ò';Ü!ŸL™L¨$°ó(šô  !&§¡× ;Ñ ;Ü!ŸH™H×:Ñ:×@Ñ@ó!ð ˜1õ ô &,×%7Ò%7¸¸v¸Ö%G Ü'1°!Ô5E×'FÑ'FÙ$,Ü,1×,IÒ,IÈ!Ï&É&Ó,Q 	ð!0Ø45·H±H×4KÑ4KÈIÑ4V Mð
 -:×,?Ñ,?×,DÑ,D 	Ü%1×%IÒ%IÈ)Õ%TÜ$)§K¢K°¤N÷ &UÑ%Tñ &Hð& *.¯ªÜ!ŸH™H×0Ñ0×>Ñ>ð*à+ò*ð /ñ*˜ð  Ÿ;Ÿ;Ø#¤u§y¡y§~¡~×'=Ñ'=×'EÑ'EÒEÜ %× ?Ò ?ÀÔ OÜ'-×';Ò';Ü!ŸL™L¨$°ó(˜ô ×4Ò4Ô6Ü×=Ò=¸oÕN÷{ Qô~ —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆö ž{Ü Ø`óð ô ñ ä×+Ò+¨LÔ9ó÷ ñ ð ”u—y‘y—~‘~×0Ñ0×8Ñ8Ò8àÐô �I‰I×"Ñ" d§i¡iÓ/ØœEŸI™IŸN™N×/Ñ/×=Ñ=Ò=ä—‘×(Ñ(×4Ñ4Õ6Ù�dÐ%˜fÒ%÷ 7ô +¨4°°v¸|ÓLÐLùòU
÷F –ûôN (0ó !0Ü*6Ø*6°y°kÐASÐ(Tó+&à+/ð%0ð!0ú÷
 &U×%Tûô* ×4Ò4Ô6Ü×=Ò=¸oÕNú÷{ QÖPú÷x 7Õ6ús~   �-b¾bÁbÃ$bÒ/d	Ò1C4cÖ&b(Ö?,c×+cØCcÛ+d	á2	dâ
b%â(cãcã
cã	cã-däd	ä	
dä
d)c                ó   • g)NTr*   )rK   s    r$   Úis_infra_modeÚ"FunctionalTensorMode.is_infra_mode¦  s   € àr'   )
rç   rä   r»   rI   rå   ræ   rá   rš   rà   râ   )FFF)râ   r«   rš   r«   rç   r«   r)   r´   )r)   r   )r÷   zOptional[type[BaseException]]rø   zOptional[BaseException]rù   zOptional[TracebackType]r)   r´   r¯   r°   r³   )rµ   r¶   r·   r¸   rß   rò   rö   ri   Úclassmethodre  rÙ   rÚ   rÛ   s   @r$   r®   r®   O  sÍ   ø† ð #ØØ',ð	"(àð"(ð ð"(ð !%ð	"(ð
 
÷"(ð "(÷Jð"8à/ð8ð )ð8ð (ð	8ð
 
÷8ð !#Ø(,ðTMàðTMð ðTMð ð	TMð
 &ðTMð 
õTMðl óó ör'   r®   c                 ó\   • [        [        R                  R                  R                  5      $ r   )r   r2   r6   rs   rt   r*   r'   r$   Údisable_functional_moderi  «  s   € äœuŸx™x×=Ñ=×HÑHÓIÐIr'   c                ó8   ^ ^^^• SS jmSS jmSUU UU4S jjnU$ )Nc                ón   • [        U [        R                  5      (       a  [        R	                  U 5      $ U $ r   )rb   r2   r8   r(   ry   ©rg   s    r$   Úto_funÚ&dispatch_functionalize.<locals>.to_fun¼  s)   € Ü�aœŸ™×&Ñ&Ü#×1Ñ1°!Ó4Ð4Øˆr'   c                ó&  • [        U [        5      (       dG  [        U [        R                  5      (       a&  [        R                  " U 5      (       a  [        S5      eU $ [        R                  " U 5        [        R                  " U R                  5      $ )NzCNon-FunctionalTensor torch.Tensor should not be a functional tensor)	rb   r(   r2   r8   r3   r4   r|   rc   r/   rl  s    r$   Úfrom_funÚ(dispatch_functionalize.<locals>.from_funÁ  si   € Ü˜!Ô-×.Ñ.ä˜!œUŸ\™\×*Ñ*Ü×.Ò.¨q×1Ñ1Ü(Ø]óð ð ˆHÜ�Š�AŒÜ×,Ò,¨Q¯V©VÓ4Ð4r'   c                 ó*  >• [         R                  R                  [         R                  R                  [         R                  R                  R
                  5      5      nU   T	   [        R                  " [         R                  T
U 5      n[        R                  " [         R                  T
U5      nT" U0 UD6n[        R                  " [        TU5      nUsS S S 5        sS S S 5        $ ! , (       d  f       O= fS S S 5        g ! , (       d  f       g = fr   )
r2   r6   Ú_ExcludeDispatchKeyGuardr2  r¾   r(  r  r.  r8   r(   )r!   r"   Údisable_aboveÚ	func_argsÚfunc_kwargsÚfunc_outputsÚoutputsrp  re   rL   rm  s          €€€€r$   ÚinnerÚ%dispatch_functionalize.<locals>.innerÍ  s®   ø€ ÜŸ™×9Ñ9Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ˆò šDÜ×,Ò,¬U¯\©\¸6À4ÓHˆIÜ ×.Ò.¬u¯|©|¸VÀVÓLˆKÙ Ð:¨kÑ:ˆLÜ×*Ò*Ô+;¸XÀ|ÓTˆGà÷ !˜D�]‰]ŸD�Dú�]�]Ž]ús%   Á"DÁ%A2C*Ã	DÃ*
C8	Ã4DÄ
D)rg   r!  r)   r!  )r!   r   r"   r   r)   r   r*   )re   rL   ry  rp  rm  s   `` @@r$   Údispatch_functionalizer{  ¸  s   û€ ôô

5÷
ò 
ð €Lr'   c                  ó´   • \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS j5       r\SS	 j5       rS
rg)ÚBaseFunctionalizeAPIiÜ  c                ó   • g r   r*   ©r    r!   s     r$   r7  Ú!BaseFunctionalizeAPI.wrap_tensorsÝ  ó   € àr'   c                ó   • g r   r*   r  s     r$   r6  Ú#BaseFunctionalizeAPI.unwrap_tensorsá  r�  r'   c                ó   • g r   r*   ©r    Úinner_fs     r$   ÚfunctionalizeÚ"BaseFunctionalizeAPI.functionalizeå  r�  r'   c                ó   • g r   r*   r}   s    r$   Úredispatch_to_nextÚ'BaseFunctionalizeAPI.redispatch_to_nexté  r�  r'   c                ó   • g r   r*   ©r    Úinput_tensorÚoutput_tensors      r$   ÚreplaceÚBaseFunctionalizeAPI.replaceí  r�  r'   c                ó   • g r   r*   ©r    Útensors     r$   rŠ   Ú"BaseFunctionalizeAPI.commit_updateñ  r�  r'   c                ó   • g r   r*   r“  s     r$   rŽ   ÚBaseFunctionalizeAPI.syncõ  r�  r'   c                ó   • g r   r*   r“  s     r$   r’   Ú7BaseFunctionalizeAPI.mark_mutation_hidden_from_autogradù  r�  r'   r*   N©r!   r±   r)   r±   )r!   z'torch.Tensor | tuple[torch.Tensor, ...]r)   r   )r†  úCallable[..., Any]r)   r›  ©r)   zAbstractContextManager[None]©rŽ  r.   r�  r.   r)   r´   ©r”  r.   r)   r´   )rµ   r¶   r·   r¸   r   r7  r6  r‡  rŠ  r�  rŠ   rŽ   r’   rÙ   r*   r'   r$   r}  r}  Ü  s    † Øóó ðð óó ðð óó ðð óó ðð óó ðð óó ðð óó ðð óó ór'   r}  c                  ó”   ^ • \ rS rSr S     SU 4S j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 jr
SS	 jrSS
 jrSrU =r$ )r5  iþ  c                ó^   >• [         TU ]  5         U(       a  UO	[        5       U l        X l        g r   )rœ   rß   r®   rL   râ   )r    rL   râ   r�   s      €r$   rß   ÚPythonFunctionalizeAPI.__init__ÿ  s%   ø€ ô 	‰ÑÔÞ ‘DÔ&:Ó&<ˆŒ	Ø(Õr'   c                óÞ   • U R                      [        R                  R                  R	                  [        R
                  [        R                  U5      sS S S 5        $ ! , (       d  f       g = fr   )rL   r2   rL  Ú_pytreer.  r8   r(   ry   r  s     r$   r7  Ú#PythonFunctionalizeAPI.wrap_tensors  s=   € Ø�Y‹YÜ—;‘;×&Ñ&×4Ñ4Ü—‘Ô.×<Ñ<¸dó÷ �Y�Yús   �AAÁ
A,c                ó|   • [         R                  R                  R                  [        [        R
                  U5      $ r   )r2   rL  r£  r.  r(   r~   r  s     r$   r6  Ú%PythonFunctionalizeAPI.unwrap_tensors  s/   € ô �{‰{×"Ñ"×0Ñ0ÜÔ.×>Ñ>Àó
ð 	
r'   c                ó,   • [        XR                  5      $ r   )r{  rL   r…  s     r$   r‡  Ú$PythonFunctionalizeAPI.functionalize  s   € Ü% g¯y©yÓ9Ð9r'   c                ó,   • [         R                  " 5       $ r   )Ú
contextlibÚnullcontextr}   s    r$   rŠ  Ú)PythonFunctionalizeAPI.redispatch_to_next  s   € ô ×%Ò%Ó'Ð'r'   c                ó¾   • [        U[        5      (       d  [        S[        U5       35      e[        U[        5      (       a  [        S5      eUR	                  U5        g )Nz-input_tensor must be a FunctionalTensor, got z,output_tensor must not be a FunctionalTensor)rb   r(   r4   Útyper†   r�  s      r$   r�  ÚPythonFunctionalizeAPI.replace  sW   € Ü˜,Ô(8×9Ñ9Ü Ø?ÄÀ\Ó@RÐ?SÐTóð ô �mÔ%5×6Ñ6Ü Ð!OÓPÐPØ×Ñ˜mÕ,r'   c                ó|   • [        U[        5      (       d  [        S[        U5       35      eUR	                  5         g ©Nz'tensor must be a FunctionalTensor, got )rb   r(   r4   r®  rŠ   r“  s     r$   rŠ   Ú$PythonFunctionalizeAPI.commit_update(  s9   € Ü˜&Ô"2×3Ñ3Ü Ø9¼$¸v»,¸ÐHóð ð 	×ÑÕr'   c                ó|   • [        U[        5      (       d  [        S[        U5       35      eUR	                  5         g r±  )rb   r(   r4   r®  rŽ   r“  s     r$   rŽ   ÚPythonFunctionalizeAPI.sync/  s6   € Ü˜&Ô"2×3Ñ3Ü Ø9¼$¸v»,¸ÐHóð ð 	�‰�r'   c                ó|   • [        U[        5      (       d  [        S[        U5       35      eUR	                  5         g r±  )rb   r(   r4   r®  r’   r“  s     r$   r’   Ú9PythonFunctionalizeAPI.mark_mutation_hidden_from_autograd6  s9   € Ü˜&Ô"2×3Ñ3Ü Ø9¼$¸v»,¸ÐHóð ð 	×1Ñ1Õ3r'   )rL   râ   rÞ   )rL   rð   râ   r«   r)   r´   ©r!   ú
tuple[Any]r)   r¸  )r!   zAUnion[torch.Tensor, tuple[torch.Tensor, ...], list[torch.Tensor]]r)   r   ©r†  r   r)   r   rœ  r�  rž  )rµ   r¶   r·   r¸   rß   r7  r6  r‡  rŠ  r�  rŠ   rŽ   r’   rÙ   rÚ   rÛ   s   @r$   r5  r5  þ  se   ø† àPUð)Ø2ð)ØIMð)à	÷)ð )ôð
ØUð
à	ô
ô:ô(ô-ôô÷4ò 4r'   r5  c                  ól   • \ rS rSrSS jr    SS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)ÚCppFunctionalizeAPIi>  c                ó   • SSK Jn  U" USS9$ ©Nr   )Ú_wrap_all_tensors_to_functional)Úlevel)Ú!torch._functorch.eager_transformsr¾  ©r    r!   r¾  s      r$   r7  Ú CppFunctionalizeAPI.wrap_tensors?  s   € ÝUá.¨t¸1Ñ=Ð=r'   c                ó,   • SSK Jn  U" U[        5       S9$ ©Nr   )Ú#_unwrap_all_tensors_from_functional)Úreapply_views)rÀ  rÅ  Ú_reapply_views©r    r!   rÅ  s      r$   r6  Ú"CppFunctionalizeAPI.unwrap_tensorsD  s   € õ	
ñ 3°4Ä~ÓGWÑXÐXr'   c                ó@   • [         R                  R                  U5      $ r   )r2   re   r‡  r…  s     r$   r‡  Ú!CppFunctionalizeAPI.functionalizeN  s   € Ü�z‰z×'Ñ'¨Ó0Ð0r'   c                ó¾   • [         R                  R                  [         R                  R                  [         R                  R                  R
                  5      5      $ r   )r2   r6   rs  r2  r¾   r(  r}   s    r$   rŠ  Ú&CppFunctionalizeAPI.redispatch_to_nextQ  s;   € Ü�x‰x×0Ñ0Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ð 	
r'   c                ó0   • [         R                  " X5        g r   ©r2   r„   r�  s      r$   r�  ÚCppFunctionalizeAPI.replaceV  ó   € Ü×$Ò$ \ÕAr'   c                ó0   • [         R                  " U5        g r   ©r2   r‰   r“  s     r$   rŠ   Ú!CppFunctionalizeAPI.commit_updateY  ó   € Ü×*Ò*¨6Õ2r'   c                ó0   • [         R                  " U5        g r   ©r2   r�   r“  s     r$   rŽ   ÚCppFunctionalizeAPI.sync\  ó   € Ü×!Ò! &Õ)r'   c                ó0   • [         R                  " U5        g r   ©r2   r‘   r“  s     r$   r’   Ú6CppFunctionalizeAPI.mark_mutation_hidden_from_autograd_  ó   € Ü×?Ò?ÀÕGr'   r*   Nrš  ©r!   ú-Union[torch.Tensor, tuple[torch.Tensor, ...]]r)   rß  r¹  rœ  r�  rž  )rµ   r¶   r·   r¸   r7  r6  r‡  rŠ  r�  rŠ   rŽ   r’   rÙ   r*   r'   r$   r»  r»  >  s?   † ô>ð
YØAðYà	6ôYô1ô
ô
Bô3ô*÷Hr'   r»  c                  óv   • \ rS rSrSS jrSS jr    SS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSrg)ÚFunctorchFunctionalizeAPIic  c                ó   • Xl         g r   ©Úinterpreter)r    rä  s     r$   rß   Ú"FunctorchFunctionalizeAPI.__init__d  s   € Ø&Õr'   c                óJ   • SSK Jn  U" XR                  R                  5       S9$ r½  )rÀ  r¾  rä  r¿  rÁ  s      r$   r7  Ú&FunctorchFunctionalizeAPI.wrap_tensorsg  s   € ÝUá.¨t×;KÑ;K×;QÑ;QÓ;SÑTÐTr'   c                óJ   • SSK Jn  U" XR                  R                  5       S9$ rÄ  )rÀ  rÅ  rä  Úfunctionalize_add_back_viewsrÈ  s      r$   r6  Ú(FunctorchFunctionalizeAPI.unwrap_tensorsl  s(   € õ	
ñ 3Ø× 0Ñ 0× MÑ MÓ Oñ
ð 	
r'   c                ó„   • [         R                  R                  UU R                  R	                  5       (       a  SS9$ SS9$ )NÚmutations_and_viewsÚ	mutations)r4  )r2   re   r‡  rä  ré  r…  s     r$   r‡  Ú'FunctorchFunctionalizeAPI.functionalizex  sQ   € Ü�z‰z×'Ñ'Øð ×#Ñ#×@Ñ@×BÑBð &ð (ð 
ð 	
ð
 !ð (ð 
ð 	
r'   c                ó6   • U R                   R                  5       $ r   )rä  Úlowerr}   s    r$   rŠ  Ú,FunctorchFunctionalizeAPI.redispatch_to_next‚  s   € Ø×Ñ×%Ñ%Ó'Ð'r'   c                ó0   • [         R                  " X5        g r   rÏ  r�  s      r$   r�  Ú!FunctorchFunctionalizeAPI.replace…  rÑ  r'   c                ó0   • [         R                  " U5        g r   rÓ  r“  s     r$   rŠ   Ú'FunctorchFunctionalizeAPI.commit_updateˆ  rÕ  r'   c                ó0   • [         R                  " U5        g r   r×  r“  s     r$   rŽ   ÚFunctorchFunctionalizeAPI.sync‹  rÙ  r'   c                ó0   • [         R                  " U5        g r   rÛ  r“  s     r$   r’   Ú<FunctorchFunctionalizeAPI.mark_mutation_hidden_from_autogradŽ  rÝ  r'   rã  N)rä  r   r)   r´   r·  rÞ  r¹  rœ  r�  rž  )rµ   r¶   r·   r¸   rß   r7  r6  r‡  rŠ  r�  rŠ   rŽ   r’   rÙ   r*   r'   r$   rá  rá  c  sB   † ô'ôUð
	
ØAð	
à	6ô	
ô
ô(ôBô3ô*÷Hr'   rá  c                óp   • [        U [        5      (       a   [        R                  " U R                  5      $ U $ r   )rb   r(   r2   rc   r/   )r”  s    r$   Úmb_unwrap_functional_tensorrû  ’  s*   € Ü�&Ô*×+Ñ+Ü×,Ò,¨V¯[©[Ó9Ð9Ø€Mr'   )r#   r   r)   r›  )r)   zGenerator[None, None, None])re   r›  rL   r®   r)   r›  )r”  r.   r)   r.   )AÚ
__future__r   rª  r  rè   Úabcr   r   r   Útypingr   r   r	   r
   Útyping_extensionsr   ÚbuiltinsÚcollections.abcr   r   r   rf   r   Útorch._functorch.pyfunctorchr   Ú
torch._opsr   r2   Útorch.fx.tracebackÚfxÚ	tracebackrA  Útorch.utils._pytreerL  r£  r  Útorch._Cr   rÇ  r   r   Útorch._subclasses.meta_utilsr   Útorch.utils._python_dispatchr   r   r   r   r   Ú_loggingÚgetArtifactLoggerrµ   rW   r+   r8   r(   r®   Úcontextmanagerri  r{  r}  r5  r»  rá  rû  r*   r'   r$   Ú<module>r     s  ðÝ "ã Û Û ß #Ý -ß 6Ó 6Ý "ö Ûß=Ñ=Ý#åEÝ%ã ß )Ð )ß $Ð $Ý Kß KÝ 6÷õ ð —n‘n×6Ñ6°xÐARÓSÐ ô"ôQ!�u—|‘|ô Q!ôhYÐ,ô Yðx
 ×ÑóJó ðJñ <PÓ;Qð!Ø
ð!Ø$8ð!àõ!ôH˜3ô ôD=4Ð1ô =4ô@"HÐ.ô "HôJ,HÐ 4ô ,Hõ^r'   