Ë
    Z^(h·   ã                  óÄ  — d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
c mZ d dlm
c mZ d dlm
c 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mZmZmZmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d d	l-m.Z.m/Z/m0Z0 erd d
l1m2Z2 	 	 	 	 	 	 	 	 dd„Z3	 	 	 	 dd„Z4dd„Z5dd„Z6dd„Z7dd„Z8dd„Z9 ed¬«       G d„ d«      «       Z: ed¬«       G d„ de:«      «       Z;y)é    )ÚannotationsN)Ú	dataclass)ÚLiteralÚTYPE_CHECKING)Ú	translate)Ú	BaseCTypeÚBindingÚConstRefCTypeÚCppSignatureÚCppSignatureGroupÚDispatcherSignatureÚExprÚkernel_signatureÚMutRefCTypeÚ
NamedCTypeÚNativeSignatureÚtensorT)Úmethod_with_native_functionÚnative_function_manager)
ÚArgumentÚBackendIndexÚDeviceCheckTypeÚDispatchKeyÚ"gets_generated_out_inplace_wrapperÚis_cuda_dispatch_keyÚNativeFunctionÚNativeFunctionsGroupÚ
SchemaKindÚTensorOptionsArguments)Úassert_neverÚmapMaybeÚTarget)ÚSelectiveBuilderc                ó.  — |rdg}ndg}| j                   t        j                  t        j                  fv r|j	                  d«       n¼| j                   t        j
                  k(  r&|r|j	                  d«       n‹|j	                  d«       ny| j                   t        j                  k(  r|j	                  d«       nJ| j                   t        j                  k(  r|j	                  d«       n|r|g d¢z  }n|j	                  d	«       |j	                  d
«       |S )Nz'#include <ATen/ops/as_strided_native.h>z!#include <ATen/NativeFunctions.h>z#include <ATen/EmptyTensor.h>z!#include <ATen/hip/EmptyTensor.h>z"#include <ATen/cuda/EmptyTensor.h>z!#include <ATen/mps/EmptyTensor.h>z!#include <ATen/xpu/EmptyTensor.h>)z#include <ATen/ops/empty.h>z##include <ATen/ops/empty_strided.h>z+#include <ATen/ops/_copy_from_and_resize.h>z #include <ATen/ops/_copy_from.h>z#include <ATen/Functions.h>z#include <c10/macros/Macros.h>)Údispatch_keyr   ÚCPUÚMetaÚappendÚCUDAÚMPSÚXPU)Úbackend_indexÚper_operator_headersÚrocmÚheaderss       úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torchgen/dest/register_dispatch_key.pyÚgen_registration_headersr1   .   sã   € ñ
 Ø<Ð=‰à6Ð7ˆà×!Ñ!¤k§o¡o´{×7GÑ7GÐ%HÑHØ�‰Ð6Õ7Ø	×	#Ñ	#¤{×'7Ñ'7Ò	7ÙØ�N‰NÐ>Õ?à�N‰NÐ?Õ@Ø	×	#Ñ	#¤{§¡Ò	6Ø�‰Ð:Õ;Ø	×	#Ñ	#¤{§¡Ò	6à�‰Ð:Õ;Ù	Øò 
ñ 	
‰ð 	�‰Ð4Ô5à‡N�NÐ3Ô4Ø€Nó    c                óÂ  — d }d }| j                   t        j                  t        j                  t        j                  t        j
                  t        j                  fv r1t        | j                   «      j                  «       }d|› �}d|› �}||fS | j                   t        j                  t        j                  t        j                  t        j                  fv rd}d}||fS )Nzat::detail::empty_zat::detail::empty_strided_z	at::emptyzat::empty_strided)r%   r   r'   r&   r)   r*   r+   ÚstrÚlowerÚ&CompositeExplicitAutogradNonFunctionalÚQuantizedCPUÚQuantizedCUDA)r,   Ú
empty_implÚempty_strided_implÚdispatchs       r0   Úgen_empty_impl_namesr<   R   sÛ   € ð €JØÐà×!Ñ!Ü×ÑÜ�‰Ü×ÑÜ�‰Ü�‰ð&ñ ô �}×1Ñ1Ó2×8Ñ8Ó:ˆØ)¨(¨Ð4ˆ
Ø9¸(¸ÐDÐð Ð)Ð)Ð)ð 
×	#Ñ	#Ü×:Ñ:Ü× Ñ Ü×!Ñ!Ü�‰ð	(ñ 
ð !ˆ
Ø0ÐàÐ)Ð)Ð)r2   c           	     óŠ   — | j                   t        j                  k(  rd}nd}t        | «      \  }}|€g S d|› d|› d|› d|› d�	gS )Nzoptions.device(at::kMeta)Úoptionsz�
Tensor create_out(IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {
  if (strides.empty()) {
      return z(sizes, z);
  } else {
      return z(sizes, strides, z	);
  }
}
)r%   r   r'   r<   )r,   Úempty_optionsr9   r:   s       r0   Úgen_create_out_helperr@   n   st   € Ø×!Ñ!¤[×%5Ñ%5Ò5Ø3‰à!ˆä%9¸-Ó%HÑ"€JÐ"ØÐØˆ	ðð ˆ\˜ - ð 1à Ð!Ð!2°=°/ð Bð	ð
ð 
r2   c                ó4   — t        | «      \  }}|€g S d|› d�gS )Nz²
std::optional<Tensor> maybe_create_proxy(const Tensor &out, IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {
  if (out.strides() != strides) {
    return z8(sizes, strides, options);
  }
  return std::nullopt;
}
)r<   )r,   Ú_r:   s      r0   Úgen_maybe_create_proxy_helperrC   …   sE   € Ü0°Ó?Ñ€AÐð Ð%ð 	ððð Ðð  ðð	
ðr2   c                óF   — | j                   t        j                  k(  rg S dgS )Naã  
void resize_out(const Tensor &out, IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {
  TORCH_CHECK(options.dtype() == out.dtype(),
      "Expected out tensor to have dtype ", options.dtype(), ", but got ", out.dtype(), " instead");
  TORCH_CHECK(options.device() == out.device(),
      "Expected out tensor to have device ", options.device(), ", but got ", out.device(), " instead");
  const bool resized = at::native::resize_output(out, sizes);
  // Only restride if a resize occurred; otherwise we ignore the (advisory)
  // strides from the meta function and directly use the output tensor's
  // preexisting strides
  if (resized) {
    if (!strides.empty()) {
      TORCH_INTERNAL_ASSERT(!options.memory_format_opt().has_value());
      // TODO: avoid the redispatch here
      out.as_strided_(sizes, strides);
    } else if (options.memory_format_opt().has_value()) {
      out.unsafeGetTensorImpl()->empty_tensor_restride(*options.memory_format_opt());
    }
  }
}
)r%   r   r6   ©r,   s    r0   Úgen_resize_out_helperrF   —   s,   € Ø×!Ñ!¤[×%WÑ%WÒWð ˆ	ð	ðð r2   c                ó   — dgS )Na”  
void check_inplace(const Tensor &self, IntArrayRef sizes, const TensorOptions &options) {
  // These checks are needed on those operators that:
  //   1) don't use 'TensorIterator' (e.g. 'addmm' and 'baddbmm')
  //   2) have particular typing rules (e.g. 'cumsum' and 'cumprod')
  // For other operators (e.g. 'add'), 'TensorIterator' already checks
  // these things separately.
  TORCH_CHECK(options.dtype() == self.dtype(),
      "Bad in-place call: ",
      "input tensor dtype ", self.dtype(), " and output tensor dtype ", options.dtype(), " should match");
  TORCH_CHECK(options.device() == self.device(),
      "Bad in-place call: ",
      "input tensor device ", self.device(), " and output tensor device ", options.device(), " should match");
  TORCH_CHECK(sizes == self.sizes(),
      "Bad in-place call: ",
      "input tensor size ", self.sizes(), " and output tensor size ", sizes, " should match");
}
© rE   s    r0   Úgen_check_inplace_helperrI   µ   s   € ð	ðð r2   c                ód   — dgt        | «      ¢t        | «      ¢t        | «      ¢t        | «      ¢d‘S )Nz?C10_DIAGNOSTIC_PUSH_AND_IGNORED_IF_DEFINED("-Wunused-function")zC10_DIAGNOSTIC_POP())r@   rF   rI   rC   rE   s    r0   Úgen_registration_helpersrK   Ì   sS   € àIðä	˜}Ó	-ðô 
˜}Ó	-ðô 
" -Ó	0ð	ô
 
' }Ó	5ðð 	ðð r2   T)Úfrozenc                  óÊ   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   e	 	 	 	 	 	 	 	 dd„«       Zedd„«       Z	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	dd„Z
	 d	 	 	 	 	 dd„Zy)ÚRegisterDispatchKeyr   r,   zvLiteral[Target.ANONYMOUS_DEFINITION, Target.NAMESPACED_DEFINITION, Target.NAMESPACED_DECLARATION, Target.REGISTRATION]Útargetr#   ÚselectorÚboolr.   Úsymintú
str | NoneÚclass_method_nameÚskip_dispatcher_op_registrationc           	     óÆ   — | t         j                  k(  ryd}|dz  }|D ]@  }|j                  j                  «       sŒ|d|j                  › d|› d|j                  › d�z  }ŒB |S )Nú  // No device check
z4std::optional<Device> common_device = std::nullopt;
z9(void)common_device; // Suppress unused variable warning
z<
  c10::impl::check_and_update_common_device(common_device, z, "z", "z");)r   ÚNoCheckÚtypeÚis_tensor_likeÚname)rY   ÚargsÚmethod_nameÚdevice_checkÚargs        r0   Úgen_device_checkz$RegisterDispatchKey.gen_device_check  s…   € ð ”?×*Ñ*Ò*Ø+àNˆØÐTÑTˆØò 	jˆCà�x‰x×&Ñ&Õ(Øð %<Ø<?¿H¹H¸:ÀSÈÈÐUYÐZ]×ZbÑZbÐYcÐcfð!jñ j‘ð	jð
 Ðr2   c                ó  ‡ ‡— t        |t        «      rF|Š‰j                  r‰ j                  ‰«      S t	        t        ˆˆ fd„‰j                  «       «      «      S t        |t        «      r‰ j                  |«      }|€g S |gS t        |«       y )Nc                ó(   •— ‰j                  | ‰«      S ©N©Úgen_unstructured©ÚfÚgÚselfs    €€r0   ú<lambda>z.RegisterDispatchKey.__call__.<locals>.<lambda>&  s   ø€  t×'<Ñ'<¸QÀÓ'B€ r2   )
Ú
isinstancer   Ú
structuredÚgen_structuredÚlistr!   Ú	functionsr   re   r    )ri   rg   Úrrh   s   `  @r0   Ú__call__zRegisterDispatchKey.__call__  s   ù€ ä�aÔ-Ô.Ø&'ˆAð �|Š|Ø×*Ñ*¨1Ó-Ð-äÜÔBÀAÇKÁKÃMÓRóð ô ˜œ>Ô*Ø×%Ñ% aÓ(ˆAØ˜�2Ð+¨¨Ð+ä˜�Or2   c                óÌ   — t        j                  |j                  d| j                  j                  › d|j                  j
                  j                  › d�| j                  ¬«      S )NÚwrapper_rB   ©ÚprefixrR   )r   Úfrom_schemaÚfuncr,   r%   r[   Úoverload_namerR   )ri   rg   s     r0   Úwrapper_kernel_sigz&RegisterDispatchKey.wrapper_kernel_sig.  sT   € ô #×.Ñ.Ø�F‰FØ˜d×0Ñ0×=Ñ=Ð>¸aÀÇÁÇÁ×@YÑ@YÐ?ZÐZ[Ð\Ø—;‘;ô
ð 	
r2   c                ó˜  ‡‡— |€y |j                   j                  «       }|t        j                  u rdŠn |t        j                  u rdŠnt        d«      ‚| j                  |«      }|j                  «       }|› d�Št        j                  |«      }t        |«      dkD  rXdj                  ˆˆfd„t        |«      D «       «      }|j                  «       j                  «       › dd	j                  |«      › d
�}n½t        |«      dk(  r|d   }	‰› d‰› d	|	› d�}|	}nœt        |j                   j                  j                  «      dk(  sJ ‚d}|j                   j                  j                  d   }
|
j                   j#                  «       rd‰› d‰› d‰› d|
j                  › d�	}n‰› d‰› d	|
j                  › d�}| j                  |j$                  «      }|j                  «       }|j'                  |¬«      › d‰› d|j                  «       › dd	j                  d„ t)        |j                  «       |j                  «       «      D «       «      › d|› d|› d�S )Nzat::_copy_fromzat::_copy_from_and_resizez1gen_out_inplace_wrapper called on a functional opÚ_tmpé   z
  c           	   3  ó@   •K  — | ]  \  }}‰› d |› d‰› d|› d�–— Œ y­w)z
(std::get<z>(z), ú);NrH   )Ú.0ÚiÚret_nameÚcopy_opÚfunc_ress      €€r0   ú	<genexpr>z>RegisterDispatchKey.gen_out_inplace_wrapper.<locals>.<genexpr>K  s6   øè ø€ ò "á�A�xð �)˜: a S¨¨8¨*°C¸°zÀÔDñ"ùs   ƒú(ú, ú)r   r~   Ú z    for (int64_t i = 0; i < z.size(); ++i) {
        z[i], z[i]);
    }©r[   z
 {
  auto z = c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   ©Úexpr©r   Úes     r0   r„   z>RegisterDispatchKey.gen_out_inplace_wrapper.<locals>.<genexpr>e  s   è ø€ Ò6~À!°q·vµvÑ6~ùó   ‚z);
  ú

  return ú;
}
)rw   Úkindr   ÚinplaceÚoutÚAssertionErrorry   r[   ÚcppÚreturn_namesÚlenÚjoinÚ	enumerateÚreturns_typeÚcpp_typeÚ	argumentsrY   Úis_list_likeÚ
functionalÚdefnr   )ri   rg   rh   ÚkÚsigr[   r—   ÚupdatesÚreturnsr�   Úout_argÚfunctional_sigÚwrapper_namer‚   rƒ   s                @@r0   Úgen_out_inplace_wrapperz+RegisterDispatchKey.gen_out_inplace_wrapper8  sU  ù€ ð ˆ9ØØ�F‰F�K‰K‹MˆØ”
×"Ñ"Ñ"Ø&‰GØ”*—.‘.Ñ Ø1‰Gä Ð!TÓUÐUà×%Ñ% aÓ(ˆØ�x‰x‹zˆà�V˜4�=ˆÜ×'Ñ'¨Ó*ˆÜˆ|Ó˜qÒ Ø—k‘kô "ä#,¨\Ó#:ô"ó ˆGð ×)Ñ)Ó+×4Ñ4Ó6Ð7°q¸¿¹À<Ó9PÐ8QÐQRÐS‰GÜ�Ó !Ò#Ø# A‘ˆHØ ˜	  8 *¨B¨x¨j¸Ð;ˆGØ‰Gä�q—v‘v×'Ñ'×+Ñ+Ó,°Ò1Ð1Ð1ØˆGØ—f‘f×&Ñ&×*Ñ*¨1Ñ-ˆGØ�|‰|×(Ñ(Ô*ðØ%˜Jð '	Ø	ˆ	��8�*˜E '§,¡, ð 0ð
‘ð
 %˜I Q x j°°7·<±<°.ÀÐC�à×0Ñ0°·±Ó>ˆØ—x‘x“zˆð ‡�ˆ|€ÓÐ ð Ø€z��^×(Ñ(Ó*Ð+¨1¨T¯Y©YÑ6~ÄyÐQT×Q^ÑQ^ÓQ`Ðbp×bzÑbzÓb|ÓG}Ô6~Ó-~Ð,ð @Ø
€)ð 
Ø
ˆð ð	ð 	r2   c           
     óü  ‡ ‡— ‰ j                   j                  ‰«      }‰ j                   j                  t        j                  k(  r,‰ j                   j                  ‰j                  «      r�J d«       ‚‰ j                   j                  t        j                  k(  r,‰ j                   j                  ‰j                  «      r<J d«       ‚|�|j                  s't        t        ˆˆ fd„‰j                  «       «      «      S t        ‰ j                   ‰ j                  ‰ j                  ‰ j                  ‰ j                   ‰ j"                  ‰ j$                  ‰«      }t        t        |j&                  ‰j                  «       «      «      S )NzqDo not explicitly specify Meta dispatch key on structured functions, they will be automatically generated for youz†Do not explicitly specify CompositeExplicitAutograd dispatch key on structured functions, they will be automatically generated for youc                ó(   •— ‰j                  | ‰«      S rc   rd   rf   s    €€r0   rj   z4RegisterDispatchKey.gen_structured.<locals>.<lambda>{  s   ø€ ¨4×+@Ñ+@ÀÀAÓ+F€ r2   )r,   Ú
get_kernelr%   r   r'   Ú
has_kernelr”   r6   rl   rn   r!   ro   ÚStructuredRegisterDispatchKeyrO   rP   r.   rR   rT   rU   Úgen_one)ri   rh   ÚmetadataÚstructured_gens   ``  r0   rm   z"RegisterDispatchKey.gen_structuredk  s8  ù€ Ø×%Ñ%×0Ñ0°Ó3ˆØ×Ñ×*Ñ*¬k×.>Ñ.>Ò>Ø×)Ñ)×4Ñ4°Q·U±UÔ;ð ðJóÐ;ð
 ×Ñ×+Ñ+Ü×AÑAòBð ×)Ñ)×4Ñ4°Q·U±UÔ;ð ðJóÐ;ð Ð X×%8Ò%8ÜœÔ!FÈÏÉËÓVÓWÐWÜ6Ø×ÑØ�K‰KØ�M‰MØ�I‰IØ�K‰KØ×"Ñ"Ø×0Ñ0Øó	
ˆô ”H˜^×3Ñ3°Q·[±[³]ÓCÓDÐDr2   Nc                óö  ‡— t        |«      5  d}d}| j                  j                  |«      s¾| j                  j                  t        j
                  k(  r[|j                  j                  «       t        j                  u r1|j                  s%t        |j                  j                  «      dk(  rd}n<| j                  j                  s|�t        ||| j                  «      rd}n
	 d d d «       y |j                  r
	 d d d «       y | j                   t"        j$                  u r%| j&                  j)                  |«      s
	 d d d «       y | j+                  |«      Š‰j-                  «       }‰j/                  «       j1                  «       }‰j3                  «       }dj5                  d„ |D «       «      }t7        j8                  |dd¬«      }	| j                   t"        j:                  u rEd}
|	j=                  | j>                  ¬«      D ]  }|
d	|jA                  «       › d
�z  }
Œ |
cd d d «       S | j                   t"        jB                  u r?d'ˆfd„}d}
|	j=                  | j>                  ¬«      D ]  }|
 ||«      z  }
Œ |
cd d d «       S | j                   t"        jD                  u �rL|rq|j                  j2                  jF                  €J ‚|j                  j2                  jF                  jH                  j,                  }d|› d|› d|› d|› d|› d�cd d d «       S |r| jK                  ||«      cd d d «       S | j                  jM                  |«      }|€
	 d d d «       y | jN                  €|jP                  › d|jR                  › �}n(|jP                  › d| jN                  › d|jR                  › �}tU        || j                  «      }dj5                  d„ tW        ‰j3                  «       |j3                  «       d¬«      D «       «      }d}| j                  jX                  r|t[        j\                  |j                  j2                  j^                  |j                  j2                  j`                  «      }tb        je                  |jf                  ti        |«      |«      }d}|jX                  �r+| j                  jX                  �rtk        d„ |j                  j2                  jl                  D «       «      }|r'd}to        | j                  j                  «      rÁd|› �}n»|j                  j2                  jF                  �+|j                  j2                  jF                  jH                  gng }t[        j\                  ||j                  j2                  j^                  |j                  j2                  j`                  «      }tq        d„ |D «       d «      }|�d|› d�}d|› d|› d|› d|› d|› d |› d|› d!�cd d d «       S | j                   t"        j$                  u rN|j                  s| jr                  r
	 d d d «       y d"|› d#�}d$|j                  j,                  › d%|› d&�cd d d «       S tu        | j                   «       	 d d d «       y # 1 sw Y   y xY w)(NFr|   Tr†   c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrc   )r    ©r   Úas     r0   r„   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>±  s   è ø€ Ò 8¨a §¡§Ñ 8ùó   ‚©ÚmethodÚfallback_bindingrˆ   ©rR   ú
TORCH_API ú;
c                óÌ   •— d| j                  «       › d‰j                  «       › ddj                  d„ t        | j	                  «       ‰j	                  «       «      D «       «      › d�S )Nú
ú
 {
return r…   r†   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‹   r�   s     r0   r„   zNRegisterDispatchKey.gen_unstructured.<locals>.generate_defn.<locals>.<genexpr>Ã  ó   è ø€ Ò_¨!˜qŸv�vÑ_ùr�   ú);
}
©r    r[   r™   r   r�   ©Úcpp_sigr¢   s    €r0   Úgenerate_defnz;RegisterDispatchKey.gen_unstructured.<locals>.generate_defnÀ  s`   ø€ ð Ø‡�ƒÐ ð Ø�‰‹
€|�1�T—Y‘YÑ_¬y¸×9JÑ9JÓ9LÈcÏmÉmËoÓ/^Ô_Ó_Ð`ð aðð r2   r½   ú r…   z") {
  TORCH_CHECK_NOT_IMPLEMENTED(z[.is_meta(),
    "Cannot inplace into non-meta tensor with meta tensor argument");
  return r‘   z::c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‹   r�   s     r0   r„   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>è  s   è ø€ ò +àð —F•Fñ+ùr�   ©r·   rW   z// DeviceGuard omittedc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrc   )rk   r   r³   s     r0   r„   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>û  s    è ø€ ò -àô # 1Ô&<×=ñ-ùrµ   z=
  const DeviceGuard device_guard(device_or_default(device));z7globalContext().lazyInitDevice(c10::DeviceType::CUDA);
c              3  ój   K  — | ]+  }|j                   j                  «       r|j                  › –— Œ- y ­wrc   )rY   rZ   r[   r³   s     r0   r„   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>  s0   è ø€ ò à$%Ø#$§6¡6×#8Ñ#8Ô#:ð $%§6¡6 (£ñùs   ‚13z1const OptionalDeviceGuard device_guard(device_of(ú));znamespace {

z) {
  z

  r�   z);
}

} // anonymous namespace
z	TORCH_FN(r‡   úm.impl("z",
z);
©rÄ   r   Úreturnr4   );r   r,   r¬   r%   r   r'   rw   r’   r   r“   Úhas_composite_kernelr˜   r¤   Úuse_out_as_primaryr   Úmanual_kernel_registrationrO   r"   ÚREGISTRATIONrP   Úis_native_function_selectedry   r[   r›   rœ   r�   r™   r   Úfrom_native_functionÚNAMESPACED_DECLARATIONÚ
signaturesrR   ÚdeclÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONÚself_argÚargumentr¨   r«   rT   Úcpp_namespaceÚkernelr   r   Údevice_guardÚ	itertoolsÚchainr”   Úflat_positionalrN   r`   r^   rn   ÚanyÚnon_outr   ÚnextrU   r    )ri   rg   rh   Úinplace_metaÚgets_out_inplace_wrapperr[   r›   r\   Úargs_strÚcpp_sig_groupÚresultrÄ   rÅ   Úself_arg_namer¯   Ú	impl_nameÚ
kernel_sigÚargs_exprs_strr^   Údevice_check_argsrÞ   Úhas_tensor_optionsrÚ   Úcandidate_argsÚ	device_ofÚpayloadr¢   s                             @r0   re   z$RegisterDispatchKey.gen_unstructuredˆ  sF  ø€ ô % QÓ'ñ l	*Ø ˆLØ',Ð$Ø×%Ñ%×0Ñ0°Ô3à×&Ñ&×3Ñ3´{×7GÑ7GÒGØŸ™Ÿ™›¬×);Ñ);Ñ;ð ×.Ò.ô ˜Ÿ™Ÿ™Ó'¨1Ò,à#'‘Là×*Ñ*×=Ò=Ø˜Ü:¸1¸aÀ×ASÑASÔTð 04Ñ,à÷/l	*ð l	*ð0 ×+Ò+Ø÷3l	*ð l	*ð8 —‘œv×2Ñ2Ñ2ØŸ™×AÑAÀ!ÔDà÷?l	*ð l	*ðB ×)Ñ)¨!Ó,ˆCà—8‘8“:ˆDØ×+Ñ+Ó-×6Ñ6Ó8ˆLØ—=‘=“?ˆDØ—y‘yÑ 8°4Ô 8Ó8ˆHô .×BÑBØ˜%°%ôˆMð
 �{‰{œf×;Ñ;Ñ;Ø�Ø,×7Ñ7¸t¿{¹{Ð7ÓKò ?�GØ 
¨7¯<©<«>Ð*:¸#Ð>Ñ>‘Fð?à÷el	*ñ l	*ðf —‘¤× <Ñ <Ñ<õð �Ø,×7Ñ7¸t¿{¹{Ð7ÓKò 5�GØ™m¨GÓ4Ñ4‘Fð5à÷l	*ñ l	*ðB —‘¤× ;Ñ ;Ò;áØŸ6™6×+Ñ+×4Ñ4Ð@Ð@Ð@Ø$%§F¡F×$4Ñ$4×$=Ñ$=×$FÑ$F×$KÑ$K�Mð Ø€ˆa�ˆv�Q�x�jð !Ø,˜oð .
à
ˆð ð	÷Ol	*ñ l	*ñ` ,Ø×7Ñ7¸¸1Ó=÷cl	*ñ l	*ðf  ×-Ñ-×8Ñ8¸Ó;�ØÐ#Ø÷kl	*ð l	*ðl ×)Ñ)Ð1Ø#+×#9Ñ#9Ð":¸"¸X¿_¹_Ð<MÐ N‘Ià#+×#9Ñ#9Ð":¸"¸T×=SÑ=SÐ<TÐTVÐW_×WfÑWfÐVgÐ h�Iä-¨a°×1CÑ1CÓD�
à!%§¡ñ +ä&ØŸ™›¨×)=Ñ)=Ó)?Èôô+ó "�ð  8�à×%Ñ%×2Ò2Ü(1¯©ØŸ™×(Ñ(×,Ñ,¨a¯f©f×.>Ñ.>×.NÑ.Nó)Ð%ô $7×#GÑ#GØŸ™¬Ð->Ó(?Àó$�Lð  8�Ø—>“> d×&8Ñ&8×&EÓ&EÜ),ñ -à!"§¡×!1Ñ!1×!9Ñ!9ô-ó *Ð&ñ *ð(@˜ô 0°×0BÑ0B×0OÑ0OÔPØ-eÐfrÐesÐ+t™Lð  !Ÿv™v×/Ñ/×8Ñ8ÐDð ŸV™V×-Ñ-×6Ñ6×?Ñ?Ñ@à!#ð !ô
 *3¯©Ø$ØŸF™F×,Ñ,×0Ñ0ØŸF™F×,Ñ,×<Ñ<ó*˜ô %)ñà)7ôð
 !ó%˜	ð %Ð0Ø-^Ð_hÐ^iÐilÐ+m˜Lðð €ˆa�ˆv�Q�x�jð !Ø€.ð à€.ð 
Ø
ˆ�A�nÐ%ð &ð÷ql	*ñ l	*ðJ —‘¤× 3Ñ 3Ñ3Ø×/Ò/°4×3WÒ3WØ÷Ol	*ð l	*ðR !*¨$¨¨qÐ1�GØ% a§f¡f§k¡k ]°$°w°i¸tÐD÷Ul	*ñ l	*ôX ˜TŸ[™[Õ)÷Yl	*÷ l	*ñ l	*úsR   �CY/Ã+Y/Ä8Y/ÅCY/È"AY/É=BY/ÌY/Ì*Y/ÍJY/×&5Y/Ø$"Y/ÙY/Ù/Y8)rY   r   r\   zlist[Argument]r]   r4   rÎ   r4   )rg   z%NativeFunctionsGroup | NativeFunctionrÎ   ú	list[str])rg   r   rÎ   z%NativeSignature | DispatcherSignature)rg   r   rh   zNativeFunctionsGroup | NonerÎ   rS   )rh   r   rÎ   ró   rc   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ústaticmethodr`   r   rq   ry   r¨   rm   re   rH   r2   r0   rN   rN   é   sß   … àÓðó ð Óð ƒJð
 ƒLð "Ó!ð &*Ó)àðØðØ%3ðØBEðà	òó ðð !òó !ðð"
Øð
à	.ó
ð1Øð1Ø$?ð1à	ó1ófEð< CGðo*Øðo*Ø$?ðo*à	ôo*r2   rN   c                  ór   — e Zd ZU ded<   	 	 	 	 	 	 	 	 d	d„Zd
d„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Zedd„«       Z	y)r­   r   rh   c                ó^   ‡ ‡‡— |r|› d�ŠndŠd
ˆˆ ˆfd„}d |dd¬«      › d |dd	¬«      › d�S )NzE::set_output_raw_strided(output_idx, sizes, strides, options, names);rˆ   c           	     óŒ   •— d| › dt        j                  ‰j                  ‰|«      d«      › dt        j                  ‰d«      › d�S )Nz
void set_output_z|(
    int64_t output_idx, IntArrayRef sizes, IntArrayRef strides,
    TensorOptions options, DimnameList names
) override {
ú    zÏ
    if (!names.empty()) {
      namedinference::propagate_names(outputs_[output_idx], names);
    }
    // super must happen after, so that downstream can use maybe_get_output
    // to retrieve the output
ú
}
)ÚtextwrapÚindentÚgen_class_set_output_body)r[   Úmaybe_create_proxyr¡   ri   Úset_output_supers     €€€r0   Úgen_set_output_functionz]StructuredRegisterDispatchKey.gen_class_set_output_functions.<locals>.gen_set_output_functionM  s\   ø€ ðØ�ð ô 
‡��×/Ñ/°Ð3EÓFÈÓOÐ Pð Qô 
‡�Ð! 6Ó*Ð +ð ,ðð r2   r½   ÚstridedT)r  Úraw_stridedF)r[   r4   r  rQ   rÎ   r4   rH   )ri   r¡   Úparent_classÚgenerate_superr  r  s   ``   @r0   Úgen_class_set_output_functionsz<StructuredRegisterDispatchKey.gen_class_set_output_functionsE  sU   ú€ ñ Ø". Ð/tÐuÑà!Ð÷	ð Ù˜°tÔ<Ð =ð >Ù˜¸5ÔAÐ Bð Cðð 	r2   c                óÆ  — | j                   j                  t        j                  t        j                  t        j
                  t        j                  fv rd}|dz   }ndx}}|rd}nd}|t        j                  u ry| j                   j                  t        j                  t        j                  t        j                  t        j                  t        j
                  t        j                  fv sJ ‚|› d�S |t        j                  u r|› d|› �S |t        j                  u r|› d|› �S |t        j                  u s|t        j                  u rt        |› d�«      ‚t!        |«       y )	Na  
auto current_device = guard_.current_device();
if (C10_UNLIKELY(current_device.has_value())) {
  TORCH_INTERNAL_ASSERT(*current_device == options.device(),
    "structured kernels don't support multi-device outputs");
} else {
  guard_.reset_device(options.device());
}
r½   rˆ   z¶
auto maybe_proxy = maybe_create_proxy(out, sizes, strides, options);
if (C10_UNLIKELY(maybe_proxy.has_value())) {
    proxy_outputs_[output_idx] = std::move(maybe_proxy).value();
}
z<
outputs_[output_idx] = create_out(sizes, strides, options);zS
const auto& out = outputs_[output_idx].get();
check_inplace(out, sizes, options);
zY
const auto& out = outputs_[output_idx].get();
resize_out(out, sizes, strides, options);
ú1 structured operators are currently not supported)r,   r%   r   r)   r*   r+   r6   r   rŸ   r'   r&   r“   r”   ÚmutableÚscratchr•   r    )ri   r¡   r  Úmaybe_set_guardÚmaybe_set_guard_lineÚcreate_proxys         r0   r   z7StructuredRegisterDispatchKey.gen_class_set_output_bodyb  su  € Ø×Ñ×*Ñ*Ü×ÑÜ�O‰OÜ�O‰OÜ×>Ñ>ð	/
ñ 
ðˆOð $3°TÑ#9Ñ à57Ð7Ð  ?áð‰Lð ˆLà”
×%Ñ%Ñ%Ø×%Ñ%×2Ñ2Ü× Ñ Ü—‘Ü× Ñ Ü—‘Ü—‘Ü×BÑBð7ñ ð ð ð -Ð-ð .<ð ?ð ?à”*×$Ñ$Ñ$Ø,Ð-ð .ð €ðð ð ”*—.‘.Ñ Ø,Ð-ð .ð €ðð ð ”*×$Ñ$Ñ$¨¬Z×-?Ñ-?Ñ(?Ü Ø�#ÐFÐGóð ô ˜�Or2   c                ó�  — |t         j                  u ry|t         j                  u r|› d�S |t         j                  u rMdj	                  d„ t        |«      D «       «      }dj	                  d„ t        |«      D «       «      }|› d|› d|› d�S |t         j                  u s|t         j                  u rt        |› d	�«      ‚t        |«       y )
Nrˆ   z,(Tensor& self) : outputs_{std::ref(self)} {}r†   c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)zTensor& outNrH   ©r   r€   s     r0   r„   z?StructuredRegisterDispatchKey.gen_class_ctor.<locals>.<genexpr>¥  s   è ø€ Ò K°q ;¨q¨cÔ!2Ñ Kùs   ‚c              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)zstd::ref(outr‡   NrH   r  s     r0   r„   z?StructuredRegisterDispatchKey.gen_class_ctor.<locals>.<genexpr>¦  s   è ø€ Ò M¸ <°¨s°!Ô!4Ñ Mùó   ‚r…   z) : outputs_{ z } {}r
  )
r   rŸ   r“   r”   r™   Úranger  r  r•   r    )ri   r¡   Ú
class_namer¤   Úout_argsÚout_refss         r0   Úgen_class_ctorz,StructuredRegisterDispatchKey.gen_class_ctorž  sÀ   € Ø”
×%Ñ%Ñ%ØØ”*×$Ñ$Ñ$à �\Ð!QÐRÐRØ”*—.‘.Ñ Ø—y‘yÑ K¼EÀ'»NÔ KÓKˆHØ—y‘yÑ M¼eÀG»nÔ MÓMˆHØ �\  8 *¨O¸H¸:ÀXÐNÐNØ”*×$Ñ$Ñ$¨¬Z×-?Ñ-?Ñ(?Ü Ø�#ÐFÐGóð ô ˜�Or2   c               ó~  — |t         j                  u rd}d}d}n‚|t         j                  u r(d}d}dt        |j                  j
                  «      › d�}nH|t         j                  u r(d}d}dt        |j                  j
                  «      › d�}nt        d|› �«      ‚| j                  j                  t        j                  k(  r| j                  rd	}	nƒd
}	n€| j                  j                  t        j                  k(  rd}	nV| j                  j                  t        j                  k(  rd}	n,| j                  j                  t        j                  k(  rd}	nd}	d}
| j!                  ||t        |j                  j
                  «      «      }d|› d|› d�t#        j$                  ||
«      › t#        j$                  | j'                  |||«      |
«      › dd|› d�dd|› dt        |j                  j
                  «      › d�t#        j$                  ||
«      › t#        j$                  |	|
«      › df
}dj)                  d„ |D «       «      S )NÚTensorzoutputs_[output_idx]rˆ   zstd::reference_wrapper<Tensor>zaproxy_outputs_[output_idx].has_value() ? *proxy_outputs_[output_idx] : outputs_[output_idx].get()z$std::array<::std::optional<Tensor>, z> proxy_outputs_;zUnsupported SchemaKind z4c10::hip::OptionalHIPGuardMasqueradingAsCUDA guard_;z$c10::cuda::OptionalCUDAGuard guard_;z c10::OptionalDeviceGuard guard_;rü   zstruct z final : public z {zA    const Tensor& maybe_get_output(int64_t output_idx) override {z      return r»   z    }z    std::array<r†   z> outputs_;z};r½   c              3  ó&   K  — | ]	  }|sŒ|–— Œ y ­wrc   rH   )r   Úlines     r0   r„   z:StructuredRegisterDispatchKey.gen_class.<locals>.<genexpr>è  s   è ø€ Ò8 $²4œÑ8ùs   ‚Š)r   rŸ   r“   r˜   rw   r¤   r”   ÚRuntimeErrorr,   r%   r   r)   r.   r6   r*   r+   r  rþ   rÿ   r  r™   )ri   rg   r¡   r  r  r  Úoutput_typeÚoutput_valueÚproxy_fieldÚguard_fieldrÿ   Úclass_ctor_strÚliness                r0   Ú	gen_classz'StructuredRegisterDispatchKey.gen_class¯  s  € ð ”
×%Ñ%Ñ%Ø"ˆKØ1ˆLØ‰KØ”*×$Ñ$Ñ$Ø:ˆKØ~ˆLØ@ÄÀQÇVÁVÇ^Á^ÓATÐ@UÐUfÐg‰KØ”*—.‘.Ñ Ø:ˆKØ~ˆLØ@ÄÀQÇVÁVÇ^Á^ÓATÐ@UÐUfÐg‰KäÐ!8¸¸Ð<Ó=Ð=à×Ñ×*Ñ*¬k×.>Ñ.>Ò>Ø�yŠyØT‘àD‘à×Ñ×+Ñ+Ü×AÑAòBð =‰KØ×Ñ×,Ñ,´·±Ò?à<‰KØ×Ñ×,Ñ,´·±Ò?Ø<‰KàˆKàˆØ×,Ñ,¨Q°
¼CÀÇÁÇÁÓ<OÓPˆà�j�\Ð!1°,°¸sÐCÜ�‰˜~¨vÓ6Ð7Ü�‰˜t×BÑBÀ1ÀlÐTbÓcÐekÓlÐmØOØ˜L˜>¨Ð-Øà˜k˜]¨"¬S°·±·±Ó-@Ð,AÀÐMÜ�‰˜{¨FÓ3Ð4Ü�‰˜{¨FÓ3Ð4Øð
ˆð �y‰yÑ8¨%Ô8Ó8Ð8r2   c                ó¶  ‡— |j                   rJ ‚| j                  t        j                  u r| j                  j                  |«      sy | j                  j                  t        j                  k(  r+|j                  j                  «       t        j                  u ry t        j                  |dd¬«      }| j                  j!                  |«      }t#        |j                  d| j                  j                  › d�|d uxr |j%                  «       ¬«      Š| j                  t        j&                  u r<d}|j)                  | j*                  ¬«      D ]  }|d|j-                  «       › d	�z  }Œ |S | j                  t        j.                  u r6d<ˆfd
„}d}|j)                  | j*                  ¬«      D ]  }| ||«      z  }Œ |S | j                  t        j0                  u �r&|j                  j                  «       }g }t3        ‰j5                  «       «      }	| j                  j                  t        j6                  u rRdt9        j:                  | j<                  «      › d|j:                  › �}
dt9        j:                  | j<                  «      › �}nØ| j                  j                  t        j                  u rRdt9        j:                  | j<                  «      › d|j:                  › �}
dt9        j:                  | j<                  «      › �}n`| j                  j!                  | j<                  «      }|€J ‚d|j>                  › d|j:                  › �}
|j@                  › d|j>                  › �}| j                  jB                  r™tE        jF                  |j                  j4                  j                  |j                  j4                  jH                  «      }|jK                  tL        jO                  |jP                  t3        |«      ‰j;                  «       «      «       |t        jR                  u r|jK                  |
› d�«       n†|t        jT                  u r|jK                  |
› d�«       n_|t        j                  u rMdjW                  d„ |j                  j4                  j                  D «       «      }|jK                  |
› d|› d�«       djW                  d„ tY        |	t[        j\                  | j<                  «      d¬«      D «       «      }| j<                  j                  j^                  rª|jK                  d|› d�«       g | j<                  j                  j^                  j`                  jc                  «       ¢| j<                  j                  j^                  jd                  ‘}|D ]  }|	jg                  d„ |D «       «       Œ |jK                  d«       n|jK                  d|› d�«       t[        jh                  | j<                  «      }tk        |«      D ]¥  \  }}tm        to        tp        «      «      |jr                  jt                  k(  sJ ‚|t        j                  u rd|› d�}nd|› d�}|	jK                  tw        |ty        |jr                  j:                  t{        to        tp        «      «      «      ¬ «      «       Œ§ | j                  j                  t        j                  k(  r¡t        j                  | j<                  j                  d|j|                  ¬«      }|j                  «       }|j;                  «       }djW                  d!„ tY        |	|j5                  «       d¬«      D «       «      }|jK                  d"|› d#|› d�«       n}| j                  j                  t        j6                  k7  rVdjW                  d$„ tY        |	t[        j€                  | j<                  «      d¬«      D «       «      }|jK                  d%|› d�«       |t        j                  u s|t        jT                  u rHtƒ        t…        |j                  j†                  «      «      D ]  }|jK                  d&|› d'|› d(|› d)�«       Œ |t        jR                  u rjt…        |j                  j†                  «      d*k(  rd+}nødjW                  d,„ tƒ        t…        |j                  j†                  «      «      D «       «      }d-|› d�}n³|t        jT                  u rd.}nž|t        j                  u rŒt…        |j                  j†                  «      d*k(  r.|j                  j4                  j                  d/   j:                  }n<djW                  d0„ |j                  j4                  j                  D «       «      }d1|› d�}|jK                  d2› d3�«       d4jW                  |«      }| j‰                  |||
|| j<                  j                  jŠ                  d u¬5«      › d6‰j�                  «       › d7|› d8�S | j                  t        j                  u r+d9|j                  j:                  › d:‰j;                  «       › d;�S t�        | j                  «       y )=NFr¶   rs   rB   rt   rˆ   r¹   rº   r»   c                óÌ   •— d| j                  «       › d‰j                  «       › ddj                  d„ t        | j	                  «       ‰j	                  «       «      D «       «      › d�S )Nr½   r¾   r…   r†   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‹   r�   s     r0   r„   zOStructuredRegisterDispatchKey.gen_one.<locals>.generate_defn.<locals>.<genexpr>%  rÀ   r�   rÁ   rÂ   rÃ   s    €r0   rÅ   z<StructuredRegisterDispatchKey.gen_one.<locals>.generate_defn"  s`   ø€ ðØ‡�ƒÐ ð Ø�‰‹
€|�1�T—Y‘YÑ_¬y¸×9JÑ9JÓ9LÈcÏmÉmËoÓ/^Ô_Ó_Ð`ð aðð r2   Ústructured_Ú_meta_zat::meta::structured_Ú_default_backend_z::structured_z op;z
 op(self);r†   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‰   r³   s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>X  s   è ø€ Ò(N°A¨¯­Ñ(Nùr�   z op(r~   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‹   r�   s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>]  s   è ø€ ò #àð —•ñ#ùr�   rÈ   zauto precompute = op.meta(c              3  óŽ   K  — | ]=  }t        d |j                  › �t        j                  ||j                  ¬«      ¬«      –— Œ? y­w)zprecompute.)Úbinds©rŒ   rY   N)r   r[   rl   Úargument_type)r   r_   s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>r  sF   è ø€ ò #ð
  ô	 Ø#.¨s¯x©x¨jÐ!9Ü!+×!9Ñ!9¸#ÀSÇXÁXÔ!N÷ð ñ#ùs   ‚AAz(void)precompute;zop.meta(zop.maybe_get_output(r‡   zop.outputs_[ú]r0  c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‹   r�   s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>£  s   è ø€ ò &àð —F•Fñ&ùr�   zat::r…   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‹   r�   s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>³  s   è ø€ ò 'àð —F•Fñ'ùr�   zop.impl(zif (op.proxy_outputs_[z].has_value()) op.outputs_[z!].get().copy_(*op.proxy_outputs_[z]);r|   zstd::move(op.outputs_[0])c              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)zstd::move(op.outputs_[z])NrH   r  s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>É  s!   è ø€ ò &àð 1°°°2Ô6ñ&ùr  zstd::make_tuple(ri   r   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   r‰   r³   s     r0   r„   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>Ô  s   è ø€ Ò$J° Q§V¥VÑ$Jùr�   zstd::forward_as_tuple(zreturn ú;r½   )r  r  r  z

z {
rý   rÌ   z", TORCH_FN(rË   rÍ   )HrÑ   rO   r"   rÒ   rP   rÓ   r,   r%   r   r6   rw   r’   r   r”   r   rÔ   r«   r   Úsupports_symintrÕ   rÖ   rR   r×   rØ   rÙ   rn   r�   r'   Úmetar[   rh   rÝ   rÜ   rÞ   rß   rà   rá   r(   rN   r`   r^   rŸ   r“   r™   r   rl   Úmeta_argumentsÚprecomputedÚreplaceÚvaluesÚaddÚextendÚout_argumentsrš   r
   r   r   ÚnctyperY   r   r   r   Úmanual_cpp_bindingÚmost_faithful_signatureÚimpl_argumentsr  r˜   r¤   r%  Ústructured_inheritsr    r    ) ri   rg   rè   Úkernré   rÄ   rÅ   r¡   Úsig_bodyÚcontextr  r  r¯   rî   Úout_args_strÚ
meta_exprsÚprecomputed_valuesÚprecomputed_elemsr  r€   r¥   rŒ   Úout_sig_groupÚout_sigÚapi_nameÚ	out_exprsÚ
impl_exprsÚret_exprÚmovedÚrefsÚsig_body_strr¢   s                                   @r0   r®   z%StructuredRegisterDispatchKey.gen_oneê  sÆ  ø€ à×/Ò/Ð/Ð/ð �K‰Kœ6×.Ñ.Ñ.Ø—M‘M×=Ñ=¸aÔ@àð ×Ñ×+Ñ+Ü×AÑAòBà—‘—‘“¤§¡Ñ/ð ô *×>Ñ>Ø�e¨eô
ˆð
 ×!Ñ!×,Ñ,¨QÓ/ˆÜØ�F‰FØ˜d×0Ñ0×=Ñ=Ð>¸aÐ@Ø˜tÐ#Ò>¨×(<Ñ(<Ó(>ô
ˆð �;‰;œ&×7Ñ7Ñ7ØˆFØ(×3Ñ3¸4¿;¹;Ð3ÓGò ;�Ø˜J w§|¡|£~Ð&6°cÐ:Ñ:‘ð;àˆMà�[‰[œF×8Ñ8Ñ8õð ˆFØ(×3Ñ3¸4¿;¹;Ð3ÓGò 1�Ø™-¨Ó0Ñ0‘ð1àˆMà�[‰[œF×7Ñ7Ò7Ø—‘—‘“ˆAð ˆHô -1°·±³Ó,AˆGð ×!Ñ!×.Ñ.´+×2BÑ2BÑBØ*¬4¯9©9°T·V±VÓ+<Ð*=¸VÀAÇFÁFÀ8ÐL�
Ø!6´t·y±yÀÇÁÓ7HÐ6IÐJ‘à×"Ñ"×/Ñ/Ü×EÑEñFð  +¬4¯9©9°T·V±VÓ+<Ð*=Ð=NÈqÏvÉvÈhÐW�
Ø!6´t·y±yÀÇÁÓ7HÐ6IÐJ‘à×-Ñ-×8Ñ8¸¿¹Ó@�ØÐ+Ð+Ð+Ø*¨8¯?©?Ð*;¸1¸Q¿V¹V¸HÐE�
Ø"*×"8Ñ"8Ð!9¸ÀxÇÁÐFWÐX�à×!Ñ!×.Ò.Ü$-§O¡OØ—F‘F×$Ñ$×(Ñ(¨!¯&©&×*:Ñ*:×*JÑ*Jó%Ð!ð —‘Ü'×8Ñ8ØŸ™¬Ð->Ó(?ÀÇÁÃóôð ”J×)Ñ)Ñ)Ø—‘ : ,¨dÐ 3Õ4Ø”j×(Ñ(Ñ(Ø—‘ : ,¨jÐ 9Õ:Ø”j—n‘nÑ$Ø#Ÿy™yÑ(N¸¿¹×9IÑ9I×9MÑ9MÔ(NÓN�Ø—‘ : ,¨d°<°.ÀÐ CÔDð Ÿ™ñ #ä"ØœZ×6Ñ6°t·v±vÓ>Àuôô#ó ˆJð �v‰v�z‰z×%Ò%ð —‘Ð"<¸Z¸LÈÐ KÔLð
&Ø—V‘V—Z‘Z×+Ñ+×3Ñ3×:Ñ:Ó<ð&à—F‘F—J‘J×*Ñ*×.Ñ.ð&Ð"ð *<ò Ð%Ø—N‘Nñ #ð
 $5ô#õ ðð —‘Ð 3Õ4à—‘ (¨:¨,°bÐ 9Ô:ô "×/Ñ/°·±Ó7ˆHÜ'¨Ó1ò ‘
��7Ü$¤Y¬wÓ%7Ó8¸G¿N¹N×<OÑ<OÒOÐOÐOàœ
Ÿ™Ñ&Ø1°!°°AÐ6‘Dà)¨!¨¨AÐ.�Dà—‘ÜØ!ô (Ø#ŸN™N×/Ñ/´¼YÄwÓ=OÓ1Póôõ
ðð. ×"Ñ"×/Ñ/Ü×EÑEòFô !2× FÑ FØ—F‘F—J‘J u¸q×?SÑ?Sô!�ð (×?Ñ?ÓA�Ø"Ÿ<™<›>�Ø ŸI™Iñ &ä& w°×0AÑ0AÓ0CÈEÔRô&ó �	ð —‘ $ x j°°)°¸BÐ ?Õ@Ø×#Ñ#×0Ñ0´K×4DÑ4DÒDØ!ŸY™Yñ 'ä&Ø¤×!:Ñ!:¸4¿6¹6Ó!BÈ5ôô'ó �
ð —‘ (¨:¨,°bÐ 9Ô:ð ”J—N‘NÑ" a¬:×+=Ñ+=Ñ&=Üœs 1§6¡6§>¡>Ó2Ó3ò �AØ—O‘OØ0°°Ð3NÈqÈcÐQrÐstÐruÐuxÐyõðð ”J×)Ñ)Ñ)Ü�q—v‘v—~‘~Ó&¨!Ò+Ø:‘Hà ŸI™Iñ &ä!&¤s¨1¯6©6¯>©>Ó':Ó!;ô&ó �Eð "2°%°¸Ð:‘HØ”j×(Ñ(Ñ(Ø!‘Ø”j—n‘nÑ$Ü�q—v‘v—~‘~Ó&¨!Ò+Ø Ÿv™v×/Ñ/×3Ñ3°AÑ6×;Ñ;‘HàŸ9™9Ñ$J°Q·V±V×5EÑ5E×5IÑ5IÔ$JÓJ�DØ!7¸°v¸QÐ?�HØ�O‰O˜g h Z¨qÐ1Ô2àŸ9™9 XÓ.ˆLð —‘ØØØ)Ø!-Ø#'§6¡6§:¡:×#AÑ#AÈÐ#Mð ó ððà‡�ƒ€ð Ø€ð ðð ð  �[‰[œF×/Ñ/Ñ/Ø˜aŸf™fŸk™k˜]¨,°s·x±x³z°lÀ#ÐFÐFä˜Ÿ™Ô%àr2   N)r¡   r   r  r4   r  rQ   rÎ   r4   )r¡   r   r  rQ   rÎ   r4   )r¡   r   r  r4   r¤   ÚintrÎ   r4   )rg   r   r¡   r   r  r4   r  r4   r  rQ   rÎ   r4   )rg   r   rÎ   rS   )
rô   rõ   rö   r÷   r  r   r  r%  r   r®   rH   r2   r0   r­   r­   A  sŽ   … àÓðØðØ+.ðØ@Dðà	óó:8óxð"99àð99ð ð99ð
 ð99ð ð99ð ð99ð 
ó99ðv !òFó !ñFr2   r­   )r,   r   r-   rQ   r.   rQ   rÎ   ró   )r,   r   rÎ   ztuple[str | None, str | None])r,   r   rÎ   ró   )<Ú
__future__r   rß   rþ   Údataclassesr   Útypingr   r   Útorchgen.api.cppÚapir–   Útorchgen.api.metar9  Útorchgen.api.structuredrl   Útorchgen.api.translater   Útorchgen.api.typesr   r	   r
   r   r   r   r   r   r   r   r   r   Útorchgen.contextr   r   Útorchgen.modelr   r   r   r   r   r   r   r   r   r   Útorchgen.utilsr    r!   r"   Ú!torchgen.selective_build.selectorr#   r1   r<   r@   rC   rF   rI   rK   rN   r­   rH   r2   r0   ú<module>rd     s   ðÝ "ã Û Ý !ß )ç Ð ß  Ð  ß ,Ð ,Ý ,÷÷ ÷ ó ÷ R÷÷ ÷ ÷ :Ñ 9ñ ÝBð!Øð!àð!ð ð!ð ó	!ðH*Øð*à"ó*ó8ó.ó$ó<ó.ñ: �$Ô÷M*ð M*ó ðM*ñn
 �$ÔôoÐ$7ó oó ñor2   