Ë
    òÍ:jzì  ã                   óf  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlZd dlmc mZ d dlmZ d dlmZ m!Z! d dl"m#Z#m$Z$ d d	l%m&Z& erd d
l'm(Z(  ede¬«      Z) edd¬«      Z* e+ed«      xr	  e+ed«      Z,ejZ                  d„ «       Z. G d„ d«      Z/de/de!fd„Z0i Z1e2e3df   e4d<   e!jj                  e!jl                  e!jn                  e!jp                  e!jr                  e!jt                  gZ; G d„ de/e jx                  «      Z=d„ Z>d„ Z?d„ Z@d„ ZA G d„ d«      ZB eB«       aCdAd „ZDd!„ ZEd"„ ZFd#„ ZGd$„ ZHd%„ ZId&„ ZJ eK«       aLeKd'   e4d(<   d)„ ZMd*„ ZNd+„ ZO G d,„ d'e/ee*e)f   «      ZP G d-„ d.ePe*e)f   «      ZQd/„ ZRd0ej¦                  d1eTfd2„ZU G d3„ d4ee*e)f   «      ZVdeVe*e)f   d5e*j®                  d6e*j°                  d1e)fd7„ZY G d8„ d9ej´                  «      Z[d:„ Z\d;„ Z] G d<„ d=ej´                  «      Z^ G d>„ d?ej´                  «      Z_ e_«       Z`e_e4d@<   y)Bé    N)ÚIterator)Úcached_property)ÚAnyÚCallableÚClassVarÚfinalÚGenericÚOptionalÚTYPE_CHECKINGÚUnion)ÚConcatenateÚ	ParamSpecÚTypeVar)Ú_utils_internal)Ú_dispatch_is_included_in_aliasÚDispatchKey)Údispatch_functorchÚTransformType)ÚTorchDispatchMode)ÚBaseFunctionalizeAPIÚ_T)ÚdefaultÚ_P.ÚgetdlopenflagsÚsetdlopenflagsc               #   óþ   K  — t         sd–— yt        j                  «       } t        j                  | t        j
                  z  «       	 d–— t        j                  | «       y# t        j                  | «       w xY w­w)z�
    Context manager to set the RTLD_GLOBAL dynamic linker flag while we open a
    shared library to load custom operators.
    N)Ú_SET_GLOBAL_FLAGSÚsysr   r   ÚctypesÚRTLD_GLOBAL)Ú	old_flagss    ú_/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/_ops.pyÚdl_open_guardr#   +   s\   è ø€ õ ÛØÜ×"Ñ"Ó$€IÜ×Ñ�y¤6×#5Ñ#5Ñ5Ô6ð&Ûä×Ñ˜9Õ%øŒ×Ñ˜9Õ%üs   ‚AA=Á	A# ÁA=Á#A:Á:A=c                   óÄ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdee	e
   e	ej                     eef   deeeef   geeef   f   fd„Zd	eed
ef   ef   deed
ef   ef   fd„Zd„ Zy)ÚOperatorBasez·
    Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
    (which represents Python-only operators that are unrepresentable in TorchScript).
    c                 ó<   — i | _         i | _        i | _        i | _        y ©N)Ú_dispatch_cacheÚ
py_kernelsÚpython_key_tableÚfunctorch_table©Úselfs    r"   Ú__init__zOperatorBase.__init__B   s1   € ð$ ð 	Ôð BDˆŒð ð 	Ôð  "ˆÕó    c                 ó   — t         ‚r'   ©ÚNotImplementedError©r-   ÚargsÚkwargss      r"   Ú__call__zOperatorBase.__call__n   ó   € Ü!Ð!r/   c                 ó   — || j                   v S r'   )r)   )r-   Úks     r"   Úhas_kernel_for_dispatch_keyz(OperatorBase.has_kernel_for_dispatch_keyq   s   € Ø�D—O‘OÐ#Ð#r/   c                 óŒ   — | j                   D ]5  }t        j                  j                  |«      rŒ#|j	                  |«      sŒ5 y y)NTF)r)   ÚtorchÚ_CÚ_dispatch_is_alias_keyÚhas)r-   Úksr9   s      r"   Úhas_kernel_for_any_dispatch_keyz,OperatorBase.has_kernel_for_any_dispatch_keyt   s9   € Ø—‘ò 	ˆAÜ—8‘8×2Ñ2°1Õ5¸"¿&¹&À½)Ùð	ð r/   r9   Úreturnc                 ód   ‡ ‡— dt         t        t        f   dt         t        t        f   fˆˆ fd„}|S )NÚfnrB   c                 ób  •— t        j                  ‰«      ret        ‰t        «      st        ‰t        j
                  «      r;‰‰j                  vsJ ‚| ‰j                  ‰<   ‰j                  j                  «        | S t        ‰t        «      r!‰‰j                  vsJ ‚| ‰j                  ‰<   | S t        ‰t        «      sJ ‚‰t        j                  k7  sJ d«       ‚‰‰j                  v rt        d‰› d‰j!                  «       › �«      ‚| ‰j                  ‰<   ‰j                  j                  «        | S )Nz>Please register a mode for the DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )ÚinspectÚisclassÚ
issubclassr   r<   ÚTensorr*   r(   ÚclearÚ
isinstancer   r+   r   ÚPythonr)   ÚRuntimeErrorÚname)rD   r9   r-   s    €€r"   Úinnerz#OperatorBase.py_impl.<locals>.innerƒ   s  ø€ Ü�‰˜qÔ!Ü˜1Ô/Ô0´J¸qÄ%Ç,Á,Ô4Oà × 5Ñ 5Ñ5Ð5Ð5à+-�×%Ñ% aÑ(Ø×$Ñ$×*Ñ*Ô,Ø�	ä˜!œ]Ô+Ø × 4Ñ 4Ñ4Ð4Ð4Ø*,�×$Ñ$ QÑ'Ø�	ä˜a¤Ô-Ð-Ð-Øœ×*Ñ*Ò*ð ØPóÐ*ð �D—O‘OÑ#Ü"Ø;¸A¸3¸mÈDÏIÉIËKÈ=ÐYóð ð "$ˆD�O‰O˜AÑØ× Ñ ×&Ñ&Ô(ØˆIr/   )r   r   r   )r-   r9   rO   s   `` r"   Úpy_implzOperatorBase.py_implz   s/   ù€ ð	”hœr¤2˜vÑ&ð 	¬8´B¼°FÑ+;ö 	ð8 ˆr/   rD   r   c                 ó  ‡‡‡‡— ddl mŠm}mŠmŠ dt
        j                  dt
        j                  dt        fˆˆfd„}dt        |   dt
        j                  dt
        j                  dt        fˆˆfd„}dt
        j                  dt
        j                  dt        fˆˆfd	„} | j                  t        j                  «      |«        | j                  |«      |«        | j                  t        j                  «      |«       ‰S )
Nr   )ÚCppFunctionalizeAPIÚFunctionalTensorModeÚFunctorchFunctionalizeAPIÚPythonFunctionalizeAPIr4   r5   rB   c                  ó&   •—  ‰ ‰«       g| ¢­i |¤ŽS r'   © )r4   r5   rR   rD   s     €€r"   Úfunctionalize_dk_fnz?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn¸   s   ø€ ÙÑ)Ó+Ð=¨dÒ=°fÑ=Ð=r/   Úmodec                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r'   rW   )rY   r4   r5   rU   rD   s      €€r"   Úfunctionalize_dispatch_mode_fnzJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fn»   s    ø€ ñ Ñ,¨TÓ2ÐD°TÒD¸VÑDÐDr/   c                 ó(   •—  ‰ ‰| «      g|¢­i |¤ŽS r'   rW   )Úinterpreterr4   r5   rT   rD   s      €€r"   Úfunctionalize_functorch_fnzFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fnÀ   s    ø€ ñ Ñ/°Ó<ÐN¸tÒNÀvÑNÐNr/   )Ú#torch._subclasses.functional_tensorrR   rS   rT   rU   r   r4   r5   r   r
   rP   r   ÚFunctionalizer   )	r-   rD   rS   rX   r[   r^   rR   rT   rU   s	    `    @@@r"   Úpy_functionalize_implz"OperatorBase.py_functionalize_impl¬   sà   û€ ÷	
ó 	
ð	>¤r§w¡wð 	>¼"¿)¹)ð 	>Ìö 	>ð	EÜÐ/Ñ0ð	EÜ9;¿¹ð	EÜLNÏIÉIð	Eäö	Eð
	OÜ "§¡ð	OÜ35·9±9ð	Oäö	Oð
 	0ˆ�‰”[×.Ñ.Ó/Ð0CÔDØ*ˆ�‰Ð)Ó*Ð+IÔJØ1ˆ�‰”]×0Ñ0Ó1Ð2LÔMàˆ	r/   c                 ó   — t         ‚r'   r1   r,   s    r"   rN   zOperatorBase.nameË   r7   r/   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   r6   r:   rA   r   Útyper   r<   rI   r   r   r   r   r   rP   r   ra   rN   rW   r/   r"   r%   r%   <   s¼   „ ñò
*"òX"ò$òð%àØÐ"Ñ#Ø�—‘ÑØØðñ
ð%ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7ó%ðdØ˜;Ð'=¸rÐ'AÑBÀBÐFÑGðà	�+Ð4°bÐ8Ñ9¸2Ð=Ñ	>óó>"r/   r%   Úopr9   c                 óŒ  — | j                  |«      r|S t        j                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S t        j
                  }|t        j                  k(  st	        ||«      r| j                  |«      r|S | j                  t        j                  j                  |«      «      xs | j                  t        j
                  «      }t        j                  }|t        j                  k7  r!t	        ||«      r| j                  |«      r|s|S t        j                  }|t        j                  k(  st	        ||«      r\| j                  |«      rK|t        j                  k(  r4| j                  t        j                  j                  «      rt        d«      ‚|s|S t        j                  }t	        ||«      r| j                  |«      r|S t        j                   }t	        ||«      r| j                  |«      r|S t        j                  j#                  |«      r|S t%        d| › d|› �«      ‚)Nzambiguous autogradother kernelzcould not find kernel for ú at dispatch key )r:   r   Ú&CompositeExplicitAutogradNonFunctionalÚ	UndefinedÚis_included_in_aliasÚCompositeExplicitAutogradrA   r<   r=   Ú*_dispatch_get_backend_keyset_from_autogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeImplicitAutogradÚAutogradOtherÚ _dispatch_autogradother_backendsrM   ÚAutogradÚFuncTorchBatchedDecompositionÚ_dispatch_has_backend_fallbackr2   )rh   r9   ÚcandÚhas_backend_kernels       r"   Úresolve_keyry   Ð   sì  € à	×%Ñ% aÔ(Øˆä×=Ñ=€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Øˆä×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.ØˆØ×;Ñ;Ü�‰×;Ñ;¸AÓ>óò Oà	×	'Ñ	'¬×(MÑ(MÓ	Nð ô ×<Ñ<€Dà	
Œk×#Ñ#Ò	#Ô(<¸QÀÔ(EØ×*Ñ*¨4Ô0Ù"àˆÜ×0Ñ0€Dà	Œ[×"Ñ"Ò"Ô&:¸1¸dÔ&CØ
×
(Ñ
(¨Ô
.Ø”×)Ñ)Ò)¨b×.PÑ.PÜ�H‰H×5Ñ5ô/
ô Ð?Ó@Ð@Ù#ØˆKä×Ñ€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä×4Ñ4€DÜ˜A˜tÔ$¨×)GÑ)GÈÔ)MØˆä‡x�x×.Ñ.¨qÔ1ð ˆÜ
Ð :¸2¸$Ð>OÐPQÈsÐSÓ
TÐTr/   ÚHigherOrderOperatorÚ_higher_order_opsc                   ó  ‡ — e Zd Zddœˆ fd„
Zdeee   eej                     e	e
f   deeeef   geeef   f   fˆ fd„Zdeeef   deeef   fd„Zed	„ «       Zedefd
„«       Zd„ Zd„ Zej0                  d„ «       Zd„ Zd„ Zd„ Zˆ xZS )rz   F)Ú	cacheablec                ó0  •— t         ‰| �  «        t        | «      t        u rt	        d«      ‚|| _        || _        | t        |<   d| _        d| _	        || _
        t        j                  j                  «       | _        t        D ]  }| j!                  |«       Œ y )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.Úhigher_orderútorch.ops.higher_order)Úsuperr.   rg   rz   rM   Ú_namerc   r{   Ú_nsrd   Ú
_cacheabler<   r=   Ú_dispatch_keyset_fullÚnon_fallthrough_keysÚ2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSÚfallthrough)r-   rN   r}   Údispatch_keyÚ	__class__s       €r"   r.   zHigherOrderOperator.__init__  s�   ø€ Ü‰ÑÔÜ�‹:Ô,Ñ,ÜØaóð ð ˆŒ
ð ˆŒØ"&Ô˜$ÑØ!ˆŒØ2ˆŒØ#ˆŒä$)§H¡H×$BÑ$BÓ$DˆÔ!äNò 	+ˆLØ×Ñ˜\Õ*ñ	+r/   r9   rB   c                 ó¸   •— t        |t        «      r;| j                  j                  |«      s | j                  j	                  |«      | _        t
        ‰| �  |«      S r'   )rK   r   r†   r?   Úaddr�   rP   ©r-   r9   rŠ   s     €r"   rP   zHigherOrderOperator.py_impl3  sJ   ø€ ô �aœÔ%¨d×.GÑ.G×.KÑ.KÈAÔ.NØ(,×(AÑ(A×(EÑ(EÀaÓ(HˆDÔ%Ü‰w‰˜qÓ!Ð!r/   rD   c                 ó®   ‡ ‡— dt         j                  dt         j                  dt        fˆˆ fd„} ‰ j	                  t
        j                  «      |«       ‰S )Nr4   r5   rB   c                  ó¼  •— t        j                  «       r+t        j                  t         j                  d„ g | ¢|‘­«      r0t         j
                  j                  «       5   ‰| i |¤Žcd d d «       S ddlm}  |‰«      rK ‰j                  | i |¤Ž}t        d„ |j                  D «       «      rt        d‰j                  «       › d�«      ‚ ‰| i |¤ŽS # 1 sw Y   ŒjxY w)Nc                 ó   — | j                    S r'   )Úrequires_grad)Úts    r"   ú<lambda>zRHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<lambda>G  s   € ˜aŸo™oÐ-€ r/   r   )Ú_has_gen_schemac              3   ó4   K  — | ]  }|j                   –— Œ y ­wr'   )Úis_write©Ú.0Úargs     r"   ú	<genexpr>zSHigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autograd.<locals>.<genexpr>Q  s   è ø€ Ò@¨�s—|•|Ñ@ùs   ‚zThe zå HigherOrderOperator does not currently support training with in-place input or buffer mutations If you require this feature, please submit an issue to PyTorch. Alternatively, consider creating your own custom autograd.Function. )r<   Úis_grad_enabledÚpytreeÚtree_all_onlyrI   r=   Ú_AutoDispatchBelowAutogradÚtorch._higher_order_ops.utilsr”   Ú
gen_schemaÚanyÚ	argumentsrM   rN   )r4   r5   r”   ÚschemarD   r-   s       €€r"   Úmaybe_run_autogradz@HigherOrderOperator.py_autograd_impl.<locals>.maybe_run_autogradD  sÙ   ø€ Ü×(Ñ(Ô*¬f×.BÑ.BÜ—‘Ù-Ø�$�˜‘ô/ô
 —X‘X×8Ñ8Ó:ñ 1Ù Ð0¨Ñ0÷1ñ 1õ Fá˜tÔ$Ø(˜Ÿ™¨$Ð9°&Ñ9�ÜÑ@¨v×/?Ñ/?Ô@Ô@Ü&Ø˜tŸy™y›{˜mð ,_ð _óð ñ �tÐ&˜vÑ&Ð&÷1ð 1ús   ÁCÃC)r   r4   r5   r   rP   r   rt   )r-   rD   r¤   s   `` r"   Úpy_autograd_implz$HigherOrderOperator.py_autograd_impl@  sF   ù€ ð	'¤b§g¡gð 	'¼¿¹ð 	'Ärö 	'ð. 	+ˆ�‰”[×)Ñ)Ó*Ð+=Ô>àˆ	r/   c                 ó   — | j                   S r'   )rƒ   r,   s    r"   Ú	namespacezHigherOrderOperator.namespace_  ó   € à�x‰xˆr/   c                 ó  — ddl m} | j                  xss | j                  › d| j                  › �t
        j                  j                  j                  v xs2 t        | |«      xr$ t
        j                  j                  j                  S )Nr   )ÚAutogradFunctionApplyú.)Ú"torch._functorch.autograd_functionrª   r„   rd   rc   r<   Ú	_inductorÚconfigÚ!unsafe_marked_cacheable_functionsrK   Ú
_functorchÚ.autograd_cache_allow_custom_autograd_functions)r-   rª   s     r"   r}   zHigherOrderOperator.cacheablec  su   € åLð �O‰Oò Ø—/‘/Ð" ! D§M¡M ?Ð3Ü�‰×%Ñ%×GÑGðHòô ˜4Ð!6Ó7ò [Ü×$Ñ$×+Ñ+×ZÑZð	
r/   c                 óD   — | j                   j                  |«      | _         y r'   )r†   Úremove)r-   r‰   s     r"   rˆ   zHigherOrderOperator.fallthroughq  s   € Ø$(×$=Ñ$=×$DÑ$DÀ\Ó$RˆÕ!r/   c                ó  ‡‡— ddl m} || j                  v r)| j                  |   }t        |t        «      rJ ‚ ||i |¤ŽS |t        j
                  k(  rt        | ||«      S |t        j                  k(  �rg Šd„ Šˆˆfd„}g |¢|j                  «       ¢­D ]0  } ||«       t        |t        t        f«      sŒ"|D ]
  } ||«       Œ Œ2 t        ‰«      }	ddl m}
  |«       }|�rt        |«      | j                  v r5| j                  t        |«         } |
«       5 } ||g|¢­i |¤Ž}d d d «       nt        d| j                  › d|› d�«      ‚t         ur|S |	D ]ö  }t        |«      }|j"                  t$        j&                  j(                  k(  rŒ6|t$        j*                  j,                  j.                  u rMt$        j*                  j,                  j0                  }| j                  |   } ||j2                  g|¢­i |¤Ž}|c S || j                  v r| j                  |   } ||i |¤Ž}nt        d| j                  › d	|› d�«      ‚|t         usŒô|c S  t5        d
| j                  › d|› d|	D �cg c]  }t        |«      ‘Œ c}› �«      ‚t$        j&                  j7                  |«      }|t        j8                  k(  r«ddl m}
 t;        «       dkD  r˜t$        j&                  j=                  t        j                  «      skt?        «       }|€J d«       ‚t        |«      | j                  v sJ d|› d�«       ‚| j                  t        |«         } |
|«      5 } ||g|¢­i |¤Žcd d d «       S tA        | |«      }|| jB                  vrt        d| j                  › d|› d|› d�«      ‚|t        j8                  k7  r| jB                  |   | j                  |<   | jB                  |   }t        |t        «      rJ ‚ ||i |¤ŽS # 1 sw Y   �Œ²xY wc c}w # 1 sw Y   Œ¬xY w)Nr   ©Ú_get_current_dispatch_modec                 ó^   — t         j                  j                  | «      j                  d«      S )NrL   )r<   r=   Ú_dispatch_keysr?   )Útensors    r"   Úhas_python_keyz4HigherOrderOperator.dispatch.<locals>.has_python_key‡  s"   € Ü—x‘x×.Ñ.¨vÓ6×:Ñ:¸8ÓDÐDr/   c                 óp   •— t        | t        j                  «      r ‰| «      r‰j                  | «       y y y r'   )rK   r<   rI   Úappend)r™   rº   Úoverloaded_args_lists    €€r"   Úcheck_overloadedz6HigherOrderOperator.dispatch.<locals>.check_overloadedŠ  s/   ø€ Ü˜c¤5§<¡<Ô0±^ÀCÔ5HØ(×/Ñ/°Õ4ð 6IÐ0r/   )Ú_pop_mode_temporarilyz%There was no rule registered for HOP z
 and mode z. We recommend filing an issue.z and subclass zMultiple dispatch failed for zl. There was no registered that did not return NotImplemented. Use HOP.py_impl to register some. Tried mode: z) and subclasses: zIIllegal invocation of dispatch on DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rj   z (resolved from ú))"Útorch.utils._python_dispatchr¶   r(   rK   r   ÚFuncTorchDynamicLayerFrontModer   rL   ÚvaluesÚlistÚtupler¿   rg   r*   r2   r‚   ÚNotImplementedÚ__torch_dispatch__r<   r=   Ú_disabled_torch_dispatch_implÚ_subclassesÚfake_tensorÚ
FakeTensorÚFakeTensorModeÚ	fake_modeÚ	TypeErrorÚ_to_functionality_keyÚPreDispatchÚ&_len_torch_dispatch_stack_pre_dispatchÚ&_dispatch_tls_is_dispatch_key_excludedÚ'_get_current_dispatch_mode_pre_dispatchry   r)   )r-   r‰   r4   r5   r¶   Úkernelr¾   r™   ÚaÚoverloaded_argsr¿   Ú	curr_modeÚhandlerrY   ÚresultÚsubclass_typeÚfunctionality_keyÚ	final_keyrº   r½   s                     @@r"   ÚdispatchzHigherOrderOperator.dispatchv  sm  ù€ ÝKà˜4×/Ñ/Ñ/Ø×)Ñ)¨,Ñ7ˆFÜ! &¬+Ô6Ð6Ð6Ù˜4Ð* 6Ñ*Ð*àœ;×EÑEÒEÜ% d¨D°&Ó9Ð9àœ;×-Ñ-Ó-ð $&Ð òEõ5ð 1˜Ð0 §¡£Ñ0ò ,�Ù  Ô%Ü˜c¤D¬% =Õ1Ø ò ,˜Ù(¨Õ+ñ,ð,ô $Ð$8Ó9ˆOõ Ká2Ó4ˆIØÐ$Ü˜	“? d×&;Ñ&;Ñ;Ø"×3Ñ3´D¸³OÑD�GÙ.Ó0ð @°Dñ ")¨Ð!?°Ò!?¸Ñ!?˜÷@ð @ô
 .Ø?ÀÇ
Á
¸|È:ÐV_ÐU`ð a8ð 9óð ð ¤Ñ/Ø!�Mð 'ò "�Ü $ S£	�à!×4Ñ4Ü—x‘x×=Ñ=ò>ð ð !¤E×$5Ñ$5×$AÑ$A×$LÑ$LÑLÜ$)×$5Ñ$5×$AÑ$A×$PÑ$P�MØ"×3Ñ3°MÑB�GÙ$ S§]¡]ÐD°TÒD¸VÑD�FØ!’Mà  D×$9Ñ$9Ñ9Ø"×3Ñ3°MÑB�Gñ % dÐ5¨fÑ5‘Fä-Ø?ÀÇ
Á
¸|È>ÐZgÐYhð i8ð 9óð ð ¤Ò/Ø!’Mð="ôB Ø/°·
±
¨|ð <à(˜kÐ);Ø%4Ö5 ”D˜•GÒ5Ð6ð8óð ô "ŸH™H×:Ñ:¸<ÓHÐØ¤× 7Ñ 7Ò7ÝJô
 7Ó8¸1Ò<Ü—h‘h×EÑEÜ×"Ñ"ôô DÓE�	Ø Ð,ð Ø_óÐ,ô ˜I“¨$×*?Ñ*?Ñ?ð Ø*¨9¨+°_ÐEóÐ?ð ×/Ñ/´°Y³Ñ@�Ù*Ð+<Ó=ð :ÀÙ" 4Ð9¨$Ò9°&Ñ9÷:ñ :ô    lÓ3ˆ	ð ˜DŸO™OÑ+Ü%Ø@ÀÇÁÀð M#Ø#, +Ð-=¸l¸^È1ðNóð ð œ;×2Ñ2Ò2Ø15·±ÀÑ1KˆD× Ñ  Ñ.Ø—‘ Ñ+ˆô ˜f¤kÔ2Ð2Ð2Ù�tÐ&˜vÑ&Ð&÷@ñ @üòd 6÷,:ð :ús   ÄO1É(O>Í
PÏ1O;ÐPc                ó$   ‡ ‡‡— ˆˆˆ fd„} |«       S )Nc                  ó  •— t        ‰‰«      } t        j                  j                  | «      r$t        j                  j                  ‰| g‰¢­i ‰¤ŽS t        ‰‰‰j                  «      } ‰j                  |j                  «       g‰¢­i ‰¤ŽS r'   )	Ú_to_flat_tupler<   Ú	overridesÚhas_torch_functionÚhandle_torch_functionÚ_compute_keysetr†   rÝ   ÚhighestPriorityTypeId)Ú	flat_argsÚdispatch_key_setr4   r5   r-   s     €€€r"   Úwrapperz-HigherOrderOperator.__call__.<locals>.wrapper   s“   ø€ Ü& t¨VÓ4ˆIÜ�‰×1Ñ1°)Ô<Ü—‘×<Ñ<Ø˜)ðØ&*òØ.4ñð ô  /¨t°V¸T×=VÑ=VÓWÐØ �4—=‘=Ø ×6Ñ6Ó8ðØ;?òØCIñð r/   rW   )r-   r4   r5   rè   s   ``` r"   r6   zHigherOrderOperator.__call__þ  s   ú€ ö
	ñ ‹yÐr/   c                 ó4   — t        d| j                  › d�«      ‚)NzHigherOrderOperator z¼ does not implement a gen_schema. This is OK as long as the hop is functional. e.g. it should not mutate its inputs and there are no input, output aliasing via views or direct referencing.)r2   r‚   r3   s      r"   r    zHigherOrderOperator.gen_schema  s$   € Ü!Ø" 4§:¡: ,ð //ð 0ó
ð 	
r/   c                 ó$   — | j                  «       › S r'   )rN   r,   s    r"   Ú__str__zHigherOrderOperator.__str__"  s   € Ø—)‘)“+�Ðr/   c                 ó   — | j                   S r'   ©r‚   r,   s    r"   rN   zHigherOrderOperator.name%  ó   € Ø�z‰zÐr/   )rc   rd   re   r.   r   rg   r   r<   rI   r   r   r   r   r   rP   r¥   Úpropertyr§   r   Úboolr}   rˆ   rÝ   ÚabcÚabstractmethodr6   r    rë   rN   Ú__classcell__©rŠ   s   @r"   rz   rz     sö   ø„ ð +0ö +ð8"àØÐ"Ñ#Ø�—‘ÑØØðñ
ð"ð 
�8˜B ˜FÑ#Ð$ h¨r°2¨vÑ&6Ð6Ñ	7õ"ðà�R˜�VÑðð 
�"�b�&Ñ	óð> ñó ðð ð
˜4ò 
ó ð
òSò
F'ðP 	×Ññó ðò6
ò ör/   c                 ó,   — t        j                  | i |¤ŽS r'   )rœ   Úarg_tree_leaves©r4   r5   s     r"   rà   rà   )  s   € Ü×!Ñ! 4Ð2¨6Ñ2Ð2r/   c                 ó2   — t        | |«      }t        ||«      S r'   )Ú_get_tensorsÚkey_extractor)r4   r5   r†   Útensorss       r"   rä   rä   -  s   € Ü˜4 Ó(€GÜ˜Ð"6Ó7Ð7r/   c                 óŽ   — t        | |«      }|D �cg c]  }t        |t        j                  «      sŒ|‘Œ! }}t	        |«      S c c}w r'   )rà   rK   r<   rI   rÅ   )r4   r5   Úflat_allr’   Útensor_argss        r"   rù   rù   2  s?   € Ü˜d FÓ+€HØ&ÖF˜¬*°Q¼¿¹Õ*E’1ÐF€KÐFÜ�ÓÐùò Gs
   ‘A±Ac                 óà   — t         j                  j                  «       }| D ]$  }|t         j                  j                  |«      z  }Œ& |t         j                  j	                  «       z
  }||z  }|S r'   )r<   r=   Ú_dispatch_tls_local_include_setr¸   Ú_dispatch_tls_local_exclude_set)rû   Úkey_maskÚkey_setr¹   s       r"   rú   rú   :  sb   € Ü�h‰h×6Ñ6Ó8€GØò <ˆØœEŸH™H×3Ñ3°FÓ;Ñ;‰ð<àœŸ™×@Ñ@ÓBÑB€GØ˜Ñ €GØ€Nr/   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú_ModeStackStateForPreDispatchc                 ó$   — d d g| _         d | _        y r'   )Ú*_ModeStackStateForPreDispatch__infra_modesÚ_schema_check_moder,   s    r"   r.   z&_ModeStackStateForPreDispatch.__init__Q  s   € Ø" D˜\ˆÔØ"&ˆÕr/   c                 óV   — |t        | j                  «      k  sJ ‚|| j                  |<   y r'   ©Úlenr  )r-   ÚindexrY   s      r"   Úsetz!_ModeStackStateForPreDispatch.setU  s+   € Ø”s˜4×-Ñ-Ó.Ò.Ð.Ð.Ø$(ˆ×Ñ˜5Ò!r/   c                 óT   — |t        | j                  «      k  sJ ‚| j                  |   S r'   r
  )r-   r  s     r"   Úgetz!_ModeStackStateForPreDispatch.getY  s,   € Ø”s˜4×-Ñ-Ó.Ò.Ð.Ð.Ø×!Ñ! %Ñ(Ð(r/   c                 óˆ   — t        | j                  D �cg c]  }|€Œ|‘Œ	 c}«      t        | j                  d u«      z   S c c}w r'   )r  r  Úintr  )r-   Úis     r"   Úcountz#_ModeStackStateForPreDispatch.count]  sB   € Ü˜t×1Ñ1ÖC˜!°Q±]’AÒCÓDÄsØ×#Ñ#¨4Ð/óH
ñ 
ð 	
ùÒCs   ”?œ?N)rc   rd   re   r.   r  r  r  rW   r/   r"   r  r  P  s   „ ò'ò)ò)ó
r/   r  c                 óZ  ‡ ‡— t        «       Š‰ �L‰ t        j                  j                  j                  t        j                  j                  j
                  fv sJ ‚|r‰ �J ‚ˆˆ fd„} |«       }t        «       }|dk(  r.t        j                  j                  t        j                  d«       |S )Nc                  óž  •— ‰t         j                  j                  j                  k(  r-‰j	                  d«      } t        «       j                  dd «       | S ‰t         j                  j                  j                  k(  r-‰j	                  d«      } t        «       j                  dd «       | S t        «       j                  } d t        «       _        | S ©Nr   é   )	r<   r=   Ú_TorchDispatchModeKeyÚPROXYr  Ú!mode_stack_state_for_pre_dispatchr  Ú
FUNCTIONALr  )Úcurrent_modeÚcurrent_mode_stack_pre_dispatchÚmode_keys    €€r"   Ú_unset_modez,unset_mode_pre_dispatch.<locals>._unset_modeo  s¥   ø€ Ø”u—x‘x×5Ñ5×;Ñ;Ò;Ø:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐØœŸ™×7Ñ7×BÑBÒBØ:×>Ñ>¸qÓAˆLÜ-Ó/×3Ñ3°A°tÔ<ØÐä<Ó>×QÑQˆLØEIÔ-Ó/ÔBØÐr/   r   F)
r  r<   r=   r  r  r  rÑ   Ú'_dispatch_tls_set_dispatch_key_includedr   rÐ   )r  Úschema_checkr  r  Únew_pre_dispatch_lenr  s   `    @r"   Úunset_mode_pre_dispatchr#  f  s¡   ù€ Ü&GÓ&IÐ#ØÐ˜xÜ�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ð,ñ  ð ð ñ ØÐÐÐõ ñ “=€LäAÓCÐð
 ˜qÒ Ü�‰×8Ñ8¼×9PÑ9PÐRWÔXàÐr/   c                 ó<  — ddl m} ddlm} ddlm} t        | |||f«      sJ ‚t        «       }t        | |«      r4t        «       j                  }|dkD  rt        d«      ‚| t        «       _	        n{t        | |«      r8t        «       j                  d«      }|�J ‚t        «       j                  d| «       n7t        «       j                  d«      }|�J ‚t        «       j                  d| «       |dk(  r/t        j                  j                  t         j"                  d«       y y )Nr   )rS   )ÚSchemaCheckMode)ÚProxyTorchDispatchModezYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackr  T)r_   rS   Ú#torch._subclasses.schema_check_moder%  Ú"torch.fx.experimental.proxy_tensorr&  rK   rÑ   r  r  ÚAssertionErrorr  r  r<   r=   r   r   rÐ   )rY   rS   r%  r&  Úprevious_mode_stack_lenr  s         r"   Ú_set_mode_pre_dispatchr+  Š  s  € ÝHÝCÝIäØà Ø"Øð	
ôð ð ô EÓFÐÜ�$˜Ô(Ü8Ó:×MÑMˆØ" QÒ&Ü Økóð ð BFÔ)Ó+Õ>Ü	�DÐ.Ô	/Ü8Ó:×>Ñ>¸qÓAˆØÐ#Ð#Ð#Ü)Ó+×/Ñ/°°4Õ8ä8Ó:×>Ñ>¸qÓAˆØÐ#Ð#Ð#Ü)Ó+×/Ñ/°°4Ô8ð  !Ò#Ü�‰×8Ñ8¼×9PÑ9PÐRVÕWð $r/   c                  óv  — t        «       } t        «       }|dk(  rt        d«      ‚| j                  �t	        d d¬«      S | j                  d«      �-t	        t        j                  j                  j                  «      S | j                  d«      �-t	        t        j                  j                  j                  «      S y )Nr   zTrying to pop empty mode stackT)r!  r  )r  rÑ   r)  r  r#  r  r<   r=   r  r  r  )Ú
mode_stackÚpre_dispatch_lens     r"   Ú_pop_mode_from_pre_dispatchr/  ±  s™   € Ü2Ó4€JÜ=Ó?Ðà˜1ÒÜÐ=Ó>Ð>à×$Ñ$Ð0Ü& t¸$Ô?Ð?Ø‡~�~�aÓÐ$Ü&¤u§x¡x×'EÑ'E×'PÑ'PÓQÐQØ‡~�~�aÓÐ$Ü&¤u§x¡x×'EÑ'E×'KÑ'KÓLÐLð %r/   c                  ó2   — t        «       j                  «       S r'   )r  r  rW   r/   r"   rÑ   rÑ   À  s   € Ü,Ó.×4Ñ4Ó6Ð6r/   c                 óL  — | t         j                  j                  j                  t         j                  j                  j                  fv sJ ‚| t         j                  j                  j                  k(  rt        «       j                  d«      S t        «       j                  d«      S r  )r<   r=   r  r  r  r  r  )r  s    r"   Ú_get_dispatch_mode_pre_dispatchr2  Ä  s�   € ØÜ�‰×&Ñ&×,Ñ,Ü�‰×&Ñ&×1Ñ1ðñ ð ð ð ”5—8‘8×1Ñ1×7Ñ7Ò7Ü0Ó2×6Ñ6°qÓ9Ð9ä0Ó2×6Ñ6°qÓ9Ð9r/   c                  ó`  — t        «       j                  �t        «       j                  S t        «       j                  «       } | dk(  rt        «       j                  d«      S | dk(  rKt        «       j                  d«      �t        «       j                  d«      S t        «       j                  d«      S y )Né   r  r   )r  r  r  r  )Ú	stack_lens    r"   rÓ   rÓ   Ï  sž   € Ü(Ó*×=Ñ=ÐIÜ0Ó2×EÑEÐEä5Ó7×=Ñ=Ó?ˆ	Ø˜Š>Ü4Ó6×:Ñ:¸1Ó=Ð=Ø˜Š>ô 5Ó6×:Ñ:¸1Ó=ÐIô 2Ó3×7Ñ7¸Ó:ðô 7Ó8×<Ñ<¸QÓ?ðð
 r/   c                  ó   — t         S r'   )Ú"_mode_stack_state_for_pre_dispatchrW   r/   r"   r  r  ß  s   € ä-Ð-r/   Ú
OpOverloadÚ
cached_opsc                 ó.   — t         j                  | «       y r'   )r9  rŒ   )Úop_overloads    r"   Úadd_cached_opr<  ç  s   € ä‡N�N�;Õr/   c                  ó,   — t         j                  «        y r'   )r9  rJ   rW   r/   r"   Úreset_cached_opsr>  ì  s   € ä×ÑÕr/   c                  ó   — t         S r'   )r9  rW   r/   r"   Úget_cached_opsr@  ñ  s   € äÐr/   c                   óÄ  ‡ — e Zd Zdddeeef   deeeef   ef   dej                  j                  dee   ddfˆ fd	„Zedefd
„«       Zedefd„«       Zedej                  j$                  fd„«       Zd$d„Zd„ Zdej,                  dej.                  defd„Zdej                  j2                  dej,                  dej.                  defd„Zd„ Zd„ Zdedefˆ fd„Zdej                  j2                  defˆ fd„Ze defd„«       Z!defd„Z"dej,                  dej.                  defd„Z#deddfd„Z$dede%eeeef   f   fd„Z&d „ Z'e d!„ «       Z(e d"„ «       Z)e d#„ «       Z*ˆ xZ+S )%r8  ÚoverloadpacketÚOpOverloadPacketrh   Úop_dkr£   ÚtagsrB   Nc                 óœ  •— t         ‰| �  «        || _        || _        || _        || _        || _        |j                  dk(  rdn|j                  | _        |r!t        j                  j                  |v | _        | j                  j                  | _        |j                  r"| xj                  d|j                  z   z  c_        | j                  j                  j                  d«      d   › d| j                  › �| _        |j"                  | _        |j"                  |_        | j                  | _        i | _        | j$                  t        j(                  j*                  v | _        d }| j                  j.                  D ]B  }|j0                  €Œ|€|j0                  j2                  }Œ)|j0                  j2                  xs |}ŒD |d uxr | | _        y )NÚ r   r«   ú::r  )r�   r.   Ú_opÚ_op_dkÚ_schemaÚ_overloadpacketÚ_tagsÚoverload_nameÚ_overloadnamer<   ÚTagÚnondeterministic_seededÚ_nondeterministic_seededrN   r‚   Úsplitrc   rd   re   Ú__annotations__ÚlibraryÚ_defsÚ_defined_in_pythonr¢   Ú
alias_infor–   Úis_view)	r-   rB  rh   rD  r£   rE  r–   rÕ   rŠ   s	           €r"   r.   zOpOverload.__init__ù  s’  ø€ ô 	‰ÑÔØˆŒØˆŒØˆŒØ-ˆÔØˆŒ
à×-Ñ-°Ò3‰I¸×9MÑ9Mð 	Ôñ Ü,1¯I©I×,MÑ,MÐQUÐ,UˆDÔ)Ø—\‘\×&Ñ&ˆŒ
Ø×ÒØ�JŠJ˜# × 4Ñ 4Ñ4Ñ4�JØŸ<™<×,Ñ,×2Ñ2°4Ó8¸Ñ;Ð<¸A¸d×>PÑ>PÐ=QÐRˆŒØ(×3Ñ3ˆŒØ&×1Ñ1ˆŒØ ŸJ™JˆÔØ!ˆÔð #'×"3Ñ"3´u·}±}×7JÑ7JÐ"JˆÔð ˆØ—‘×'Ñ'ò 	=ˆAØ�|‰|Ð#ØØÐØŸ<™<×0Ñ0‘ð Ÿ<™<×0Ñ0Ò<°H‘ð	=ð   tÐ+Ò<°H°ˆ�r/   c                 óV   — | j                   j                  j                  dd¬«      d   S )NrH  r  ©Úmaxsplitr   ©rK  rN   rS  r,   s    r"   Ú
_namespacezOpOverload._namespace%  ó'   € à�|‰|× Ñ ×&Ñ& t°aÐ&Ó8¸Ñ;Ð;r/   c                 óV   — | j                   j                  j                  dd¬«      d   S )NrH  r  r[  r]  r,   s    r"   Ú_opnamezOpOverload._opname)  r_  r/   c                 ó’   — t         j                  j                  | j                  j                  | j                  j
                  «      S r'   )r<   r=   Ú_dispatch_find_schema_or_throwrK  rN   rN  r,   s    r"   Ú_handlezOpOverload._handle-  s2   € ä�x‰x×6Ñ6Ø�L‰L×Ñ˜tŸ|™|×9Ñ9ó
ð 	
r/   c                 ó   — | S r'   rW   ©r-   Úmemos     r"   Ú__deepcopy__zOpOverload.__deepcopy__4  ó   € Øˆr/   c                 óV   — d| j                   › d| j                  › d| j                  › d�S )Nz<OpOverload(op='r«   z', overload='z')>)r^  ra  rO  r,   s    r"   Ú__repr__zOpOverload.__repr__7  s.   € Ø! $§/¡/Ð!2°!°D·L±L°>ÀÈt×OaÑOaÐNbÐbeÐfÐfr/   r4   r5   c                ó&   —  | j                   |i |¤ŽS r'   ©rI  r3   s      r"   r6   zOpOverload.__call__<  s   € Øˆt�x‰x˜Ð( Ñ(Ð(r/   Úkeysetc                óB   —  | j                   j                  |g|¢­i |¤ŽS r'   )rd  Úredispatch_boxed)r-   rn  r4   r5   s       r"   Ú
redispatchzOpOverload.redispatchA  s%   € ð -ˆt�|‰|×,Ñ,¨VÐE°dÒE¸fÑEÐEr/   c                 ó,   — t        | j                  «      S r'   ©ÚhashrI  r,   s    r"   Ú__hash__zOpOverload.__hash__F  ó   € Ü�D—H‘H‹~Ðr/   c                 ó„   —  dj                   g | j                  j                  j                  d«      ¢| j                  ‘­Ž S )Nz{}.{}.{}rH  )ÚformatrK  rN   rS  rO  r,   s    r"   rë   zOpOverload.__str__J  s8   € Ø ˆz× Ñ ÐT $§,¡,×"3Ñ"3×"9Ñ"9¸$Ó"?ÐTÀ×ASÑASÒTÐTr/   r9   c                 ó‚   •— t         ‰| �  |«      xs. t        j                  j	                  | j                  «       |«      S r'   )r�   r:   r<   r=   Ú%_dispatch_has_kernel_for_dispatch_keyrN   r�   s     €r"   r:   z&OpOverload.has_kernel_for_dispatch_keyM  s9   ø€ Ü‰wÑ2Øó
ò Lä�X‰X×;Ñ;¸D¿I¹I»KÈÓKð	Lr/   r@   c                 ó‚   •— t         j                  j                  | j                  «       |«      xs t        ‰| �  |«      S r'   )r<   r=   Ú)_dispatch_has_kernel_for_any_dispatch_keyrN   r�   rA   )r-   r@   rŠ   s     €r"   rA   z*OpOverload.has_kernel_for_any_dispatch_keyR  s7   ø€ Ü�x‰x×AÑAØ�I‰I‹K˜ó
ò 9ä‰WÑ4°RÓ8ð	9r/   c                 ó   — | j                   S r'   )r^  r,   s    r"   r§   zOpOverload.namespaceW  s   € à�‰Ðr/   c                 óž   — t         j                  }|| j                  v xs. t        j                  j                  | j                  «       |«      S r'   )r   rq   r)   r<   r=   rz  rN   )r-   Údks     r"   Ú_can_decomposezOpOverload._can_decompose[  s?   € Ü×2Ñ2ˆØ�T—_‘_Ð$ò 
¬¯©×(VÑ(VØ�I‰I‹K˜ó)
ð 	
r/   c                 óü   — t         j                  }|| j                  v r | j                  |   |i |¤ŽS t        j                  j                  | j                  «       |«      r | j                  |g|¢­i |¤ŽS t        S r'   )	r   rq   r)   r<   r=   rz  rN   rJ  rÆ   )r-   r4   r5   r  s       r"   Ú	decomposezOpOverload.decomposea  sq   € Ü×2Ñ2ˆØ�—‘Ñ ð
 '�4—?‘? 2Ñ&¨Ð7°Ñ7Ð7Ü�X‰X×;Ñ;¸D¿I¹I»KÈÔLØ�4—;‘;˜rÐ3 DÒ3¨FÑ3Ð3ä!Ð!r/   Úkeyc                 ó<   — | j                   j                  |d «       y r'   )r(   Úpop)r-   rƒ  s     r"   Ú_uncache_dispatchzOpOverload._uncache_dispatchv  s   € Ø×Ñ× Ñ   dÕ+r/   c                 óü  ‡ ‡— ‰‰ j                   vsJ ‰ › d‰› �«       ‚‰t        j                  k(  r�t        ‰ t        «      s(‰ j
                  s‰‰ j                   ‰<   t        ‰ «       ‰S dt        j                  dt        j                  dt        fˆˆ fd„}|‰ j                   ‰<   t        ‰ «       |S t        j                  j                  ‰«      }|t        j                  k(  rjt        «       }|dkD  r[t        j                  j!                  t        j                  «      s.dt        j                  dt        j                  dt        fˆ fd„}|S t#        ‰ ‰«      }‰t        j                  k7  }‰t        j$                  k(  rEdd lmc m} |j,                  r0|j/                  ‰ |«      }|r|‰ j                   ‰<   t        ‰ «       |S ‰ j0                  j3                  ||«      }|r|‰ j                   ‰<   t        ‰ «       |S )Nú r4   r5   rB   c                  ó0  •— ddl m} t         |«       «      }|€J d«       ‚|‰j                  vr†t	        ‰t
        «      r`t        j                  j                  j                  «       5 }t        j                  j                  j                  |‰g| ¢­i |¤Žcd d d «       S  ‰j                  ‰g| ¢­i |¤ŽS t        j                  j                  j                  «       5 } ‰j                  |   |g| ¢­i |¤Žcd d d «       S # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)Nr   rµ   zDIllegal invocation of dispatch on DispatchKey.Python without a mode.)rÁ   r¶   rg   r*   rK   ÚTorchBindOpOverloadr<   ÚutilsÚ_python_dispatchr¿   Ú_libraryÚhandle_dispatch_moderJ  )r4   r5   r¶   r×   rY   rƒ  r-   s        €€r"   rØ   z)OpOverload._get_dispatch.<locals>.handler„  s  ø€ ÝSô !Ñ!;Ó!=Ó>�	Ø Ð,ð ØZóÐ,ð  D×$9Ñ$9Ñ9Ü! $Ô(;Ô<ä!ŸK™K×8Ñ8×NÑNÓPðØTXä#(§>¡>×#7Ñ#7×#LÑ#LØ $ dð$Ø-1ò$Ø5;ñ$÷ñ ð  +˜tŸ{™{¨3Ð@°Ò@¸Ñ@Ð@ä—[‘[×1Ñ1×GÑGÓIð SÈTØ;˜4×0Ñ0°Ñ;¸DÐRÀ4ÒRÈ6ÑR÷Sñ S÷ð ú÷Sð Sús   Á'.D ÃDÄ D	ÄDr   c                  óÆ   •— t         j                  d„ «       } |«       5 }t        j                  j                  j
                  |‰g| ¢­i |¤Žcd d d «       S # 1 sw Y   y xY w)Nc               3   ó`   K  — t        «       } 	 | –— t        | «       y # t        | «       w xY w­wr'   )r/  r+  )Útop_modes    r"   Ú(_temporarily_pop_modes_from_pre_dispatchz[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatch­  s)   è ø€ ä#>Ó#@˜ð=Ø"*šNä2°8Õ<øÔ2°8Õ<üs   ‚.Ž ’.ž+«.)Ú
contextlibÚcontextmanagerr<   r�  r‹  rŽ  )r4   r5   r’  r×   r-   s       €r"   rØ   z)OpOverload._get_dispatch.<locals>.handler¬  sh   ø€ Ü×.Ñ.ñ=ó /ð=ñ BÓCð ÀyÜ$Ÿ~™~×3Ñ3×HÑHØ% tð Ø.2ò Ø6<ñ ÷÷ ò ús   Ÿ.AÁA )r(   r   rL   rK   rŠ  r*   r<  r   r4   r5   r   r<   r=   rÏ   rÐ   rÑ   rÒ   ry   r`   Útorch._dispatch.pythonÚ	_dispatchÚpythonÚCROSSREF_FUNCTIONALIZEÚmake_crossref_functionalizer)   r  )	r-   rƒ  rØ   rÛ   Úcurr_stack_lenrÜ   Úcache_resultÚ
pydispatchÚrs	   ``       r"   Ú_get_dispatchzOpOverload._get_dispatchz  sÇ  ù€ à˜$×.Ñ.Ñ.Ð?°4°&¸¸#¸°Ó?Ð.à”+×$Ñ$Ò$Ü˜dÔ$7Ô8À×AVÒAVØ,/�×$Ñ$ SÑ)Ü˜dÔ#Ø�
ðSœrŸw™wð S´"·)±)ð SÄö Sð0 )0ˆD× Ñ  Ñ%Ü˜$ÔØˆNä!ŸH™H×:Ñ:¸3Ó?ÐØ¤× 7Ñ 7Ò7ÜCÓEˆNð  Ò"ÜŸ™×GÑGÜ×&Ñ&ôð
¤2§7¡7ð ´b·i±ið ÄBõ ð& �ä  cÓ*ˆ	ð œk×5Ñ5Ñ5ˆð
 ”+×+Ñ+Ò+ß7Ð7à×0Ò0Ø$×@Ñ@ÀÀyÓQ�ÙØ07�D×(Ñ(¨Ñ-Ü! $Ô'Ø�à�O‰O×Ñ 	¨9Ó5ˆÙØ()ˆD× Ñ  Ñ%Ü˜$ÔØˆr/   c                 ó   — | j                   S r'   rí   r,   s    r"   rN   zOpOverload.nameÙ  rî   r/   c                 ó   — | j                   S r'   )rL  r,   s    r"   rB  zOpOverload.overloadpacketÜ  s   € à×#Ñ#Ð#r/   c                 ó   — | j                   S r'   rm  r,   s    r"   rh   zOpOverload.opà  r¨   r/   c                 ó   — | j                   S r'   )rM  r,   s    r"   rE  zOpOverload.tagsä  s   € à�z‰zÐr/   r'   ),rc   rd   re   r   r   r   r   r   r<   r=   ÚFunctionSchemarÄ   r   r.   r   Ústrr^  ra  Ú_DispatchOperatorHandlerd  rh  rk  r4   r5   r6   ÚDispatchKeySetrq  ru  rë   rð   r:   rA   rï   r§   r€  r‚  r†  r   rž  rN   rB  rh   rE  ró   rô   s   @r"   r8  r8  ø  s7  ø„ ð*=à*ð*=ð �R˜�VÑð*=ð ˜ K° OÑ4°bÐ8Ñ9ð	*=ð
 —‘×'Ñ'ð*=ð �3‰ið*=ð 
õ*=ðX ð<˜Cò <ó ð<ð ð<˜ò <ó ð<ð ð
˜Ÿ™×9Ñ9ò 
ó ð
óògð
) §¡ð )°B·I±Ið )À"ó )ð
FØŸ™×0Ñ0ðFØ9;¿¹ðFØLNÏIÉIðFà	óFò
òUðL¨[ð L¸Tõ Lð
9°%·(±(×2IÑ2Ið 9Èdõ 9ð
 ð˜3ò ó ðð
 ó 
ð"˜rŸw™wð "°"·)±)ð "Àó "ð*, [ð ,°Tó ,ð] ð ]°°{ÀHÈRÐQSÈVÑDTÐ7TÑ1Uó ]ò~ð ñ$ó ð$ð ñó ðð ñó ôr/   c                   óÄ   — e Zd Zdee   fd„Zej                  d„ «       Zde	j                  de	j                  defd„Zdee   de	j                  de	j                  defd„Zy	)
rŠ  rB   c                 ó,  ‡ — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  g}dt         fˆ fd„}|D �cg c]  } ||«      r|‘Œ c}S c c}w )Nrƒ  c                 ó.  •— t         j                  j                  ‰j                  «       | «      r.t         j                  j	                  ‰j                  «       | «      S | ‰j
                  vxs) ‰j
                  |    t         j                  j                  u S r'   )r<   r=   rz  rN   Ú0_dispatch_kernel_for_dispatch_key_is_fallthroughr)   rU  Úfallthrough_kernel)rƒ  r-   s    €r"   Ú(_may_use_fallthrough_instead_of_fallbackzWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallbacký  ss   ø€ Ü�x‰x×=Ñ=¸d¿i¹i»kÈ3ÔOÜ—x‘x×PÑPØ—I‘I“K óð ð
 ˜4Ÿ?™?Ð*ò LØ—?‘? 3Ñ'¬5¯=©=×+KÑ+KÐKðr/   )r   rt   ÚAutogradCPUÚAutogradCUDAÚADInplaceOrViewÚBackendSelectÚPythonTLSSnapshotÚPythonDispatcher)r-   Ú_DEFAULT_FALLTHROUGH_KEYSr¬  rƒ  s   `   r"   Ú_fallthrough_keysz%TorchBindOpOverload._fallthrough_keysð  s‚   ø€ ô × Ñ Ü×#Ñ#Ü×$Ñ$Ü×'Ñ'Ü×%Ñ%Ü×)Ñ)Ü×(Ñ(ð%
Ð!ð		¼+õ 		ð 1ö
àÙ7¸Ô<ò ò
ð 	
ùò 
s   Á=Bc              #   ó‚   K  — ddl m}m}m} 	 | |vr || |j                  «       d –— | |v r|| = y y # | |v r|| = w w xY w­w)Nr   )Ú_EffectTypeÚ_register_effectful_opÚSIDE_EFFECTS)Útorch._higher_order_ops.effectsr¶  r·  r¸  ÚORDERED)r-   r¶  r·  r¸  s       r"   Ú%_register_as_effectful_op_temporarilyz9TorchBindOpOverload._register_as_effectful_op_temporarily  sZ   è ø€ ÷	
ñ 	
ð	'Ø˜<Ñ'Ù& t¨[×-@Ñ-@ÔAÛà�|Ñ#Ø  Ñ&ð $øˆt�|Ñ#Ø  Ñ&ð $üs   ‚?Ž2 ©	?²
<¼?r4   r5   c                óÒ   — t        ||«      r>| j                  «       5   | j                  | j                  «       g|¢­i |¤Žcd d d «       S  | j                  |i |¤ŽS # 1 sw Y   ŒxY wr'   )Ú_must_dispatch_in_pythonr»  Ú_dispatch_in_pythonr´  rI  r3   s      r"   r6   zTorchBindOpOverload.__call__   sx   € Ü# D¨&Ô1ð ×;Ñ;Ó=ñ Ø/�t×/Ñ/Ø×*Ñ*Ó,ðØ/3òØ7=ñ÷ñ ð ˆt�x‰x˜Ð( Ñ(Ð(÷	ð ús   �$AÁA&Úfallthrough_keysc           	      ó  — t         j                  j                  «       }|D ]  }|j                  |«      }Œ t	        |||«      }|j                  «       }|| j                  vr| j                  |«      n| j                  |   }t        |t        «      r]t         j                  j                  | j                  «       |«      r | j                  ||gz   g|¢­i |¤ŽS t        d| › d|› d|› d�«      ‚t        |t        «      sJ ‚ ||i |¤ŽS )NzTorchbind op z4 received a FakeScriptObject input when dispatching z×. but no python implementation is found. Please file an issue on this when you encounter this error. This error can happen when you export or compile the model. It can still happpen even if a C++ implementation for zz.  has been registered. That's because FakeScriptObject purely lives in python and cannot work  with a C++ implementation.)r<   r=   r…   r³   rä   rå   r(   rž  rK   r   rª  rN   r¾  rM   r   )	r-   r¿  r4   r5   r†   rƒ  rç   r‰   rØ   s	            r"   r¾  z'TorchBindOpOverload._dispatch_in_python2  sF  € ô  %Ÿx™x×=Ñ=Ó?ÐØ#ò 	DˆCØ#7×#>Ñ#>¸sÓ#CÑ ð	Dô +¨4°Ð9MÓNÐØ'×=Ñ=Ó?ˆð  4×#7Ñ#7Ñ7ð ×Ñ˜|Ô,à×%Ñ% lÑ3ð 	ô �gœ{Ô+ô �x‰x×HÑHØ—	‘	“˜\ôð 0�t×/Ñ/Ø$¨ ~Ñ5ðàòð ñð ô Ø ˜vÐ%YÐZaÐYbð cJð KWÈð X.ð	/óð ô ˜'¤8Ô,Ð,Ð,Ù˜Ð' Ñ'Ð'r/   N)rc   rd   re   rÄ   r   r´  r“  r”  r»  r   r4   r5   r   r6   r¾  rW   r/   r"   rŠ  rŠ  ï  s�   „ ð
 4¨Ñ#4ó 
ð< ×Ññ'ó ð'ð") §¡ð )°B·I±Ið )À"ó )ð$'(Ø $ [Ñ 1ð'(Ø:<¿'¹'ð'(ØMOÏYÉYð'(à	ô'(r/   rŠ  c                 ó4   — t        j                  d„ | |f«      S )Nc                 ó^   — t        | t        j                  j                  j                  «      S r'   )rK   r<   r�  Úfake_class_registryÚFakeScriptObject)Úobjs    r"   r“   z*_must_dispatch_in_python.<locals>.<lambda>^  s    € ”JØ”—‘×3Ñ3×DÑDó
€ r/   )rœ   Útree_anyr÷   s     r"   r½  r½  \  s!   € Ü�?‰?ñ	
ð 
ˆvˆó	ð r/   r£   rB   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ód   K  — | ](  }t        |j                  t        j                  «      –— Œ* y ­wr'   )rK   rg   r<   Ú	ClassTyper—   s     r"   rš   z)_has_script_object_arg.<locals>.<genexpr>f  s   è ø€ ÒQ¸Œz˜#Ÿ(™(¤E§O¡O×4ÑQùs   ‚.0)r¡   r¢   )r£   s    r"   Ú_has_script_object_argrÊ  e  s   € ÜÑQÀ×@PÑ@PÔQÓQÐQr/   c            
       óö   — e Zd ZU dZee   ed<   dededeee	f   de
e   ddf
d	„Zdd
„Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zdedeee	f   fd„Zdee   fd„Zdej.                  dej0                  de	fd„Zd„ Zy)rC  ú	torch.opsÚ__file__Úqualified_op_nameÚop_namerh   Úoverload_namesrB   Nc                 ó¨   — || _         || _        || _        || _        g | _        t        d„ | j                  j                  «       D «       «      | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr'   )rÊ  )r˜   r£   s     r"   rš   z,OpOverloadPacket.__init__.<locals>.<genexpr>|  s   è ø€ ò .
Ø/5Ô" 6×*ñ.
ùs   ‚)	Ú_qualified_op_namerc   rI  Ú_overload_namesÚ_dirr¡   Ú_schemasrÃ   Ú_has_torchbind_op_overload)r-   rÎ  rÏ  rh   rÐ  s        r"   r.   zOpOverloadPacket.__init__n  sP   € ð #4ˆÔØˆŒØˆŒØ-ˆÔØ!ˆŒ	Ü*-ñ .
Ø9=¿¹×9MÑ9MÓ9Oô.
ó +
ˆÕ'r/   c                 ó   — | S r'   rW   rf  s     r"   rh  zOpOverloadPacket.__deepcopy__�  ri  r/   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz<OpOverloadPacket(op='{}.{}')>rH  ©rx  rÓ  rS  r,   s    r"   rk  zOpOverloadPacket.__repr__„  s,   € Ø6Ð/×6Ñ6Ø×$Ñ$×*Ñ*¨4Ó0ð
ð 	
r/   c                 ó,   — t        | j                  «      S r'   rs  r,   s    r"   ru  zOpOverloadPacket.__hash__‰  rv  r/   c                 óR   —  dj                   | j                  j                  d«      Ž S )Nz{}.{}rH  rÚ  r,   s    r"   rë   zOpOverloadPacket.__str__Œ  s$   € Øˆw�~‰~˜t×6Ñ6×<Ñ<¸TÓBÐCÐCr/   c                 ó   — | j                   S r'   rm  r,   s    r"   rh   zOpOverloadPacket.op�  r¨   r/   c                 ó’   — | j                   D �ci c]-  }|t        j                  j                  | j                  |«      “Œ/ c}S c c}w r'   )rÔ  r<   r=   Ú_get_schemarÓ  )r-   rN  s     r"   rÖ  zOpOverloadPacket._schemas“  sF   € ð "&×!5Ñ!5ö
àð œ5Ÿ8™8×/Ñ/°×0GÑ0GÈÓWÑWò
ð 	
ùò 
s   �2Arƒ  c           
      óÌ  — 	 |j                  d«      rt        | j                  |«      S 	 	 |dk(  rdn|}t
        j                  j                  | j                  |«      }|€t        dt	        | «      › d	|› d�«      ‚|\  }}}t
        j                  j                  | j                  |«      }t        |«      st        | ||||«      nt        | ||||«      }t        | ||«       | j                  j                  |«       |S # t        $ r3 t        dt	        | «      › dt	        | j                  «      › d|› d�«      d ‚w xY w# t         $ r t        dt	        | «      › d	|› d�«      d ‚w xY w)
NÚ__ú'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r   rG  zThe underlying op of 'z' has no overload name ')Ú
startswithÚgetattrrI  ÚAttributeErrorr¤  r<   r=   Ú_get_operation_overloadrÓ  rß  rÊ  r8  rŠ  ÚsetattrrÕ  r¼   rM   )	r-   rƒ  Úuse_keyÚ
op_dk_tagsÚop_Úop_dk_rE  r£   Úoverloads	            r"   Ú__getattr__zOpOverloadPacket.__getattr__š  s”  € ð	Ø�~‰~˜dÔ#Ü˜tŸx™x¨Ó-Ð-ð $ð	à 9Ò,‘b°#ˆGäŸ™×9Ñ9Ø×'Ñ'¨óˆJð Ð!Ü$Ø,¬S°«Y¨KÐ7OÐPSÈuÐTUÐVóð ð !+ÑˆC�˜Ü—X‘X×)Ñ)¨$×*AÑ*AÀ7ÓKˆFô .¨fÔ5ô ˜4  f¨f°dÔ;ä(¨¨s°F¸FÀDÓIð ô �D˜#˜xÔ(Ø�I‰I×Ñ˜SÔ!ØˆOøôA ò 	ô
 !Ø”C˜“I�;ð !Ü!$ T§X¡X£ Ð/AÀ#ÀÀhðPóð ðð	ûôB ò 	Ü Ø(¬¨T«¨Ð3KÈCÈ5ÐPQÐRóàðð	ús   ‚&C> «CD= Ã><D:Ä=&E#c                 ó,   — t        | j                  «      S r'   ©ÚiterrÕ  r,   s    r"   Ú__iter__zOpOverloadPacket.__iter__Ë  ó   € Ü�D—I‘I‹Ðr/   r4   r5   c                ót   — | j                   rt        ||«      rt        | g|¢­i |¤ŽS  | j                  |i |¤ŽS r'   )r×  r½  Ú!_call_overload_packet_from_pythonrI  r3   s      r"   r6   zOpOverloadPacket.__call__Ð  sB   € ð ×*Ò*Ô/GÈÈfÔ/UÜ4°TÐK¸DÒKÀFÑKÐKØˆt�x‰x˜Ð( Ñ(Ð(r/   c                 óH   — | j                   D �cg c]  }|r|nd‘Œ
 c}S c c}w )Nr   )rÔ  )r-   Úns     r"   Ú	overloadszOpOverloadPacket.overloadsÞ  s#   € Ø/3×/CÑ/CÖD¨!‘Q‘˜IÑ%ÒDÐDùÒDs   �r'   )rc   rd   re   rÍ  r   r¤  rT  r   r   r   rÄ   r.   rh  rk  ru  rë   rï   rh   rÖ  r8  rí  r   rñ  r4   r5   r6   r÷  rW   r/   r"   rC  rC  k  sä   … Ø)€Hˆh�s‰mÓ)ð
àð
ð ð
ð �R˜�VÑð	
ð
 ˜S™	ð
ð 
ó
ó&ò
ò
òDð ñó ðð ñ
ó ð
ð/˜sð / z°"°b°&Ñ'9ó /ðb˜( 3™-ó ð
) §¡ð )°B·I±Ið )À"ó )óEr/   rC  r4   r5   c                 ó¶  — t        j                  j                  | g|¢­i |¤Ž\  }}|r|S i }d }| j                  «       D ]?  }t	        | |«      }	 t        j                  j
                  |j                  g|¢­i |¤Ž}	|} n |r ||i |¤ŽS d| › d�}|j                  «       D ]  \  }}|d|› d|› d�z  }Œ t        |«      ‚# t        $ r}
|
||<   Y d }
~
Œ”d }
~
ww xY w)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 ú
)	r<   r=   Ú(_maybe_call_torch_function_for_op_packetr÷  rä  Ú&_check_schema_allow_fake_script_objectrK  rM   Úitems)rh   r4   r5   Útorch_function_calledÚretÚ
exceptionsÚfound_oprN  r;  Ú_ÚeÚerr_msgrƒ  Úmsgs                 r"   rô  rô  ä  s+  € ô "'§¡×!RÑ!RØ
ð"Øò"Øñ"ÑÐ˜3ñ Øˆ
ð €JØ€HØŸ™›ò 	*ˆÜ˜b -Ó0ˆð	*Ü—‘×?Ñ?Ø×#Ñ#ðØ&*òØ.4ñˆAð #ˆHÙð	*ñ Ù˜Ð( Ñ(Ð(ð 2°"°Ð5RÐSð ð ×$Ñ$Ó&ò 5‰ˆˆSØ�^ C 5¨¨S¨E°Ð4Ñ4‰ð5ä
�wÓ
Ðøô ò 	*Ø()ˆJ�}Ö%ûð	*ús   Á/C Ã 	CÃ	CÃCc                   óR   ‡ — e Zd ZdZdZdeddfˆ fd„Zdee   fd„Zdede	fd	„Z
ˆ xZS )
Ú_OpNamespacea0  
    An op namespace to dynamically bind Operators into Python.

    Say a user has created a custom Operator called "my_namespace::my_op". To
    call this op, the user will write torch.ops.my_namespace.my_op(...).
    At startup, this operation will not yet be bound into Python. Instead, the
    following sequence of magic tricks will occur:
    1. `torch.ops.my_namespace` will invoke the `__getattr__` magic method
       on the `torch.ops` object, which will create a new `_OpNamespace`
       object called `my_namespace` and set it as an attribute on the `ops`
       object.
    2. `torch.ops.my_namespace.my_op` will then invoke `__getattr__` on
       the `my_namespace` object, which will retrieve the operation via
       `torch.get_operation`, a function bound from C++, and then in a similar
       fashion bind this new object onto the `my_namespace` object.
    3. `torch.ops.my_namespace.my_op(...)` then calls this new operation
        and subsequent accesses will incur no further lookup (the namespace and
        operation will already exist).
    rÌ  rN   rB   Nc                 óF   •— t         ‰| �  d|z   «       || _        g | _        y )Nz
torch.ops.)r�   r.   rN   rÕ  )r-   rN   rŠ   s     €r"   r.   z_OpNamespace.__init__2  s#   ø€ Ü‰Ñ˜¨Ñ,Ô-ØˆŒ	Ø!ˆ�	r/   c                 ó,   — t        | j                  «      S r'   rï  r,   s    r"   rñ  z_OpNamespace.__iter__7  rò  r/   rÏ  c                 óò  — |dv rt        d|› d| j                  › d�«      ‚| j                  }|› d|› �}| j                  dz   |z   }	 t        ||«      \  }}|€t        d| j                  › d|› d�«      ‚	 ||_        t        ||||«      }| j                  dz   |z   |_        t        | ||«       | j                  j                  |«       |S # t        $ r"}t        d| j                  › d|› d�«      |‚d }~ww xY w)	N)Ú
__origin__Ú__self__zInvalid attribute 'z' for '_OpNamespace' 'râ  rH  r«   z'_OpNamespace' 'z' object has no attribute ')	rå  rN   rd   Ú_get_packetrM   rC  rç  rÕ  r¼   )	r-   rÏ  Únamespace_namerÎ  Úmodule_namerh   rÐ  r  Úopoverloadpackets	            r"   rí  z_OpNamespace.__getattr__:  s>  € ØÐ0Ñ0Ü Ø% g YÐ.DÀTÇYÁYÀKÈqÐQóð ð Ÿ™ˆØ-Ð.¨b°°	Ð:ÐØ—o‘o¨Ñ+¨nÑ<ˆð	Ü!,Ð->ÀÓ!LÑˆB�ØˆzÜ$Ø& t§y¡y kÐ1LÈWÈIÐUVÐWóð ð ð $ˆŒÜ+Ø˜w¨¨Nó
Ðð '+§o¡o¸Ñ&;¸nÑ&LÐÔ#ô 	��gÐ/Ô0Ø�	‰	×Ñ˜Ô!ØÐøô! ò 	ô !Ø" 4§9¡9 +Ð-HÈÈ	ÐQRÐSóàðûð	ús   Á-C Ã	C6ÃC1Ã1C6)rc   rd   re   rf   rÍ  r¤  r.   r   rñ  rC  rí  ró   rô   s   @r"   r  r    sF   ø„ ñð( €Hð"˜Sð " Tõ "ð
˜( 3™-ó ð"  3ð " Ð+;÷ " r/   r  c                 ó´   — t         j                  j                  | «      \  }}|�1t         j                  j                  j                  || «       ||_        ||fS r'   )r<   r=   Ú_jit_get_operationÚjitÚ	_builtinsÚ_register_builtinrd   )ÚqualnameÚ	op_modulerh   rÐ  s       r"   r  r  _  sN   € ÜŸ™×4Ñ4°XÓ>Ñ€BˆØ	€~ô 	�	‰	×Ñ×-Ñ-¨b°(Ô;Ø!ˆŒØˆ~ÐÐr/   c                 ó‚   — t        | j                  | j                  j                  «      \  }}|€J ‚|| _        || _        y r'   )r  rÓ  rI  rd   rÔ  )Úpacketrh   rÐ  s      r"   Ú_refresh_packetr  i  s<   € Ü$ V×%>Ñ%>ÀÇ
Á
×@UÑ@UÓVÑ€BˆØˆ>Ðˆ>Ø€F„JØ+€FÕr/   c                   óF   ‡ — e Zd ZdZdˆ fd„Zdee   fd„Zdedefd„Z	ˆ xZ
S )Ú_HigherOrderNamespacerÌ  rB   c                 ó2   •— t         ‰| �  d«       g | _        y )Nr€   )r�   r.   rÕ  ©r-   rŠ   s    €r"   r.   z_HigherOrderNamespace.__init__s  s   ø€ Ü‰ÑÐ1Ô2Ø!ˆ�	r/   c                 ó,   — t        | j                  «      S r'   rï  r,   s    r"   rñ  z_HigherOrderNamespace.__iter__w  rò  r/   rN   c                 ó¤   — t         j                  |d «      }|€t        d|› d�«      ‚t        | ||«       | j                  j                  |«       |S )NzJ'_HigherOrderNamespace' 'torch.ops.higher_order' object has no attribute 'râ  )r{   r  rå  rç  rÕ  r¼   )r-   rN   rh   s      r"   rí  z!_HigherOrderNamespace.__getattr__z  sZ   € ä×"Ñ" 4¨Ó.ˆØˆ:Ü Ø\Ð]aÐ\bÐbcÐdóð ô 	��d˜BÔØ�	‰	×Ñ˜ÔØˆ	r/   )rB   N)rc   rd   re   rÍ  r.   r   r¤  rñ  rz   rí  ró   rô   s   @r"   r  r  p  s1   ø„ Ø€Hõ"ð˜( 3™-ó ð	 ð 	Ð(;÷ 	r/   r  c                   óP   ‡ — e Zd ZdZˆ fd„Zdedefd„Zdee   fd„Z	d„ Z
d„ Zˆ xZS )	Ú_Opsz_ops.pyc                 ón   •— t         ‰| �  d«       t        «       | _        t	        «       | _        g | _        y )NrÌ  )r�   r.   r  Úloaded_librariesr  r   rÕ  r  s    €r"   r.   z_Ops.__init__‰  s,   ø€ Ü‰Ñ˜Ô%Ü #£ˆÔÜ1Ó3ˆÔØˆ�	r/   rN   rB   c                 ól   — t        |«      }t        | ||«       | j                  j                  |«       |S r'   )r  rç  rÕ  r¼   )r-   rN   r§   s      r"   rí  z_Ops.__getattr__�  s0   € ä  Ó&ˆ	Ü��d˜IÔ&Ø�	‰	×Ñ˜ÔØÐr/   c                 ó,   — t        | j                  «      S r'   rï  r,   s    r"   rñ  z_Ops.__iter__–  rò  r/   c                 ó.   — t        j                  |«       y)a{  
        Imports a Python module that has torch.library registrations.

        Generally, to extend PyTorch with custom operators, a user will
        create a Python module whose import triggers registration of
        the custom operators via a torch.ops.load_library call or a call
        to one or more torch.library.* APIs.

        It is unexpected for Python modules to have side effects, so some
        linters and formatters will complain. Use this API to import Python
        modules that contain these torch.library side effects.

        Args:
            module (str): The name of the Python module to import

        N)Ú	importlibÚimport_module)r-   Úmodules     r"   r(  z_Ops.import_module™  s   € ô" 	×Ñ Õ'r/   c                 óö   — t        j                  «       ryt        j                  |«      }t	        «       5  t        j                  |«       ddd«       | j                  j                  |«       y# 1 sw Y   Œ%xY w)a  
        Loads a shared library from the given path into the current process.

        The library being loaded may run global initialization code to register
        custom operators with the PyTorch JIT runtime. This allows dynamically
        loading custom operators. For this, you should compile your operator
        and the static registration code into a shared library object, and then
        call ``torch.ops.load_library('path/to/libcustom.so')`` to load the
        shared object.

        After the library is loaded, it is added to the
        ``torch.ops.loaded_libraries`` attribute, a set that may be inspected
        for the paths of all libraries loaded using this function.

        Args:
            path (str): A path to a shared library to load.
        N)	r<   Ú_running_with_deployr   Úresolve_library_pathr#   r   ÚCDLLr#  rŒ   )r-   Úpaths     r"   Úload_libraryz_Ops.load_library¬  sa   € ô$ ×%Ñ%Ô'Øä×3Ñ3°DÓ9ˆÜ‹_ñ 	ô �K‰K˜Ô÷		ð
 	×Ñ×!Ñ! $Õ'÷	ð 	ús   µA/Á/A8)rc   rd   re   rÍ  r.   r¤  r  rí  r   rñ  r(  r/  ró   rô   s   @r"   r!  r!  †  s:   ø„ Ø€Hôð ð ¨ó ð˜( 3™-ó ò(ö&(r/   r!  Úops)F)arñ   r“  r   r'  rF   r   ÚtypesÚcollections.abcr   Ú	functoolsr   Útypingr   r   r   r   r	   r
   r   r   Útyping_extensionsr   r   r   r<   Útorch.utils._pytreer‹  Ú_pytreerœ   r   Útorch._Cr   rm   r   Útorch._functorch.pyfunctorchr   r   rÁ   r   r_   r   r   r   Úhasattrr   r”  r#   r%   ry   r{   Údictr¤  rT  r²  r±  r¯  r°  ÚAutocastCPUÚAutocastCUDAr‡   ÚABCrz   rà   rä   rù   rú   r  r7  r#  r+  r/  rÑ   r2  rÓ   r  r  r9  r<  r>  r@  r8  rŠ  r½  r£  rð   rÊ  rC  r4   r5   rô  Ú
ModuleTyper  r  r  r  r!  r0  rW   r/   r"   ú<module>r@     sŸ  ðä 
Û Û Û Û Û 
Û Ý $Ý %÷	÷ 	ó 	÷ >Ñ =ã ß $Ð $Ý !ß Xß JÝ :ñ ÝHñ ˆT˜3Ô€Ùˆt˜SÔ!€ñ ˜CÐ!1Ó2ÒU±w¸sÐDTÓ7UÐ ð ×Ññ&ó ð&÷ P"ñ P"ðh2U�Lð 2U [ó 2Uðj 79Ð �4˜Ð2Ð2Ñ3Ó 8ð × Ñ Ø×!Ñ!Ø×ÑØ×ÑØ×ÑØ×Ñð6Ð 2ôU˜,¨¯©ô Uòp3ò8ò
ò÷,
ñ 
ñ& &CÓ%DÐ "ó!òH$XòNMò7ò:òò .ñ
 !$£€
ˆC�ÑÓ %ò ò
ò
ôn�˜w r¨2 v™ô nônj(˜* R¨ VÑ,ô j(òZðR 5×#7Ñ#7ð R¸Dó RôtE�w˜r 2˜v‘ô tEðr% Ø˜˜R˜Ñ ð% Ø)+¯©ð% Ø<>¿I¹Ið% àó% ônA �5×#Ñ#ô A òHò,ô˜E×,Ñ,ô ô,A(ˆ5×Ñô A(ñJ ‹F€€TÔ r/   